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