# This file is part of the OpenADK project. OpenADK is copyrighted
# material, please see the LICENCE file in the top-level directory.

include ${ADK_TOPDIR}/rules.mk

PKG_NAME:=		boost
PKG_VERSION:=		1.58.0
PKG_EXTRAVER:=		1_58
PKG_RELEASE:=		1
PKG_HASH:=		a004d9b3fa95e956383693b86fce1b68805a6f71c2e68944fa813de0fb8c8102
PKG_DESCR:=		portable c++ library
PKG_SECTION:=		libs/misc
PKG_BUILDDEP:=		python2-host
PKG_URL:=		http://www.boost.org/
PKG_SITES:=		${MASTER_SITE_SOURCEFORGE:=boost/}
PKG_OPTS:=		dev

PKG_ARCH_DEPENDS:=	!m68k

DISTFILES:=		boost_$(PKG_EXTRAVER)_0.tar.gz
WRKDIST=		${WRKDIR}/${PKG_NAME}_$(PKG_EXTRAVER)_0

PKG_FLAVOURS_BOOST:=	DATE_TIME GRAPH GRAPH_PARALLEL IOSTREAMS LOG MATH PROGRAM_OPTIONS PYTHON REGEX SERIALIZATION SIGNALS TEST WAVE

PKGFD_DATE_TIME:=	with date-time
PKGFD_PYTHON:=		with python
PKGFB_PYTHON:=		python2
PKGFS_PYTHON:=		python2
PKGFD_IOSTREAMS:=	with iostreams
PKGFD_GRAPH:=		with graph
PKGFD_GRAPH_PARALLEL:=	with graph_parallel
PKGFD_MATH:=		with math
PKGFD_LOG:=		with log
PKGFD_PROGRAM_OPTIONS:=	with program_options
PKGFD_REGEX:=		with regex
PKGFD_SERIALIZATION:=	with serialization
PKGFD_SIGNALS:=		with signals
PKGFD_TEST:=		with test
PKGFD_WAVE:=		with wave

include ${ADK_TOPDIR}/mk/package.mk

$(eval $(call PKG_template,BOOST,boost,${PKG_VERSION}-${PKG_RELEASE},${PKG_DEPENDS},${PKG_DESCR},${PKG_SECTION},${PKG_OPTS}))

include ${ADK_TOPDIR}/mk/python.mk

CONFIG_STYLE:=		manual
BUILD_STYLE:=		manual
INSTALL_STYLE:=		manual

CONFIGURE_ARGS+=	--target=$(GNU_TARGET_NAME) \
			--host=$(GNU_TARGET_NAME) \
			--build=$(GNU_HOST_NAME) \
			--prefix=${WRKINST}/usr \
			--ignore-site-config \
			--without-mpi \
			--without-locale

ifneq (${ADK_PACKAGE_BOOST_IOSTREAMS},)
CONFIGURE_ARGS+=	-sNO_BZIP2=1 -sZLIB_INCLUDE=${STAGING_TARGET_DIR}/usr/include -sZLIB_LIBPATH=${STAGING_TARGET_DIR}/usr/lib
else
CONFIGURE_ARGS+=	--without-iostreams
endif
ifeq (${ADK_PACKAGE_BOOST_DATE_TIME},)
CONFIGURE_ARGS+=	--without-date_time
endif
ifeq (${ADK_PACKAGE_BOOST_PYTHON},)
CONFIGURE_ARGS+=	--without-python
endif
ifeq (${ADK_PACKAGE_BOOST_GRAPH},)
CONFIGURE_ARGS+=	--without-graph
endif
ifeq (${ADK_PACKAGE_BOOST_LOG},)
CONFIGURE_ARGS+=	--without-log
endif
ifeq (${ADK_PACKAGE_BOOST_MATH},)
CONFIGURE_ARGS+=	--without-math
endif
ifeq (${ADK_PACKAGE_BOOST_PROGRAM_OPTIONS},)
CONFIGURE_ARGS+=	--without-program_options
endif
ifeq (${ADK_PACKAGE_BOOST_REGEX},)
CONFIGURE_ARGS+=	--without-regex
endif
ifeq (${ADK_PACKAGE_BOOST_SERIALIZATION},)
CONFIGURE_ARGS+=	--without-serialization
endif
ifeq (${ADK_PACKAGE_BOOST_SIGNALS},)
CONFIGURE_ARGS+=	--without-signals
endif
ifeq (${ADK_PACKAGE_BOOST_TEST},)
CONFIGURE_ARGS+=	--without-test
endif
ifeq (${ADK_PACKAGE_BOOST_WAVE},)
CONFIGURE_ARGS+=	--without-wave
endif

ifeq ($(ADK_TARGET_ARCH),x86_64)
BOOST_ARCH:=	x86
else ifeq ($(ADK_TARGET_ARCH),ppc)
BOOST_ARCH:=	power
else
BOOST_ARCH:=	$(ADK_TARGET_ARCH)
endif
ifeq ($(ADK_TARGET_ARCH),arm)
BOOST_ABI:=	abi=aapcs
endif

# some variables for build
GPP_PATH:=	${TOOLCHAIN_DIR}/usr/bin/${GNU_TARGET_NAME}-g++
GPP_VERSION:=	"`${GPP_PATH} -v 2>&1 | tail -1 | awk '{print $$3}'`"
BJAM_PATH:=	"`find ${WRKBUILD} -type f -name "bjam$(EXEEXT)"`"
PYTHON_PATH:=	${STAGING_HOST_DIR}/usr/bin/python
PYTHON_INCLUDE:="`find ${STAGING_TARGET_DIR}/usr/include/ -maxdepth 1 -type d -name "python*" | head -1`"
PYTHON_LIB:=	"`find ${STAGING_TARGET_DIR}/usr/lib/ -maxdepth 1 -type d -name "python*" | head -1`"
USER_JAM:=	${WRKBUILD}/tools/build/user-config.jam

pre-build:
	@echo "build bjam..."
	cd $(WRKBUILD)/tools/build/src/engine; ./build.sh gcc

do-build:
	@echo "build boost library..."
	echo "using gcc : ${GPP_VERSION} : ${GPP_PATH} : <compileflags>\"${TARGET_CFLAGS}\" ;" > ${USER_JAM};
ifneq (${ADK_PACKAGE_BOOST_PYTHON},)
	echo "using python : ${PYTHON_VERSION} : ${PYTHON_PATH} : ${PYTHON_INCLUDE} : ${PYTHON_LIB} ;" >> ${USER_JAM};
endif
	(cd ${WRKBUILD}; \
		${BJAM_PATH} \
			-d 2 \
			target-os=linux \
			variant=release \
			link=shared \
			runtime-link=shared \
			architecture=$(BOOST_ARCH) \
			$(BOOST_ABI) \
			binary-format=elf \
			toolset=gcc-${GPP_VERSION} \
			--user-config=${USER_JAM} \
			--layout=system \
			--disable-long-double \
			${CONFIGURE_ARGS} \
			install \
	)

boost-install:
	${INSTALL_DIR} ${IDIR_BOOST}/usr/lib
	${CP} ${WRKINST}/usr/lib/*.so* ${IDIR_BOOST}/usr/lib

include ${ADK_TOPDIR}/mk/pkg-bottom.mk
