From 7cbd0a2953a27e74f8b1b261808068719c1f5260 Mon Sep 17 00:00:00 2001 From: Bryan Drewery Date: Thu, 14 Apr 2016 01:17:03 +0000 Subject: Simplify building libpam and fix libpam.a not containing the modules since r284345. The change in r284345 moved the creation of openpam_static_modules.o to lib/libpam/static_modules but never managed to get them into libpam.a. Move this logic to lib/libpam/static_libpam and have it create a static library for libpam.a The main lib/libpam/libpam will only create a shared library. No redundancy in compilation or installation exists in this solution. This avoids requiring a pass with -D_NO_LIBPAM_SO_YET. Sponsored by: EMC / Isilon Storage Division --- lib/libpam/static_libpam/Makefile | 69 ++++++++++++++++++++++++++++++++ lib/libpam/static_libpam/Makefile.depend | 38 ++++++++++++++++++ 2 files changed, 107 insertions(+) create mode 100644 lib/libpam/static_libpam/Makefile create mode 100644 lib/libpam/static_libpam/Makefile.depend (limited to 'lib/libpam/static_libpam') diff --git a/lib/libpam/static_libpam/Makefile b/lib/libpam/static_libpam/Makefile new file mode 100644 index 000000000000..f7180e93ef05 --- /dev/null +++ b/lib/libpam/static_libpam/Makefile @@ -0,0 +1,69 @@ +#- +# Copyright (c) 1998-2015 Juniper Networks, Inc. +# All rights reserved. +# Copyright (c) 2002 Networks Associates Technology, Inc. +# All rights reserved. +# +# Portions of this software was developed for the FreeBSD Project by +# ThinkSec AS and NAI Labs, the Security Research Division of Network +# Associates, Inc. under DARPA/SPAWAR contract N66001-01-C-8035 +# ("CBOSS"), as part of the DARPA CHATS research program. +# +# Redistribution and use in source and binary forms, with or without +# modification, are permitted provided that the following conditions +# are met: +# 1. Redistributions of source code must retain the above copyright +# notice, this list of conditions and the following disclaimer. +# 2. Redistributions in binary form must reproduce the above copyright +# notice, this list of conditions and the following disclaimer in the +# documentation and/or other materials provided with the distribution. +# 3. The name of the author may not be used to endorse or promote +# products derived from this software without specific prior written +# permission. +# +# THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND +# ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE +# IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE +# ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE +# FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL +# DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS +# OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) +# HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT +# LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY +# OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF +# SUCH DAMAGE. +# +# $FreeBSD$ + +.PATH: ${.CURDIR}/../libpam + +# Only build the static library. +LIB= pam +NO_PIC= + +# Avoid redundancy with the master Makefile. +MAN= +INCS= +MLINKS= +MK_TESTS= no + +# +# Static modules +# +# We build static versions of all modules and of openpam_static.o, +# then link them all together into openpam_static_modules.o. None of +# the modules export any symbols, but they store structures with +# pointers to their service functions in a linker set which the code +# in openpam_static.c traverses to locate the individual modules. +# +MODULE_DIR= ../modules +.include "${.CURDIR}/${MODULE_DIR}/modules.inc" +STATIC_MODULES= ${MODULES:C/.*/${MODULE_DIR}\/&\/lib&.a/} +STATICOBJS+= openpam_static_modules.o +CLEANFILES+= openpam_static.o \ + openpam_static_modules.o + +openpam_static_modules.o: openpam_static.o ${STATIC_MODULES} + ${LD} -o ${.TARGET} -r --whole-archive ${.ALLSRC} + +.include "${.CURDIR}/../libpam/Makefile" diff --git a/lib/libpam/static_libpam/Makefile.depend b/lib/libpam/static_libpam/Makefile.depend new file mode 100644 index 000000000000..373bac45e6da --- /dev/null +++ b/lib/libpam/static_libpam/Makefile.depend @@ -0,0 +1,38 @@ +# $FreeBSD$ +# Autogenerated - do NOT edit! + +DIRDEPS = \ + include \ + include/xlocale \ + lib/libpam/libpam \ + lib/libpam/modules/pam_chroot \ + lib/libpam/modules/pam_deny \ + lib/libpam/modules/pam_echo \ + lib/libpam/modules/pam_exec \ + lib/libpam/modules/pam_ftpusers \ + lib/libpam/modules/pam_group \ + lib/libpam/modules/pam_guest \ + lib/libpam/modules/pam_krb5 \ + lib/libpam/modules/pam_ksu \ + lib/libpam/modules/pam_lastlog \ + lib/libpam/modules/pam_login_access \ + lib/libpam/modules/pam_nologin \ + lib/libpam/modules/pam_opie \ + lib/libpam/modules/pam_opieaccess \ + lib/libpam/modules/pam_passwdqc \ + lib/libpam/modules/pam_permit \ + lib/libpam/modules/pam_radius \ + lib/libpam/modules/pam_rhosts \ + lib/libpam/modules/pam_rootok \ + lib/libpam/modules/pam_securetty \ + lib/libpam/modules/pam_self \ + lib/libpam/modules/pam_ssh \ + lib/libpam/modules/pam_tacplus \ + lib/libpam/modules/pam_unix \ + + +.include + +.if ${DEP_RELDIR} == ${_DEP_RELDIR} +# local dependencies - needed for -jN in clean tree +.endif -- cgit v1.2.3