1227983Stheraven# $FreeBSD: releng/10.3/lib/libc++/Makefile 289079 2015-10-09 19:38:53Z dim $
2227983Stheraven
3278724Sdim.include <bsd.own.mk>
4278724Sdim
5236442SdimLIBCXXRTDIR=	${.CURDIR}/../../contrib/libcxxrt
6236442SdimHDRDIR=		${.CURDIR}/../../contrib/libc++/include
7236442SdimSRCDIR=		${.CURDIR}/../../contrib/libc++/src
8236442SdimCXXINCLUDEDIR=	${INCLUDEDIR}/c++/v${SHLIB_MAJOR}
9227983Stheraven
10227983Stheraven.PATH: ${SRCDIR}
11227983Stheraven
12236442SdimLIB=		c++
13236442SdimSHLIB_MAJOR=	1
14253917SdimSHLIB_LDSCRIPT=	libc++.ldscript
15227983Stheraven
16236442SdimSRCS+=		algorithm.cpp\
17236442Sdim		bind.cpp\
18236442Sdim		chrono.cpp\
19236442Sdim		condition_variable.cpp\
20236442Sdim		debug.cpp\
21236442Sdim		exception.cpp\
22236442Sdim		future.cpp\
23236442Sdim		hash.cpp\
24236442Sdim		ios.cpp\
25236442Sdim		iostream.cpp\
26236442Sdim		locale.cpp\
27236442Sdim		memory.cpp\
28236442Sdim		mutex.cpp\
29236442Sdim		new.cpp\
30262801Sdim		optional.cpp\
31236442Sdim		random.cpp\
32236442Sdim		regex.cpp\
33262801Sdim		shared_mutex.cpp\
34236442Sdim		stdexcept.cpp\
35236442Sdim		string.cpp\
36236442Sdim		strstream.cpp\
37236442Sdim		system_error.cpp\
38236442Sdim		thread.cpp\
39236442Sdim		typeinfo.cpp\
40236442Sdim		utility.cpp\
41236442Sdim		valarray.cpp
42227983Stheraven
43239680SdimCXXRT_SRCS+=	libelftc_dem_gnu3.c\
44239680Sdim		terminate.cc\
45239680Sdim		dynamic_cast.cc\
46239680Sdim		memory.cc\
47239680Sdim		auxhelper.cc\
48239680Sdim		exception.cc\
49239680Sdim		stdexcept.cc\
50239680Sdim		typeinfo.cc\
51239680Sdim		guard.cc
52239680Sdim
53239680Sdim.for _S in ${CXXRT_SRCS}
54239680SdimSTATICOBJS+=	cxxrt_${_S:R}.o
55239680Sdimcxxrt_${_S}:
56239680Sdim	ln -sf ${LIBCXXRTDIR}/${_S} ${.TARGET}
57239680Sdim.endfor
58239680Sdim
59236442SdimWARNS=		0
60239680SdimCFLAGS+=	-I${HDRDIR} -I${LIBCXXRTDIR} -nostdlib -DLIBCXXRT
61242472Sdim.if empty(CXXFLAGS:M-std=*)
62278724SdimCXXFLAGS+=	-std=c++11
63241909Sdim.endif
64227983Stheraven
65236442SdimDPADD=		${LIBCXXRT}
66236442SdimLDADD=		-lcxxrt
67262801SdimINCSGROUPS=	STD EXP EXT
68227983Stheraven
69236442SdimSTD_HEADERS=	__bit_reference\
70236442Sdim		__config\
71236442Sdim		__debug\
72236442Sdim		__functional_03\
73236442Sdim		__functional_base\
74236442Sdim		__functional_base_03\
75236442Sdim		__hash_table\
76236442Sdim		__locale\
77236442Sdim		__mutex_base\
78278724Sdim		__refstring\
79236442Sdim		__split_buffer\
80236442Sdim		__sso_allocator\
81236442Sdim		__std_stream\
82236442Sdim		__tree\
83236442Sdim		__tuple\
84236442Sdim		__tuple_03\
85236442Sdim		__undef_min_max\
86236442Sdim		algorithm\
87236442Sdim		array\
88236442Sdim		atomic\
89236442Sdim		bitset\
90236442Sdim		cassert\
91236442Sdim		ccomplex\
92236442Sdim		cctype\
93236442Sdim		cerrno\
94236442Sdim		cfenv\
95236442Sdim		cfloat\
96236442Sdim		chrono\
97236442Sdim		cinttypes\
98236442Sdim		ciso646\
99236442Sdim		climits\
100236442Sdim		clocale\
101236442Sdim		cmath\
102236442Sdim		codecvt\
103236442Sdim		complex\
104236442Sdim		complex.h\
105236442Sdim		condition_variable\
106236442Sdim		csetjmp\
107236442Sdim		csignal\
108236442Sdim		cstdarg\
109236442Sdim		cstdbool\
110236442Sdim		cstddef\
111236442Sdim		cstdint\
112236442Sdim		cstdio\
113236442Sdim		cstdlib\
114236442Sdim		cstring\
115236442Sdim		ctgmath\
116236442Sdim		ctime\
117236442Sdim		cwchar\
118236442Sdim		cwctype\
119236442Sdim		deque\
120236442Sdim		exception\
121236442Sdim		forward_list\
122236442Sdim		fstream\
123236442Sdim		functional\
124236442Sdim		future\
125236442Sdim		initializer_list\
126236442Sdim		iomanip\
127236442Sdim		ios\
128236442Sdim		iosfwd\
129236442Sdim		iostream\
130236442Sdim		istream\
131236442Sdim		iterator\
132236442Sdim		limits\
133236442Sdim		list\
134236442Sdim		locale\
135236442Sdim		map\
136236442Sdim		memory\
137236442Sdim		mutex\
138236442Sdim		new\
139236442Sdim		numeric\
140236442Sdim		ostream\
141236442Sdim		queue\
142236442Sdim		random\
143236442Sdim		ratio\
144236442Sdim		regex\
145236442Sdim		scoped_allocator\
146236442Sdim		set\
147262801Sdim		shared_mutex\
148236442Sdim		sstream\
149236442Sdim		stack\
150236442Sdim		stdexcept\
151236442Sdim		streambuf\
152236442Sdim		string\
153236442Sdim		strstream\
154236442Sdim		system_error\
155236442Sdim		tgmath.h\
156236442Sdim		thread\
157236442Sdim		tuple\
158236442Sdim		type_traits\
159236442Sdim		typeindex\
160236442Sdim		typeinfo\
161236442Sdim		unordered_map\
162236442Sdim		unordered_set\
163236442Sdim		utility\
164236442Sdim		valarray\
165236442Sdim		vector
166236444SdimRT_HEADERS=	cxxabi.h\
167236444Sdim		unwind.h\
168236444Sdim		unwind-arm.h\
169236444Sdim		unwind-itanium.h
170227983Stheraven
171227983Stheraven.for hdr in ${STD_HEADERS}
172236442SdimSTD+=		${HDRDIR}/${hdr}
173255206StheravenINCSLINKS+=	${CXXINCLUDEDIR}/${hdr} ${CXXINCLUDEDIR}/tr1/${hdr}
174227983Stheraven.endfor
175236444Sdim.for hdr in ${RT_HEADERS}
176236444SdimSTD+=		${LIBCXXRTDIR}/${hdr}
177236444Sdim.endfor
178236442SdimSTDDIR=		${CXXINCLUDEDIR}
179227983Stheraven
180278724SdimEXP_HEADERS=	__config\
181278724Sdim		dynarray\
182278724Sdim		optional\
183278724Sdim		string_view\
184278724Sdim		type_traits\
185278724Sdim		utility
186262801Sdim
187262801Sdim.for hdr in ${EXP_HEADERS}
188262801SdimEXP+=		${HDRDIR}/experimental/${hdr}
189262801Sdim.endfor
190262801SdimEXPDIR=		${CXXINCLUDEDIR}/experimental
191262801Sdim
192236442SdimEXT_HEADERS=	__hash\
193236442Sdim		hash_map\
194236442Sdim		hash_set
195227983Stheraven
196227983Stheraven.for hdr in ${EXT_HEADERS}
197236442SdimEXT+=		${HDRDIR}/ext/${hdr}
198227983Stheraven.endfor
199236442SdimEXTDIR=		${CXXINCLUDEDIR}/ext
200227983Stheraven
201278724Sdim.if ${MK_GNUCXX} == "no" && ${COMPILER_TYPE} == "gcc"
202278724SdimCLEANFILES+=	libstdc++.so libstdc++.a
203278724Sdim
204278724Sdimafterinstall:
205278724Sdim	ln -sf ${DESTDIR}${LIBDIR}/lib${LIB}.so \
206278724Sdim		${.OBJDIR}/libstdc++.so
207278724Sdim	ln -sf ${DESTDIR}${LIBDIR}/lib${LIB}.a \
208278724Sdim		${.OBJDIR}/libstdc++.a
209278724Sdim.endif
210278724Sdim
211227983Stheraven.include <bsd.lib.mk>
212