summaryrefslogtreecommitdiff
path: root/package/boost/Makefile
blob: 271b2937ca6fb0c71c5a212344017770dbf67f9d (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
# This file is part of the OpenADK project. OpenADK is copyrighted
# material, please see the LICENCE file in the top-level directory.

include ${TOPDIR}/rules.mk

PKG_NAME:=		boost
PKG_VERSION:=		1.54.0
PKG_RELEASE:=		1
PKG_MD5SUM:=		efbfbff5a85a9330951f243d0a46e4b9
PKG_DESCR:=		boost C++ library
PKG_SECTION:=		libs
PKG_URL:=		http://www.boost.org/
PKG_SITES:=		${MASTER_SITE_SOURCEFORGE:=boost/}

DISTFILES:=		boost_1_54_0.tar.gz
WRKDIST=		${WRKDIR}/${PKG_NAME}_1_54_0

PKG_LIBC_DEPENDS:=	eglibc glibc musl

PKG_SUBPKGS:=		BOOST BOOST_DEV
PKGSD_BOOST_DEV:=	boost header files
PKGSC_BOOST_DEV:=	devel

PKG_CHOICES_BOOST:=	SHARED STATIC BOTH
PKGCD_STATIC:=		install static libs
PKGCD_SHARED:=		install shared libs
PKGCD_BOTH:=		install static and shared libs

PKG_FLAVOURS_BOOST:=	date_time graph graph_parallel iostreams math program_options python regex serialization signals system test thread 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_program_options:=	with program_options
PKGFD_regex:=	with regex
PKGFD_serialization:=	with serialization
PKGFD_signals:=	with signals
PKGFD_system:=	with system
PKGFD_test:=	with test
PKGFD_thread:=	with thread
PKGFD_wave:=	with wave

include ${TOPDIR}/mk/package.mk

$(eval $(call PKG_template,BOOST,${PKG_NAME},${PKG_VERSION}-${PKG_RELEASE},${PKG_DEPENDS},${PKG_DESCR},${PKG_SECTION}))
$(eval $(call PKG_template,BOOST_DEV,boost-dev,${PKG_VERSION}-${PKG_RELEASE},${PKG_DEPENDS},${PKGSD_BOOST_DEV},${PKGSC_BOOST_DEV}))

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 \

ifneq (${ADK_PACKAGE_BOOST_IOSTREAMS},)
	CONFIGURE_ARGS += -sNO_BZIP2=1 -sZLIB_INCLUDE=${STAGING_DIR}/usr/include -sZLIB_LIBPATH=${STAGING_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_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_SYSTEM},)
	CONFIGURE_ARGS+=--without-system
endif
ifeq (${ADK_PACKAGE_BOOST_TEST},)
	CONFIGURE_ARGS+=--without-test
endif
ifeq (${ADK_PACKAGE_BOOST_THREAD},)
	CONFIGURE_ARGS+=--without-thread
endif
ifeq (${ADK_PACKAGE_BOOST_WAVE},)
	CONFIGURE_ARGS+=--without-wave
endif

# some variables for build
GPP_PATH:=	${STAGING_HOST_DIR}/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"`"
PYTHON_PATH:=	${STAGING_TARGET_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/v2/user-config.jam

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

do-build:
	@echo "build boost library..."
# remove exisiting using gcc line from user.jam
	${SED} "/^using gcc/d" ${USER_JAM}
# add using gcc line with determined options to user.jam
	echo "using gcc : ${GPP_VERSION} : ${GPP_PATH} ;" >> ${USER_JAM};

# remove exisiting using python line from user.jam
	${SED} "/^using python/d" ${USER_JAM}
ifneq (${ADK_PACKAGE_BOOST_PYTHON},)
# add using python line with determined options to user.jam
	echo "using python : ${PYTHON_VERSION} : ${PYTHON_PATH} : ${PYTHON_INCLUDE} : ${PYTHON_LIB} ;" >> ${USER_JAM};
endif

# run bjam to build boost
	( cd ${WRKBUILD}; \
		${BJAM_PATH} \
			-sBUILD=release \
			--toolset=gcc-${GPP_VERSION} \
			--build-type=minimal \
			--layout=versioned \
			--disable-long-double \
			--without-mpi \
			${CONFIGURE_ARGS} \
			install \
	)

boost-install:
	${INSTALL_DIR} ${IDIR_BOOST}/usr/lib
ifneq (${ADK_PACKAGE_BOOST_SHARED},)
	${CP} ${WRKINST}/usr/lib/*.so* ${IDIR_BOOST}/usr/lib
endif
ifneq (${ADK_PACKAGE_BOOST_STATIC},)
	${CP} ${WRKINST}/usr/lib/*.a ${IDIR_BOOST}/usr/lib
endif
ifneq (${ADK_PACKAGE_BOOST_BOTH},)
	${CP} ${WRKINST}/usr/lib/*.a ${IDIR_BOOST}/usr/lib
	${CP} ${WRKINST}/usr/lib/*.so* ${IDIR_BOOST}/usr/lib
endif

boost-dev-install:
	${INSTALL_DIR} ${IDIR_BOOST_DEV}/usr/include
	${CP} ${WRKINST}/usr/include/* ${IDIR_BOOST_DEV}/usr/include

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