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\
28236442Sdim		random.cpp\
29236442Sdim		regex.cpp\
30236442Sdim		stdexcept.cpp\
31236442Sdim		string.cpp\
32236442Sdim		strstream.cpp\
33236442Sdim		system_error.cpp\
34236442Sdim		thread.cpp\
35236442Sdim		typeinfo.cpp\
36236442Sdim		utility.cpp\
37236442Sdim		valarray.cpp
38227983Stheraven
39239680SdimCXXRT_SRCS+=	libelftc_dem_gnu3.c\
40239680Sdim		terminate.cc\
41239680Sdim		dynamic_cast.cc\
42239680Sdim		memory.cc\
43239680Sdim		auxhelper.cc\
44239680Sdim		exception.cc\
45239680Sdim		stdexcept.cc\
46239680Sdim		typeinfo.cc\
47239680Sdim		guard.cc
48239680Sdim
49239680Sdim.for _S in ${CXXRT_SRCS}
50239680SdimSTATICOBJS+=	cxxrt_${_S:R}.o
51239680Sdimcxxrt_${_S}:
52239680Sdim	ln -sf ${LIBCXXRTDIR}/${_S} ${.TARGET}
53239680Sdim.endfor
54239680Sdim
55236442SdimWARNS=		0
56239680SdimCFLAGS+=	-I${HDRDIR} -I${LIBCXXRTDIR} -nostdlib -DLIBCXXRT
57242472Sdim.if empty(CXXFLAGS:M-std=*)
58239680SdimCXXFLAGS+=	-std=c++0x
59241909Sdim.endif
60227983Stheraven
61236442SdimDPADD=		${LIBCXXRT}
62236442SdimLDADD=		-lcxxrt
63236442SdimLDFLAGS+=	--verbose
64236442SdimINCSGROUPS=	STD EXT
65227983Stheraven
66236442SdimSTD_HEADERS=	__bit_reference\
67236442Sdim		__config\
68236442Sdim		__debug\
69236442Sdim		__functional_03\
70236442Sdim		__functional_base\
71236442Sdim		__functional_base_03\
72236442Sdim		__hash_table\
73236442Sdim		__locale\
74236442Sdim		__mutex_base\
75236442Sdim		__split_buffer\
76236442Sdim		__sso_allocator\
77236442Sdim		__std_stream\
78236442Sdim		__tree\
79236442Sdim		__tuple\
80236442Sdim		__tuple_03\
81236442Sdim		__undef_min_max\
82236442Sdim		algorithm\
83236442Sdim		array\
84236442Sdim		atomic\
85236442Sdim		bitset\
86236442Sdim		cassert\
87236442Sdim		ccomplex\
88236442Sdim		cctype\
89236442Sdim		cerrno\
90236442Sdim		cfenv\
91236442Sdim		cfloat\
92236442Sdim		chrono\
93236442Sdim		cinttypes\
94236442Sdim		ciso646\
95236442Sdim		climits\
96236442Sdim		clocale\
97236442Sdim		cmath\
98236442Sdim		codecvt\
99236442Sdim		complex\
100236442Sdim		complex.h\
101236442Sdim		condition_variable\
102236442Sdim		csetjmp\
103236442Sdim		csignal\
104236442Sdim		cstdarg\
105236442Sdim		cstdbool\
106236442Sdim		cstddef\
107236442Sdim		cstdint\
108236442Sdim		cstdio\
109236442Sdim		cstdlib\
110236442Sdim		cstring\
111236442Sdim		ctgmath\
112236442Sdim		ctime\
113236442Sdim		cwchar\
114236442Sdim		cwctype\
115236442Sdim		deque\
116236442Sdim		exception\
117236442Sdim		forward_list\
118236442Sdim		fstream\
119236442Sdim		functional\
120236442Sdim		future\
121236442Sdim		initializer_list\
122236442Sdim		iomanip\
123236442Sdim		ios\
124236442Sdim		iosfwd\
125236442Sdim		iostream\
126236442Sdim		istream\
127236442Sdim		iterator\
128236442Sdim		limits\
129236442Sdim		list\
130236442Sdim		locale\
131236442Sdim		map\
132236442Sdim		memory\
133236442Sdim		mutex\
134236442Sdim		new\
135236442Sdim		numeric\
136236442Sdim		ostream\
137236442Sdim		queue\
138236442Sdim		random\
139236442Sdim		ratio\
140236442Sdim		regex\
141236442Sdim		scoped_allocator\
142236442Sdim		set\
143236442Sdim		sstream\
144236442Sdim		stack\
145236442Sdim		stdexcept\
146236442Sdim		streambuf\
147236442Sdim		string\
148236442Sdim		strstream\
149236442Sdim		system_error\
150236442Sdim		tgmath.h\
151236442Sdim		thread\
152236442Sdim		tuple\
153236442Sdim		type_traits\
154236442Sdim		typeindex\
155236442Sdim		typeinfo\
156236442Sdim		unordered_map\
157236442Sdim		unordered_set\
158236442Sdim		utility\
159236442Sdim		valarray\
160236442Sdim		vector
161236444SdimRT_HEADERS=	cxxabi.h\
162236444Sdim		unwind.h\
163236444Sdim		unwind-arm.h\
164236444Sdim		unwind-itanium.h
165227983Stheraven
166227983Stheraven.for hdr in ${STD_HEADERS}
167236442SdimSTD+=		${HDRDIR}/${hdr}
168255206StheravenINCSLINKS+=	${CXXINCLUDEDIR}/${hdr} ${CXXINCLUDEDIR}/tr1/${hdr}
169227983Stheraven.endfor
170236444Sdim.for hdr in ${RT_HEADERS}
171236444SdimSTD+=		${LIBCXXRTDIR}/${hdr}
172236444Sdim.endfor
173236442SdimSTDDIR=		${CXXINCLUDEDIR}
174227983Stheraven
175236442SdimEXT_HEADERS=	__hash\
176236442Sdim		hash_map\
177236442Sdim		hash_set
178227983Stheraven
179227983Stheraven.for hdr in ${EXT_HEADERS}
180236442SdimEXT+=		${HDRDIR}/ext/${hdr}
181227983Stheraven.endfor
182236442SdimEXTDIR=		${CXXINCLUDEDIR}/ext
183227983Stheraven
184227983Stheraven.include <bsd.lib.mk>
185