1227983Stheraven# $FreeBSD$
2227983Stheraven
3236600SdimLIBCXXRTDIR=	${.CURDIR}/../../contrib/libcxxrt
4236600SdimHDRDIR=		${.CURDIR}/../../contrib/libc++/include
5236600SdimSRCDIR=		${.CURDIR}/../../contrib/libc++/src
6236600SdimCXXINCLUDEDIR=	${INCLUDEDIR}/c++/v${SHLIB_MAJOR}
7227983Stheraven
8227983Stheraven.PATH: ${SRCDIR}
9227983Stheraven
10236600SdimLIB=		c++
11236600SdimSHLIB_MAJOR=	1
12258060SdimSHLIB_LDSCRIPT=	libc++.ldscript
13227983Stheraven
14236600SdimSRCS+=		algorithm.cpp\
15236600Sdim		bind.cpp\
16236600Sdim		chrono.cpp\
17236600Sdim		condition_variable.cpp\
18236600Sdim		debug.cpp\
19236600Sdim		exception.cpp\
20236600Sdim		future.cpp\
21236600Sdim		hash.cpp\
22236600Sdim		ios.cpp\
23236600Sdim		iostream.cpp\
24236600Sdim		locale.cpp\
25236600Sdim		memory.cpp\
26236600Sdim		mutex.cpp\
27236600Sdim		new.cpp\
28262801Sdim		optional.cpp\
29236600Sdim		random.cpp\
30236600Sdim		regex.cpp\
31262801Sdim		shared_mutex.cpp\
32236600Sdim		stdexcept.cpp\
33236600Sdim		string.cpp\
34236600Sdim		strstream.cpp\
35236600Sdim		system_error.cpp\
36236600Sdim		thread.cpp\
37236600Sdim		typeinfo.cpp\
38236600Sdim		utility.cpp\
39236600Sdim		valarray.cpp
40227983Stheraven
41240236SdimCXXRT_SRCS+=	libelftc_dem_gnu3.c\
42240236Sdim		terminate.cc\
43240236Sdim		dynamic_cast.cc\
44240236Sdim		memory.cc\
45240236Sdim		auxhelper.cc\
46240236Sdim		exception.cc\
47240236Sdim		stdexcept.cc\
48240236Sdim		typeinfo.cc\
49240236Sdim		guard.cc
50240236Sdim
51240236Sdim.for _S in ${CXXRT_SRCS}
52240236SdimSTATICOBJS+=	cxxrt_${_S:R}.o
53240236Sdimcxxrt_${_S}:
54240236Sdim	ln -sf ${LIBCXXRTDIR}/${_S} ${.TARGET}
55240236Sdim.endfor
56240236Sdim
57236600SdimWARNS=		0
58240236SdimCFLAGS+=	-I${HDRDIR} -I${LIBCXXRTDIR} -nostdlib -DLIBCXXRT
59242600Sdim.if empty(CXXFLAGS:M-std=*)
60240236SdimCXXFLAGS+=	-std=c++0x
61242329Sdim.endif
62227983Stheraven
63236600SdimDPADD=		${LIBCXXRT}
64236600SdimLDADD=		-lcxxrt
65236600SdimLDFLAGS+=	--verbose
66262801SdimINCSGROUPS=	STD EXP EXT
67227983Stheraven
68236600SdimSTD_HEADERS=	__bit_reference\
69236600Sdim		__config\
70236600Sdim		__debug\
71236600Sdim		__functional_03\
72236600Sdim		__functional_base\
73236600Sdim		__functional_base_03\
74236600Sdim		__hash_table\
75236600Sdim		__locale\
76236600Sdim		__mutex_base\
77236600Sdim		__split_buffer\
78236600Sdim		__sso_allocator\
79236600Sdim		__std_stream\
80236600Sdim		__tree\
81236600Sdim		__tuple\
82236600Sdim		__tuple_03\
83236600Sdim		__undef_min_max\
84236600Sdim		algorithm\
85236600Sdim		array\
86236600Sdim		atomic\
87236600Sdim		bitset\
88236600Sdim		cassert\
89236600Sdim		ccomplex\
90236600Sdim		cctype\
91236600Sdim		cerrno\
92236600Sdim		cfenv\
93236600Sdim		cfloat\
94236600Sdim		chrono\
95236600Sdim		cinttypes\
96236600Sdim		ciso646\
97236600Sdim		climits\
98236600Sdim		clocale\
99236600Sdim		cmath\
100236600Sdim		codecvt\
101236600Sdim		complex\
102236600Sdim		complex.h\
103236600Sdim		condition_variable\
104236600Sdim		csetjmp\
105236600Sdim		csignal\
106236600Sdim		cstdarg\
107236600Sdim		cstdbool\
108236600Sdim		cstddef\
109236600Sdim		cstdint\
110236600Sdim		cstdio\
111236600Sdim		cstdlib\
112236600Sdim		cstring\
113236600Sdim		ctgmath\
114236600Sdim		ctime\
115236600Sdim		cwchar\
116236600Sdim		cwctype\
117236600Sdim		deque\
118236600Sdim		exception\
119236600Sdim		forward_list\
120236600Sdim		fstream\
121236600Sdim		functional\
122236600Sdim		future\
123236600Sdim		initializer_list\
124236600Sdim		iomanip\
125236600Sdim		ios\
126236600Sdim		iosfwd\
127236600Sdim		iostream\
128236600Sdim		istream\
129236600Sdim		iterator\
130236600Sdim		limits\
131236600Sdim		list\
132236600Sdim		locale\
133236600Sdim		map\
134236600Sdim		memory\
135236600Sdim		mutex\
136236600Sdim		new\
137236600Sdim		numeric\
138236600Sdim		ostream\
139236600Sdim		queue\
140236600Sdim		random\
141236600Sdim		ratio\
142236600Sdim		regex\
143236600Sdim		scoped_allocator\
144236600Sdim		set\
145262801Sdim		shared_mutex\
146236600Sdim		sstream\
147236600Sdim		stack\
148236600Sdim		stdexcept\
149236600Sdim		streambuf\
150236600Sdim		string\
151236600Sdim		strstream\
152236600Sdim		system_error\
153236600Sdim		tgmath.h\
154236600Sdim		thread\
155236600Sdim		tuple\
156236600Sdim		type_traits\
157236600Sdim		typeindex\
158236600Sdim		typeinfo\
159236600Sdim		unordered_map\
160236600Sdim		unordered_set\
161236600Sdim		utility\
162236600Sdim		valarray\
163236600Sdim		vector
164236601SdimRT_HEADERS=	cxxabi.h\
165236601Sdim		unwind.h\
166236601Sdim		unwind-arm.h\
167236601Sdim		unwind-itanium.h
168227983Stheraven
169227983Stheraven.for hdr in ${STD_HEADERS}
170236600SdimSTD+=		${HDRDIR}/${hdr}
171227983Stheraven.endfor
172236601Sdim.for hdr in ${RT_HEADERS}
173236601SdimSTD+=		${LIBCXXRTDIR}/${hdr}
174236601Sdim.endfor
175236600SdimSTDDIR=		${CXXINCLUDEDIR}
176227983Stheraven
177262801SdimEXP_HEADERS=	dynarray\
178262801Sdim		optional
179262801Sdim
180262801Sdim.for hdr in ${EXP_HEADERS}
181262801SdimEXP+=		${HDRDIR}/experimental/${hdr}
182262801Sdim.endfor
183262801SdimEXPDIR=		${CXXINCLUDEDIR}/experimental
184262801Sdim
185236600SdimEXT_HEADERS=	__hash\
186236600Sdim		hash_map\
187236600Sdim		hash_set
188227983Stheraven
189227983Stheraven.for hdr in ${EXT_HEADERS}
190236600SdimEXT+=		${HDRDIR}/ext/${hdr}
191227983Stheraven.endfor
192236600SdimEXTDIR=		${CXXINCLUDEDIR}/ext
193227983Stheraven
194227983Stheraven.include <bsd.lib.mk>
195