1 1.7 mrg # $NetBSD: Makefile,v 1.7 2017/07/23 01:12:10 mrg Exp $ 2 1.1 mrg 3 1.1 mrg REQUIRETOOLS= yes 4 1.1 mrg NOLINT= # defined 5 1.7 mrg UNSUPPORTED_COMPILER.clang= # defined 6 1.1 mrg 7 1.2 mrg .include <bsd.init.mk> 8 1.1 mrg 9 1.1 mrg .include "Makefile.inc" 10 1.1 mrg 11 1.1 mrg LIB= stdc++ 12 1.1 mrg 13 1.1 mrg LIBDPLIBS+= m ${.CURDIR}/../../../../../lib/libm 14 1.1 mrg 15 1.5 mrg #COPTS+= -pthread 16 1.5 mrg #LDFLAGS+= -pthread 17 1.5 mrg .if ${MACHINE_ARCH} == "i386" || ${MACHINE_ARCH} == "x86_64" 18 1.5 mrg COPTS.random.cc+= ${${ACTIVE_CC} == "clang":? -mrdrnd :} 19 1.5 mrg .endif 20 1.5 mrg 21 1.5 mrg CXXFLAGS.clang+= -stdlib=libstdc++ -std=c++11 -D_GLIBCXX_ABI_TAG_CXX11= 22 1.5 mrg CXXFLAGS+= ${CXXFLAGS.${ACTIVE_CC}} 23 1.1 mrg CWARNFLAGS.clang+= -Wno-logical-op-parentheses \ 24 1.1 mrg -Wno-deprecated-writable-strings -Wno-parentheses 25 1.1 mrg 26 1.5 mrg .include "${.CURDIR}/../libsupc++/Makefile.common" 27 1.5 mrg 28 1.5 mrg .if exists(${.CURDIR}/arch/${LIBSTDCXX_MACHINE_ARCH}/defs.mk) && ${MKGCC} != "no" 29 1.5 mrg .include "${.CURDIR}/arch/${LIBSTDCXX_MACHINE_ARCH}/defs.mk" 30 1.1 mrg 31 1.1 mrg SHLIB_MAJOR= 7 32 1.7 mrg SHLIB_MINOR= 4 33 1.1 mrg 34 1.1 mrg SUBDIR= include 35 1.1 mrg 36 1.1 mrg SRCS= ${LIBSUPCXXSRCS} ${LIBSTDCXXSRCS} 37 1.1 mrg # affects profiling; can't switch it off just for profiling easily. 38 1.1 mrg #CXXFLAGS+= ${G_SECTION_FLAGS} 39 1.1 mrg #CXXFLAGS+= -ffunction-sections -fdata-sections 40 1.1 mrg CXXFLAGS+= -fno-implicit-templates -fdiagnostics-show-location=once 41 1.1 mrg CPPFLAGS+= -I${DIST}/libstdc++-v3/include 42 1.5 mrg CPPFLAGS+= -I${.CURDIR}/arch/${LIBSTDCXX_MACHINE_ARCH} 43 1.5 mrg # include backwards compatible code 44 1.5 mrg CPPFLAGS+= -D_GLIBCXX_SHARED -DGTHREAD_USE_WEAK -DSUPPORTS_WEAK 45 1.1 mrg 46 1.1 mrg CONF= ${DIST}/libstdc++-v3/config 47 1.1 mrg 48 1.1 mrg GLIBCPP_INCLUDE_DIR= ${DESTDIR}/usr/include/g++ 49 1.1 mrg 50 1.5 mrg # Template instantiation bug workaround for -O<2/s 51 1.7 mrg COPTS.cp-demangle.c += -Wno-stack-protector 52 1.7 mrg COPTS.cp-demangle.c += -Wno-stack-protector 53 1.7 mrg COPTS.fstream-inst.cc += -Wno-stack-protector 54 1.7 mrg COPTS.locale-inst.cc += -Wno-stack-protector 55 1.7 mrg COPTS.misc-inst.cc += -Wno-stack-protector 56 1.7 mrg COPTS.ostream-inst.cc += -Wno-stack-protector 57 1.7 mrg COPTS.functexcept.cc += -Wno-stack-protector 58 1.7 mrg COPTS.valarray-inst.cc += -Wno-stack-protector 59 1.7 mrg COPTS.wlocale-inst.cc += -Wno-stack-protector 60 1.7 mrg COPTS.snprintf_lite.cc += -Wno-stack-protector 61 1.7 mrg # From system headers. 62 1.7 mrg COPTS.cxx11-wlocale-inst.cc +=-Wno-stack-protector 63 1.7 mrg COPTS.cxx11-locale-inst.cc +=-Wno-stack-protector 64 1.7 mrg COPTS.cxx11-wlocale-inst.cc +=-Wno-stack-protector 65 1.7 mrg COPTS.compatibility-thread-c++0x.cc += -Wno-deprecated-declarations 66 1.7 mrg COPTS.concept-inst.cc += -fimplicit-templates 67 1.7 mrg COPTS.hashtable_c++0x.cc += -fimplicit-templates 68 1.7 mrg COPTS.bitmap_allocator.cc += -fimplicit-templates 69 1.7 mrg COPTS.functexcept.cc += -Wno-deprecated-declarations 70 1.7 mrg COPTS.future.cc += -Wno-deprecated-declarations 71 1.7 mrg COPTS.shared_ptr.cc += -Wno-deprecated-declarations 72 1.7 mrg COPTS.thread.cc += -Wno-deprecated-declarations 73 1.7 mrg CPPFLAGS.strstream.cc += -I$(GLIBCPP_INCLUDE_DIR)/backward -Wno-deprecated 74 1.1 mrg 75 1.1 mrg CPPFLAGS.cp-demangle.cc += -DIN_GLIBCPP_V3 76 1.1 mrg CPPFLAGS.concept-inst.cc += -D_GLIBCXX_CONCEPT_CHECKS 77 1.1 mrg CPPFLAGS.parallel_list.cc += -D_GLIBCXX_PARALLEL 78 1.1 mrg CPPFLAGS.parallel_settings.cc += -D_GLIBCXX_PARALLEL 79 1.1 mrg CPPFLAGS.compatibility-parallel_list.cc += -D_GLIBCXX_PARALLEL 80 1.1 mrg 81 1.5 mrg cp-demangle.d cp-demangle.o: cp-demangle.h 82 1.5 mrg 83 1.7 mrg .if ${MACHINE_ARCH} == "i386" 84 1.7 mrg COPTS.random.cc += -Wno-error=psabi 85 1.7 mrg COPTS.cow-string-inst.cc += -Wno-error=psabi 86 1.7 mrg .endif 87 1.7 mrg 88 1.1 mrg # XXX 89 1.1 mrg MKDEPFLAGS+= -I$(GLIBCPP_INCLUDE_DIR)/backward 90 1.1 mrg 91 1.5 mrg GLIBCXX_SRCDIR= ${DIST}/libstdc++-v3 92 1.5 mrg 93 1.5 mrg BUILDSYMLINKS+= \ 94 1.5 mrg ${GLIBCXX_SRCDIR}/${G_CCODECVT_CC} codecvt_members.cc \ 95 1.5 mrg ${GLIBCXX_SRCDIR}/${G_CCOLLATE_CC} collate_members.cc \ 96 1.5 mrg ${GLIBCXX_SRCDIR}/${G_CCTYPE_CC} ctype_members.cc \ 97 1.5 mrg ${GLIBCXX_SRCDIR}/${G_CMESSAGES_CC} messages_members.cc \ 98 1.5 mrg ${GLIBCXX_SRCDIR}/${G_CMONEY_CC} monetary_members.cc \ 99 1.5 mrg ${GLIBCXX_SRCDIR}/${G_CNUMERIC_CC} numeric_members.cc \ 100 1.5 mrg ${GLIBCXX_SRCDIR}/${G_CTIME_CC} time_members.cc \ 101 1.5 mrg ${GLIBCXX_SRCDIR}/${G_ATOMICITY_SRCDIR}/atomicity.h atomicity.cc \ 102 1.5 mrg ${GLIBCXX_SRCDIR}/${G_CLOCALE_CC} c++locale.cc \ 103 1.5 mrg ${GLIBCXX_SRCDIR}/${G_BASIC_FILE_CC} basic_file.cc \ 104 1.5 mrg ${DIST}/libiberty/cp-demangle.c cp-demangle.c \ 105 1.7 mrg ${DIST}/libiberty/cp-demangle.h cp-demangle.h \ 106 1.7 mrg ${GLIBCXX_SRCDIR}/${G_CCOLLATE_CC} collate_members_cow.cc \ 107 1.7 mrg ${GLIBCXX_SRCDIR}/${G_CMESSAGES_CC} messages_members_cow.cc \ 108 1.7 mrg ${GLIBCXX_SRCDIR}/${G_CMONEY_CC} monetary_members_cow.cc \ 109 1.7 mrg ${GLIBCXX_SRCDIR}/${G_CNUMERIC_CC} numeric_members_cow.cc 110 1.7 mrg 111 1.7 mrg # XXX both c++98 and c++11 have codecvt.cc files. 112 1.7 mrg BUILDSYMLINKS+= \ 113 1.7 mrg ${GLIBCXX_SRCDIR}/src/c++98/codecvt.cc c98-codecvt.cc 114 1.7 mrg BUILDSYMLINKS+= \ 115 1.7 mrg ${GLIBCXX_SRCDIR}/src/c++11/codecvt.cc c11-codecvt.cc 116 1.7 mrg SRCS+= c98-codecvt.cc c11-codecvt.cc 117 1.5 mrg 118 1.5 mrg .if ${HAVE_LIBGCC_EH} == "no" 119 1.5 mrg G_CONFIGLINKS:= ${G_CONFIGLINKS:S,libgcc/config/arm/unwind-arm.h,libgcc/unwind-generic.h,} 120 1.5 mrg .endif 121 1.5 mrg 122 1.5 mrg .if ${MKGCC} != "no" 123 1.5 mrg .if defined(G_CONFIGLINKS) && !empty(G_CONFIGLINKS) 124 1.5 mrg BUILDSYMLINKS+= ${G_CONFIGLINKS} 125 1.5 mrg .for _src _dst in ${G_CONFIGLINKS} 126 1.5 mrg DPSRCS+= ${_dst} 127 1.5 mrg .endfor 128 1.5 mrg .endif 129 1.5 mrg .endif 130 1.5 mrg 131 1.7 mrg # XXX Make this either/or, not one, and maybe another 132 1.7 mrg .for _s in ${SRCS:M*.cc} 133 1.7 mrg COPTS.${_s}+= -std=gnu++11 134 1.7 mrg .endfor 135 1.7 mrg .for _s in ${G_CPP98_SOURCES:Nlocalename.cc:Nlocale_init.cc:M*.cc} 136 1.7 mrg COPTS.${_s}+= -std=gnu++98 137 1.7 mrg .endfor 138 1.7 mrg 139 1.7 mrg COPTS.del_ops.cc += -Wno-c++14-compat 140 1.7 mrg COPTS.del_opvs.cc += -Wno-c++14-compat 141 1.7 mrg COPTS.cp-demangle.c += -Wno-unused-function 142 1.7 mrg 143 1.7 mrg .for f in collate_members_cow \ 144 1.7 mrg messages_members_cow \ 145 1.7 mrg monetary_members_cow \ 146 1.7 mrg numeric_members_cow 147 1.7 mrg COPTS.${f}.cc+= -fimplicit-templates ${G_GLIBCXX_ABI_FLAGS} 148 1.5 mrg .endfor 149 1.5 mrg 150 1.1 mrg .include <bsd.lib.mk> 151 1.1 mrg .include <bsd.subdir.mk> 152 1.1 mrg .include <bsd.info.mk> 153 1.1 mrg 154 1.1 mrg .PATH: ${DIST}/libstdc++-v3/src \ 155 1.5 mrg ${DIST}/libstdc++-v3/src/c++98 \ 156 1.5 mrg ${DIST}/libstdc++-v3/src/c++11 \ 157 1.1 mrg ${DIST}/libstdc++-v3/libsupc++ \ 158 1.5 mrg ${DIST}/libstdc++-v3/config/os/bsd/netbsd \ 159 1.1 mrg ${CONF}/locale/generic \ 160 1.5 mrg ${.CURDIR}/arch/${LIBSTDCXX_MACHINE_ARCH} 161 1.1 mrg 162 1.5 mrg ${OBJS}: ${.CURDIR}/arch/${LIBSTDCXX_MACHINE_ARCH}/defs.mk 163 1.1 mrg .else 164 1.1 mrg .include <bsd.prog.mk> # do nothing 165 1.1 mrg .endif 166