[CMake] Enhancement to CHECK_C_RUNS_SOURCE
Clifford Yapp
cliffyapp at gmail.com
Tue Jan 31 19:27:22 EST 2012
We currently have a minor local enhancement to CHECK_C_RUNS_SOURCE
that I would like to contribute back to the main module, if it is
acceptable to the developers of CMake:
We often have our own .c file stored in our tree for TRY_RUN testing,
and it is convenient to be able to use CHECK_C_RUNS_SOURCE for testing
those .c files. At the moment, CHECK_C_RUNS_SOURCE assumes the
incoming SOURCE variable actually holds the source code - our
enhancement checks to see if SOURCE holds a valid file path first. If
it DOES hold a valid file path, TRY_RUN then trys that .c file,
otherwise the existing CHECK_C_RUNS_SOURCE is preserved. I don't know
of any sane pathname that would be valid C code or vice versa, so
there should be no danger of passing in a C source snippit and having
it mistaken for a file path.
The diff is below - would this be of interest for main-line CMake?
Thanks,
CY
--- ../../CheckCSourceRuns.cmake 2012-01-31 19:19:58.000000000 -0500
+++ misc/CMake/CheckCSourceRuns.cmake 2012-01-31 19:16:05.000000000 -0500
@@ -86,13 +86,18 @@
ELSE(CMAKE_REQUIRED_INCLUDES)
SET(CHECK_C_SOURCE_COMPILES_ADD_INCLUDES)
ENDIF(CMAKE_REQUIRED_INCLUDES)
- FILE(WRITE "${CMAKE_BINARY_DIR}${CMAKE_FILES_DIRECTORY}/CMakeTmp/src.c"
- "${SOURCE}\n")
-
+ IF(EXISTS "${SOURCE}")
+ SET(CHECK_SRC "${SOURCE}")
+ ELSE(EXISTS "${SOURCE}")
+ FILE(WRITE "${CMAKE_BINARY_DIR}${CMAKE_FILES_DIRECTORY}/CMakeTmp/src.c"
+ "${SOURCE}\n")
+ SET(CHECK_SRC
"${CMAKE_BINARY_DIR}${CMAKE_FILES_DIRECTORY}/CMakeTmp/src.c")
+ ENDIF(EXISTS "${SOURCE}")
+
MESSAGE(STATUS "Performing Test ${VAR}")
TRY_RUN(${VAR}_EXITCODE ${VAR}_COMPILED
${CMAKE_BINARY_DIR}
- ${CMAKE_BINARY_DIR}${CMAKE_FILES_DIRECTORY}/CMakeTmp/src.c
+ ${CHECK_SRC}
COMPILE_DEFINITIONS ${CMAKE_REQUIRED_DEFINITIONS}
CMAKE_FLAGS
-DCOMPILE_DEFINITIONS:STRING=${MACRO_CHECK_FUNCTION_DEFINITIONS}
-DCMAKE_SKIP_RPATH:BOOL=${CMAKE_SKIP_RPATH}
More information about the CMake
mailing list