1#	$NetBSD: Makefile,v 1.6 2010/07/06 05:59:51 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
13CWARNFLAGS.clang+=	-Wno-logical-op-parentheses \
14			-Wno-deprecated-writable-strings -Wno-parentheses
15
16.if exists(${.CURDIR}/arch/${MACHINE_ARCH}/defs.mk) && ${MKGCC} != "no"
17.include "${.CURDIR}/arch/${MACHINE_ARCH}/defs.mk"
18
19SHLIB_MAJOR=	7
20SHLIB_MINOR=	0
21
22SUBDIR=		include
23
24INCS=		c++config.h
25INCSDIR=	/usr/include/g++
26
27.include "${.CURDIR}/../libsupc++4/Makefile.common"
28
29SRCS=		${LIBMATHSRCS} ${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
35
36CONF=		${DIST}/libstdc++-v3/config
37
38#BUILDSYMLINKS+=	${CONF}/io/basic_file_stdio.cc		basic_file.cc \
39#		${CONF}/locale/generic/c_locale.cc	c++locale.cc
40
41GLIBCPP_INCLUDE_DIR=	${DESTDIR}/usr/include/g++
42
43COPTS.cp-demangle.c = -Wno-stack-protector
44COPTS.fstream-inst.cc = -Wno-stack-protector
45COPTS.locale-inst.cc = -Wno-stack-protector
46COPTS.misc-inst.cc = -Wno-stack-protector
47COPTS.ostream-inst.cc = -Wno-stack-protector
48COPTS.valarray-inst.cc = -Wno-stack-protector
49COPTS.wlocale-inst.cc = -Wno-stack-protector
50COPTS.concept-inst.cc=	-D_GLIBCPP_CONCEPT_CHECKS -fimplicit-templates
51CPPFLAGS.strstream.cc=	-I$(GLIBCPP_INCLUDE_DIR)/backward -Wno-deprecated
52
53# XXX
54MKDEPFLAGS+=	-I$(GLIBCPP_INCLUDE_DIR)/backward
55
56.include <bsd.lib.mk>
57.include <bsd.subdir.mk>
58.include <bsd.info.mk>
59
60GLIBCXX_SRCDIR=	${DIST}/libstdc++-v3
61
62codecvt_members.cc: ${GLIBCXX_SRCDIR}/${G_CCODECVT_CC}
63	${_MKTARGET_CREATE}
64	rm -f ${.TARGET}
65	ln -s ${GLIBCXX_SRCDIR}/${G_CCODECVT_CC} ${.TARGET}
66
67collate_members.cc: ${GLIBCXX_SRCDIR}/${G_CCOLLATE_CC}
68	${_MKTARGET_CREATE}
69	rm -f ${.TARGET}
70	ln -s ${GLIBCXX_SRCDIR}/${G_CCOLLATE_CC} ${.TARGET}
71
72ctype_members.cc: ${GLIBCXX_SRCDIR}/${G_CCTYPE_CC}
73	${_MKTARGET_CREATE}
74	rm -f ${.TARGET}
75	ln -s ${GLIBCXX_SRCDIR}/${G_CCTYPE_CC} ${.TARGET}
76
77messages_members.cc: ${GLIBCXX_SRCDIR}/${G_CMESSAGES_CC}
78	${_MKTARGET_CREATE}
79	rm -f ${.TARGET}
80	ln -s ${GLIBCXX_SRCDIR}/${G_CMESSAGES_CC} ${.TARGET}
81
82monetary_members.cc: ${GLIBCXX_SRCDIR}/${G_CMONEY_CC}
83	${_MKTARGET_CREATE}
84	rm -f ${.TARGET}
85	ln -s ${GLIBCXX_SRCDIR}/${G_CMONEY_CC} ${.TARGET}
86
87numeric_members.cc: ${GLIBCXX_SRCDIR}/${G_CNUMERIC_CC}
88	${_MKTARGET_CREATE}
89	rm -f ${.TARGET}
90	ln -s ${GLIBCXX_SRCDIR}/${G_CNUMERIC_CC} ${.TARGET}
91
92time_members.cc: ${GLIBCXX_SRCDIR}/${G_CTIME_CC}
93	${_MKTARGET_CREATE}
94	rm -f ${.TARGET}
95	ln -s ${GLIBCXX_SRCDIR}/${G_CTIME_CC} ${.TARGET}
96
97atomicity.cc: ${G_atomicity_file}
98	${_MKTARGET_CREATE}
99	rm -f ${.TARGET}
100	ln -s ${G_atomicity_file} ${.TARGET}
101
102c++locale.cc: ${GLIBCXX_SRCDIR}/${G_CLOCALE_CC}
103	${_MKTARGET_CREATE}
104	rm -f ${.TARGET}
105	ln -s ${GLIBCXX_SRCDIR}/${G_CLOCALE_CC} ${.TARGET}
106
107basic_file.cc: ${GLIBCXX_SRCDIR}/${G_BASIC_FILE_CC}
108	${_MKTARGET_CREATE}
109	rm -f ${.TARGET}
110	ln -s ${GLIBCXX_SRCDIR}/${G_BASIC_FILE_CC} ${.TARGET}
111
112
113CLEANFILES+=	atomicity.cc basic_file.cc c++locale.cc codecvt_members.cc
114CLEANFILES+=	collate_members.cc ctype_members.cc messages_members.cc
115CLEANFILES+=	monetary_members.cc numeric_members.cc time_members.cc
116
117${SRCS}: unwind.h
118unwind.h: ${G_UNWIND_H}
119	${_MKTARGET_CREATE}
120	rm -f ${.TARGET}
121	ln -s ${G_UNWIND_H} ${.TARGET}
122CLEANFILES+= unwind.h
123
124.PATH:	${DIST}/libstdc++-v3/src \
125	${DIST}/libstdc++-v3/libmath \
126	${DIST}/libstdc++-v3/libsupc++ \
127	${DIST}/libiberty \
128	${CONF}/locale/generic \
129	${.CURDIR}/arch/${MACHINE_ARCH}
130
131${OBJS}: ${.CURDIR}/arch/${MACHINE_ARCH}/defs.mk
132.else
133.include <bsd.prog.mk> # do nothing
134.endif
135