MAJOR     = 0
MINOR     = 02
LIBNAME   = libpam_client

####################
# Tunable part begining
####################

OBJS      = pamc_agent.o pamc_close.o pamc_misc.o pamc_packet.o pamc_path.o
AGENTDIRS = sh_secret_agent test_agent
MODDIRS   = sh_secret_module test_module
SUBDIRS   = $(AGENTDIRS) $(MODDIRS)

COPTFLAGS = -O2
CFLAGS    = $(COPTFLAGS) -pedantic -Wall -I"$(shell pwd)/include" -fPIC

DEVELLIBDIR  = $(ROOTDIR)/lib
SHLIBDIR     = $(ROOTDIR)/lib
HDRDIR       = $(ROOTDIR)/usr

MKDIR        = mkdir -p
INSTALLHDR   = install -m 644 -o root -g root
INSTALLLIB   = install -m 644 -o root -g root
INSTALLSHLIB = install -m 644 -o root -g root
INSTALLBIN   = install -m 755 -o root -g root
LDCONFIG     = /sbin/ldconfig

export CFLAGS

FLAGSTOPASS  = ROOTDIR="$(ROOTDIR)" \
               COPTFLAGS="$(COPTFLAGS)" \
               MKDIR="$(MKDIR)" \
               INSTALLHDR="$(INSTALLHDR)" \
               INSTALLLIB="$(INSTALLLIB)" \
               INSTALLSHLIB="$(INSTALLSHLIB)" \
               INSTALLBIN="$(INSTALLBIN)" \
               LDCONFIG="$(LDCONFIG)"

####################
# Tunable part end
####################

all: libpam_client.so libpam_client.a
	for dir in $(SUBDIRS); do $(MAKE) -C $$dir $(FLAGSTOPASS); done

libpam_client.so: $(OBJS)
	ld -x -shared -soname libpam_client.so.$(MAJOR) -o $@ $(OBJS)

libpam_client.a: $(OBJS)
	ar r $@ $(OBJS)
	ranlib $@

install: all
	$(INSTALLLIB) libpam_client.a $(DEVELLIBDIR)
	$(INSTALLSHLIB) libpam_client.so $(SHLIBDIR)/libpam_client.so.$(MAJOR).$(MINOR)
# I don't like ldconfig making sumlinks in my shared libraries directory.
# Sometimes very strange things happen. If you agree me define LDCONFIG
# to an empty string otherwise keep it as is.  (SAW)
	$(LDCONFIG)
	ln -sf libpam_client.so.$(MAJOR).$(MINOR) $(SHLIBDIR)/libpam_client.so.$(MAJOR)
	ln -sf $(SHLIBDIR)/libpam_client.so.$(MAJOR) $(DEVELLIBDIR)/libpam_client.so
	$(INSTALLHDR) {,$(HDRDIR)/}include/security/pam_client.h
	for dir in $(AGENTDIRS); do $(MAKE) -C $$dir $(FLAGSTOPASS) $@; done
	@echo "Please install modules by hand..."

remove:
	rm -f /lib/libpam_client.a
	rm -f /include/security/pam_client.h
	for dir in $(SUBDIRS); do $(MAKE) -C $$dir $(FLAGSTOPASS) $@; done

clean:
	rm -f *.o libpam_client.a libpam_client.so
	for dir in $(SUBDIRS); do $(MAKE) -C $$dir $(FLAGSTOPASS) $@; done

extraclean: clean
	rm -f include/security/*~ *~
	for dir in $(SUBDIRS); do $(MAKE) -C $$dir $(FLAGSTOPASS) $@; done
