1255570Strasz
2255570StraszPACKAGE=	clibs
3255570StraszSHLIBDIR?= /lib
4255570Strasz
5255570StraszLIBADD=	c sys
6255570Strasz.if defined(COMPAT_libcompat)
7255570Strasz# XXX: work around gcc -m32 + bfd ld path issue for DT_NEEDED symbols.
8255570Strasz# https://sourceware.org/bugzilla/show_bug.cgi?id=31395
9255570StraszLDFLAGS+=	-Wl,--rpath=/usr/lib${COMPAT_libcompat}
10255570Strasz.endif
11255570Strasz
12255570Strasz.include <src.opts.mk>
13255570StraszMK_SSP=	no
14255570Strasz# SSP forced off already implies FORTIFY_SOURCE=0, but we must make sure that
15255570Strasz# one cannot turn it back on.
16255570StraszFORTIFY_SOURCE=	0
17255570Strasz
18255570StraszLIB=thr
19255570StraszSHLIB_MAJOR= 3
20255570Strasz
21255570StraszNO_WTHREAD_SAFETY=1
22255570StraszNO_WCAST_ALIGN.gcc=1    # for gcc 4.2
23255570StraszCFLAGS+=-DPTHREAD_KERNEL
24255570StraszCFLAGS+=-I${SRCTOP}/lib/libc/include
25255570StraszCFLAGS+=-I${SRCTOP}/lib/libc/${MACHINE_CPUARCH}
26255570StraszCFLAGS+=-I${.CURDIR}/thread
27255570StraszCFLAGS+=-I${.CURDIR}/arch/${MACHINE_CPUARCH}/include
28255570StraszCFLAGS+=-I${.CURDIR}/sys
29255570StraszCFLAGS+=-I${SRCTOP}/libexec/rtld-elf
30255570StraszCFLAGS+=-I${SRCTOP}/libexec/rtld-elf/${MACHINE_CPUARCH}
31270888StraszCFLAGS+=-I${SRCTOP}/lib/libthread_db
32270888Strasz
33270888StraszCFLAGS.thr_stack.c+=	-Wno-cast-align
34255570StraszCFLAGS.rtld_malloc.c+=	-Wno-cast-align
35255570StraszCFLAGS.thr_symbols.c+=	-Wno-missing-variable-declarations
36255570Strasz.if ${MK_ASAN} != "no"
37255570Strasz# False-positive ASAN error claiming the local "struct sigaction act;" is
38255570Strasz# overflowed by handle_signal() reading from the ucontext_t argument. This
39255570Strasz# could be caused by ASAN not treating this function as a signal handler.
40255570StraszCFLAGS.thr_sig.c+=	-fno-sanitize=address
41255570Strasz.endif
42255570Strasz
43255570Strasz.if ${MACHINE_CPUARCH} == "arm"
44255570StraszNO_THREAD_UNWIND_STACK= yes
45255570Strasz.endif
46255570Strasz
47255570Strasz.ifndef NO_THREAD_UNWIND_STACK
48255570StraszCFLAGS+=-fexceptions
49255570StraszCFLAGS+=-D_PTHREAD_FORCED_UNWIND
50255570Strasz.endif
51255570Strasz
52255570StraszLDFLAGS+=-Wl,-znodelete
53255570StraszLDFLAGS+=-Wl,--auxiliary,libsys.so.7
54255570Strasz
55255570StraszVERSION_DEF=${SRCTOP}/lib/libc/Versions.def
56255570StraszSYMBOL_MAPS=${.CURDIR}/pthread.map
57255570Strasz
58255570StraszMAN=	libthr.3
59255570Strasz
60255570Strasz.if ${MK_PTHREADS_ASSERTIONS} != "no"
61255570Strasz# enable extra internal consistency checks
62255570StraszCFLAGS+=-D_PTHREADS_INVARIANTS
63255570Strasz.endif
64255570Strasz
65255570StraszPRECIOUSLIB=
66255570Strasz
67255570Strasz.PATH: ${.CURDIR}/arch/${MACHINE_CPUARCH}/${MACHINE_CPUARCH}
68255570Strasz.PATH: ${SRCTOP}/libexec/rtld-elf
69255570Strasz
70255570Strasz.if exists(${.CURDIR}/arch/${MACHINE_CPUARCH}/Makefile.inc)
71255570Strasz.include "${.CURDIR}/arch/${MACHINE_CPUARCH}/Makefile.inc"
72255570Strasz.endif
73255570Strasz.include "${.CURDIR}/sys/Makefile.inc"
74255570Strasz.include "${.CURDIR}/thread/Makefile.inc"
75255570StraszSRCS+= rtld_malloc.c
76255570Strasz
77255570StraszLIBSYS_SRCTOP=	${.CURDIR:H}/libsys
78255570Strasz.if exists(${LIBSYS_SRCTOP}/${MACHINE_CPUARCH}/_umtx_op_err.S)
79255570Strasz.PATH: ${LIBSYS_SRCTOP}/${MACHINE_CPUARCH}
80255570Strasz.else
81255570Strasz.PATH: ${LIBSYS_SRCTOP}
82255570Strasz.endif
83255570StraszOBJS+=	_umtx_op_err.o
84255570Strasz
85255570Strasz.if ${MK_INSTALLLIB} != "no"
86255570StraszSYMLINKS+=lib${LIB}.a ${LIBDIR}/libpthread.a
87255570Strasz.endif
88255570Strasz.if !defined(NO_PIC)
89255570StraszSYMLINKS+=lib${LIB}.so ${LIBDIR}/libpthread.so
90255570Strasz.endif
91255570Strasz.if ${MK_PROFILE} != "no"
92255570StraszSYMLINKS+=lib${LIB}_p.a ${LIBDIR}/libpthread_p.a
93255570Strasz.endif
94255570Strasz
95255570StraszHAS_TESTS=
96255570StraszSUBDIR.${MK_TESTS}+= tests
97255570Strasz
98255570Strasz.include <bsd.lib.mk>
99255570Strasz