mirror of
https://github.com/IfcOpenShell/IfcOpenShell.git
synced 2026-09-21 12:13:43 +00:00
cmake: require just 2 boost component by default program_options, regex
Tested locally that build succeeds with all other components being header-only or unused by now. `regex` is only needed for Boost <1.76, see https://www.boost.org/releases/1.76.0/
This commit is contained in:
@@ -37,13 +37,9 @@ jobs:
|
||||
bison \
|
||||
gcc \
|
||||
g++ \
|
||||
libboost-date-time-dev \
|
||||
libboost-filesystem-dev \
|
||||
libboost-iostreams-dev \
|
||||
libboost-program-options-dev \
|
||||
libboost-regex-dev \
|
||||
libboost-system-dev \
|
||||
libboost-thread-dev \
|
||||
libeigen3-dev \
|
||||
libocct-data-exchange-dev \
|
||||
libocct-draw-dev \
|
||||
|
||||
@@ -80,13 +80,9 @@ jobs:
|
||||
|
||||
sudo apt-get install --no-install-recommends \
|
||||
git cmake gcc g++ \
|
||||
libboost-date-time-dev \
|
||||
libboost-filesystem-dev \
|
||||
libboost-iostreams-dev \
|
||||
libboost-program-options-dev \
|
||||
libboost-regex-dev \
|
||||
libboost-system-dev \
|
||||
libboost-thread-dev \
|
||||
libpcre3-dev libxml2-dev \
|
||||
libtbb-dev nlohmann-json3-dev \
|
||||
libocct-foundation-dev libocct-modeling-algorithms-dev libocct-modeling-data-dev libocct-ocaf-dev libocct-visualization-dev libocct-data-exchange-dev \
|
||||
|
||||
@@ -25,13 +25,9 @@ jobs:
|
||||
sudo apt update
|
||||
sudo apt-get install --no-install-recommends \
|
||||
git cmake gcc g++ \
|
||||
libboost-date-time-dev \
|
||||
libboost-filesystem-dev \
|
||||
libboost-iostreams-dev \
|
||||
libboost-program-options-dev \
|
||||
libboost-regex-dev \
|
||||
libboost-system-dev \
|
||||
libboost-thread-dev \
|
||||
python3-all-dev python3-pip \
|
||||
swig libpcre3-dev libxml2-dev \
|
||||
libtbb-dev nlohmann-json3-dev \
|
||||
|
||||
+10
-4
@@ -373,10 +373,12 @@ endif()
|
||||
if(WASM_BUILD)
|
||||
set(BOOST_COMPONENTS)
|
||||
else()
|
||||
# @todo review this, shouldn't this be all possible header-only now?
|
||||
# ... or rewritten using C++17 features?
|
||||
# set(BOOST_COMPONENTS system program_options regex thread date_time iostreams)
|
||||
set(BOOST_COMPONENTS program_options regex thread date_time iostreams)
|
||||
set(BOOST_COMPONENTS "")
|
||||
if(BUILD_IFCGEOM OR BUILD_CONVERT)
|
||||
# TODO: drop `regex` once BOOST_MIN_VERSION >= 1.76, where its matcher engine
|
||||
# became header-only (boostorg/regex@49e8067b) and no longer needs linking.
|
||||
set(BOOST_COMPONENTS ${BOOST_COMPONENTS} program_options regex)
|
||||
endif()
|
||||
endif()
|
||||
|
||||
if(USE_MMAP)
|
||||
@@ -389,6 +391,10 @@ if(USE_MMAP)
|
||||
endif()
|
||||
|
||||
find_package(Boost REQUIRED COMPONENTS ${BOOST_COMPONENTS})
|
||||
# TODO: drop this whole `if` (and the `regex` component above) once BOOST_MIN_VERSION >= 1.76.
|
||||
if(Boost_VERSION VERSION_GREATER_EQUAL 1.76)
|
||||
list(REMOVE_ITEM Boost_LIBRARIES ${Boost_REGEX_LIBRARY} Boost::regex)
|
||||
endif()
|
||||
# This is only needed for FindBoost, when libraries are just paths to the library files on the disk.
|
||||
# If Boost is found using cmake config, then all its Boost_LIBRARIES are targets
|
||||
# and automatically depend on the headers.
|
||||
|
||||
@@ -30,11 +30,8 @@ if(NOT "${IFCOPENSHELL_BOOST_USE_MULTITHREADED}" STREQUAL "")
|
||||
set(Boost_USE_MULTITHREADED ${IFCOPENSHELL_BOOST_USE_MULTITHREADED})
|
||||
endif()
|
||||
set(Boost_COMPONENTS
|
||||
system
|
||||
program_options
|
||||
regex
|
||||
thread
|
||||
date_time
|
||||
iostreams
|
||||
)
|
||||
find_dependency(Boost CONFIG COMPONENTS ${Boost_COMPONENTS})
|
||||
|
||||
@@ -1519,13 +1519,9 @@ if "boost" in targets:
|
||||
mode="bjam",
|
||||
build_tool_args=[
|
||||
f"--stagedir={Dependencies.get_install_dir('boost')}",
|
||||
"--with-system",
|
||||
"--with-program_options",
|
||||
"--with-regex",
|
||||
"--with-thread",
|
||||
"--with-date_time",
|
||||
"--with-iostreams",
|
||||
"--with-filesystem",
|
||||
# By default boost will keep ICU enabled, if it manages to find dev ICU dev package on the system.
|
||||
# Which then creates issues when during our executables packaging.
|
||||
# E.g. it ends up linking system's `libicudata.so.67`, so then we need to somehow detect and bundle
|
||||
|
||||
+1
-1
@@ -421,7 +421,7 @@ if /I "%VS_PLATFORM%"=="x64" (
|
||||
echo "Failed to identify architecture"
|
||||
GOTO :Error
|
||||
)
|
||||
set BOOST_LIBS=--with-system --with-regex --with-thread --with-program_options --with-date_time --with-iostreams --with-filesystem
|
||||
set BOOST_LIBS=--with-regex --with-program_options --with-iostreams --with-filesystem
|
||||
:: NOTE Boost is fast to build with limited set of libraries so build it always.
|
||||
cd "%DEPENDENCY_DIR%"
|
||||
call cecho.cmd 0 13 "Building %DEPENDENCY_NAME% %BOOST_LIBS% Please be patient, this will take a while."
|
||||
|
||||
@@ -307,11 +307,8 @@ def install_boost(
|
||||
sys.exit(1)
|
||||
|
||||
BOOST_LIBS = (
|
||||
"--with-system",
|
||||
"--with-program_options",
|
||||
"--with-regex",
|
||||
"--with-thread",
|
||||
"--with-date_time",
|
||||
"--with-iostreams",
|
||||
"--with-filesystem",
|
||||
)
|
||||
|
||||
Reference in New Issue
Block a user