diff --git a/buildscripts/_build_getopts.sh b/buildscripts/_build_getopts.sh index ac9e9586b..329d39ea4 100755 --- a/buildscripts/_build_getopts.sh +++ b/buildscripts/_build_getopts.sh @@ -13,9 +13,14 @@ set -a SCRIPT_DIR=$(realpath $(dirname $0)) ROOT_DIR=$(realpath ${SCRIPT_DIR}/..) +# Get platform and architecture +read -r OS ARCH < <($SCRIPT_DIR/get_platform.sh) + # Parse arguments USTMT="Usage: ${0} [-d /path/to/dependency/source] [-p /prefix/path] [-m MACOSX_DEPLOYMENT_TARGET]" -MACOSX_DEPLOYMENT_TARGET=${MACOSX_DEPLOYMENT_TARGET:-"$(sw_vers --ProductVersion)"} +if [ $OS = "MacOSX" ]; then + MACOSX_DEPLOYMENT_TARGET=${MACOSX_DEPLOYMENT_TARGET:-"$(sw_vers --ProductVersion)"} +fi while getopts ":d:p:m:h" ARG; do case "${ARG}" in @@ -44,7 +49,6 @@ while getopts ":d:p:m:h" ARG; do esac done -read -r OS ARCH < <($SCRIPT_DIR/get_platform.sh) BUILD_DIR=${BUILD_DIR:-$(mktemp -ut swiftest_build.XXXXXXXX)} PREFIX=${PREFIX:-${ROOT_DIR}} DEPENDENCY_DIR=${DEPENDENCY_DIR:-${BUILD_DIR}} diff --git a/buildscripts/build_dependencies.sh b/buildscripts/build_dependencies.sh index 8d8027aa6..ba978214c 100755 --- a/buildscripts/build_dependencies.sh +++ b/buildscripts/build_dependencies.sh @@ -16,19 +16,9 @@ SCRIPT_DIR=$(realpath $(dirname $0)) set -a ARGS=$@ . ${SCRIPT_DIR}/_build_getopts.sh ${ARGS} +NPROC=$(nproc) cd $ROOT_DIR -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" - -# Get the OpenMP Libraries -if [ $OS = "MacOSX" ]; then - ${SCRIPT_DIR}/get_lomp.sh ${ARGS} -fi set -e ${SCRIPT_DIR}/build_zlib.sh ${ARGS} diff --git a/buildscripts/build_hdf5.sh b/buildscripts/build_hdf5.sh index d351bd47d..98b3609a2 100755 --- a/buildscripts/build_hdf5.sh +++ b/buildscripts/build_hdf5.sh @@ -14,6 +14,18 @@ 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" HDF5_VER="1_14_2" printf "*********************************************************\n" @@ -51,20 +63,13 @@ printf "LDFLAGS: ${LDFLAGS}\n" printf "*********************************************************\n" cd ${DEPENDENCY_DIR}/hdfsrc -if [ $OS = "MacOSX" ]; then - read -r OS ARCH < <($SCRIPT_DIR/get_platform.sh) - if [ $ARCH = "arm64" ]; then - printf "Manually setting bin/config.sub to arm-apple-darwin\n" - printf "echo arm-apple-darwin" > bin/config.sub - fi -fi -COPTS="--enable-build-mode=production --enable-tests=no --enable-tools=no --disable-fortran --disable-java --disable-cxx --prefix=${PREFIX} --with-zlib=${PREFIX}" -./configure ${COPTS} -make +ZLIB_ROOT=${PREFIX} +cmake -B build -S . -G Ninja +cmake --build build -j${NPROC} if [ -w ${PREFIX} ]; then - make install + cmake --install build --prefix ${PREFIX} else - sudo make install + sudo cmake --install build --prefix ${PREFIX} fi if [ $? -ne 0 ]; then diff --git a/buildscripts/build_netcdf-c.sh b/buildscripts/build_netcdf-c.sh index 8f692fac1..addb84ec7 100755 --- a/buildscripts/build_netcdf-c.sh +++ b/buildscripts/build_netcdf-c.sh @@ -11,11 +11,21 @@ # 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" NC_VER="4.9.2" @@ -43,15 +53,12 @@ printf "HDF5_ROOT: ${HDF5_ROOT}\n" printf "*********************************************************\n" cd ${DEPENDENCY_DIR}/netcdf-c-* -COPTS="--disable-testsets --disable-nczarr --prefix=${PREFIX}" -printf "COPTS: ${COPTS}\n" -./configure $COPTS -make && make check - +cmake -B build -S . -G Ninja +cmake --build build -j${NPROC} if [ -w ${PREFIX} ]; then - make install + cmake --install build --prefix ${PREFIX} else - sudo make install + sudo cmake --install build --prefix ${PREFIX} fi if [ $? -ne 0 ]; then diff --git a/buildscripts/build_netcdf-fortran.sh b/buildscripts/build_netcdf-fortran.sh index aea5e71aa..42c5b6e7e 100755 --- a/buildscripts/build_netcdf-fortran.sh +++ b/buildscripts/build_netcdf-fortran.sh @@ -14,6 +14,18 @@ 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" NF_VER="4.6.1" printf "*********************************************************\n" @@ -24,7 +36,8 @@ if [ ! -d ${DEPENDENCY_DIR}/netcdf-fortran-${NF_VER} ]; then [ -d ${DEPENDENCY_DIR}/netcdf-fortran-* ] && rm -rf ${DEPENDENCY_DIR}/netcdf-fortran-* curl -s -L https://github.com/Unidata/netcdf-fortran/archive/refs/tags/v${NF_VER}.tar.gz | tar xvz -C ${DEPENDENCY_DIR} fi - +CFLAGS="$(nc-config --cflags) $CFLAGS" +LIBS="$(nc-config --libs) $LIBS" printf "\n" printf "*********************************************************\n" printf "* BUILDING NETCDF-FORTRAN LIBRARY *\n" @@ -38,12 +51,18 @@ printf "LDFLAGS: ${LDFLAGS}\n" printf "*********************************************************\n" cd ${DEPENDENCY_DIR}/netcdf-fortran-* -./configure --enable-large-file-tests=no --enable-static=no --enable-filter-test=no --prefix=${PREFIX} -make && make check i + +if [ $OS = "MacOSX" ]; then + netCDF_LIBRARIES="${PREFIX}/lib/libnetcdf.dylib" +else + netCDF_LIBRARIES="${PREFIX}/lib/libnetcdf.so" +fi +cmake -B build -S . -G Ninja -DnetCDF_INCLUDE_DIR="${PREFIX}/include" -DnetCDF_LIBRARIES="${netCDF_LIBRARIES}" +cmake --build build -j${NPROC} if [ -w ${PREFIX} ]; then - make install + cmake --install build --prefix ${PREFIX} else - sudo make install + sudo cmake --install build --prefix ${PREFIX} fi if [ $? -ne 0 ]; then diff --git a/buildscripts/build_zlib.sh b/buildscripts/build_zlib.sh index e21b75b47..79b145eb3 100755 --- a/buildscripts/build_zlib.sh +++ b/buildscripts/build_zlib.sh @@ -14,7 +14,18 @@ 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" ZLIB_VER="1.3" @@ -40,12 +51,12 @@ printf "LDFLAGS: ${LDFLAGS}\n" printf "*********************************************************\n" cd ${DEPENDENCY_DIR}/zlib-* -./configure --prefix=${PREFIX} -make +cmake -B build -S . -G Ninja +cmake --build build -j${NPROC} if [ -w ${PREFIX} ]; then - make install + cmake --install build --prefix ${PREFIX} else - sudo make install + sudo cmake --install build --prefix ${PREFIX} fi if [ $? -ne 0 ]; then diff --git a/buildscripts/set_compilers.sh b/buildscripts/set_compilers.sh index 7523628ee..85495b40d 100755 --- a/buildscripts/set_compilers.sh +++ b/buildscripts/set_compilers.sh @@ -13,9 +13,8 @@ # 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. -# Parse arguments case "$OS" in - Linux|MacOSX) + Linux|MacOSX|Intel) ;; *) echo "Unknown compiler type: $OS" @@ -25,7 +24,6 @@ case "$OS" in ;; esac - set -a # Only replace compiler definitions if they are not already set case $OS in @@ -51,6 +49,12 @@ case $OS in RANLIB=${COMPILER_PREFIX}/bin/ranlib LDFLAGS="-Wl,-no_compact_unwind" ;; + Intel) + FC=$(command -v ifx) + CC=$(command -v icx) + CXX=$(command -v icpx) + CPP=$(command -v cpp) + ;; *) printf "Unknown compiler type: ${OS}\n" echo "Valid options are Intel, Linux, or MacOSX" @@ -59,5 +63,4 @@ case $OS in ;; esac F77=${FC} - -printf "Using ${OS} compilers:\nFC: ${FC}\nCC: ${CC}\nCXX: ${CXX}\n\n" \ No newline at end of file +F95=${FC} \ No newline at end of file diff --git a/pyproject.toml b/pyproject.toml index de06c6ce6..b0571eaff 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -93,11 +93,12 @@ CPP="/usr/bin/cpp" AR="/usr/bin/ar" NM="/usr/bin/nm" RANLIB="/usr/bin/ranlib" +netCDF-Fortran_DIR="${PREFIX}/lib/cmake/netCDF" [tool.cibuildwheel.macos] before-all = [ "brew install coreutils", - "LIBS=\"\" buildscripts/build_dependencies.sh -p ${PREFIX} -d ${PREFIX}/build -m ${MACOSX_DEPLOYMENT_TARGET}" + "LIBS=\"\" buildscripts/build_dependencies.sh -p ${PREFIX} -d ${HOME}/Downloads -m ${MACOSX_DEPLOYMENT_TARGET}" ] [tool.cibuildwheel.linux] @@ -110,6 +111,7 @@ NETCDF_FORTRAN_HOME="/usr/local" NETCDF_INCLUDE="/usr/local/include" LD_LIBRARY_PATH="/usr/local/lib:/project/lib" CPATH="/usr/local/include:/project/include" +netCDF-Fortran_DIR="${PREFIX}/lib/cmake/netCDF" [[tool.scikit-build.generate]] path = "version.txt"