#
# This Makefile controls a build process of $(TITLE) module for
# Linux-PAM. You should not modify this Makefile (unless you know
# what you are doing!).
#

ifndef FULL_LINUX_PAM_SOURCE_TREE
#
# here you should make default variable defines...
#
DYNAMIC=-DDYNAMIC
COPT=-Wall -O2
WARNINGS = -ansi -D_POSIX_SOURCE -Wall -Wwrite-strings \
	-Wpointer-arith -Wcast-align \
	-Wtraditional -Wstrict-prototypes -Wmissing-prototypes \
	-Wnested-externs -Winline -Wshadow -pedantic
CFLAGS=$(COPT)
MKDIR=mkdir -p
LD_D=gcc -shared -Xlinker -x
INSTALL=install
SECUREDIR=/lib/security
SUPLEMENTED=/sbin
#
endif

TITLE=pam_pwgen
DEFAULT_TRIGRAM_FILE=/etc/security/trigram
TRI_LANGS=de dk en es fi it ja no pl
#
LIBSRC = $(TITLE).c
LIBOBJ = $(TITLE).o
LIBOBJD = $(addprefix dynamic/,$(LIBOBJ))
LIBOBJS = $(addprefix static/,$(LIBOBJ))

PROGGEN = pwgen_trigram
PROGSRC = $(PROGGEN).c
PROGOBJ = $(PROGGEN).o

ifdef DEFAULT_TRIGRAM_FILE
CFLAGS+=-DDEFAULT_TRIGRAM_FILE=\"$(DEFAULT_TRIGRAM_FILE)\"
endif

dynamic/%.o : %.c
	$(CC) $(CFLAGS) $(DYNAMIC) $(CPPFLAGS) $(TARGET_ARCH) -c $< -o $@

static/%.o : %.c
	$(CC) $(CFLAGS) $(STATIC) $(CPPFLAGS) $(TARGET_ARCH) -c $< -o $@


ifdef DYNAMIC
LIBSHARED = $(TITLE).so
endif

ifdef STATIC
LIBSTATIC = lib$(TITLE).o
endif

####################### don't edit below #######################

ifndef FULL_LINUX_PAM_SOURCE_TREE
dummy: all
else
dummy:
	@echo "**** This is not a top-level Makefile "
	exit
endif

all: dirs $(LIBSHARED) $(LIBSTATIC) register $(PROGGEN)

dirs:
ifdef DYNAMIC
	$(MKDIR) ./dynamic
endif
ifdef STATIC
	$(MKDIR) ./static
endif

register:
ifdef STATIC
	( cd .. ; ./register_static $(TITLE) $(TITLE)/$(LIBSTATIC) )
endif

ifdef DYNAMIC
$(LIBOBJD): $(LIBSRC) Makefile

$(LIBSHARED):	$(LIBOBJD)
	$(LD_D) -o $@ $(LIBOBJD) $(LINKLIBS)
endif

ifdef STATIC
$(LIBOBJS): $(LIBSRC)

$(LIBSTATIC): $(LIBOBJS)
	$(LD) -r -o $@ $(LIBOBJS)
endif

install: all
	$(MKDIR) $(FAKEROOT)$(SECUREDIR)
	$(MKDIR) $(FAKEROOT)$(SUPLEMENTED)
ifdef DYNAMIC
	$(INSTALL) -m $(SHLIBMODE) $(LIBSHARED) $(FAKEROOT)$(SECUREDIR)
endif
	$(INSTALL) $(PROGGEN) $(FAKEROOT)$(SUPLEMENTED)
	(for i in $(TRI_LANGS) ; do \
		$(INSTALL) -m 644 trigram.$$i $(FAKEROOT)$(SCONFIGED) ;\
	done)
	$(LN_S) trigram.en $(FAKEROOT)$(SCONFIGED)/trigram

remove:
	rm -f $(FAKEROOT)$(SECUREDIR)/$(TITLE).so

clean:
	rm -f $(LIBOBJD) $(LIBOBJS) $(PROGGEN) core *.o *.so dynamic/* static/*

extraclean: clean
	rm -f *~ *.a *.bak 

.c.o:	
	$(CC) $(CFLAGS) -c $<

