xref: /freebsd/lib/libthr/Makefile (revision 9efbe526e00f47d946b3320f595e73fea26805df)
1bb535300SJeff Roberson# $FreeBSD$
2bb535300SJeff Roberson#
3bb535300SJeff Roberson# All library objects contain FreeBSD revision strings by default; they may be
4bb535300SJeff Roberson# excluded as a space-saving measure.  To produce a library that does
5bb535300SJeff Roberson# not contain these strings, add -DSTRIP_FBSDID (see <sys/cdefs.h>) to CFLAGS
69c4a7c50SJohn Baldwin# below.
75740a2b6SRuslan Ermilov
8c389411cSGlen BarberPACKAGE=	clibs
9241715e7SRuslan ErmilovSHLIBDIR?= /lib
10241715e7SRuslan Ermilov
11c6063d0dSWarner Losh.include <src.opts.mk>
12d9ca85fcSRuslan ErmilovMK_SSP=	no
1300fb440cSDaniel Eischen
14bb535300SJeff RobersonLIB=thr
15419ecd5dSDaniel EischenSHLIB_MAJOR= 3
166eccf6e3SEric van GyzenNO_WTHREAD_SAFETY=1
17afba14e2SEric van GyzenNO_WCAST_ALIGN.gcc=1    # for gcc 4.2
18a091d823SDavid XuCFLAGS+=-DPTHREAD_KERNEL
195d00c5a6SKonstantin BelousovCFLAGS+=-I${SRCTOP}/lib/libc/include
205d00c5a6SKonstantin BelousovCFLAGS+=-I${SRCTOP}/lib/libc/${MACHINE_CPUARCH}
215d00c5a6SKonstantin BelousovCFLAGS+=-I${.CURDIR}/thread
225d00c5a6SKonstantin BelousovCFLAGS+=-I${SRCTOP}/include
23f4fbf9c8SNathan WhitehornCFLAGS+=-I${.CURDIR}/arch/${MACHINE_CPUARCH}/include
24a091d823SDavid XuCFLAGS+=-I${.CURDIR}/sys
2558368ba9SEnji CooperCFLAGS+=-I${SRCTOP}/libexec/rtld-elf
2658368ba9SEnji CooperCFLAGS+=-I${SRCTOP}/libexec/rtld-elf/${MACHINE_CPUARCH}
2758368ba9SEnji CooperCFLAGS+=-I${SRCTOP}/lib/libthread_db
283832fd24SDavid Xu
290b2f3f20SEric van GyzenCFLAGS.thr_stack.c+=	-Wno-cast-align
30d49ca25dSKonstantin BelousovCFLAGS.rtld_malloc.c+=	-Wno-cast-align
310b2f3f20SEric van GyzenCFLAGS.thr_symbols.c+=	-Wno-missing-variable-declarations
32*9efbe526SAlex Richardson.if ${MK_ASAN} != "no"
33*9efbe526SAlex Richardson# False-positive ASAN error claiming the local "struct sigaction act;" is
34*9efbe526SAlex Richardson# overflowed by handle_signal() reading from the ucontext_t argument. This
35*9efbe526SAlex Richardson# could be caused by ASAN not treating this function as a signal handler.
36*9efbe526SAlex RichardsonCFLAGS.thr_sig.c+=	-fno-sanitize=address
37*9efbe526SAlex Richardson.endif
380b2f3f20SEric van Gyzen
39f4213b90SDavid Xu.ifndef NO_THREAD_UNWIND_STACK
400935fc89SDavid XuCFLAGS+=-fexceptions
413832fd24SDavid XuCFLAGS+=-D_PTHREAD_FORCED_UNWIND
423832fd24SDavid Xu.endif
433832fd24SDavid Xu
446d772c3bSKonstantin BelousovLDFLAGS+=-Wl,-znodelete
45a091d823SDavid Xu
4658368ba9SEnji CooperVERSION_DEF=${SRCTOP}/lib/libc/Versions.def
47a9b9744fSDag-Erling SmørgravSYMBOL_MAPS=${.CURDIR}/pthread.map
48bb535300SJeff Roberson
495335c6bcSRobert WatsonMAN=	libthr.3
505335c6bcSRobert Watson
51e13c6045SKonstantin Belousov# enable extra internal consistency checks
5244a31c2dSDavid XuCFLAGS+=-D_PTHREADS_INVARIANTS
53bb535300SJeff Roberson
54a35d8893SRuslan ErmilovPRECIOUSLIB=
55bb535300SJeff Roberson
5610f3ae58SWarner Losh.PATH: ${.CURDIR}/arch/${MACHINE_CPUARCH}/${MACHINE_CPUARCH}
57381c2d2eSKonstantin Belousov.PATH: ${SRCTOP}/libexec/rtld-elf
5810f3ae58SWarner Losh
5920fe2c94SAndrew Turner.if exists(${.CURDIR}/arch/${MACHINE_CPUARCH}/Makefile.inc)
60f4fbf9c8SNathan Whitehorn.include "${.CURDIR}/arch/${MACHINE_CPUARCH}/Makefile.inc"
6120fe2c94SAndrew Turner.endif
62a091d823SDavid Xu.include "${.CURDIR}/sys/Makefile.inc"
63a091d823SDavid Xu.include "${.CURDIR}/thread/Makefile.inc"
64d49ca25dSKonstantin BelousovSRCS+= rtld_malloc.c
65bb535300SJeff Roberson
66455cc6ecSJung-uk Kim.if ${MK_INSTALLLIB} != "no"
6755ac4c35SDavid XuSYMLINKS+=lib${LIB}.a ${LIBDIR}/libpthread.a
68455cc6ecSJung-uk Kim.endif
6955ac4c35SDavid Xu.if !defined(NO_PIC)
7084e709f1SRuslan ErmilovSYMLINKS+=lib${LIB}.so ${LIBDIR}/libpthread.so
7155ac4c35SDavid Xu.endif
725740a2b6SRuslan Ermilov.if ${MK_PROFILE} != "no"
7355ac4c35SDavid XuSYMLINKS+=lib${LIB}_p.a ${LIBDIR}/libpthread_p.a
7455ac4c35SDavid Xu.endif
7555ac4c35SDavid Xu
76d511b20aSEnji CooperHAS_TESTS=
774b330699SEnji CooperSUBDIR.${MK_TESTS}+= tests
783eee258dSEnji Cooper
79bb535300SJeff Roberson.include <bsd.lib.mk>
80