# file: src/modules/Makefile
#
#  2001 OpenCA Group

TOP	= ../..
include $(TOP)/Makefile.global-vars

# MODULES.pm.3rd-party	= \
# 	Authen-SASL-2.04	\
# 	CGI-Session-3.95	\
# 	MIME-Base64-2.20	\
# 	Convert-ASN1-0.18 	\
# 	Digest-HMAC-1.01	\
# 	Digest-MD5-2.24 	\
# 	Digest-SHA1-2.02	\
# 	libintl-perl-1.10	\
# 	IO-Socket-SSL-0.92	\
# 	IO-stringy-2.108	\
# 	MIME-Lite-3.01		\
# 	MIME-tools-5.411	\
# 	MailTools-1.58		\
# 	Net-Server-0.86		\
# 	URI-1.23		\
# 	perl-ldap-0.28		\
# 	Parse-RecDescent-1.94	\
# 	X500-DN-0.28		\
# 	XML-Twig-3.09

MODULES.pm.openca	= \
	openca-ac		\
	openca-configuration	\
	openca-crl		\
	openca-crypto		\
	openca-db		\
	openca-dbi		\
	openca-ldap		\
	openca-log		\
	openca-openssl		\
	openca-pkcs7		\
	openca-req		\
	openca-session		\
	openca-statemachine	\
	openca-tools		\
	openca-tristatecgi	\
	openca-ui-html		\
	openca-x509		\
	openca-xml-cache

MODULES	= \
	$(MODULES.pm.openca)

# 	$(MODULES.pm.3rd-party)	\

MODULE	= dummy

#---- variable settings above, rules below ----

# .PHONY:	modules test install install-common install-scep clean distclean
.PHONY:	modules test install install-common clean distclean

default: modules

modules::
	@if [ $(EXTERNAL_MODULES) != "yes" ]; then \
		$(MAKE) $(MODULES.pm.openca); \
	else \
		$(MAKE) $(MODULES); \
	fi

## changed because of problems with FreeBSDs default make or shell
## $(MODULES.pm.3rd-party)::	%:	%.tar.gz
##		$(GZIP) -d -c $< | $(TAR) Bxvf -
# $(MODULES.pm.3rd-party)::
# 		@if [ ! -d $@ ]; then \
# 			if (! $(PERL) -e 'my $$name="$@";$$name=~s/-[^-]*$$//;$$name=~s/-/::/g;eval "require $$name;";if ($$@){exit 1;}else{exit 0;}'); then \
# 				set -x; \
# 				$(GZIP) -d -c $@.tar.gz | $(TAR) Bxvf -; \
# 			else \
# 				echo $@ is already present on the system; \
# 			fi \
# 		fi

$(MODULES)::
		@if [ -d $@ ]; then \
			$(MAKE) $@/Makefile MODULE=$@; \
		fi

$(MODULE)/Makefile:	$(MODULE)/Makefile.PL
		@if [ -e $@.PL ]; then \
			cd $(MODULE) && CC=$(CC) OPENSSL_PREFIX=$(OPENSSL_PREFIX) $(PERL) Makefile.PL $(PERL_MAKEFILE_OPTS); \
		fi

## LC_ALL=de_AT is a hack to compensate a bug in the testscript of libintl-perl
## it must me exported after the export of PERL5OPT
## export LC_ALL=de_AT; \
##

$(MODULES)::
		@if [ -d $@ ]; then \
			PERL5OPT="-w"; \
			for file in `ls`; do \
				if [ -d $$file ]; then \
					PERL5OPT="$$PERL5OPT -I../$$file/blib/lib"; \
				fi; \
			done; \
			PERL5LIB=""; \
			for file in `ls`; do \
				if [ -d $$file ]; then \
					PERL5LIB="$$PERL5LIB:../$$file/blib/arch"; \
				fi; \
			done; \
			export PERL5OPT=$$PERL5OPT; \
			cd $@ && PERL5OPT=$$PERL5OPT PERL5LIB=$$PERL5LIB $(MAKE) $(SUBTARGET); \
		fi

# common for both CA and external server:
install-common:	install

test install clean distclean::
	@if [ $(EXTERNAL_MODULES) != "yes" ]; then \
		$(MAKE) $(MODULES.pm.openca) SUBTARGET=$@; \
	else \
		$(MAKE) $(MODULES) SUBTARGET=$@; \
	fi

clean distclean::	clean.local

clean.local::
		for module in $(MODULES.pm.openca); do \
			if [ -e $$module/Makefile ]; then \
				cd $$module; make clean; \
				rm -f Makefile; \
				cd ..; \
			fi; \
		done

#		$(RM) -rf $(MODULES.pm.3rd-party)

distclean::
		#$(RM)
