xref: /freebsd/lib/libc++/Makefile (revision 5477372324b92240a96310ef2d45fa44ce8d0a93)
1# $FreeBSD$
2
3.include <src.opts.mk>
4
5PACKAGE=	clibs
6_LIBCXXRTDIR=	${SRCTOP}/contrib/libcxxrt
7HDRDIR=		${SRCTOP}/contrib/libc++/include
8SRCDIR=		${SRCTOP}/contrib/libc++/src
9CXXINCLUDEDIR=	${INCLUDEDIR}/c++/v${SHLIB_MAJOR}
10.if ${MACHINE_CPUARCH} == "arm"
11STATIC_CXXFLAGS+= -mlong-calls
12.endif
13
14.PATH: ${SRCDIR}
15
16LIB=		c++
17SHLIB_MAJOR=	1
18SHLIB_LDSCRIPT=	libc++.ldscript
19
20SRCS+=		algorithm.cpp
21SRCS+=		any.cpp
22SRCS+=		bind.cpp
23SRCS+=		chrono.cpp
24SRCS+=		condition_variable.cpp
25SRCS+=		debug.cpp
26SRCS+=		exception.cpp
27SRCS+=		future.cpp
28SRCS+=		hash.cpp
29SRCS+=		ios.cpp
30SRCS+=		iostream.cpp
31SRCS+=		locale.cpp
32SRCS+=		memory.cpp
33SRCS+=		mutex.cpp
34SRCS+=		new.cpp
35SRCS+=		optional.cpp
36SRCS+=		random.cpp
37SRCS+=		regex.cpp
38SRCS+=		shared_mutex.cpp
39SRCS+=		stdexcept.cpp
40SRCS+=		string.cpp
41SRCS+=		strstream.cpp
42SRCS+=		system_error.cpp
43SRCS+=		thread.cpp
44SRCS+=		typeinfo.cpp
45SRCS+=		utility.cpp
46SRCS+=		valarray.cpp
47SRCS+=		variant.cpp
48
49CXXRT_SRCS+=	auxhelper.cc
50CXXRT_SRCS+=	dynamic_cast.cc
51CXXRT_SRCS+=	exception.cc
52CXXRT_SRCS+=	guard.cc
53CXXRT_SRCS+=	libelftc_dem_gnu3.c
54CXXRT_SRCS+=	memory.cc
55CXXRT_SRCS+=	stdexcept.cc
56CXXRT_SRCS+=	terminate.cc
57CXXRT_SRCS+=	typeinfo.cc
58
59.for _S in ${CXXRT_SRCS}
60CLEANFILES+=	cxxrt_${_S}
61STATICOBJS+=	cxxrt_${_S:R}.o
62cxxrt_${_S}: ${_LIBCXXRTDIR}/${_S} .NOMETA
63	ln -sf ${.ALLSRC} ${.TARGET}
64.endfor
65
66WARNS=		0
67CFLAGS+=	-isystem ${HDRDIR} -isystem ${_LIBCXXRTDIR} -nostdinc++ -nostdlib -D_LIBCPP_BUILDING_LIBRARY -DLIBCXXRT
68.if empty(CXXFLAGS:M-std=*)
69CXXFLAGS+=	-std=c++11
70.endif
71
72LIBADD+=	cxxrt
73INCSGROUPS=	STD EXP EXT
74
75STD_HEADERS+=	__bit_reference
76STD_HEADERS+=	__bsd_locale_defaults.h
77STD_HEADERS+=	__bsd_locale_fallbacks.h
78STD_HEADERS+=	__config
79STD_HEADERS+=	__debug
80STD_HEADERS+=	__functional_03
81STD_HEADERS+=	__functional_base
82STD_HEADERS+=	__functional_base_03
83STD_HEADERS+=	__hash_table
84STD_HEADERS+=	__libcpp_version
85STD_HEADERS+=	__locale
86STD_HEADERS+=	__mutex_base
87STD_HEADERS+=	__nullptr
88STD_HEADERS+=	__refstring
89STD_HEADERS+=	__split_buffer
90STD_HEADERS+=	__sso_allocator
91STD_HEADERS+=	__std_stream
92STD_HEADERS+=	__string
93STD_HEADERS+=	__threading_support
94STD_HEADERS+=	__tree
95STD_HEADERS+=	__tuple
96STD_HEADERS+=	__undef_min_max
97STD_HEADERS+=	algorithm
98STD_HEADERS+=	any
99STD_HEADERS+=	array
100STD_HEADERS+=	atomic
101STD_HEADERS+=	bitset
102STD_HEADERS+=	cassert
103STD_HEADERS+=	ccomplex
104STD_HEADERS+=	cctype
105STD_HEADERS+=	cerrno
106STD_HEADERS+=	cfenv
107STD_HEADERS+=	cfloat
108STD_HEADERS+=	chrono
109STD_HEADERS+=	cinttypes
110STD_HEADERS+=	ciso646
111STD_HEADERS+=	climits
112STD_HEADERS+=	clocale
113STD_HEADERS+=	cmath
114STD_HEADERS+=	codecvt
115STD_HEADERS+=	complex
116STD_HEADERS+=	complex.h
117STD_HEADERS+=	condition_variable
118STD_HEADERS+=	csetjmp
119STD_HEADERS+=	csignal
120STD_HEADERS+=	cstdarg
121STD_HEADERS+=	cstdbool
122STD_HEADERS+=	cstddef
123STD_HEADERS+=	cstdint
124STD_HEADERS+=	cstdio
125STD_HEADERS+=	cstdlib
126STD_HEADERS+=	cstring
127STD_HEADERS+=	ctgmath
128STD_HEADERS+=	ctime
129STD_HEADERS+=	ctype.h
130STD_HEADERS+=	cwchar
131STD_HEADERS+=	cwctype
132STD_HEADERS+=	deque
133STD_HEADERS+=	errno.h
134STD_HEADERS+=	exception
135STD_HEADERS+=	float.h
136STD_HEADERS+=	forward_list
137STD_HEADERS+=	fstream
138STD_HEADERS+=	functional
139STD_HEADERS+=	future
140STD_HEADERS+=	initializer_list
141STD_HEADERS+=	inttypes.h
142STD_HEADERS+=	iomanip
143STD_HEADERS+=	ios
144STD_HEADERS+=	iosfwd
145STD_HEADERS+=	iostream
146STD_HEADERS+=	istream
147STD_HEADERS+=	iterator
148STD_HEADERS+=	limits
149STD_HEADERS+=	limits.h
150STD_HEADERS+=	list
151STD_HEADERS+=	locale
152STD_HEADERS+=	locale.h
153STD_HEADERS+=	map
154STD_HEADERS+=	math.h
155STD_HEADERS+=	memory
156STD_HEADERS+=	mutex
157STD_HEADERS+=	new
158STD_HEADERS+=	numeric
159STD_HEADERS+=	optional
160STD_HEADERS+=	ostream
161STD_HEADERS+=	queue
162STD_HEADERS+=	random
163STD_HEADERS+=	ratio
164STD_HEADERS+=	regex
165STD_HEADERS+=	scoped_allocator
166STD_HEADERS+=	set
167STD_HEADERS+=	setjmp.h
168STD_HEADERS+=	shared_mutex
169STD_HEADERS+=	sstream
170STD_HEADERS+=	stack
171STD_HEADERS+=	stdbool.h
172STD_HEADERS+=	stddef.h
173STD_HEADERS+=	stdexcept
174STD_HEADERS+=	stdint.h
175STD_HEADERS+=	stdio.h
176STD_HEADERS+=	stdlib.h
177STD_HEADERS+=	streambuf
178STD_HEADERS+=	string
179STD_HEADERS+=	string.h
180STD_HEADERS+=	string_view
181STD_HEADERS+=	strstream
182STD_HEADERS+=	system_error
183STD_HEADERS+=	tgmath.h
184STD_HEADERS+=	thread
185STD_HEADERS+=	tuple
186STD_HEADERS+=	type_traits
187STD_HEADERS+=	typeindex
188STD_HEADERS+=	typeinfo
189STD_HEADERS+=	unordered_map
190STD_HEADERS+=	unordered_set
191STD_HEADERS+=	utility
192STD_HEADERS+=	valarray
193STD_HEADERS+=	variant
194STD_HEADERS+=	vector
195STD_HEADERS+=	wchar.h
196STD_HEADERS+=	wctype.h
197
198RT_HEADERS+=	cxxabi.h
199RT_HEADERS+=	unwind-arm.h
200RT_HEADERS+=	unwind-itanium.h
201RT_HEADERS+=	unwind.h
202
203.for hdr in ${STD_HEADERS}
204STD+=		${HDRDIR}/${hdr}
205INCSLINKS+=	../${hdr} ${CXXINCLUDEDIR}/tr1/${hdr}
206.endfor
207.for hdr in ${RT_HEADERS}
208STD+=		${_LIBCXXRTDIR}/${hdr}
209.endfor
210STDDIR=		${CXXINCLUDEDIR}
211
212EXP_HEADERS+=	__config
213EXP_HEADERS+=	__memory
214EXP_HEADERS+=	algorithm
215EXP_HEADERS+=	any
216EXP_HEADERS+=	chrono
217EXP_HEADERS+=	deque
218EXP_HEADERS+=	dynarray
219EXP_HEADERS+=	filesystem
220EXP_HEADERS+=	forward_list
221EXP_HEADERS+=	functional
222EXP_HEADERS+=	iterator
223EXP_HEADERS+=	list
224EXP_HEADERS+=	map
225EXP_HEADERS+=	memory_resource
226EXP_HEADERS+=	numeric
227EXP_HEADERS+=	optional
228EXP_HEADERS+=	propagate_const
229EXP_HEADERS+=	ratio
230EXP_HEADERS+=	regex
231EXP_HEADERS+=	set
232EXP_HEADERS+=	string
233EXP_HEADERS+=	string_view
234EXP_HEADERS+=	system_error
235EXP_HEADERS+=	tuple
236EXP_HEADERS+=	type_traits
237EXP_HEADERS+=	unordered_map
238EXP_HEADERS+=	unordered_set
239EXP_HEADERS+=	utility
240EXP_HEADERS+=	vector
241
242.for hdr in ${EXP_HEADERS}
243EXP+=		${HDRDIR}/experimental/${hdr}
244.endfor
245EXPDIR=		${CXXINCLUDEDIR}/experimental
246
247EXT_HEADERS+=	__hash
248EXT_HEADERS+=	hash_map
249EXT_HEADERS+=	hash_set
250
251.for hdr in ${EXT_HEADERS}
252EXT+=		${HDRDIR}/ext/${hdr}
253.endfor
254EXTDIR=		${CXXINCLUDEDIR}/ext
255
256.include <bsd.lib.mk>
257