1227983Stheraven# $FreeBSD$
2227983Stheraven
3236442SdimLIBCXXRTDIR=	${.CURDIR}/../../contrib/libcxxrt
4236442SdimHDRDIR=		${.CURDIR}/../../contrib/libc++/include
5236442SdimSRCDIR=		${.CURDIR}/../../contrib/libc++/src
6236442SdimCXXINCLUDEDIR=	${INCLUDEDIR}/c++/v${SHLIB_MAJOR}
7227983Stheraven
8227983Stheraven.PATH: ${SRCDIR}
9227983Stheraven
10236442SdimLIB=		c++
11236442SdimSHLIB_MAJOR=	1
12253917SdimSHLIB_LDSCRIPT=	libc++.ldscript
13227983Stheraven
14236442SdimSRCS+=		algorithm.cpp\
15236442Sdim		bind.cpp\
16236442Sdim		chrono.cpp\
17236442Sdim		condition_variable.cpp\
18236442Sdim		debug.cpp\
19236442Sdim		exception.cpp\
20236442Sdim		future.cpp\
21236442Sdim		hash.cpp\
22236442Sdim		ios.cpp\
23236442Sdim		iostream.cpp\
24236442Sdim		locale.cpp\
25236442Sdim		memory.cpp\
26236442Sdim		mutex.cpp\
27236442Sdim		new.cpp\
28262801Sdim		optional.cpp\
29236442Sdim		random.cpp\
30236442Sdim		regex.cpp\
31262801Sdim		shared_mutex.cpp\
32236442Sdim		stdexcept.cpp\
33236442Sdim		string.cpp\
34236442Sdim		strstream.cpp\
35236442Sdim		system_error.cpp\
36236442Sdim		thread.cpp\
37236442Sdim		typeinfo.cpp\
38236442Sdim		utility.cpp\
39236442Sdim		valarray.cpp
40227983Stheraven
41239680SdimCXXRT_SRCS+=	libelftc_dem_gnu3.c\
42239680Sdim		terminate.cc\
43239680Sdim		dynamic_cast.cc\
44239680Sdim		memory.cc\
45239680Sdim		auxhelper.cc\
46239680Sdim		exception.cc\
47239680Sdim		stdexcept.cc\
48239680Sdim		typeinfo.cc\
49239680Sdim		guard.cc
50239680Sdim
51239680Sdim.for _S in ${CXXRT_SRCS}
52239680SdimSTATICOBJS+=	cxxrt_${_S:R}.o
53239680Sdimcxxrt_${_S}:
54239680Sdim	ln -sf ${LIBCXXRTDIR}/${_S} ${.TARGET}
55239680Sdim.endfor
56239680Sdim
57236442SdimWARNS=		0
58239680SdimCFLAGS+=	-I${HDRDIR} -I${LIBCXXRTDIR} -nostdlib -DLIBCXXRT
59242472Sdim.if empty(CXXFLAGS:M-std=*)
60239680SdimCXXFLAGS+=	-std=c++0x
61241909Sdim.endif
62227983Stheraven
63236442SdimDPADD=		${LIBCXXRT}
64236442SdimLDADD=		-lcxxrt
65236442SdimLDFLAGS+=	--verbose
66262801SdimINCSGROUPS=	STD EXP EXT
67227983Stheraven
68236442SdimSTD_HEADERS=	__bit_reference\
69236442Sdim		__config\
70236442Sdim		__debug\
71236442Sdim		__functional_03\
72236442Sdim		__functional_base\
73236442Sdim		__functional_base_03\
74236442Sdim		__hash_table\
75236442Sdim		__locale\
76236442Sdim		__mutex_base\
77236442Sdim		__split_buffer\
78236442Sdim		__sso_allocator\
79236442Sdim		__std_stream\
80236442Sdim		__tree\
81236442Sdim		__tuple\
82236442Sdim		__tuple_03\
83236442Sdim		__undef_min_max\
84236442Sdim		algorithm\
85236442Sdim		array\
86236442Sdim		atomic\
87236442Sdim		bitset\
88236442Sdim		cassert\
89236442Sdim		ccomplex\
90236442Sdim		cctype\
91236442Sdim		cerrno\
92236442Sdim		cfenv\
93236442Sdim		cfloat\
94236442Sdim		chrono\
95236442Sdim		cinttypes\
96236442Sdim		ciso646\
97236442Sdim		climits\
98236442Sdim		clocale\
99236442Sdim		cmath\
100236442Sdim		codecvt\
101236442Sdim		complex\
102236442Sdim		complex.h\
103236442Sdim		condition_variable\
104236442Sdim		csetjmp\
105236442Sdim		csignal\
106236442Sdim		cstdarg\
107236442Sdim		cstdbool\
108236442Sdim		cstddef\
109236442Sdim		cstdint\
110236442Sdim		cstdio\
111236442Sdim		cstdlib\
112236442Sdim		cstring\
113236442Sdim		ctgmath\
114236442Sdim		ctime\
115236442Sdim		cwchar\
116236442Sdim		cwctype\
117236442Sdim		deque\
118236442Sdim		exception\
119236442Sdim		forward_list\
120236442Sdim		fstream\
121236442Sdim		functional\
122236442Sdim		future\
123236442Sdim		initializer_list\
124236442Sdim		iomanip\
125236442Sdim		ios\
126236442Sdim		iosfwd\
127236442Sdim		iostream\
128236442Sdim		istream\
129236442Sdim		iterator\
130236442Sdim		limits\
131236442Sdim		list\
132236442Sdim		locale\
133236442Sdim		map\
134236442Sdim		memory\
135236442Sdim		mutex\
136236442Sdim		new\
137236442Sdim		numeric\
138236442Sdim		ostream\
139236442Sdim		queue\
140236442Sdim		random\
141236442Sdim		ratio\
142236442Sdim		regex\
143236442Sdim		scoped_allocator\
144236442Sdim		set\
145262801Sdim		shared_mutex\
146236442Sdim		sstream\
147236442Sdim		stack\
148236442Sdim		stdexcept\
149236442Sdim		streambuf\
150236442Sdim		string\
151236442Sdim		strstream\
152236442Sdim		system_error\
153236442Sdim		tgmath.h\
154236442Sdim		thread\
155236442Sdim		tuple\
156236442Sdim		type_traits\
157236442Sdim		typeindex\
158236442Sdim		typeinfo\
159236442Sdim		unordered_map\
160236442Sdim		unordered_set\
161236442Sdim		utility\
162236442Sdim		valarray\
163236442Sdim		vector
164236444SdimRT_HEADERS=	cxxabi.h\
165236444Sdim		unwind.h\
166236444Sdim		unwind-arm.h\
167236444Sdim		unwind-itanium.h
168227983Stheraven
169227983Stheraven.for hdr in ${STD_HEADERS}
170236442SdimSTD+=		${HDRDIR}/${hdr}
171255206StheravenINCSLINKS+=	${CXXINCLUDEDIR}/${hdr} ${CXXINCLUDEDIR}/tr1/${hdr}
172227983Stheraven.endfor
173236444Sdim.for hdr in ${RT_HEADERS}
174236444SdimSTD+=		${LIBCXXRTDIR}/${hdr}
175236444Sdim.endfor
176236442SdimSTDDIR=		${CXXINCLUDEDIR}
177227983Stheraven
178262801SdimEXP_HEADERS=	dynarray\
179262801Sdim		optional
180262801Sdim
181262801Sdim.for hdr in ${EXP_HEADERS}
182262801SdimEXP+=		${HDRDIR}/experimental/${hdr}
183262801Sdim.endfor
184262801SdimEXPDIR=		${CXXINCLUDEDIR}/experimental
185262801Sdim
186236442SdimEXT_HEADERS=	__hash\
187236442Sdim		hash_map\
188236442Sdim		hash_set
189227983Stheraven
190227983Stheraven.for hdr in ${EXT_HEADERS}
191236442SdimEXT+=		${HDRDIR}/ext/${hdr}
192227983Stheraven.endfor
193236442SdimEXTDIR=		${CXXINCLUDEDIR}/ext
194227983Stheraven
195227983Stheraven.include <bsd.lib.mk>
196