$NetBSD$

--- libpam/Makefile.orig	2001-12-09 21:44:58.000000000 +0000
+++ libpam/Makefile
@@ -6,7 +6,7 @@
 include ../Make.Rules
 
 # need to tell libpam about the default directory for PAMs
-MOREFLAGS=-D"DEFAULT_MODULE_PATH=\"$(SECUREDIR)/\""
+MOREFLAGS=-D"DEFAULT_MODULE_PATH=\"$(PAM_MODULEDIR)/\""
 
 ifeq ($(WITH_LIBDEBUG),yes)
  LIBNAME=libpamd
@@ -22,7 +22,7 @@ dummy: ../Make.Rules all
 
 # ---------------------------------------------
 
-CFLAGS += $(DYNAMIC) $(STATIC) $(MOREFLAGS) \
+CFLAGS += $(DYNAMIC) $(STATIC) $(LTCFLAGS) $(MOREFLAGS) \
   -DLIBPAM_VERSION_MAJOR=$(MAJOR_REL) \
   -DLIBPAM_VERSION_MINOR=$(MINOR_REL)
 
@@ -36,6 +36,10 @@ LIBPAMFULL = $(LIBPAMNAME)$(MODIFICATION
 
 LIBPAMSTATIC = $(LIBNAME).a
 
+# libtool library name
+
+LIBPAMLIBTOOL = $(LIBNAME).la
+
 ifdef STATIC
 @echo Did you mean to set STATIC\?
 MODULES = $(shell cat ../modules/_static_module_objects)
@@ -56,7 +60,7 @@ LIBOBJECTS = pam_item.o pam_strerror.o p
 ifeq ($(DYNAMIC_LIBPAM),yes)
 # libpam.so needs -ldl, too.
 DLIBOBJECTS = $(addprefix dynamic/,$(LIBOBJECTS) $(STATICOBJ))
-ifeq ($(STATICOBJ),yes)
+ifdef STATICOBJ
 dynamic/pam_static.o: pam_static.c ../modules/_static_module_objects
 	$(CC) $(CFLAGS) -c pam_static.c -o $@
 endif
@@ -70,10 +74,28 @@ static/pam_static.o: pam_static.c ../mod
 endif
 endif
 
+ifeq ($(LIBTOOL_LIBPAM),yes)
+LALIBOBJECTS = $(LIBOBJECTS:.o=.lo) $(STATICOBJ:.o=.lo)
+ifdef STATICOBJ
+pam_static.lo: pam_static.c ../modules/_static_module_objects
+	$(LIBTOOL) --tag=CC --mode=compile $(CC) $(CFLAGS) -c pam_static.c
+endif
+endif
+
 # ---------------------------------------------
 ## rules
 
-all: dirs $(LIBPAM) $(LIBPAMSTATIC) ../Make.Rules
+ifeq ($(DYNAMIC_LIBPAM),yes)
+LIBS_TO_BUILD+=	$(LIBPAM)
+endif
+ifeq ($(STATIC_LIBPAM),yes)
+LIBS_TO_BUILD+=	$(LIBPAMSTATIC)
+endif
+ifeq ($(LIBTOOL_LIBPAM),yes)
+LIBS_TO_BUILD+=	$(LIBPAMLIBTOOL)
+endif
+
+all: dirs $(LIBS_TO_BUILD) ../Make.Rules
 
 dirs:
 ifeq ($(DYNAMIC_LIBPAM),yes)
@@ -89,6 +111,9 @@ dynamic/%.o : %.c
 static/%.o : %.c
 	$(CC) $(CFLAGS) $(CPPFLAGS) $(TARGET_ARCH) -c $< -o $@
 
+%.lo : %.c
+	$(LIBTOOL) --tag=CC --mode=compile $(CC) $(CFLAGS) $(CPPFLAGS) $(TARGET_ARCH) -c $<
+
 $(LIBPAM): $(DLIBOBJECTS)
 ifeq ($(DYNAMIC_LIBPAM),yes)
     ifeq ($(USESONAME),yes)
@@ -111,7 +136,26 @@ ifeq ($(STATIC_LIBPAM),yes)
 	$(RANLIB) $@
 endif
 
-install: all
+$(LIBPAMLIBTOOL): $(LALIBOBJECTS)
+ifeq ($(LIBTOOL_LIBPAM),yes)
+	$(LIBTOOL) --tag=CC --mode=link $(CC) $(LDFLAGS) $(LALIBOBJECTS) -o $@ \
+		$(MODULES) $(LINKLIBS) \
+		-rpath $(libdir) -version-info $(MAJOR_REL):$(MINOR_REL)
+endif
+
+install: all install-headers
+
+ifeq ($(DYNAMIC_LIBPAM),yes)
+install: install-dynamic
+endif
+ifeq ($(STATIC_LIBPAM),yes)
+install: install-static
+endif
+ifeq ($(LIBTOOL_LIBPAM),yes)
+install: install-libtool
+endif
+
+install-headers:
 	$(MKDIR) $(FAKEROOT)$(INCLUDED) $(FAKEROOT)$(libdir)
 	$(INSTALL) -m 644 include/security/pam_appl.h $(FAKEROOT)$(INCLUDED)
 	$(INSTALL) -m 644 include/security/pam_modules.h $(FAKEROOT)$(INCLUDED)
@@ -121,6 +165,8 @@ install: all
 ifdef MEMORY_DEBUG
 	$(INSTALL) -m 644 include/security/pam_malloc.h $(FAKEROOT)$(INCLUDED)
 endif
+
+install-dynamic:
 ifeq ($(DYNAMIC_LIBPAM),yes)
 	$(INSTALL) -m $(SHLIBMODE) $(LIBPAM) $(FAKEROOT)$(libdir)/$(LIBPAMFULL)
 	$(LDCONFIG)
@@ -129,10 +175,17 @@ ifeq ($(DYNAMIC_LIBPAM),yes)
 	  ln -sf $(LIBPAMNAME) $(LIBPAM) )
   endif
 endif
+
+install-static:
 ifeq ($(STATIC_LIBPAM),yes)
 	$(INSTALL) -m 644 $(LIBPAMSTATIC) $(FAKEROOT)$(libdir)
 endif
 
+install-libtool:
+ifeq ($(LIBTOOL_LIBPAM),yes)
+	$(LIBTOOL) --mode=install $(INSTALL) -c $(LIBPAMLIBTOOL) $(FAKEROOT)$(libdir)
+endif
+
 remove:
 	rm -f $(FAKEROOT)$(INCLUDED)/_pam_types.h
 	rm -f $(FAKEROOT)$(INCLUDED)/_pam_macros.h
@@ -143,9 +196,13 @@ remove:
 	rm -f $(FAKEROOT)$(libdir)/$(LIBPAM)
 	$(LDCONFIG)
 	rm -f $(FAKEROOT)$(libdir)/$(LIBPAMSTATIC)
+ifeq ($(LIBTOOL_LIBPAM),yes)
+	$(LIBTOOL) --mode=uninstall rm $(FAKEROOT)$(libdir)$(LIBPAMLIBTOOL)
+endif
 
 clean:
 	rm -f a.out core *~ static/*.o dynamic/*.o
-	rm -f *.a *.o *.so ./include/security/*~
+	rm -f *.a *.la *.lo *.o *.so .libs/* ./include/security/*~
 	if [ -d dynamic ]; then rmdir dynamic ; fi
 	if [ -d static ]; then rmdir static ; fi
+	if [ -d .libs ]; then rmdir .libs ; fi
