summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMichał Górny <mgorny@gentoo.org>2024-01-17 17:58:46 +0100
committerMichał Górny <mgorny@gentoo.org>2024-01-17 18:14:51 +0100
commit075397e56bf9902d665175ff1ca5d586ceef8a5b (patch)
treedf499d6aad03b95b18fa3a58188bb3d82cb667a6 /dev-build/b2
parentMove {sys-devel → dev-build}/qconf (diff)
downloadgentoo-075397e56bf9902d665175ff1ca5d586ceef8a5b.tar.gz
gentoo-075397e56bf9902d665175ff1ca5d586ceef8a5b.tar.bz2
gentoo-075397e56bf9902d665175ff1ca5d586ceef8a5b.zip
Move {dev-util → dev-build}/b2
Signed-off-by: Michał Górny <mgorny@gentoo.org> Closes: https://github.com/gentoo/gentoo/pull/34867 Signed-off-by: Michał Górny <mgorny@gentoo.org>
Diffstat (limited to 'dev-build/b2')
-rw-r--r--dev-build/b2/Manifest2
-rw-r--r--dev-build/b2/b2-4.10.1.ebuild70
-rw-r--r--dev-build/b2/b2-5.0.0.ebuild72
-rw-r--r--dev-build/b2/files/b2-4.9.2-add-none-feature-options.patch22
-rw-r--r--dev-build/b2/files/b2-4.9.2-darwin-gentoo-toolchain.patch16
-rw-r--r--dev-build/b2/files/b2-4.9.2-disable_python_rpath.patch11
-rw-r--r--dev-build/b2/files/b2-4.9.2-no-implicit-march-flags.patch148
-rw-r--r--dev-build/b2/files/b2-4.9.2-odr.patch54
-rw-r--r--dev-build/b2/files/site-config.jam11
-rw-r--r--dev-build/b2/metadata.xml11
10 files changed, 417 insertions, 0 deletions
diff --git a/dev-build/b2/Manifest b/dev-build/b2/Manifest
new file mode 100644
index 000000000000..88a04888a951
--- /dev/null
+++ b/dev-build/b2/Manifest
@@ -0,0 +1,2 @@
+DIST b2-4.10.1.tar.gz 982429 BLAKE2B bb1e6ef741ca10d3b0029e64d69a7ee7eb0d40d26c68d2a3932d4210e8e2a83131c9bac2d54f2885373725d58fe73dd7fa7aebfc5781059f01c3462c738d426c SHA512 0bc4897a342685190626a6593926c4b200c5ca9b498ba77287a7c49467a8e3f65cb850b9616fd05d4aea9ebfab32ec46792d7d8226bed89911a711ce14ecce30
+DIST b2-5.0.0.tar.gz 1015818 BLAKE2B 87b6f34733002479f91f658aee4f776930ae6441f33b2540b82049e18c4199280e73047afafa90dc156cc75db8b587c5bb9e2ce65d93c493775ac4107ce3201b SHA512 37403f0bd863753c5313393405dd8514a4f8d9f0839ccd397ee1856e02af6116bd238d345e5b766512441ca1c0b09883386588e270bd982eca45235eef1b01b7
diff --git a/dev-build/b2/b2-4.10.1.ebuild b/dev-build/b2/b2-4.10.1.ebuild
new file mode 100644
index 000000000000..55ca9c3a4e4c
--- /dev/null
+++ b/dev-build/b2/b2-4.10.1.ebuild
@@ -0,0 +1,70 @@
+# Copyright 1999-2024 Gentoo Authors
+# Distributed under the terms of the GNU General Public License v2
+
+EAPI=8
+
+inherit edo flag-o-matic toolchain-funcs
+
+MY_PV="$(ver_rs 1- _)"
+
+DESCRIPTION="A system for large project software construction, simple to use and powerful"
+HOMEPAGE="https://www.bfgroup.xyz/b2/"
+SRC_URI="https://github.com/bfgroup/b2/archive/refs/tags/${PV}.tar.gz -> ${P}.tar.gz"
+S="${WORKDIR}/${P}/src"
+
+LICENSE="Boost-1.0"
+SLOT="0"
+KEYWORDS="~alpha amd64 arm arm64 hppa ~ia64 ~loong ~m68k ~mips ppc ppc64 ~riscv ~s390 sparc x86 ~amd64-linux ~x86-linux ~arm64-macos ~ppc-macos ~x64-macos ~x64-solaris"
+IUSE="examples"
+RESTRICT="test"
+
+RDEPEND="!dev-util/boost-build"
+
+PATCHES=(
+ "${FILESDIR}"/${PN}-4.9.2-disable_python_rpath.patch
+ "${FILESDIR}"/${PN}-4.9.2-darwin-gentoo-toolchain.patch
+ "${FILESDIR}"/${PN}-4.9.2-add-none-feature-options.patch
+ "${FILESDIR}"/${PN}-4.9.2-no-implicit-march-flags.patch
+ "${FILESDIR}"/${PN}-4.9.2-odr.patch
+)
+
+src_configure() {
+ # need to enable LFS explicitly for 64-bit offsets on 32-bit hosts (#761100)
+ append-lfs-flags
+}
+
+src_compile() {
+ cd engine || die
+
+ # upstream doesn't want separate flags for CPPFLAGS/LDFLAGS
+ # https://github.com/bfgroup/b2/pull/187#issuecomment-1335688424
+ edo ${CONFIG_SHELL:-${BASH}} ./build.sh cxx \
+ --cxx="$(tc-getCXX)" \
+ --cxxflags="${CXXFLAGS} ${CPPFLAGS} ${LDFLAGS}" \
+ -d+2 \
+ --without-python
+}
+
+src_test() {
+ # Forget tests, b2 is a lost cause
+ :
+}
+
+src_install() {
+ dobin engine/b2
+
+ insinto /usr/share/b2/src
+ doins -r "${FILESDIR}/site-config.jam" \
+ bootstrap.jam build-system.jam ../example/user-config.jam \
+ build kernel options tools util
+
+ find "${ED}"/usr/share/b2/src -iname '*.py' -delete || die
+
+ dodoc ../notes/{changes,release_procedure,build_dir_option,relative_source_paths}.txt
+
+ if use examples; then
+ docinto examples
+ dodoc -r ../example/.
+ docompress -x /usr/share/doc/${PF}/examples
+ fi
+}
diff --git a/dev-build/b2/b2-5.0.0.ebuild b/dev-build/b2/b2-5.0.0.ebuild
new file mode 100644
index 000000000000..6cff0eca434e
--- /dev/null
+++ b/dev-build/b2/b2-5.0.0.ebuild
@@ -0,0 +1,72 @@
+# Copyright 1999-2024 Gentoo Authors
+# Distributed under the terms of the GNU General Public License v2
+
+EAPI=8
+
+inherit edo flag-o-matic toolchain-funcs
+
+MY_PV="$(ver_rs 1- _)"
+
+DESCRIPTION="A system for large project software construction, simple to use and powerful"
+HOMEPAGE="https://www.bfgroup.xyz/b2/"
+SRC_URI="https://github.com/bfgroup/b2/archive/refs/tags/${PV}.tar.gz -> ${P}.tar.gz"
+S="${WORKDIR}/${P}/src"
+
+LICENSE="Boost-1.0"
+SLOT="0"
+KEYWORDS="~alpha ~amd64 ~arm ~arm64 ~hppa ~ia64 ~loong ~m68k ~mips ~ppc ~ppc64 ~riscv ~s390 ~sparc ~x86 ~amd64-linux ~x86-linux ~arm64-macos ~ppc-macos ~x64-macos ~x64-solaris"
+IUSE="examples"
+RESTRICT="test"
+
+RDEPEND="!dev-util/boost-build"
+
+PATCHES=(
+ "${FILESDIR}"/${PN}-4.9.2-disable_python_rpath.patch
+ "${FILESDIR}"/${PN}-4.9.2-darwin-gentoo-toolchain.patch
+ "${FILESDIR}"/${PN}-4.9.2-add-none-feature-options.patch
+ "${FILESDIR}"/${PN}-4.9.2-no-implicit-march-flags.patch
+)
+
+src_configure() {
+ # need to enable LFS explicitly for 64-bit offsets on 32-bit hosts (#761100)
+ append-lfs-flags
+}
+
+src_compile() {
+ cd engine || die
+
+ # don't call windres since it leads to broken relocations
+ export B2_DONT_EMBED_MANIFEST=1
+
+ # upstream doesn't want separate flags for CPPFLAGS/LDFLAGS
+ # https://github.com/bfgroup/b2/pull/187#issuecomment-1335688424
+ edo ${CONFIG_SHELL:-${BASH}} ./build.sh cxx \
+ --cxx="$(tc-getCXX)" \
+ --cxxflags="${CXXFLAGS} ${CPPFLAGS} ${LDFLAGS}" \
+ -d+2 \
+ --without-python
+}
+
+src_test() {
+ # Forget tests, b2 is a lost cause
+ :
+}
+
+src_install() {
+ dobin engine/b2
+
+ insinto /usr/share/b2/src
+ doins -r "${FILESDIR}/site-config.jam" \
+ build-system.jam ../example/user-config.jam \
+ build contrib options tools util
+
+ find "${ED}"/usr/share/b2/src -iname '*.py' -delete || die
+
+ dodoc ../notes/{changes,release_procedure,build_dir_option,relative_source_paths}.txt
+
+ if use examples; then
+ docinto examples
+ dodoc -r ../example/.
+ docompress -x /usr/share/doc/${PF}/examples
+ fi
+}
diff --git a/dev-build/b2/files/b2-4.9.2-add-none-feature-options.patch b/dev-build/b2/files/b2-4.9.2-add-none-feature-options.patch
new file mode 100644
index 000000000000..620dea0af51b
--- /dev/null
+++ b/dev-build/b2/files/b2-4.9.2-add-none-feature-options.patch
@@ -0,0 +1,22 @@
+--- a/tools/features/debug-feature.jam
++++ b/tools/features/debug-feature.jam
+@@ -18,7 +18,7 @@ common usage is to build release variant with debugging information.
+ |# # end::doc[]
+
+ feature.feature debug-symbols
+- : on off
++ : on off none
+ : propagated ;
+
+ #| tag::prof-doc[]
+--- a/tools/features/optimization-feature.jam
++++ b/tools/features/optimization-feature.jam
+@@ -16,7 +16,7 @@ smaller binary.
+ |# # end::doc[]
+
+ feature.feature optimization
+- : off speed space minimal debug
++ : off none speed space minimal debug
+ : propagated ;
+
+ #| tag::inline-doc[]
diff --git a/dev-build/b2/files/b2-4.9.2-darwin-gentoo-toolchain.patch b/dev-build/b2/files/b2-4.9.2-darwin-gentoo-toolchain.patch
new file mode 100644
index 000000000000..8de98014dbdc
--- /dev/null
+++ b/dev-build/b2/files/b2-4.9.2-darwin-gentoo-toolchain.patch
@@ -0,0 +1,16 @@
+Avoid adding all kinds of things to the toolchain's flags that within
+Gentoo (Prefix) we really shouldn't, such as sysroot, deployment target,
+arch, etc.
+
+--- a/tools/darwin.jam
++++ b/tools/darwin.jam
+@@ -240,6 +240,9 @@
+ }
+ }
+
++ # leave compiler flags etc. up to the toolchain
++ return $(version-feature) ;
++
+ if $(version-feature)
+ {
+ if $(.debug-configuration)
diff --git a/dev-build/b2/files/b2-4.9.2-disable_python_rpath.patch b/dev-build/b2/files/b2-4.9.2-disable_python_rpath.patch
new file mode 100644
index 000000000000..b7b47cc93a47
--- /dev/null
+++ b/dev-build/b2/files/b2-4.9.2-disable_python_rpath.patch
@@ -0,0 +1,11 @@
+--- a/tools/python.jam
++++ b/tools/python.jam
+@@ -1000,7 +1000,7 @@
+ # linux).
+ : $(usage-requirements)
+ <testing.launcher>$(set-PYTHONPATH)
+- <library-path>$(libraries) <dll-path>$(dll-path) <library>python.lib
++ <library-path>$(libraries) <library>python.lib
+ ;
+ }
+
diff --git a/dev-build/b2/files/b2-4.9.2-no-implicit-march-flags.patch b/dev-build/b2/files/b2-4.9.2-no-implicit-march-flags.patch
new file mode 100644
index 000000000000..2845d6e52f84
--- /dev/null
+++ b/dev-build/b2/files/b2-4.9.2-no-implicit-march-flags.patch
@@ -0,0 +1,148 @@
+--- a/tools/gcc.jam
++++ b/tools/gcc.jam
+@@ -1131,145 +1131,11 @@ local rule cpu-flags ( toolset variable : architecture : instruction-set + :
+ # x86 and compatible
+ # The 'native' option appeared in gcc 4.2 so we cannot safely use it as default.
+ # Use i686 instead for 32-bit.
+-toolset.flags gcc OPTIONS <architecture>x86/<address-model>32/<instruction-set> : -march=i686 ;
+-cpu-flags gcc OPTIONS : x86 : native : -march=native ;
+-cpu-flags gcc OPTIONS : x86 : i486 : -march=i486 ;
+-cpu-flags gcc OPTIONS : x86 : i586 : -march=i586 ;
+-cpu-flags gcc OPTIONS : x86 : i686 : -march=i686 ;
+-cpu-flags gcc OPTIONS : x86 : pentium : -march=pentium ;
+-cpu-flags gcc OPTIONS : x86 : pentium-mmx : -march=pentium-mmx ;
+-cpu-flags gcc OPTIONS : x86 : pentiumpro : -march=pentiumpro ;
+-cpu-flags gcc OPTIONS : x86 : pentium2 : -march=pentium2 ;
+-cpu-flags gcc OPTIONS : x86 : pentium3 : -march=pentium3 ;
+-cpu-flags gcc OPTIONS : x86 : pentium3m : -march=pentium3m ;
+-cpu-flags gcc OPTIONS : x86 : pentium-m : -march=pentium-m ;
+-cpu-flags gcc OPTIONS : x86 : pentium4 : -march=pentium4 ;
+-cpu-flags gcc OPTIONS : x86 : pentium4m : -march=pentium4m ;
+-cpu-flags gcc OPTIONS : x86 : prescott : -march=prescott ;
+-cpu-flags gcc OPTIONS : x86 : nocona : -march=nocona ;
+-cpu-flags gcc OPTIONS : x86 : core2 : -march=core2 ;
+-cpu-flags gcc OPTIONS : x86 : conroe : -march=core2 ;
+-cpu-flags gcc OPTIONS : x86 : conroe-xe : -march=core2 ;
+-cpu-flags gcc OPTIONS : x86 : conroe-l : -march=core2 ;
+-cpu-flags gcc OPTIONS : x86 : allendale : -march=core2 ;
+-cpu-flags gcc OPTIONS : x86 : wolfdale : -march=core2 -msse4.1 ;
+-cpu-flags gcc OPTIONS : x86 : merom : -march=core2 ;
+-cpu-flags gcc OPTIONS : x86 : merom-xe : -march=core2 ;
+-cpu-flags gcc OPTIONS : x86 : kentsfield : -march=core2 ;
+-cpu-flags gcc OPTIONS : x86 : kentsfield-xe : -march=core2 ;
+-cpu-flags gcc OPTIONS : x86 : yorksfield : -march=core2 ;
+-cpu-flags gcc OPTIONS : x86 : penryn : -march=core2 ;
+-cpu-flags gcc OPTIONS : x86 : corei7 : -march=corei7 ;
+-cpu-flags gcc OPTIONS : x86 : nehalem : -march=corei7 ;
+-cpu-flags gcc OPTIONS : x86 : corei7-avx : -march=corei7-avx ;
+-cpu-flags gcc OPTIONS : x86 : sandy-bridge : -march=corei7-avx ;
+-cpu-flags gcc OPTIONS : x86 : core-avx-i : -march=core-avx-i ;
+-cpu-flags gcc OPTIONS : x86 : ivy-bridge : -march=core-avx-i ;
+-cpu-flags gcc OPTIONS : x86 : haswell : -march=core-avx-i -mavx2 -mfma -mbmi -mbmi2 -mlzcnt ;
+-cpu-flags gcc OPTIONS : x86 : broadwell : -march=broadwell ;
+-cpu-flags gcc OPTIONS : x86 : skylake : -march=skylake ;
+-cpu-flags gcc OPTIONS : x86 : skylake-avx512 : -march=skylake-avx512 ;
+-cpu-flags gcc OPTIONS : x86 : cannonlake : -march=skylake-avx512 -mavx512vbmi -mavx512ifma -msha ;
+-cpu-flags gcc OPTIONS : x86 : icelake-client : -march=icelake-client ;
+-cpu-flags gcc OPTIONS : x86 : icelake-server : -march=icelake-server ;
+-cpu-flags gcc OPTIONS : x86 : cascadelake : -march=skylake-avx512 -mavx512vnni ;
+-cpu-flags gcc OPTIONS : x86 : cooperlake : -march=cooperlake ;
+-cpu-flags gcc OPTIONS : x86 : tigerlake : -march=tigerlake ;
+-cpu-flags gcc OPTIONS : x86 : rocketlake : -march=rocketlake ;
+-cpu-flags gcc OPTIONS : x86 : alderlake : -march=alderlake ;
+-cpu-flags gcc OPTIONS : x86 : sapphirerapids : -march=sapphirerapids ;
+-cpu-flags gcc OPTIONS : x86 : k6 : -march=k6 ;
+-cpu-flags gcc OPTIONS : x86 : k6-2 : -march=k6-2 ;
+-cpu-flags gcc OPTIONS : x86 : k6-3 : -march=k6-3 ;
+-cpu-flags gcc OPTIONS : x86 : athlon : -march=athlon ;
+-cpu-flags gcc OPTIONS : x86 : athlon-tbird : -march=athlon-tbird ;
+-cpu-flags gcc OPTIONS : x86 : athlon-4 : -march=athlon-4 ;
+-cpu-flags gcc OPTIONS : x86 : athlon-xp : -march=athlon-xp ;
+-cpu-flags gcc OPTIONS : x86 : athlon-mp : -march=athlon-mp ;
+ ##
+-cpu-flags gcc OPTIONS : x86 : k8 : -march=k8 ;
+-cpu-flags gcc OPTIONS : x86 : opteron : -march=opteron ;
+-cpu-flags gcc OPTIONS : x86 : athlon64 : -march=athlon64 ;
+-cpu-flags gcc OPTIONS : x86 : athlon-fx : -march=athlon-fx ;
+-cpu-flags gcc OPTIONS : x86 : k8-sse3 : -march=k8-sse3 ;
+-cpu-flags gcc OPTIONS : x86 : opteron-sse3 : -march=opteron-sse3 ;
+-cpu-flags gcc OPTIONS : x86 : athlon64-sse3 : -march=athlon64-sse3 ;
+-cpu-flags gcc OPTIONS : x86 : amdfam10 : -march=amdfam10 ;
+-cpu-flags gcc OPTIONS : x86 : barcelona : -march=barcelona ;
+-cpu-flags gcc OPTIONS : x86 : bdver1 : -march=bdver1 ;
+-cpu-flags gcc OPTIONS : x86 : bdver2 : -march=bdver2 ;
+-cpu-flags gcc OPTIONS : x86 : bdver3 : -march=bdver3 ;
+-cpu-flags gcc OPTIONS : x86 : bdver4 : -march=bdver4 ;
+-cpu-flags gcc OPTIONS : x86 : btver1 : -march=btver1 ;
+-cpu-flags gcc OPTIONS : x86 : btver2 : -march=btver2 ;
+-cpu-flags gcc OPTIONS : x86 : znver1 : -march=znver1 ;
+-cpu-flags gcc OPTIONS : x86 : znver2 : -march=znver2 ;
+-cpu-flags gcc OPTIONS : x86 : znver3 : -march=znver3 ;
+-cpu-flags gcc OPTIONS : x86 : winchip-c6 : -march=winchip-c6 ;
+-cpu-flags gcc OPTIONS : x86 : winchip2 : -march=winchip2 ;
+-cpu-flags gcc OPTIONS : x86 : c3 : -march=c3 ;
+-cpu-flags gcc OPTIONS : x86 : c3-2 : -march=c3-2 ;
+-cpu-flags gcc OPTIONS : x86 : c7 : -march=c7 ;
+ ##
+-cpu-flags gcc OPTIONS : x86 : atom : -march=atom ;
+ # Sparc
+-cpu-flags gcc OPTIONS : sparc : v7 : -mcpu=v7 : default ;
+-cpu-flags gcc OPTIONS : sparc : cypress : -mcpu=cypress ;
+-cpu-flags gcc OPTIONS : sparc : v8 : -mcpu=v8 ;
+-cpu-flags gcc OPTIONS : sparc : supersparc : -mcpu=supersparc ;
+-cpu-flags gcc OPTIONS : sparc : sparclite : -mcpu=sparclite ;
+-cpu-flags gcc OPTIONS : sparc : hypersparc : -mcpu=hypersparc ;
+-cpu-flags gcc OPTIONS : sparc : sparclite86x : -mcpu=sparclite86x ;
+-cpu-flags gcc OPTIONS : sparc : f930 : -mcpu=f930 ;
+-cpu-flags gcc OPTIONS : sparc : f934 : -mcpu=f934 ;
+-cpu-flags gcc OPTIONS : sparc : sparclet : -mcpu=sparclet ;
+-cpu-flags gcc OPTIONS : sparc : tsc701 : -mcpu=tsc701 ;
+-cpu-flags gcc OPTIONS : sparc : v9 : -mcpu=v9 ;
+-cpu-flags gcc OPTIONS : sparc : ultrasparc : -mcpu=ultrasparc ;
+-cpu-flags gcc OPTIONS : sparc : ultrasparc3 : -mcpu=ultrasparc3 ;
+ # RS/6000 & PowerPC
+-cpu-flags gcc OPTIONS : power : 403 : -mcpu=403 ;
+-cpu-flags gcc OPTIONS : power : 505 : -mcpu=505 ;
+-cpu-flags gcc OPTIONS : power : 601 : -mcpu=601 ;
+-cpu-flags gcc OPTIONS : power : 602 : -mcpu=602 ;
+-cpu-flags gcc OPTIONS : power : 603 : -mcpu=603 ;
+-cpu-flags gcc OPTIONS : power : 603e : -mcpu=603e ;
+-cpu-flags gcc OPTIONS : power : 604 : -mcpu=604 ;
+-cpu-flags gcc OPTIONS : power : 604e : -mcpu=604e ;
+-cpu-flags gcc OPTIONS : power : 620 : -mcpu=620 ;
+-cpu-flags gcc OPTIONS : power : 630 : -mcpu=630 ;
+-cpu-flags gcc OPTIONS : power : 740 : -mcpu=740 ;
+-cpu-flags gcc OPTIONS : power : 7400 : -mcpu=7400 ;
+-cpu-flags gcc OPTIONS : power : 7450 : -mcpu=7450 ;
+-cpu-flags gcc OPTIONS : power : 750 : -mcpu=750 ;
+-cpu-flags gcc OPTIONS : power : 801 : -mcpu=801 ;
+-cpu-flags gcc OPTIONS : power : 821 : -mcpu=821 ;
+-cpu-flags gcc OPTIONS : power : 823 : -mcpu=823 ;
+-cpu-flags gcc OPTIONS : power : 860 : -mcpu=860 ;
+-cpu-flags gcc OPTIONS : power : 970 : -mcpu=970 ;
+-cpu-flags gcc OPTIONS : power : 8540 : -mcpu=8540 ;
+-cpu-flags gcc OPTIONS : power : power : -mcpu=power ;
+-cpu-flags gcc OPTIONS : power : power2 : -mcpu=power2 ;
+-cpu-flags gcc OPTIONS : power : power3 : -mcpu=power3 ;
+-cpu-flags gcc OPTIONS : power : power4 : -mcpu=power4 ;
+-cpu-flags gcc OPTIONS : power : power5 : -mcpu=power5 ;
+-cpu-flags gcc OPTIONS : power : powerpc : -mcpu=powerpc ;
+-cpu-flags gcc OPTIONS : power : powerpc64 : -mcpu=powerpc64 ;
+-cpu-flags gcc OPTIONS : power : rios : -mcpu=rios ;
+-cpu-flags gcc OPTIONS : power : rios1 : -mcpu=rios1 ;
+-cpu-flags gcc OPTIONS : power : rios2 : -mcpu=rios2 ;
+-cpu-flags gcc OPTIONS : power : rsc : -mcpu=rsc ;
+-cpu-flags gcc OPTIONS : power : rs64a : -mcpu=rs64 ;
+-cpu-flags gcc OPTIONS : s390x : z196 : -march=z196 ;
+-cpu-flags gcc OPTIONS : s390x : zEC12 : -march=zEC12 ;
+-cpu-flags gcc OPTIONS : s390x : z13 : -march=z13 ;
+-cpu-flags gcc OPTIONS : s390x : z14 : -march=z14 ;
+-cpu-flags gcc OPTIONS : s390x : z15 : -march=z15 ;
+ # ARM
+-cpu-flags gcc OPTIONS : arm : cortex-a9+vfpv3 : -mcpu=cortex-a9 -mfpu=vfpv3 -mfloat-abi=hard ;
+-cpu-flags gcc OPTIONS : arm : cortex-a53 : -mcpu=cortex-a53 ;
+-cpu-flags gcc OPTIONS : arm : cortex-r5 : -mcpu=cortex-r5 ;
+-cpu-flags gcc OPTIONS : arm : cortex-r5+vfpv3-d16 : -mcpu=cortex-r5 -mfpu=vfpv3-d16 -mfloat-abi=hard ;
+ # AIX variant of RS/6000 & PowerPC
+ toolset.flags gcc AROPTIONS <address-model>64/<target-os>aix : "-X64" ;
+
diff --git a/dev-build/b2/files/b2-4.9.2-odr.patch b/dev-build/b2/files/b2-4.9.2-odr.patch
new file mode 100644
index 000000000000..62cbca189640
--- /dev/null
+++ b/dev-build/b2/files/b2-4.9.2-odr.patch
@@ -0,0 +1,54 @@
+Avoid ODR violations by giving "_stack" internal linkage
+https://bugs.gentoo.org/858320
+
+--- a/engine/function.cpp
++++ b/engine/function.cpp
+@@ -213,11 +213,11 @@
+ } JAM_FUNCTION;
+
+
++namespace
++{
+ typedef struct _stack STACK;
+ typedef STACK* stack_ptr;
+
+-namespace
+-{
+ template <typename T>
+ using remove_cref_t
+ = typename std::remove_const<
+@@ -260,7 +260,6 @@
+ typename select_last_impl<(sizeof...(A) == 1), type_list<A...> >
+ ::template type<A...>;
+ #endif
+-}
+
+ struct _stack
+ {
+@@ -439,6 +438,8 @@
+ cleanups_size += n;
+ }
+
++}
++
+ static STACK * stack_global()
+ {
+ static _stack singleton;
+--- a/engine/make1.cpp
++++ b/engine/make1.cpp
+@@ -86,6 +86,7 @@
+ #define T_STATE_MAKE1B 1 /* make1b() should be called */
+ #define T_STATE_MAKE1C 2 /* make1c() should be called */
+
++namespace {
+ typedef struct _state state;
+ struct _state
+ {
+@@ -94,6 +95,7 @@
+ TARGET * parent; /* parent argument necessary for MAKE1A */
+ int32_t curstate; /* current state */
+ };
++}
+
+ static void make1a( state * const );
+ static void make1b( state * const );
diff --git a/dev-build/b2/files/site-config.jam b/dev-build/b2/files/site-config.jam
new file mode 100644
index 000000000000..cae7b3f98327
--- /dev/null
+++ b/dev-build/b2/files/site-config.jam
@@ -0,0 +1,11 @@
+# Copyright 1999-2024 Gentoo Authors
+# Distributed under the Boost Software License, Version 1.0.
+# (See accompanying file LICENSE_1_0.txt or http://www.boost.org/LICENSE_1_0.txt)
+
+# Define two new variants to be used when building boost (or separate boost-libs)
+# on Gentoo. The two variants make use of Gentoo-specific optimization and debug-symbols
+# values "none" which are not part of the official boost distribution.
+# DO NOT RELY ON THE FOLLOWING VARIANTS TO BE PRESENT ON OTHER OS!
+variant gentoorelease : release : <optimization>none <debug-symbols>none <runtime-link>shared ;
+variant gentoodebug : debug : <optimization>none <debug-symbols>on <runtime-link>shared ;
+
diff --git a/dev-build/b2/metadata.xml b/dev-build/b2/metadata.xml
new file mode 100644
index 000000000000..97a8de7cc239
--- /dev/null
+++ b/dev-build/b2/metadata.xml
@@ -0,0 +1,11 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE pkgmetadata SYSTEM "https://www.gentoo.org/dtd/metadata.dtd">
+<pkgmetadata>
+ <maintainer type="person">
+ <email>soap@gentoo.org</email>
+ <name>David Seifert</name>
+ </maintainer>
+ <upstream>
+ <remote-id type="github">bfgroup/b2</remote-id>
+ </upstream>
+</pkgmetadata>