# 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.16	\
	IO-Socket-SSL-1.01	\
	IO-stringy-2.108	\
	MIME-Lite-3.01		\
	MIME-tools-5.411	\
	MailTools-1.58		\
	Net-Server-0.86		\
	URI-1.23		\
	XML-Parser-2.34		\
	perl-ldap-0.33		\
	Parse-RecDescent-1.94	\
	X500-DN-0.28		\
	XML-Twig-3.09

MODULES	= \
	$(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::
	@for i in $(MODULES) ; do \
		$(MAKE) $$i ; \
	done

#	$(MAKE) $(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 [ $(package_build) != "yes" ] ; 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 ; \
			else \
				set -x; \
				$(GZIP) -d -c $@.tar.gz | $(TAR) Bxvf -; \
			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::
	$(MAKE) $(MODULES) SUBTARGET=$@; \

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

clean distclean::	clean.local

clean.local::
		$(RM) -rf $(MODULES.pm.3rd-party)

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

distclean::
		#$(RM)
