Skip to content
This repository was archived by the owner on Aug 28, 2024. It is now read-only.

Commit

Permalink
Major update to build scripts. Now use CMake for all dependencies and…
Browse files Browse the repository at this point in the history
… attempted to simplify the FindNETCDF_Fortran package finder
  • Loading branch information
MintoDA1 authored and MintoDA1 committed Sep 22, 2023
1 parent 311e667 commit d4c8dcb
Show file tree
Hide file tree
Showing 12 changed files with 473 additions and 183 deletions.
74 changes: 74 additions & 0 deletions CMakeFiles/3.27.0/CMakeCCompiler.cmake
Original file line number Diff line number Diff line change
@@ -0,0 +1,74 @@
set(CMAKE_C_COMPILER "/Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/clang")
set(CMAKE_C_COMPILER_ARG1 "")
set(CMAKE_C_COMPILER_ID "AppleClang")
set(CMAKE_C_COMPILER_VERSION "15.0.0.15000040")
set(CMAKE_C_COMPILER_VERSION_INTERNAL "")
set(CMAKE_C_COMPILER_WRAPPER "")
set(CMAKE_C_STANDARD_COMPUTED_DEFAULT "17")
set(CMAKE_C_EXTENSIONS_COMPUTED_DEFAULT "ON")
set(CMAKE_C_COMPILE_FEATURES "c_std_90;c_function_prototypes;c_std_99;c_restrict;c_variadic_macros;c_std_11;c_static_assert;c_std_17;c_std_23")
set(CMAKE_C90_COMPILE_FEATURES "c_std_90;c_function_prototypes")
set(CMAKE_C99_COMPILE_FEATURES "c_std_99;c_restrict;c_variadic_macros")
set(CMAKE_C11_COMPILE_FEATURES "c_std_11;c_static_assert")
set(CMAKE_C17_COMPILE_FEATURES "c_std_17")
set(CMAKE_C23_COMPILE_FEATURES "c_std_23")

set(CMAKE_C_PLATFORM_ID "Darwin")
set(CMAKE_C_SIMULATE_ID "")
set(CMAKE_C_COMPILER_FRONTEND_VARIANT "GNU")
set(CMAKE_C_SIMULATE_VERSION "")




set(CMAKE_AR "/Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/ar")
set(CMAKE_C_COMPILER_AR "")
set(CMAKE_RANLIB "/Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/ranlib")
set(CMAKE_C_COMPILER_RANLIB "")
set(CMAKE_LINKER "/Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/ld")
set(CMAKE_MT "")
set(CMAKE_TAPI "/Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/tapi")
set(CMAKE_COMPILER_IS_GNUCC )
set(CMAKE_C_COMPILER_LOADED 1)
set(CMAKE_C_COMPILER_WORKS TRUE)
set(CMAKE_C_ABI_COMPILED TRUE)

set(CMAKE_C_COMPILER_ENV_VAR "CC")

set(CMAKE_C_COMPILER_ID_RUN 1)
set(CMAKE_C_SOURCE_FILE_EXTENSIONS c;m)
set(CMAKE_C_IGNORE_EXTENSIONS h;H;o;O;obj;OBJ;def;DEF;rc;RC)
set(CMAKE_C_LINKER_PREFERENCE 10)
set(CMAKE_C_LINKER_DEPFILE_SUPPORTED FALSE)

# Save compiler ABI information.
set(CMAKE_C_SIZEOF_DATA_PTR "8")
set(CMAKE_C_COMPILER_ABI "")
set(CMAKE_C_BYTE_ORDER "LITTLE_ENDIAN")
set(CMAKE_C_LIBRARY_ARCHITECTURE "")

if(CMAKE_C_SIZEOF_DATA_PTR)
set(CMAKE_SIZEOF_VOID_P "${CMAKE_C_SIZEOF_DATA_PTR}")
endif()

if(CMAKE_C_COMPILER_ABI)
set(CMAKE_INTERNAL_PLATFORM_ABI "${CMAKE_C_COMPILER_ABI}")
endif()

if(CMAKE_C_LIBRARY_ARCHITECTURE)
set(CMAKE_LIBRARY_ARCHITECTURE "")
endif()

set(CMAKE_C_CL_SHOWINCLUDES_PREFIX "")
if(CMAKE_C_CL_SHOWINCLUDES_PREFIX)
set(CMAKE_CL_SHOWINCLUDES_PREFIX "${CMAKE_C_CL_SHOWINCLUDES_PREFIX}")
endif()





set(CMAKE_C_IMPLICIT_INCLUDE_DIRECTORIES "/usr/local/include;/opt/homebrew/include;/Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/lib/clang/15.0.0/include;/Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX14.0.sdk/usr/include;/Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/include")
set(CMAKE_C_IMPLICIT_LINK_LIBRARIES "")
set(CMAKE_C_IMPLICIT_LINK_DIRECTORIES "/usr/local/lib;/opt/homebrew/lib")
set(CMAKE_C_IMPLICIT_LINK_FRAMEWORK_DIRECTORIES "")
64 changes: 64 additions & 0 deletions CMakeFiles/3.27.0/CMakeFortranCompiler.cmake
Original file line number Diff line number Diff line change
@@ -0,0 +1,64 @@
set(CMAKE_Fortran_COMPILER "/opt/homebrew/bin/gfortran-12")
set(CMAKE_Fortran_COMPILER_ARG1 "")
set(CMAKE_Fortran_COMPILER_ID "GNU")
set(CMAKE_Fortran_COMPILER_VERSION "12.3.0")
set(CMAKE_Fortran_COMPILER_WRAPPER "")
set(CMAKE_Fortran_PLATFORM_ID "")
set(CMAKE_Fortran_SIMULATE_ID "")
set(CMAKE_Fortran_COMPILER_FRONTEND_VARIANT "GNU")
set(CMAKE_Fortran_SIMULATE_VERSION "")


set(CMAKE_Fortran_COMPILER_SYSROOT "/Library/Developer/CommandLineTools/SDKs/MacOSX13.sdk/usr")
set(CMAKE_COMPILER_SYSROOT "/Library/Developer/CommandLineTools/SDKs/MacOSX13.sdk/usr")

set(CMAKE_AR "/Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/ar")
set(CMAKE_Fortran_COMPILER_AR "/opt/homebrew/bin/gcc-ar-12")
set(CMAKE_RANLIB "/Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/ranlib")
set(CMAKE_TAPI "/Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/tapi")
set(CMAKE_Fortran_COMPILER_RANLIB "/opt/homebrew/bin/gcc-ranlib-12")
set(CMAKE_COMPILER_IS_GNUG77 1)
set(CMAKE_Fortran_COMPILER_LOADED 1)
set(CMAKE_Fortran_COMPILER_WORKS TRUE)
set(CMAKE_Fortran_ABI_COMPILED TRUE)

set(CMAKE_Fortran_COMPILER_ENV_VAR "FC")

set(CMAKE_Fortran_COMPILER_SUPPORTS_F90 1)

set(CMAKE_Fortran_COMPILER_ID_RUN 1)
set(CMAKE_Fortran_SOURCE_FILE_EXTENSIONS f;F;fpp;FPP;f77;F77;f90;F90;for;For;FOR;f95;F95;f03;F03;f08;F08)
set(CMAKE_Fortran_IGNORE_EXTENSIONS h;H;o;O;obj;OBJ;def;DEF;rc;RC)
set(CMAKE_Fortran_LINKER_PREFERENCE 20)
set(CMAKE_Fortran_LINKER_DEPFILE_SUPPORTED FALSE)
if(UNIX)
set(CMAKE_Fortran_OUTPUT_EXTENSION .o)
else()
set(CMAKE_Fortran_OUTPUT_EXTENSION .obj)
endif()

# Save compiler ABI information.
set(CMAKE_Fortran_SIZEOF_DATA_PTR "8")
set(CMAKE_Fortran_COMPILER_ABI "")
set(CMAKE_Fortran_LIBRARY_ARCHITECTURE "")

if(CMAKE_Fortran_SIZEOF_DATA_PTR AND NOT CMAKE_SIZEOF_VOID_P)
set(CMAKE_SIZEOF_VOID_P "${CMAKE_Fortran_SIZEOF_DATA_PTR}")
endif()

if(CMAKE_Fortran_COMPILER_ABI)
set(CMAKE_INTERNAL_PLATFORM_ABI "${CMAKE_Fortran_COMPILER_ABI}")
endif()

if(CMAKE_Fortran_LIBRARY_ARCHITECTURE)
set(CMAKE_LIBRARY_ARCHITECTURE "")
endif()


set(CMAKE_Fortran_SYSROOT_FLAG "-isysroot")
set(CMAKE_Fortran_OSX_DEPLOYMENT_TARGET_FLAG "-mmacosx-version-min=")

set(CMAKE_Fortran_IMPLICIT_INCLUDE_DIRECTORIES "/opt/homebrew/Cellar/gcc@12/12.3.0/lib/gcc/12/gcc/aarch64-apple-darwin22/12/finclude;/usr/local/include;/opt/homebrew/include;/opt/homebrew/Cellar/gcc@12/12.3.0/lib/gcc/12/gcc/aarch64-apple-darwin22/12/include;/opt/homebrew/Cellar/gcc@12/12.3.0/lib/gcc/12/gcc/aarch64-apple-darwin22/12/include-fixed;/Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX14.0.sdk/usr/include")
set(CMAKE_Fortran_IMPLICIT_LINK_LIBRARIES "gfortran;emutls_w;gcc;quadmath;emutls_w;gcc;gcc")
set(CMAKE_Fortran_IMPLICIT_LINK_DIRECTORIES "/usr/local/lib;/opt/homebrew/lib;/opt/homebrew/Cellar/gcc@12/12.3.0/lib/gcc/12/gcc/aarch64-apple-darwin22/12;/opt/homebrew/Cellar/gcc@12/12.3.0/lib/gcc/12/gcc;/opt/homebrew/Cellar/gcc@12/12.3.0/lib/gcc/12")
set(CMAKE_Fortran_IMPLICIT_LINK_FRAMEWORK_DIRECTORIES "")
15 changes: 15 additions & 0 deletions CMakeFiles/3.27.0/CMakeSystem.cmake
Original file line number Diff line number Diff line change
@@ -0,0 +1,15 @@
set(CMAKE_HOST_SYSTEM "Darwin-22.6.0")
set(CMAKE_HOST_SYSTEM_NAME "Darwin")
set(CMAKE_HOST_SYSTEM_VERSION "22.6.0")
set(CMAKE_HOST_SYSTEM_PROCESSOR "arm64")



set(CMAKE_SYSTEM "Darwin-22.6.0")
set(CMAKE_SYSTEM_NAME "Darwin")
set(CMAKE_SYSTEM_VERSION "22.6.0")
set(CMAKE_SYSTEM_PROCESSOR "arm64")

set(CMAKE_CROSSCOMPILING "FALSE")

set(CMAKE_SYSTEM_LOADED 1)
9 changes: 1 addition & 8 deletions CMakeLists.txt
Original file line number Diff line number Diff line change
Expand Up @@ -66,14 +66,7 @@ IF(PROJECT_SOURCE_DIR STREQUAL PROJECT_BINARY_DIR)
MESSAGE(FATAL_ERROR "In-source builds not allowed. Please make a new directory (called a build directory) and run CMake from there.\n")
ENDIF()

IF (CMAKE_SYSTEM_NAME STREQUAL "Windows")
FILE(GLOB LIBDIRS "C:/Program Files*/NC4F")
LIST(SORT LIBDIRS)
LIST(GET LIBDIRS -1 LIBPREFIX)
SET(netCDF-Fortran_DIR "${LIBPREFIX}/lib/cmake/netCDF" CACHE PATH "Location of provided netCDF-FortranConfig.cmake file")
ENDIF ()
MESSAGE(STATUS "Looking for netCDF-FortranConfig.cmake in ${netCDF-Fortran_DIR}")
FIND_PACKAGE(netCDF-Fortran REQUIRED)
FIND_PACKAGE(NETCDF_Fortran REQUIRED)
FIND_PACKAGE(HDF5 COMPONENTS C HL REQUIRED)

# Ensure scikit-build modules
Expand Down
44 changes: 24 additions & 20 deletions buildscripts/build_dependencies.sh
Original file line number Diff line number Diff line change
Expand Up @@ -16,30 +16,34 @@ SCRIPT_DIR=$(realpath $(dirname $0))
set -a
ARGS=$@
. ${SCRIPT_DIR}/_build_getopts.sh ${ARGS}
NPROC=$(nproc)

set -e
cd $ROOT_DIR
NINJA_VER="1.11.1"

printf "*********************************************************\n"
printf "* FETCHING NINJA SOURCE *\n"
printf "*********************************************************\n"
printf "Copying files to ${DEPENDENCY_DIR}\n"
mkdir -p ${DEPENDENCY_DIR}
if [ ! -d ${DEPENDENCY_DIR}/ninja-${NINJA_VER} ]; then
[ -d ${DEPENDENCY_DIR}/zlib-* ] && rm -rf ${DEPENDENCY_DIR}/zlib-*
curl -L https://github.com/ninja-build/ninja/archive/refs/tags/v${NINJA_VER}.tar.gz | tar xvz -C ${DEPENDENCY_DIR}
fi
cd ${DEPENDENCY_DIR}/ninja-*
cmake -B build -S . -DCMAKE_INSTALL_PREFIX=${PREFIX}
cmake --build build
if [ -w ${PREFIX} ]; then
cmake --install build
else
sudo cmake --install build
if ! command -v ninja &> /dev/null; then
NINJA_VER="1.11.1"

printf "*********************************************************\n"
printf "* FETCHING NINJA SOURCE *\n"
printf "*********************************************************\n"
printf "Copying files to ${DEPENDENCY_DIR}\n"
mkdir -p ${DEPENDENCY_DIR}
if [ ! -d ${DEPENDENCY_DIR}/ninja-${NINJA_VER} ]; then
[ -d ${DEPENDENCY_DIR}/zlib-* ] && rm -rf ${DEPENDENCY_DIR}/zlib-*
curl -L https://github.com/ninja-build/ninja/archive/refs/tags/v${NINJA_VER}.tar.gz | tar xvz -C ${DEPENDENCY_DIR}
fi
cd ${DEPENDENCY_DIR}/ninja-*
cmake -B build -S . -DCMAKE_INSTALL_PREFIX=${PREFIX}
cmake --build build
if [ -w ${PREFIX} ]; then
cmake --install build
else
sudo cmake --install build
fi
fi

set -e
NPROC=$(nproc)

${SCRIPT_DIR}/build_libaec.sh ${ARGS}
${SCRIPT_DIR}/build_zlib.sh ${ARGS}
${SCRIPT_DIR}/build_hdf5.sh ${ARGS}
${SCRIPT_DIR}/build_netcdf-c.sh ${ARGS}
Expand Down
40 changes: 38 additions & 2 deletions buildscripts/build_hdf5.sh
Original file line number Diff line number Diff line change
Expand Up @@ -10,6 +10,12 @@
# of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details.
# You should have received a copy of the GNU General Public License along with Swiftest.
# If not, see: https://www.gnu.org/licenses.

HDF5_VER="1_14_2"
PLUGIN_VER="1.14.0"
ZLIB_VER="1.3"
AEC_VER="1.0.6"

SCRIPT_DIR=$(realpath $(dirname $0))
set -a
ARGS=$@
Expand All @@ -27,7 +33,6 @@ printf "Using ${OS} compilers:\nFC: ${FC}\nCC: ${CC}\nCXX: ${CXX}\n"
printf "Installing to ${PREFIX}\n"
printf "\n"

HDF5_VER="1_14_2"
printf "*********************************************************\n"
printf "* FETCHING HDF5 SOURCE *\n"
printf "*********************************************************\n"
Expand Down Expand Up @@ -63,8 +68,39 @@ printf "LDFLAGS: ${LDFLAGS}\n"
printf "*********************************************************\n"

cd ${DEPENDENCY_DIR}/hdfsrc
ZLIB_TGZ_NAME="zlib-${ZLIB_VER}.tar.gz"
ZLIB_TGZ_ORIGPATH="https://github.com/madler/zlib/releases/download/v${ZLIB_VER}/"
LIBAEC_TGZ_NAME="libaec-${AEC_VER}.tar.gz"
LIBAEC_TGZ_ORIGPATH="https://github.com/MathisRosenhauer/libaec/releases/download/v${AEC_VER}/"

HDF5_ROOT="${PREFIX}/HDF_Group/HDF5/1.14.2"
ZLIB_ROOT=${PREFIX}
cmake -B build -S . -G Ninja -DCMAKE_INSTALL_PREFIX=${PREFIX}
SZIP_ROOT=${PREFIX}
if [ $OS = "MacOSX" ]; then
ZLIB_LIBRARY="${ZLIB_ROOT}/lib/libz.dylib"
SZIP_LIBRARY="${SZIP_ROOT}/lib/libsz.dylib"
else
ZLIB_LIBRARY="${ZLIB_ROOT}/lib/libz.so"
SZIP_LIBRARY="${SZIP_ROOT}/lib/libsz.so"
fi

cmake -B build -C ./config/cmake/cacheinit.cmake -G Ninja \
-DCMAKE_INSTALL_PREFIX:PATH=${HDF5_ROOT} \
-DHDF5_ALLOW_EXTERNAL_SUPPORT:STRING="TGZ" \
-DBUILD_ZLIB_WITH_FETCHCONTENT:BOOL=ON \
-DZLIB_USE_LOCALCONTENT:BOOL=OFF \
-DZLIB_TGZ_ORIGNAME:STRING="${ZLIB_TGZ_NAME}" \
-DZLIB_TGZ_ORIGPATH:STRING="${ZLIB_TGZ_ORIGPATH}" \
-DHDF5_ENABLE_SZIP_SUPPORT:BOOL=ON \
-DBUILD_SZIP_WITH_FETCHCONTENT:BOOL=ON \
-DLIBAEC_USE_LOCALCONTENT:BOOL=OFF \
-DLIBAEC_TGZ_ORIGNAME:STRING="${LIBAEC_TGZ_NAME}" \
-DLIBAEC_TGZ_ORIGPATH:STRING="${LIBAEC_TGZ_ORIGPATH}" \
-DHDF5_ENABLE_PLUGIN_SUPPORT:BOOL=OFF \
-DHDF5_BUILD_CPP_LIB:BOOL=OFF \
-DHDF5_BUILD_FORTRAN:BOOL=OFF \
-DHDF5_BUILD_JAVA:BOOL=OFF .

cmake --build build -j${NPROC}
if [ -w ${PREFIX} ]; then
cmake --install build
Expand Down
69 changes: 69 additions & 0 deletions buildscripts/build_libaec.sh
Original file line number Diff line number Diff line change
@@ -0,0 +1,69 @@
#!/bin/bash
# This script will build all of the dependency libraries needed by Swiftest. Builds the following from source:
# Zlib, hdf5, netcdf-c, netcdf-fortran
#
# Copyright 2023 - David Minton
# This file is part of Swiftest.
# Swiftest is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License
# as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version.
# Swiftest is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty
# of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details.
# You should have received a copy of the GNU General Public License along with Swiftest.
# If not, see: https://www.gnu.org/licenses.
SCRIPT_DIR=$(realpath $(dirname $0))
set -a
ARGS=$@
. ${SCRIPT_DIR}/_build_getopts.sh ${ARGS}
. ${SCRIPT_DIR}/set_compilers.sh
# Get the OpenMP Libraries
if [ $OS = "MacOSX" ]; then
${SCRIPT_DIR}/get_lomp.sh ${ARGS}
fi

printf "*********************************************************\n"
printf "* STARTING DEPENDENCY BUILD *\n"
printf "*********************************************************\n"
printf "Using ${OS} compilers:\nFC: ${FC}\nCC: ${CC}\nCXX: ${CXX}\n"
printf "Installing to ${PREFIX}\n"
printf "\n"

AEC_VER="1.0.6"
LIBAEC_TGZ_NAME="libaec-${AEC_VER}.tar.gz"

printf "*********************************************************\n"
printf "* FETCHING AEC SOURCE *\n"
printf "*********************************************************\n"
printf "Copying files to ${DEPENDENCY_DIR}\n"
mkdir -p ${DEPENDENCY_DIR}
if [ ! -d ${DEPENDENCY_DIR}/aec-${ZLIB_VER} ]; then
[ -d ${DEPENDENCY_DIR}/aec-* ] && rm -rf ${DEPENDENCY_DIR}/aec-*

curl -L https://github.com/MathisRosenhauer/libaec/releases/download/v${AEC_VER}/${LIBAEC_TGZ_NAME}| tar xvz -C ${DEPENDENCY_DIR}
fi

printf "*********************************************************\n"
printf "* BUILDING AEC LIBRARY *\n"
printf "*********************************************************\n"
printf "LIBS: ${LIBS}\n"
printf "CFLAGS: ${CFLAGS}\n"
printf "CPPFLAGS: ${CPPFLAGS}\n"
printf "CPATH: ${CPATH}\n"
printf "LD_LIBRARY_PATH: ${LD_LIBRARY_PATH}\n"
printf "LDFLAGS: ${LDFLAGS}\n"
printf "*********************************************************\n"

cd ${DEPENDENCY_DIR}/libaec-*
mkdir build
cd build
cmake .. -DCMAKE_BUILD_TYPE=Release -DCMAKE_INSTALL_PREFIX=${PREFIX}
cmake --build build -j${NPROC}
if [ -w ${PREFIX} ]; then
make install
else
sudo make install
fi

if [ $? -ne 0 ]; then
printf "libaec could not be compiled.\n"
exit 1
fi
21 changes: 17 additions & 4 deletions buildscripts/build_netcdf-c.sh
Original file line number Diff line number Diff line change
Expand Up @@ -53,12 +53,25 @@ printf "HDF5_ROOT: ${HDF5_ROOT}\n"
printf "*********************************************************\n"

cd ${DEPENDENCY_DIR}/netcdf-c-*
cmake -B build -S . -G Ninja -DCMAKE_INSTALL_PREFIX=${PREFIX}
cmake --build build -j${NPROC}
NCDIR="${PREFIX}"
ZLIB_ROOT=${PREFIX}
cmake -B build -S . -G Ninja \
-DCMAKE_BUILD_TYPE:STRING="Release" \
-DHDF5_DIR:PATH=${HDF5_ROOT}/cmake \
-DCMAKE_INSTALL_PREFIX:STRING="${NCDIR}" \
-DENABLE_DAP:BOOL=OFF \
-DENABLE_BYTERANGE:BOOL=OFF \
-DENABLE_NCZARR:BOOL=OFF \
-DENABLE_NCZARR_FILTERS:BOOL=OFF \
-DENABLE_NCZARR_FILTER_TESTING:BOOL=OFF \
-DENABLE_NCZARR_FILTERS_TESTING:BOOL=OFF \
-DENABLE_LIBXML2:BOOL=OFF \

cmake --build build -j${NPROC}
if [ -w ${PREFIX} ]; then
cmake --install build
cmake --install build
else
sudo cmake --install build
sudo cmake --install build
fi

if [ $? -ne 0 ]; then
Expand Down
Loading

0 comments on commit d4c8dcb

Please sign in to comment.