diff --git a/libdap2/CMakeLists.txt b/libdap2/CMakeLists.txt index 44f9bb2828..e58da10e63 100644 --- a/libdap2/CMakeLists.txt +++ b/libdap2/CMakeLists.txt @@ -8,6 +8,10 @@ SET(dap2_SOURCES constraints.c dapcvt.c dapodom.c daputil.c ncdaperr.c cdf.c cac add_library(dap2 OBJECT ${dap2_SOURCES}) +IF(STATUS_PARALLEL) + target_link_libraries(dap2 PUBLIC MPI::MPI_C) +ENDIF(STATUS_PARALLEL) + ### # Options related to the man page generation. ### diff --git a/libdap4/CMakeLists.txt b/libdap4/CMakeLists.txt index f08b2ea7b5..4b914de59f 100644 --- a/libdap4/CMakeLists.txt +++ b/libdap4/CMakeLists.txt @@ -8,6 +8,10 @@ SET(dap4_SOURCES d4curlfunctions.c d4fix.c d4data.c d4file.c d4parser.c d4meta.c add_library(dap4 OBJECT ${dap4_SOURCES}) +IF(STATUS_PARALLEL) + target_link_libraries(dap4 PUBLIC MPI::MPI_C) +ENDIF(STATUS_PARALLEL) + ### # Options related to the man page generation. ### diff --git a/libdispatch/CMakeLists.txt b/libdispatch/CMakeLists.txt index 730e877c92..98b90bc96c 100644 --- a/libdispatch/CMakeLists.txt +++ b/libdispatch/CMakeLists.txt @@ -32,13 +32,9 @@ IF(REGEDIT) ENDIF(REGEDIT) add_library(dispatch OBJECT ${libdispatch_SOURCES}) -IF(MPI_C_INCLUDE_PATH) - target_include_directories(dispatch PUBLIC ${MPI_C_INCLUDE_PATH}) -ENDIF(MPI_C_INCLUDE_PATH) - -IF(MPI_C_LIBRARIES) - target_link_libraries(dispatch PUBLIC ${MPI_C_LIBRARIES}) -ENDIF(MPI_C_LIBRARIES) +IF(STATUS_PARALLEL) + target_link_libraries(dispatch PUBLIC MPI::MPI_C) +ENDIF(STATUS_PARALLEL) IF(ENABLE_NCZARR) target_include_directories(dispatch PUBLIC ../libnczarr) diff --git a/libhdf5/CMakeLists.txt b/libhdf5/CMakeLists.txt index 5cf4aa9267..f1195a0879 100644 --- a/libhdf5/CMakeLists.txt +++ b/libhdf5/CMakeLists.txt @@ -19,9 +19,9 @@ ENDIF() # the netCDF library. add_library(netcdfhdf5 OBJECT ${libnchdf5_SOURCES}) -IF(MPI_C_INCLUDE_PATH) - target_include_directories(netcdfhdf5 PUBLIC ${MPI_C_INCLUDE_PATH}) -ENDIF(MPI_C_INCLUDE_PATH) +IF(STATUS_PARALLEL) + target_link_libraries(netcdfhdf5 PUBLIC MPI::MPI_C) +ENDIF(STATUS_PARALLEL) # Remember to package this file for CMake builds. ADD_EXTRA_DIST(${libnchdf5_SOURCES} CMakeLists.txt) diff --git a/liblib/CMakeLists.txt b/liblib/CMakeLists.txt index 03547f0d5d..1a1a9ef6d8 100644 --- a/liblib/CMakeLists.txt +++ b/liblib/CMakeLists.txt @@ -52,9 +52,10 @@ ENDFOREACH() ADD_LIBRARY(netcdf nc_initialize.c ${LARGS} ) -IF(MPI_C_INCLUDE_PATH) - target_include_directories(netcdf PUBLIC ${MPI_C_INCLUDE_PATH}) -ENDIF(MPI_C_INCLUDE_PATH) +IF(STATUS_PARALLEL) + # TODO: Make PUBLIC when other dependencies have PUBLIC/PRIVATE specified + target_link_libraries(netcdf MPI::MPI_C) +ENDIF(STATUS_PARALLEL) IF(MOD_NETCDF_NAME) SET_TARGET_PROPERTIES(netcdf PROPERTIES LIBRARY_OUTPUT_NAME ${NETCDF_LIB_NAME}) diff --git a/libnczarr/CMakeLists.txt b/libnczarr/CMakeLists.txt index a224c4f24d..1a6c5e951d 100644 --- a/libnczarr/CMakeLists.txt +++ b/libnczarr/CMakeLists.txt @@ -61,10 +61,9 @@ add_library(nczarr OBJECT ${libnczarr_SOURCES}) TARGET_INCLUDE_DIRECTORIES(nczarr PUBLIC ../libncpoco) -IF(MPI_C_INCLUDE_PATH) - target_include_directories(nczarr PUBLIC ${MPI_C_INCLUDE_PATH}) -ENDIF(MPI_C_INCLUDE_PATH) +IF(STATUS_PARALLEL) + target_link_libraries(nczarr PUBLIC MPI::MPI_C) +ENDIF(STATUS_PARALLEL) # Remember to package this file for CMake builds. ADD_EXTRA_DIST(${libnczarr_SOURCES} CMakeLists.txt) - diff --git a/libsrc/CMakeLists.txt b/libsrc/CMakeLists.txt index 01de3cffbb..533b64c7bd 100644 --- a/libsrc/CMakeLists.txt +++ b/libsrc/CMakeLists.txt @@ -36,9 +36,9 @@ ENDIF(ENABLE_BYTERANGE) add_library(netcdf3 OBJECT ${libsrc_SOURCES}) -IF(MPI_C_INCLUDE_PATH) - target_include_directories(netcdf3 PUBLIC ${MPI_C_INCLUDE_PATH}) -ENDIF(MPI_C_INCLUDE_PATH) +IF(STATUS_PARALLEL) + target_link_libraries(netcdf3 PUBLIC MPI::MPI_C) +ENDIF(STATUS_PARALLEL) # The C API man page. diff --git a/libsrc4/CMakeLists.txt b/libsrc4/CMakeLists.txt index 3c88c8b37a..40c71ab6a5 100644 --- a/libsrc4/CMakeLists.txt +++ b/libsrc4/CMakeLists.txt @@ -11,9 +11,9 @@ nc4internal.c nc4type.c nc4var.c ncfunc.c ncindex.c nc4cache.c) add_library(netcdf4 OBJECT ${libsrc4_SOURCES}) -IF(MPI_C_INCLUDE_PATH) - target_include_directories(netcdf4 PUBLIC ${MPI_C_INCLUDE_PATH}) -ENDIF(MPI_C_INCLUDE_PATH) +IF(STATUS_PARALLEL) + target_link_libraries(netcdf4 PUBLIC MPI::MPI_C) +ENDIF(STATUS_PARALLEL) # Files for make dist FILE(GLOB libsrc4_HEADERS RELATIVE ${CMAKE_CURRENT_SOURCE_DIR} ${CMAKE_CURRENT_SOURCE_DIR}/*.h ${CMAKE_CURRENT_SOURCE_DIR}/*.sh) diff --git a/netCDFConfig.cmake.in b/netCDFConfig.cmake.in index 9d68eec5a2..3146bb7d7c 100644 --- a/netCDFConfig.cmake.in +++ b/netCDFConfig.cmake.in @@ -40,3 +40,8 @@ set(netCDF_HAS_DAP4 @HAS_DAP4@) set(netCDF_HAS_DISKLESS @HAS_DISKLESS@) set(netCDF_HAS_MMAP @HAS_MMAP@) set(netCDF_HAS_JNA @HAS_JNA@) + +if (@HAS_PARALLEL@) + include(CMakeFindDependencyMacro) + find_dependency(MPI @MPI_C_VERSION@ EXACT) +endif() diff --git a/oc2/CMakeLists.txt b/oc2/CMakeLists.txt index 1b4b51f8aa..c938ea1454 100644 --- a/oc2/CMakeLists.txt +++ b/oc2/CMakeLists.txt @@ -9,6 +9,10 @@ SET(oc_SOURCES oc.c daplex.c dapparse.c dapy.c occompile.c occurlfunctions.c ocd add_library(oc2 OBJECT ${oc_SOURCES}) +IF(STATUS_PARALLEL) + target_link_libraries(oc2 PUBLIC MPI::MPI_C) +ENDIF(STATUS_PARALLEL) + # Apparently fails under cmake #set(ocprint_FILES ocprint.c ) #ADD_EXECUTABLE(ocprint ${ocprint_FILES}) diff --git a/plugins/CMakeLists.txt b/plugins/CMakeLists.txt index 15de8cb89b..60384f6b84 100644 --- a/plugins/CMakeLists.txt +++ b/plugins/CMakeLists.txt @@ -55,7 +55,7 @@ MACRO(buildplugin TARGET TARGETLIB) SET_TARGET_PROPERTIES(${TARGET} PROPERTIES RUNTIME_OUTPUT_NAME ${MANGLELIB}) SET_TARGET_PROPERTIES(${TARGET} PROPERTIES PREFIX "") # Critical that this be set to "" SET_TARGET_PROPERTIES(${TARGET} PROPERTIES SUFFIX ".${PLUGINEXT}") - TARGET_LINK_LIBRARIES(${TARGET} ${ALL_TLL_LIBS};${ARGN}) + TARGET_LINK_LIBRARIES(${TARGET} PUBLIC ${ALL_TLL_LIBS};${ARGN}) IF(MSVC) target_compile_options(${TARGET} PRIVATE /Zi) # Tell linker to include symbol data @@ -63,6 +63,10 @@ MACRO(buildplugin TARGET TARGETLIB) # Set file name & location set_target_properties(${TARGET} PROPERTIES COMPILE_PDB_NAME ${TARGET} COMPILE_PDB_OUTPUT_DIR ${CMAKE_BINARY_DIR}) ENDIF() + + IF(STATUS_PARALLEL) + target_link_libraries(${TARGET} PUBLIC MPI::MPI_C) + ENDIF(STATUS_PARALLEL) ENDMACRO() buildplugin(h5misc "h5misc" netcdf)