#######################################################################
# 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
RUNPIPE     = \>/dev/null

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-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@"
skip-android    = test -n "@SKIP_ANDROID@"

#####################################################################
# 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 / displays versions of each target language
check-versions:					\
	check-tcl-version			\
	check-perl5-version			\
	check-python-version			\
	check-java-version			\
	check-android-version			\
	check-guile-version			\
	check-mzscheme-version			\
	check-ruby-version			\
	check-ocaml-version			\
	check-octave-version			\
	check-php-version			\
	check-pike-version			\
	check-chicken-version			\
	check-csharp-version			\
	check-modula3-version			\
	check-lua-version			\
	check-allegrocl-version			\
	check-clisp-version			\
	check-uffi-version			\
	check-cffi-version			\
	check-r-version				\
	check-go-version			\
	check-d-version

# all examples
check-%-version :
	@if test -z "$(skip-$*)"; then				\
	  echo $* unknown;					\
	  exit 1;						\
	fi
	@if $(skip-$*); then					\
	  echo skipping $* version;				\
	else							\
	  echo showing $* version;				\
	  (cd Examples && $(MAKE) -s $*_version)		\
	fi

# Checks examples for compilation (does not run them)
check-examples:					\
	check-tcl-examples			\
	check-perl5-examples			\
	check-python-examples			\
	check-java-examples			\
	check-android-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)
android_examples   :=$(shell sed '/^\#/d' $(srcdir)/Examples/android/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) RUNPIPE=$(RUNPIPE))

# 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-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-versions 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-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-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 "/* SWIG warning codes */" > $@
	cat $? | grep "^#define WARN\|/\*.*\*/\|^[ \t]*$$" | sed 's/^#define \(WARN.*[0-9][0-9]*\)\(.*\)$$/%define SWIG\1 %enddef\2/' >> $@

#####################################################################
# 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 - use Tools/makedist.py instead."
	false

srcrpm:
	rm -fr $(srpm) $(srpm).src.rpm
	echo "TODO: update to use git 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 Git.
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.ac has
# changed.
am--refresh: $(srcdir)/configure

$(srcdir)/configure: $(srcdir)/configure.ac
	@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

############################################################################
# Tools
############################################################################

# Coverity static code analyser build and submit - EMAIL and PASSWORD need specifying
# See http://scan.coverity.com/start/
EMAIL=wsf@fultondesigns.co.uk
PASSWORD=
coverity:
	test -n "$(PASSWORD)" || (echo "PASSWORD not set" && false)
	$(MAKE) clean-source
	rm -rf cov-int
	cov-build --dir cov-int $(MAKE) source
	tar czvf swig-coverity.tgz cov-int
	curl --form file=@swig-coverity.tgz --form project=swig --form password=$(PASSWORD) --form email=$(EMAIL) http://scan5.coverity.com/cgi-bin/upload.py

# Makefile ends here
