1# $FreeBSD$ 2 3PROG= ld-elf.so.2 4SRCS= rtld_start.S \ 5 reloc.c rtld.c rtld_lock.c rtld_printf.c map_object.c \ 6 malloc.c xmalloc.c debug.c libmap.c 7MAN= rtld.1 8BINDIR= /libexec 9SYMLINKS= ${BINDIR}/${PROG} /usr/libexec/${PROG} 10WARNS?= 2 11 12# DO NOT USE -static, this is a special case 13.undef NOSHARED 14 15# To activate LD_DEBUG functionality, define ENABLE_DEBUG 16# e.g. make -DENABLE_DEBUG 17 18# for now do not let the use of -flto 19.if ${CFLAGS:M-flto} 20CFLAGS+= -fno-lto 21LDFLAGS+= -flto 22.endif 23 24CFLAGS+= -DIN_RTLD 25CFLAGS+= -I${.CURDIR}/${MACHINE_ARCH} -I${.CURDIR} -D__thread= 26CFLAGS+= -I${.CURDIR}/../../lib/csu/common 27LDFLAGS+= -nostdlib -e .rtld_start -Wl,--no-undefined 28INSTALLFLAGS= -C -b 29.ifndef NOFSCHG 30INSTALLFLAGS+= -fschg 31.endif 32MLINKS= rtld.1 ld-elf.so.1.1 33MLINKS+= rtld.1 ld-elf.so.2.1 34MLINKS+= rtld.1 _rtld_functrace.3 35 36.if !defined(NO_SYMVER) 37VERSION_DEF= ${.CURDIR}/../../lib/libc/Versions.def 38SYMBOL_MAPS= ${.CURDIR}/Symbol.map 39VERSION_MAP= Version.map 40LDFLAGS+= -Wl,--version-script=${VERSION_MAP} 41 42rtld.c: ${VERSION_MAP} 43 44.if exists(${.CURDIR}/${MACHINE_ARCH}/Symbol.map) 45SYMBOL_MAPS+= ${.CURDIR}/${MACHINE_ARCH}/Symbol.map 46.endif 47.endif 48 49.if exists(${.CURDIR}/${MACHINE_ARCH}/Makefile.inc) 50.include "${.CURDIR}/${MACHINE_ARCH}/Makefile.inc" 51.endif 52 53CFLAGS+= -fpic -DPIC 54LDFLAGS+= -shared -Wl,-Bsymbolic 55DPADD= ${.OBJDIR}/../../lib/libc_rtld/libc_rtld_pic.a 56LDADD= -L${.OBJDIR}/../../lib/libc_rtld -lc_rtld_pic 57 58.ifdef ENABLE_DEBUG 59CFLAGS+= -DDEBUG 60.endif 61 62# Since moving rtld-elf to /libexec, we need to create a symlink. 63# Fixup the existing binary that's there so we can symlink over it. 64beforeinstall: 65.if exists(${DESTDIR}/usr/libexec/${PROG}) 66 chflags -h noschg ${DESTDIR}/usr/libexec/${PROG} 67.endif 68 69.PATH: ${.CURDIR}/${MACHINE_ARCH} 70 71.include <bsd.symver.mk> 72.include <bsd.prog.mk> 73