diff options
author | William S Fulton <wsf@fultondesigns.co.uk> | 2022-10-06 22:48:35 +0100 |
---|---|---|
committer | William S Fulton <wsf@fultondesigns.co.uk> | 2022-10-06 23:29:33 +0100 |
commit | 7b0f7caaf2c4d8e863b38a88099ea9dd7e3df0e5 (patch) | |
tree | e5e1325d01a14ec45162832211ed031db9eca5ea /Examples/Makefile.in | |
parent | b975f401a935ddcfeb545e6f63db9b950aa65998 (diff) | |
download | swig-7b0f7caaf2c4d8e863b38a88099ea9dd7e3df0e5.tar.gz |
Makefile re-order
All target languages are in now in alphabetical order
Diffstat (limited to 'Examples/Makefile.in')
-rw-r--r-- | Examples/Makefile.in | 1333 |
1 files changed, 666 insertions, 667 deletions
diff --git a/Examples/Makefile.in b/Examples/Makefile.in index fc33ead8b..28c87862c 100644 --- a/Examples/Makefile.in +++ b/Examples/Makefile.in @@ -148,347 +148,413 @@ swiginvoke: $(SWIG) $(SWIGOPT) ################################################################## -##### Tcl/Tk ###### +##### ANDROID ###### ################################################################## -# Set these to your local copy of Tcl/Tk. +ANDROID = @ANDROID@ +ANDROID_NDK_BUILD = @NDKBUILD@ +ANDROID_ADB = @ADB@ +ANT = @ANT@ +TARGETID = 1 -TCLSH = tclsh -TCL_INCLUDE = @TCLINCLUDE@ -TCL_LIB = @TCLLIB@ -TCL_OPTS = @LIBS@ -TK_OPTS = -ltk -ltcl @LIBS@ +# ---------------------------------------------------------------- +# Build an Android dynamically loadable module (C) +# ---------------------------------------------------------------- -# Extra Tcl specific dynamic linking options -TCL_DLNK = @TCLDYNAMICLINKING@ -TCL_SO = @TCL_SO@ -TCLLDSHARED = @TCLLDSHARED@ -TCLCXXSHARED = @TCLCXXSHARED@ -TCL_SCRIPT = $(SRCDIR)$(RUNME).tcl -TCL_LINK = @TCLLINK@ +android: $(SRCDIR_SRCS) + $(ANDROID) $(SILENT_OPTION) update project --target $(TARGETID) --name $(PROJECTNAME) --path . + $(SWIG) -java $(SWIGOPT) -o $(INTERFACEDIR)$(TARGET)_wrap.c $(INTERFACEPATH) + +$(ANDROID_NDK_BUILD) $(SILENT_PIPE) + $(ANT) $(ANT_QUIET) debug -# ----------------------------------------------------------- -# Build a new version of the tclsh shell -# ----------------------------------------------------------- +# ---------------------------------------------------------------- +# Build an Android dynamically loadable module (C++) +# ---------------------------------------------------------------- -tclsh: $(SRCDIR_SRCS) - $(SWIG) -tcl8 $(SWIGOPT) $(TCL_SWIGOPTS) -ltclsh.i -o $(ISRCS) $(INTERFACEPATH) - $(CC) $(CPPFLAGS) $(CFLAGS) $(LDFLAGS) $(SRCDIR_SRCS) $(ISRCS) $(INCLUDES) $(TCL_INCLUDE) \ - $(TCL_LIB) $(TCL_OPTS) $(LIBS) $(SYSLIBS) -o $(TARGET) +android_cpp: $(SRCDIR_SRCS) + $(ANDROID) $(SILENT_OPTION) update project --target $(TARGETID) --name $(PROJECTNAME) --path . + $(SWIG) -java -c++ $(SWIGOPT) -o $(INTERFACEDIR)$(TARGET)_wrap.cpp $(INTERFACEPATH) + +$(ANDROID_NDK_BUILD) $(SILENT_PIPE) + $(ANT) $(ANT_QUIET) debug -tclsh_cpp: $(SRCDIR_SRCS) - $(SWIG) -tcl8 -c++ $(SWIGOPT) $(TCL_SWIGOPTS) -ltclsh.i -o $(ICXXSRCS) $(INTERFACEPATH) - $(CXX) $(CPPFLAGS) $(CXXFLAGS) $(LDFLAGS) $(SRCDIR_SRCS) $(SRCDIR_CXXSRCS) $(ICXXSRCS) $(INCLUDES) $(TCL_INCLUDE) \ - $(TCL_LIB) $(TCL_OPTS) $(LIBS) $(SYSLIBS) -o $(TARGET) +# ---------------------------------------------------------------- +# Android install +# ---------------------------------------------------------------- -# ----------------------------------------------------------- -# Build a Tcl dynamic loadable module (you might need to tweak this) -# ----------------------------------------------------------- +android_install: + -$(ANDROID_ADB) uninstall $(PACKAGENAME) + $(ANDROID_ADB) install $(INSTALLOPTIONS) bin/$(PROJECTNAME)-debug.apk -tcl: $(SRCDIR_SRCS) - $(SWIG) -tcl8 $(SWIGOPT) $(TCL_SWIGOPTS) -o $(ISRCS) $(INTERFACEPATH) - $(CC) -c $(CCSHARED) $(CPPFLAGS) $(CFLAGS) $(SRCDIR_SRCS) $(ISRCS) $(INCLUDES) $(TCL_INCLUDE) - $(TCLLDSHARED) $(CFLAGS) $(LDFLAGS) $(OBJS) $(IOBJS) $(TCL_DLNK) $(LIBS) -o $(LIBPREFIX)$(TARGET)$(TCL_SO) $(TCL_LINK) +# ----------------------------------------------------------------- +# Version display +# ----------------------------------------------------------------- -# ----------------------------------------------------------- -# Build a Tcl dynamic loadable module for C++ -# ----------------------------------------------------------- +android_version: + $(ANDROID_ADB) version -tcl_cpp: $(SRCDIR_SRCS) - $(SWIG) -tcl8 -c++ $(SWIGOPT) $(TCL_SWIGOPTS) -o $(ICXXSRCS) $(INTERFACEPATH) - $(CXX) -c $(CCSHARED) $(CPPFLAGS) $(CXXFLAGS) $(SRCDIR_SRCS) $(SRCDIR_CXXSRCS) $(ICXXSRCS) $(INCLUDES) $(TCL_INCLUDE) - $(TCLCXXSHARED) $(CXXFLAGS) $(LDFLAGS) $(OBJS) $(IOBJS) $(TCL_DLNK) $(LIBS) $(CPP_DLLIBS) -o $(LIBPREFIX)$(TARGET)$(TCL_SO) $(TCL_LINK) +# ----------------------------------------------------------------- +# Cleaning the Android examples +# ----------------------------------------------------------------- + +android_clean: + test -n "$(SRCDIR)" && cd $(SRCDIR) ; $(ANT) -q -logfile /dev/null clean + rm -f $(INTERFACEDIR)$(TARGET)_wrap.* + rm -f `find $(PACKAGEDIR) -name \*.java | grep -v $(PROJECTNAME).java` + rm -rf obj + +################################################################## +##### CFFI ###### +################################################################## + +CFFI = @CFFIBIN@ +CFFI_SCRIPT=$(RUNME).lisp + +cffi: $(SRCDIR_SRCS) + $(SWIG) -cffi $(SWIGOPT) -o $(ISRCS) $(INTERFACEPATH) +# $(CC) -c $(CCSHARED) $(CPPFLAGS) $(CFLAGS) $(ISRCS) $(INCLUDES) $(SRCDIR_SRCS) +# $(LDSHARED) $(CFLAGS) $(LDFLAGS) $(OBJS) $(IOBJS) $(LIBS) -o $(LIBPREFIX)$(TARGET)$(SO) + +cffi_cpp: $(SRCDIR_SRCS) + $(SWIG) -c++ -cffi $(SWIGOPT) -o $(ICXXSRCS) $(INTERFACEPATH) + $(CXX) -c $(CCSHARED) $(CPPFLAGS) $(CXXFLAGS) $(ICXXSRCS) $(SRCDIR_SRCS) $(SRCDIR_CXXSRCS) $(INCLUDES) + $(CXXSHARED) $(CXXFLAGS) $(LDFLAGS) $(OBJS) $(IOBJS) $(LIBS) $(CPP_DLLIBS) -o $(LIBPREFIX)$(TARGET)$(SO) # ----------------------------------------------------------------- -# Run Tcl example +# Run CFFI example # ----------------------------------------------------------------- -tcl_run: - $(RUNTOOL) $(TCLSH) $(TCL_SCRIPT) $(RUNPIPE) +cffi_run: + $(RUNTOOL) $(CFFI) -batch -s $(CFFI_SCRIPT) $(RUNPIPE) # ----------------------------------------------------------------- # Version display # ----------------------------------------------------------------- -tcl_version: - echo 'puts $$tcl_version;exit 0' | $(TCLSH) +cffi_version: + $(CFFI) --version # ----------------------------------------------------------------- -# Cleaning the Tcl examples +# Cleaning the CFFI examples # ----------------------------------------------------------------- -tcl_clean: - rm -f *_wrap* *~ .~* mytclsh@EXEEXT@ +cffi_clean: + rm -f *_wrap* *~ .~* rm -f core @EXTRA_CLEAN@ - rm -f *.@OBJEXT@ *$(TCL_SO) + rm -f *.@OBJEXT@ *@SO@ ################################################################## -##### PERL 5 ###### +##### CSHARP ###### ################################################################## -# You need to set this variable to the Perl5 directory containing the -# files "perl.h", "EXTERN.h" and "XSUB.h". With Perl5.003, it's -# usually something like /usr/local/lib/perl5/arch-osname/5.003/CORE. - -PERL5_INCLUDE= @PERL5EXT@ - -# Extra Perl specific dynamic linking options -PERL5_DLNK = @PERL5DYNAMICLINKING@ -PERL5_CCFLAGS = @PERL5CCFLAGS@ -PERL5_CCDLFLAGS = @PERL5CCDLFLAGS@ -PERL5_CCCDLFLAGS = @PERL5CCCDLFLAGS@ -PERL5_LDFLAGS = @PERL5LDFLAGS@ -PERL = @PERL@ -PERL5_LIB = -L$(PERL5_INCLUDE) -l@PERL5LIB@ @LIBS@ $(SYSLIBS) -PERL5_SCRIPT = $(SRCDIR)$(RUNME).pl +# Extra CSharp specific dynamic linking options +CSHARP_DLNK = @CSHARPDYNAMICLINKING@ +CSHARP_LIBPREFIX = @CSHARPLIBRARYPREFIX@ +CSHARPCOMPILER = @CSHARPCOMPILER@ +CSHARPCILINTERPRETER = @CSHARPCILINTERPRETER@ +CSHARPCILINTERPRETER_FLAGS = @CSHARPCILINTERPRETER_FLAGS@ +CSHARPCFLAGS = @CSHARPCFLAGS@ +CSHARPFLAGS = +CSHARPOPTIONS = +CSHARPSO = @CSHARPSO@ +CSHARP_RUNME = ./$(RUNME).exe # ---------------------------------------------------------------- -# Build a Perl5 dynamically loadable module (C) +# Build a CSharp dynamically loadable module (C) # ---------------------------------------------------------------- -perl5: $(SRCDIR_SRCS) - $(SWIG) -perl5 $(SWIGOPT) -o $(ISRCS) $(INTERFACEPATH) - $(CC) -c -Dbool=char $(CCSHARED) $(CPPFLAGS) $(CFLAGS) $(SRCDIR_SRCS) $(ISRCS) $(INCLUDES) $(PERL5_CCFLAGS) $(PERL5_CCCDLFLAGS) -I$(PERL5_INCLUDE) - $(LDSHARED) $(CFLAGS) $(LDFLAGS) $(PERL5_CCDLFLAGS) $(OBJS) $(IOBJS) $(PERL5_LDFLAGS) $(PERL5_DLNK) $(LIBS) -o $(LIBPREFIX)$(TARGET)$(SO) +csharp: $(SRCDIR_SRCS) + $(SWIG) -csharp $(SWIGOPT) -o $(ISRCS) $(INTERFACEPATH) + $(CC) -c $(CCSHARED) $(CPPFLAGS) $(CFLAGS) $(CSHARPCFLAGS) $(SRCDIR_SRCS) $(ISRCS) $(INCLUDES) + $(LDSHARED) $(CFLAGS) $(LDFLAGS) $(OBJS) $(IOBJS) $(CSHARP_DLNK) $(LIBS) -o $(CSHARP_LIBPREFIX)$(TARGET)$(CSHARPSO) # ---------------------------------------------------------------- -# Build a Perl5 dynamically loadable module (C++) +# Build a CSharp dynamically loadable module (C++) # ---------------------------------------------------------------- -perl5_cpp: $(SRCDIR_SRCS) - $(SWIG) -perl5 -c++ $(SWIGOPT) -o $(ICXXSRCS) $(INTERFACEPATH) - $(CXX) -c $(CCSHARED) $(CPPFLAGS) $(CXXFLAGS) $(SRCDIR_SRCS) $(SRCDIR_CXXSRCS) $(ICXXSRCS) $(INCLUDES) $(PERL5_CCFLAGS) $(PERL5_CCCDLFLAGS) -I$(PERL5_INCLUDE) - $(CXXSHARED) $(CXXFLAGS) $(LDFLAGS) $(PERL5_CCDLFLAGS) $(OBJS) $(IOBJS) $(PERL5_LDFLAGS) $(PERL5_DLNK) $(LIBS) $(CPP_DLLIBS) -o $(LIBPREFIX)$(TARGET)$(SO) - -# ---------------------------------------------------------------- -# Build a module from existing XS C source code. (ie. from xsubpp). -# ---------------------------------------------------------------- -perl5_xs: $(SRCDIR_SRCS) - $(CC) -c $(CCSHARED) $(CPPFLAGS) $(CFLAGS) $(SRCDIR_SRCS) $(INCLUDES) -I$(PERL5_INCLUDE) - $(LDSHARED) $(CFLAGS) $(LDFLAGS) $(OBJS) $(LIBS) -o $(TARGET)$(SO) +csharp_cpp: $(SRCDIR_SRCS) + $(SWIG) -csharp -c++ $(SWIGOPT) -o $(ICXXSRCS) $(INTERFACEPATH) + $(CXX) -c $(CCSHARED) $(CPPFLAGS) $(CXXFLAGS) $(CSHARPCFLAGS) $(SRCDIR_SRCS) $(SRCDIR_CXXSRCS) $(ICXXSRCS) $(INCLUDES) + $(CXXSHARED) $(CXXFLAGS) $(LDFLAGS) $(OBJS) $(IOBJS) $(CSHARP_DLNK) $(LIBS) $(CPP_DLLIBS) -o $(CSHARP_LIBPREFIX)$(TARGET)$(CSHARPSO) # ---------------------------------------------------------------- -# Build a statically linked Perl5 executable +# Compile CSharp files # ---------------------------------------------------------------- -perl5_static: $(SRCDIR_SRCS) - $(SWIG) -perl5 -static -lperlmain.i $(SWIGOPT) -o $(ISRCS) $(INTERFACEPATH) - $(CC) $(CPPFLAGS) $(CFLAGS) $(LDFLAGS) -Dbool=char $(SRCDIR_SRCS) $(ISRCS) $(INCLUDES) -I$(PERL5_INCLUDE) $(PERL5_LIB) $(LIBS) -o $(TARGET) +ifneq (,$(SRCDIR)) +SRCDIR_CSHARPSRCS = $(addprefix $(SRCDIR),$(CSHARPSRCS)) +else +SRCDIR_CSHARPSRCS = +endif -perl5_static_cpp: $(SRCDIR_SRCS) - $(SWIG) -perl5 -c++ -static -lperlmain.i $(SWIGOPT) -o $(ICXXSRCS) $(INTERFACEPATH) - $(CXX) $(CPPFLAGS) $(CXXFLAGS) $(LDFLAGS) $(SRCDIR_SRCS) $(SRCDIR_CXXSRCS) $(ICXXSRCS) $(INCLUDES) -I$(PERL5_INCLUDE) $(PERL5_LIB) $(LIBS) -o $(TARGET) +csharp_compile: $(SRCDIR_SRCS) + $(COMPILETOOL) $(CSHARPCOMPILER) $(CSHARPFLAGS) $(CSHARPOPTIONS) $(CSHARPSRCS) $(SRCDIR_CSHARPSRCS) # ----------------------------------------------------------------- -# Running a Perl5 example +# Run CSharp example # ----------------------------------------------------------------- -perl5_run: - $(RUNTOOL) $(PERL) -I. $(PERL5_SCRIPT) $(RUNPIPE) +csharp_run: + env LD_LIBRARY_PATH=$$PWD $(RUNTOOL) $(CSHARPCILINTERPRETER) $(CSHARPCILINTERPRETER_FLAGS) $(CSHARP_RUNME) $(RUNPIPE) # ----------------------------------------------------------------- # Version display # ----------------------------------------------------------------- -perl5_version: - $(PERL) -v | grep "This is" +# Version check below also works with MS csc.exe which does not understand --version +csharp_version: + $(CSHARPCOMPILER) --version | head -n 1 + if test -n "$(CSHARPCILINTERPRETER)" ; then "$(CSHARPCILINTERPRETER)" --version ; fi # ----------------------------------------------------------------- -# Cleaning the Perl5 examples +# Cleaning the CSharp examples # ----------------------------------------------------------------- -perl5_clean: - rm -f *_wrap* *~ .~* myperl@EXEEXT@ *.pm +csharp_clean: + rm -f *_wrap* *~ .~* $(RUNME) $(RUNME).exe *.exe.mdb gc.log `find . -name \*.cs | grep -v $(RUNME).cs` rm -f core @EXTRA_CLEAN@ - rm -f *.@OBJEXT@ *@SO@ + rm -f *.@OBJEXT@ *@CSHARPSO@ ################################################################## -##### PYTHON ###### +##### D ###### ################################################################## -PYTHON_FLAGS = +DLIBPREFIX = @DLIBPREFIX@ -# Make sure these locate your Python installation -ifneq (,$(PY2)) - PYTHON_INCLUDE= $(DEFS) @PYINCLUDE@ - PYTHON_LIB = @PYLIB@ - PYTHON = @PYTHON@ $(PYTHON_FLAGS) -else - PYTHON_INCLUDE= $(DEFS) @PY3INCLUDE@ - PYTHON_LIB = @PY3LIB@ - PYTHON = @PYTHON3@ $(PYTHON_FLAGS) +ifeq (,$(D_VERSION)) + D_VERSION = @DDEFAULTVERSION@ endif -# Extra Python specific linking options -ifneq (,$(PY2)) - PYTHON_DLNK = @PYTHONDYNAMICLINKING@ - PYTHON_LINK = @PYLINK@ +ifeq (2,$(D_VERSION)) + SWIGD = $(SWIG) -d -d2 + DCOMPILER = @D2COMPILER@ else - PYTHON_DLNK = @PYTHON3DYNAMICLINKING@ - PYTHON_LINK = @PY3LINK@ + SWIGD = $(SWIG) -d + DCOMPILER = @D1COMPILER@ endif -PYTHON_SO = @PYTHON_SO@ -PYCODESTYLE = @PYCODESTYLE@ -PYCODESTYLE_FLAGS = --ignore=E252,E30,E402,E501,E731,W291,W391 +D_RUNME = ./$(RUNME) # ---------------------------------------------------------------- -# Build a C dynamically loadable module +# Build a dynamically loadable D wrapper for a C module # ---------------------------------------------------------------- -python: $(SRCDIR_SRCS) - $(SWIG) -python $(SWIGOPT) -o $(ISRCS) $(INTERFACEPATH) - $(CC) -c $(CCSHARED) $(CPPFLAGS) $(CFLAGS) $(ISRCS) $(SRCDIR_SRCS) $(INCLUDES) $(PYTHON_INCLUDE) - $(LDSHARED) $(CFLAGS) $(LDFLAGS) $(OBJS) $(IOBJS) $(PYTHON_DLNK) $(LIBS) -o $(LIBPREFIX)_$(TARGET)$(PYTHON_SO) - -# ----------------------------------------------------------------- -# Build a C++ dynamically loadable module -# ----------------------------------------------------------------- - -python_cpp: $(SRCDIR_SRCS) - $(SWIG) -python -c++ $(SWIGOPT) -o $(ICXXSRCS) $(INTERFACEPATH) - $(CXX) -c $(CCSHARED) $(CPPFLAGS) $(CXXFLAGS) $(ICXXSRCS) $(SRCDIR_SRCS) $(SRCDIR_CXXSRCS) $(INCLUDES) $(PYTHON_INCLUDE) - $(CXXSHARED) $(CXXFLAGS) $(LDFLAGS) $(OBJS) $(IOBJS) $(PYTHON_DLNK) $(LIBS) $(CPP_DLLIBS) -o $(LIBPREFIX)_$(TARGET)$(PYTHON_SO) +d: $(SRCDIR_SRCS) + $(SWIGD) $(SWIGOPT) -o $(ISRCS) $(INTERFACEPATH) + $(CC) -c $(CCSHARED) $(CPPFLAGS) $(CFLAGS) $(DCFLAGS) $(EXTRA_CFLAGS) $(SRCDIR_SRCS) $(ISRCS) $(INCLUDES) + $(LDSHARED) $(CFLAGS) $(LDFLAGS) $(DCFLAGS) $(EXTRA_LDFLAGS) $(OBJS) $(IOBJS) $(LIBS) -o $(DLIBPREFIX)$(TARGET)$(SO) -# ----------------------------------------------------------------- -# Build statically linked Python interpreter -# -# These should only be used in conjunction with the %include embed.i -# library file -# ----------------------------------------------------------------- +# ---------------------------------------------------------------- +# Build a dynamically loadable D wrapper for a C++ module +# ---------------------------------------------------------------- -#TKINTER = -L/usr/X11R6.3/lib -L/usr/local/compat/lib -ltk4.0 -ltcl7.4 -lX11 -TKINTER = -PYTHON_LIBOPTS = $(PYTHON_LINK) @LIBS@ $(TKINTER) $(SYSLIBS) +d_cpp: $(SRCDIR_SRCS) + $(SWIGD) -c++ $(SWIGOPT) -o $(ICXXSRCS) $(INTERFACEPATH) + $(CXX) -c $(CCSHARED) $(CPPFLAGS) $(CXXFLAGS) $(DCFLAGS) $(EXTRA_CFLAGS) $(SRCDIR_SRCS) $(SRCDIR_CXXSRCS) $(ICXXSRCS) $(INCLUDES) + $(CXXSHARED) $(CXXFLAGS) $(LDFLAGS) $(DCFLAGS) $(EXTRA_LDFLAGS) $(OBJS) $(IOBJS) $(LIBS) $(CPP_DLLIBS) -o $(DLIBPREFIX)$(TARGET)$(SO) -python_static: $(SRCDIR_SRCS) - $(SWIG) -python -lembed.i $(SWIGOPT) -o $(ISRCS) $(INTERFACEPATH) - $(CC) $(CPPFLAGS) $(CFLAGS) $(LDFLAGS) @LINKFORSHARED@ $(ISRCS) $(SRCDIR_SRCS) $(INCLUDES) \ - $(PYTHON_INCLUDE) $(LIBS) -L$(PYTHON_LIB) $(PYTHON_LIBOPTS) -o $(TARGET) +# ---------------------------------------------------------------- +# Compile D files +# ---------------------------------------------------------------- -python_static_cpp: $(SRCDIR_SRCS) - $(SWIG) -python -c++ -lembed.i $(SWIGOPT) -o $(ICXXSRCS) $(INTERFACEPATH) - $(CXX) $(CPPFLAGS) $(CXXFLAGS) $(LDFLAGS) $(ICXXSRCS) $(SRCDIR_SRCS) $(SRCDIR_CXXSRCS) $(INCLUDES) \ - $(PYTHON_INCLUDE) $(LIBS) -L$(PYTHON_LIB) $(PYTHON_LIBOPTS) -o $(TARGET) +# Clear the DFLAGS environment variable for the compiler call itself +# to work around a discrepancy in argument handling between DMD and LDC. +d_compile: $(SRCDIR_SRCS) + DFLAGS="" $(COMPILETOOL) $(DCOMPILER) $(DFLAGS) $(DSRCS) # ----------------------------------------------------------------- -# Running a Python example +# Run D example # ----------------------------------------------------------------- -PYSCRIPT = $(RUNME).py - -python_run: $(PYSCRIPT) -ifneq (,$(PYCODESTYLE)) - $(COMPILETOOL) $(PYCODESTYLE) $(PYCODESTYLE_FLAGS) $(PYSCRIPT) -endif - env PYTHONPATH=$$PWD $(RUNTOOL) $(PYTHON) $(PYSCRIPT) $(RUNPIPE) - -ifneq (,$(SRCDIR)) -$(RUNME).py: $(SRCDIR)$(RUNME).py - cp $< $@ -endif +d_run: + env LD_LIBRARY_PATH=$$PWD $(RUNTOOL) $(D_RUNME) $(RUNPIPE) # ----------------------------------------------------------------- # Version display # ----------------------------------------------------------------- -python_version: - $(PYTHON) -V +d_version: + ($(DCOMPILER) --version 2> /dev/null || $(DCOMPILER)) | head -n 3 # ----------------------------------------------------------------- -# Cleaning the python examples +# Clean the D examples # ----------------------------------------------------------------- -python_clean: - rm -rf __pycache__ - rm -f *_wrap* *~ .~* mypython@EXEEXT@ *.pyc +d_clean: + rm -f *_wrap* *~ .~* $(RUNME) $(RUNME).exe `find . -name \*.d | grep -v $(RUNME).d` rm -f core @EXTRA_CLEAN@ - rm -f *.@OBJEXT@ *@SO@ *$(PYTHON_SO) - rm -f $(TARGET).py - case "x$(SRCDIR)" in x|x./);; *) rm -f $(RUNME).py;; esac - + rm -f *.@OBJEXT@ *@SO@ ################################################################## -##### OCTAVE ###### +##### Go ###### ################################################################## -# Make sure these locate your Octave installation -OCTAVE = @OCTAVE@ -OCTAVE_CXX = $(DEFS) @OCTAVE_CPPFLAGS@ @OCTAVE_CXXFLAGS@ +# TODO: The Go make targets need simplifying to use configure time +# configuration or to use Make's ifeq rather than using lots of +# runtime shell code. The output will then be a lot less verbose. -# Extra Octave specific dynamic linking options -OCTAVE_DLNK = @OCTAVE_LDFLAGS@ -OCTAVE_SO = @OCTAVE_SO@ +GO = @GO@ +GOGCC = @GOGCC@ +GCCGO = @GCCGO@ +GOOPT = @GOOPT@ +GCCGOOPT = @GCCGOOPT@ +GOVERSIONOPTION = @GOVERSIONOPTION@ -OCTAVE_SCRIPT = $(SRCDIR)$(RUNME).m +GOSWIGARG = `if $(GOGCC) ; then echo -gccgo; fi` -# ---------------------------------------------------------------- -# Pre-compile Octave headers, if supported -# ---------------------------------------------------------------- +GOSRCS = $(INTERFACE:.i=.go) +GOCSRCS = $(INTERFACE:.i=_gc.c) -ifeq (yes,$(PCHSUPPORT)) +GOPACKAGE = $(notdir $(INTERFACE:.i=.a)) -octave_precompile_headers: - echo "precompiling $(OCTHEADERS)" - cp -f $(OCTHEADERSSRC) $(OCTHEADERS) - if $(CXX) -c $(CCSHARED) $(CPPFLAGS) $(CXXFLAGS) $(INCLUDES) $(OCTAVE_CXX) $(OCTHEADERS); then \ - : ; \ - else \ - rm -f $(OCTHEADERSGCH); \ - exit 1; \ - fi +GOPATHPARENTDIR = gopath/$(GOMOD)/src +GOPATHDIR = $(GOPATHPARENTDIR)/$(INTERFACE:.i=) -else +# ---------------------------------------------------------------- +# Build a Go module (C) +# ---------------------------------------------------------------- -octave_precompile_headers: - echo "precompiling Octave headers not supported"; exit 1 +$(GOPATHPARENTDIR)/go.mod: + @mkdir gopath 2>/dev/null || true + @mkdir gopath/$(GOMOD) 2>/dev/null || true + @mkdir gopath/$(GOMOD)/src 2>/dev/null || true + @mkdir $(GOPATHDIR) 2>/dev/null || true + echo "module swigtests" > $(GOPATHDIR)/go.mod + echo "" >> $(GOPATHDIR)/go.mod + echo "go 1.12" >> $(GOPATHDIR)/go.mod + mv -f $(GOPATHDIR)/go.mod $(GOPATHPARENTDIR)/go.mod -endif +go: $(SRCDIR_SRCS) $(GOPATHPARENTDIR)/go.mod + $(SWIG) -go -import-prefix swigtests $(GOOPT) $(GOSWIGARG) $(SWIGOPT) -o $(ISRCS) $(INTERFACEPATH) + @mkdir gopath 2>/dev/null || true + @mkdir gopath/$(GOMOD) 2>/dev/null || true + @mkdir gopath/$(GOMOD)/src 2>/dev/null || true + @mkdir $(GOPATHDIR) 2>/dev/null || true + rm -rf $(GOPATHDIR)/* + cp $(ISRCS) $(GOPATHDIR)/ + if test -f $(IWRAP:.i=.h); then \ + cp $(IWRAP:.i=.h) $(GOPATHDIR)/; \ + fi + if test -n "$(SRCDIR_SRCS)"; then \ + cp $(SRCDIR_SRCS) $(GOPATHDIR)/; \ + fi + cp $(GOSRCS) $(GOPATHDIR)/ + @if test -f $(SRCDIR)$(RUNME).go; then \ + mkdir gopath/$(GOMOD)/src/runme 2>/dev/null || true; \ + rm -f gopath/$(GOMOD)/src/runme/*; \ + fi + if test -f $(SRCDIR)$(RUNME).go; then \ + cp $(SRCDIR)$(RUNME).go gopath/$(GOMOD)/src/runme/; \ + fi + GOPATH=`pwd`/gopath/$(GOMOD); \ + export GOPATH; \ + CGO_CPPFLAGS="$(CPPFLAGS) $(INCLUDES) -I `cd $(SRCDIR) && pwd` -I `pwd`"; \ + export CGO_CPPFLAGS; \ + CGO_CFLAGS="$(CFLAGS)"; \ + export CGO_CFLAGS; \ + CGO_LDFLAGS="$(LDFLAGS) -lm"; \ + export CGO_LDFLAGS; \ + (cd $(GOPATHDIR)/ && $(COMPILETOOL) $(GO) build `if $(GOGCC); then echo -compiler=gccgo; fi` -o $(GOPACKAGE)); \ + stat=$$?; \ + if test $$stat != 0; then \ + exit $$stat; \ + fi; \ + if $(GOGCC); then \ + cp $(GOPATHDIR)/$(GOPACKAGE) $(GOPATHDIR)/$(GOPACKAGE:.a=.gox); \ + fi; \ + if test -f $(SRCDIR)$(RUNME).go; then \ + mkdir gopath/$(GOMOD)/src/swigtests 2>/dev/null || true; \ + mkdir gopath/$(GOMOD)/src/swigtests/$(INTERFACE:.i=) 2>/dev/null || true; \ + cp $(GOPATHDIR)/* gopath/$(GOMOD)/src/swigtests/$(INTERFACE:.i=)/; \ + (cd gopath/$(GOMOD)/src/runme && $(COMPILETOOL) $(GO) build `if $(GOGCC); then echo -compiler=gccgo; fi` -o runme $(RUNME).go); \ + stat=$$?; \ + if test $$stat != 0; then \ + exit $$stat; \ + fi; \ + cp gopath/$(GOMOD)/src/runme/runme $(RUNME); \ + fi # ---------------------------------------------------------------- -# Build a C dynamically loadable module -# Note: Octave requires C++ compiler when compiling C wrappers +# Build a Go module (C++) # ---------------------------------------------------------------- -octave: $(SRCDIR_SRCS) - $(SWIG) -octave $(SWIGOCTHDROPT) $(SWIGOPT) -o $(ICXXSRCS) $(INTERFACEPATH) - $(CXX) -g -c $(IOCTHEADERS) $(CCSHARED) $(CPPFLAGS) $(CXXFLAGS) $(ICXXSRCS) $(INCLUDES) $(OCTAVE_CXX) - $(CC) -g -c $(CCSHARED) $(CPPFLAGS) $(CFLAGS) $(SRCDIR_SRCS) $(SRCDIR_CSRCS) $(INCLUDES) - $(LDSHARED) $(CFLAGS) $(LDFLAGS) $(OBJS) $(IOBJS) $(OCTAVE_DLNK) $(LIBS) -o $(LIBPREFIX)$(TARGET)$(OCTAVE_SO) - -# ----------------------------------------------------------------- -# Build a C++ dynamically loadable module -# ----------------------------------------------------------------- - -octave_cpp: $(SRCDIR_SRCS) - $(SWIG) -c++ -octave $(SWIGOCTHDROPT) $(SWIGOPT) -o $(ICXXSRCS) $(INTERFACEPATH) - $(CXX) -g -c $(IOCTHEADERS) $(CCSHARED) $(CPPFLAGS) $(CXXFLAGS) $(ICXXSRCS) $(SRCDIR_SRCS) $(SRCDIR_CXXSRCS) $(INCLUDES) $(OCTAVE_CXX) - $(CXXSHARED) -g $(CXXFLAGS) $(LDFLAGS) $(OBJS) $(IOBJS) $(OCTAVE_DLNK) $(LIBS) $(CPP_DLLIBS) -o $(LIBPREFIX)$(TARGET)$(OCTAVE_SO) +go_cpp: $(SRCDIR_SRCS) $(GOPATHPARENTDIR)/go.mod + $(SWIG) -go -c++ -import-prefix swigtests $(GOOPT) $(GOSWIGARG) $(SWIGOPT) -o $(ICXXSRCS) $(INTERFACEPATH) + @mkdir gopath 2>/dev/null || true + @mkdir gopath/$(GOMOD) 2>/dev/null || true + @mkdir gopath/$(GOMOD)/src 2>/dev/null || true + @mkdir $(GOPATHDIR) 2>/dev/null || true + rm -rf $(GOPATHDIR)/* + cp $(ICXXSRCS) $(GOPATHDIR)/ + if test -f $(IWRAP:.i=.h); then \ + cp $(IWRAP:.i=.h) $(GOPATHDIR)/; \ + fi + if test -n "$(SRCDIR_CXXSRCS)"; then \ + cp $(SRCDIR_CXXSRCS) $(GOPATHDIR)/; \ + fi + if test -n "$(SRCDIR_SRCS)"; then \ + cp $(SRCDIR_SRCS) $(GOPATHDIR)/; \ + fi + cp $(GOSRCS) $(GOPATHDIR)/ + @if test -f $(SRCDIR)$(RUNME).go; then \ + mkdir gopath/$(GOMOD)/src/runme 2>/dev/null || true; \ + rm -f gopath/$(GOMOD)/src/runme/*; \ + fi + if test -f $(SRCDIR)$(RUNME).go; then \ + cp $(SRCDIR)$(RUNME).go gopath/$(GOMOD)/src/runme/; \ + fi + GOPATH=`pwd`/gopath/$(GOMOD); \ + export GOPATH; \ + CGO_CPPFLAGS="$(CPPFLAGS) $(INCLUDES) -I `cd $(SRCDIR) && pwd` -I `pwd`"; \ + export CGO_CPPFLAGS; \ + CGO_CFLAGS="$(CFLAGS)"; \ + export CGO_CFLAGS; \ + CGO_CXXFLAGS="$(CXXFLAGS)"; \ + export CGO_CXXFLAGS; \ + CGO_LDFLAGS="$(LDFLAGS) -lm"; \ + export CGO_LDFLAGS; \ + (cd $(GOPATHDIR) && $(COMPILETOOL) $(GO) build `if $(GOGCC); then echo -compiler=gccgo; fi` -o $(GOPACKAGE)); \ + stat=$$?; \ + if test $$stat != 0; then \ + exit $$stat; \ + fi; \ + if $(GOGCC); then \ + cp $(GOPATHDIR)/$(GOPACKAGE) $(GOPATHDIR)/$(GOPACKAGE:.a=.gox); \ + fi; \ + if test -f $(SRCDIR)$(RUNME).go; then \ + mkdir gopath/$(GOMOD)/src/swigtests 2>/dev/null || true; \ + mkdir gopath/$(GOMOD)/src/swigtests/$(INTERFACE:.i=) 2>/dev/null || true; \ + cp $(GOPATHDIR)/* gopath/$(GOMOD)/src/swigtests/$(INTERFACE:.i=)/; \ + (cd gopath/$(GOMOD)/src/runme && $(COMPILETOOL) $(GO) build `if $(GOGCC); then echo -compiler=gccgo; fi` -o runme $(RUNME).go); \ + stat=$$?; \ + if test $$stat != 0; then \ + exit $$stat; \ + fi; \ + cp gopath/$(GOMOD)/src/runme/runme $(RUNME); \ + fi # ----------------------------------------------------------------- -# Running an Octave example +# Running Go example # ----------------------------------------------------------------- -octave_run: - env OCTAVE_PATH= OCTAVE_HISTFILE=/dev/null $(RUNTOOL) $(OCTAVE) $(OCTAVE_SCRIPT) $(RUNPIPE) +go_run: + env $(RUNTOOL) ./$(RUNME) $(RUNPIPE) # ----------------------------------------------------------------- # Version display # ----------------------------------------------------------------- -octave_version: - $(OCTAVE) --version | head -n 1 +go_version: + $(GO) $(GOVERSIONOPTION) # ----------------------------------------------------------------- -# Cleaning the Octave examples +# Cleaning the Go examples # ----------------------------------------------------------------- -octave_clean: - rm -rf __pycache__ - rm -f *_wrap* *~ .~* myoctave@EXEEXT@ *.pyc +go_clean: + rm -f *_wrap* *_gc* *.gox .~* $(RUNME) $(GOSRCS) + rm -rf gopath rm -f core @EXTRA_CLEAN@ - rm -f *.@OBJEXT@ *@SO@ *$(OCTAVE_SO) - rm -f $(OCTHEADERS) $(OCTHEADERSGCH) + rm -f *.@OBJEXT@ *.[568] *.a *@SO@ ################################################################## ##### GUILE ###### @@ -759,59 +825,86 @@ javascript_clean: cd $(ROOT_DIR)/Tools/javascript && $(MAKE) -s clean ################################################################## -##### ANDROID ###### +##### LUA ###### ################################################################## -ANDROID = @ANDROID@ -ANDROID_NDK_BUILD = @NDKBUILD@ -ANDROID_ADB = @ADB@ -ANT = @ANT@ -TARGETID = 1 +# lua flags +LUA_INCLUDE= @LUAFLAGS@ +LUA_LIB = @LUALINK@ -# ---------------------------------------------------------------- -# Build an Android dynamically loadable module (C) -# ---------------------------------------------------------------- +# Extra specific dynamic linking options +LUA_DLNK = @LUADYNAMICLINKING@ +LUA_SO = @LUA_SO@ -android: $(SRCDIR_SRCS) - $(ANDROID) $(SILENT_OPTION) update project --target $(TARGETID) --name $(PROJECTNAME) --path . - $(SWIG) -java $(SWIGOPT) -o $(INTERFACEDIR)$(TARGET)_wrap.c $(INTERFACEPATH) - +$(ANDROID_NDK_BUILD) $(SILENT_PIPE) - $(ANT) $(ANT_QUIET) debug +LUA = @LUABIN@ +LUA_SCRIPT = $(SRCDIR)$(RUNME).lua + +# Extra code for lua static link +LUA_INTERP = ../lua.c # ---------------------------------------------------------------- -# Build an Android dynamically loadable module (C++) +# Build a C dynamically loadable module # ---------------------------------------------------------------- -android_cpp: $(SRCDIR_SRCS) - $(ANDROID) $(SILENT_OPTION) update project --target $(TARGETID) --name $(PROJECTNAME) --path . - $(SWIG) -java -c++ $(SWIGOPT) -o $(INTERFACEDIR)$(TARGET)_wrap.cpp $(INTERFACEPATH) - +$(ANDROID_NDK_BUILD) $(SILENT_PIPE) - $(ANT) $(ANT_QUIET) debug +lua: $(SRCDIR_SRCS) + $(SWIG) -lua $(SWIGOPT) -o $(ISRCS) $(INTERFACEPATH) + $(CC) -c $(CCSHARED) $(CPPFLAGS) $(CFLAGS) $(ISRCS) $(SRCDIR_SRCS) $(INCLUDES) $(LUA_INCLUDE) + $(LDSHARED) $(CFLAGS) $(LDFLAGS) $(OBJS) $(IOBJS) $(LIBS) $(LUA_LIB) -o $(LIBPREFIX)$(TARGET)$(LUA_SO) -# ---------------------------------------------------------------- -# Android install -# ---------------------------------------------------------------- +# ----------------------------------------------------------------- +# Build a C++ dynamically loadable module +# ----------------------------------------------------------------- -android_install: - -$(ANDROID_ADB) uninstall $(PACKAGENAME) - $(ANDROID_ADB) install $(INSTALLOPTIONS) bin/$(PROJECTNAME)-debug.apk +lua_cpp: $(SRCDIR_SRCS) $(GENCXXSRCS) + $(SWIG) -c++ -lua $(SWIGOPT) -o $(ICXXSRCS) $(INTERFACEPATH) + $(CXX) -c $(CCSHARED) $(CPPFLAGS) $(CXXFLAGS) $(ICXXSRCS) $(SRCDIR_SRCS) $(SRCDIR_CXXSRCS) $(GENCXXSRCS) $(INCLUDES) $(LUA_INCLUDE) + $(CXXSHARED) $(CXXFLAGS) $(LDFLAGS) $(OBJS) $(IOBJS) $(LIBS) $(LUA_LIB) $(CPP_DLLIBS) -o $(LIBPREFIX)$(TARGET)$(LUA_SO) + +lua_externalhdr: + $(SWIG) -lua -external-runtime $(TARGET) + +lua_swig_cpp: + $(SWIG) -c++ -lua $(SWIGOPT) -o $(ICXXSRCS) $(INTERFACEPATH) + +# ----------------------------------------------------------------- +# Build statically linked Lua interpreter +# ----------------------------------------------------------------- + +lua_static: $(SRCDIR_SRCS) + $(SWIG) -lua -module example $(SWIGOPT) -o $(ISRCS) $(INTERFACEPATH) + $(CC) $(CPPFLAGS) $(CFLAGS) $(LDFLAGS) $(ISRCS) $(SRCDIR_SRCS) $(SRCDIR)$(LUA_INTERP) $(INCLUDES) \ + $(LUA_INCLUDE) $(LIBS) $(LUA_LIB) -o $(TARGET) + +lua_static_cpp: $(SRCDIR_SRCS) $(GENCXXSRCS) + $(SWIG) -c++ -lua -module example $(SWIGOPT) -o $(ICXXSRCS) $(INTERFACEPATH) + $(CXX) $(CPPFLAGS) $(CXXFLAGS) $(LDFLAGS) $(ICXXSRCS) $(SRCDIR_SRCS) $(SRCDIR_CXXSRCS) $(GENCXXSRCS) $(SRCDIR)$(LUA_INTERP) $(INCLUDES) \ + $(LUA_INCLUDE) $(LIBS) $(LUA_LIB) -o $(TARGET) + +# ----------------------------------------------------------------- +# Run Lua example +# ----------------------------------------------------------------- + +lua_run: + $(RUNTOOL) $(LUA) $(LUA_SCRIPT) $(RUNPIPE) + +lua_embed_run: + $(RUNTOOL) ./$(TARGET) $(LUA_SCRIPT) $(RUNPIPE) # ----------------------------------------------------------------- # Version display # ----------------------------------------------------------------- -android_version: - $(ANDROID_ADB) version +lua_version: + $(LUA) -v | head -n 1 # ----------------------------------------------------------------- -# Cleaning the Android examples +# Cleaning the lua examples # ----------------------------------------------------------------- -android_clean: - test -n "$(SRCDIR)" && cd $(SRCDIR) ; $(ANT) -q -logfile /dev/null clean - rm -f $(INTERFACEDIR)$(TARGET)_wrap.* - rm -f `find $(PACKAGEDIR) -name \*.java | grep -v $(PROJECTNAME).java` - rm -rf obj +lua_clean: + rm -f *_wrap* *~ .~* mylua@EXEEXT@ + rm -f core @EXTRA_CLEAN@ + rm -f *.@OBJEXT@ *$(LUA_SO) ################################################################## ##### MZSCHEME ###### @@ -862,7 +955,7 @@ mzscheme_clean: rm -f *.@OBJEXT@ *$(MZSCHEME_SO) ################################################################## -##### Ocaml ##### +##### OCAML ###### ################################################################## OCC=$(COMPILETOOL) @OCAMLC@ @@ -966,77 +1059,166 @@ ocaml_clean: rm -rf ./localtmp ################################################################## -##### RUBY ###### +##### OCTAVE ###### ################################################################## -# Make sure these locate your Ruby installation -RUBY_CFLAGS= @RUBYCCDLFLAGS@ $(DEFS) -RUBY_INCLUDE= @RUBYINCLUDE@ -RUBY_LIB = @RUBYLIB@ -RUBY_DLNK = @RUBYDYNAMICLINKING@ -RUBY_LIBOPTS = @RUBYLINK@ @LIBS@ $(SYSLIBS) -RUBY_SO = @RUBYSO@ -RUBY = @RUBY@ -RUBY_SCRIPT = $(SRCDIR)$(RUNME).rb +# Make sure these locate your Octave installation +OCTAVE = @OCTAVE@ +OCTAVE_CXX = $(DEFS) @OCTAVE_CPPFLAGS@ @OCTAVE_CXXFLAGS@ + +# Extra Octave specific dynamic linking options +OCTAVE_DLNK = @OCTAVE_LDFLAGS@ +OCTAVE_SO = @OCTAVE_SO@ +OCTAVE_SCRIPT = $(SRCDIR)$(RUNME).m + +# ---------------------------------------------------------------- +# Pre-compile Octave headers, if supported +# ---------------------------------------------------------------- + +ifeq (yes,$(PCHSUPPORT)) + +octave_precompile_headers: + echo "precompiling $(OCTHEADERS)" + cp -f $(OCTHEADERSSRC) $(OCTHEADERS) + if $(CXX) -c $(CCSHARED) $(CPPFLAGS) $(CXXFLAGS) $(INCLUDES) $(OCTAVE_CXX) $(OCTHEADERS); then \ + : ; \ + else \ + rm -f $(OCTHEADERSGCH); \ + exit 1; \ + fi + +else + +octave_precompile_headers: + echo "precompiling Octave headers not supported"; exit 1 + +endif # ---------------------------------------------------------------- # Build a C dynamically loadable module +# Note: Octave requires C++ compiler when compiling C wrappers # ---------------------------------------------------------------- -ruby: $(SRCDIR_SRCS) - $(SWIG) -ruby $(SWIGOPT) -o $(ISRCS) $(INTERFACEPATH) - $(CC) -c $(CCSHARED) $(CPPFLAGS) $(CFLAGS) $(RUBY_CFLAGS) $(ISRCS) $(SRCDIR_SRCS) $(INCLUDES) $(RUBY_INCLUDE) - $(LDSHARED) $(CFLAGS) $(LDFLAGS) $(OBJS) $(IOBJS) $(RUBY_DLNK) $(LIBS) -o $(LIBPREFIX)$(TARGET)$(RUBY_SO) +octave: $(SRCDIR_SRCS) + $(SWIG) -octave $(SWIGOCTHDROPT) $(SWIGOPT) -o $(ICXXSRCS) $(INTERFACEPATH) + $(CXX) -g -c $(IOCTHEADERS) $(CCSHARED) $(CPPFLAGS) $(CXXFLAGS) $(ICXXSRCS) $(INCLUDES) $(OCTAVE_CXX) + $(CC) -g -c $(CCSHARED) $(CPPFLAGS) $(CFLAGS) $(SRCDIR_SRCS) $(SRCDIR_CSRCS) $(INCLUDES) + $(LDSHARED) $(CFLAGS) $(LDFLAGS) $(OBJS) $(IOBJS) $(OCTAVE_DLNK) $(LIBS) -o $(LIBPREFIX)$(TARGET)$(OCTAVE_SO) # ----------------------------------------------------------------- # Build a C++ dynamically loadable module # ----------------------------------------------------------------- -ruby_cpp: $(SRCDIR_SRCS) - $(SWIG) -c++ -ruby $(SWIGOPT) -o $(ICXXSRCS) $(INTERFACEPATH) - $(CXX) -c $(CCSHARED) $(CPPFLAGS) $(CXXFLAGS) $(RUBY_CFLAGS) $(ICXXSRCS) $(SRCDIR_SRCS) $(SRCDIR_CXXSRCS) $(INCLUDES) $(RUBY_INCLUDE) - $(CXXSHARED) $(CXXFLAGS) $(LDFLAGS) $(OBJS) $(IOBJS) $(RUBY_DLNK) $(LIBS) $(CPP_DLLIBS) -o $(LIBPREFIX)$(TARGET)$(RUBY_SO) +octave_cpp: $(SRCDIR_SRCS) + $(SWIG) -c++ -octave $(SWIGOCTHDROPT) $(SWIGOPT) -o $(ICXXSRCS) $(INTERFACEPATH) + $(CXX) -g -c $(IOCTHEADERS) $(CCSHARED) $(CPPFLAGS) $(CXXFLAGS) $(ICXXSRCS) $(SRCDIR_SRCS) $(SRCDIR_CXXSRCS) $(INCLUDES) $(OCTAVE_CXX) + $(CXXSHARED) -g $(CXXFLAGS) $(LDFLAGS) $(OBJS) $(IOBJS) $(OCTAVE_DLNK) $(LIBS) $(CPP_DLLIBS) -o $(LIBPREFIX)$(TARGET)$(OCTAVE_SO) # ----------------------------------------------------------------- -# Build statically linked Ruby interpreter -# -# These should only be used in conjunction with the %include embed.i -# library file +# Running an Octave example # ----------------------------------------------------------------- -ruby_static: $(SRCDIR_SRCS) - $(SWIG) -ruby -lembed.i $(SWIGOPT) -o $(ISRCS) $(INTERFACEPATH) - $(CC) $(CPPFLAGS) $(CFLAGS) $(LDFLAGS) $(RUBY_CFLAGS) @LINKFORSHARED@ $(ISRCS) $(SRCDIR_SRCS) $(INCLUDES) \ - $(RUBY_INCLUDE) $(LIBS) -L$(RUBY_LIB) $(RUBY_LIBOPTS) -o $(TARGET) +octave_run: + env OCTAVE_PATH= OCTAVE_HISTFILE=/dev/null $(RUNTOOL) $(OCTAVE) $(OCTAVE_SCRIPT) $(RUNPIPE) -ruby_cpp_static: $(SRCDIR_SRCS) - $(SWIG) -c++ -ruby -lembed.i $(SWIGOPT) -o $(ICXXSRCS) $(INTERFACEPATH) - $(CXX) $(CPPFLAGS) $(CXXFLAGS) $(LDFLAGS) $(RUBY_CFLAGS) $(ICXXSRCS) $(SRCDIR_SRCS) $(SRCDIR_CXXSRCS) $(INCLUDES) \ - $(RUBY_INCLUDE) $(LIBS) -L$(RUBY_LIB) $(RUBY_LIBOPTS) -o $(TARGET) +# ----------------------------------------------------------------- +# Version display +# ----------------------------------------------------------------- + +octave_version: + $(OCTAVE) --version | head -n 1 # ----------------------------------------------------------------- -# Run Ruby example +# Cleaning the Octave examples # ----------------------------------------------------------------- -ruby_run: - $(RUNTOOL) $(RUBY) $(RUBYFLAGS) -I. $(RUBY_SCRIPT) $(RUNPIPE) +octave_clean: + rm -rf __pycache__ + rm -f *_wrap* *~ .~* myoctave@EXEEXT@ *.pyc + rm -f core @EXTRA_CLEAN@ + rm -f *.@OBJEXT@ *@SO@ *$(OCTAVE_SO) + rm -f $(OCTHEADERS) $(OCTHEADERSGCH) + +################################################################## +##### PERL 5 ###### +################################################################## + +# You need to set this variable to the Perl5 directory containing the +# files "perl.h", "EXTERN.h" and "XSUB.h". With Perl5.003, it's +# usually something like /usr/local/lib/perl5/arch-osname/5.003/CORE. + +PERL5_INCLUDE= @PERL5EXT@ + +# Extra Perl specific dynamic linking options +PERL5_DLNK = @PERL5DYNAMICLINKING@ +PERL5_CCFLAGS = @PERL5CCFLAGS@ +PERL5_CCDLFLAGS = @PERL5CCDLFLAGS@ +PERL5_CCCDLFLAGS = @PERL5CCCDLFLAGS@ +PERL5_LDFLAGS = @PERL5LDFLAGS@ +PERL = @PERL@ +PERL5_LIB = -L$(PERL5_INCLUDE) -l@PERL5LIB@ @LIBS@ $(SYSLIBS) +PERL5_SCRIPT = $(SRCDIR)$(RUNME).pl + +# ---------------------------------------------------------------- +# Build a Perl5 dynamically loadable module (C) +# ---------------------------------------------------------------- + +perl5: $(SRCDIR_SRCS) + $(SWIG) -perl5 $(SWIGOPT) -o $(ISRCS) $(INTERFACEPATH) + $(CC) -c -Dbool=char $(CCSHARED) $(CPPFLAGS) $(CFLAGS) $(SRCDIR_SRCS) $(ISRCS) $(INCLUDES) $(PERL5_CCFLAGS) $(PERL5_CCCDLFLAGS) -I$(PERL5_INCLUDE) + $(LDSHARED) $(CFLAGS) $(LDFLAGS) $(PERL5_CCDLFLAGS) $(OBJS) $(IOBJS) $(PERL5_LDFLAGS) $(PERL5_DLNK) $(LIBS) -o $(LIBPREFIX)$(TARGET)$(SO) + +# ---------------------------------------------------------------- +# Build a Perl5 dynamically loadable module (C++) +# ---------------------------------------------------------------- + +perl5_cpp: $(SRCDIR_SRCS) + $(SWIG) -perl5 -c++ $(SWIGOPT) -o $(ICXXSRCS) $(INTERFACEPATH) + $(CXX) -c $(CCSHARED) $(CPPFLAGS) $(CXXFLAGS) $(SRCDIR_SRCS) $(SRCDIR_CXXSRCS) $(ICXXSRCS) $(INCLUDES) $(PERL5_CCFLAGS) $(PERL5_CCCDLFLAGS) -I$(PERL5_INCLUDE) + $(CXXSHARED) $(CXXFLAGS) $(LDFLAGS) $(PERL5_CCDLFLAGS) $(OBJS) $(IOBJS) $(PERL5_LDFLAGS) $(PERL5_DLNK) $(LIBS) $(CPP_DLLIBS) -o $(LIBPREFIX)$(TARGET)$(SO) + +# ---------------------------------------------------------------- +# Build a module from existing XS C source code. (ie. from xsubpp). +# ---------------------------------------------------------------- +perl5_xs: $(SRCDIR_SRCS) + $(CC) -c $(CCSHARED) $(CPPFLAGS) $(CFLAGS) $(SRCDIR_SRCS) $(INCLUDES) -I$(PERL5_INCLUDE) + $(LDSHARED) $(CFLAGS) $(LDFLAGS) $(OBJS) $(LIBS) -o $(TARGET)$(SO) + +# ---------------------------------------------------------------- +# Build a statically linked Perl5 executable +# ---------------------------------------------------------------- + +perl5_static: $(SRCDIR_SRCS) + $(SWIG) -perl5 -static -lperlmain.i $(SWIGOPT) -o $(ISRCS) $(INTERFACEPATH) + $(CC) $(CPPFLAGS) $(CFLAGS) $(LDFLAGS) -Dbool=char $(SRCDIR_SRCS) $(ISRCS) $(INCLUDES) -I$(PERL5_INCLUDE) $(PERL5_LIB) $(LIBS) -o $(TARGET) + +perl5_static_cpp: $(SRCDIR_SRCS) + $(SWIG) -perl5 -c++ -static -lperlmain.i $(SWIGOPT) -o $(ICXXSRCS) $(INTERFACEPATH) + $(CXX) $(CPPFLAGS) $(CXXFLAGS) $(LDFLAGS) $(SRCDIR_SRCS) $(SRCDIR_CXXSRCS) $(ICXXSRCS) $(INCLUDES) -I$(PERL5_INCLUDE) $(PERL5_LIB) $(LIBS) -o $(TARGET) + +# ----------------------------------------------------------------- +# Running a Perl5 example +# ----------------------------------------------------------------- + +perl5_run: + $(RUNTOOL) $(PERL) -I. $(PERL5_SCRIPT) $(RUNPIPE) # ----------------------------------------------------------------- # Version display # ----------------------------------------------------------------- -ruby_version: - $(RUBY) -v +perl5_version: + $(PERL) -v | grep "This is" # ----------------------------------------------------------------- -# Cleaning the Ruby examples +# Cleaning the Perl5 examples # ----------------------------------------------------------------- -ruby_clean: - rm -f *_wrap* *~ .~* myruby@EXEEXT@ +perl5_clean: + rm -f *_wrap* *~ .~* myperl@EXEEXT@ *.pm rm -f core @EXTRA_CLEAN@ - rm -f *.@OBJEXT@ *$(RUBY_SO) + rm -f *.@OBJEXT@ *@SO@ ################################################################## ##### PHP ###### @@ -1090,201 +1272,112 @@ php_clean: rm -f *.@OBJEXT@ *$(PHP_SO) ################################################################## -##### CSHARP ###### +##### PYTHON ###### ################################################################## -# Extra CSharp specific dynamic linking options -CSHARP_DLNK = @CSHARPDYNAMICLINKING@ -CSHARP_LIBPREFIX = @CSHARPLIBRARYPREFIX@ -CSHARPCOMPILER = @CSHARPCOMPILER@ -CSHARPCILINTERPRETER = @CSHARPCILINTERPRETER@ -CSHARPCILINTERPRETER_FLAGS = @CSHARPCILINTERPRETER_FLAGS@ -CSHARPCFLAGS = @CSHARPCFLAGS@ -CSHARPFLAGS = -CSHARPOPTIONS = -CSHARPSO = @CSHARPSO@ -CSHARP_RUNME = ./$(RUNME).exe - -# ---------------------------------------------------------------- -# Build a CSharp dynamically loadable module (C) -# ---------------------------------------------------------------- - -csharp: $(SRCDIR_SRCS) - $(SWIG) -csharp $(SWIGOPT) -o $(ISRCS) $(INTERFACEPATH) - $(CC) -c $(CCSHARED) $(CPPFLAGS) $(CFLAGS) $(CSHARPCFLAGS) $(SRCDIR_SRCS) $(ISRCS) $(INCLUDES) - $(LDSHARED) $(CFLAGS) $(LDFLAGS) $(OBJS) $(IOBJS) $(CSHARP_DLNK) $(LIBS) -o $(CSHARP_LIBPREFIX)$(TARGET)$(CSHARPSO) - -# ---------------------------------------------------------------- -# Build a CSharp dynamically loadable module (C++) -# ---------------------------------------------------------------- - -csharp_cpp: $(SRCDIR_SRCS) - $(SWIG) -csharp -c++ $(SWIGOPT) -o $(ICXXSRCS) $(INTERFACEPATH) - $(CXX) -c $(CCSHARED) $(CPPFLAGS) $(CXXFLAGS) $(CSHARPCFLAGS) $(SRCDIR_SRCS) $(SRCDIR_CXXSRCS) $(ICXXSRCS) $(INCLUDES) - $(CXXSHARED) $(CXXFLAGS) $(LDFLAGS) $(OBJS) $(IOBJS) $(CSHARP_DLNK) $(LIBS) $(CPP_DLLIBS) -o $(CSHARP_LIBPREFIX)$(TARGET)$(CSHARPSO) - -# ---------------------------------------------------------------- -# Compile CSharp files -# ---------------------------------------------------------------- +PYTHON_FLAGS = -ifneq (,$(SRCDIR)) -SRCDIR_CSHARPSRCS = $(addprefix $(SRCDIR),$(CSHARPSRCS)) +# Make sure these locate your Python installation +ifneq (,$(PY2)) + PYTHON_INCLUDE= $(DEFS) @PYINCLUDE@ + PYTHON_LIB = @PYLIB@ + PYTHON = @PYTHON@ $(PYTHON_FLAGS) else -SRCDIR_CSHARPSRCS = + PYTHON_INCLUDE= $(DEFS) @PY3INCLUDE@ + PYTHON_LIB = @PY3LIB@ + PYTHON = @PYTHON3@ $(PYTHON_FLAGS) endif -csharp_compile: $(SRCDIR_SRCS) - $(COMPILETOOL) $(CSHARPCOMPILER) $(CSHARPFLAGS) $(CSHARPOPTIONS) $(CSHARPSRCS) $(SRCDIR_CSHARPSRCS) - -# ----------------------------------------------------------------- -# Run CSharp example -# ----------------------------------------------------------------- - -csharp_run: - env LD_LIBRARY_PATH=$$PWD $(RUNTOOL) $(CSHARPCILINTERPRETER) $(CSHARPCILINTERPRETER_FLAGS) $(CSHARP_RUNME) $(RUNPIPE) - -# ----------------------------------------------------------------- -# Version display -# ----------------------------------------------------------------- - -# Version check below also works with MS csc.exe which does not understand --version -csharp_version: - $(CSHARPCOMPILER) --version | head -n 1 - if test -n "$(CSHARPCILINTERPRETER)" ; then "$(CSHARPCILINTERPRETER)" --version ; fi - -# ----------------------------------------------------------------- -# Cleaning the CSharp examples -# ----------------------------------------------------------------- - -csharp_clean: - rm -f *_wrap* *~ .~* $(RUNME) $(RUNME).exe *.exe.mdb gc.log `find . -name \*.cs | grep -v $(RUNME).cs` - rm -f core @EXTRA_CLEAN@ - rm -f *.@OBJEXT@ *@CSHARPSO@ - -################################################################## -##### LUA ###### -################################################################## - -# lua flags -LUA_INCLUDE= @LUAFLAGS@ -LUA_LIB = @LUALINK@ - -# Extra specific dynamic linking options -LUA_DLNK = @LUADYNAMICLINKING@ -LUA_SO = @LUA_SO@ - -LUA = @LUABIN@ -LUA_SCRIPT = $(SRCDIR)$(RUNME).lua +# Extra Python specific linking options +ifneq (,$(PY2)) + PYTHON_DLNK = @PYTHONDYNAMICLINKING@ + PYTHON_LINK = @PYLINK@ +else + PYTHON_DLNK = @PYTHON3DYNAMICLINKING@ + PYTHON_LINK = @PY3LINK@ +endif +PYTHON_SO = @PYTHON_SO@ -# Extra code for lua static link -LUA_INTERP = ../lua.c +PYCODESTYLE = @PYCODESTYLE@ +PYCODESTYLE_FLAGS = --ignore=E252,E30,E402,E501,E731,W291,W391 # ---------------------------------------------------------------- # Build a C dynamically loadable module # ---------------------------------------------------------------- -lua: $(SRCDIR_SRCS) - $(SWIG) -lua $(SWIGOPT) -o $(ISRCS) $(INTERFACEPATH) - $(CC) -c $(CCSHARED) $(CPPFLAGS) $(CFLAGS) $(ISRCS) $(SRCDIR_SRCS) $(INCLUDES) $(LUA_INCLUDE) - $(LDSHARED) $(CFLAGS) $(LDFLAGS) $(OBJS) $(IOBJS) $(LIBS) $(LUA_LIB) -o $(LIBPREFIX)$(TARGET)$(LUA_SO) +python: $(SRCDIR_SRCS) + $(SWIG) -python $(SWIGOPT) -o $(ISRCS) $(INTERFACEPATH) + $(CC) -c $(CCSHARED) $(CPPFLAGS) $(CFLAGS) $(ISRCS) $(SRCDIR_SRCS) $(INCLUDES) $(PYTHON_INCLUDE) + $(LDSHARED) $(CFLAGS) $(LDFLAGS) $(OBJS) $(IOBJS) $(PYTHON_DLNK) $(LIBS) -o $(LIBPREFIX)_$(TARGET)$(PYTHON_SO) # ----------------------------------------------------------------- # Build a C++ dynamically loadable module # ----------------------------------------------------------------- -lua_cpp: $(SRCDIR_SRCS) $(GENCXXSRCS) - $(SWIG) -c++ -lua $(SWIGOPT) -o $(ICXXSRCS) $(INTERFACEPATH) - $(CXX) -c $(CCSHARED) $(CPPFLAGS) $(CXXFLAGS) $(ICXXSRCS) $(SRCDIR_SRCS) $(SRCDIR_CXXSRCS) $(GENCXXSRCS) $(INCLUDES) $(LUA_INCLUDE) - $(CXXSHARED) $(CXXFLAGS) $(LDFLAGS) $(OBJS) $(IOBJS) $(LIBS) $(LUA_LIB) $(CPP_DLLIBS) -o $(LIBPREFIX)$(TARGET)$(LUA_SO) - -lua_externalhdr: - $(SWIG) -lua -external-runtime $(TARGET) - -lua_swig_cpp: - $(SWIG) -c++ -lua $(SWIGOPT) -o $(ICXXSRCS) $(INTERFACEPATH) - -# ----------------------------------------------------------------- -# Build statically linked Lua interpreter -# ----------------------------------------------------------------- - -lua_static: $(SRCDIR_SRCS) - $(SWIG) -lua -module example $(SWIGOPT) -o $(ISRCS) $(INTERFACEPATH) - $(CC) $(CPPFLAGS) $(CFLAGS) $(LDFLAGS) $(ISRCS) $(SRCDIR_SRCS) $(SRCDIR)$(LUA_INTERP) $(INCLUDES) \ - $(LUA_INCLUDE) $(LIBS) $(LUA_LIB) -o $(TARGET) - -lua_static_cpp: $(SRCDIR_SRCS) $(GENCXXSRCS) - $(SWIG) -c++ -lua -module example $(SWIGOPT) -o $(ICXXSRCS) $(INTERFACEPATH) - $(CXX) $(CPPFLAGS) $(CXXFLAGS) $(LDFLAGS) $(ICXXSRCS) $(SRCDIR_SRCS) $(SRCDIR_CXXSRCS) $(GENCXXSRCS) $(SRCDIR)$(LUA_INTERP) $(INCLUDES) \ - $(LUA_INCLUDE) $(LIBS) $(LUA_LIB) -o $(TARGET) +python_cpp: $(SRCDIR_SRCS) + $(SWIG) -python -c++ $(SWIGOPT) -o $(ICXXSRCS) $(INTERFACEPATH) + $(CXX) -c $(CCSHARED) $(CPPFLAGS) $(CXXFLAGS) $(ICXXSRCS) $(SRCDIR_SRCS) $(SRCDIR_CXXSRCS) $(INCLUDES) $(PYTHON_INCLUDE) + $(CXXSHARED) $(CXXFLAGS) $(LDFLAGS) $(OBJS) $(IOBJS) $(PYTHON_DLNK) $(LIBS) $(CPP_DLLIBS) -o $(LIBPREFIX)_$(TARGET)$(PYTHON_SO) # ----------------------------------------------------------------- -# Run Lua example +# Build statically linked Python interpreter +# +# These should only be used in conjunction with the %include embed.i +# library file # ----------------------------------------------------------------- -lua_run: - $(RUNTOOL) $(LUA) $(LUA_SCRIPT) $(RUNPIPE) - -lua_embed_run: - $(RUNTOOL) ./$(TARGET) $(LUA_SCRIPT) $(RUNPIPE) +#TKINTER = -L/usr/X11R6.3/lib -L/usr/local/compat/lib -ltk4.0 -ltcl7.4 -lX11 +TKINTER = +PYTHON_LIBOPTS = $(PYTHON_LINK) @LIBS@ $(TKINTER) $(SYSLIBS) -# ----------------------------------------------------------------- -# Version display -# ----------------------------------------------------------------- +python_static: $(SRCDIR_SRCS) + $(SWIG) -python -lembed.i $(SWIGOPT) -o $(ISRCS) $(INTERFACEPATH) + $(CC) $(CPPFLAGS) $(CFLAGS) $(LDFLAGS) @LINKFORSHARED@ $(ISRCS) $(SRCDIR_SRCS) $(INCLUDES) \ + $(PYTHON_INCLUDE) $(LIBS) -L$(PYTHON_LIB) $(PYTHON_LIBOPTS) -o $(TARGET) -lua_version: - $(LUA) -v | head -n 1 +python_static_cpp: $(SRCDIR_SRCS) + $(SWIG) -python -c++ -lembed.i $(SWIGOPT) -o $(ICXXSRCS) $(INTERFACEPATH) + $(CXX) $(CPPFLAGS) $(CXXFLAGS) $(LDFLAGS) $(ICXXSRCS) $(SRCDIR_SRCS) $(SRCDIR_CXXSRCS) $(INCLUDES) \ + $(PYTHON_INCLUDE) $(LIBS) -L$(PYTHON_LIB) $(PYTHON_LIBOPTS) -o $(TARGET) # ----------------------------------------------------------------- -# Cleaning the lua examples +# Running a Python example # ----------------------------------------------------------------- -lua_clean: - rm -f *_wrap* *~ .~* mylua@EXEEXT@ - rm -f core @EXTRA_CLEAN@ - rm -f *.@OBJEXT@ *$(LUA_SO) - -################################################################## -##### CFFI ###### -################################################################## - -CFFI = @CFFIBIN@ -CFFI_SCRIPT=$(RUNME).lisp - -cffi: $(SRCDIR_SRCS) - $(SWIG) -cffi $(SWIGOPT) -o $(ISRCS) $(INTERFACEPATH) -# $(CC) -c $(CCSHARED) $(CPPFLAGS) $(CFLAGS) $(ISRCS) $(INCLUDES) $(SRCDIR_SRCS) -# $(LDSHARED) $(CFLAGS) $(LDFLAGS) $(OBJS) $(IOBJS) $(LIBS) -o $(LIBPREFIX)$(TARGET)$(SO) - -cffi_cpp: $(SRCDIR_SRCS) - $(SWIG) -c++ -cffi $(SWIGOPT) -o $(ICXXSRCS) $(INTERFACEPATH) - $(CXX) -c $(CCSHARED) $(CPPFLAGS) $(CXXFLAGS) $(ICXXSRCS) $(SRCDIR_SRCS) $(SRCDIR_CXXSRCS) $(INCLUDES) - $(CXXSHARED) $(CXXFLAGS) $(LDFLAGS) $(OBJS) $(IOBJS) $(LIBS) $(CPP_DLLIBS) -o $(LIBPREFIX)$(TARGET)$(SO) +PYSCRIPT = $(RUNME).py -# ----------------------------------------------------------------- -# Run CFFI example -# ----------------------------------------------------------------- +python_run: $(PYSCRIPT) +ifneq (,$(PYCODESTYLE)) + $(COMPILETOOL) $(PYCODESTYLE) $(PYCODESTYLE_FLAGS) $(PYSCRIPT) +endif + env PYTHONPATH=$$PWD $(RUNTOOL) $(PYTHON) $(PYSCRIPT) $(RUNPIPE) -cffi_run: - $(RUNTOOL) $(CFFI) -batch -s $(CFFI_SCRIPT) $(RUNPIPE) +ifneq (,$(SRCDIR)) +$(RUNME).py: $(SRCDIR)$(RUNME).py + cp $< $@ +endif # ----------------------------------------------------------------- # Version display # ----------------------------------------------------------------- -cffi_version: - $(CFFI) --version +python_version: + $(PYTHON) -V # ----------------------------------------------------------------- -# Cleaning the CFFI examples +# Cleaning the python examples # ----------------------------------------------------------------- -cffi_clean: - rm -f *_wrap* *~ .~* +python_clean: + rm -rf __pycache__ + rm -f *_wrap* *~ .~* mypython@EXEEXT@ *.pyc rm -f core @EXTRA_CLEAN@ - rm -f *.@OBJEXT@ *@SO@ + rm -f *.@OBJEXT@ *@SO@ *$(PYTHON_SO) + rm -f $(TARGET).py + case "x$(SRCDIR)" in x|x./);; *) rm -f $(RUNME).py;; esac ################################################################## -##### R ###### +##### R ###### ################################################################## R = R @@ -1344,7 +1437,80 @@ r_clean: rm -f $(RRSRC) $(RUNME).Rout .RData ################################################################## -##### SCILAB ###### +##### RUBY ###### +################################################################## + +# Make sure these locate your Ruby installation +RUBY_CFLAGS= @RUBYCCDLFLAGS@ $(DEFS) +RUBY_INCLUDE= @RUBYINCLUDE@ +RUBY_LIB = @RUBYLIB@ +RUBY_DLNK = @RUBYDYNAMICLINKING@ +RUBY_LIBOPTS = @RUBYLINK@ @LIBS@ $(SYSLIBS) +RUBY_SO = @RUBYSO@ +RUBY = @RUBY@ +RUBY_SCRIPT = $(SRCDIR)$(RUNME).rb + + +# ---------------------------------------------------------------- +# Build a C dynamically loadable module +# ---------------------------------------------------------------- + +ruby: $(SRCDIR_SRCS) + $(SWIG) -ruby $(SWIGOPT) -o $(ISRCS) $(INTERFACEPATH) + $(CC) -c $(CCSHARED) $(CPPFLAGS) $(CFLAGS) $(RUBY_CFLAGS) $(ISRCS) $(SRCDIR_SRCS) $(INCLUDES) $(RUBY_INCLUDE) + $(LDSHARED) $(CFLAGS) $(LDFLAGS) $(OBJS) $(IOBJS) $(RUBY_DLNK) $(LIBS) -o $(LIBPREFIX)$(TARGET)$(RUBY_SO) + +# ----------------------------------------------------------------- +# Build a C++ dynamically loadable module +# ----------------------------------------------------------------- + +ruby_cpp: $(SRCDIR_SRCS) + $(SWIG) -c++ -ruby $(SWIGOPT) -o $(ICXXSRCS) $(INTERFACEPATH) + $(CXX) -c $(CCSHARED) $(CPPFLAGS) $(CXXFLAGS) $(RUBY_CFLAGS) $(ICXXSRCS) $(SRCDIR_SRCS) $(SRCDIR_CXXSRCS) $(INCLUDES) $(RUBY_INCLUDE) + $(CXXSHARED) $(CXXFLAGS) $(LDFLAGS) $(OBJS) $(IOBJS) $(RUBY_DLNK) $(LIBS) $(CPP_DLLIBS) -o $(LIBPREFIX)$(TARGET)$(RUBY_SO) + +# ----------------------------------------------------------------- +# Build statically linked Ruby interpreter +# +# These should only be used in conjunction with the %include embed.i +# library file +# ----------------------------------------------------------------- + +ruby_static: $(SRCDIR_SRCS) + $(SWIG) -ruby -lembed.i $(SWIGOPT) -o $(ISRCS) $(INTERFACEPATH) + $(CC) $(CPPFLAGS) $(CFLAGS) $(LDFLAGS) $(RUBY_CFLAGS) @LINKFORSHARED@ $(ISRCS) $(SRCDIR_SRCS) $(INCLUDES) \ + $(RUBY_INCLUDE) $(LIBS) -L$(RUBY_LIB) $(RUBY_LIBOPTS) -o $(TARGET) + +ruby_cpp_static: $(SRCDIR_SRCS) + $(SWIG) -c++ -ruby -lembed.i $(SWIGOPT) -o $(ICXXSRCS) $(INTERFACEPATH) + $(CXX) $(CPPFLAGS) $(CXXFLAGS) $(LDFLAGS) $(RUBY_CFLAGS) $(ICXXSRCS) $(SRCDIR_SRCS) $(SRCDIR_CXXSRCS) $(INCLUDES) \ + $(RUBY_INCLUDE) $(LIBS) -L$(RUBY_LIB) $(RUBY_LIBOPTS) -o $(TARGET) + +# ----------------------------------------------------------------- +# Run Ruby example +# ----------------------------------------------------------------- + +ruby_run: + $(RUNTOOL) $(RUBY) $(RUBYFLAGS) -I. $(RUBY_SCRIPT) $(RUNPIPE) + +# ----------------------------------------------------------------- +# Version display +# ----------------------------------------------------------------- + +ruby_version: + $(RUBY) -v + +# ----------------------------------------------------------------- +# Cleaning the Ruby examples +# ----------------------------------------------------------------- + +ruby_clean: + rm -f *_wrap* *~ .~* myruby@EXEEXT@ + rm -f core @EXTRA_CLEAN@ + rm -f *.@OBJEXT@ *$(RUBY_SO) + +################################################################## +##### SCILAB ###### ################################################################## SCILAB = @SCILAB@ @@ -1396,243 +1562,76 @@ scilab_clean: rm -f *.sce ################################################################## -##### Go ###### -################################################################## - -# TODO: The Go make targets need simplifying to use configure time -# configuration or to use Make's ifeq rather than using lots of -# runtime shell code. The output will then be a lot less verbose. - -GO = @GO@ -GOGCC = @GOGCC@ -GCCGO = @GCCGO@ -GOOPT = @GOOPT@ -GCCGOOPT = @GCCGOOPT@ -GOVERSIONOPTION = @GOVERSIONOPTION@ - -GOSWIGARG = `if $(GOGCC) ; then echo -gccgo; fi` - -GOSRCS = $(INTERFACE:.i=.go) -GOCSRCS = $(INTERFACE:.i=_gc.c) - -GOPACKAGE = $(notdir $(INTERFACE:.i=.a)) - -GOPATHPARENTDIR = gopath/$(GOMOD)/src -GOPATHDIR = $(GOPATHPARENTDIR)/$(INTERFACE:.i=) - -# ---------------------------------------------------------------- -# Build a Go module (C) -# ---------------------------------------------------------------- - -$(GOPATHPARENTDIR)/go.mod: - @mkdir gopath 2>/dev/null || true - @mkdir gopath/$(GOMOD) 2>/dev/null || true - @mkdir gopath/$(GOMOD)/src 2>/dev/null || true - @mkdir $(GOPATHDIR) 2>/dev/null || true - echo "module swigtests" > $(GOPATHDIR)/go.mod - echo "" >> $(GOPATHDIR)/go.mod - echo "go 1.12" >> $(GOPATHDIR)/go.mod - mv -f $(GOPATHDIR)/go.mod $(GOPATHPARENTDIR)/go.mod - -go: $(SRCDIR_SRCS) $(GOPATHPARENTDIR)/go.mod - $(SWIG) -go -import-prefix swigtests $(GOOPT) $(GOSWIGARG) $(SWIGOPT) -o $(ISRCS) $(INTERFACEPATH) - @mkdir gopath 2>/dev/null || true - @mkdir gopath/$(GOMOD) 2>/dev/null || true - @mkdir gopath/$(GOMOD)/src 2>/dev/null || true - @mkdir $(GOPATHDIR) 2>/dev/null || true - rm -rf $(GOPATHDIR)/* - cp $(ISRCS) $(GOPATHDIR)/ - if test -f $(IWRAP:.i=.h); then \ - cp $(IWRAP:.i=.h) $(GOPATHDIR)/; \ - fi - if test -n "$(SRCDIR_SRCS)"; then \ - cp $(SRCDIR_SRCS) $(GOPATHDIR)/; \ - fi - cp $(GOSRCS) $(GOPATHDIR)/ - @if test -f $(SRCDIR)$(RUNME).go; then \ - mkdir gopath/$(GOMOD)/src/runme 2>/dev/null || true; \ - rm -f gopath/$(GOMOD)/src/runme/*; \ - fi - if test -f $(SRCDIR)$(RUNME).go; then \ - cp $(SRCDIR)$(RUNME).go gopath/$(GOMOD)/src/runme/; \ - fi - GOPATH=`pwd`/gopath/$(GOMOD); \ - export GOPATH; \ - CGO_CPPFLAGS="$(CPPFLAGS) $(INCLUDES) -I `cd $(SRCDIR) && pwd` -I `pwd`"; \ - export CGO_CPPFLAGS; \ - CGO_CFLAGS="$(CFLAGS)"; \ - export CGO_CFLAGS; \ - CGO_LDFLAGS="$(LDFLAGS) -lm"; \ - export CGO_LDFLAGS; \ - (cd $(GOPATHDIR)/ && $(COMPILETOOL) $(GO) build `if $(GOGCC); then echo -compiler=gccgo; fi` -o $(GOPACKAGE)); \ - stat=$$?; \ - if test $$stat != 0; then \ - exit $$stat; \ - fi; \ - if $(GOGCC); then \ - cp $(GOPATHDIR)/$(GOPACKAGE) $(GOPATHDIR)/$(GOPACKAGE:.a=.gox); \ - fi; \ - if test -f $(SRCDIR)$(RUNME).go; then \ - mkdir gopath/$(GOMOD)/src/swigtests 2>/dev/null || true; \ - mkdir gopath/$(GOMOD)/src/swigtests/$(INTERFACE:.i=) 2>/dev/null || true; \ - cp $(GOPATHDIR)/* gopath/$(GOMOD)/src/swigtests/$(INTERFACE:.i=)/; \ - (cd gopath/$(GOMOD)/src/runme && $(COMPILETOOL) $(GO) build `if $(GOGCC); then echo -compiler=gccgo; fi` -o runme $(RUNME).go); \ - stat=$$?; \ - if test $$stat != 0; then \ - exit $$stat; \ - fi; \ - cp gopath/$(GOMOD)/src/runme/runme $(RUNME); \ - fi - -# ---------------------------------------------------------------- -# Build a Go module (C++) -# ---------------------------------------------------------------- - -go_cpp: $(SRCDIR_SRCS) $(GOPATHPARENTDIR)/go.mod - $(SWIG) -go -c++ -import-prefix swigtests $(GOOPT) $(GOSWIGARG) $(SWIGOPT) -o $(ICXXSRCS) $(INTERFACEPATH) - @mkdir gopath 2>/dev/null || true - @mkdir gopath/$(GOMOD) 2>/dev/null || true - @mkdir gopath/$(GOMOD)/src 2>/dev/null || true - @mkdir $(GOPATHDIR) 2>/dev/null || true - rm -rf $(GOPATHDIR)/* - cp $(ICXXSRCS) $(GOPATHDIR)/ - if test -f $(IWRAP:.i=.h); then \ - cp $(IWRAP:.i=.h) $(GOPATHDIR)/; \ - fi - if test -n "$(SRCDIR_CXXSRCS)"; then \ - cp $(SRCDIR_CXXSRCS) $(GOPATHDIR)/; \ - fi - if test -n "$(SRCDIR_SRCS)"; then \ - cp $(SRCDIR_SRCS) $(GOPATHDIR)/; \ - fi - cp $(GOSRCS) $(GOPATHDIR)/ - @if test -f $(SRCDIR)$(RUNME).go; then \ - mkdir gopath/$(GOMOD)/src/runme 2>/dev/null || true; \ - rm -f gopath/$(GOMOD)/src/runme/*; \ - fi - if test -f $(SRCDIR)$(RUNME).go; then \ - cp $(SRCDIR)$(RUNME).go gopath/$(GOMOD)/src/runme/; \ - fi - GOPATH=`pwd`/gopath/$(GOMOD); \ - export GOPATH; \ - CGO_CPPFLAGS="$(CPPFLAGS) $(INCLUDES) -I `cd $(SRCDIR) && pwd` -I `pwd`"; \ - export CGO_CPPFLAGS; \ - CGO_CFLAGS="$(CFLAGS)"; \ - export CGO_CFLAGS; \ - CGO_CXXFLAGS="$(CXXFLAGS)"; \ - export CGO_CXXFLAGS; \ - CGO_LDFLAGS="$(LDFLAGS) -lm"; \ - export CGO_LDFLAGS; \ - (cd $(GOPATHDIR) && $(COMPILETOOL) $(GO) build `if $(GOGCC); then echo -compiler=gccgo; fi` -o $(GOPACKAGE)); \ - stat=$$?; \ - if test $$stat != 0; then \ - exit $$stat; \ - fi; \ - if $(GOGCC); then \ - cp $(GOPATHDIR)/$(GOPACKAGE) $(GOPATHDIR)/$(GOPACKAGE:.a=.gox); \ - fi; \ - if test -f $(SRCDIR)$(RUNME).go; then \ - mkdir gopath/$(GOMOD)/src/swigtests 2>/dev/null || true; \ - mkdir gopath/$(GOMOD)/src/swigtests/$(INTERFACE:.i=) 2>/dev/null || true; \ - cp $(GOPATHDIR)/* gopath/$(GOMOD)/src/swigtests/$(INTERFACE:.i=)/; \ - (cd gopath/$(GOMOD)/src/runme && $(COMPILETOOL) $(GO) build `if $(GOGCC); then echo -compiler=gccgo; fi` -o runme $(RUNME).go); \ - stat=$$?; \ - if test $$stat != 0; then \ - exit $$stat; \ - fi; \ - cp gopath/$(GOMOD)/src/runme/runme $(RUNME); \ - fi - -# ----------------------------------------------------------------- -# Running Go example -# ----------------------------------------------------------------- - -go_run: - env $(RUNTOOL) ./$(RUNME) $(RUNPIPE) - -# ----------------------------------------------------------------- -# Version display -# ----------------------------------------------------------------- - -go_version: - $(GO) $(GOVERSIONOPTION) - -# ----------------------------------------------------------------- -# Cleaning the Go examples -# ----------------------------------------------------------------- - -go_clean: - rm -f *_wrap* *_gc* *.gox .~* $(RUNME) $(GOSRCS) - rm -rf gopath - rm -f core @EXTRA_CLEAN@ - rm -f *.@OBJEXT@ *.[568] *.a *@SO@ - -################################################################## -##### D ###### +##### TCL ###### ################################################################## -DLIBPREFIX = @DLIBPREFIX@ +# Set these to your local copy of Tcl -ifeq (,$(D_VERSION)) - D_VERSION = @DDEFAULTVERSION@ -endif +TCLSH = tclsh +TCL_INCLUDE = @TCLINCLUDE@ +TCL_LIB = @TCLLIB@ +TCL_OPTS = @LIBS@ +TK_OPTS = -ltk -ltcl @LIBS@ -ifeq (2,$(D_VERSION)) - SWIGD = $(SWIG) -d -d2 - DCOMPILER = @D2COMPILER@ -else - SWIGD = $(SWIG) -d - DCOMPILER = @D1COMPILER@ -endif +# Extra Tcl specific dynamic linking options +TCL_DLNK = @TCLDYNAMICLINKING@ +TCL_SO = @TCL_SO@ +TCLLDSHARED = @TCLLDSHARED@ +TCLCXXSHARED = @TCLCXXSHARED@ +TCL_SCRIPT = $(SRCDIR)$(RUNME).tcl +TCL_LINK = @TCLLINK@ -D_RUNME = ./$(RUNME) +# ----------------------------------------------------------- +# Build a new version of the tclsh shell +# ----------------------------------------------------------- -# ---------------------------------------------------------------- -# Build a dynamically loadable D wrapper for a C module -# ---------------------------------------------------------------- +tclsh: $(SRCDIR_SRCS) + $(SWIG) -tcl8 $(SWIGOPT) $(TCL_SWIGOPTS) -ltclsh.i -o $(ISRCS) $(INTERFACEPATH) + $(CC) $(CPPFLAGS) $(CFLAGS) $(LDFLAGS) $(SRCDIR_SRCS) $(ISRCS) $(INCLUDES) $(TCL_INCLUDE) \ + $(TCL_LIB) $(TCL_OPTS) $(LIBS) $(SYSLIBS) -o $(TARGET) -d: $(SRCDIR_SRCS) - $(SWIGD) $(SWIGOPT) -o $(ISRCS) $(INTERFACEPATH) - $(CC) -c $(CCSHARED) $(CPPFLAGS) $(CFLAGS) $(DCFLAGS) $(EXTRA_CFLAGS) $(SRCDIR_SRCS) $(ISRCS) $(INCLUDES) - $(LDSHARED) $(CFLAGS) $(LDFLAGS) $(DCFLAGS) $(EXTRA_LDFLAGS) $(OBJS) $(IOBJS) $(LIBS) -o $(DLIBPREFIX)$(TARGET)$(SO) +tclsh_cpp: $(SRCDIR_SRCS) + $(SWIG) -tcl8 -c++ $(SWIGOPT) $(TCL_SWIGOPTS) -ltclsh.i -o $(ICXXSRCS) $(INTERFACEPATH) + $(CXX) $(CPPFLAGS) $(CXXFLAGS) $(LDFLAGS) $(SRCDIR_SRCS) $(SRCDIR_CXXSRCS) $(ICXXSRCS) $(INCLUDES) $(TCL_INCLUDE) \ + $(TCL_LIB) $(TCL_OPTS) $(LIBS) $(SYSLIBS) -o $(TARGET) -# ---------------------------------------------------------------- -# Build a dynamically loadable D wrapper for a C++ module -# ---------------------------------------------------------------- +# ----------------------------------------------------------- +# Build a Tcl dynamic loadable module (you might need to tweak this) +# ----------------------------------------------------------- -d_cpp: $(SRCDIR_SRCS) - $(SWIGD) -c++ $(SWIGOPT) -o $(ICXXSRCS) $(INTERFACEPATH) - $(CXX) -c $(CCSHARED) $(CPPFLAGS) $(CXXFLAGS) $(DCFLAGS) $(EXTRA_CFLAGS) $(SRCDIR_SRCS) $(SRCDIR_CXXSRCS) $(ICXXSRCS) $(INCLUDES) - $(CXXSHARED) $(CXXFLAGS) $(LDFLAGS) $(DCFLAGS) $(EXTRA_LDFLAGS) $(OBJS) $(IOBJS) $(LIBS) $(CPP_DLLIBS) -o $(DLIBPREFIX)$(TARGET)$(SO) +tcl: $(SRCDIR_SRCS) + $(SWIG) -tcl8 $(SWIGOPT) $(TCL_SWIGOPTS) -o $(ISRCS) $(INTERFACEPATH) + $(CC) -c $(CCSHARED) $(CPPFLAGS) $(CFLAGS) $(SRCDIR_SRCS) $(ISRCS) $(INCLUDES) $(TCL_INCLUDE) + $(TCLLDSHARED) $(CFLAGS) $(LDFLAGS) $(OBJS) $(IOBJS) $(TCL_DLNK) $(LIBS) -o $(LIBPREFIX)$(TARGET)$(TCL_SO) $(TCL_LINK) -# ---------------------------------------------------------------- -# Compile D files -# ---------------------------------------------------------------- +# ----------------------------------------------------------- +# Build a Tcl dynamic loadable module for C++ +# ----------------------------------------------------------- -# Clear the DFLAGS environment variable for the compiler call itself -# to work around a discrepancy in argument handling between DMD and LDC. -d_compile: $(SRCDIR_SRCS) - DFLAGS="" $(COMPILETOOL) $(DCOMPILER) $(DFLAGS) $(DSRCS) +tcl_cpp: $(SRCDIR_SRCS) + $(SWIG) -tcl8 -c++ $(SWIGOPT) $(TCL_SWIGOPTS) -o $(ICXXSRCS) $(INTERFACEPATH) + $(CXX) -c $(CCSHARED) $(CPPFLAGS) $(CXXFLAGS) $(SRCDIR_SRCS) $(SRCDIR_CXXSRCS) $(ICXXSRCS) $(INCLUDES) $(TCL_INCLUDE) + $(TCLCXXSHARED) $(CXXFLAGS) $(LDFLAGS) $(OBJS) $(IOBJS) $(TCL_DLNK) $(LIBS) $(CPP_DLLIBS) -o $(LIBPREFIX)$(TARGET)$(TCL_SO) $(TCL_LINK) # ----------------------------------------------------------------- -# Run D example +# Run Tcl example # ----------------------------------------------------------------- -d_run: - env LD_LIBRARY_PATH=$$PWD $(RUNTOOL) $(D_RUNME) $(RUNPIPE) +tcl_run: + $(RUNTOOL) $(TCLSH) $(TCL_SCRIPT) $(RUNPIPE) # ----------------------------------------------------------------- # Version display # ----------------------------------------------------------------- -d_version: - ($(DCOMPILER) --version 2> /dev/null || $(DCOMPILER)) | head -n 3 +tcl_version: + echo 'puts $$tcl_version;exit 0' | $(TCLSH) # ----------------------------------------------------------------- -# Clean the D examples +# Cleaning the Tcl examples # ----------------------------------------------------------------- -d_clean: - rm -f *_wrap* *~ .~* $(RUNME) $(RUNME).exe `find . -name \*.d | grep -v $(RUNME).d` +tcl_clean: + rm -f *_wrap* *~ .~* mytclsh@EXEEXT@ rm -f core @EXTRA_CLEAN@ - rm -f *.@OBJEXT@ *@SO@ + rm -f *.@OBJEXT@ *$(TCL_SO) |