Skip to content
Merged
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
43 changes: 32 additions & 11 deletions cmake/BuildExternalDependencies.cmake
Original file line number Diff line number Diff line change
Expand Up @@ -45,6 +45,7 @@ function(build_hdf5)
SOURCE_DIR ${DEPS_SOURCE_DIR}/hdf5
BINARY_DIR ${DEPS_BUILD_DIR}/hdf5
INSTALL_DIR ${DEPS_PREFIX}
DOWNLOAD_EXTRACT_TIMESTAMP TRUE
CMAKE_ARGS
${COMMON_CMAKE_ARGS}
-DHDF5_BUILD_FORTRAN=ON
Expand All @@ -68,12 +69,25 @@ function(build_hdf5)

# Create imported targets that the main build can use
# HDF5 creates separate C stub libraries for Fortran bindings
add_library(hdf5::hdf5 STATIC IMPORTED GLOBAL)
add_library(hdf5::hdf5_hl STATIC IMPORTED GLOBAL)
add_library(hdf5::hdf5_f90cstub STATIC IMPORTED GLOBAL)
add_library(hdf5::hdf5_hl_f90cstub STATIC IMPORTED GLOBAL)
add_library(hdf5::hdf5_fortran STATIC IMPORTED GLOBAL)
add_library(hdf5::hdf5_hl_fortran STATIC IMPORTED GLOBAL)
# Use if(NOT TARGET) guards in case find_package already created these targets
if(NOT TARGET hdf5::hdf5)
add_library(hdf5::hdf5 STATIC IMPORTED GLOBAL)
endif()
if(NOT TARGET hdf5::hdf5_hl)
add_library(hdf5::hdf5_hl STATIC IMPORTED GLOBAL)
endif()
if(NOT TARGET hdf5::hdf5_f90cstub)
add_library(hdf5::hdf5_f90cstub STATIC IMPORTED GLOBAL)
endif()
if(NOT TARGET hdf5::hdf5_hl_f90cstub)
add_library(hdf5::hdf5_hl_f90cstub STATIC IMPORTED GLOBAL)
endif()
if(NOT TARGET hdf5::hdf5_fortran)
add_library(hdf5::hdf5_fortran STATIC IMPORTED GLOBAL)
endif()
if(NOT TARGET hdf5::hdf5_hl_fortran)
add_library(hdf5::hdf5_hl_fortran STATIC IMPORTED GLOBAL)
endif()

# For static linking, specify all dependencies explicitly to ensure correct link order
set_target_properties(hdf5::hdf5 PROPERTIES
Expand Down Expand Up @@ -218,6 +232,7 @@ function(build_fftw)
SOURCE_DIR ${DEPS_SOURCE_DIR}/fftw
BINARY_DIR ${DEPS_BUILD_DIR}/fftw
INSTALL_DIR ${DEPS_PREFIX}
DOWNLOAD_EXTRACT_TIMESTAMP TRUE
CMAKE_ARGS
${COMMON_CMAKE_ARGS}
-DCMAKE_POLICY_VERSION_MINIMUM=3.5
Expand Down Expand Up @@ -250,18 +265,24 @@ function(build_fftw)
endfunction()

#------------------------------------------------------------------------------
# Build all dependencies in order
# Build all dependencies in order (only those that are needed)
#------------------------------------------------------------------------------
function(build_all_external_dependencies)
message(STATUS "")
message(STATUS "=== Building External Dependencies from Source ===")
message(STATUS "Installation prefix: ${DEPS_PREFIX}")
message(STATUS "")

build_hdf5()
build_netcdf_c()
build_netcdf_fortran()
build_fftw()
if(NEED_BUILD_HDF5)
build_hdf5()
endif()
if(NEED_BUILD_NETCDF)
build_netcdf_c()
build_netcdf_fortran()
endif()
if(NEED_BUILD_FFTW)
build_fftw()
endif()

message(STATUS "")
message(STATUS "=== External Dependencies Configured ===")
Expand Down