xref: /netbsd-src/external/bsd/libc++/lib/Makefile (revision 53d1339bf7f9c7367b35a9e1ebe693f9b047a47b)
1*53d1339bSjoerg#	$NetBSD: Makefile,v 1.14 2021/05/30 01:57:00 joerg Exp $
2ecb06a3bSjoerg
3ecb06a3bSjoergLIB=		c++
4ecb06a3bSjoergWARNS=		4
5ecb06a3bSjoergNOLINT=		# defined
6ecb06a3bSjoerg
7ecb06a3bSjoerg.include <bsd.init.mk>
8ecb06a3bSjoerg
9ecb06a3bSjoerg.PATH: ${LIBCXX_SRCDIR}/src
10ecb06a3bSjoerg
11*53d1339bSjoergSRCS=	algorithm.cpp bind.cpp charconv.cpp chrono.cpp condition_variable.cpp \
12*53d1339bSjoerg	condition_variable_destructor.cpp debug.cpp exception.cpp format.cpp \
13*53d1339bSjoerg	functional.cpp future.cpp hash.cpp ios.cpp ios.instantiations.cpp \
14*53d1339bSjoerg	iostream.cpp locale.cpp memory.cpp mutex.cpp mutex_destructor.cpp \
15*53d1339bSjoerg	new.cpp optional.cpp random.cpp random_shuffle.cpp regex.cpp \
16*53d1339bSjoerg	shared_mutex.cpp stdexcept.cpp string.cpp strstream.cpp \
17*53d1339bSjoerg	system_error.cpp thread.cpp utility.cpp valarray.cpp variant.cpp \
18*53d1339bSjoerg	vector.cpp
19*53d1339bSjoerg
20*53d1339bSjoerg.PATH: ${LIBCXX_SRCDIR}/src/filesystem
21*53d1339bSjoergSRCS+=	directory_iterator.cpp operations.cpp
22*53d1339bSjoerg
23a14e051bSjoerg# typeinfo.cc: prefer libcxxrt's version
24ecb06a3bSjoerg
25ecb06a3bSjoergLIBCXXRT_SRCS+= \
26a14e051bSjoerg	auxhelper.cc dynamic_cast.cc exception.cc guard.cc \
27a14e051bSjoerg	stdexcept.cc terminate.cc typeinfo.cc libelftc_dem_gnu3.c
28a14e051bSjoerg# cxa_atexit.c: Solaris-only
29a14e051bSjoerg# memory.cc: already provided by libc++'s new.cpp
30ecb06a3bSjoerg
31ecb06a3bSjoerg.for src in ${LIBCXXRT_SRCS}
32ecb06a3bSjoergrt_${src}: ${LIBCXXRT_SRCDIR}/src/${src}
33ecb06a3bSjoerg	cp ${LIBCXXRT_SRCDIR}/src/${src} rt_${src}
34ecb06a3bSjoerg
35ecb06a3bSjoergSRCS+=		rt_${src}
36ecb06a3bSjoergDPSRCS+=	rt_${src}
37ecb06a3bSjoergCLEANFILES+=	rt_${src}
38ecb06a3bSjoerg.endfor
39ecb06a3bSjoerg
40ecb06a3bSjoerg.include <bsd.own.mk>
41ecb06a3bSjoerg
42*53d1339bSjoergCPPFLAGS+=	-nostdinc++ -cxx-isystem ${LIBCXX_SRCDIR}/include
43*53d1339bSjoergCPPFLAGS+=	-cxx-isystem ${.CURDIR}/../include -I${LIBCXXRT_SRCDIR}/src
44*53d1339bSjoergCPPFLAGS+=	-DLIBCXXRT -D_LIBCPP_BUILDING_LIBRARY
45*53d1339bSjoergCXXFLAGS+=	-std=gnu++17
46ecb06a3bSjoerg
47ecb06a3bSjoergCWARNFLAGS.gcc+=	-Wno-error
48ecb06a3bSjoerg
49ecb06a3bSjoergCWARNFLAGS.clang+=	-Wno-error=unused-variable -Wno-error=missing-noreturn
50ecb06a3bSjoergCWARNFLAGS.clang+=	-Wno-error=missing-prototypes -Wno-error=sometimes-uninitialized
51ecb06a3bSjoergCWARNFLAGS.clang+=	-Wno-error=missing-field-initializers -Wno-error=switch
52*53d1339bSjoergCWARNFLAGS.clang+=	-Wno-error=implicit-exception-spec-mismatch -Wno-error=format-nonliteral -Wno-error=format-security
53c1f68528Schristos
543aa96d18Skamil.if ${MKSANITIZER} != "yes"
558ec658f5SchristosLDFLAGS+=	-Wl,-z,defs
563aa96d18Skamil.endif
57ecb06a3bSjoerg
5890dc754aSjoerg.if !empty(MACHINE_ARCH:Marm*) || !empty(MACHINE_ARCH:Mearm*)
5990dc754aSjoergCWARNFLAGS+=		-Wno-atomic-alignment
6090dc754aSjoerg.endif
6190dc754aSjoerg
62ecb06a3bSjoerg.include <bsd.lib.mk>
63