1# $FreeBSD$ 2 3PROG?= ld-elf.so.1 4SRCS= rtld_start.S rtld.c rtld_lock.c map_object.c malloc.c \ 5 xmalloc.c debug.c reloc.c libmap.c 6MAN= rtld.1 7CSTD?= gnu99 8CFLAGS+= -Wall -DFREEBSD_ELF -DIN_RTLD 9CFLAGS+= -I${.CURDIR}/${MACHINE_ARCH} -I${.CURDIR} 10LDFLAGS+= -nostdlib -e .rtld_start 11INSTALLFLAGS= -fschg -C -b 12BINDIR= /libexec 13SYMLINKS= ${BINDIR}/${PROG} /usr/libexec/${PROG} 14MLINKS= rtld.1 ld-elf.so.1.1 \ 15 rtld.1 ld.so.1 16 17.if exists(${.CURDIR}/${MACHINE_ARCH}/Makefile.inc) 18.include "${.CURDIR}/${MACHINE_ARCH}/Makefile.inc" 19.endif 20 21# If LDSCRIPT is defined, we build the dynamic linker as an 22# executable. Otherwise we build it as a shared object. We ignore 23# LDSCRIPT if the running kernel is too old to support it. 24.if defined(LDSCRIPT) 25KERN_OSRELDATE!= /sbin/sysctl -n kern.osreldate 2>/dev/null || echo 0 26.if ${KERN_OSRELDATE} >= 400001 27LDSO_IS_EXECUTABLE= yes 28.endif 29.endif 30 31.ifdef LDSO_IS_EXECUTABLE 32OBJS+= dyn_hack.so 33LDFLAGS+= -Wl,-T,${LDSCRIPT} -Wl,-E -Wl,-Bstatic 34DPADD= ${LIBC} 35LDADD= -lc 36.else 37CFLAGS+= -fpic -DPIC 38LDFLAGS+= -shared -Wl,-Bsymbolic 39DPADD= ${LIBC_PIC} 40LDADD= -lc_pic 41.endif 42 43dyn_hack.so: 44 ${CC} -shared -nostdlib -o dyn_hack.so -x c /dev/null 45 46# Since moving rtld-elf to /libexec, we need to create a symlink. 47# Fixup the existing binary that's there so we can symlink over it. 48beforeinstall: 49 -chflags noschg ${DESTDIR}/usr/libexec/${PROG} 50 51.PATH: ${.CURDIR}/${MACHINE_ARCH} 52 53.include <bsd.prog.mk> 54