xref: /netbsd-src/external/gpl3/gcc/lib/libstdc++-v3/Makefile (revision 48fb7bfab72acd4281a53bbee5ccf3f809019e75)
1#	$NetBSD: Makefile,v 1.8 2014/02/26 09:54:33 mrg Exp $
2
3REQUIRETOOLS=	yes
4NOLINT=		# defined
5
6.include <bsd.init.mk>
7
8.include "Makefile.inc"
9
10LIB=		stdc++
11LDADD=		-lgcc_s
12
13LIBDPLIBS+=	m ${.CURDIR}/../../../../../lib/libm
14
15UNSUPPORTED_COMPILER.clang=	# defined
16CWARNFLAGS.clang+=	-Wno-logical-op-parentheses \
17			-Wno-deprecated-writable-strings -Wno-parentheses
18
19.if exists(${.CURDIR}/arch/${GCC_MACHINE_ARCH}/defs.mk) && ${MKGCC} != "no"
20.include "${.CURDIR}/arch/${GCC_MACHINE_ARCH}/defs.mk"
21
22SHLIB_MAJOR=	7
23SHLIB_MINOR=	1
24
25SUBDIR=		include
26
27.include "${.CURDIR}/../libsupc++/Makefile.common"
28
29SRCS=		${LIBSUPCXXSRCS} ${LIBSTDCXXSRCS}
30# affects profiling; can't switch it off just for profiling easily.
31#CXXFLAGS+=	${G_SECTION_FLAGS}
32#CXXFLAGS+=	-ffunction-sections -fdata-sections
33CXXFLAGS+=	-fno-implicit-templates -fdiagnostics-show-location=once
34CPPFLAGS+=	-I${DIST}/libstdc++-v3/include
35CPPFLAGS+=	-I${.CURDIR}/arch/${GCC_MACHINE_ARCH}
36CPPFLAGS+=	-I${.CURDIR}/../libgomp/arch/${GCC_MACHINE_ARCH}
37
38CONF=		${DIST}/libstdc++-v3/config
39
40#BUILDSYMLINKS+=	${CONF}/io/basic_file_stdio.cc		basic_file.cc \
41#		${CONF}/locale/generic/c_locale.cc	c++locale.cc
42
43GLIBCPP_INCLUDE_DIR=	${DESTDIR}/usr/include/g++
44
45COPTS.cp-demangle.c = -Wno-stack-protector
46COPTS.fstream-inst.cc = -Wno-stack-protector
47COPTS.locale-inst.cc = -Wno-stack-protector
48COPTS.misc-inst.cc = -Wno-stack-protector
49COPTS.ostream-inst.cc = -Wno-stack-protector
50COPTS.valarray-inst.cc = -Wno-stack-protector
51COPTS.wlocale-inst.cc = -Wno-stack-protector
52COPTS.concept-inst.cc=	-D_GLIBCPP_CONCEPT_CHECKS -fimplicit-templates
53CPPFLAGS.strstream.cc=	-I$(GLIBCPP_INCLUDE_DIR)/backward -Wno-deprecated
54
55# For GCC 4.5
56.if ${HAVE_GCC} >= 45
57# XXX also need this for some PCHs.
58CPPFLAGS.atomic.cc = -std=gnu++0x
59CPPFLAGS.compatibility-c++0x.cc = -std=gnu++0x
60CPPFLAGS.functexcept.cc = -std=gnu++0x
61CPPFLAGS.hash_c++0x.cc = -std=gnu++0x
62CPPFLAGS.hashtable_c++0x.cc = -std=gnu++0x
63CPPFLAGS.limits.cc = -std=gnu++0x
64CPPFLAGS.system_error.cc = -std=gnu++0x
65CPPFLAGS.fstream-inst.cc = -std=gnu++0x
66CPPFLAGS.string-inst.cc = -std=gnu++0x
67CPPFLAGS.wstring-inst.cc = -std=gnu++0x
68CPPFLAGS.mutex.cc = -std=gnu++0x
69CPPFLAGS.condition_variable.cc = -std=gnu++0x
70CPPFLAGS.chrono.cc = -std=gnu++0x
71CPPFLAGS.thread.cc = -std=gnu++0x
72CPPFLAGS.future.cc = -std=gnu++0x
73
74CPPFLAGS.cp-demangle.cc += -DIN_GLIBCPP_V3
75CPPFLAGS.concept-inst.cc += -D_GLIBCXX_CONCEPT_CHECKS
76CPPFLAGS.parallel_list.cc += -D_GLIBCXX_PARALLEL
77CPPFLAGS.parallel_settings.cc += -D_GLIBCXX_PARALLEL
78CPPFLAGS.compatibility-parallel_list.cc += -D_GLIBCXX_PARALLEL
79.endif
80
81# XXX
82MKDEPFLAGS+=	-I$(GLIBCPP_INCLUDE_DIR)/backward
83
84.include <bsd.lib.mk>
85.include <bsd.subdir.mk>
86.include <bsd.info.mk>
87
88GLIBCXX_SRCDIR=	${DIST}/libstdc++-v3
89
90codecvt_members.cc: ${GLIBCXX_SRCDIR}/${G_CCODECVT_CC}
91	${_MKTARGET_CREATE}
92	rm -f ${.TARGET}
93	ln -s ${GLIBCXX_SRCDIR}/${G_CCODECVT_CC} ${.TARGET}
94
95collate_members.cc: ${GLIBCXX_SRCDIR}/${G_CCOLLATE_CC}
96	${_MKTARGET_CREATE}
97	rm -f ${.TARGET}
98	ln -s ${GLIBCXX_SRCDIR}/${G_CCOLLATE_CC} ${.TARGET}
99
100ctype_members.cc: ${GLIBCXX_SRCDIR}/${G_CCTYPE_CC}
101	${_MKTARGET_CREATE}
102	rm -f ${.TARGET}
103	ln -s ${GLIBCXX_SRCDIR}/${G_CCTYPE_CC} ${.TARGET}
104
105messages_members.cc: ${GLIBCXX_SRCDIR}/${G_CMESSAGES_CC}
106	${_MKTARGET_CREATE}
107	rm -f ${.TARGET}
108	ln -s ${GLIBCXX_SRCDIR}/${G_CMESSAGES_CC} ${.TARGET}
109
110monetary_members.cc: ${GLIBCXX_SRCDIR}/${G_CMONEY_CC}
111	${_MKTARGET_CREATE}
112	rm -f ${.TARGET}
113	ln -s ${GLIBCXX_SRCDIR}/${G_CMONEY_CC} ${.TARGET}
114
115numeric_members.cc: ${GLIBCXX_SRCDIR}/${G_CNUMERIC_CC}
116	${_MKTARGET_CREATE}
117	rm -f ${.TARGET}
118	ln -s ${GLIBCXX_SRCDIR}/${G_CNUMERIC_CC} ${.TARGET}
119
120time_members.cc: ${GLIBCXX_SRCDIR}/${G_CTIME_CC}
121	${_MKTARGET_CREATE}
122	rm -f ${.TARGET}
123	ln -s ${GLIBCXX_SRCDIR}/${G_CTIME_CC} ${.TARGET}
124
125atomicity.cc: ${G_atomicity_file}
126	${_MKTARGET_CREATE}
127	rm -f ${.TARGET}
128	ln -s ${G_atomicity_file} ${.TARGET}
129
130c++locale.cc: ${GLIBCXX_SRCDIR}/${G_CLOCALE_CC}
131	${_MKTARGET_CREATE}
132	rm -f ${.TARGET}
133	ln -s ${GLIBCXX_SRCDIR}/${G_CLOCALE_CC} ${.TARGET}
134
135basic_file.cc: ${GLIBCXX_SRCDIR}/${G_BASIC_FILE_CC}
136	${_MKTARGET_CREATE}
137	rm -f ${.TARGET}
138	ln -s ${GLIBCXX_SRCDIR}/${G_BASIC_FILE_CC} ${.TARGET}
139
140
141CLEANFILES+=	atomicity.cc basic_file.cc c++locale.cc codecvt_members.cc
142CLEANFILES+=	collate_members.cc ctype_members.cc messages_members.cc
143CLEANFILES+=	monetary_members.cc numeric_members.cc time_members.cc
144
145${SRCS}: unwind.h
146unwind.h: ${G_UNWIND_H}
147	${_MKTARGET_CREATE}
148	rm -f ${.TARGET}
149	ln -s ${G_UNWIND_H} ${.TARGET}
150CLEANFILES+= unwind.h
151
152.PATH:	${DIST}/libstdc++-v3/src \
153	${DIST}/libstdc++-v3/libsupc++ \
154	${DIST}/libiberty \
155	${CONF}/locale/generic \
156	${.CURDIR}/arch/${GCC_MACHINE_ARCH}
157
158${OBJS}: ${.CURDIR}/arch/${GCC_MACHINE_ARCH}/defs.mk
159.else
160.include <bsd.prog.mk> # do nothing
161.endif
162