* gnu/packages/cpp.scm (c++-gsl): New variable. * gnu/packages/patches/c++-gsl-find-system-gtest.patch: New file. * gnu/local.mk (dist_patch_DATA): Add it. Signed-off-by: Leo Prikler <leo.prikler@student.tugraz.at>
		
			
				
	
	
		
			96 lines
		
	
	
	
		
			3 KiB
		
	
	
	
		
			Diff
		
	
	
	
	
	
			
		
		
	
	
			96 lines
		
	
	
	
		
			3 KiB
		
	
	
	
		
			Diff
		
	
	
	
	
	
| From f5cf01083baf7e8dc8318db3648bc6098dc32d67 Mon Sep 17 00:00:00 2001
 | |
| From: Nicholas Guriev <guriev-ns@ya.ru>
 | |
| Date: Sat, 18 Apr 2020 13:30:17 +0300
 | |
| Subject: [PATCH] Search for GoogleTest via pkg-config first
 | |
| 
 | |
| ---
 | |
|  tests/CMakeLists.txt | 55 ++++++++++++++++++++++++--------------------
 | |
|  1 file changed, 30 insertions(+), 25 deletions(-)
 | |
| 
 | |
| diff --git a/tests/CMakeLists.txt b/tests/CMakeLists.txt
 | |
| index 02193197..53d475c2 100644
 | |
| --- a/tests/CMakeLists.txt
 | |
| +++ b/tests/CMakeLists.txt
 | |
| @@ -1,36 +1,41 @@
 | |
|  cmake_minimum_required(VERSION 3.0.2)
 | |
|  
 | |
|  project(GSLTests CXX)
 | |
| +include(FindPkgConfig)
 | |
|  
 | |
|  # will make visual studio generated project group files
 | |
|  set_property(GLOBAL PROPERTY USE_FOLDERS ON)
 | |
|  
 | |
| -configure_file(CMakeLists.txt.in googletest-download/CMakeLists.txt)
 | |
| -execute_process(
 | |
| -    COMMAND ${CMAKE_COMMAND} -G "${CMAKE_GENERATOR}" .
 | |
| -    RESULT_VARIABLE result
 | |
| -    WORKING_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR}/googletest-download
 | |
| -)
 | |
| -if(result)
 | |
| -    message(FATAL_ERROR "CMake step for googletest failed: ${result}")
 | |
| -endif()
 | |
| +pkg_search_module(GTestMain gtest_main)
 | |
| +if (NOT GTestMain_FOUND)
 | |
| +    configure_file(CMakeLists.txt.in googletest-download/CMakeLists.txt)
 | |
| +    execute_process(
 | |
| +        COMMAND ${CMAKE_COMMAND} -G "${CMAKE_GENERATOR}" .
 | |
| +        RESULT_VARIABLE result
 | |
| +        WORKING_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR}/googletest-download
 | |
| +    )
 | |
| +    if(result)
 | |
| +        message(FATAL_ERROR "CMake step for googletest failed: ${result}")
 | |
| +    endif()
 | |
|  
 | |
| -execute_process(
 | |
| -    COMMAND ${CMAKE_COMMAND} --build .
 | |
| -    RESULT_VARIABLE result
 | |
| -    WORKING_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR}/googletest-download
 | |
| -)
 | |
| -if(result)
 | |
| -    message(FATAL_ERROR "CMake step for googletest failed: ${result}")
 | |
| -endif()
 | |
| +    execute_process(
 | |
| +        COMMAND ${CMAKE_COMMAND} --build .
 | |
| +        RESULT_VARIABLE result
 | |
| +        WORKING_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR}/googletest-download
 | |
| +    )
 | |
| +    if(result)
 | |
| +        message(FATAL_ERROR "CMake step for googletest failed: ${result}")
 | |
| +    endif()
 | |
|  
 | |
| -set(gtest_force_shared_crt ON CACHE BOOL "" FORCE)
 | |
| +    set(gtest_force_shared_crt ON CACHE BOOL "" FORCE)
 | |
| +    set(GTestMain_LIBRARIES gtest_main)
 | |
|  
 | |
| -add_subdirectory(
 | |
| -    ${CMAKE_CURRENT_BINARY_DIR}/googletest-src
 | |
| -    ${CMAKE_CURRENT_BINARY_DIR}/googletest-build
 | |
| -    EXCLUDE_FROM_ALL
 | |
| -)
 | |
| +    add_subdirectory(
 | |
| +        ${CMAKE_CURRENT_BINARY_DIR}/googletest-src
 | |
| +        ${CMAKE_CURRENT_BINARY_DIR}/googletest-build
 | |
| +        EXCLUDE_FROM_ALL
 | |
| +    )
 | |
| +endif()
 | |
|  
 | |
|  if (MSVC AND (GSL_CXX_STANDARD EQUAL 17))
 | |
|      set(GSL_CPLUSPLUS_OPT -Zc:__cplusplus -permissive-)
 | |
| @@ -149,7 +154,7 @@ function(add_gsl_test name)
 | |
|      target_link_libraries(${name}
 | |
|          GSL
 | |
|          gsl_tests_config
 | |
| -        gtest_main
 | |
| +        ${GTestMain_LIBRARIES}
 | |
|      )
 | |
|      add_test(
 | |
|          ${name}
 | |
| @@ -254,7 +259,7 @@ function(add_gsl_test_noexcept name)
 | |
|      target_link_libraries(${name}
 | |
|          GSL
 | |
|          gsl_tests_config_noexcept
 | |
| -        gtest_main
 | |
| +        ${GTestMain_LIBRARIES}
 | |
|      )
 | |
|      add_test(
 | |
|        ${name}
 |