You can not select more than 25 topics
			Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
		
		
		
		
		
			
		
			
				
					
					
						
							67 lines
						
					
					
						
							2.4 KiB
						
					
					
				
			
		
		
		
			
			
			
				
					
				
				
					
				
			
		
		
	
	
							67 lines
						
					
					
						
							2.4 KiB
						
					
					
				| # cmake/modules/language_support.cmake | |
| # | |
| # Temporary additional general language support is contained within this | |
| # file.   | |
|  | |
| # This additional function definition is needed to provide a workaround for | |
| # CMake bug 9220. | |
|  | |
| # On debian testing (cmake 2.6.2), I get return code zero when calling  | |
| # cmake the first time, but cmake crashes when running a second time | |
| # as follows: | |
| # | |
| #  -- The Fortran compiler identification is unknown | |
| #  CMake Error at /usr/share/cmake-2.6/Modules/CMakeFortranInformation.cmake:7 (GET_FILENAME_COMPONENT): | |
| #    get_filename_component called with incorrect number of arguments | |
| #  Call Stack (most recent call first): | |
| #    CMakeLists.txt:3 (enable_language) | |
| # | |
| # My workaround is to invoke cmake twice.  If both return codes are zero,  | |
| # it is safe to invoke ENABLE_LANGUAGE(Fortran OPTIONAL) | |
|  | |
| function(workaround_9220 language language_works) | |
|   #message("DEBUG: language = ${language}") | |
|   set(text | |
|     "project(test NONE) | |
|     cmake_minimum_required(VERSION 2.8.0) | |
|     set (CMAKE_Fortran_FLAGS \"${CMAKE_Fortran_FLAGS}\") | |
|     set (CMAKE_EXE_LINKER_FLAGS \"${CMAKE_EXE_LINKER_FLAGS}\") | |
|     enable_language(${language} OPTIONAL) | |
|   ") | |
|   file(REMOVE_RECURSE ${CMAKE_BINARY_DIR}/language_tests/${language}) | |
|   file(MAKE_DIRECTORY ${CMAKE_BINARY_DIR}/language_tests/${language}) | |
|   file(WRITE ${CMAKE_BINARY_DIR}/language_tests/${language}/CMakeLists.txt | |
|     ${text}) | |
|   execute_process( | |
|     COMMAND ${CMAKE_COMMAND} . -G "${CMAKE_GENERATOR}" | |
|     WORKING_DIRECTORY ${CMAKE_BINARY_DIR}/language_tests/${language} | |
|     RESULT_VARIABLE return_code | |
|     OUTPUT_QUIET | |
|     ERROR_QUIET | |
|     ) | |
|  | |
|   if(return_code EQUAL 0) | |
|     # Second run | |
|     execute_process ( | |
|       COMMAND ${CMAKE_COMMAND} . -G "${CMAKE_GENERATOR}" | |
|       WORKING_DIRECTORY ${CMAKE_BINARY_DIR}/language_tests/${language} | |
|       RESULT_VARIABLE return_code | |
|       OUTPUT_QUIET | |
|       ERROR_QUIET | |
|       ) | |
|     if(return_code EQUAL 0) | |
|       set(${language_works} ON PARENT_SCOPE) | |
|     else(return_code EQUAL 0) | |
|       set(${language_works} OFF PARENT_SCOPE) | |
|     endif(return_code EQUAL 0) | |
|   else(return_code EQUAL 0) | |
|     set(${language_works} OFF PARENT_SCOPE) | |
|   endif(return_code EQUAL 0) | |
| endfunction(workaround_9220) | |
|  | |
| # Temporary tests of the above function. | |
| #workaround_9220(CXX CXX_language_works) | |
| #message("CXX_language_works = ${CXX_language_works}") | |
| #workaround_9220(CXXp CXXp_language_works) | |
| #message("CXXp_language_works = ${CXXp_language_works}") | |
| 
 |