xref: /netbsd-src/external/gpl3/gcc/lib/libstdc++-v3/Makefile (revision b7b7574d3bf8eeb51a1fa3977b59142ec6434a55)
1#	$NetBSD: Makefile,v 1.16 2014/06/14 20:49:36 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
15#COPTS+=		-pthread
16#LDFLAGS+=	-pthread
17
18UNSUPPORTED_COMPILER.clang=	# defined
19CWARNFLAGS.clang+=	-Wno-logical-op-parentheses \
20			-Wno-deprecated-writable-strings -Wno-parentheses
21
22.include "${.CURDIR}/../libsupc++/Makefile.common"
23
24.if exists(${.CURDIR}/arch/${LIBSTDCXX_MACHINE_ARCH}/defs.mk) && ${MKGCC} != "no"
25.include "${.CURDIR}/arch/${LIBSTDCXX_MACHINE_ARCH}/defs.mk"
26
27SHLIB_MAJOR=	7
28SHLIB_MINOR=	2
29
30SUBDIR=		include
31
32SRCS=		${LIBSUPCXXSRCS} ${LIBSTDCXXSRCS}
33# affects profiling; can't switch it off just for profiling easily.
34#CXXFLAGS+=	${G_SECTION_FLAGS}
35#CXXFLAGS+=	-ffunction-sections -fdata-sections
36CXXFLAGS+=	-fno-implicit-templates -fdiagnostics-show-location=once
37CPPFLAGS+=	-I${DIST}/libstdc++-v3/include
38CPPFLAGS+=	-I${.CURDIR}/arch/${LIBSTDCXX_MACHINE_ARCH}
39# include backwards compatible code
40CPPFLAGS+=     -D_GLIBCXX_SHARED -DGTHREAD_USE_WEAK -DSUPPORTS_WEAK
41
42CONF=		${DIST}/libstdc++-v3/config
43
44GLIBCPP_INCLUDE_DIR=	${DESTDIR}/usr/include/g++
45
46# Template instantiation bug workaround for -O<2/s
47COPTS.cp-demangle.c = -Wno-stack-protector
48COPTS.cp-demangle.c = -Wno-stack-protector
49COPTS.fstream-inst.cc = -Wno-stack-protector
50COPTS.locale-inst.cc = -Wno-stack-protector
51COPTS.misc-inst.cc = -Wno-stack-protector
52COPTS.ostream-inst.cc = -Wno-stack-protector
53COPTS.valarray-inst.cc = -Wno-stack-protector
54COPTS.wlocale-inst.cc = -Wno-stack-protector
55COPTS.concept-inst.cc=	-fimplicit-templates
56COPTS.hashtable_c++0x.cc=  -fimplicit-templates
57COPTS.bitmap_allocator.cc = -fimplicit-templates
58CPPFLAGS.strstream.cc=	-I$(GLIBCPP_INCLUDE_DIR)/backward -Wno-deprecated
59
60# XXX also need this for some PCHs.
61CPPFLAGS.atomic.cc = -std=gnu++0x
62CPPFLAGS.compatibility-c++0x.cc = -std=gnu++0x
63CPPFLAGS.functexcept.cc = -std=gnu++0x
64CPPFLAGS.hash_c++0x.cc = -std=gnu++0x
65CPPFLAGS.hashtable_c++0x.cc = -std=gnu++0x
66CPPFLAGS.limits.cc = -std=gnu++0x
67CPPFLAGS.system_error.cc = -std=gnu++0x
68CPPFLAGS.fstream-inst.cc = -std=gnu++0x
69CPPFLAGS.string-inst.cc = -std=gnu++0x
70CPPFLAGS.wstring-inst.cc = -std=gnu++0x
71CPPFLAGS.mutex.cc = -std=gnu++0x
72CPPFLAGS.condition_variable.cc = -std=gnu++0x
73CPPFLAGS.chrono.cc = -std=gnu++0x
74CPPFLAGS.thread.cc = -std=gnu++0x
75CPPFLAGS.future.cc = -std=gnu++0x
76
77CPPFLAGS.cp-demangle.cc += -DIN_GLIBCPP_V3
78CPPFLAGS.concept-inst.cc += -D_GLIBCXX_CONCEPT_CHECKS
79CPPFLAGS.parallel_list.cc += -D_GLIBCXX_PARALLEL
80CPPFLAGS.parallel_settings.cc += -D_GLIBCXX_PARALLEL
81CPPFLAGS.compatibility-parallel_list.cc += -D_GLIBCXX_PARALLEL
82
83cp-demangle.d cp-demangle.o: cp-demangle.h
84
85# XXX
86MKDEPFLAGS+=	-I$(GLIBCPP_INCLUDE_DIR)/backward
87
88GLIBCXX_SRCDIR=	${DIST}/libstdc++-v3
89
90BUILDSYMLINKS+=	\
91	${GLIBCXX_SRCDIR}/${G_CCODECVT_CC} codecvt_members.cc \
92	${GLIBCXX_SRCDIR}/${G_CCOLLATE_CC} collate_members.cc \
93	${GLIBCXX_SRCDIR}/${G_CCTYPE_CC} ctype_members.cc \
94	${GLIBCXX_SRCDIR}/${G_CMESSAGES_CC} messages_members.cc \
95	${GLIBCXX_SRCDIR}/${G_CMONEY_CC} monetary_members.cc \
96	${GLIBCXX_SRCDIR}/${G_CNUMERIC_CC} numeric_members.cc \
97	${GLIBCXX_SRCDIR}/${G_CTIME_CC} time_members.cc \
98	${GLIBCXX_SRCDIR}/${G_ATOMICITY_SRCDIR}/atomicity.h atomicity.cc \
99	${GLIBCXX_SRCDIR}/${G_CLOCALE_CC} c++locale.cc \
100	${GLIBCXX_SRCDIR}/${G_BASIC_FILE_CC} basic_file.cc \
101	${DIST}/libiberty/cp-demangle.c cp-demangle.c \
102	${DIST}/libiberty/cp-demangle.h cp-demangle.h
103
104.if ${HAVE_LIBGCC_EH} == "no"
105G_CONFIGLINKS:= ${G_CONFIGLINKS:S,libgcc/config/arm/unwind-arm.h,libgcc/unwind-generic.h,}
106.endif
107
108.if ${MKGCC} != "no"
109.if defined(G_CONFIGLINKS) && !empty(G_CONFIGLINKS)
110BUILDSYMLINKS+=        ${G_CONFIGLINKS}
111.for _src _dst in ${G_CONFIGLINKS}
112DPSRCS+=       ${_dst}
113.endfor
114.endif
115.endif
116
117.for f in compatibility-c++0x compatibility-atomic-c++0x \
118          compatibility-thread-c++0x compatibility-chrono chrono \
119	  condition_variable debug functexcept functional future \
120	  hash_c++0x hashtable_c++0x limits mutex placeholders \
121	  random regex shared_ptr system_error thread
122COPTS.${f}.cc+= -std=gnu++11
123.endfor
124
125.include <bsd.lib.mk>
126.include <bsd.subdir.mk>
127.include <bsd.info.mk>
128
129.PATH:	${DIST}/libstdc++-v3/src \
130	${DIST}/libstdc++-v3/src/c++98 \
131	${DIST}/libstdc++-v3/src/c++11 \
132	${DIST}/libstdc++-v3/libsupc++ \
133	${DIST}/libstdc++-v3/config/os/bsd/netbsd \
134	${CONF}/locale/generic \
135	${.CURDIR}/arch/${LIBSTDCXX_MACHINE_ARCH}
136
137${OBJS}: ${.CURDIR}/arch/${LIBSTDCXX_MACHINE_ARCH}/defs.mk
138.else
139.include <bsd.prog.mk> # do nothing
140.endif
141