Makefile revision 1.92
11.1Sthorpej#	$NetBSD: Makefile,v 1.92 2009/12/13 09:01:45 mrg Exp $
21.1Sthorpej#
31.1Sthorpej# NOTE: when changing ld.so, ensure that ldd still compiles.
41.1Sthorpej#
51.1Sthorpej
61.1SthorpejWARNS?=4
71.1Sthorpej
81.1Sthorpej# This needs to be before bsd.init.mk
91.1Sthorpej.if defined(BSD_MK_COMPAT_FILE)
101.1Sthorpej.include <${BSD_MK_COMPAT_FILE}>
111.1Sthorpej.endif
121.1Sthorpej
131.1Sthorpej# We are not building this with PIE
141.1SthorpejPIE_CFLAGS=
151.1SthorpejPIE_LDFLAGS=
161.1Sthorpej.include <bsd.init.mk>			# for OBJECT_FMT definition
171.1Sthorpej.include <bsd.shlib.mk>			# for SHLINKINSTALLDIR definition
181.1Sthorpej
191.1Sthorpej.if defined(LDELFSO_MACHINE_CPU) && !empty(LDELFSO_MACHINE_CPU) && \
201.1Sthorpej    exists(${.CURDIR}/arch/${LDELFSO_MACHINE_CPU})
211.1SthorpejARCHSUBDIR=	${LDELFSO_MACHINE_CPU}
221.1Sthorpej.else
231.1SthorpejARCHSUBDIR=	${MACHINE_CPU}
241.1Sthorpej.endif
251.1SthorpejM=		${.CURDIR}/arch/${ARCHSUBDIR}
261.1Sthorpej
271.1Sthorpej.if ((${MACHINE_ARCH} == "alpha") ||					\
281.1Sthorpej     (${MACHINE_CPU} == "arm") ||					\
291.1Sthorpej     (${MACHINE_ARCH} == "hppa") ||					\
301.1Sthorpej     (${MACHINE_ARCH} == "i386") ||					\
311.1Sthorpej     (${MACHINE_ARCH} == "m68k") ||					\
321.1Sthorpej     (${MACHINE_CPU} == "mips") ||					\
331.1Sthorpej     (${MACHINE_ARCH} == "powerpc") ||					\
341.1Sthorpej     (${MACHINE_CPU} == "sh3") ||					\
351.1Sthorpej     (${MACHINE_ARCH} == "sparc") ||					\
361.1Sthorpej     (${MACHINE_ARCH} == "sparc64") ||					\
371.1Sthorpej     (${MACHINE_ARCH} == "x86_64") ||					\
381.1Sthorpej     (${MACHINE_ARCH} == "vax")) &&					\
391.1Sthorpej    ${OBJECT_FMT} == "ELF" && ${MKPIC} != "no"
401.1Sthorpej
411.1SthorpejPROG?=		ld.elf_so
421.1Sthorpej
431.1SthorpejLDFLAGS+=	-shared -symbolic -nostartfiles
441.1SthorpejLDFLAGS+=	-Wl,-static
451.1Sthorpej
461.1Sthorpej# Adds SRCS, CPPFLAGS, LDFLAGS, etc.  Must go first so MD startup source
471.1Sthorpej# is first.
481.1Sthorpej.if exists($M/Makefile.inc)
491.1Sthorpej.include "$M/Makefile.inc"
501.1Sthorpej.endif
511.1Sthorpej
521.1Sthorpej# Support src/compat/libexec/ld.elf_so.
531.1Sthorpej.if defined(MLIBDIR)
541.1SthorpejCLIBOBJ!=	cd ${NETBSDSRCDIR}/compat/lib/libc && ${PRINTOBJDIR}
551.1Sthorpej.else
561.1SthorpejCLIBOBJ!=	cd ${NETBSDSRCDIR}/lib/libc && ${PRINTOBJDIR}
571.1Sthorpej.endif
581.1Sthorpej
591.1SthorpejSRCS+=		rtld.c reloc.c symbol.c xmalloc.c xprintf.c debug.c \
601.1Sthorpej		map_object.c load.c search.c headers.c paths.c expand.c
611.1Sthorpej
621.1Sthorpej.if ${USE_FORT} == "yes"
631.1Sthorpej.PATH.c: ${NETBSDSRCDIR}/lib/libc/misc
641.1SthorpejSRCS+=		stack_protector.c
651.1Sthorpej.endif
661.1Sthorpej
671.1Sthorpej.PATH.c: ${NETBSDSRCDIR}/lib/libc/stdlib
681.1SthorpejSRCS+=		exit.c
691.1Sthorpej
701.1SthorpejBINDIR=		${SHLINKINSTALLDIR}
711.1Sthorpej
721.1SthorpejCPPFLAGS+=	-DLIBDIR=\"${LIBDIR}\" -D_PATH_RTLD=\"${BINDIR}/${PROG}\"
731.1SthorpejCPPFLAGS+=	-I${.CURDIR}
741.1SthorpejCPPFLAGS+=	-DRTLD_LOADER
751.1SthorpejCPPFLAGS+=	-D_RTLD_SOURCE
761.1SthorpejCPPFLAGS+=	-DCOMBRELOC
771.1Sthorpej#CPPFLAGS+=	-DDEBUG
781.1Sthorpej#CPPFLAGS+=	-DRTLD_DEBUG
791.1Sthorpej#CPPFLAGS+=	-DRTLD_DEBUG_RELOC
801.1Sthorpej#DBG=		-g
811.1SthorpejDBG=		-O3 -fomit-frame-pointer
821.1Sthorpej
831.1Sthorpej.if ${SHLIBDIR} != ${LIBDIR}
841.1SthorpejCPPFLAGS+=	-DRTLD_DEFAULT_LIBRARY_PATH=\"${SHLIBDIR}:${LIBDIR}\"
851.1Sthorpej.endif
861.1Sthorpej
871.1SthorpejLDADD+=		-L${CLIBOBJ} -L${DESTDIR}${LIBDIR}
881.1Sthorpej.if ${MKPICLIB} != "no"
891.1SthorpejLDADD+=		-lc_pic
901.1Sthorpej.if ${MKPICINSTALL} != "no"
911.1SthorpejDPADD+=		${LIBC_PIC}
921.1Sthorpej.endif
931.1SthorpejDPADD+=		${CLIBOBJ}/libc_pic.a
941.1Sthorpej.else
951.1SthorpejLDADD+=		-lc
961.1SthorpejDPADD+=		${CLIBOBJ}/libc.a
971.1Sthorpej.endif
981.1Sthorpej
991.1SthorpejSTRIPFLAG=
1001.1Sthorpej
1011.1Sthorpej.PATH: $M
1021.1Sthorpej
1031.1Sthorpej${PROG}: ${OBJS} ${DPADD}
1041.1Sthorpej	${_MKMSG_LINK} ${PROG}
1051.1Sthorpej	${CC} ${LDFLAGS} -o ${PROG} ${OBJS} ${LDADD}
1061.1Sthorpej
1071.1Sthorpej.if ${SHLINKINSTALLDIR} != "/usr/libexec"
1081.1SthorpejSYMLINKS+=	${SHLINKINSTALLDIR}/${PROG} /usr/libexec/${PROG}
1091.1Sthorpej.endif
1101.1Sthorpej
111.include <bsd.prog.mk>
112.else
113
114MAN=		ld.elf_so.1
115
116.include <bsd.man.mk>
117.endif
118