Files
haikuports/dev-libs/boost/boost1.88-1.88.0.recipe
2025-07-21 14:26:43 +00:00

262 lines
10 KiB
Bash
Raw Blame History

This file contains invisible Unicode characters
This file contains invisible Unicode characters that are indistinguishable to humans but may be processed differently by a computer. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
SUMMARY="A set of libraries for the C++ programming language"
DESCRIPTION="Boost is a set of libraries for the C++ programming language \
that provide support for tasks and structures such as linear algebra, \
pseudorandom number generation, multithreading, image processing, regular \
expressions, and unit testing. It contains over eighty individual libraries."
HOMEPAGE="https://www.boost.org/"
SOURCE_URI="https://archives.boost.io/release/$portVersion/source/boost_${portVersion//./_}.tar.bz2"
CHECKSUM_SHA256="46d9d2c06637b219270877c9e16155cbd015b6dc84349af064c088e9b5b12f7b"
REVISION="3"
LICENSE="Boost v1.0"
COPYRIGHT="1993-2002 Christopher Seiwald and Perforce Software, Inc.
1998-2018 Beman Dawes
2001 David Turner
2001-2004 David Abrahams
2002-2019 Rene Rivera
2003-2015 Vladimir Prus"
SOURCE_DIR="boost_${portVersion//./_}"
PATCHES="boost1.88-$portVersion.patchset"
ARCHITECTURES="all !x86_gcc2"
SECONDARY_ARCHITECTURES="x86"
libVersion="$portVersion"
libVersionCompat="$libVersion compat >= $libVersion"
PROVIDES="
boost1.88$secondaryArchSuffix = $portVersion
lib:libboost_atomic$secondaryArchSuffix = $libVersionCompat
lib:libboost_charconv$secondaryArchSuffix = $libVersionCompat
lib:libboost_chrono$secondaryArchSuffix = $libVersionCompat
lib:libboost_container$secondaryArchSuffix = $libVersionCompat
lib:libboost_context$secondaryArchSuffix = $libVersionCompat
lib:libboost_contract$secondaryArchSuffix = $libVersionCompat
lib:libboost_coroutine$secondaryArchSuffix = $libVersionCompat
lib:libboost_date_time$secondaryArchSuffix = $libVersionCompat
lib:libboost_fiber$secondaryArchSuffix = $libVersionCompat
lib:libboost_filesystem$secondaryArchSuffix = $libVersionCompat
lib:libboost_graph$secondaryArchSuffix = $libVersionCompat
lib:libboost_iostreams$secondaryArchSuffix = $libVersionCompat
lib:libboost_json$secondaryArchSuffix = $libVersionCompat
lib:libboost_locale$secondaryArchSuffix = $libVersionCompat
lib:libboost_log_setup$secondaryArchSuffix = $libVersionCompat
lib:libboost_log$secondaryArchSuffix = $libVersionCompat
lib:libboost_math_c99$secondaryArchSuffix = $libVersionCompat
lib:libboost_math_c99f$secondaryArchSuffix = $libVersionCompat
lib:libboost_math_tr1$secondaryArchSuffix = $libVersionCompat
lib:libboost_math_tr1f$secondaryArchSuffix = $libVersionCompat
lib:libboost_nowide$secondaryArchSuffix = $libVersionCompat
lib:libboost_prg_exec_monitor$secondaryArchSuffix = $libVersionCompat
lib:libboost_process$secondaryArchSuffix = $libVersionCompat
lib:libboost_program_options$secondaryArchSuffix = $libVersionCompat
lib:libboost_random$secondaryArchSuffix = $libVersionCompat
lib:libboost_regex$secondaryArchSuffix = $libVersionCompat
lib:libboost_serialization$secondaryArchSuffix = $libVersionCompat
lib:libboost_stacktrace_basic$secondaryArchSuffix = $libVersionCompat
lib:libboost_stacktrace_noop$secondaryArchSuffix = $libVersionCompat
lib:libboost_system$secondaryArchSuffix = $libVersionCompat
lib:libboost_thread$secondaryArchSuffix = $libVersionCompat
lib:libboost_timer$secondaryArchSuffix = $libVersionCompat
lib:libboost_type_erasure$secondaryArchSuffix = $libVersionCompat
lib:libboost_unit_test_framework$secondaryArchSuffix = $libVersionCompat
lib:libboost_url$secondaryArchSuffix = $libVersionCompat
lib:libboost_wave$secondaryArchSuffix = $libVersionCompat
lib:libboost_wserialization$secondaryArchSuffix = $libVersionCompat
"
REQUIRES="
haiku$secondaryArchSuffix
lib:libbz2$secondaryArchSuffix
lib:libiconv$secondaryArchSuffix
lib:libicudata$secondaryArchSuffix
lib:libicui18n$secondaryArchSuffix
lib:libicuuc$secondaryArchSuffix
lib:liblzma$secondaryArchSuffix
lib:libquadmath$secondaryArchSuffix
lib:libz$secondaryArchSuffix
lib:libzstd$secondaryArchSuffix
"
# List of devel entries matching an actual library (for use in prepareInstalledDevelLibs)
# Boost also provides header-only libraries (because templates)
devel_libs="
devel:libboost_atomic$secondaryArchSuffix = $libVersionCompat
devel:libboost_charconv$secondaryArchSuffix = $libVersionCompat
devel:libboost_chrono$secondaryArchSuffix = $libVersionCompat
devel:libboost_container$secondaryArchSuffix = $libVersionCompat
devel:libboost_context$secondaryArchSuffix = $libVersionCompat
devel:libboost_contract$secondaryArchSuffix = $libVersionCompat
devel:libboost_coroutine$secondaryArchSuffix = $libVersionCompat
devel:libboost_date_time$secondaryArchSuffix = $libVersionCompat
devel:libboost_exception$secondaryArchSuffix = $libVersionCompat
devel:libboost_fiber$secondaryArchSuffix = $libVersionCompat
devel:libboost_filesystem$secondaryArchSuffix = $libVersionCompat
devel:libboost_graph$secondaryArchSuffix = $libVersionCompat
devel:libboost_iostreams$secondaryArchSuffix = $libVersionCompat
devel:libboost_json$secondaryArchSuffix = $libVersionCompat
devel:libboost_locale$secondaryArchSuffix = $libVersionCompat
devel:libboost_log_setup$secondaryArchSuffix = $libVersionCompat
devel:libboost_log$secondaryArchSuffix = $libVersionCompat
devel:libboost_nowide$secondaryArchSuffix = $libVersionCompat
devel:libboost_prg_exec_monitor$secondaryArchSuffix = $libVersionCompat
devel:libboost_process$secondaryArchSuffix = $libVersionCompat
devel:libboost_program_options$secondaryArchSuffix = $libVersionCompat
devel:libboost_random$secondaryArchSuffix = $libVersionCompat
devel:libboost_regex$secondaryArchSuffix = $libVersionCompat
devel:libboost_serialization$secondaryArchSuffix = $libVersionCompat
devel:libboost_stacktrace_basic$secondaryArchSuffix = $libVersionCompat
devel:libboost_stacktrace_noop$secondaryArchSuffix = $libVersionCompat
devel:libboost_system$secondaryArchSuffix = $libVersionCompat
devel:libboost_test_exec_monitor$secondaryArchSuffix = $libVersionCompat
devel:libboost_thread$secondaryArchSuffix = $libVersionCompat
devel:libboost_timer$secondaryArchSuffix = $libVersionCompat
devel:libboost_type_erasure$secondaryArchSuffix = $libVersionCompat
devel:libboost_unit_test_framework$secondaryArchSuffix = $libVersionCompat
devel:libboost_url$secondaryArchSuffix = $libVersionCompat
devel:libboost_wave$secondaryArchSuffix = $libVersionCompat
devel:libboost_wserialization$secondaryArchSuffix = $libVersionCompat
"
PROVIDES_devel="
boost1.88${secondaryArchSuffix}_devel = $portVersion
$devel_libs
devel:libboost_config$secondaryArchSuffix = $libVersionCompat
"
REQUIRES_devel="
boost1.88$secondaryArchSuffix == $portVersion base
"
CONFLICTS_devel="
boost169${secondaryArchSuffix}_devel
boost170${secondaryArchSuffix}_devel
boost1.83${secondaryArchSuffix}_devel
boost1.85${secondaryArchSuffix}_devel
boost1.87${secondaryArchSuffix}_devel
"
ARCHITECTURES_doc="any"
PROVIDES_doc="
boost1.88_doc = $portVersion
"
REPLACES_doc="
boost1.88_docs
boost1.88_x86_docs
"
BUILD_REQUIRES="
haiku${secondaryArchSuffix}_devel
devel:libbz2$secondaryArchSuffix
devel:libiconv$secondaryArchSuffix
devel:libicudata$secondaryArchSuffix >= 74
devel:libicui18n$secondaryArchSuffix >= 74
devel:libicuuc$secondaryArchSuffix >= 74
devel:liblzma$secondaryArchSuffix
devel:libz$secondaryArchSuffix
devel:libzstd$secondaryArchSuffix
"
BUILD_PREREQUIRES="
cmd:addr2line$secondaryArchSuffix
cmd:find
cmd:gcc$secondaryArchSuffix
cmd:ld$secondaryArchSuffix
cmd:sed
cmd:which
"
defineDebugInfoPackage boost1.88$secondaryArchSuffix \
"$libDir"/libboost_atomic.so.$libVersion \
"$libDir"/libboost_charconv.so.$libVersion \
"$libDir"/libboost_chrono.so.$libVersion \
"$libDir"/libboost_container.so.$libVersion \
"$libDir"/libboost_context.so.$libVersion \
"$libDir"/libboost_contract.so.$libVersion \
"$libDir"/libboost_coroutine.so.$libVersion \
"$libDir"/libboost_date_time.so.$libVersion \
"$libDir"/libboost_fiber.so.$libVersion \
"$libDir"/libboost_filesystem.so.$libVersion \
"$libDir"/libboost_graph.so.$libVersion \
"$libDir"/libboost_iostreams.so.$libVersion \
"$libDir"/libboost_json.so.$libVersion \
"$libDir"/libboost_locale.so.$libVersion \
"$libDir"/libboost_log_setup.so.$libVersion \
"$libDir"/libboost_log.so.$libVersion \
"$libDir"/libboost_nowide.so.$libVersion \
"$libDir"/libboost_prg_exec_monitor.so.$libVersion \
"$libDir"/libboost_process.so.$libVersion \
"$libDir"/libboost_program_options.so.$libVersion \
"$libDir"/libboost_random.so.$libVersion \
"$libDir"/libboost_regex.so.$libVersion \
"$libDir"/libboost_serialization.so.$libVersion \
"$libDir"/libboost_stacktrace_basic.so.$libVersion \
"$libDir"/libboost_stacktrace_noop.so.$libVersion \
"$libDir"/libboost_system.so.$libVersion \
"$libDir"/libboost_thread.so.$libVersion \
"$libDir"/libboost_timer.so.$libVersion \
"$libDir"/libboost_type_erasure.so.$libVersion \
"$libDir"/libboost_unit_test_framework.so.$libVersion \
"$libDir"/libboost_url.so.$libVersion \
"$libDir"/libboost_wave.so.$libVersion \
"$libDir"/libboost_wserialization.so.$libVersion
BUILD()
{
./bootstrap.sh \
--with-icu \
--prefix=$prefix \
--exec-prefix=$binDir \
--libdir=$libDir \
--includedir=$includeDir
}
INSTALL()
{
./b2 -q $jobArgs \
--without-graph_parallel \
--without-mpi \
--without-python \
--enable-parallel-mark \
--enable-threads=posix \
--enable-thread-local-alloc \
toolset=gcc \
pch=off \
inlining=on \
threading=multi \
variant=release \
link=shared \
runtime-link=shared \
boost.stacktrace.from_exception=off \
install
# cleanup boost_predef/tools/check ?
rm -rf $prefix/share
# install documentation
mkdir -p $developDocDir
cp -r doc/html/* $developDocDir
prepareInstalledDevelLibs `echo "$devel_libs" | sed -n \
-e "s/devel:\(.*\)$secondaryArchSuffix =.*/\1/p"`
# Correct boost cmake static files
# https://github.com/boostorg/boost_install/issues/49
for i in $(find $libDir/cmake -name "libboost_*-variant-static.cmake"); do
echo "Replacing LIBDIR in $i";
sed -i "s%\${_BOOST_LIBDIR}%$prefix/$relativeDevelopLibDir%g" $i;
done;
packageEntries doc \
$developDocDir
packageEntries devel \
$developDir \
$libDir/cmake
}
# From Gentoo: the tests will never fail because these are not intended as sanity
# tests at all.
# Nuked the tests after 26200 targets were done (and still wasn't finished)
TEST()
{
cd status
../b2 $jobArgs
}