#######################################################################
# SWIG top level Makefile
#######################################################################

.PHONY: ccache source swig

prefix      = @prefix@
exec_prefix = @exec_prefix@
srcdir      = @srcdir@
datarootdir = @datarootdir@

##############################################################################
# Compiler and system configuration
##############################################################################

SHELL       = /bin/sh
SWIG_LIB    = @swig_lib@
BIN_DIR     = @bindir@
ENABLE_CCACHE = @ENABLE_CCACHE@
TARGET_NOEXE= swig
TARGET      = $(TARGET_NOEXE)@EXEEXT@
SOURCE      = Source
CCACHE      = CCache
DOCS        = Doc/Manual

swig: libfiles source ccache

source:
	@cd $(SOURCE) && $(MAKE)

ccache:
	test -z "$(ENABLE_CCACHE)" || (cd $(CCACHE) && $(MAKE))

libfiles: $(srcdir)/Lib/swigwarn.swg

# Files required just for the tarball
maintainer: libfiles
	@cd $(SOURCE) && $(MAKE) CParse/parser.h

#####################################################################
# Documentation
#####################################################################

docs: docs-main docs-ccache

docs-main:
	@echo making docs
	@test -d $(DOCS) || exit 0; cd $(DOCS) && $(MAKE) all clean-baks

docs-ccache:
	test -z "$(ENABLE_CCACHE)" || (cd $(CCACHE) && $(MAKE) docs)

#####################################################################
# All the languages SWIG speaks (when it wants to)
#####################################################################

skip-tcl	= test -n "@SKIP_TCL@"
skip-perl5	= test -n "@SKIP_PERL5@"
skip-python	= test -n "@SKIP_PYTHON@"
skip-java	= test -n "@SKIP_JAVA@"
skip-guilescm   = test -n "@SKIP_GUILESCM@"
skip-guile	= test -n "@SKIP_GUILE@"
skip-mzscheme	= test -n "@SKIP_MZSCHEME@"
skip-ruby	= test -n "@SKIP_RUBY@"
skip-php	= test -n "@SKIP_PHP@"
skip-ocaml      = test -n "@SKIP_OCAML@"
skip-octave     = test -n "@SKIP_OCTAVE@"
skip-pike       = test -n "@SKIP_PIKE@"
skip-chicken	= test -n "@SKIP_CHICKEN@"
skip-csharp	= test -n "@SKIP_CSHARP@"
skip-modula3	= test -n "@SKIP_MODULA3@"
skip-lua    	= test -n "@SKIP_LUA@"
skip-allegrocl  = test -n "@SKIP_ALLEGROCL@"
skip-clisp	= test -n "@SKIP_CLISP@"
skip-cffi	= test -n "@SKIP_CFFI@"
skip-uffi	= test -n "@SKIP_UFFI@"
skip-r		= test -n "@SKIP_R@"
skip-go		= test -n "@SKIP_GO@"
skip-d		= test -n "@SKIP_D@"

# Additional dependencies for some tests
skip-gcj        = test -n "@SKIP_GCJ@"

#####################################################################
# CHECK
#####################################################################

ACTION = check
NOSKIP =

chk-set-swiglib		= SWIG_LIB=@ROOT_DIR@/Lib
chk-set-swig		= SWIG=@ROOT_DIR@/$(TARGET)
chk-set-env = $(chk-set-swiglib) $(chk-set-swig)

check-aliveness:
	test -x ./$(TARGET)
	./$(TARGET) -version
	./$(TARGET) -help
	@$(skip-tcl)      || ./$(TARGET) -tcl        -help
	@$(skip-perl5)    || ./$(TARGET) -perl       -help
	@$(skip-python)   || ./$(TARGET) -python     -help
	@$(skip-java)     || ./$(TARGET) -java       -help
	@$(skip-guile)    || ./$(TARGET) -guile      -help
	@$(skip-mzscheme) || ./$(TARGET) -mzscheme   -help
	@$(skip-ruby)     || ./$(TARGET) -ruby       -help
	@$(skip-ocaml)    || ./$(TARGET) -ocaml      -help
	@$(skip-octave)   || ./$(TARGET) -octave     -help
	@$(skip-php)      || ./$(TARGET) -php        -help
	@$(skip-pike)     || ./$(TARGET) -pike       -help
	@$(skip-chicken)  || ./$(TARGET) -chicken    -help
	@$(skip-csharp)   || ./$(TARGET) -csharp     -help
	@$(skip-modula3)  || ./$(TARGET) -modula3    -help
	@$(skip-allegrocl)|| ./$(TARGET) -allegrocl  -help
	@$(skip-clisp)    || ./$(TARGET) -clisp      -help
	@$(skip-uffi)     || ./$(TARGET) -uffi       -help
	@$(skip-cffi)     || ./$(TARGET) -cffi       -help
	@$(skip-lua)      || ./$(TARGET) -lua        -help
	@$(skip-r) 	  || ./$(TARGET) -r          -help
	@$(skip-go)	  || ./$(TARGET) -go         -help
	@$(skip-d) 	  || ./$(TARGET) -d          -help

check-ccache:
	test -z "$(ENABLE_CCACHE)" || (cd $(CCACHE) && $(MAKE) check)

# Checks examples for compilation (does not run them)
check-examples:					\
	check-tcl-examples			\
	check-perl5-examples			\
	check-python-examples			\
	check-java-examples			\
	check-guile-examples			\
	check-mzscheme-examples			\
	check-ruby-examples			\
	check-ocaml-examples			\
	check-octave-examples			\
	check-php-examples			\
	check-pike-examples			\
	check-chicken-examples                  \
	check-csharp-examples                   \
	check-modula3-examples                  \
	check-lua-examples			\
	check-allegrocl-examples		\
	check-clisp-examples			\
	check-uffi-examples			\
	check-cffi-examples			\
	check-r-examples			\
	check-go-examples			\
	check-d-examples

tcl_examples       :=$(shell sed '/^\#/d' $(srcdir)/Examples/tcl/check.list)
perl5_examples     :=$(shell sed '/^\#/d' $(srcdir)/Examples/perl5/check.list)
python_examples    :=$(shell sed '/^\#/d' $(srcdir)/Examples/python/check.list)
java_examples      :=$(shell sed '/^\#/d' $(srcdir)/Examples/java/check.list)
guile_examples     :=$(shell sed '/^\#/d' $(srcdir)/Examples/guile/check.list)
mzscheme_examples  :=$(shell sed '/^\#/d' $(srcdir)/Examples/mzscheme/check.list)
ruby_examples      :=$(shell sed '/^\#/d' $(srcdir)/Examples/ruby/check.list)
ocaml_examples     :=$(shell sed '/^\#/d' $(srcdir)/Examples/ocaml/check.list)
octave_examples    :=$(shell sed '/^\#/d' $(srcdir)/Examples/octave/check.list)
php_examples       :=$(shell sed '/^\#/d' $(srcdir)/Examples/php/check.list)
pike_examples      :=$(shell sed '/^\#/d' $(srcdir)/Examples/pike/check.list)
chicken_examples   :=$(shell sed '/^\#/d' $(srcdir)/Examples/chicken/check.list)
csharp_examples    :=$(shell sed '/^\#/d' $(srcdir)/Examples/csharp/check.list)
modula3_examples   :=$(shell sed '/^\#/d' $(srcdir)/Examples/modula3/check.list)
lua_examples       :=$(shell sed '/^\#/d' $(srcdir)/Examples/lua/check.list)
allegrocl_examples :=
clisp_examples     :=
uffi_examples      :=
cffi_examples      :=
r_examples         :=$(shell sed '/^\#/d' $(srcdir)/Examples/r/check.list)
go_examples        :=$(shell sed '/^\#/d' $(srcdir)/Examples/go/check.list)
d_examples         :=$(shell sed '/^\#/d' $(srcdir)/Examples/d/check.list)

# all examples
check-%-examples :
	@if test -z "$(skip-$*)"; then				\
	  echo $* unknown;					\
	  exit 1;						\
	fi
	@if $(skip-$*); then					\
	  echo skipping $* $(ACTION);				\
	elif test -z "$($(strip $*_examples))"; then		\
	  echo empty $* $(ACTION);				\
	else							\
	  $(MAKE) -k -s $($*_examples:=.actionexample) LANGUAGE=$* ACTION=$(ACTION); \
	fi

# individual example
%.actionexample:
	@echo $(ACTION)ing Examples/$(LANGUAGE)/$*
	@(cd Examples/$(LANGUAGE)/$* && $(MAKE) -s $(chk-set-env) $(ACTION))

# gcj individual example
java.actionexample:
	@if $(skip-gcj); then					\
          echo "skipping Examples/$(LANGUAGE)/java $(ACTION) (gcj test)";	\
        else							\
	  echo $(ACTION)ing Examples/$(LANGUAGE)/java;		\
	  (cd Examples/$(LANGUAGE)/java && $(MAKE) -s $(chk-set-env) $(ACTION)) \
	fi

# Checks testcases in the test-suite excluding those which are known to be broken
check-test-suite:				\
	check-tcl-test-suite			\
	check-perl5-test-suite			\
	check-python-test-suite			\
	check-java-test-suite			\
	check-guilescm-test-suite		\
	check-guile-test-suite			\
	check-mzscheme-test-suite		\
	check-ruby-test-suite			\
	check-ocaml-test-suite			\
	check-octave-test-suite			\
	check-php-test-suite			\
	check-pike-test-suite			\
	check-csharp-test-suite			\
	check-modula3-test-suite		\
	check-lua-test-suite			\
	check-allegrocl-test-suite		\
	check-clisp-test-suite			\
	check-uffi-test-suite			\
	check-cffi-test-suite			\
	check-chicken-test-suite		\
	check-r-test-suite			\
	check-go-test-suite			\
	check-d-test-suite

check-%-test-suite:
	@if test -z "$(skip-$*)"; then					\
	  echo $* unknown;						\
	  exit 1;							\
	fi
	@passed=true;							\
	dir="Examples/test-suite/$*";					\
	if $(skip-$*) -a "$(NOSKIP)" != "1"; then			\
	  echo skipping $* test-suite $(ACTION);			\
	elif [ ! -d $$dir ]; then					\
	  echo warning: cannot $(ACTION) $* test-suite "(no dir $$dir)";\
	else								\
	  echo $(ACTION)ing $* test-suite;				\
	  (cd $$dir && $(MAKE) -k -s $(ACTION))				\
	  || passed=false;						\
	fi;								\
	test $$passed = true

# Partial test-suite check - it only invokes SWIG, ie no compilation and no runtime testing
partialcheck-test-suite:
	@$(MAKE) -k -s check-test-suite ACTION=partialcheck NOSKIP=1

partialcheck-%-test-suite:
	@$(MAKE) -k -s check-$*-test-suite ACTION=partialcheck NOSKIP=1

check: check-aliveness check-ccache check-examples check-test-suite

# Run known-to-be-broken as well as not broken testcases in the test-suite
all-test-suite:					\
	all-tcl-test-suite			\
	all-perl5-test-suite			\
	all-python-test-suite			\
	all-java-test-suite			\
	all-guilescm-test-suite			\
	all-guile-test-suite			\
	all-mzscheme-test-suite			\
	all-ruby-test-suite			\
	all-ocaml-test-suite			\
	all-octave-test-suite			\
	all-php-test-suite			\
	all-pike-test-suite			\
	all-csharp-test-suite			\
	all-modula3-test-suite			\
	all-lua-test-suite			\
	all-allegrocl-test-suite		\
	all-clisp-test-suite			\
	all-uffi-test-suite			\
	all-cffi-test-suite			\
	all-chicken-test-suite			\
	all-r-test-suite			\
	all-go-test-suite			\
	all-d-test-suite

all-%-test-suite:
	@$(MAKE) -k -s check-$*-test-suite ACTION=all

# Run known-to-be-broken testcases in the test-suite
broken-test-suite:				\
	broken-tcl-test-suite			\
	broken-perl5-test-suite			\
	broken-python-test-suite		\
	broken-java-test-suite			\
	broken-guilescm-test-suite		\
	broken-guile-test-suite			\
	broken-mzscheme-test-suite		\
	broken-ruby-test-suite			\
	broken-ocaml-test-suite			\
	broken-octave-test-suite		\
	broken-php-test-suite			\
	broken-pike-test-suite			\
	broken-csharp-test-suite		\
	broken-modula3-test-suite		\
	broken-lua-test-suite			\
	broken-allegrocl-test-suite		\
	broken-clisp-test-suite			\
	broken-uffi-test-suite			\
	broken-cffi-test-suite			\
	broken-chicken-test-suite		\
	broken-r-test-suite			\
	broken-go-test-suite			\
	broken-d-test-suite

broken-%-test-suite:
	@$(MAKE) -k -s check-$*-test-suite ACTION=broken

#####################################################################
# CLEAN
#####################################################################

clean: clean-objects clean-examples clean-test-suite

clean-objects: clean-source clean-ccache

clean-source:
	@echo cleaning Source
	@cd $(SOURCE) && $(MAKE) -s clean
	@rm -f $(TARGET)

clean-examples:
	@$(MAKE) -k -s check-examples ACTION=clean

clean-test-suite:
	@$(MAKE) -k -s check-test-suite ACTION=clean NOSKIP=1

clean-%-examples:
	@$(MAKE) -k -s check-$*-examples ACTION=clean

clean-%-test-suite:
	@$(MAKE) -k -s check-$*-test-suite ACTION=clean NOSKIP=1

clean-ccache:
	test -z "$(ENABLE_CCACHE)" || (cd $(CCACHE) && $(MAKE) -s clean)

#####################################################################
# DISTCLEAN - clean what configure built
#####################################################################

DISTCLEAN-DEAD = config.status config.log config.cache swig.spec Makefile mkmf.log libtool preinst-swig Lib/ocaml/swigp4.ml

distclean-helper: distclean-test-suite distclean-examples distclean-dead

distclean: distclean-source distclean-ccache distclean-helper

distclean-source:
	@echo distcleaning Source
	@cd $(SOURCE) && $(MAKE) -s distclean
	@rm -f $(TARGET)

distclean-test-suite:
	@echo distcleaning Examples/test-suite
	@$(MAKE) -k -s check-test-suite ACTION=distclean NOSKIP=1

distclean-examples:
	@echo distcleaning Examples
	@$(MAKE) -k -s clean-examples
	@cd Examples && $(MAKE) -k -s distclean

distclean-ccache:
	@test -z "$(ENABLE_CCACHE)" || (cd $(CCACHE) && $(MAKE) -s distclean)

distclean-dead:
	rm -f $(DISTCLEAN-DEAD)
	rm -rf autom4te.cache

#####################################################################
# MAINTAINER CLEAN - clean what the maintainer builds and ships in
# the distributed tarball - should not delete anything needed to run
# ./configure && make
#####################################################################

maintainer-clean:
	@echo maintainer-cleaning source
	@cd $(SOURCE) && $(MAKE) -k -s maintainer-clean
	@echo maintainer-cleaning CCache
	@test -z "$(ENABLE_CCACHE)" || (cd $(CCACHE) && $(MAKE) -s maintainer-clean)
	@echo maintainer-cleaning docs
	@cd $(DOCS) && $(MAKE) -k -s maintainer-clean
	@echo maintainer-cleaning Lib files
	@rm -f $(srcdir)/Lib/swigwarn.swg
	@echo distcleaning
	@$(MAKE) -k -s distclean-helper

#####################################################################
# Update the Lib/swigwarn.swg file
# Note: Generated into the source tree rather than build tree
#####################################################################

$(srcdir)/Lib/swigwarn.swg: $(srcdir)/Source/Include/swigwarn.h
	mkdir -p Lib
	echo "/* Automatically generated file containing all the swig warning codes.  */" > $@
	echo "/* Do not modify this file by hand, change 'Source/Include/swigwarn.h'  */" >> $@
	echo "/* and use the command 'make Lib/swigwarn.swg' instead.                 */" >> $@
	echo >> $@; echo >> $@
	awk '/#define WARN/{$$1="%define"; $$2="SWIG"$$2; $$3=sprintf("%d %%enddef", $$3); print $$0; next;}\
	      /#/{next;} {print $0}' < $? >> $@

#####################################################################
# TARGETS: install & friends
#####################################################################

INSTALL         = @abs_srcdir@/Tools/config/install-sh -c
INSTALL_DATA    = ${INSTALL} -m 644
INSTALL_PROGRAM = ${INSTALL} -m 755
MKINSTDIRS      = @abs_srcdir@/Tools/config/install-sh -m 0755 -d
# Use standard autoconf approach to transform executable name using --program-prefix and --program-suffix
transform	= @program_transform_name@

install: install-main install-lib install-ccache
	@echo "Installation complete"

install-main:
	@echo "Installing SWIG executable"
	@$(MKINSTDIRS) $(DESTDIR)$(BIN_DIR)
	@echo "Installing $(DESTDIR)$(BIN_DIR)/`echo $(TARGET_NOEXE) | sed '$(transform)'`@EXEEXT@"
	@$(INSTALL_PROGRAM) $(TARGET) $(DESTDIR)$(BIN_DIR)/`echo $(TARGET_NOEXE) | sed '$(transform)'`@EXEEXT@

lib-languages = gcj typemaps tcl perl5 python guile java mzscheme ruby php ocaml octave \
	pike chicken csharp modula3 allegrocl clisp lua cffi uffi r go d

lib-modules = std


install-lib: 
	@echo "Installing the SWIG library"
	@$(MKINSTDIRS) $(DESTDIR)$(SWIG_LIB)
	@for file in $(srcdir)/Lib/*.i $(srcdir)/Lib/*.swg ; do \
	    i=`basename $$file` ;				\
	    echo "Installing $(DESTDIR)$(SWIG_LIB)/$$i";	\
            $(INSTALL_DATA) $$file $(DESTDIR)$(SWIG_LIB)/$$i;	\
	    done;
	@for lang in $(lib-languages) $(lib-modules);		\
	    do							\
	    echo "Installing language specific files for $$lang"; \
	    dst=$(DESTDIR)$(SWIG_LIB)/$$lang;			\
	    $(MKINSTDIRS) $$dst;				\
	     (doti="`cd $(srcdir)/Lib/$$lang && ls *.i 2>/dev/null || echo ''`"; \
	      dotswg="`cd $(srcdir)/Lib/$$lang && ls *.swg 2>/dev/null || echo ''`"; \
	      if [ -f $(srcdir)/Lib/$$lang/extra-install.list ]; then	\
		  extra="`sed '/^#/d' $(srcdir)/Lib/$$lang/extra-install.list`";	\
	      fi;						\
	      files="`echo $$doti $$dotswg $$extra`";		\
	      if [ x"$$files" = x ]; then			\
		  echo "Installing nothing from Lib/$$lang";	\
	      else for file in $$doti $$dotswg $$extra;		\
		  do						\
		  echo "Installing $$dst/$$file";		\
		  $(INSTALL_DATA) $(srcdir)/Lib/$$lang/$$file $$dst/$$file; \
		  done;						\
	      fi) ; 						\
	done

install-ccache:
	@test -z "$(ENABLE_CCACHE)" || (cd $(CCACHE) && $(MAKE) -s install)


#####################################################################
# TARGETS: uninstall & friends
#####################################################################

uninstall: uninstall-main uninstall-lib uninstall-ccache
	@echo "Uninstall complete"

uninstall-main:
	@echo "Uninstalling SWIG executable $(DESTDIR)$(BIN_DIR)/`echo $(TARGET_NOEXE) | sed '$(transform)'`@EXEEXT@"
	rm -f $(DESTDIR)$(BIN_DIR)/`echo $(TARGET_NOEXE) | sed '$(transform)'`@EXEEXT@

uninstall-lib:
	@echo "Uninstalling the SWIG library"
	rm -rf $(DESTDIR)$(SWIG_LIB)/

uninstall-ccache:
	test -z "$(ENABLE_CCACHE)" || (cd $(CCACHE) && $(MAKE) uninstall)

############################################################################
# DIST and other maintenance
############################################################################

# distribution directory
dd = @PACKAGE_NAME@-@PACKAGE_VERSION@
srpm = @PACKAGE_NAME@-@PACKAGE_VERSION@

dist:
	@echo "not implemented"
	false

srcrpm:
	rm -fr $(srpm) $(srpm).src.rpm
	echo "TODO: update to use svn instead of cvs"
	cvs export -d $(srpm) -r HEAD SWIG
	cp swig.spec $(srpm)
	tar -cf - $(srpm) | gzip --best > $(srpm).tar.gz
	rm -fr $(srpm)
	rpmbuild -ts $(srpm).tar.gz

# Update the autoconf files for detecting host/targets. Automake will do this in
# version 1.10 for our case of not having a top level Makefile.am. Until then we
# can fetch them manually and will have to commit them to SVN.
configfiles:
	wget ftp://ftp.gnu.org/pub/gnu/config/config.guess -O Tools/config/config.guess
	chmod a+x Tools/config/config.guess
	wget ftp://ftp.gnu.org/pub/gnu/config/config.sub -O Tools/config/config.sub
	chmod a+x Tools/config/config.sub

# Regenerate Makefile if Makefile.in or config.status have changed.
Makefile: $(srcdir)/Makefile.in config.status
	$(SHELL) ./config.status

# This target is usually called from Source/Makefile when configure.in has
# changed.
am--refresh: $(srcdir)/configure

$(srcdir)/configure: $(srcdir)/configure.in
	@echo "Build system is out of date.  If the following commands fail, please reconfigure by hand (rerun: ./autogen.sh && ./configure)"
	cd $(srcdir) && ./autogen.sh
	$(SHELL) ./config.status --recheck

# Makefile ends here
