Home | History | Annotate | Line # | Download | only in ld.elf_so
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
      4 PIE_CFLAGS=
      5 PIE_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})
     11 ARCHSUBDIR=	${LDELFSO_MACHINE_CPU}
     12 .else
     13 ARCHSUBDIR=	${MACHINE_CPU}
     14 .endif
     15 M=		${.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 
     31 PROG?=		ld.elf_so
     32 
     33 LDFLAGS+=	-shared -symbolic -nostartfiles
     34 LDFLAGS+=	-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)
     44 CLIBOBJ!=	cd ${NETBSDSRCDIR}/compat/lib/libc && ${PRINTOBJDIR}
     45 .else
     46 CLIBOBJ!=	cd ${NETBSDSRCDIR}/lib/libc && ${PRINTOBJDIR}
     47 .endif
     48 
     49 SRCS+=		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
     54 SRCS+=		stack_protector.c
     55 .endif
     56 
     57 .PATH.c: ${NETBSDSRCDIR}/lib/libc/stdlib
     58 SRCS+=		exit.c
     59 
     60 BINDIR=		${SHLINKINSTALLDIR}
     61 
     62 CPPFLAGS+=	-DLIBDIR=\"${LIBDIR}\" -D_PATH_RTLD=\"${BINDIR}/${PROG}\"
     63 CPPFLAGS+=	-I${.CURDIR}
     64 CPPFLAGS+=	-DRTLD_LOADER
     65 CPPFLAGS+=	-D_RTLD_SOURCE
     66 CPPFLAGS+=	-DCOMBRELOC
     67 #CPPFLAGS+=	-DDEBUG
     68 #CPPFLAGS+=	-DRTLD_DEBUG
     69 #CPPFLAGS+=	-DRTLD_DEBUG_RELOC
     70 #DBG=		-g
     71 DBG=		-O3 -fomit-frame-pointer
     72 
     73 .if ${SHLIBDIR} != ${LIBDIR}
     74 CPPFLAGS+=	-DRTLD_DEFAULT_LIBRARY_PATH=\"${SHLIBDIR}:${LIBDIR}\"
     75 .endif
     76 
     77 LDADD+=		-L${CLIBOBJ} -L${DESTDIR}${LIBDIR}
     78 .if ${MKPICLIB} != "no"
     79 LDADD+=		-lc_pic
     80 .if ${MKPICINSTALL} != "no"
     81 DPADD+=		${LIBC_PIC}
     82 .endif
     83 DPADD+=		${CLIBOBJ}/libc_pic.a
     84 .else
     85 LDADD+=		-lc
     86 DPADD+=		${CLIBOBJ}/libc.a
     87 .endif
     88 
     89 STRIPFLAG=
     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"
     98 SYMLINKS+=	${SHLINKINSTALLDIR}/${PROG} /usr/libexec/${PROG}
     99 .endif
    100 
    101 .include <bsd.prog.mk>
    102 .else
    103 
    104 MAN=		ld.elf_so.1
    105 
    106 .include <bsd.man.mk>
    107 .endif
    108