source: pacpussensors/trunk/Vislab/lib3dv/eigen/cmake/language_support.cmake@ 136

Last change on this file since 136 was 136, checked in by ldecherf, 7 years ago

Doc

File size: 2.3 KB
Line 
1# cmake/modules/language_support.cmake
2#
3# Temporary additional general language support is contained within this
4# file.
5
6# This additional function definition is needed to provide a workaround for
7# CMake bug 9220.
8
9# On debian testing (cmake 2.6.2), I get return code zero when calling
10# cmake the first time, but cmake crashes when running a second time
11# as follows:
12#
13# -- The Fortran compiler identification is unknown
14# CMake Error at /usr/share/cmake-2.6/Modules/CMakeFortranInformation.cmake:7 (GET_FILENAME_COMPONENT):
15# get_filename_component called with incorrect number of arguments
16# Call Stack (most recent call first):
17# CMakeLists.txt:3 (enable_language)
18#
19# My workaround is to invoke cmake twice. If both return codes are zero,
20# it is safe to invoke ENABLE_LANGUAGE(Fortran OPTIONAL)
21
22function(workaround_9220 language language_works)
23 #message("DEBUG: language = ${language}")
24 set(text
25 "project(test NONE)
26 cmake_minimum_required(VERSION 2.8.0)
27 set (CMAKE_Fortran_FLAGS \"${CMAKE_Fortran_FLAGS}\")
28 set (CMAKE_EXE_LINKER_FLAGS \"${CMAKE_EXE_LINKER_FLAGS}\")
29 enable_language(${language} OPTIONAL)
30 ")
31 file(REMOVE_RECURSE ${CMAKE_BINARY_DIR}/language_tests/${language})
32 file(MAKE_DIRECTORY ${CMAKE_BINARY_DIR}/language_tests/${language})
33 file(WRITE ${CMAKE_BINARY_DIR}/language_tests/${language}/CMakeLists.txt
34 ${text})
35 execute_process(
36 COMMAND ${CMAKE_COMMAND} . -G "${CMAKE_GENERATOR}"
37 WORKING_DIRECTORY ${CMAKE_BINARY_DIR}/language_tests/${language}
38 RESULT_VARIABLE return_code
39 OUTPUT_QUIET
40 ERROR_QUIET
41 )
42
43 if(return_code EQUAL 0)
44 # Second run
45 execute_process (
46 COMMAND ${CMAKE_COMMAND} .
47 WORKING_DIRECTORY ${CMAKE_BINARY_DIR}/language_tests/${language}
48 RESULT_VARIABLE return_code
49 OUTPUT_QUIET
50 ERROR_QUIET
51 )
52 if(return_code EQUAL 0)
53 set(${language_works} ON PARENT_SCOPE)
54 else(return_code EQUAL 0)
55 set(${language_works} OFF PARENT_SCOPE)
56 endif(return_code EQUAL 0)
57 else(return_code EQUAL 0)
58 set(${language_works} OFF PARENT_SCOPE)
59 endif(return_code EQUAL 0)
60endfunction(workaround_9220)
61
62# Temporary tests of the above function.
63#workaround_9220(CXX CXX_language_works)
64#message("CXX_language_works = ${CXX_language_works}")
65#workaround_9220(CXXp CXXp_language_works)
66#message("CXXp_language_works = ${CXXp_language_works}")
Note: See TracBrowser for help on using the repository browser.