| ####################################################################### |
| # SWIG top level Makefile |
| ####################################################################### |
| |
| .PHONY: ccache source swig |
| |
| prefix = @prefix@ |
| exec_prefix = @exec_prefix@ |
| srcdir = @srcdir@ |
| datarootdir = @datarootdir@ |
| |
| ##################################################################### |
| # Make options - override these to see more output |
| ##################################################################### |
| |
| RUNPIPE = \>/dev/null |
| FLAGS = -k -s |
| |
| ##################################################################### |
| # Compiler and system configuration |
| ##################################################################### |
| |
| SHELL = /bin/sh |
| SWIG_LIB_INSTALL = @SWIG_LIB_INSTALL@ |
| BIN_DIR = @bindir@ |
| ENABLE_CCACHE = @ENABLE_CCACHE@ |
| TARGET_NOEXE= swig |
| TARGET = $(TARGET_NOEXE)@EXEEXT@ |
| SOURCE = Source |
| CCACHE = CCache |
| DOCS = Doc/Manual |
| HAVE_CXX11_COMPILER = @HAVE_CXX11_COMPILER@ |
| |
| 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-main: |
| @echo making docs |
| @test -d $(DOCS) || exit 0; cd $(DOCS) && $(MAKE) all clean-baks |
| |
| ##################################################################### |
| # 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-csharp = test -n "@SKIP_CSHARP@" |
| skip-lua = test -n "@SKIP_LUA@" |
| skip-r = test -n "@SKIP_R@" |
| skip-scilab = test -n "@SKIP_SCILAB@" |
| skip-go = test -n "@SKIP_GO@" |
| skip-d = test -n "@SKIP_D@" |
| skip-javascript = test -n "@SKIP_JAVASCRIPT@" |
| |
| # Additional dependencies for some tests |
| skip-android = test -n "@SKIP_ANDROID@" |
| |
| # Special errors test-case |
| skip-errors = test -n "" |
| |
| check-%-enabled: |
| @if $(skip-$*); then \ |
| echo skipping $* version; \ |
| exit 1; \ |
| fi |
| |
| ##################################################################### |
| # CHECK |
| ##################################################################### |
| |
| ACTION = check |
| NOSKIP = |
| |
| 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) -php7 -help |
| @$(skip-csharp) || ./$(TARGET) -csharp -help |
| @$(skip-lua) || ./$(TARGET) -lua -help |
| @$(skip-r) || ./$(TARGET) -r -help |
| @$(skip-scilab) || ./$(TARGET) -scilab -help |
| @$(skip-go) || ./$(TARGET) -go -help |
| @$(skip-d) || ./$(TARGET) -d -help |
| @$(skip-javascript) || ./$(TARGET) -javascript -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-javascript-version \ |
| check-android-version \ |
| check-guile-version \ |
| check-mzscheme-version \ |
| check-ruby-version \ |
| check-ocaml-version \ |
| check-octave-version \ |
| check-php-version \ |
| check-csharp-version \ |
| check-lua-version \ |
| check-r-version \ |
| check-scilab-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) $(FLAGS) $*_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-csharp-examples \ |
| check-lua-examples \ |
| check-r-examples \ |
| check-scilab-examples \ |
| check-go-examples \ |
| check-d-examples \ |
| check-javascript-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) |
| csharp_examples :=$(shell sed '/^\#/d' $(srcdir)/Examples/csharp/check.list) |
| lua_examples :=$(shell sed '/^\#/d' $(srcdir)/Examples/lua/check.list) |
| r_examples :=$(shell sed '/^\#/d' $(srcdir)/Examples/r/check.list) |
| scilab_examples :=$(shell sed '/^\#/d' $(srcdir)/Examples/scilab/check.list) |
| go_examples :=$(shell sed '/^\#/d' $(srcdir)/Examples/go/check.list) |
| d_examples :=$(shell sed '/^\#/d' $(srcdir)/Examples/d/check.list) |
| javascript_examples:=$(shell sed '/^\#/d' $(srcdir)/Examples/javascript/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) $(FLAGS) $($*_examples:=.actionexample) LANGUAGE=$* ACTION=$(ACTION); \ |
| fi |
| |
| # individual example |
| %.actionexample: |
| @cd Examples && $(MAKE) Makefile |
| @echo $(ACTION)ing Examples/$(LANGUAGE)/$* |
| @(cd Examples/$(LANGUAGE)/$* && $(MAKE) $(FLAGS) $(ACTION) RUNPIPE=$(RUNPIPE)) |
| |
| # Checks testcases in the test-suite excluding those which are known to be broken |
| check-test-suite: \ |
| check-errors-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-csharp-test-suite \ |
| check-lua-test-suite \ |
| check-r-test-suite \ |
| check-scilab-test-suite \ |
| check-go-test-suite \ |
| check-d-test-suite \ |
| check-javascript-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) $(FLAGS) $(ACTION) HAVE_CXX11_COMPILER=$(HAVE_CXX11_COMPILER)) \ |
| || 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) $(FLAGS) check-test-suite ACTION=partialcheck NOSKIP=1 |
| |
| partialcheck-%-test-suite: |
| @$(MAKE) $(FLAGS) 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-csharp-test-suite \ |
| all-lua-test-suite \ |
| all-r-test-suite \ |
| all-scilab-test-suite \ |
| all-go-test-suite \ |
| all-d-test-suite \ |
| all-javascript-test-suite |
| |
| all-%-test-suite: |
| @$(MAKE) $(FLAGS) 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-csharp-test-suite \ |
| broken-lua-test-suite \ |
| broken-r-test-suite \ |
| broken-scilab-test-suite \ |
| broken-go-test-suite \ |
| broken-d-test-suite \ |
| broken-javascript-test-suite |
| |
| broken-%-test-suite: |
| @$(MAKE) $(FLAGS) 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) $(FLAGS) clean |
| @rm -f $(TARGET) |
| |
| clean-examples: |
| @$(MAKE) $(FLAGS) check-examples ACTION=clean |
| |
| clean-test-suite: |
| @$(MAKE) $(FLAGS) check-test-suite ACTION=clean NOSKIP=1 |
| |
| clean-%-examples: |
| @$(MAKE) $(FLAGS) check-$*-examples ACTION=clean |
| |
| clean-%-test-suite: |
| @$(MAKE) $(FLAGS) check-$*-test-suite ACTION=clean NOSKIP=1 |
| |
| clean-ccache: |
| test -z "$(ENABLE_CCACHE)" || (cd $(CCACHE) && $(MAKE) $(FLAGS) clean) |
| |
| ##################################################################### |
| # DISTCLEAN - clean what configure built |
| ##################################################################### |
| |
| DISTCLEAN-DEAD = config.status config.log config.cache swig.spec Makefile mkmf.log preinst-swig |
| |
| distclean-helper: distclean-test-suite distclean-examples distclean-tools distclean-dead |
| |
| distclean: distclean-source distclean-ccache distclean-helper |
| |
| distclean-source: |
| @echo distcleaning Source |
| @cd $(SOURCE) && $(MAKE) $(FLAGS) distclean |
| @rm -f $(TARGET) |
| |
| distclean-test-suite: |
| @echo distcleaning Examples/test-suite |
| @$(MAKE) $(FLAGS) check-test-suite ACTION=distclean NOSKIP=1 |
| |
| distclean-examples: |
| @echo distcleaning Examples |
| @$(MAKE) $(FLAGS) clean-examples |
| @cd Examples && $(MAKE) $(FLAGS) distclean |
| @if test "x$(srcdir)" != "x."; then \ |
| for mkfile in `cd $(srcdir) && find Examples/ -type f -name Makefile`; do \ |
| rm -f "$$mkfile"; \ |
| done; \ |
| fi |
| |
| distclean-ccache: |
| @test -z "$(ENABLE_CCACHE)" || (cd $(CCACHE) && $(MAKE) $(FLAGS) distclean) |
| |
| distclean-tools: |
| @echo distcleaning Tools |
| @cd Tools/javascript && $(MAKE) $(FLAGS) 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) $(FLAGS) maintainer-clean |
| @echo maintainer-cleaning CCache |
| @test -z "$(ENABLE_CCACHE)" || (cd $(CCACHE) && $(MAKE) $(FLAGS) maintainer-clean) |
| @echo maintainer-cleaning docs |
| @test -d $(DOCS) || exit 0; cd $(DOCS) && $(MAKE) $(FLAGS) maintainer-clean |
| @echo maintainer-cleaning Lib files |
| @rm -f $(srcdir)/Lib/swigwarn.swg |
| @echo distcleaning |
| @$(MAKE) $(FLAGS) distclean-helper |
| |
| check-maintainer-clean: maintainer-clean |
| @if test "x$(srcdir)" = "x."; then \ |
| echo "skipping maintainer-clean check (in-source-tree build)"; \ |
| exit 0; \ |
| fi; \ |
| for file in `find . -type f`; do \ |
| echo "file missed by maintainer-clean: $$file"; \ |
| done; \ |
| test "x$$file" = x && echo "all files cleaned by maintainer-clean" |
| |
| ##################################################################### |
| # 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 - generated from swigwarn.h - do not edit */" > $@ |
| 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 = typemaps tcl perl5 python guile java mzscheme ruby php ocaml octave \ |
| csharp lua r go d javascript javascript/jsc \ |
| javascript/v8 scilab xml |
| |
| lib-modules = std |
| |
| |
| install-lib: |
| @echo "Installing the SWIG library" |
| @$(MKINSTDIRS) $(DESTDIR)$(SWIG_LIB_INSTALL) |
| @for file in $(srcdir)/Lib/*.i $(srcdir)/Lib/*.swg ; do \ |
| i=`basename $$file` ; \ |
| echo "Installing $(DESTDIR)$(SWIG_LIB_INSTALL)/$$i"; \ |
| $(INSTALL_DATA) $$file $(DESTDIR)$(SWIG_LIB_INSTALL)/$$i; \ |
| done; |
| @for lang in $(lib-languages) $(lib-modules); \ |
| do \ |
| echo "Installing language specific files for $$lang"; \ |
| dst=$(DESTDIR)$(SWIG_LIB_INSTALL)/$$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) 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_INSTALL)/ |
| |
| 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 "'make dist' not implemented - use Tools/mkdist.py instead - e.g.:" |
| @echo "Tools/mkdist.py @VERSION@ master" |
| @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 'https://git.savannah.gnu.org/gitweb/?p=config.git;a=blob_plain;f=config.guess' -O Tools/config/config.guess |
| chmod a+x Tools/config/config.guess |
| wget 'https://git.savannah.gnu.org/gitweb/?p=config.git;a=blob_plain;f=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 |