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