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