Skip to content

Commit 2f142d6

Browse files
committed
Move FortranMangling to try_run
Signed-off-by: Cristian Le <[email protected]>
1 parent afbc20a commit 2f142d6

File tree

2 files changed

+27
-62
lines changed

2 files changed

+27
-62
lines changed

CMAKE/FortranMangling.cmake

Lines changed: 27 additions & 58 deletions
Original file line numberDiff line numberDiff line change
@@ -8,67 +8,36 @@
88
# NoChange
99
# f77IsF2C
1010
# UpCase
11-
#
12-
13-
FUNCTION(COMPILE RESULT)
14-
MESSAGE(STATUS "=========")
15-
MESSAGE(STATUS "Compiling and Building BLACS INSTALL Testing to set correct variables")
11+
#
1612

17-
if(CMAKE_BUILD_TYPE)
18-
SET(BUILD_TYPE -DCMAKE_BUILD_TYPE:STRING=${CMAKE_BUILD_TYPE})
19-
endif()
13+
include_guard()
2014

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
2719
)
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()
3520

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
4028
)
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+
)
4734
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()

CMakeLists.txt

Lines changed: 0 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -118,11 +118,7 @@ set(PKG_CONFIG_DIR ${CMAKE_INSTALL_LIBDIR}/pkgconfig CACHE PATH "pkg-config inst
118118
# Fortran Mangling, MPI Tests and BLACS settings
119119
#
120120
include(FortranMangling)
121-
COMPILE(install_COMPILED)
122121

123-
if (NOT DEFINED CDEFS)
124-
FORTRAN_MANGLING(CDEFS)
125-
endif ()
126122
#MESSAGE(STATUS "Setting CDEFS = ${CDEFS}")
127123
#set(CDEFS ${CDEFS} CACHE STRING "Fortran Mangling" FORCE)
128124
MESSAGE(STATUS "=========")

0 commit comments

Comments
 (0)