From e72484af850f60c071d81c9c3622e5a66559a714 Mon Sep 17 00:00:00 2001 From: MintoDA1 <51412913+MintoDA1@users.noreply.github.com> Date: Tue, 15 Aug 2023 13:20:14 -0400 Subject: [PATCH] More tweaks to build scripts for robustness --- .gitignore | 2 ++ CMakeLists.txt | 2 +- buildscripts/build_all.sh | 29 ++++++++++++++--------------- buildscripts/build_dependencies.sh | 29 ++++++++++++++++++++--------- buildscripts/build_swiftest.sh | 23 +++++++++++++++++++---- setup.py | 1 + src/CMakeLists.txt | 4 ++-- swiftest/simulation_class.py | 1 - 8 files changed, 59 insertions(+), 32 deletions(-) diff --git a/.gitignore b/.gitignore index dff4272a8..fad43d522 100644 --- a/.gitignore +++ b/.gitignore @@ -27,6 +27,8 @@ dump* !requirements.txt !pyproject.toml **/_skbuild +*.egg* +swiftest-* #Documentation diff --git a/CMakeLists.txt b/CMakeLists.txt index f82ba3881..29364ff6b 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -11,7 +11,7 @@ ################################################## # Define the project and the depencies that it has ################################################## -CMAKE_MINIMUM_REQUIRED(VERSION 3.5.0...3.27.1) +CMAKE_MINIMUM_REQUIRED(VERSION 3.6.0...3.27.1) # Get version stored in text file FILE(READ "version.txt" VERSION) diff --git a/buildscripts/build_all.sh b/buildscripts/build_all.sh index e91d5cc0f..7647c236f 100755 --- a/buildscripts/build_all.sh +++ b/buildscripts/build_all.sh @@ -31,30 +31,28 @@ cd ${ROOT_DIR} VERSION=$( cat version.txt ) echo "Building Swiftest version ${VERSION} for ${OS}-${ARCH}" -if command -v docker &> /dev/null; then - echo "Docker detected" +# if command -v docker &> /dev/null; then +# echo "Docker detected" - cmd="docker build --tag swiftest:latest --tag swiftest:${VERSION} --file=dockerfile.${COMPILER} --output=${ROOT_DIR}/dist/ ." - echo "Executing Docker build:\n${cmd}" - eval "$cmd" - exit 0 -else - echo "Docker not detected" -fi +# cmd="docker build --tag swiftest:latest --tag swiftest:${VERSION} --file=dockerfile.${COMPILER} --output=${ROOT_DIR}/dist/ ." +# echo "Executing Docker build:\n${cmd}" +# eval "$cmd" +# exit 0 +# else +# echo "Docker not detected" +# fi case $OS in - # Determine if Docker is available - - ;; MacOSX) COMPILER="GNU-Mac" export MACOSX_DEPLOYMENT_TARGET=13 export LDFLAGS="-Wl,-no_compact_unwind" - echo "Building for Mac assumes using Homebrew gfortran-13, gcc-13, and g++13. Install these first if necessary." + ;; + Linux) + COMPILER="GNU-Linux" ;; *) - echo "Swiftest is currently not configured to build for platform ${OS}-${ARCH}" - exit 1 + echo "This script is not tested for ${OS}-${ARCH}" ;; esac @@ -63,3 +61,4 @@ ${SCRIPT_DIR}/build_dependencies.sh -c $COMPILER -p ${PREFIX} && \ ${SCRIPT_DIR}/build_swiftest.sh -c $COMPILER -p ${PREFIX} + diff --git a/buildscripts/build_dependencies.sh b/buildscripts/build_dependencies.sh index 266429f6f..df3155a06 100755 --- a/buildscripts/build_dependencies.sh +++ b/buildscripts/build_dependencies.sh @@ -53,17 +53,31 @@ printf "*********************************************************\n" printf "Using ${COMPILER} compilers:\nFC: ${FC}\nCC: ${CC}\nCXX: ${CXX}\n" printf "Installing to ${PREFIX}\n" printf "\n" -export CPPFLAGS="-I{PREFIX}/include" -export LDFLAGS="${LDFLAGS} -L${PREFIX}/lib" + export HDF5_ROOT="${PREFIX}" export HDF5_LIBDIR="${HDF5_ROOT}/lib" export HDF5_INCLUDE_DIR="${HDF5_ROOT}/include" export HDF5_PLUGIN_PATH="${HDF5_LIBDIR}/plugin" export NCDIR="${PREFIX}" export NFDIR="${PREFIX}" -export LD_LIBRARY_PATH="${PREFIX}/lib" -export LDFLAGS="-L${PREFIX}/lib" -export CPPFLAGS="-I${PREFIX}/include" +export LD_LIBRARY_PATH="${PREFIX}/lib:${LD_LIBRARY_PATH}" +export CPPFLAGS="${CPPFLAGS} -isystem {$PREFIX}/include" +export LDFLAGS="${LDFLAGS} -L${PREFIX}/lib" +export CPATH="${PREFIX}/include:${CPATH}" +export CFLAGS="${CFLAGS} -Wno-unused-but-set-variable" + +if [ $COMPILER = "GNU-Mac" ]; then + export MACOSX_DEPLOYMENT_TARGET=13 + export LDFLAGS="${LDFLAGS} -Wl,-no_compact_unwind" + export CFLAGS="${CFLAGS} -Wno-deprecated-non-prototype" +fi + +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" printf "* BUILDING ZLIB STATIC LIBRARY *\n" @@ -108,10 +122,7 @@ if [ ! $COMPILER = "GNU-Mac" ]; then COPTS="${COPTS} --disable-libxml2" fi printf "COPTS: ${COPTS}\n" -printf "LIBS: ${LIBS}\n" -printf "CFLAGS: ${CFLAGS}\n" -printf "LD_LIBRARY_PATH: ${LD_LIBRARY_PATH}\n" -printf "LDFLAGS: ${LDFLAGS}\n" + ./configure $COPTS make && make check && make install diff --git a/buildscripts/build_swiftest.sh b/buildscripts/build_swiftest.sh index 7a79daf14..7e4ef7b71 100755 --- a/buildscripts/build_swiftest.sh +++ b/buildscripts/build_swiftest.sh @@ -47,10 +47,17 @@ printf "Using ${COMPILER} compilers:\nFC: ${FC}\nCC: ${CC}\nCXX: ${CXX}\n\n" printf "Installing to ${PREFIX}\n" printf "Dependency libraries in ${PREFIX}\n" export DEPDIR=$PREFIX -export CPATH=$DEPDIR/include export NETCDF_FORTRAN_HOME=$DEPDIR +export LD_LIBRARY_PATH="${LD_LIBRARY_PATH}:${DEPDIR}/lib" +export CPPFLAGS="${CPPFLAGS} -I{$DEPDIR}/include" +export LDFLAGS="${LDFLAGS} -L${DEPDIR}/lib" +export CPATH="${CPATH}:${DEPDIR}/include" + +if [ $COMPILER = "GNU-Mac" ]; then + export MACOSX_DEPLOYMENT_TARGET=13 + export LDFLAGS="${LDFLAGS} -Wl,-no_compact_unwind" +fi -export LD_LIBRARY_PATH="${DEPDIR}/lib:${LD_LIBRARY_PATH}" NFCFG="${DEPDIR}/bin/nf-config" if command -v $NFCFG &> /dev/null; then export LIBS=$($NFCFG --flibs) @@ -72,8 +79,16 @@ else export FFLAGS="${CFLAGS}" export SKBUILD_CONFIGURE_OPTIONS="${SKBUILD_CONFIGURE_OPTIONS} -DMACHINE_CODE_VALUE=\"generic\"" fi + +read -r OS ARCH < <($SCRIPT_DIR/get_platform.sh) +echo $OS $ARCH +if [ $OS = "MacOSX" ] && [ $ARCH = "arm64" ]; then + printf "OpenMP not supported on Apple M1 Silicon quite yet\n" + export SKBUILD_CONFIGURE_OPTIONS="${SKBUILD_CONFIGURE_OPTIONS} -DUSE_OPENMP=OFF" +fi + cd $ROOT_DIR - python3 -m pip install build pip -python3 -m build --wheel +python3 -m build +python3 -m pip install . -v diff --git a/setup.py b/setup.py index def08d578..43828867c 100644 --- a/setup.py +++ b/setup.py @@ -60,6 +60,7 @@ 'astropy>=5.1', 'astroquery>=0.4.6', 'tqdm>=4.65.0', + 'py>=1.11' ], packages=['swiftest'], test_suite="swiftest.tests", diff --git a/src/CMakeLists.txt b/src/CMakeLists.txt index 59a89a4b6..f4fe40861 100644 --- a/src/CMakeLists.txt +++ b/src/CMakeLists.txt @@ -151,8 +151,9 @@ ADD_LIBRARY(${SWIFTEST_LIBRARY} ${SWIFTEST_src}) SET(SWIFTEST_DRIVER swiftest_driver) ADD_EXECUTABLE(${SWIFTEST_DRIVER} ${DRIVER_src}) -TARGET_INCLUDE_DIRECTORIES(${SWIFTEST_DRIVER} PUBLIC ${NETCDF_INCLUDE_DIR}) +MESSAGE(STATUS "NetCDF Include directory: ${NETCDF_INCLUDE_DIR}") TARGET_INCLUDE_DIRECTORIES(${SWIFTEST_LIBRARY} PUBLIC ${NETCDF_INCLUDE_DIR}) +TARGET_INCLUDE_DIRECTORIES(${SWIFTEST_DRIVER} PUBLIC ${NETCDF_INCLUDE_DIR}) IF (BUILD_SHARED_LIBS) TARGET_LINK_LIBRARIES(${SWIFTEST_LIBRARY} PUBLIC ${NETCDF_LIBRARIES}) @@ -174,7 +175,6 @@ IF(USE_COARRAY) SET_PROPERTY(TARGET ${SWIFTEST_LIBRARY} ${SWIFTEST_DRIVER} APPEND_STRING PROPERTY LINK_FLAGS "${Coarray_Fortran_FLAGS} ") ENDIF(USE_COARRAY) - # Check to see if the compiler allows for local-spec in do concurrent statements. Set a preprocessor variable if it does IF (USE_OPENMP) SET(TESTFILE "${CMAKE_BINARY_DIR}${CMAKE_FILES_DIRECTORY}") diff --git a/swiftest/simulation_class.py b/swiftest/simulation_class.py index 678231115..ba1d411de 100644 --- a/swiftest/simulation_class.py +++ b/swiftest/simulation_class.py @@ -14,7 +14,6 @@ from swiftest import init_cond from swiftest import tool from swiftest import constants -from swiftest import driver from swiftest import __file__ as _pyfile import json import os