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 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 12MLINKS= rtld.1 ld-elf.so.1.1 \ 13 rtld.1 ld.so.1 14 15# 16# To enable the libmap.conf functionality please 17# add 'WITH_LIBMAP=yes' to /etc/make.conf, recompile 18# and reinstall rtld-elf. 19.ifdef WITH_LIBMAP 20CFLAGS+= -DWITH_LIBMAP 21SRCS+= libmap.c 22.endif 23 24.if exists(${.CURDIR}/${MACHINE_ARCH}/Makefile.inc) 25.include "${.CURDIR}/${MACHINE_ARCH}/Makefile.inc" 26.endif 27 28# If LDSCRIPT is defined, we build the dynamic linker as an 29# executable. Otherwise we build it as a shared object. We ignore 30# LDSCRIPT if the running kernel is too old to support it. 31.if defined(LDSCRIPT) 32KERN_OSRELDATE!= /sbin/sysctl -n kern.osreldate 2>/dev/null || echo 0 33.if ${KERN_OSRELDATE} >= 400001 34LDSO_IS_EXECUTABLE= yes 35.endif 36.endif 37 38.ifdef LDSO_IS_EXECUTABLE 39OBJS+= dyn_hack.so 40LDFLAGS+= -Wl,-T,${LDSCRIPT} -Wl,-E -Wl,-Bstatic 41DPADD= ${LIBC} 42LDADD= -lc 43.else 44CFLAGS+= -fpic -DPIC 45LDFLAGS+= -shared -Wl,-Bsymbolic 46DPADD= ${LIBC_PIC} 47LDADD= -lc_pic 48.endif 49 50dyn_hack.so: 51 ${CC} -shared -nostdlib -o dyn_hack.so -x c /dev/null 52 53.PATH: ${.CURDIR}/${MACHINE_ARCH} 54 55.include <bsd.prog.mk> 56