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