]> CyberLeo.Net >> Repos - FreeBSD/FreeBSD.git/blob - libexec/rtld-elf/Makefile
Remove sparc64 specific parts of rtld-elf.
[FreeBSD/FreeBSD.git] / libexec / rtld-elf / Makefile
1 # $FreeBSD$
2
3 # Use the following command to build local debug version of dynamic
4 # linker:
5 # make DEBUG_FLAGS=-g WITHOUT_TESTS=yes all
6
7 RTLD_ELF_DIR:=  ${.PARSEDIR}
8
9 .include <src.opts.mk>
10 PACKAGE=        clibs
11 MK_PIE=         no # Always position independent using local rules
12 MK_SSP=         no
13
14 CONFS=          libmap.conf
15 PROG?=          ld-elf.so.1
16 .if (${PROG:M*ld-elf32*} != "")
17 TAGS+=          lib32
18 .endif
19 SRCS= \
20         rtld_start.S \
21         reloc.c \
22         rtld.c \
23         rtld_lock.c \
24         rtld_malloc.c \
25         rtld_printf.c \
26         map_object.c \
27         xmalloc.c \
28         debug.c \
29         libmap.c
30 MAN?=           rtld.1
31 CSTD?=          gnu99
32 CFLAGS+=        -Wall -DFREEBSD_ELF -DIN_RTLD -ffreestanding
33 CFLAGS+=        -I${SRCTOP}/lib/csu/common
34 .if exists(${RTLD_ELF_DIR}/${MACHINE_ARCH})
35 RTLD_ARCH=      ${MACHINE_ARCH}
36 .else
37 RTLD_ARCH=      ${MACHINE_CPUARCH}
38 .endif
39 CFLAGS+=        -I${RTLD_ELF_DIR}/${RTLD_ARCH} -I${RTLD_ELF_DIR}
40
41 NO_WCAST_ALIGN= yes
42 WARNS?=         6
43 INSTALLFLAGS=   -C -b
44 PRECIOUSPROG=
45 BINDIR=         /libexec
46 SYMLINKS=       ../..${BINDIR}/${PROG} ${LIBEXECDIR}/${PROG}
47 MLINKS?=        rtld.1 ld-elf.so.1.1 \
48                 rtld.1 ld.so.1
49
50 CFLAGS+=        -fpic -DPIC $(DEBUG)
51 LDFLAGS+=       -shared -Wl,-Bsymbolic -Wl,-z,defs -nostdlib -e ${RTLD_ENTRY}
52 # Pull in the dependencies that we use from libc
53 .include "rtld-libc/Makefile.inc"
54 .if ${MK_TOOLCHAIN} == "no"
55 LDFLAGS+=       -L${LIBCDIR}
56 .endif
57
58 VERSION_DEF=    ${LIBCSRCDIR}/Versions.def
59 SYMBOL_MAPS=    ${RTLD_ELF_DIR}/Symbol.map
60 VERSION_MAP=    Version.map
61 LDFLAGS+=       -Wl,--version-script=${VERSION_MAP}
62
63 .if exists(${RTLD_ELF_DIR}/${RTLD_ARCH}/Symbol.map)
64 SYMBOL_MAPS+=   ${RTLD_ELF_DIR}/${RTLD_ARCH}/Symbol.map
65 .endif
66
67 .sinclude "${RTLD_ELF_DIR}/${RTLD_ARCH}/Makefile.inc"
68 RTLD_ENTRY?=    .rtld_start
69
70 # Since moving rtld-elf to /libexec, we need to create a symlink.
71 # Fixup the existing binary that's there so we can symlink over it.
72 beforeinstall:
73 .if exists(${DESTDIR}/usr/libexec/${PROG}) && ${MK_STAGING} == "no"
74         -chflags -h noschg ${DESTDIR}/usr/libexec/${PROG}
75 .endif
76
77 .PATH: ${RTLD_ELF_DIR}/${RTLD_ARCH}
78
79 .if ${.CURDIR} == ${RTLD_ELF_DIR}
80 HAS_TESTS=
81 SUBDIR.${MK_TESTS}+= tests
82 .endif
83
84 .include <bsd.prog.mk>
85 ${PROG_FULL}:   ${VERSION_MAP}
86 .include <bsd.symver.mk>
87
88 .if ${COMPILER_TYPE} == "gcc"
89 # GCC warns about redeclarations even though they have __exported
90 # and are therefore not identical to the ones from the system headers.
91 CFLAGS+=        -Wno-redundant-decls
92 .if ${COMPILER_VERSION} < 40300
93 # Silence -Wshadow false positives in ancient GCC
94 CFLAGS+=        -Wno-shadow
95 .endif
96 .endif