summaryrefslogtreecommitdiffstats
path: root/lib
diff options
context:
space:
mode:
authorjdp <jdp@FreeBSD.org>1999-01-20 21:55:30 +0000
committerjdp <jdp@FreeBSD.org>1999-01-20 21:55:30 +0000
commitcf32a03bc9556d6c3dc927d7eb9d276d21d43d41 (patch)
tree2676314f5ae37c6b0cc69d8819e10f023fafccbd /lib
parentef01c22e1080a19283f19943021d45e9ad3a711f (diff)
downloadFreeBSD-src-cf32a03bc9556d6c3dc927d7eb9d276d21d43d41.zip
FreeBSD-src-cf32a03bc9556d6c3dc927d7eb9d276d21d43d41.tar.gz
Make it possible to use PAM in statically-linked applications.
Diffstat (limited to 'lib')
-rw-r--r--lib/libpam/Makefile5
-rw-r--r--lib/libpam/libpam/Makefile39
-rw-r--r--lib/libpam/modules/Makefile.inc28
-rw-r--r--lib/libpam/modules/pam_cleartext_pass_ok/Makefile11
-rw-r--r--lib/libpam/modules/pam_cleartext_pass_ok/pam_cleartext_pass_ok.c2
-rw-r--r--lib/libpam/modules/pam_kerberosIV/Makefile13
-rw-r--r--lib/libpam/modules/pam_kerberosIV/pam_kerberosIV.c2
-rw-r--r--lib/libpam/modules/pam_radius/Makefile13
-rw-r--r--lib/libpam/modules/pam_radius/pam_radius.c2
-rw-r--r--lib/libpam/modules/pam_skey/Makefile13
-rw-r--r--lib/libpam/modules/pam_skey/pam_skey.c2
-rw-r--r--lib/libpam/modules/pam_tacplus/Makefile13
-rw-r--r--lib/libpam/modules/pam_tacplus/pam_tacplus.c2
-rw-r--r--lib/libpam/modules/pam_unix/Makefile13
-rw-r--r--lib/libpam/modules/pam_unix/pam_unix.c2
15 files changed, 86 insertions, 74 deletions
diff --git a/lib/libpam/Makefile b/lib/libpam/Makefile
index 2a30b90..8e99888 100644
--- a/lib/libpam/Makefile
+++ b/lib/libpam/Makefile
@@ -24,7 +24,8 @@
#
# $FreeBSD$
-SUBDIR+= libpam
-SUBDIR+= modules
+# The modules must be built first, because they are built into the
+# static version of libpam.
+SUBDIR+= modules libpam
.include <bsd.subdir.mk>
diff --git a/lib/libpam/libpam/Makefile b/lib/libpam/libpam/Makefile
index 4fd5561..9b6cd7e 100644
--- a/lib/libpam/libpam/Makefile
+++ b/lib/libpam/libpam/Makefile
@@ -25,23 +25,22 @@
# $FreeBSD$
PAMDIR= ${.CURDIR}/../../../contrib/libpam
+MODOBJDIR= ../modules
.PATH: ${PAMDIR}/libpam ${PAMDIR}/libpam_misc ${PAMDIR}/doc/man
LIB= pam
CFLAGS+= -I${PAMDIR}/libpam/include -I.
CFLAGS+= -DDEFAULT_MODULE_PATH=\"${SHLIBDIR}/\"
-CFLAGS+= -DPAM_DYNAMIC
-#CFLAGS+= -DPAM_STATIC
NOPROFILE= true
-INTERNALLIB= true
CLEANFILES+= security
# Files from ${PAMDIR}/libpam:
SRCS= pam_account.c pam_auth.c pam_data.c pam_delay.c \
pam_dispatch.c pam_end.c pam_env.c pam_handlers.c \
pam_item.c pam_log.c pam_misc.c pam_password.c \
- pam_second.c pam_session.c pam_start.c pam_strerror.c
+ pam_second.c pam_session.c pam_start.c pam_static.c \
+ pam_strerror.c
HDRS1= _pam_compat.h _pam_macros.h _pam_types.h \
pam_appl.h pam_malloc.h pam_modules.h
MAN3+= pam_authenticate.3 pam_chauthtok.3 pam_fail_delay.3 \
@@ -60,6 +59,38 @@ HDRS2= pam_misc.h
SRCS+= pam_get_pass.c pam_prompt.c pam_std_option.c
HDRS3= pam_mod_misc.h
+# Static PAM modules:
+STATIC_MODULES+= ${MODOBJDIR}/pam_cleartext_pass_ok/libpam_cleartext_pass_ok.a
+.if defined(MAKE_KERBEROS4)
+STATIC_MODULES+= ${MODOBJDIR}/pam_kerberosIV/libpam_kerberosIV.a
+.endif
+STATIC_MODULES+= ${MODOBJDIR}/pam_radius/libpam_radius.a
+STATIC_MODULES+= ${MODOBJDIR}/pam_skey/libpam_skey.a
+STATIC_MODULES+= ${MODOBJDIR}/pam_tacplus/libpam_tacplus.a
+STATIC_MODULES+= ${MODOBJDIR}/pam_unix/libpam_unix.a
+
+STATICOBJS+= pam_static_modules.o
+
+.if ${OBJFORMAT} == elf
+CLEANFILES+= setdef0.o _pam_static_modules.o setdef1.o \
+ setdef0.c setdef1.c setdefs.h
+
+pam_static_modules.o: setdef0.o _pam_static_modules.o setdef1.o
+ ${LD} -o ${.TARGET} -r ${.ALLSRC}
+
+setdef0.o: setdef0.c setdefs.h
+setdef1.o: setdef1.c setdefs.h
+
+setdef0.c setdef1.c setdefs.h: _pam_static_modules.o
+ gensetdefs ${.ALLSRC}
+
+_pam_static_modules.o: ${STATIC_MODULES}
+ ${LD} -o ${.TARGET} -r --whole-archive ${.ALLSRC}
+.else
+pam_static_modules.o: ${STATIC_MODULES}
+ ${LD} -o ${.TARGET} -r -Bforcearchive ${.ALLSRC}
+.endif
+
all: security
beforedepend: security
diff --git a/lib/libpam/modules/Makefile.inc b/lib/libpam/modules/Makefile.inc
deleted file mode 100644
index 2e29371..0000000
--- a/lib/libpam/modules/Makefile.inc
+++ /dev/null
@@ -1,28 +0,0 @@
-# Copyright 1998 Juniper Networks, Inc.
-# All rights reserved.
-#
-# 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.
-#
-# 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$
-
-BINDIR= ${SHLIBDIR}
-BINMODE= ${LIBMODE}
diff --git a/lib/libpam/modules/pam_cleartext_pass_ok/Makefile b/lib/libpam/modules/pam_cleartext_pass_ok/Makefile
index de0cd38..2336ea3 100644
--- a/lib/libpam/modules/pam_cleartext_pass_ok/Makefile
+++ b/lib/libpam/modules/pam_cleartext_pass_ok/Makefile
@@ -26,13 +26,14 @@
PAMDIR= ${.CURDIR}/../../../../contrib/libpam
-PROG= pam_cleartext_pass_ok.so
+LIB= pam_cleartext_pass_ok
+SHLIB_NAME= pam_cleartext_pass_ok.so
SRCS= pam_cleartext_pass_ok.c
CFLAGS+= -I${PAMDIR}/libpam/include
-CFLAGS+= -fpic
CFLAGS+= -Wall
-LDFLAGS+= -shared
+DPADD+= ${LIBSKEY}
LDADD+= -lskey -lgcc_pic
-NOMAN= true
+INTERNALLIB= yes
+INTERNALSTATICLIB=yes
-.include <bsd.prog.mk>
+.include <bsd.lib.mk>
diff --git a/lib/libpam/modules/pam_cleartext_pass_ok/pam_cleartext_pass_ok.c b/lib/libpam/modules/pam_cleartext_pass_ok/pam_cleartext_pass_ok.c
index 85874cf..437225c 100644
--- a/lib/libpam/modules/pam_cleartext_pass_ok/pam_cleartext_pass_ok.c
+++ b/lib/libpam/modules/pam_cleartext_pass_ok/pam_cleartext_pass_ok.c
@@ -63,3 +63,5 @@ pam_sm_setcred(pam_handle_t *pamh, int flags, int argc, const char **argv)
{
return PAM_SUCCESS;
}
+
+PAM_MODULE_ENTRY("pam_cleartext_pass_ok");
diff --git a/lib/libpam/modules/pam_kerberosIV/Makefile b/lib/libpam/modules/pam_kerberosIV/Makefile
index b1f5620..8ab1e6e 100644
--- a/lib/libpam/modules/pam_kerberosIV/Makefile
+++ b/lib/libpam/modules/pam_kerberosIV/Makefile
@@ -26,17 +26,16 @@
PAMDIR= ${.CURDIR}/../../../../contrib/libpam
-PROG= pam_kerberosIV.so
+LIB= pam_kerberosIV
+SHLIB_NAME= pam_kerberosIV.so
SRCS= pam_kerberosIV.c klogin.c
-CFLAGS+= -fpic
CFLAGS+= -Wall
CFLAGS+= -I${PAMDIR}/libpam/include
CFLAGS+= -I${.CURDIR}/../../libpam
CFLAGS+= -DKERBEROS
-LDFLAGS+= -shared
-LDFLAGS+= -L../../libpam
DPADD+= ${LIBKRB} ${LIBDES} ${LIBGCC_PIC}
-LDADD+= -lpam -lkrb -ldes -lgcc_pic
-NOMAN= true
+LDADD+= -lkrb -ldes -lgcc_pic
+INTERNALLIB= yes
+INTERNALSTATICLIB=yes
-.include <bsd.prog.mk>
+.include <bsd.lib.mk>
diff --git a/lib/libpam/modules/pam_kerberosIV/pam_kerberosIV.c b/lib/libpam/modules/pam_kerberosIV/pam_kerberosIV.c
index f8d3212..403f8d6 100644
--- a/lib/libpam/modules/pam_kerberosIV/pam_kerberosIV.c
+++ b/lib/libpam/modules/pam_kerberosIV/pam_kerberosIV.c
@@ -104,3 +104,5 @@ pam_sm_setcred(pam_handle_t *pamh, int flags, int argc, const char **argv)
{
return PAM_SUCCESS;
}
+
+PAM_MODULE_ENTRY("pam_kerberosIV");
diff --git a/lib/libpam/modules/pam_radius/Makefile b/lib/libpam/modules/pam_radius/Makefile
index 1bd23f6..23f62ec 100644
--- a/lib/libpam/modules/pam_radius/Makefile
+++ b/lib/libpam/modules/pam_radius/Makefile
@@ -26,16 +26,15 @@
PAMDIR= ${.CURDIR}/../../../../contrib/libpam
-PROG= pam_radius.so
+LIB= pam_radius
+SHLIB_NAME= pam_radius.so
SRCS= pam_radius.c
-CFLAGS+= -fpic
CFLAGS+= -Wall
CFLAGS+= -I${PAMDIR}/libpam/include
CFLAGS+= -I${.CURDIR}/../../libpam
-LDFLAGS+= -shared
-LDFLAGS+= -L../../libpam
DPADD+= ${LIBRADIUS} ${LIBGCC_PIC}
-LDADD+= -lpam -lradius -lgcc_pic
-NOMAN= true
+LDADD+= -lradius -lgcc_pic
+INTERNALLIB= yes
+INTERNALSTATICLIB=yes
-.include <bsd.prog.mk>
+.include <bsd.lib.mk>
diff --git a/lib/libpam/modules/pam_radius/pam_radius.c b/lib/libpam/modules/pam_radius/pam_radius.c
index 15ae332..c04d8f2 100644
--- a/lib/libpam/modules/pam_radius/pam_radius.c
+++ b/lib/libpam/modules/pam_radius/pam_radius.c
@@ -296,3 +296,5 @@ pam_sm_setcred(pam_handle_t *pamh, int flags, int argc, const char **argv)
{
return PAM_SUCCESS;
}
+
+PAM_MODULE_ENTRY("pam_radius");
diff --git a/lib/libpam/modules/pam_skey/Makefile b/lib/libpam/modules/pam_skey/Makefile
index c57f514..bf6af9e 100644
--- a/lib/libpam/modules/pam_skey/Makefile
+++ b/lib/libpam/modules/pam_skey/Makefile
@@ -26,16 +26,15 @@
PAMDIR= ${.CURDIR}/../../../../contrib/libpam
-PROG= pam_skey.so
+LIB= pam_skey
+SHLIB_NAME= pam_skey.so
SRCS= pam_skey.c
-CFLAGS+= -fpic
CFLAGS+= -Wall
CFLAGS+= -I${PAMDIR}/libpam/include
CFLAGS+= -I${.CURDIR}/../../libpam
-LDFLAGS+= -shared
-LDFLAGS+= -L../../libpam
DPADD+= ${LIBSKEY} ${LIBGCC_PIC}
-LDADD+= -lpam -lskey -lgcc_pic
-NOMAN= true
+LDADD+= -lskey -lgcc_pic
+INTERNALLIB= yes
+INTERNALSTATICLIB=yes
-.include <bsd.prog.mk>
+.include <bsd.lib.mk>
diff --git a/lib/libpam/modules/pam_skey/pam_skey.c b/lib/libpam/modules/pam_skey/pam_skey.c
index 5baecbd..439591e 100644
--- a/lib/libpam/modules/pam_skey/pam_skey.c
+++ b/lib/libpam/modules/pam_skey/pam_skey.c
@@ -104,3 +104,5 @@ pam_sm_setcred(pam_handle_t *pamh, int flags, int argc, const char **argv)
{
return PAM_SUCCESS;
}
+
+PAM_MODULE_ENTRY("pam_skey");
diff --git a/lib/libpam/modules/pam_tacplus/Makefile b/lib/libpam/modules/pam_tacplus/Makefile
index b9093b1..6430ca8 100644
--- a/lib/libpam/modules/pam_tacplus/Makefile
+++ b/lib/libpam/modules/pam_tacplus/Makefile
@@ -26,16 +26,15 @@
PAMDIR= ${.CURDIR}/../../../../contrib/libpam
-PROG= pam_tacplus.so
+LIB= pam_tacplus
+SHLIB_NAME= pam_tacplus.so
SRCS= pam_tacplus.c
-CFLAGS+= -fpic
CFLAGS+= -Wall
CFLAGS+= -I${PAMDIR}/libpam/include
CFLAGS+= -I${.CURDIR}/../../libpam
-LDFLAGS+= -shared
-LDFLAGS+= -L../../libpam
DPADD+= ${LIBTACPLUS} ${LIBGCC_PIC}
-LDADD+= -lpam -ltacplus -lgcc_pic
-NOMAN= true
+LDADD+= -ltacplus -lgcc_pic
+INTERNALLIB= yes
+INTERNALSTATICLIB=yes
-.include <bsd.prog.mk>
+.include <bsd.lib.mk>
diff --git a/lib/libpam/modules/pam_tacplus/pam_tacplus.c b/lib/libpam/modules/pam_tacplus/pam_tacplus.c
index 0965acf..0820071 100644
--- a/lib/libpam/modules/pam_tacplus/pam_tacplus.c
+++ b/lib/libpam/modules/pam_tacplus/pam_tacplus.c
@@ -254,3 +254,5 @@ pam_sm_setcred(pam_handle_t *pamh, int flags, int argc, const char **argv)
{
return PAM_SUCCESS;
}
+
+PAM_MODULE_ENTRY("pam_tacplus");
diff --git a/lib/libpam/modules/pam_unix/Makefile b/lib/libpam/modules/pam_unix/Makefile
index e6b0ac2..d3bb689 100644
--- a/lib/libpam/modules/pam_unix/Makefile
+++ b/lib/libpam/modules/pam_unix/Makefile
@@ -26,16 +26,15 @@
PAMDIR= ${.CURDIR}/../../../../contrib/libpam
-PROG= pam_unix.so
+LIB= pam_unix
+SHLIB_NAME= pam_unix.so
SRCS= pam_unix.c
-CFLAGS+= -fpic
CFLAGS+= -Wall
CFLAGS+= -I${PAMDIR}/libpam/include
CFLAGS+= -I${.CURDIR}/../../libpam
-LDFLAGS+= -shared
-LDFLAGS+= -L../../libpam
DPADD+= ${LIBGCC_PIC}
-LDADD+= -lpam -lgcc_pic
-NOMAN= true
+LDADD+= -lgcc_pic
+INTERNALLIB= yes
+INTERNALSTATICLIB=yes
-.include <bsd.prog.mk>
+.include <bsd.lib.mk>
diff --git a/lib/libpam/modules/pam_unix/pam_unix.c b/lib/libpam/modules/pam_unix/pam_unix.c
index e100307..f47ea55 100644
--- a/lib/libpam/modules/pam_unix/pam_unix.c
+++ b/lib/libpam/modules/pam_unix/pam_unix.c
@@ -86,3 +86,5 @@ pam_sm_setcred(pam_handle_t *pamh, int flags, int argc, const char **argv)
{
return PAM_SUCCESS;
}
+
+PAM_MODULE_ENTRY("pam_unix");
OpenPOWER on IntegriCloud