|
8 | 8 | # NoChange
|
9 | 9 | # f77IsF2C
|
10 | 10 | # UpCase
|
11 |
| -# |
12 |
| - |
13 |
| -FUNCTION(COMPILE RESULT) |
14 |
| - MESSAGE(STATUS "=========") |
15 |
| - MESSAGE(STATUS "Compiling and Building BLACS INSTALL Testing to set correct variables") |
| 11 | +# |
16 | 12 |
|
17 |
| - if(CMAKE_BUILD_TYPE) |
18 |
| - SET(BUILD_TYPE -DCMAKE_BUILD_TYPE:STRING=${CMAKE_BUILD_TYPE}) |
19 |
| - endif() |
| 13 | +include_guard() |
20 | 14 |
|
21 |
| - # Configure: |
22 |
| - EXECUTE_PROCESS(COMMAND ${CMAKE_COMMAND} |
23 |
| - "${PROJECT_SOURCE_DIR}/BLACS/INSTALL" |
24 |
| - -G ${CMAKE_GENERATOR} ${BUILD_TYPE} |
25 |
| - WORKING_DIRECTORY ${PROJECT_SOURCE_DIR}/BLACS/INSTALL/ |
26 |
| - RESULT_VARIABLE RESVAR OUTPUT_VARIABLE LOG1_OUT ERROR_VARIABLE LOG1_ERR |
| 15 | +block() |
| 16 | + # TODO: This path is hard-coded |
| 17 | + set(BLACS_INSTALL_SRC |
| 18 | + ${CMAKE_CURRENT_LIST_DIR}/../BLACS/INSTALL |
27 | 19 | )
|
28 |
| - if(RESVAR EQUAL 0) |
29 |
| - MESSAGE(STATUS "Configure in the INSTALL directory successful") |
30 |
| - else() |
31 |
| - MESSAGE(STATUS " Build Output:\n ${LOG1_OUT}") |
32 |
| - MESSAGE(STATUS " Error Output:\n ${LOG1_ERR}") |
33 |
| - MESSAGE(FATAL_ERROR " Configure in the BLACS INSTALL directory FAILED") |
34 |
| - endif() |
35 | 20 |
|
36 |
| - # Build: |
37 |
| - EXECUTE_PROCESS(COMMAND ${CMAKE_COMMAND} --build |
38 |
| - ${PROJECT_SOURCE_DIR}/BLACS/INSTALL/ |
39 |
| - RESULT_VARIABLE RESVAR OUTPUT_VARIABLE LOG2_OUT ERROR_VARIABLE LOG2_ERR |
| 21 | + try_run(xintface_res xintface_compile_res |
| 22 | + SOURCES |
| 23 | + ${BLACS_INSTALL_SRC}/Fintface.f |
| 24 | + ${BLACS_INSTALL_SRC}/Cintface.c |
| 25 | + NO_CACHE |
| 26 | + COMPILE_OUTPUT_VARIABLE xintface_compile_output |
| 27 | + RUN_OUTPUT_VARIABLE xintface_output |
40 | 28 | )
|
41 |
| - if(RESVAR EQUAL 0) |
42 |
| - MESSAGE(STATUS "Build in the BLACS INSTALL directory successful") |
43 |
| - else() |
44 |
| - MESSAGE(STATUS " Build Output:\n ${LOG2_OUT}") |
45 |
| - MESSAGE(STATUS " Error Output:\n ${LOG2_ERR}") |
46 |
| - MESSAGE(FATAL_ERROR " Build in the BLACS INSTALL directory FAILED") |
| 29 | + if(NOT xintface_compile_res) |
| 30 | + message(FATAL_ERROR |
| 31 | + "Could not compile BLACS/INSTALL:\n" |
| 32 | + "${xintface_compile_output}" |
| 33 | + ) |
47 | 34 | endif()
|
48 |
| - # Clean up: |
49 |
| - FILE(REMOVE_RECURSE ${PROJECT_SOURCE_DIR}/BLACS/INSTALL/CMakeCache.txt) |
50 |
| - FILE(REMOVE_RECURSE ${PROJECT_SOURCE_DIR}/BLACS/INSTALL/CMakeFiles ) |
51 |
| -ENDFUNCTION() |
52 |
| - |
53 |
| - |
54 |
| -macro(FORTRAN_MANGLING CDEFS) |
55 |
| -MESSAGE(STATUS "=========") |
56 |
| -MESSAGE(STATUS "Testing FORTRAN_MANGLING") |
57 |
| - |
58 |
| - execute_process ( COMMAND ${PROJECT_SOURCE_DIR}/BLACS/INSTALL/xintface |
59 |
| - RESULT_VARIABLE xintface_RES |
60 |
| - OUTPUT_VARIABLE xintface_OUT |
61 |
| - ERROR_VARIABLE xintface_ERR) |
62 |
| - |
63 |
| - |
64 |
| -# MESSAGE(STATUS "FORTRAN MANGLING:RUN \n${xintface_OUT}") |
65 |
| - |
66 |
| - if (xintface_RES EQUAL 0) |
67 |
| - STRING(REPLACE "\n" "" xintface_OUT "${xintface_OUT}") |
68 |
| - MESSAGE(STATUS "CDEFS set to ${xintface_OUT}") |
69 |
| - SET(CDEFS ${xintface_OUT} CACHE STRING "Fortran Mangling" FORCE) |
70 |
| - else() |
71 |
| - MESSAGE(STATUS " xintface Output:\n ${xintface_OUT}") |
72 |
| - MESSAGE(FATAL_ERROR "FORTRAN_MANGLING:ERROR ${xintface_ERR}") |
73 |
| - endif() |
74 |
| -endmacro(FORTRAN_MANGLING) |
| 35 | + if(NOT ${xintface_res} EQUAL 0) |
| 36 | + message(FATAL_ERROR |
| 37 | + "xintface did not execute properly:\n" |
| 38 | + "${xintface_output}" |
| 39 | + ) |
| 40 | + endif() |
| 41 | + string(STRIP "${xintface_output}" xintface_output) |
| 42 | + set(CDEFS ${xintface_output} CACHE STRING "Fortran Mangling") |
| 43 | +endblock() |
0 commit comments