jca c05d914367 Use find -exec {} + to speed up make fake
Down to 4 seconds instead of 4 minutes on my builder.
No bump since there is no change in the resulting package.

ok Brad rsadowski@ (maintainers)
2020-11-11 15:53:41 +00:00

215 lines
6.7 KiB
Makefile

# $OpenBSD: Makefile,v 1.102 2020/11/11 15:53:41 jca Exp $
ONLY_FOR_ARCHS-md = aarch64 amd64 arm i386 mips64 mips64el powerpc powerpc64
COMMENT-main= free peer-reviewed portable C++ source libraries
COMMENT-md= machine-dependent libraries for boost
VERSION= 1.70.0
DISTNAME= boost_${VERSION:S/./_/g}
PKGNAME-main= boost-${VERSION}
PKGNAME-md= boost-md-${VERSION}
CATEGORIES= devel
MASTER_SITES= https://dl.bintray.com/boostorg/release/${VERSION}/source/
EXTRACT_SUFX= .tar.bz2
FIX_EXTRACT_PERMISSIONS = Yes
SO_VERSION= 12.0
BOOST_LIBS= boost_atomic-mt \
boost_chrono-mt boost_chrono \
boost_container-mt boost_container \
boost_date_time-mt boost_date_time \
boost_filesystem-mt boost_filesystem \
boost_graph-mt boost_graph \
boost_iostreams-mt boost_iostreams \
boost_locale-mt \
boost_log-mt boost_log \
boost_log_setup-mt boost_log_setup \
boost_math_c99-mt boost_math_c99 \
boost_math_c99f-mt boost_math_c99f \
boost_math_c99l-mt boost_math_c99l \
boost_math_tr1-mt boost_math_tr1 \
boost_math_tr1f-mt boost_math_tr1f \
boost_math_tr1l-mt boost_math_tr1l \
boost_prg_exec_monitor-mt boost_prg_exec_monitor \
boost_program_options-mt boost_program_options \
boost_numpy27-mt boost_numpy27 \
boost_numpy38-mt boost_numpy38 \
boost_python27-mt boost_python27 \
boost_python38-mt boost_python38 \
boost_random-mt boost_random \
boost_regex-mt boost_regex \
boost_serialization-mt boost_serialization \
boost_system-mt boost_system \
boost_thread-mt \
boost_timer-mt boost_timer \
boost_unit_test_framework-mt boost_unit_test_framework \
boost_wserialization-mt boost_wserialization \
boost_wave-mt boost_wave \
boost_type_erasure-mt boost_type_erasure \
boost_contract boost_contract-mt
# MD
BOOST_LIBS+= boost_context-mt \
boost_coroutine boost_coroutine-mt \
boost_fiber-mt \
boost_stacktrace_basic \
boost_stacktrace_basic-mt \
boost_stacktrace_addr2line \
boost_stacktrace_addr2line-mt \
boost_stacktrace_noop \
boost_stacktrace_noop-mt
.for _lib in ${BOOST_LIBS}
SHARED_LIBS+= ${_lib} ${SO_VERSION}
.endfor
HOMEPAGE= https://www.boost.org/
MAINTAINER= Brad Smith <brad@comstyle.com> \
Rafael Sadowski <rsadowski@openbsd.org>
# Boost
PERMIT_PACKAGE= Yes
WANTLIB += ${COMPILER_LIBCXX} bz2 c icudata icui18n icuuc m z
COMPILER= base-clang ports-gcc
MULTI_PACKAGES= -main -md
MODULES= lang/python
MODPY_RUNDEP= No
# extras needed until py2 support can be removed
BUILD_DEPENDS+= math/py-numpy \
math/py-numpy,python3 \
lang/python/${MODPY_DEFAULT_VERSION_3}
LIB_DEPENDS= archivers/bzip2 \
textproc/icu4c
LIB_DEPENDS-md= devel/boost
WANTLIB-md+= ${COMPILER_LIBCXX} m boost_chrono-mt boost_filesystem-mt
WANTLIB-md+= boost_thread-mt
.include <bsd.port.arch.mk>
.if ${PROPERTIES:Mclang}
TOOLSET= clang
.else
TOOLSET= gcc
.endif
MAKE_ENV= GCC="${CC}" GXX="${CXX}"
BJAM_CONFIG= -sICU_PATH=${LOCALBASE} \
-sBZIP2_INCLUDE=${LOCALBASE}/include \
-sBZIP2_LIBPATH=${LOCALBASE}/lib \
-q \
-d+2 \
-j${MAKE_JOBS} \
--layout=tagged-1.66 \
pch=off \
cflags='${CFLAGS} -pthread' \
cxxflags='${CXXFLAGS} -pthread' \
variant=release \
link=static,shared \
threading=single,multi \
BOOTSTRAP= --with-bjam=${WRKSRC}/bjam \
--with-toolset=${TOOLSET} \
--with-python-root=${LOCALBASE}
# 'context' and 'coroutine' use MD bits and miss support for Alpha,
# PA-RISC, SPARC and SuperH. The author does not care
# about adding support for Alpha and PA-RISC.
.if !${BUILD_PACKAGES:M-md}
BOOTSTRAP+= --without-libraries=context,coroutine,fiber,stacktrace
.endif
PY2_BOOTSTRAP= --with-python=${LOCALBASE}/bin/python${MODPY_DEFAULT_VERSION_2} \
--with-python-version=${MODPY_DEFAULT_VERSION_2} \
PY3_BOOTSTRAP= --with-python=${LOCALBASE}/bin/python${MODPY_DEFAULT_VERSION_3} \
--with-python-version=${MODPY_DEFAULT_VERSION_3} \
PY2_INC= ${LOCALBASE}/include/python${MODPY_DEFAULT_VERSION_2}
PY3_INC= ${LOCALBASE}/include/python${MODPY_DEFAULT_VERSION_3}
# temporary dir to stash libs when rebuilding with py2
PY3_DIR= ${WRKDIR}/lib.py3
# python.port.mk makes assumptions about an empty CONFIGURE_STYLE
CONFIGURE_STYLE= none
CONFIGURE_ENV= BJAM_CONFIG="${BJAM_CONFIG}" \
CXX="${CXX}" CXXFLAGS="${CXXFLAGS}"
DPB_PROPERTIES= parallel
NO_TEST= Yes
SUBST_VARS+= SO_VERSION
pre-configure:
${SUBST_CMD} ${WRKSRC}/tools/build/src/engine/Jambase
do-configure:
echo "using ${TOOLSET} : : ${CXX} ;" >>${WRKSRC}/tools/build/user-config.jam
${SUBST_CMD} ${WRKSRC}/Jamroot
cd ${WRKSRC}/libs/config && \
${SETENV} ${CONFIGURE_ENV} /bin/sh ./configure
cd ${WRKSRC}/tools/build/src/engine && \
${SETENV} CC="${CC}" CFLAGS="${CFLAGS}" /bin/sh ./build.sh cc && \
cp bin.openbsd*/b2 bin.openbsd*/bjam ${WRKSRC}
# b2 doesn't seem to respect python parameter, we need to run twice with
# separate python environments. when we remove py2 support later, bootstrap
# can move back to the configure stage and avoid the build/rm/rebuild dance..
do-build:
# First run of bootstrap/b2, setup for py3 environment:
sed 's;\(using python.*PYTHON_ROOT\).*;\1 : ${PY3_INC} \;;' \
< ${WRKSRC}/bootstrap.sh > ${WRKSRC}/bootstrap.sh.tmp
cd ${WRKSRC} && export ${MAKE_ENV} && \
/bin/sh ./bootstrap.sh.tmp ${BOOTSTRAP} ${PY3_BOOTSTRAP} && \
./b2 ${BJAM_CONFIG} --with-python python=${MODPY_DEFAULT_VERSION_3}
# Stash py3 libs in temporary dir:
mkdir ${PY3_DIR}
mv ${WRKSRC}/stage/lib/lib*python3* ${PY3_DIR}
mv ${WRKSRC}/stage/lib/lib*numpy3* ${PY3_DIR}
# Remove py3 .o files to force python recompilation:
rm ${WRKSRC}/project-config.jam
find ${WRKSRC}/bin.v2/libs/python -name "*.o" -type f -delete
# Second run of bootstrap/b2, setup for py2 environment:
sed 's;\(using python.*PYTHON_ROOT\).*;\1 : ${PY2_INC} \;;' \
< ${WRKSRC}/bootstrap.sh > ${WRKSRC}/bootstrap.sh.tmp
cd ${WRKSRC} && export ${MAKE_ENV} && \
/bin/sh ./bootstrap.sh.tmp ${BOOTSTRAP} ${PY2_BOOTSTRAP} && \
./b2 ${BJAM_CONFIG} python=${MODPY_DEFAULT_VERSION_2}
do-install:
# Libs and includes:
${INSTALL_DATA} ${WRKSRC}/stage/lib/lib!(*.so) ${PREFIX}/lib
${INSTALL_DATA} ${PY3_DIR}/lib!(*.so) ${PREFIX}/lib
${INSTALL_DATA_DIR} ${PREFIX}/include/boost
cd ${WRKSRC}/boost && \
pax -rw -s ':^.*\.orig$$::' . ${PREFIX}/include/boost
find ${PREFIX}/include/boost -type d -exec chmod ${DIRMODE} {} +
find ${PREFIX}/include/boost -type f -exec chmod ${SHAREMODE} {} +
# boost-build:
${INSTALL_PROGRAM} ${WRKSRC}/tools/build/src/engine/bin.*/{b2,bjam} \
${PREFIX}/bin
${INSTALL_DATA_DIR} ${PREFIX}/share/boost-build
cd ${WRKSRC}/tools/build/src && \
pax -r -w -p pm -s ':^./engine.*$$::' \
-s ':^.*\.orig$$::' . ${PREFIX}/share/boost-build
${INSTALL_DATA_DIR} ${PREFIX}/share/examples/boost-build
${INSTALL_DATA} ${WRKSRC}/tools/build/example/site-config.jam \
${PREFIX}/share/examples/boost-build
${MODPY_BIN} ${MODPY_LIBDIR}/compileall.py \
${PREFIX}/share/boost-build/
.include <bsd.port.mk>