aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorBaptiste Daroussin <bapt@FreeBSD.org>2015-05-04 16:28:54 +0000
committerBaptiste Daroussin <bapt@FreeBSD.org>2015-05-04 16:28:54 +0000
commit5551c573554e4bb755565098222d0d74fa83e5cb (patch)
tree5cd31e3767f29d82f87cfe495e4ebad8fb41da45
parent98becbfc3c40540968109c02d504fa1bec1adc78 (diff)
Rework PRIVATELIB
Now when a lib is marked as PRIVATELIB it is renamed into libprivate$foo instead of being installed in /usr/lib/private and playing with rpath. Also allow to install headers for PRIVATELIBS in that case the headers will be installed in /usr/include/private/$foo Keep the headers under a private namespace to prevent third party build system to easily find them to ensure they are only used on purpose. This allows for non base applications to statically link against a library in base which is linked to a privatelib Treating PRIVATELIBS as regular libraries allows to push them into our current compatX packages if needed. While here finish promotion of libevent as PRIVATELIB Install header for bsdstat and libucl Differential Revision: https://reviews.freebsd.org/D2365 Reviewed by: brooks, des Discussed with: imp
Notes
Notes: svn path=/head/; revision=282420
-rw-r--r--ObsoleteFiles.inc23
-rw-r--r--etc/mtree/BSD.usr.dist10
-rw-r--r--lib/libevent/Makefile1
-rw-r--r--lib/libucl/Makefile4
-rw-r--r--share/mk/atf.test.mk6
-rw-r--r--share/mk/bsd.incs.mk2
-rw-r--r--share/mk/bsd.lib.mk36
-rw-r--r--share/mk/bsd.prog.mk4
-rw-r--r--share/mk/src.libnames.mk65
9 files changed, 65 insertions, 86 deletions
diff --git a/ObsoleteFiles.inc b/ObsoleteFiles.inc
index a8a9f9091e07..3897b2a89f3c 100644
--- a/ObsoleteFiles.inc
+++ b/ObsoleteFiles.inc
@@ -38,6 +38,29 @@
# xargs -n1 | sort | uniq -d;
# done
+# 20150504
+OLD_LIBS+=usr/lib32/private/libatf-c++.so.2
+OLD_LIBS+=usr/lib32/private/libbsdstat.so.1
+OLD_LIBS+=usr/lib32/private/libheimipcs.so.11
+OLD_LIBS+=usr/lib32/private/libsqlite3.so.0
+OLD_LIBS+=usr/lib32/private/libunbound.so.5
+OLD_LIBS+=usr/lib32/private/libatf-c.so.1
+OLD_LIBS+=usr/lib32/private/libheimipcc.so.11
+OLD_LIBS+=usr/lib32/private/libldns.so.5
+OLD_LIBS+=usr/lib32/private/libssh.so.5
+OLD_LIBS+=usr/lib32/private/libucl.so.1
+OLD_DIRS+=usr/lib32/private
+OLD_LIBS+=usr/lib/private/libatf-c++.so.2
+OLD_LIBS+=usr/lib/private/libbsdstat.so.1
+OLD_LIBS+=usr/lib/private/libheimipcs.so.11
+OLD_LIBS+=usr/lib/private/libsqlite3.so.0
+OLD_LIBS+=usr/lib/private/libunbound.so.5
+OLD_LIBS+=usr/lib/private/libatf-c.so.1
+OLD_LIBS+=usr/lib/private/libheimipcc.so.11
+OLD_LIBS+=usr/lib/private/libldns.so.5
+OLD_LIBS+=usr/lib/private/libssh.so.5
+OLD_LIBS+=usr/lib/private/libucl.so.1
+OLD_DIRS+=usr/lib/private
# 20150501
OLD_FILES+=usr/bin/soeliminate
OLD_FILES+=usr/share/man/man1/soeliminate.1.gz
diff --git a/etc/mtree/BSD.usr.dist b/etc/mtree/BSD.usr.dist
index b182894ba78e..f0d42a2a3bde 100644
--- a/etc/mtree/BSD.usr.dist
+++ b/etc/mtree/BSD.usr.dist
@@ -8,6 +8,12 @@
bin
..
include
+ private
+ bsdstat
+ ..
+ ucl
+ ..
+ ..
..
lib
aout
@@ -32,16 +38,12 @@
..
i18n
..
- private
- ..
..
lib32
dtrace
..
i18n
..
- private
- ..
..
libdata
gcc
diff --git a/lib/libevent/Makefile b/lib/libevent/Makefile
index d8b1e2032ce3..1d20bcdc9478 100644
--- a/lib/libevent/Makefile
+++ b/lib/libevent/Makefile
@@ -7,7 +7,6 @@
LIB= event
SHLIB_MAJOR= 1
PRIVATELIB=
-INTERNALLIB=
SRCS= buffer.c evbuffer.c event.c kqueue.c log.c poll.c select.c signal.c
HDRS= event.h
diff --git a/lib/libucl/Makefile b/lib/libucl/Makefile
index b94f3dac40f6..310e8b70c071 100644
--- a/lib/libucl/Makefile
+++ b/lib/libucl/Makefile
@@ -14,8 +14,10 @@ SRCS= ucl_emitter_streamline.c \
ucl_util.c \
xxhash.c
-.PATH: ${LIBUCL}/src
+.PATH: ${LIBUCL}/src \
+ ${LIBUCL}/include
+INCS= ucl.h
LIBADD= m
WARNS= 1
diff --git a/share/mk/atf.test.mk b/share/mk/atf.test.mk
index 08632037de22..dffd4665b847 100644
--- a/share/mk/atf.test.mk
+++ b/share/mk/atf.test.mk
@@ -72,11 +72,10 @@ MAN.${_T}?= # empty
SRCS.${_T}?= ${_T}.c
DPADD.${_T}+= ${LIBATF_C}
.if empty(LDFLAGS:M-static) && empty(LDFLAGS.${_T}:M-static)
-LDADD.${_T}+= ${LDATF_C}
+LDADD.${_T}+= ${LDADD_atf_c}
.else
LDADD.${_T}+= ${LIBATF_C}
.endif
-USEPRIVATELIB+= atf-c
TEST_INTERFACE.${_T}= atf
.endfor
.endif
@@ -90,11 +89,10 @@ MAN.${_T}?= # empty
SRCS.${_T}?= ${_T}${CXX_SUFFIX:U.cc}
DPADD.${_T}+= ${LIBATF_CXX} ${LIBATF_C}
.if empty(LDFLAGS:M-static) && empty(LDFLAGS.${_T}:M-static)
-LDADD.${_T}+= ${LDATF_CXX} ${LDATF_C}
+LDADD.${_T}+= ${LDADD_atf_cxx} ${LDADD_atf_c}
.else
LDADD.${_T}+= ${LIBATF_CXX} ${LIBATF_C}
.endif
-USEPRIVATELIB+= atf-c++
TEST_INTERFACE.${_T}= atf
.endfor
.endif
diff --git a/share/mk/bsd.incs.mk b/share/mk/bsd.incs.mk
index a7e7683a5144..cc65baf4059c 100644
--- a/share/mk/bsd.incs.mk
+++ b/share/mk/bsd.incs.mk
@@ -23,7 +23,7 @@ all: buildincludes
${group}OWN?= ${BINOWN}
${group}GRP?= ${BINGRP}
${group}MODE?= ${NOBINMODE}
-${group}DIR?= ${INCLUDEDIR}
+${group}DIR?= ${INCLUDEDIR}${PRIVATELIB:D/private/${LIB}}
_${group}INCS=
.for header in ${${group}}
diff --git a/share/mk/bsd.lib.mk b/share/mk/bsd.lib.mk
index 2d0eb0066bfc..2c8ab36317a1 100644
--- a/share/mk/bsd.lib.mk
+++ b/share/mk/bsd.lib.mk
@@ -11,6 +11,7 @@ _LD= ${CXX}
_LD= ${CC}
.endif
+LIB_PRIVATE= ${PRIVATELIB:Dprivate}
# Set up the variables controlling shared libraries. After this section,
# SHLIB_NAME will be defined only if we are to create a shared library.
# SHLIB_LINK will be defined only if we are to create a link to it.
@@ -23,7 +24,7 @@ _LD= ${CC}
SHLIB= ${LIB}
.endif
.if !defined(SHLIB_NAME) && defined(SHLIB) && defined(SHLIB_MAJOR)
-SHLIB_NAME= lib${SHLIB}.so.${SHLIB_MAJOR}
+SHLIB_NAME= lib${LIB_PRIVATE}${SHLIB}.so.${SHLIB_MAJOR}
.endif
.if defined(SHLIB_NAME) && !empty(SHLIB_NAME:M*.so.*)
SHLIB_LINK?= ${SHLIB_NAME:R}
@@ -128,13 +129,8 @@ PO_FLAG=-pg
all: beforebuild .WAIT
beforebuild: objwarn
-.if defined(PRIVATELIB)
-_LIBDIR:=${LIBPRIVATEDIR}
-_SHLIBDIR:=${LIBPRIVATEDIR}
-.else
_LIBDIR:=${LIBDIR}
_SHLIBDIR:=${SHLIBDIR}
-.endif
.if defined(SHLIB_NAME)
.if ${MK_DEBUG_FILES} != "no"
@@ -162,19 +158,15 @@ ${SHLIB_NAME_FULL}: ${VERSION_MAP}
LDFLAGS+= -Wl,--version-script=${VERSION_MAP}
.endif
-.if defined(USEPRIVATELIB)
-LDFLAGS+= -rpath ${LIBPRIVATEDIR}
-.endif
-
.if defined(LIB) && !empty(LIB) || defined(SHLIB_NAME)
OBJS+= ${SRCS:N*.h:R:S/$/.o/}
NOPATH_FILES+= ${OBJS}
.endif
.if defined(LIB) && !empty(LIB)
-_LIBS= lib${LIB}.a
+_LIBS= lib${LIB_PRIVATE}${LIB}.a
-lib${LIB}.a: ${OBJS} ${STATICOBJS}
+lib${LIB_PRIVATE}${LIB}.a: ${OBJS} ${STATICOBJS}
@${ECHO} building static ${LIB} library
@rm -f ${.TARGET}
@${AR} ${ARFLAGS} ${.TARGET} `NM='${NM}' lorder ${OBJS} ${STATICOBJS} | tsort -q` ${ARADD}
@@ -184,11 +176,11 @@ lib${LIB}.a: ${OBJS} ${STATICOBJS}
.if !defined(INTERNALLIB)
.if ${MK_PROFILE} != "no" && defined(LIB) && !empty(LIB)
-_LIBS+= lib${LIB}_p.a
+_LIBS+= lib${LIB_PRIVATE}${LIB}_p.a
POBJS+= ${OBJS:.o=.po} ${STATICOBJS:.o=.po}
NOPATH_FILES+= ${POBJS}
-lib${LIB}_p.a: ${POBJS}
+lib${LIB_PRIVATE}${LIB}_p.a: ${POBJS}
@${ECHO} building profiled ${LIB} library
@rm -f ${.TARGET}
@${AR} ${ARFLAGS} ${.TARGET} `NM='${NM}' lorder ${POBJS} | tsort -q` ${ARADD}
@@ -243,9 +235,9 @@ ${SHLIB_NAME}.debug: ${SHLIB_NAME_FULL}
.endif #defined(SHLIB_NAME)
.if defined(INSTALL_PIC_ARCHIVE) && defined(LIB) && !empty(LIB) && ${MK_TOOLCHAIN} != "no"
-_LIBS+= lib${LIB}_pic.a
+_LIBS+= lib${LIB_PRIVATE}${LIB}_pic.a
-lib${LIB}_pic.a: ${SOBJS}
+lib${LIB_PRIVATE}${LIB}_pic.a: ${SOBJS}
@${ECHO} building special pic ${LIB} library
@rm -f ${.TARGET}
@${AR} ${ARFLAGS} ${.TARGET} ${SOBJS} ${ARADD}
@@ -305,13 +297,13 @@ _SHLINSTALLFLAGS:= ${_SHLINSTALLFLAGS${ie}}
realinstall: _libinstall
.ORDER: beforeinstall _libinstall
_libinstall:
-.if defined(LIB) && !empty(LIB) && ${MK_INSTALLLIB} != "no" && !defined(PRIVATELIB)
+.if defined(LIB) && !empty(LIB) && ${MK_INSTALLLIB} != "no"
${INSTALL} -C -o ${LIBOWN} -g ${LIBGRP} -m ${LIBMODE} \
- ${_INSTALLFLAGS} lib${LIB}.a ${DESTDIR}${_LIBDIR}
+ ${_INSTALLFLAGS} lib${LIB_PRIVATE}${LIB}.a ${DESTDIR}${_LIBDIR}
.endif
-.if ${MK_PROFILE} != "no" && defined(LIB) && !empty(LIB) && !defined(PRIVATELIB)
+.if ${MK_PROFILE} != "no" && defined(LIB) && !empty(LIB)
${INSTALL} -C -o ${LIBOWN} -g ${LIBGRP} -m ${LIBMODE} \
- ${_INSTALLFLAGS} lib${LIB}_p.a ${DESTDIR}${_LIBDIR}
+ ${_INSTALLFLAGS} lib${LIB_PRIVATE}${LIB}_p.a ${DESTDIR}${_LIBDIR}
.endif
.if defined(SHLIB_NAME)
${INSTALL} ${STRIP} -o ${LIBOWN} -g ${LIBGRP} -m ${LIBMODE} \
@@ -325,7 +317,7 @@ _libinstall:
${_INSTALLFLAGS} \
${SHLIB_NAME}.debug ${DESTDIR}${DEBUGFILEDIR}
.endif
-.if defined(SHLIB_LINK) && !defined(PRIVATELIB)
+.if defined(SHLIB_LINK)
# ${_SHLIBDIRPREFIX} and ${_LDSCRIPTROOT} are both needed when cross-building
# and when building 32 bits library shims. ${_SHLIBDIRPREFIX} is the directory
# prefix where shared objects will be installed by the install target.
@@ -366,7 +358,7 @@ _libinstall:
.endif # SHLIB_LDSCRIPT
.endif # SHLIB_LINK
.endif # SHIB_NAME
-.if defined(INSTALL_PIC_ARCHIVE) && defined(LIB) && !empty(LIB) && ${MK_TOOLCHAIN} != "no" && !defined(PRIVATELIB)
+.if defined(INSTALL_PIC_ARCHIVE) && defined(LIB) && !empty(LIB) && ${MK_TOOLCHAIN} != "no"
${INSTALL} -o ${LIBOWN} -g ${LIBGRP} -m ${LIBMODE} \
${_INSTALLFLAGS} lib${LIB}_pic.a ${DESTDIR}${_LIBDIR}
.endif
diff --git a/share/mk/bsd.prog.mk b/share/mk/bsd.prog.mk
index 3fb70d17c06a..8366adefe720 100644
--- a/share/mk/bsd.prog.mk
+++ b/share/mk/bsd.prog.mk
@@ -51,10 +51,6 @@ STRIP?= -s
LDFLAGS+= -static
.endif
-.if defined(USEPRIVATELIB)
-LDFLAGS+= -L${_SHLIBDIRPREFIX}${LIBPRIVATEDIR} -rpath ${LIBPRIVATEDIR}
-.endif
-
.if ${MK_DEBUG_FILES} != "no"
PROG_FULL=${PROG}.full
# Use ${DEBUGDIR} for base system debug files, else .debug subdirectory
diff --git a/share/mk/src.libnames.mk b/share/mk/src.libnames.mk
index 512ad2fdd69c..ff0707dbff28 100644
--- a/share/mk/src.libnames.mk
+++ b/share/mk/src.libnames.mk
@@ -15,6 +15,7 @@ _PRIVATELIBS= \
atf_c \
atf_cxx \
bsdstat \
+ event \
heimipcc \
heimipcs \
ldns \
@@ -28,7 +29,6 @@ _INTERNALIBS= \
bsnmptools \
cron \
elftc \
- event \
fifolog \
ipf \
lpr \
@@ -233,18 +233,25 @@ _DP_vmmapi= util
# Define spacial cases
LDADD_supcplusplus= -lsupc++
-LDADD_atf_c= -L${LIBATF_CDIR} -latf-c
-LDADD_atf_cxx= -L${LIBATF_CXXDIR} -latf-c++
+LIBATF_C= $(DESTDIR)$(LIBDIR)/libprivateatf-c.a
+LIBATF_CXX= $(DESTDIR)$(LIBDIR)/libprivateatf-c++.a
+LDADD_atf_c= -lprivateatf-c
+LDADD_atf_cxx= -lprivateatf-c++
+
+.for _l in ${_PRIVATELIBS}
+LIB${_l:tu}?= ${DESTDIR}${LIBDIR}/libprivate${_l}.a
+.endfor
.for _l in ${_LIBRARIES}
-.if ${_PRIVATELIBS:M${_l}}
-LDADD_${_l}_L+= -L${LIB${_l:tu}DIR}
-.endif
.if ${_INTERNALIBS:M${_l}}
LDADD_${_l}_L+= -L${LIB${_l:tu}DIR}
.endif
DPADD_${_l}?= ${LIB${_l:tu}}
+.if ${_PRIVATELIBS:M${_l}}
+LDADD_${_l}?= -lprivate${_l}
+.else
LDADD_${_l}?= ${LDADD_${_l}_L} -l${_l}
+.endif
.if defined(_DP_${_l}) && defined(NO_SHARED)
.for _d in ${_DP_${_l}}
DPADD_${_l}+= ${DPADD_${_d}}
@@ -253,12 +260,12 @@ LDADD_${_l}+= ${LDADD_${_d}}
.endif
.endfor
-DPADD_sqlite3+= ${DPADD_pthread}
-LDADD_sqlite3+= ${LDADD_pthread}
-
DPADD_atf_cxx+= ${DPADD_atf_c}
LDADD_atf_cxx+= ${LDADD_atf_c}
+DPADD_sqlite3+= ${DPADD_pthread}
+LDADD_sqlite3+= ${LDADD_pthread}
+
DPADD_fifolog+= ${DPADD_z}
LDADD_fifolog+= ${LDADD_z}
@@ -290,55 +297,15 @@ LDADD+= ${LDADD_${_l}}
.error Missing ${DPADD:Mmissing-dpadd_*:S/missing-dpadd_//:S/^/DPADD_/} variable add "${DPADD:Mmissing-dpadd_*:S/missing-dpadd_//}" to _LIBRARIES, _INTERNALLIBS, or _PRIVATELIBS and define "${DPADD:Mmissing-dpadd_*:S/missing-dpadd_//:S/^/LIB/:tu}".
.endif
-.if defined(USEPRIVATELIB)
-LDFLAGS+= -rpath ${LIBPRIVATEDIR}
-.endif
-
-LIBATF_CDIR= ${ROOTOBJDIR}/lib/atf/libatf-c
-LDATF_C?= ${LIBATF_CDIR}/libatf-c.so
-LIBATF_C?= ${LIBATF_CDIR}/libatf-c.a
-
-LIBATF_CXXDIR= ${ROOTOBJDIR}/lib/atf/libatf-c++
-LDATF_CXX?= ${LIBATF_CXXDIR}/libatf-c++.so
-LIBATF_CXX?= ${LIBATF_CXXDIR}/libatf-c++.a
-
-LIBBSDSTATDIR= ${ROOTOBJDIR}/lib/libbsdstat
-LIBBSDSTAT?= ${LIBBSDSTATDIR}/libbsdstat.a
-
LIBELFTCDIR= ${ROOTOBJDIR}/lib/libelftc
-LDELFTC?= ${LIBELFTCDIR}/libelftc.a
LIBELFTC?= ${LIBELFTCDIR}/libelftc.a
-LIBEVENTDIR= ${ROOTOBJDIR}/lib/libevent
-LIBEVENT?= ${LIBEVENTDIR}/libevent.a
-
-LIBHEIMIPCCDIR= ${ROOTOBJDIR}/kerberos5/lib/libheimipcc
-LIBHEIMIPCC?= ${LIBHEIMIPCCDIR}/libheimipcc.a
-
-LIBHEIMIPCSDIR= ${ROOTOBJDIR}/kerberos5/lib/libheimipcs
-LIBHEIMIPCS?= ${LIBHEIMIPCSDIR}/libheimipcs.a
-
-LIBLDNSDIR= ${ROOTOBJDIR}/lib/libldns
-LIBLDNS?= ${LIBLDNSDIR}/libldns.a
-
-LIBSSHDIR= ${ROOTOBJDIR}/secure/lib/libssh
-LIBSSH?= ${LIBSSHDIR}/libssh.a
-
-LIBUNBOUNDDIR= ${ROOTOBJDIR}/lib/libunbound
-LIBUNBOUND?= ${LIBUNBOUNDDIR}/libunbound.a
-
-LIBUCLDIR= ${ROOTOBJDIR}/lib/libucl
-LIBUCL?= ${LIBUCLDIR}/libucl.a
-
LIBREADLINEDIR= ${ROOTOBJDIR}/gnu/lib/libreadline/readline
LIBREADLINE?= ${LIBREADLINEDIR}/libreadline.a
LIBOHASHDIR= ${ROOTOBJDIR}/lib/libohash
LIBOHASH?= ${LIBOHASHDIR}/libohash.a
-LIBSQLITE3DIR= ${ROOTOBJDIR}/lib/libsqlite3
-LIBSQLITE3?= ${LIBSQLITE3DIR}/libsqlite3.a
-
LIBMANDOCDIR= ${ROOTOBJDIR}/lib/libmandoc
LIBMANDOC?= ${LIBMANDOCDIR}/libmandoc.a