freebsd-dev/usr.bin/svn/Makefile.inc
Ed Maste bcf99d2d99 Add WITH_PIE knob to build Position Independent Executables
Building binaries as PIE allows the executable itself to be loaded at a
random address when ASLR is enabled (not just its shared libraries).

With this change PIE objects have a .pieo extension and INTERNALLIB
libraries libXXX_pie.a.

MK_PIE is disabled for some kerberos5 tools, Clang, and Subversion, as
they explicitly reference .a libraries in their Makefiles.  These can
be addressed on an individual basis later.  MK_PIE is also disabled for
rtld-elf because it is already position-independent using bespoke
Makefile rules.

Currently only dynamically linked binaries will be built as PIE.

Discussed with:	dim
Reviewed by:	kib
MFC after:	1 month
Relnotes:	Yes
Sponsored by:	The FreeBSD Foundation
Differential Revision:	https://reviews.freebsd.org/D18423
2019-02-15 22:22:38 +00:00

63 lines
1.9 KiB
Makefile

# $FreeBSD$
.include <src.opts.mk>
MK_PIE:= no # Explicit libXXX.a references
.if ${MK_SVN} == "yes"
SVNLITE?=
.else
SVNLITE?= lite
.endif
PACKAGE= svn
.if !defined(SVNDIR)
SVNDIR= ${SRCTOP}/contrib/subversion/subversion
APRU= ${SRCTOP}/contrib/apr-util
APR= ${SRCTOP}/contrib/apr
WARNS?= 0 # definitely not warns friendly
.sinclude "${.CURDIR:H:H}/Makefile.inc"
LIBAPRDIR= ${.OBJDIR:H}/lib/libapr
LIBAPR_UTILDIR= ${.OBJDIR:H}/lib/libapr_util
LIBSERFDIR= ${.OBJDIR:H}/lib/libserf
LIBSVN_CLIENTDIR= ${.OBJDIR:H}/lib/libsvn_client
LIBSVN_DELTADIR= ${.OBJDIR:H}/lib/libsvn_delta
LIBSVN_DIFFDIR= ${.OBJDIR:H}/lib/libsvn_diff
LIBSVN_FSDIR= ${.OBJDIR:H}/lib/libsvn_fs
LIBSVN_FS_FSDIR= ${.OBJDIR:H}/lib/libsvn_fs_fs
LIBSVN_FS_UTILDIR= ${.OBJDIR:H}/lib/libsvn_fs_util
LIBSVN_FS_XDIR= ${.OBJDIR:H}/lib/libsvn_fs_x
LIBSVN_RADIR= ${.OBJDIR:H}/lib/libsvn_ra
LIBSVN_RA_LOCALDIR= ${.OBJDIR:H}/lib/libsvn_ra_local
LIBSVN_RA_SVNDIR= ${.OBJDIR:H}/lib/libsvn_ra_svn
LIBSVN_RA_SERFDIR= ${.OBJDIR:H}/lib/libsvn_ra_serf
LIBSVN_REPOSDIR= ${.OBJDIR:H}/lib/libsvn_repos
LIBSVN_SUBRDIR= ${.OBJDIR:H}/lib/libsvn_subr
LIBSVN_WCDIR= ${.OBJDIR:H}/lib/libsvn_wc
LIBAPR= ${LIBAPRDIR}/libapr.a
LIBAPR_UTIL= ${LIBAPR_UTILDIR}/libapr-util.a
LIBSERF= ${LIBSERFDIR}/libserf.a
LIBSVN_CLIENT= ${LIBSVN_CLIENTDIR}/libsvn_client.a
LIBSVN_DELTA= ${LIBSVN_DELTADIR}/libsvn_delta.a
LIBSVN_DIFF= ${LIBSVN_DIFFDIR}/libsvn_diff.a
LIBSVN_FS= ${LIBSVN_FSDIR}/libsvn_fs.a
LIBSVN_FS_FS= ${LIBSVN_FS_FSDIR}/libsvn_fs_fs.a
LIBSVN_FS_UTIL= ${LIBSVN_FS_UTILDIR}/libsvn_fs_util.a
LIBSVN_FS_X= ${LIBSVN_FS_XDIR}/libsvn_fs_x.a
LIBSVN_RA= ${LIBSVN_RADIR}/libsvn_ra.a
LIBSVN_RA_LOCAL= ${LIBSVN_RA_LOCALDIR}/libsvn_ra_local.a
LIBSVN_RA_SVN= ${LIBSVN_RA_SVNDIR}/libsvn_ra_svn.a
LIBSVN_RA_SERF= ${LIBSVN_RA_SERFDIR}/libsvn_ra_serf.a
LIBSVN_REPOS= ${LIBSVN_REPOSDIR}/libsvn_repos.a
LIBSVN_SUBR= ${LIBSVN_SUBRDIR}/libsvn_subr.a
LIBSVN_WC= ${LIBSVN_WCDIR}/libsvn_wc.a
.endif