|
1 # Based on CheckLibraryExists.cmake from CMake |
|
2 #============================================================================= |
|
3 # Copyright 2002-2009 Kitware, Inc. |
|
4 # |
|
5 # Distributed under the OSI-approved BSD License |
|
6 # |
|
7 # This software is distributed WITHOUT ANY WARRANTY; without even the |
|
8 # implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. |
|
9 # See the License for more information. |
|
10 #============================================================================= |
|
11 |
|
12 macro(CHECK_HASKELL_MODULE_EXISTS MODULE FUNCTION PARAMCOUNT LIBRARY) |
|
13 set(VARIABLE "HS_MODULE_${LIBRARY}_${FUNCTION}") |
|
14 if("${VARIABLE}" MATCHES "^${VARIABLE}$") |
|
15 message(STATUS "Looking for ${FUNCTION} in ${MODULE}") |
|
16 |
|
17 set(PARAMETERS "") |
|
18 |
|
19 if(PARAMCOUNT GREATER 0) |
|
20 foreach(__TRASH__ RANGE 1 ${PARAMCOUNT}) |
|
21 set(PARAMETERS "${PARAMETERS} undefined") |
|
22 endforeach() |
|
23 endif() |
|
24 |
|
25 set(PARAMETERS "") |
|
26 |
|
27 execute_process(COMMAND ${GHC_EXECUTABLE} |
|
28 "-DMODULE=${MODULE}" |
|
29 "-DFUNCTION=${FUNCTION}" |
|
30 "-DPARAMETERS=${PARAMETERS}" |
|
31 -cpp |
|
32 -c "${CMAKE_MODULE_PATH}/checkModule.hs" |
|
33 ERROR_VARIABLE BUILD_ERROR |
|
34 OUTPUT_STRIP_TRAILING_WHITESPACE |
|
35 ) |
|
36 |
|
37 if("${BUILD_ERROR}" STREQUAL "") |
|
38 message(STATUS "Looking for ${FUNCTION} in ${MODULE} - found") |
|
39 set(${VARIABLE} 1 CACHE INTERNAL "Have module ${MODULE}") |
|
40 file(APPEND ${CMAKE_BINARY_DIR}${CMAKE_FILES_DIRECTORY}/CMakeOutput.log |
|
41 "Determining if the function ${FUNCTION} exists in the ${MODULE} passed\n\n") |
|
42 else() |
|
43 message(STATUS "Looking for ${FUNCTION} in ${MODULE} - not found") |
|
44 set(${VARIABLE} "" CACHE INTERNAL "Have module ${MODULE}") |
|
45 file(APPEND ${CMAKE_BINARY_DIR}${CMAKE_FILES_DIRECTORY}/CMakeError.log |
|
46 "Determining if the function ${FUNCTION} exists in the ${MODULE} " |
|
47 "failed with the following output:\n" |
|
48 "${BUILD_ERROR}\n\n") |
|
49 message(FATAL_ERROR "Haskell library '${LIBRARY}' required") |
|
50 endif() |
|
51 endif() |
|
52 endmacro() |