Makefile revision 1.87
1#	$NetBSD: Makefile,v 1.87 2008/10/26 07:11:54 mrg Exp $
2
3# We are not building this with PIE
4PIE_CFLAGS=
5PIE_LDFLAGS=
6.include <bsd.init.mk>			# for OBJECT_FMT definition
7.include <bsd.shlib.mk>			# for SHLINKINSTALLDIR definition
8
9.if defined(LDELFSO_MACHINE_CPU) && !empty(LDELFSO_MACHINE_CPU) && \
10    exists(${.CURDIR}/arch/${LDELFSO_MACHINE_CPU})
11ARCHSUBDIR=	${LDELFSO_MACHINE_CPU}
12.else
13ARCHSUBDIR=	${MACHINE_CPU}
14.endif
15M=		${.CURDIR}/arch/${ARCHSUBDIR}
16
17.if ((${MACHINE_ARCH} == "alpha") ||					\
18     (${MACHINE_CPU} == "arm") ||					\
19     (${MACHINE_ARCH} == "hppa") ||					\
20     (${MACHINE_ARCH} == "i386") ||					\
21     (${MACHINE_ARCH} == "m68k") ||					\
22     (${MACHINE_CPU} == "mips") ||					\
23     (${MACHINE_ARCH} == "powerpc") ||					\
24     (${MACHINE_CPU} == "sh3") ||					\
25     (${MACHINE_ARCH} == "sparc") ||					\
26     (${MACHINE_ARCH} == "sparc64") ||					\
27     (${MACHINE_ARCH} == "x86_64") ||					\
28     (${MACHINE_ARCH} == "vax")) &&					\
29    ${OBJECT_FMT} == "ELF" && ${MKPIC} != "no"
30
31PROG?=		ld.elf_so
32
33LDFLAGS+=	-shared -symbolic -nostartfiles
34LDFLAGS+=	-Wl,-static
35
36# Adds SRCS, CPPFLAGS, LDFLAGS, etc.  Must go first so MD startup source
37# is first.
38.if exists($M/Makefile.inc)
39.include "$M/Makefile.inc"
40.endif
41
42# Support src/compat/libexec/ld.elf_so.
43.if defined(LD32DIR)
44CLIBOBJ!=	cd ${NETBSDSRCDIR}/compat/lib/libc && ${PRINTOBJDIR}
45.else
46CLIBOBJ!=	cd ${NETBSDSRCDIR}/lib/libc && ${PRINTOBJDIR}
47.endif
48
49SRCS+=		rtld.c reloc.c symbol.c xmalloc.c xprintf.c debug.c \
50		map_object.c load.c search.c headers.c paths.c expand.c
51
52.if ${USE_FORT} == "yes"
53.PATH.c: ${NETBSDSRCDIR}/lib/libc/misc
54SRCS+=		stack_protector.c
55.endif
56
57.PATH.c: ${NETBSDSRCDIR}/lib/libc/stdlib
58SRCS+=		exit.c
59
60BINDIR=		${SHLINKINSTALLDIR}
61
62CPPFLAGS+=	-DLIBDIR=\"${LIBDIR}\" -D_PATH_RTLD=\"${BINDIR}/${PROG}\"
63CPPFLAGS+=	-I${.CURDIR}
64CPPFLAGS+=	-DRTLD_LOADER
65CPPFLAGS+=	-D_RTLD_SOURCE
66CPPFLAGS+=	-DCOMBRELOC
67#CPPFLAGS+=	-DDEBUG
68#CPPFLAGS+=	-DRTLD_DEBUG
69#CPPFLAGS+=	-DRTLD_DEBUG_RELOC
70#DBG=		-g
71DBG=		-O3 -fomit-frame-pointer
72
73.if ${SHLIBDIR} != ${LIBDIR}
74CPPFLAGS+=	-DRTLD_DEFAULT_LIBRARY_PATH=\"${SHLIBDIR}:${LIBDIR}\"
75.endif
76
77LDADD+=		-L${CLIBOBJ} -L${DESTDIR}${LIBDIR}
78.if ${MKPICLIB} != "no"
79LDADD+=		-lc_pic
80.if ${MKPICINSTALL} != "no"
81DPADD+=		${LIBC_PIC}
82.endif
83DPADD+=		${CLIBOBJ}/libc_pic.a
84.else
85LDADD+=		-lc
86DPADD+=		${CLIBOBJ}/libc.a
87.endif
88
89STRIPFLAG=
90
91.PATH: $M
92
93${PROG}: ${OBJS} ${DPADD}
94	${_MKMSG_LINK} ${PROG}
95	${CC} ${LDFLAGS} -o ${PROG} ${OBJS} ${LDADD}
96
97.if ${SHLINKINSTALLDIR} != "/usr/libexec"
98SYMLINKS+=	${SHLINKINSTALLDIR}/${PROG} /usr/libexec/${PROG}
99.endif
100
101.include <bsd.prog.mk>
102.else
103
104MAN=		ld.elf_so.1
105
106.include <bsd.man.mk>
107.endif
108