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