build(options): Options propegate much more reliably
Build options such as build-python and build-fortran have much more predicatable and sensible behavior
This commit is contained in:
@@ -1,13 +1,20 @@
|
||||
# bring in all of the fourdst utility repositories
|
||||
|
||||
fourdst_sp = subproject('fourdst')
|
||||
fourdst_sp = subproject('fourdst',
|
||||
default_options:
|
||||
['build-tests=' + get_option('build-tests').to_string(),
|
||||
'build-python=' + get_option('build-python').to_string()
|
||||
]
|
||||
)
|
||||
|
||||
composition_dep = fourdst_sp.get_variable('composition_dep')
|
||||
log_dep = fourdst_sp.get_variable('log_dep')
|
||||
const_dep = fourdst_sp.get_variable('const_dep')
|
||||
config_dep = fourdst_sp.get_variable('config_dep')
|
||||
plugin_dep = fourdst_sp.get_variable('plugin_dep')
|
||||
|
||||
libcomposition = fourdst_sp.get_variable('libcomposition')
|
||||
libconst = fourdst_sp.get_variable('libconst')
|
||||
libconfig = fourdst_sp.get_variable('libconfig')
|
||||
liblogging = fourdst_sp.get_variable('liblogging')
|
||||
liblogging = fourdst_sp.get_variable('liblogging')
|
||||
libplugin = fourdst_sp.get_variable('libplugin')
|
||||
@@ -1,5 +0,0 @@
|
||||
libplugin_sp = subproject('libplugin')
|
||||
|
||||
plugin_dep = libplugin_sp.get_variable('plugin_dep')
|
||||
libplugin = libplugin_sp.get_variable('libplugin')
|
||||
|
||||
@@ -1,7 +1,6 @@
|
||||
cmake = import('cmake')
|
||||
|
||||
subdir('fourdst')
|
||||
subdir('libplugin')
|
||||
|
||||
subdir('sundials')
|
||||
|
||||
|
||||
@@ -18,7 +18,7 @@
|
||||
# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
|
||||
#
|
||||
# *********************************************************************** #
|
||||
project('GridFire', ['c', 'cpp', 'fortran'], version: 'v0.7.2_rc2', default_options: ['cpp_std=c++23'], meson_version: '>=1.5.0')
|
||||
project('GridFire', ['c', 'cpp', 'fortran'], version: 'v0.7.3_rc2', default_options: ['cpp_std=c++23'], meson_version: '>=1.5.0')
|
||||
|
||||
# Add default visibility for all C++ targets
|
||||
add_project_arguments('-fvisibility=default', language: 'cpp')
|
||||
@@ -55,13 +55,13 @@ if (build_fortran)
|
||||
error('The only supported fortran compiler for GridFire is gfortran (version >= 14.0), found ' + fc + '. GridFire has not been tested with any other compilers. You can disable this check with the -Dunsafe-fortran=true flag to try other compilers')
|
||||
endif
|
||||
endif
|
||||
if (meson.get_compiler('fortran').version().version_compare('<14.0'))
|
||||
error('gfortran version must be at least 14.0, found ' + meson.get_compiler('fortran').version())
|
||||
endif
|
||||
endif
|
||||
|
||||
|
||||
|
||||
if (meson.get_compiler('fortran').version().version_compare('<14.0'))
|
||||
error('gfortran version must be at least 14.0, found ' + meson.get_compiler('fortran').version())
|
||||
endif
|
||||
|
||||
# For Eigen
|
||||
add_project_arguments('-Wno-deprecated-declarations', language: 'cpp')
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
option('log-level', type: 'combo', choices: ['traceL3', 'traceL2', 'traceL1', 'debug', 'info', 'warning', 'error', 'critial'], value: 'info', description: 'Set the log level for the GridFire library')
|
||||
option('pkg-config', type: 'boolean', value: true, description: 'generate pkg-config file for GridFire (gridfire.pc)')
|
||||
option('build-python', type: 'boolean', value: true, description: 'build the python bindings so you can use GridFire from python')
|
||||
option('build-python', type: 'boolean', value: false, description: 'build the python bindings so you can use GridFire from python')
|
||||
option('build-tests', type: 'boolean', value: true, description: 'build the test suite')
|
||||
option('build-fortran', type: 'boolean', value: true, description: 'build fortran module support')
|
||||
option('build-fortran', type: 'boolean', value: false, description: 'build fortran module support')
|
||||
option('unsafe-fortran', type: 'boolean', value: false, description: 'Allow untested fortran compilers (compilers other than gfortran)')
|
||||
|
||||
5
src/extern/meson.build
vendored
5
src/extern/meson.build
vendored
@@ -23,4 +23,7 @@ gridfire_extern_dep = declare_dependency(
|
||||
|
||||
install_subdir('include/gridfire', install_dir: get_option('includedir'))
|
||||
|
||||
subdir('fortran')
|
||||
if get_option('build-fortran')
|
||||
message('Configuring Fortran bindings...')
|
||||
subdir('fortran')
|
||||
endif
|
||||
|
||||
@@ -59,6 +59,7 @@ gridfire_dep = declare_dependency(
|
||||
|
||||
install_subdir('include/gridfire', install_dir: get_option('includedir'))
|
||||
|
||||
message('Configuring C API...')
|
||||
subdir('extern')
|
||||
|
||||
if get_option('build-python')
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
[wrap-git]
|
||||
url = https://github.com/4D-STAR/fourdst
|
||||
revision = v0.9.8
|
||||
revision = v0.9.10
|
||||
depth = 1
|
||||
|
||||
@@ -1,4 +0,0 @@
|
||||
[wrap-git]
|
||||
url = https://github.com/4D-STAR/libplugin
|
||||
revision = v0.3.5
|
||||
depth = 1
|
||||
@@ -27,7 +27,7 @@ git clone --depth 1 "${REPO_URL}" "${TMPDIR}/project"
|
||||
cd "${TMPDIR}/project"
|
||||
|
||||
# --- macOS Build Configuration ---
|
||||
export MACOSX_DEPLOYMENT_TARGET=12.0
|
||||
export MACOSX_DEPLOYMENT_TARGET=15.0
|
||||
|
||||
PYTHON_VERSIONS=("3.8.20" "3.9.23" "3.10.18" "3.11.13" "3.12.11" "3.13.5" "3.13.5t" "3.14.0rc1" "3.14.0rc1t" 'pypy3.10-7.3.19' "pypy3.11-7.3.20")
|
||||
|
||||
@@ -54,9 +54,30 @@ for PY_VERSION in "${PYTHON_VERSIONS[@]}"; do
|
||||
"$PY" -m pip install --upgrade pip setuptools wheel meson meson-python delocate
|
||||
|
||||
CC=clang CXX=clang++ "$PY" -m pip wheel . \
|
||||
--config-settings=setup-args=-Dunity=on \
|
||||
-w "${WHEEL_DIR}" -vv
|
||||
|
||||
echo "➤ Sanitizing RPATHs before delocation..."
|
||||
|
||||
CURRENT_WHEEL=$(find "${WHEEL_DIR}" -name "*.whl" | head -n 1)
|
||||
|
||||
if [ -f "$CURRENT_WHEEL" ]; then
|
||||
"$PY" -m wheel unpack "$CURRENT_WHEEL" -d "${WHEEL_DIR}/unpacked"
|
||||
|
||||
UNPACKED_ROOT=$(find "${WHEEL_DIR}/unpacked" -mindepth 1 -maxdepth 1 -type d)
|
||||
|
||||
find "$UNPACKED_ROOT" -name "*.so" | while read -r SO_FILE; do
|
||||
echo " Processing: $SO_FILE"
|
||||
"$PY" "../../build-python/fix_rpaths.py" "$SO_FILE"
|
||||
done
|
||||
|
||||
"$PY" -m wheel pack "$UNPACKED_ROOT" -d "${WHEEL_DIR}"
|
||||
|
||||
rm -rf "${WHEEL_DIR}/unpacked"
|
||||
else
|
||||
echo "Error: No wheel found to sanitize!"
|
||||
exit 1
|
||||
fi
|
||||
|
||||
echo "➤ Repairing wheel(s) with delocate"
|
||||
delocate-wheel -w "${FINAL_WHEEL_DIR}" "${WHEEL_DIR}"/*.whl
|
||||
|
||||
|
||||
Reference in New Issue
Block a user