Makefile revision 1.25
1# $NetBSD: Makefile,v 1.25 2025/04/16 02:16:53 riastradh Exp $
2#
3
4NOMAN=		# defined
5
6.include <bsd.own.mk>
7
8.if ${MKPIC} != "no"
9
10SUBDIR+=	helper_dso1 helper_dso3 .WAIT helper_dso2 .WAIT \
11		helper_ifunc_dso \
12		helper_symver_dso0 .WAIT helper_symver_dso1 .WAIT \
13		helper_symver_dso2 .WAIT \
14		data
15
16SUBDIR+=	helper_def_dynamic
17SUBDIR+=	helper_def_static
18SUBDIR+=	helper_onlydef
19SUBDIR+=	.WAIT
20SUBDIR+=	helper_abuse_dynamic
21SUBDIR+=	helper_abuse_static
22SUBDIR+=	helper_onlyctor_dynamic
23SUBDIR+=	helper_onlyuse_dynamic
24SUBDIR+=	helper_onlyuse_static
25SUBDIR+=	helper_use_dynamic
26SUBDIR+=	helper_use_static
27
28TESTSDIR=	${TESTSBASE}/libexec/ld.elf_so
29
30TESTS_C+=	t_dlerror-cleared t_dlerror-false t_dlinfo t_dlvsym t_ifunc
31TESTS_C+=	t_ifunc_now
32TESTS_C+=	t_ifunc_norelro
33TESTS_C+=	t_ifunc_norelro_now
34TESTS_C+=	t_rtld_r_debug
35TESTS_C+=	t_rtld_r_debug_nopie
36TESTS_C+=	t_tls_extern
37TESTS_C+=	t_hash
38
39SRCS.t_ifunc_now=		t_ifunc.c
40SRCS.t_ifunc_norelro=		t_ifunc.c
41SRCS.t_ifunc_norelro_now=	t_ifunc.c
42
43LDADD.t_ifunc+=			${${MKRELRO} != "no":?-Wl,-z,relro:}
44LDADD.t_ifunc_now+=		${${MKRELRO} != "no":?-Wl,-z,relro:} -Wl,-z,now
45LDADD.t_ifunc_norelro+=		${${MKRELRO} != "no":?-Wl,-z,norelro:}
46LDADD.t_ifunc_norelro_now+=	${${MKRELRO} != "no":?-Wl,-z,norelro:} -Wl,-z,now
47
48SRCS.t_rtld_r_debug_nopie=	t_rtld_r_debug.c
49
50# If the port doesn't support PIE anyway, well, no big deal, we have
51# two copies of the same tiny test.
52LDADD.t_rtld_r_debug_nopie+=	-Wl,-no-pie
53
54.PATH:	${NETBSDSRCDIR}/libexec/ld.elf_so
55SRCS.t_hash+=	t_hash.c
56SRCS.t_hash+=	hash.c
57CPPFLAGS.t_hash.c+=	-I${NETBSDSRCDIR}/libexec/ld.elf_so
58
59COPTS.t_rtld_r_debug.c += ${CC_WNO_MAYBE_UNINITIALIZED}
60
61LDADD.t_dlerror-false=	-Wl,-rpath,/var/nonexistent/lib
62LDADD.t_dlvsym=		-Wl,-rpath,${TESTSDIR}/h_helper_symver_dso2
63.for t in t_ifunc t_ifunc_now t_ifunc_norelro t_ifunc_norelro_now
64LDADD.${t}+=		-Wl,-rpath,${TESTSDIR} -lutil
65DPADD.${t}+=		${LIBUTIL}
66.endfor
67LDADD.t_tls_extern+=	-Wl,-rpath,${TESTSDIR}
68
69TESTS_SH+=		t_df_1_noopen t_dl_symver t_thread_local_dtor
70
71BINDIR=			${TESTSDIR}
72PROGS+=			h_df_1_noopen1
73SRCS.h_df_1_noopen1=	h_df_1_noopen.c
74
75PROGS+=			h_df_1_noopen2
76SRCS.h_df_1_noopen2=	h_df_1_noopen.c
77LDADD.h_df_1_noopen2=	-lpthread
78
79PROGS+=			h_thread_local_dtor
80LDADD.h_thread_local_dtor=	-Wl,-rpath,${TESTSDIR}  -lpthread
81
82PROGS+=			h_ifunc
83SRCS.h_ifunc=		h_ifunc.c
84IFUNCDIR!=		cd ${.CURDIR}/helper_ifunc_dso && ${PRINTOBJDIR}
85LDADD.h_ifunc=		-Wl,-rpath,${TESTSDIR} -L${IFUNCDIR} -lh_helper_ifunc_dso
86
87PROGS+=			h_locking
88SRCS.h_locking=		h_locking.c
89LDADD.h_locking=	-lpthread -Wl,--export-dynamic -Wl,-rpath,${TESTSDIR}
90
91PROGS+=			h_dl_symver_v0
92SRCS.h_dl_symver_v0=	h_dl_symver.c
93V0ODIR!=		cd ${.CURDIR}/helper_symver_dso0 && ${PRINTOBJDIR}
94LDADD.h_dl_symver_v0=	-L${V0ODIR} -lh_helper_symver_dso
95
96PROGS+=			h_dl_symver_v1
97SRCS.h_dl_symver_v1=	h_dl_symver.c
98V1ODIR!=		cd ${.CURDIR}/helper_symver_dso1 && ${PRINTOBJDIR}
99LDADD.h_dl_symver_v1=	-L${V1ODIR} -lh_helper_symver_dso
100
101PROGS+=			h_dl_symver_v2
102SRCS.h_dl_symver_v2=	h_dl_symver.c
103V2ODIR!=		cd ${.CURDIR}/helper_symver_dso2 && ${PRINTOBJDIR}
104LDADD.h_dl_symver_v2=	-L${V2ODIR} -lh_helper_symver_dso
105
106.include <bsd.test.mk>
107
108.else
109
110NOPROG=	# defined
111.include <bsd.prog.mk>
112
113.endif
114