xref: /freebsd/lib/libthr/Makefile (revision 99ea67573164637d633e8051eb0a5d52f1f9488e)
1bb535300SJeff Roberson#
2bb535300SJeff Roberson# All library objects contain FreeBSD revision strings by default; they may be
3bb535300SJeff Roberson# excluded as a space-saving measure.  To produce a library that does
4bb535300SJeff Roberson# not contain these strings, add -DSTRIP_FBSDID (see <sys/cdefs.h>) to CFLAGS
59c4a7c50SJohn Baldwin# below.
65740a2b6SRuslan Ermilov
7c389411cSGlen BarberPACKAGE=	clibs
8241715e7SRuslan ErmilovSHLIBDIR?= /lib
9241715e7SRuslan Ermilov
10*99ea6757SBrooks DavisLIBADD=	c sys
11*99ea6757SBrooks Davis
12c6063d0dSWarner Losh.include <src.opts.mk>
13d9ca85fcSRuslan ErmilovMK_SSP=	no
1400fb440cSDaniel Eischen
15bb535300SJeff RobersonLIB=thr
16419ecd5dSDaniel EischenSHLIB_MAJOR= 3
17ef9871c6SBrooks Davis
186eccf6e3SEric van GyzenNO_WTHREAD_SAFETY=1
19afba14e2SEric van GyzenNO_WCAST_ALIGN.gcc=1    # for gcc 4.2
20a091d823SDavid XuCFLAGS+=-DPTHREAD_KERNEL
215d00c5a6SKonstantin BelousovCFLAGS+=-I${SRCTOP}/lib/libc/include
225d00c5a6SKonstantin BelousovCFLAGS+=-I${SRCTOP}/lib/libc/${MACHINE_CPUARCH}
235d00c5a6SKonstantin BelousovCFLAGS+=-I${.CURDIR}/thread
24f4fbf9c8SNathan WhitehornCFLAGS+=-I${.CURDIR}/arch/${MACHINE_CPUARCH}/include
25a091d823SDavid XuCFLAGS+=-I${.CURDIR}/sys
2658368ba9SEnji CooperCFLAGS+=-I${SRCTOP}/libexec/rtld-elf
2758368ba9SEnji CooperCFLAGS+=-I${SRCTOP}/libexec/rtld-elf/${MACHINE_CPUARCH}
2858368ba9SEnji CooperCFLAGS+=-I${SRCTOP}/lib/libthread_db
293832fd24SDavid Xu
300b2f3f20SEric van GyzenCFLAGS.thr_stack.c+=	-Wno-cast-align
31d49ca25dSKonstantin BelousovCFLAGS.rtld_malloc.c+=	-Wno-cast-align
320b2f3f20SEric van GyzenCFLAGS.thr_symbols.c+=	-Wno-missing-variable-declarations
339efbe526SAlex Richardson.if ${MK_ASAN} != "no"
349efbe526SAlex Richardson# False-positive ASAN error claiming the local "struct sigaction act;" is
359efbe526SAlex Richardson# overflowed by handle_signal() reading from the ucontext_t argument. This
369efbe526SAlex Richardson# could be caused by ASAN not treating this function as a signal handler.
379efbe526SAlex RichardsonCFLAGS.thr_sig.c+=	-fno-sanitize=address
389efbe526SAlex Richardson.endif
390b2f3f20SEric van Gyzen
40bbf4df17SJohn Baldwin.if ${MACHINE_CPUARCH} == "arm"
41bbf4df17SJohn BaldwinNO_THREAD_UNWIND_STACK= yes
42bbf4df17SJohn Baldwin.endif
43bbf4df17SJohn Baldwin
44f4213b90SDavid Xu.ifndef NO_THREAD_UNWIND_STACK
450935fc89SDavid XuCFLAGS+=-fexceptions
463832fd24SDavid XuCFLAGS+=-D_PTHREAD_FORCED_UNWIND
473832fd24SDavid Xu.endif
483832fd24SDavid Xu
496d772c3bSKonstantin BelousovLDFLAGS+=-Wl,-znodelete
5049d68436SBrooks DavisLDFLAGS+=-Wl,--auxiliary,libsys.so.7
51a091d823SDavid Xu
5258368ba9SEnji CooperVERSION_DEF=${SRCTOP}/lib/libc/Versions.def
53a9b9744fSDag-Erling SmørgravSYMBOL_MAPS=${.CURDIR}/pthread.map
54bb535300SJeff Roberson
555335c6bcSRobert WatsonMAN=	libthr.3
565335c6bcSRobert Watson
57642cd511SGreg Becker.if ${MK_PTHREADS_ASSERTIONS} != "no"
58e13c6045SKonstantin Belousov# enable extra internal consistency checks
5944a31c2dSDavid XuCFLAGS+=-D_PTHREADS_INVARIANTS
60642cd511SGreg Becker.endif
61bb535300SJeff Roberson
62a35d8893SRuslan ErmilovPRECIOUSLIB=
63bb535300SJeff Roberson
6410f3ae58SWarner Losh.PATH: ${.CURDIR}/arch/${MACHINE_CPUARCH}/${MACHINE_CPUARCH}
65381c2d2eSKonstantin Belousov.PATH: ${SRCTOP}/libexec/rtld-elf
6610f3ae58SWarner Losh
6720fe2c94SAndrew Turner.if exists(${.CURDIR}/arch/${MACHINE_CPUARCH}/Makefile.inc)
68f4fbf9c8SNathan Whitehorn.include "${.CURDIR}/arch/${MACHINE_CPUARCH}/Makefile.inc"
6920fe2c94SAndrew Turner.endif
70a091d823SDavid Xu.include "${.CURDIR}/sys/Makefile.inc"
71a091d823SDavid Xu.include "${.CURDIR}/thread/Makefile.inc"
72d49ca25dSKonstantin BelousovSRCS+= rtld_malloc.c
73bb535300SJeff Roberson
74ef9871c6SBrooks DavisLIBSYS_SRCTOP=	${.CURDIR:H}/libsys
75ef9871c6SBrooks Davis.if exists(${LIBSYS_SRCTOP}/${MACHINE_CPUARCH}/_umtx_op_err.S)
76ef9871c6SBrooks Davis.PATH: ${LIBSYS_SRCTOP}/${MACHINE_CPUARCH}
77ef9871c6SBrooks Davis.else
78ef9871c6SBrooks Davis.PATH: ${LIBSYS_SRCTOP}
79ef9871c6SBrooks Davis.endif
8049d68436SBrooks DavisOBJS+=	_umtx_op_err.o
81ef9871c6SBrooks Davis
82455cc6ecSJung-uk Kim.if ${MK_INSTALLLIB} != "no"
8355ac4c35SDavid XuSYMLINKS+=lib${LIB}.a ${LIBDIR}/libpthread.a
84455cc6ecSJung-uk Kim.endif
8555ac4c35SDavid Xu.if !defined(NO_PIC)
8684e709f1SRuslan ErmilovSYMLINKS+=lib${LIB}.so ${LIBDIR}/libpthread.so
8755ac4c35SDavid Xu.endif
885740a2b6SRuslan Ermilov.if ${MK_PROFILE} != "no"
8955ac4c35SDavid XuSYMLINKS+=lib${LIB}_p.a ${LIBDIR}/libpthread_p.a
9055ac4c35SDavid Xu.endif
9155ac4c35SDavid Xu
92d511b20aSEnji CooperHAS_TESTS=
934b330699SEnji CooperSUBDIR.${MK_TESTS}+= tests
943eee258dSEnji Cooper
95bb535300SJeff Roberson.include <bsd.lib.mk>
96