xref: /freebsd/libexec/rtld-elf/Makefile (revision 043fc4cb151dd77870c0736e978ef2f425b19483)
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