xref: /dragonfly/gnu/lib/gcc47/libstdc++/Makefile (revision 19380330)
1.include "../Makefile.inc"
2.include "../libsupc++/Makefile.src"
3.include "Makefile.headers"
4SRCDIR=	${GCCDIR}/libstdc++-v3
5.PATH:	${SRCDIR}
6.PATH:	${SRCDIR}/libsupc++
7.PATH:	${SRCDIR}/src
8.PATH:	${SRCDIR}/src/c++11
9.PATH:	${SRCDIR}/src/c++98
10.PATH:	${SRCDIR}/libmath
11.PATH:	${SRCDIR}/config/io
12.PATH:	${SRCDIR}/config/locale/dragonfly
13.PATH:	${SRCDIR}/config/locale/generic
14.PATH:	${GCCDIR}/gcc
15.PATH:	${GCCDIR}/libgcc
16
17# Vendor lists shared lib version as 6, not 9.
18LIB=		stdc++
19SHLIB_MAJOR=	9
20
21CFLAGS+=	-DIN_GLIBCPP_V3 -DHAVE_CONFIG_H
22CFLAGS+=	-I${.CURDIR}
23CFLAGS+=	-I${.OBJDIR}
24CFLAGS+=	-I${GCCDIR}/gcc
25CFLAGS+=	-I${GCCDIR}/libgcc
26CFLAGS+=	-I${GCCDIR}/libiberty
27CFLAGS+=	-I${GCCDIR}/include
28CFLAGS+=	-I${GCCDIR}/libcpp/include
29CFLAGS+=	-I${SRCDIR}/include
30CFLAGS+=	-I${SRCDIR}/include/std
31CFLAGS+=	-I${SRCDIR}/include/c_std
32CFLAGS+=	-I${SRCDIR}/include/c_global
33CFLAGS+=	-I${SRCDIR}/include/backward
34CFLAGS+=	-I${SRCDIR}/libsupc++
35CXXFLAGS+=	-fno-implicit-templates
36CXXFLAGS+=	-fdiagnostics-show-location=once
37CXXFLAGS+=	-ffunction-sections -fdata-sections
38CXXFLAGS+=	-Wno-deprecated
39LDFLAGS+=	-Wl,--version-script=${.CURDIR}/libstdc++-symbols.ver
40
41THRLIB= 	${.OBJDIR}/../../../../lib/libpthread/libpthread.so
42LDADD+= 	${THRLIB} -lm
43DPADD+= 	${THRLIB} ${LIBM}
44
45# Slightly modified from libstdc++/src/c++98/Makefile.in
46# sources_1998 is the equivalent of libc_98convenience.a
47# sources_2011 is the equivalent of libc_11convenience.a
48host_sources_1998 = \
49	atomicity.cc \
50	codecvt_members.cc \
51	collate_members.cc \
52	ctype_configure_char.cc \
53	ctype_members.cc \
54	messages_members.cc \
55	monetary_members.cc \
56	numeric_members.cc \
57	time_members.cc
58
59parallel_sources_1998 =
60
61inst_sources_1998 = \
62	allocator-inst.cc \
63	concept-inst.cc \
64	ext-inst.cc \
65	ios-inst.cc \
66	iostream-inst.cc \
67	istream-inst.cc \
68	locale-inst.cc \
69	misc-inst.cc \
70	ostream-inst.cc \
71	sstream-inst.cc \
72	streambuf-inst.cc \
73	wlocale-inst.cc
74
75host_sources_extra_1998 = \
76	basic_file.cc \
77	c++locale.cc \
78	${inst_sources_1998} \
79	${parallel_sources_1998}
80
81sources_1998 = \
82	bitmap_allocator.cc \
83	pool_allocator.cc \
84	mt_allocator.cc \
85	codecvt.cc \
86	complex_io.cc \
87	ctype.cc \
88	globals_io.cc \
89	hash_tr1.cc \
90	hashtable_tr1.cc \
91	ios.cc \
92	ios_failure.cc \
93	ios_init.cc \
94	ios_locale.cc \
95	list.cc \
96	locale.cc \
97	locale_init.cc \
98	locale_facets.cc \
99	localename.cc \
100	math_stubs_float.cc \
101	math_stubs_long_double.cc \
102	stdexcept.cc \
103	strstream.cc \
104	tree-cxx.cc \
105	istream.cc \
106	streambuf.cc \
107	valarray.cc \
108	${host_sources_1998} \
109	${host_sources_extra_1998}
110
111inst_sources_2011 = \
112	fstream-inst.cc \
113	string-inst.cc \
114	wstring-inst.cc
115
116sources_2011 = \
117	chrono.cc \
118	condition_variable.cc \
119	debug-cxx.cc \
120	functexcept.cc \
121	functional.cc \
122	future.cc \
123	hash_c++0x.cc \
124	hashtable_c++0x.cc \
125	limits.cc \
126	mutex.cc \
127	placeholders.cc \
128	regex.cc \
129	shared_ptr.cc \
130	system_error.cc \
131	thread.cc \
132	${inst_sources_2011}
133
134ldbl_compat_sources =
135parallel_compat_sources =
136
137cxx98_sources = \
138	compatibility.cc \
139	compatibility-debug_list.cc \
140	compatibility-debug_list-2.cc \
141	compatibility-list.cc \
142	compatibility-list-2.cc \
143	${ldbl_compat_sources} \
144	${parallel_compat_sources}
145
146cxx11_sources = \
147	compatibility-c++0x.cc \
148	compatibility-atomic-c++0x.cc \
149	compatibility-thread-c++0x.cc
150
151SRCS+=	${SUPCXX} \
152	cp-demangle.c \
153	${sources_1998} \
154	${sources_2011} \
155	${cxx98_sources} \
156	${cxx11_sources}
157
158FLAGS_GROUPS=		gnu0x gnu11
159gnu0x_FLAGS=		-std=gnu++0x
160gnu11_FLAGS=		-std=gnu++11
161gnu0x_FLAGS_FILES=	eh_ptr.cc \
162			eh_throw.cc \
163			guard.cc \
164			nested_exception.cc
165gnu11_FLAGS_FILES=	chrono.cc \
166			condition_variable.cc \
167			debug-cxx.cc \
168			functexcept.cc \
169			functional.cc \
170			future.cc \
171			hash_c++0x.cc \
172			hashtable_c++0x.cc \
173			limits.cc \
174			mutex.cc \
175			placeholders.cc \
176			regex.cc \
177			shared_ptr.cc \
178			system_error.cc \
179			thread.cc \
180			fstream-inst.cc \
181			string-inst.cc \
182			wstring-inst.cc \
183			compatibility-c++0x.cc \
184			compatibility-atomic-c++0x.cc \
185			compatibility-thread-c++0x.cc
186
187#generated sources
188SRCS+=	unwind.h \
189	${CONF_HEADERS:T} \
190	bits/gthr.h \
191	bits/gthr-default.h \
192	bits/c++config.h
193
194HD=	${INCLUDEDIR}/c++/${GCCPOINTVER}
195
196# These sections are detailed in Makefile.headers
197# parallel section is empty, skip it
198# make buildincludes, make installincludes before make depend
199glibcxx_srcdir=	${SRCDIR}
200HSECT=	std bits bits_sup backward ext ext_compat tr1 tr2 decimal \
201	c_base c_compatibility debug profile profile_impl host supc
202PBSECT=	1 2 3 4 5 6 7
203
204.for i in ${HSECT}
205INCSGROUPS+=	 	${i}_headers
206${i}_headersDIR= 	${HD}/${${i}_builddir}
207.endfor
208
209PATHGROUP=
210.for i in ${PBSECT}
211.  for k in ${pb_headers${i}}
212.    if ${PATHGROUP:M${k:H:T}} == ""
213PATHGROUP+=${k:H:T}
214PATH_${k:H:T}=${k:H:T}
215.    endif
216PBG_${k:H:T}+=${k}
217.  endfor
218.endfor
219
220INCSGROUPS+=		PBG_pb_ds
221PBG_pb_dsDIR=		${HD}/${pb_builddir}
222
223INCSGROUPS+=		PBG_detail
224PBG_detailDIR=		${HD}/${pb_builddir}/detail
225
226.for k in ${PATHGROUP:Npb_ds:Ndetail}
227INCSGROUPS+=		PBG_${k}
228PBG_${k}DIR=		${HD}/${pb_builddir}/detail/${PATH_${k}}
229.endfor
230
231INCSGROUPS+=		host_headers_extra
232host_headers_extraDIR=	${HD}/bits
233host_headers_extraNAME_basic_file_stdio.h=	basic_file.h
234host_headers_extraNAME_c_locale.h=		c++locale.h
235host_headers_extraNAME_c_io_stdio.h+=		c++io.h
236host_headers_extraNAME_new_allocator_base.h=	c++allocator.h
237
238CONF_HEADERS=	locale/generic/c++locale_internal.h \
239		abi/compatibility.h
240
241atomicity.cc: ${SRCDIR}/config/cpu/generic/atomicity_builtins/atomicity.h
242	cp ${.ALLSRC} ${.TARGET}
243
244ctype_configure_char.cc: ${SRCDIR}/config/os/bsd/dragonfly/${.TARGET}
245	cp ${.ALLSRC} ${.TARGET}
246
247basic_file.cc: ${SRCDIR}/config/io/basic_file_stdio.cc
248	cp ${.ALLSRC} ${.TARGET}
249
250c++locale.cc: ${SRCDIR}/config/locale/dragonfly/c_locale.cc
251	cp ${.ALLSRC} ${.TARGET}
252
253unwind.h: unwind-generic.h
254	cp ${.ALLSRC} ${.TARGET}
255
256copybits:
257	mkdir -p bits
258
259.for F in ${CONF_HEADERS}
260${F:T}: copybits
261	cp ${SRCDIR}/config/${F} bits/
262.endfor
263
264# We can't add libiberty to the PATH because it will take the regex.o there
265# before compiling regex.cc into an object file.  Just recompile
266
267cp-demangle.c: ${GCCDIR}/libiberty/${.TARGET}
268	cp ${.ALLSRC} ${.TARGET}
269
270# debug.cc, tree.cc and vec.cc are also getting pre-empted by gcc/ versions
271debug-cxx.cc: ${SRCDIR}/src/c++11/debug.cc
272	cp ${.ALLSRC} ${.TARGET}
273
274tree-cxx.cc: ${SRCDIR}/src/c++98/tree.cc
275	cp ${.ALLSRC} ${.TARGET}
276
277vec-cxx.cc: ${SRCDIR}/libsupc++/vec.cc
278	cp ${.ALLSRC} ${.TARGET}
279
280CLEANDIRS+=	bits
281CLEANFILES+=	atomicity.cc basic_file.cc c++locale.cc \
282		ctype_configure_char.cc unwind.h \
283		cp-demangle.c debug-cxx.cc tree-cxx.cc vec-cxx.cc
284
285depend all: bits/c++config.h
286
287.include <bsd.lib.mk>
288