@@ -14,17 +14,47 @@ export PYTHON="python${PYTHON_VERSION}"
1414
1515if [ " $( uname) " == " Linux" ]; then
1616 # manylinux2014 is based on CentOS 7, so use yum to install dependencies
17- yum install -y wget
18-
19- # Install Boost from source
20- wget https://archives.boost.io/release/1.87.0/source/boost_1_87_0.tar.gz --quiet
21- tar -xzf boost_1_87_0.tar.gz
22- cd boost_1_87_0
23- ./bootstrap.sh --prefix=/opt/boost
24- ./b2 install --prefix=/opt/boost --with=all
25- cd ..
17+ yum install -y wget doxygen
2618elif [ " $( uname) " == " Darwin" ]; then
27- brew install wget cmake boost
19+ brew install cmake doxygen
20+
21+ # If MACOSX_DEPLOYMENT_TARGET is not explicitly set, default to the version of the host system.
22+ if [[ -z " ${MACOSX_DEPLOYMENT_TARGET} " ]]; then
23+ export MACOSX_DEPLOYMENT_TARGET=" $( sw_vers -productVersion | cut -d ' .' -f 1-2) "
24+ fi
25+ fi
26+
27+ # Install Boost from source
28+ wget https://archives.boost.io/release/1.87.0/source/boost_1_87_0.tar.gz --quiet
29+ tar -xzf boost_1_87_0.tar.gz
30+ cd boost_1_87_0
31+
32+ BOOST_PREFIX=" $HOME /opt/boost"
33+ ./bootstrap.sh --prefix=${BOOST_PREFIX}
34+
35+ if [ " $( uname) " == " Linux" ]; then
36+ ./b2 install --prefix=${BOOST_PREFIX} --with=all -d0
37+ elif [ " $( uname) " == " Darwin" ]; then
38+ ./b2 install --prefix=${BOOST_PREFIX} --with=all -d0 \
39+ cxxflags=" -mmacosx-version-min=${MACOSX_DEPLOYMENT_TARGET} " \
40+ linkflags=" -mmacosx-version-min=${MACOSX_DEPLOYMENT_TARGET} "
41+ fi
42+ cd ..
43+
44+ # Export paths so CMake or build system can find Boost
45+ export BOOST_ROOT=" ${BOOST_PREFIX} "
46+ export BOOST_INCLUDEDIR=" ${BOOST_PREFIX} /include"
47+ export BOOST_LIBRARYDIR=" ${BOOST_PREFIX} /lib"
48+
49+ # Ensure runtime linker can find Boost libraries
50+ export LD_LIBRARY_PATH=" ${BOOST_LIBRARYDIR} :$LD_LIBRARY_PATH " # For Linux
51+ export REPAIR_LIBRARY_PATH=" ${BOOST_LIBRARYDIR} :$DYLD_LIBRARY_PATH " # For macOS, REPAIR_LIBRARY_PATH is used by delocate
52+
53+ if [ " $( uname) " == " Darwin" ]; then
54+ # Explicitly add rpath to Boost dylibs so delocate can find them
55+ for dylib in ${BOOST_LIBRARYDIR} /* .dylib; do
56+ install_name_tool -add_rpath " @loader_path" " $dylib "
57+ done
2858fi
2959
3060$( which $PYTHON ) -m pip install -r $PROJECT_DIR /python/dev_requirements.txt
@@ -48,11 +78,15 @@ cmake $PROJECT_DIR \
4878 -DGTSAM_PYTHON_VERSION=$PYTHON_VERSION \
4979 -DPYTHON_EXECUTABLE:FILEPATH=$( which $PYTHON ) \
5080 -DGTSAM_ALLOW_DEPRECATED_SINCE_V43=OFF \
51- -DCMAKE_INSTALL_PREFIX=$PROJECT_DIR /gtsam_install
81+ -DCMAKE_INSTALL_PREFIX=$PROJECT_DIR /gtsam_install \
82+ -DGTSAM_GENERATE_DOC_XML=1 \
83+ -DGTWRAP_ADD_DOCSTRINGS=ON
5284
53- cd $PROJECT_DIR /build/python
85+ # Generate Doxygen XML documentation
86+ doxygen build/doc/Doxyfile
5487
5588# Install the Python wrapper module and generate Python stubs
89+ cd $PROJECT_DIR /build/python
5690if [ " $( uname) " == " Linux" ]; then
5791 make -j $( nproc) install
5892 make -j $( nproc) python-stubs
0 commit comments