# # Copyright (c) 2000-2003,2005,2009,2010 by Solar Designer # Copyright (c) 2008,2009 by Dmitry V. Levin # See LICENSE # TITLE = pam_passwdqc SHARED_LIB = libpasswdqc.so.0 DEVEL_LIB = libpasswdqc.so SHARED_LIB_DARWIN = libpasswdqc.0.dylib DEVEL_LIB_DARWIN = libpasswdqc.dylib MAP_LIB = libpasswdqc.map PAM_SO_SUFFIX = SHARED_PAM = $(TITLE).so$(PAM_SO_SUFFIX) MAP_PAM = pam_passwdqc.map SHLIBMODE = 755 HEADER = passwdqc.h INCMODE = 644 MAN1 = pwqgen.1 pwqcheck.1 MAN5 = passwdqc.conf.5 MAN8 = $(TITLE).8 MANMODE = 644 BINDIR = /usr/bin BINMODE = 755 CONFDIR = /etc CONFMODE = 644 SHARED_LIBDIR = /lib SHARED_LIBDIR_SUN = /usr/lib SHARED_LIBDIR_REL = ../..$(SHARED_LIBDIR) DEVEL_LIBDIR = /usr/lib SECUREDIR = /lib/security SECUREDIR_SUN = /usr/lib/security SECUREDIR_DARWIN = /usr/lib/pam INCLUDEDIR = /usr/include MANDIR = /usr/share/man DESTDIR = CC = gcc LD = $(CC) LD_lib = $(LD) RM = rm -f LN_s = ln -s -f MKDIR = umask 022 && mkdir -p INSTALL = install -c # We support Sun's older /usr/ucb/install, but not the newer /usr/sbin/install. INSTALL_SUN = /usr/ucb/install -c CFLAGS = -Wall -W -O2 CFLAGS_lib = $(CFLAGS) -fPIC CFLAGS_bin = $(CFLAGS) -fomit-frame-pointer LDFLAGS = LDFLAGS_shared = --shared LDFLAGS_shared_LINUX = --shared LDFLAGS_shared_SUN = -G LDFLAGS_shared_HP = -b LDFLAGS_lib = $(LDFLAGS_shared) LDFLAGS_lib_LINUX = $(LDFLAGS_shared_LINUX) \ -Wl,--soname,$(SHARED_LIB),--version-script,$(MAP_LIB) LDFLAGS_lib_SUN = $(LDFLAGS_shared_SUN) LDFLAGS_lib_HP = $(LDFLAGS_shared_HP) LDFLAGS_pam = $(LDFLAGS_shared) LDFLAGS_pam_LINUX = $(LDFLAGS_shared_LINUX) \ -Wl,--version-script,$(MAP_PAM) LDFLAGS_pam_SUN = $(LDFLAGS_shared_SUN) LDFLAGS_pam_HP = $(LDFLAGS_shared_HP) LDLIBS_lib = LDLIBS_pam = -lpam -lcrypt LDLIBS_pam_LINUX = -lpam -lcrypt LDLIBS_pam_SUN = -lpam -lcrypt LDLIBS_pam_HP = -lpam -lsec LDLIBS_pam_DARWIN = -lpam -lSystem # Uncomment this to use cc instead of gcc #CC = cc # Uncomment this to use Sun's C compiler flags #CFLAGS = -xO2 #CFLAGS_lib = $(CFLAGS) -KPIC #CFLAGS_bin = $(CFLAGS) # Uncomment this to use HP's ANSI C compiler flags #CFLAGS = -Ae +w1 +W 474,486,542 +O2 #CFLAGS_lib = $(CFLAGS) +z #CFLAGS_bin = $(CFLAGS) CONFIGS = passwdqc.conf BINS = pwqgen pwqcheck PROJ = $(SHARED_LIB) $(DEVEL_LIB) $(SHARED_PAM) $(BINS) OBJS_LIB = concat.o passwdqc_check.o passwdqc_load.o passwdqc_memzero.o passwdqc_parse.o passwdqc_random.o wordset_4k.o OBJS_PAM = pam_passwdqc.o passwdqc_memzero.o OBJS_GEN = pwqgen.o passwdqc_memzero.o OBJS_CHECK = pwqcheck.o passwdqc_memzero.o default: all all pam utils install install_lib install_pam install_utils uninstall remove remove_lib remove_pam remove_utils: case "`uname -s`" in \ Linux) $(MAKE) CFLAGS_lib="$(CFLAGS_lib) -DHAVE_SHADOW" \ LDFLAGS_lib="$(LDFLAGS_lib_LINUX)" \ LDFLAGS_pam="$(LDFLAGS_pam_LINUX)" \ LDLIBS_pam="$(LDLIBS_pam_LINUX)" \ $@_wrapped;; \ SunOS) $(MAKE) -e CFLAGS_lib="$(CFLAGS_lib) -DHAVE_SHADOW" \ LD_lib=ld \ LDFLAGS_lib="$(LDFLAGS_lib_SUN)" \ LDFLAGS_pam="$(LDFLAGS_pam_SUN)" \ LDLIBS_pam="$(LDLIBS_pam_SUN)" \ INSTALL="$(INSTALL_SUN)" \ SHARED_LIBDIR="$(SHARED_LIBDIR_SUN)" \ SECUREDIR="$(SECUREDIR_SUN)" \ $@_wrapped;; \ HP-UX) $(MAKE) CFLAGS_lib="$(CFLAGS_lib) -DHAVE_SHADOW" \ LD_lib=ld \ LDFLAGS_lib="$(LDFLAGS_lib_HP)" \ LDFLAGS_pam="$(LDFLAGS_pam_HP)" \ LDLIBS_pam="$(LDLIBS_pam_HP)" \ $@_wrapped;; \ Darwin) $(MAKE) \ SHARED_LIB="$(SHARED_LIB_DARWIN)" \ DEVEL_LIB="$(DEVEL_LIB_DARWIN)" \ SECUREDIR="$(SECUREDIR_DARWIN)" \ LDLIBS_pam="$(LDLIBS_pam_DARWIN)" \ $@_wrapped;; \ *) $(MAKE) $@_wrapped;; \ esac all_wrapped: pam_wrapped utils_wrapped pam_wrapped: $(SHARED_PAM) utils_wrapped: $(BINS) $(SHARED_LIB): $(OBJS_LIB) $(MAP_LIB) $(LD_lib) $(LDFLAGS_lib) $(OBJS_LIB) $(LDLIBS_lib) -o $(SHARED_LIB) $(DEVEL_LIB): $(SHARED_LIB) $(LN_s) $(SHARED_LIB) $(DEVEL_LIB) $(SHARED_PAM): $(OBJS_PAM) $(MAP_PAM) $(DEVEL_LIB) $(LD_lib) $(LDFLAGS_pam) $(OBJS_PAM) $(LDLIBS_pam) -L. -lpasswdqc -o $(SHARED_PAM) pwqgen: $(OBJS_GEN) $(DEVEL_LIB) $(LD) $(LDFLAGS) $(OBJS_GEN) -L. -lpasswdqc -o $@ pwqcheck: $(OBJS_CHECK) $(DEVEL_LIB) $(LD) $(LDFLAGS) $(OBJS_CHECK) -L. -lpasswdqc -o $@ pwqgen.o: pwqgen.c passwdqc.h $(CC) $(CFLAGS_bin) -c $*.c pwqcheck.o: pwqcheck.c passwdqc.h $(CC) $(CFLAGS_bin) -c $*.c .c.o: $(CC) $(CFLAGS_lib) -c $*.c concat.o: concat.h pam_passwdqc.o: passwdqc.h pam_macros.h passwdqc_check.o: passwdqc.h wordset_4k.h passwdqc_load.o: passwdqc.h concat.h passwdqc_parse.o: passwdqc.h concat.h passwdqc_random.o: passwdqc.h wordset_4k.h wordset_4k.o: wordset_4k.h install_wrapped: install_lib_wrapped install_utils_wrapped install_pam_wrapped @echo 'Consider running ldconfig(8) to update the dynamic linker cache.' install_lib_wrapped: $(MKDIR) $(DESTDIR)$(CONFDIR) $(INSTALL) -m $(CONFMODE) $(CONFIGS) $(DESTDIR)$(CONFDIR)/ $(MKDIR) $(DESTDIR)$(SHARED_LIBDIR) $(INSTALL) -m $(SHLIBMODE) $(SHARED_LIB) $(DESTDIR)$(SHARED_LIBDIR)/ $(MKDIR) $(DESTDIR)$(DEVEL_LIBDIR) $(LN_s) $(SHARED_LIBDIR_REL)/$(SHARED_LIB) \ $(DESTDIR)$(DEVEL_LIBDIR)/$(DEVEL_LIB) $(MKDIR) $(DESTDIR)$(INCLUDEDIR) $(INSTALL) -m $(INCMODE) $(HEADER) $(DESTDIR)$(INCLUDEDIR)/ $(MKDIR) $(DESTDIR)$(MANDIR)/man5 $(INSTALL) -m $(MANMODE) $(MAN5) $(DESTDIR)$(MANDIR)/man5/ install_utils_wrapped: $(MKDIR) $(DESTDIR)$(BINDIR) $(INSTALL) -m $(BINMODE) $(BINS) $(DESTDIR)$(BINDIR)/ $(MKDIR) $(DESTDIR)$(MANDIR)/man1 $(INSTALL) -m $(MANMODE) $(MAN1) $(DESTDIR)$(MANDIR)/man1/ install_pam_wrapped: $(MKDIR) $(DESTDIR)$(SECUREDIR) $(INSTALL) -m $(SHLIBMODE) $(SHARED_PAM) $(DESTDIR)$(SECUREDIR)/ $(MKDIR) $(DESTDIR)$(MANDIR)/man8 $(INSTALL) -m $(MANMODE) $(MAN8) $(DESTDIR)$(MANDIR)/man8/ uninstall_wrapped remove_wrapped: remove_pam_wrapped remove_utils_wrapped remove_lib_wrapped remove_pam_wrapped: $(RM) $(DESTDIR)$(MANDIR)/man8/$(MAN8) $(RM) $(DESTDIR)$(SECUREDIR)/$(SHARED_PAM) remove_utils_wrapped: for f in $(MAN1); do $(RM) $(DESTDIR)$(MANDIR)/man1/$$f; done for f in $(BINS); do $(RM) $(DESTDIR)$(BINDIR)/$$f; done remove_lib_wrapped: for f in $(MAN5); do $(RM) $(DESTDIR)$(MANDIR)/man5/$$f; done for f in $(HEADER); do $(RM) $(DESTDIR)$(INCLUDEDIR)/$$f; done for f in $(DEVEL_LIB); do $(RM) $(DESTDIR)$(DEVEL_LIBDIR)/$$f; done for f in $(SHARED_LIB); do $(RM) $(DESTDIR)$(SHARED_LIBDIR)/$$f; done for f in $(CONFIGS); do $(RM) $(DESTDIR)$(CONFDIR)/$$f; done clean: $(RM) $(PROJ) *.o .PHONY: all all_wrapped clean install install_lib install_pam install_utils \ pam pam_wrapped uninstall remove remove_lib remove_pam remove_utils \ utils utils_wrapped \ install_wrapped install_lib_wrapped install_pam_wrapped \ install_utils_wrapped \ remove_wrapped remove_lib_wrapped remove_pam_wrapped \ remove_utils_wrapped