Skip to content

Commit e4113c9

Browse files
authored
Merge pull request #369 from esmf-org/feature/esmx-cmake-api
Make the ESMX CMake API directly usable for (complex) projects that leverage CMake. The component build type `cmake` now uses `add_subdirectory()`. A new build type, `cmake.external` can be used to build a component explicitly by ESMX with CMake commands and then using its CMake configuration file (the old default behavior for `cmake` build type).
2 parents 3a363a7 + c7f3520 commit e4113c9

File tree

8 files changed

+245
-220
lines changed

8 files changed

+245
-220
lines changed

cmake/FindESMF.cmake

Lines changed: 21 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -114,6 +114,9 @@ if(EXISTS ${ESMFMKFILE})
114114
if(NOT TARGET ESMF::ESMF)
115115
add_library(ESMF::ESMF STATIC IMPORTED)
116116
endif()
117+
if(NOT TARGET ESMF::ESMC)
118+
add_library(ESMF::ESMC STATIC IMPORTED)
119+
endif()
117120
else()
118121
find_library(ESMF_LIBRARY_LOCATION NAMES esmf PATHS ${ESMF_LIBSDIR} NO_DEFAULT_PATH)
119122
if(ESMF_LIBRARY_LOCATION MATCHES "ESMF_LIBRARY_LOCATION-NOTFOUND")
@@ -122,6 +125,9 @@ if(EXISTS ${ESMFMKFILE})
122125
if(NOT TARGET ESMF::ESMF)
123126
add_library(ESMF::ESMF UNKNOWN IMPORTED)
124127
endif()
128+
if(NOT TARGET ESMF::ESMC)
129+
add_library(ESMF::ESMC UNKNOWN IMPORTED)
130+
endif()
125131
endif()
126132

127133
# Add ESMF as an alias to ESMF::ESMF for backward compatibility
@@ -136,17 +142,27 @@ if(EXISTS ${ESMFMKFILE})
136142
string(REGEX REPLACE "^-I" "" _ITEM "${_ITEM}")
137143
list(APPEND ESMF_INCLUDE_DIRECTORIES ${_ITEM})
138144
endforeach()
145+
set(ESMC_INCLUDE_DIRECTORIES "")
146+
separate_arguments(_ESMF_CCOMPILEPATHS UNIX_COMMAND ${ESMF_CCOMPILEPATHS})
147+
foreach(_ITEM ${_ESMF_CCOMPILEPATHS})
148+
string(REGEX REPLACE "^-I" "" _ITEM "${_ITEM}")
149+
list(APPEND ESMC_INCLUDE_DIRECTORIES ${_ITEM})
150+
endforeach()
139151

140152
# Add ESMF link libraries
141153
string(STRIP "${ESMF_F90LINKRPATHS} ${ESMF_F90ESMFLINKRPATHS} ${ESMF_F90ESMFLINKPATHS} ${ESMF_F90LINKPATHS} ${ESMF_F90LINKLIBS} ${ESMF_F90LINKOPTS}" ESMF_INTERFACE_LINK_LIBRARIES)
154+
string(STRIP "${ESMF_CLINKRPATHS} ${ESMF_CESMFLINKRPATHS} ${ESMF_CESMFLINKPATHS} ${ESMF_CLINKPATHS} ${ESMF_CLINKLIBS} ${ESMF_CLINKOPTS}" ESMC_INTERFACE_LINK_LIBRARIES)
142155

143156
# Finalize find_package
144157
include(FindPackageHandleStandardArgs)
145158

146159
find_package_handle_standard_args(
147160
${CMAKE_FIND_PACKAGE_NAME}
148161
REQUIRED_VARS ESMF_LIBRARY_LOCATION
162+
ESMF_INCLUDE_DIRECTORIES
163+
ESMC_INCLUDE_DIRECTORIES
149164
ESMF_INTERFACE_LINK_LIBRARIES
165+
ESMC_INTERFACE_LINK_LIBRARIES
150166
ESMF_F90COMPILEPATHS
151167
VERSION_VAR ESMF_VERSION)
152168

@@ -155,6 +171,11 @@ if(EXISTS ${ESMFMKFILE})
155171
INTERFACE_INCLUDE_DIRECTORIES "${ESMF_INCLUDE_DIRECTORIES}"
156172
INTERFACE_LINK_LIBRARIES "${ESMF_INTERFACE_LINK_LIBRARIES}")
157173

174+
set_target_properties(ESMF::ESMC PROPERTIES
175+
IMPORTED_LOCATION "${ESMF_LIBRARY_LOCATION}"
176+
INTERFACE_INCLUDE_DIRECTORIES "${ESMC_INCLUDE_DIRECTORIES}"
177+
INTERFACE_LINK_LIBRARIES "${ESMC_INTERFACE_LINK_LIBRARIES}")
178+
158179
else()
159180
set(ESMF_FOUND FALSE CACHE BOOL "esmf.mk file NOT found" FORCE)
160181
message(WARNING "ESMFMKFILE ${ESMFMKFILE} not found. Try setting ESMFMKFILE \

src/addon/ESMX/CMakeLists.txt

Lines changed: 23 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -1,34 +1,42 @@
11
cmake_minimum_required(VERSION 3.22)
22

33
# Where to look for the local Find<Package>.cmake files
4-
list(APPEND CMAKE_MODULE_PATH "${CMAKE_CURRENT_LIST_DIR}/Driver/cmake")
4+
list(APPEND CMAKE_MODULE_PATH "${CMAKE_CURRENT_LIST_DIR}/cmake")
55

66
# Find ESMF
7-
find_package(ESMF 8.6.0 MODULE REQUIRED)
7+
find_package(ESMF 8.9.0 MODULE REQUIRED)
88

9-
# Set compilers consistent with ESMF
10-
set(CMAKE_Fortran_COMPILER "${ESMF_F90COMPILER}")
11-
set(CMAKE_CXX_COMPILER "${ESMF_CXXCOMPILER}")
12-
set(CMAKE_C_COMPILER "${ESMF_CCOMPILER}")
9+
if(NOT DEFINED CMAKE_Fortran_COMPILER)
10+
set(CMAKE_Fortran_COMPILER "${ESMF_F90COMPILER}")
11+
endif()
12+
if(NOT DEFINED CMAKE_CXX_COMPILER)
13+
set(CMAKE_CXX_COMPILER "${ESMF_CXXCOMPILER}")
14+
endif()
15+
if(NOT DEFINED CMAKE_C_COMPILER)
16+
set(CMAKE_C_COMPILER "${ESMF_CCOMPILER}")
17+
endif()
1318

1419
# Project
1520
project(ESMX
16-
VERSION 1.0.0
21+
VERSION 8.9.0
1722
LANGUAGES Fortran CXX C
1823
)
1924

25+
# Define standard installation directories
26+
include(GNUInstallDirs)
27+
2028
# Add ESMX driver
2129
add_subdirectory(Driver)
2230

23-
if(CMAKE_Fortran_COMPILER_ID MATCHES "GNU")
31+
if(CMAKE_Fortran_COMPILER_ID STREQUAL "GNU")
2432
set(CMAKE_Fortran_FLAGS_RELEASE "-O2")
2533
set(CMAKE_Fortran_FLAGS_RELWITHDEBINFO "-g -fbacktrace -O2")
2634
set(CMAKE_Fortran_FLAGS_DEBUG "-g -fbacktrace -O0 -fcheck=all -ffpe-trap=invalid,zero,overflow,underflow")
27-
elseif(CMAKE_Fortran_COMPILER_ID MATCHES "Intel")
35+
elseif(CMAKE_Fortran_COMPILER_ID STREQUAL "Intel")
2836
set(CMAKE_Fortran_FLAGS_RELEASE "-O2")
2937
set(CMAKE_Fortran_FLAGS_RELWITHDEBINFO "-g -traceback -O2")
3038
set(CMAKE_Fortran_FLAGS_DEBUG "-g -traceback -O0 -check all -fpe0 -ftrapuv -init=snan,arrays")
31-
elseif(CMAKE_Fortran_COMPILER_ID MATCHES "NVHPC")
39+
elseif(CMAKE_Fortran_COMPILER_ID STREQUAL "NVHPC")
3240
set(CMAKE_Fortran_FLAGS_RELEASE "-O2 -fast")
3341
set(CMAKE_Fortran_FLAGS_RELWITHDEBINFO "-g -traceback -O2 -fast")
3442
set(CMAKE_Fortran_FLAGS_DEBUG "-g -traceback -O0")
@@ -45,12 +53,10 @@ endif()
4553
add_executable(${ESMX_EXE_NAME} ESMX_App.F90)
4654
target_include_directories(${ESMX_EXE_NAME} PUBLIC ${PROJECT_BINARY_DIR})
4755
target_link_libraries(${ESMX_EXE_NAME} PUBLIC esmx_driver)
48-
set_target_properties(${ESMX_EXE_NAME} PROPERTIES INSTALL_RPATH_USE_LINK_PATH TRUE)
56+
set_target_properties(${ESMX_EXE_NAME} PROPERTIES
57+
INSTALL_RPATH "${CMAKE_INSTALL_PREFIX}/${CMAKE_INSTALL_LIBDIR};${CMAKE_INSTALL_PREFIX}/lib"
58+
LINKER_LANGUAGE Fortran
59+
)
4960

5061
# Install executable
51-
install(
52-
TARGETS ${ESMX_EXE_NAME}
53-
EXPORT esmx
54-
RUNTIME DESTINATION bin
55-
LIBRARY DESTINATION lib
56-
ARCHIVE DESTINATION lib)
62+
install(TARGETS ${ESMX_EXE_NAME})
Lines changed: 14 additions & 19 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
cmake_minimum_required(VERSION 3.22)
22

3-
list(APPEND CMAKE_MODULE_PATH ${CMAKE_CURRENT_SOURCE_DIR}/cmake)
4-
find_package(ESMF 8.6.0 MODULE REQUIRED)
3+
list(APPEND CMAKE_MODULE_PATH ${CMAKE_CURRENT_SOURCE_DIR}/../../cmake)
4+
find_package(ESMF 8.9.0 MODULE REQUIRED)
55

66
if(NOT DEFINED CMAKE_Fortran_COMPILER)
77
set(CMAKE_Fortran_COMPILER "${ESMF_F90COMPILER}")
@@ -11,19 +11,21 @@ if(NOT DEFINED CMAKE_Fortran_FLAGS)
1111
endif()
1212

1313
project(ESMX_Data
14-
VERSION 1.0
14+
VERSION 8.9.0
1515
LANGUAGES Fortran)
1616

17-
if(CMAKE_Fortran_COMPILER_ID MATCHES "GNU")
17+
include(GNUInstallDirs)
18+
19+
if(CMAKE_Fortran_COMPILER_ID STREQUAL "GNU")
1820
set(CMAKE_Fortran_FLAGS -ffree-line-length-none)
1921
set(CMAKE_Fortran_FLAGS_RELEASE "-O2")
2022
set(CMAKE_Fortran_FLAGS_RELWITHDEBINFO "-g -fbacktrace -O2")
2123
set(CMAKE_Fortran_FLAGS_DEBUG "-g -fbacktrace -O0 -fcheck=all -ffpe-trap=invalid,zero,overflow,underflow")
22-
elseif(CMAKE_Fortran_COMPILER_ID MATCHES "Intel")
24+
elseif(CMAKE_Fortran_COMPILER_ID STREQUAL "Intel")
2325
set(CMAKE_Fortran_FLAGS_RELEASE "-O2")
2426
set(CMAKE_Fortran_FLAGS_RELWITHDEBINFO "-g -traceback -O2")
2527
set(CMAKE_Fortran_FLAGS_DEBUG "-g -traceback -O0 -check all -fpe0 -ftrapuv -init=snan,arrays")
26-
elseif(CMAKE_Fortran_COMPILER_ID MATCHES "NVHPC")
28+
elseif(CMAKE_Fortran_COMPILER_ID STREQUAL "NVHPC")
2729
set(CMAKE_Fortran_FLAGS_RELEASE "-O2 -fast")
2830
set(CMAKE_Fortran_FLAGS_RELWITHDEBINFO "-g -traceback -O2 -fast")
2931
set(CMAKE_Fortran_FLAGS_DEBUG "-g -traceback -O0")
@@ -32,18 +34,11 @@ else()
3234
endif()
3335

3436
add_library(ESMX_Data ESMX_Data.F90)
35-
target_link_libraries(ESMX_Data ESMF)
36-
37-
install(TARGETS ESMX_Data
38-
EXPORT ESMX_Data
39-
LIBRARY DESTINATION lib
40-
ARCHIVE DESTINATION lib
41-
INCLUDES DESTINATION mod
37+
target_include_directories(ESMX_Data
38+
INTERFACE $<BUILD_INTERFACE:${CMAKE_CURRENT_BINARY_DIR}/${CMAKE_INSTALL_INCLUDEDIR}>
39+
$<INSTALL_INTERFACE:${CMAKE_INSTALL_INCLUDEDIR}>
4240
)
43-
install(DIRECTORY ${CMAKE_CURRENT_BINARY_DIR}/
44-
DESTINATION mod
45-
FILES_MATCHING
46-
PATTERN "*.mod"
47-
PATTERN "CMakeFiles" EXCLUDE
41+
set_target_properties(ESMX_Data
42+
PROPERTIES Fortran_MODULE_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR}/${CMAKE_INSTALL_INCLUDEDIR}
4843
)
49-
install(EXPORT ESMX_Data DESTINATION cmake)
44+
target_link_libraries(ESMX_Data ESMF)

src/addon/ESMX/Driver/CMakeLists.txt

Lines changed: 65 additions & 26 deletions
Original file line numberDiff line numberDiff line change
@@ -1,12 +1,12 @@
11
cmake_minimum_required(VERSION 3.22)
22

33
# load packages and modules
4-
list(APPEND CMAKE_MODULE_PATH ${CMAKE_CURRENT_LIST_DIR}/cmake)
4+
list(APPEND CMAKE_MODULE_PATH ${CMAKE_CURRENT_LIST_DIR}/../cmake)
55
set(Python_FIND_UNVERSIONED_NAMES "FIRST")
66
set(Python_FIND_FRAMEWORK "LAST")
77
set(Python_FIND_REGISTRY "LAST")
88
find_package(Python 3.5 REQUIRED COMPONENTS Interpreter)
9-
find_package(ESMF 8.6.0 MODULE REQUIRED)
9+
find_package(ESMF 8.9.0 MODULE REQUIRED)
1010
include(FetchContent)
1111

1212
# esmx functions
@@ -16,7 +16,7 @@ function(esmx_check_ret RETVAL MESSAGE)
1616
endif()
1717
endfunction()
1818

19-
# unset user ESMF variables stored in cache
19+
# unset user ESMX variables stored in cache
2020
get_cmake_property(_variableNames VARIABLES)
2121
foreach (_variableName ${_variableNames})
2222
if("${_variableName}" MATCHES "^ESMX_*")
@@ -103,6 +103,17 @@ elseif(DEFINED ESMX_BUILD_JOBS)
103103
set(ESMX_MAKE_BUILD_JOBS "--jobs=${ESMX_BUILD_JOBS}")
104104
endif()
105105

106+
# diagnostic output
107+
message("")
108+
message("ESMX_BUILD_FILE ............. ${ESMX_BUILD_FILE}")
109+
message("ESMX_EXE_NAME ............... ${ESMX_EXE_NAME}")
110+
message("ESMX_DISABLE_COMPS .......... ${ESMX_DISABLE_COMPS}")
111+
#message("ESMX_CMAKE_BUILD_VERBOSE .... ${ESMX_CMAKE_BUILD_VERBOSE}")
112+
#message("ESMX_CMAKE_BUILD_JOBS ....... ${ESMX_CMAKE_BUILD_JOBS}")
113+
#message("ESMX_TEST_DIR ............... ${ESMX_TEST_DIR}")
114+
#message("ESMX_TEST_TASKS ............. ${ESMX_TEST_TASKS}")
115+
message("")
116+
106117
# compiler options
107118
if(CMAKE_Fortran_COMPILER_ID MATCHES "GNU")
108119
set(CMAKE_Fortran_FLAGS_RELEASE "-O2")
@@ -181,6 +192,7 @@ set(CMP_OPTIONS BUILD_TYPE;
181192
GIT_TAG;
182193
GIT_DIR;
183194
CMAKE_CONFIG;
195+
CMAKE_TARGET;
184196
INSTALL_PREFIX;
185197
LIBRARY_DIR;
186198
CONFIG_DIR;
@@ -209,6 +221,7 @@ foreach(CMP IN ITEMS ${COMPS})
209221
if(CMP_INSTALL_PREFIX STREQUAL "")
210222
set(CMP_INSTALL_PREFIX ${CMAKE_INSTALL_PREFIX})
211223
endif()
224+
string(REPLACE "," ";" "${${CMP}-CMAKE_TARGET}" CMP_CMAKE_TARGET)
212225
string(REPLACE "," ";" "${${CMP}-LIBRARIES}" CMP_LIBRARIES)
213226
string(REPLACE "," ";" "${${CMP}-LINK_LIBRARIES}" CMP_LINK_LIBRARIES)
214227
string(REPLACE "," ";" "${${CMP}-LINK_PATHS}" CMP_LINK_PATHS)
@@ -318,7 +331,11 @@ foreach(CMP IN ITEMS ${COMPS})
318331

319332
# build component with cmake
320333
if(${CMP_BUILD_TYPE} STREQUAL "cmake")
321-
message(STATUS "ESMX building (CMAKE) - ${CMP} - ${CMP_SOURCE_DIR}")
334+
# CMake builds are only configured at this stage!
335+
336+
# build component with cmake.external
337+
elseif(${CMP_BUILD_TYPE} STREQUAL "cmake.external")
338+
message(STATUS "ESMX building (CMAKE external) - ${CMP} - ${CMP_SOURCE_DIR}")
322339
find_file(FND_CMAKE_LISTS
323340
NAMES CMakeLists.txt cmakelists.txt CMAKELISTS.txt
324341
PATHS ${CMP_SOURCE_DIR}
@@ -415,53 +432,74 @@ foreach(CMP IN ITEMS ${COMPS})
415432
message(FATAL_ERROR "Invalid BUILD_TYPE: ${CMP_BUILD_TYPE} for ${CMP}")
416433
endif()
417434

418-
# include modules and link libraries
419-
if(${CMP_LINK_INTO_APP} STREQUAL "True")
435+
# look for CMake target and conditionally include config, modules, link libs
436+
if(TARGET ${CMP_CMAKE_TARGET})
437+
if(${CMP_LINK_INTO_APP} STREQUAL "True")
438+
message(STATUS "ESMX Found CMake target dependency for ${CMP}: ${CMP_CMAKE_TARGET}")
439+
target_link_libraries(esmx_driver PUBLIC ${CMP_CMAKE_TARGET})
440+
endif()
441+
elseif(${CMP_BUILD_TYPE} STREQUAL "cmake")
442+
message(STATUS "ESMX Found CMake subdirectory for ${CMP}: ${CMP_SOURCE_DIR}")
443+
# add source subdirectory with explicit binary directory path. This works for
444+
# internal as well as external component source directories
445+
add_subdirectory(${CMP_SOURCE_DIR} ${CMAKE_BINARY_DIR}/${CMP})
446+
if(TARGET ${CMP_CMAKE_TARGET})
447+
if(${CMP_LINK_INTO_APP} STREQUAL "True")
448+
message(STATUS "ESMX Found CMake target dependency for ${CMP}: ${CMP_CMAKE_TARGET}")
449+
target_link_libraries(esmx_driver PUBLIC ${CMP_CMAKE_TARGET})
450+
endif()
451+
else()
452+
message(FATAL_ERROR "ESMX Did not find expected CMake target dependency for ${CMP} after adding subdirectory: ${CMP_CMAKE_TARGET}")
453+
endif()
454+
else()
455+
# not a known CMake target -> find the config file
420456
find_file(FND_CMAKE_CONFIG
421457
NAMES ${CMP_CMAKE_CONFIG}
422458
HINTS ${CMP_INSTALL_PREFIX} ${CMAKE_BINARY_DIR}/${CMP}
423459
PATH_SUFFIXES ${CMP_CONFIG_DIR} "." "cmake" "config"
424460
NO_CACHE NO_DEFAULT_PATH
425461
)
426462
if(FND_CMAKE_CONFIG)
463+
message(STATUS "ESMX found CMake configuration for ${CMP}: ${FND_CMAKE_CONFIG}")
427464
include(${FND_CMAKE_CONFIG})
428465
endif()
466+
unset(FND_CMAKE_CONFIG)
467+
# not a known CMake target -> find the Fortran module
429468
find_path(FND_FORT_MODULE
430469
NAMES ${CMP_FORT_MODULE}
431470
HINTS ${CMP_INSTALL_PREFIX} ${CMAKE_BINARY_DIR}/${CMP}
432471
PATH_SUFFIXES ${CMP_INCLUDE_DIR} "." "include" "mod"
433472
NO_CACHE NO_DEFAULT_PATH
434473
)
435474
if(FND_FORT_MODULE)
475+
message(STATUS "ESMX Found Fortran module ${CMP_FORT_MODULE} for ${CMP} in: ${FND_FORT_MODULE}")
436476
target_include_directories(esmx_driver PUBLIC ${FND_FORT_MODULE})
437-
elseif(NOT FND_CMAKE_CONFIG)
438-
message(FATAL_ERROR "Cannot find fort_module ${CMP_FORT_MODULE} in ${CMP_INSTALL_PREFIX}")
477+
else()
478+
message(FATAL_ERROR "Cannot find fort_module ${CMP_FORT_MODULE} for ${CMP} in ${CMP_INSTALL_PREFIX}")
439479
endif()
440480
unset(FND_FORT_MODULE)
441-
unset(FND_CMAKE_CONFIG)
481+
# not a known CMake target -> find the libraries
442482
foreach(CMP_LIBRARY IN ITEMS ${CMP_LIBRARIES})
443-
if(TARGET ${CMP_LIBRARY})
444-
target_link_libraries(esmx_driver PUBLIC ${CMP_LIBRARY})
445-
else()
446-
find_library(FND_LIBRARY
447-
NAMES ${CMP_LIBRARY}
448-
HINTS ${CMP_INSTALL_PREFIX} ${CMAKE_BINARY_DIR}/${CMP}
449-
PATH_SUFFIXES ${CMP_LIBRARY_DIR} "." "lib" "lib64"
450-
NO_CACHE NO_DEFAULT_PATH
451-
)
452-
if(NOT FND_LIBRARY)
453-
message(FATAL_ERROR "Cannot find libraries ${CMP_LIBRARY} in ${CMP_INSTALL_PREFIX}")
454-
endif()
455-
target_link_libraries(esmx_driver PUBLIC ${FND_LIBRARY})
456-
unset(FND_LIBRARY)
483+
find_library(FND_LIBRARY
484+
NAMES ${CMP_LIBRARY}
485+
HINTS ${CMP_INSTALL_PREFIX} ${CMAKE_BINARY_DIR}/${CMP}
486+
PATH_SUFFIXES ${CMP_LIBRARY_DIR} "." "lib" "lib64"
487+
NO_CACHE NO_DEFAULT_PATH
488+
)
489+
if(NOT FND_LIBRARY)
490+
message(FATAL_ERROR "Cannot find libraries ${CMP_LIBRARY} for ${CMP} in ${CMP_INSTALL_PREFIX}")
457491
endif()
492+
message(STATUS "ESMX Found link library for ${CMP}: ${FND_LIBRARY}")
493+
target_link_libraries(esmx_driver PUBLIC ${FND_LIBRARY})
494+
unset(FND_LIBRARY)
458495
endforeach()
459496
endif()
460497

461498
# link external libraries
462499
if(${CMP_LINK_INTO_APP} STREQUAL "True")
463500
foreach(CMP_LINK_LIBRARY IN ITEMS ${CMP_LINK_LIBRARIES})
464501
if(TARGET ${CMP_LINK_LIBRARY})
502+
message(STATUS "ESMX Found external link library for ${CMP}: ${CMP_LINK_LIBRARY}")
465503
target_link_libraries(esmx_driver PUBLIC ${CMP_LINK_LIBRARY})
466504
else()
467505
find_library(FND_LINK_LIBRARY
@@ -471,8 +509,9 @@ foreach(CMP IN ITEMS ${COMPS})
471509
NO_CACHE
472510
)
473511
if(NOT FND_LINK_LIBRARY)
474-
message(FATAL_ERROR "Cannot find link_libraries ${CMP_LINK_LIBRARY} in ${CMP_LINK_PATHS}")
512+
message(FATAL_ERROR "Cannot find link_libraries ${CMP_LINK_LIBRARY} for ${CMP} in ${CMP_LINK_PATHS}")
475513
endif()
514+
message(STATUS "ESMX Found external link library for ${CMP}: ${FND_LINK_LIBRARY}")
476515
target_link_libraries(esmx_driver PUBLIC ${FND_LINK_LIBRARY})
477516
unset(FND_LINK_LIBRARY)
478517
endif()
@@ -484,7 +523,7 @@ foreach(CMP IN ITEMS ${COMPS})
484523
if(CMP_TEST_DIR STREQUAL "")
485524
message(WARNING "No test directory provided for ${CMP}")
486525
elseif(NOT EXISTS ${CMP_TEST_DIR})
487-
message(FATAL_ERROR "Cannot find test directory ${CMP_TEST_DIR}")
526+
message(FATAL_ERROR "Cannot find test directory for ${CMP}: ${CMP_TEST_DIR}")
488527
else()
489528
if(CMP_TEST_EXE STREQUAL "")
490529
set(CMP_TEST_EXE ${ESMX_TEST_EXE})
@@ -508,7 +547,7 @@ foreach(CMP IN ITEMS ${COMPS})
508547
NO_CACHE
509548
)
510549
if(NOT FND_TEST_EXE)
511-
message(FATAL_ERROR "Cannot find test executable: ${CMP_TEST_EXE}")
550+
message(FATAL_ERROR "Cannot find test executable for ${CMP}: ${CMP_TEST_EXE}")
512551
endif()
513552

514553
# add test

0 commit comments

Comments
 (0)