150476Speter# $FreeBSD: stable/11/libexec/rtld-elf/Makefile 346485 2019-04-21 09:13:56Z kib $
258676Sbde
3270803Skib# Use the following command to build local debug version of dynamic
4270803Skib# linker:
5346485Skib# make DEBUG_FLAGS=-g WITHOUT_TESTS=yes all
6270803Skib
7265420Simp.include <src.opts.mk>
8298107SgjbPACKAGE=	clibs
9188895SruMK_SSP=		no
10169524Sdeischen
11127250SpeterPROG?=		ld-elf.so.1
12298107Sgjb.if (${PROG:M*ld-elf32*} != "")
13298107SgjbTAGS+=		lib32
14298107Sgjb.endif
15129242SseSRCS=		rtld_start.S \
16225152Skib		reloc.c rtld.c rtld_lock.c rtld_printf.c map_object.c \
17129204Scognet		malloc.c xmalloc.c debug.c libmap.c
1874814SruMAN=		rtld.1
19115814SobrienCSTD?=		gnu99
20291723SnwhitehornCFLAGS+=	-Wall -DFREEBSD_ELF -DIN_RTLD -ffreestanding
21291620SbdreweryCFLAGS+=	-I${SRCTOP}/lib/csu/common
22211785Snwhitehorn.if exists(${.CURDIR}/${MACHINE_ARCH})
23211785SnwhitehornRTLD_ARCH=	${MACHINE_ARCH}
24211785Snwhitehorn.else
25211785SnwhitehornRTLD_ARCH=	${MACHINE_CPUARCH}
26211785Snwhitehorn.endif
27211785SnwhitehornCFLAGS+=	-I${.CURDIR}/${RTLD_ARCH} -I${.CURDIR}
28209885Snwhitehorn.if ${MACHINE_ARCH} == "powerpc64"
29209885SnwhitehornLDFLAGS+=	-nostdlib -e _rtld_start
30209885Snwhitehorn.else
3145501SjdpLDFLAGS+=	-nostdlib -e .rtld_start
32209885Snwhitehorn.endif
33201380SedWARNS?=		2
34137164SruINSTALLFLAGS=	-C -b
35137164SruPRECIOUSPROG=
36243862SpjdBINDIR=		/libexec
37319016SrgrimesSYMLINKS=	../..${BINDIR}/${PROG} ${LIBEXECDIR}/${PROG}
38110836SphantomMLINKS=		rtld.1 ld-elf.so.1.1 \
39110836Sphantom		rtld.1 ld.so.1
4038816Sdfr
41215148Sdim.if ${MACHINE_CPUARCH} == "sparc64"
42215148SdimCFLAGS+=	-fPIC
43215148Sdim.else
44215148SdimCFLAGS+=	-fpic
45215148Sdim.endif
46216694SkibCFLAGS+=	-DPIC $(DEBUG)
47280816Skib.if ${MACHINE_CPUARCH} == "amd64" || ${MACHINE_CPUARCH} == "i386"
48280816SkibCFLAGS+=	-fvisibility=hidden
49280816Skib.endif
50308964SkibLDFLAGS+=	-shared -Wl,-Bsymbolic -Wl,-z,defs
51275077SbaptLIBADD=		c_pic
52297461Sbdrewery.if ${MK_TOOLCHAIN} == "no"
53297461SbdreweryLDFLAGS+=	-L${LIBCDIR}
54297461Sbdrewery.endif
55168319Skan
56272350Sandrew.if ${MACHINE_CPUARCH} == "arm"
57260849Sed# Some of the required math functions (div & mod) are implemented in
58260849Sed# libcompiler_rt on ARM. The library also needs to be placed first to be
59260849Sed# correctly linked. As some of the functions are used before we have
60260849Sed# shared libraries.
61275077SbaptLIBADD+=	compiler_rt
62245653Sandrew.endif
63245653Sandrew
64245653Sandrew
65245653Sandrew
66169524Sdeischen.if ${MK_SYMVER} == "yes"
67291620SbdreweryVERSION_DEF=	${LIBCSRCDIR}/Versions.def
68168319SkanSYMBOL_MAPS=	${.CURDIR}/Symbol.map
69168319SkanVERSION_MAP=	Version.map
70168319SkanLDFLAGS+=	-Wl,--version-script=${VERSION_MAP}
71168319Skan
72211785Snwhitehorn.if exists(${.CURDIR}/${RTLD_ARCH}/Symbol.map)
73211785SnwhitehornSYMBOL_MAPS+=	${.CURDIR}/${RTLD_ARCH}/Symbol.map
7445501Sjdp.endif
75168319Skan.endif
7634192Sjdp
77211785Snwhitehorn.sinclude "${.CURDIR}/${RTLD_ARCH}/Makefile.inc"
7845501Sjdp
79119044Sgordon# Since moving rtld-elf to /libexec, we need to create a symlink.
80119044Sgordon# Fixup the existing binary that's there so we can symlink over it.
81119044Sgordonbeforeinstall:
82287977Sbdrewery.if exists(${DESTDIR}/usr/libexec/${PROG}) && ${MK_STAGING} == "no"
83243864Spjd	-chflags -h noschg ${DESTDIR}/usr/libexec/${PROG}
84137705Sru.endif
85119044Sgordon
86211785Snwhitehorn.PATH: ${.CURDIR}/${RTLD_ARCH}
8734192Sjdp
88267679Sjonathan.if ${MK_TESTS} != "no"
89267679SjonathanSUBDIR+=	tests
90267679Sjonathan.endif
91267679Sjonathan
92291622Sbdrewery.include <bsd.prog.mk>
93302325Sbdrewery${PROG_FULL}:	${VERSION_MAP}
94168319Skan.include <bsd.symver.mk>
95