diff options
author | Alistair Delva <adelva@google.com> | 2024-04-10 14:15:29 -0700 |
---|---|---|
committer | Alistair Delva <adelva@google.com> | 2024-04-11 12:58:28 -0700 |
commit | d0f0f90be16c2ac553b5fa08512045273135147a (patch) | |
tree | 5d9ebb7a04807ea8a609ddd18b0162bc87530e4b /Examples/Makefile.in | |
parent | 6ffc1dbf29ba98c4d8aa71ebc9b484e973fe1030 (diff) | |
download | swig-master.tar.gz |
Change-Id: I47cef2be94299220d80265d949a95b58eee2c23b
Diffstat (limited to 'Examples/Makefile.in')
-rw-r--r-- | Examples/Makefile.in | 1424 |
1 files changed, 690 insertions, 734 deletions
diff --git a/Examples/Makefile.in b/Examples/Makefile.in index 6fbca29db..887f6b917 100644 --- a/Examples/Makefile.in +++ b/Examples/Makefile.in @@ -46,8 +46,8 @@ TARGET = CC = @CC@ CXX = @CXX@ CPPFLAGS = $(SRCDIR_INCLUDE) -CFLAGS = @PLATCFLAGS@ -CXXFLAGS = @BOOST_CPPFLAGS@ @PLATCXXFLAGS@ +CFLAGS = @PLATCFLAGS@ $(EXTRA_CFLAGS) +CXXFLAGS = @BOOST_CPPFLAGS@ @PLATCXXFLAGS@ $(EXTRA_CXXFLAGS) LDFLAGS = prefix = @prefix@ exec_prefix= @exec_prefix@ @@ -58,6 +58,7 @@ INTERFACE = INTERFACEDIR = INTERFACEPATH = $(SRCDIR)$(INTERFACEDIR)$(INTERFACE) SWIGOPT = +PCHSUPPORT = @PCHSUPPORT@ # SWIG_LIB_DIR and SWIGEXE must be explicitly set by Makefiles using this Makefile SWIG_LIB_DIR = ./Lib @@ -136,7 +137,6 @@ OBJS = $(SRCS:.c=.@OBJEXT@) $(CXXSRCS:.cxx=.@OBJEXT@) distclean: rm -f Makefile - rm -f d/example.mk rm -f xml/Makefile ################################################################## @@ -147,340 +147,364 @@ swiginvoke: $(SWIG) $(SWIGOPT) ################################################################## -##### Tcl/Tk ###### +##### ANDROID ###### ################################################################## -# Set these to your local copy of Tcl/Tk. - -TCLSH = tclsh -TCL_INCLUDE = @TCLINCLUDE@ -TCL_LIB = @TCLLIB@ -TCL_OPTS = @LIBS@ -TK_OPTS = -ltk -ltcl @LIBS@ - -# Extra Tcl specific dynamic linking options -TCL_DLNK = @TCLDYNAMICLINKING@ -TCL_SO = @TCL_SO@ -TCLLDSHARED = @TCLLDSHARED@ -TCLCXXSHARED = @TCLCXXSHARED@ -TCL_SCRIPT = $(SRCDIR)$(RUNME).tcl - -# ----------------------------------------------------------- -# Build a new version of the tclsh shell -# ----------------------------------------------------------- - -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) - -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 = @ANDROID@ +ANDROID_NDK_BUILD = @NDKBUILD@ +ANDROID_ADB = @ADB@ +ANT = @ANT@ +TARGETID = 1 -# ----------------------------------------------------------- -# Build a Tcl dynamic loadable module (you might need to tweak this) -# ----------------------------------------------------------- +# ---------------------------------------------------------------- +# Build an Android dynamically loadable module (C) +# ---------------------------------------------------------------- -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) +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 Tcl7.5 dynamic loadable module for C++ -# ----------------------------------------------------------- +# ---------------------------------------------------------------- +# Build an Android dynamically loadable module (C++) +# ---------------------------------------------------------------- -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) +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 -# ----------------------------------------------------------------- -# Run Tcl example -# ----------------------------------------------------------------- +# ---------------------------------------------------------------- +# Android install +# ---------------------------------------------------------------- -tcl_run: - $(RUNTOOL) $(TCLSH) $(TCL_SCRIPT) $(RUNPIPE) +android_install: + -$(ANDROID_ADB) uninstall $(PACKAGENAME) + $(ANDROID_ADB) install $(INSTALLOPTIONS) bin/$(PROJECTNAME)-debug.apk # ----------------------------------------------------------------- # Version display # ----------------------------------------------------------------- -tcl_version: - echo 'puts $$tcl_version;exit 0' | $(TCLSH) +android_version: + $(ANDROID_ADB) version # ----------------------------------------------------------------- -# Cleaning the Tcl examples +# Cleaning the Android examples # ----------------------------------------------------------------- -tcl_clean: - rm -f *_wrap* *~ .~* mytclsh@EXEEXT@ - rm -f core @EXTRA_CLEAN@ - rm -f *.@OBJEXT@ *$(TCL_SO) +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 ################################################################## -##### 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 = - -# Make sure these locate your Python installation -ifeq (,$(PY3)) - PYTHON_INCLUDE= $(DEFS) @PYINCLUDE@ - PYTHON_LIB = @PYLIB@ - PYTHON = @PYTHON@ $(PYTHON_FLAGS) -else - PYTHON_INCLUDE= $(DEFS) @PY3INCLUDE@ - PYTHON_LIB = @PY3LIB@ - PYTHON = @PYTHON3@ $(PYTHON_FLAGS) -endif - -# Extra Python specific linking options -ifeq (,$(PY3)) - PYTHON_DLNK = @PYTHONDYNAMICLINKING@ - PYTHON_LINK = @PYLINK@ -else - PYTHON_DLNK = @PYTHON3DYNAMICLINKING@ - PYTHON_LINK = @PY3LINK@ -endif -PYTHON_SO = @PYTHON_SO@ +DLIBPREFIX = @DLIBPREFIX@ -# SWIG option for Python3 -ifeq (,$(PY3)) - SWIGOPTPY3 = -else - SWIGOPTPY3 = -py3 -endif +SWIGD = $(SWIG) -d +DCOMPILER = @D2COMPILER@ -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 $(SWIGOPTPY3) $(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 $(SWIGOPTPY3) -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 $(SWIGOPTPY3) -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 $(SWIGOPTPY3) -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 # ----------------------------------------------------------------- -ifeq (,$(PY3)) - PYSCRIPT = $(RUNME).py -else - PYSCRIPT = $(RUNME)3.py -endif - -PY2TO3 = @PY2TO3@ `@PY2TO3@ -l | grep -v -E "Available|import$$" | awk '{print "-f "$$0}'` - -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 - -$(RUNME)3.py: $(SRCDIR)$(RUNME).py - cp $< $@ - $(PY2TO3) -w $@ >/dev/null 2>&1 +d_run: + env LD_LIBRARY_PATH=$$PWD $(RUNTOOL) $(D_RUNME) $(RUNPIPE) # ----------------------------------------------------------------- # Version display # ----------------------------------------------------------------- -python_version: - $(PYTHON) -V +d_version: + $(DCOMPILER) --version 2> /dev/null | 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 - if test -f $(SRCDIR)$(RUNME).py; then rm -f $(RUNME)3.py $(RUNME)3.py.bak; fi - 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` + +GOSRCS = $(INTERFACE:.i=.go) +GOCSRCS = $(INTERFACE:.i=_gc.c) + +GOPACKAGE = $(notdir $(INTERFACE:.i=.a)) + +GOPATHPARENTDIR = gopath/$(GOMOD)/src +GOPATHDIR = $(GOPATHPARENTDIR)/$(INTERFACE:.i=) # ---------------------------------------------------------------- -# 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 $(SWIGOPT) -o $(ICXXSRCS) $(INTERFACEPATH) - $(CXX) -g -c $(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) +$(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 -# ----------------------------------------------------------------- -# Build a C++ dynamically loadable module -# ----------------------------------------------------------------- +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 -octave_cpp: $(SRCDIR_SRCS) - $(SWIG) -c++ -octave $(SWIGOPT) -o $(ICXXSRCS) $(INTERFACEPATH) - $(CXX) -g -c $(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 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 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 *.@OBJEXT@ *.[568] *.a *@SO@ ################################################################## ##### GUILE ###### @@ -524,23 +548,11 @@ guile_augmented: $(SRCDIR_SRCS) # ----------------------------------------------------------------- guile_static: $(SRCDIR_SRCS) - $(SWIG) -guile -lguilemain.i -Linkage ltdlmod $(SWIGOPT) -o $(ISRCS) $(INTERFACEPATH) - $(CC) $(CPPFLAGS) $(CFLAGS) $(LDFLAGS) $(ISRCS) $(SRCDIR_SRCS) $(INCLUDES) \ - -DSWIGINIT="SCM scm_init_$(TARGET)_module(void); scm_init_$(TARGET)_module();" \ - $(GUILE_CFLAGS) $(GUILE_LIBS) $(LIBS) $(GUILE_LIBOPTS) -o $(TARGET)-guile - -guile_static_cpp: $(SRCDIR_SRCS) - $(SWIG) -c++ -guile -lguilemain.i -Linkage ltdlmod $(SWIGOPT) -o $(ICXXSRCS) $(INTERFACEPATH) - $(CXX) $(CPPFLAGS) $(CXXFLAGS) $(LDFLAGS) $(ICXXSRCS) $(SRCDIR_SRCS) $(SRCDIR_CXXSRCS) $(INCLUDES) \ - -DSWIGINIT="SCM scm_init_$(TARGET)_module(void); scm_init_$(TARGET)_module();" \ - $(GUILE_CFLAGS) $(GUILE_LIBS) $(LIBS) $(GUILE_LIBOPTS) -o $(TARGET)-guile - -guile_simple: $(SRCDIR_SRCS) $(SWIG) -guile -lguilemain.i -Linkage simple $(SWIGOPT) -o $(ISRCS) $(INTERFACEPATH) $(CC) $(CPPFLAGS) $(CFLAGS) $(LDFLAGS) $(ISRCS) $(SRCDIR_SRCS) $(INCLUDES) \ $(GUILE_CFLAGS) $(GUILE_LIBS) $(LIBS) $(GUILE_LIBOPTS) -o $(TARGET)-guile -guile_simple_cpp: $(SRCDIR_SRCS) +guile_static_cpp: $(SRCDIR_SRCS) $(SWIG) -c++ -guile -lguilemain.i -Linkage simple $(SWIGOPT) -o $(ICXXSRCS) $(INTERFACEPATH) $(CXX) $(CPPFLAGS) $(CXXFLAGS) $(LDFLAGS) $(ICXXSRCS) $(SRCDIR_SRCS) $(SRCDIR_CXXSRCS) $(INCLUDES) \ $(GUILE_CFLAGS) $(GUILE_LIBS) $(LIBS) $(GUILE_LIBOPTS) -o $(TARGET)-guile @@ -653,29 +665,60 @@ JSINCLUDES = @JSCOREINC@ @JSV8INC@ JSDYNAMICLINKING = @JSCOREDYNAMICLINKING@ @JSV8DYNAMICLINKING@ NODEJS = @NODEJS@ NODEGYP = @NODEGYP@ +ifneq (, $(ENGINE)) + JSENGINE=$(ENGINE) +else +ifneq (, $(NODEJS)) + JSENGINE=node +else +ifneq (, @JSCENABLED@) + JSENGINE=jsc +else +ifneq (, @JSV8ENABLED@) + JSENGINE=v8 +else + # Shouldn't happen, but avoid empty value if it does. + JSENGINE=node +endif +endif +endif +endif # ---------------------------------------------------------------- # Creating and building Javascript wrappers # ---------------------------------------------------------------- +NAPI_DIR = @NODENAPI_DIR@ + javascript_wrapper: - $(SWIG) -javascript $(SWIGOPT) -o $(INTERFACEDIR)$(TARGET)_wrap.c $(INTERFACEPATH) +ifeq ($(JSENGINE), $(filter $(JSENGINE), node napi)) + $(SWIG) -javascript $(SWIGOPT) -$(JSENGINE) -o $(INTERFACEDIR)$(TARGET)_wrap.cxx $(INTERFACEPATH) +else + $(SWIG) -javascript $(SWIGOPT) -$(JSENGINE) -o $(INTERFACEDIR)$(TARGET)_wrap.c $(INTERFACEPATH) +endif javascript_wrapper_cpp: $(SRCDIR_SRCS) - $(SWIG) -javascript -c++ $(SWIGOPT) -o $(INTERFACEDIR)$(TARGET)_wrap.cxx $(INTERFACEPATH) + $(SWIG) -javascript -c++ $(SWIGOPT) -$(JSENGINE) -o $(INTERFACEDIR)$(TARGET)_wrap.cxx $(INTERFACEPATH) javascript_build: $(SRCDIR_SRCS) +ifeq (node,$(JSENGINE)) + sed -e 's|$$srcdir|./$(SRCDIR)|g' $(SRCDIR)binding.gyp.in > binding.gyp + MAKEFLAGS= $(NODEGYP) --loglevel=silent configure build 1>>/dev/null +else ifeq (napi,$(JSENGINE)) + sed -e 's|$$srcdir|./$(SRCDIR)|g' $(SRCDIR)binding.gyp.in > binding.gyp + MAKEFLAGS= CXXFLAGS="$(CXXFLAGS) -I$(NAPI_DIR)" $(NODEGYP) --loglevel=silent configure build 1>>/dev/null +else $(CC) -c $(CCSHARED) $(CPPFLAGS) $(CFLAGS) $(ISRCS) $(SRCDIR_SRCS) $(INCLUDES) $(JSINCLUDES) - $(LDSHARED) $(CFLAGS) $(LDFLAGS) $(OBJS) $(IOBJS) $(JSDYNAMICLINKING) $(LIBS) -o $(LIBPREFIX)$(TARGET)$(SO) + $(LDSHARED) $(CCSHARED) $(CFLAGS) $(LDFLAGS) $(OBJS) $(IOBJS) $(JSDYNAMICLINKING) $(LIBS) -o $(LIBPREFIX)$(TARGET)$(SO) +endif javascript_build_cpp: $(SRCDIR_SRCS) -ifeq (node,$(JSENGINE)) +ifeq ($(JSENGINE), $(filter $(JSENGINE), node napi)) sed -e 's|$$srcdir|./$(SRCDIR)|g' $(SRCDIR)binding.gyp.in > binding.gyp - MAKEFLAGS= $(NODEGYP) --loglevel=silent configure build 1>>/dev/null + MAKEFLAGS= CXXFLAGS="$(CXXFLAGS) -I$(NAPI_DIR)" $(NODEGYP) --loglevel=silent configure build 1>>/dev/null else $(CXX) -c $(CCSHARED) $(CPPFLAGS) $(CXXFLAGS) $(ICXXSRCS) $(SRCDIR_SRCS) $(SRCDIR_CXXSRCS) $(INCLUDES) $(JSINCLUDES) $(CXXSHARED) $(CXXFLAGS) $(LDFLAGS) $(OBJS) $(IOBJS) $(JSDYNAMICLINKING) $(LIBS) $(CPP_DLLIBS) -o $(LIBPREFIX)$(TARGET)$(SO) - endif # These targets are used by the test-suite: @@ -702,7 +745,7 @@ javascript_cpp: $(SRCDIR_SRCS) javascript_custom_interpreter javascript_custom_interpreter: (cd $(ROOT_DIR)/Tools/javascript && $(MAKE) JSENGINE='$(JSENGINE)') -ifeq (node,$(JSENGINE)) +ifeq ($(JSENGINE), $(filter $(JSENGINE), node napi)) javascript_run: env NODE_PATH=$$PWD:$(SRCDIR) $(RUNTOOL) $(NODEJS) $(SRCDIR)$(RUNME).js $(RUNPIPE) else @@ -723,15 +766,15 @@ ifeq (, $(ENGINE)) echo "Version depends on the interpreter"; \ fi endif -ifeq (node, $(ENGINE)) +ifeq ($(ENGINE), $(filter $(ENGINE), node napi)) echo "Node.js: `($(NODEJS) --version)`" echo "node-gyp: `($(NODEGYP) --version)`" endif ifeq (jsc, $(ENGINE)) @if [ "@JSCOREVERSION@" != "" ]; then \ - echo "@JSCOREVERSION@"; \ + echo "JavaScriptCore: @JSCOREVERSION@"; \ else \ - echo "Unknown JavascriptCore version."; \ + echo "Unknown JavaScriptCore version."; \ fi endif ifeq (v8, $(ENGINE)) @@ -751,59 +794,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 ###### @@ -854,7 +924,7 @@ mzscheme_clean: rm -f *.@OBJEXT@ *$(MZSCHEME_SO) ################################################################## -##### Ocaml ##### +##### OCAML ###### ################################################################## OCC=$(COMPILETOOL) @OCAMLC@ @@ -906,7 +976,7 @@ ocaml_static_toplevel: $(SRCDIR_SRCS) ocaml_static_cpp: $(SRCDIR_SRCS) $(SWIG) -ocaml -c++ $(SWIGOPT) -o $(ICXXSRCS) $(INTERFACEPATH) cp $(ICXXSRCS) $(ICXXSRCS:%.cxx=%.c) - $(OCC) -cc '$(CXX) $(CPPFLAGS)' -g -c -ccopt -g -ccopt "-xc++ $(INCLUDES)" $(ICXXSRCS:%.cxx=%.c) $(SRCDIR_SRCS) $(SRCDIR_CXXSRCS) + $(OCC) -cc '$(CXX) $(CPPFLAGS) $(CXXFLAGS)' -g -c -ccopt -g -ccopt "-xc++ $(INCLUDES)" $(ICXXSRCS:%.cxx=%.c) $(SRCDIR_SRCS) $(SRCDIR_CXXSRCS) $(OCC) -g -c $(INTERFACE:%.i=%.mli) $(OCC) -w -U -g -c $(INTERFACE:%.i=%.ml) test -z "$(PROGFILE)" || $(OCC_WITH_PP) -o $(PROGFILE:%.ml=%) $(OCAMLPP) -c $(SRCDIR)$(PROGFILE) @@ -915,7 +985,7 @@ ocaml_static_cpp: $(SRCDIR_SRCS) ocaml_static_cpp_toplevel: $(SRCDIR_SRCS) $(SWIG) -ocaml -c++ $(SWIGOPT) -o $(ICXXSRCS) $(INTERFACEPATH) cp $(ICXXSRCS) $(ICXXSRCS:%.cxx=%.c) - $(OCC) -cc '$(CXX) $(CPPFLAGS)' -g -c -ccopt -g -ccopt "-xc++ $(INCLUDES)" $(ICXXSRCS:%.cxx=%.c) $(SRCDIR_SRCS) $(SRCDIR_CXXSRCS) + $(OCC) -cc '$(CXX) $(CPPFLAGS) $(CXXFLAGS)' -g -c -ccopt -g -ccopt "-xc++ $(INCLUDES)" $(ICXXSRCS:%.cxx=%.c) $(SRCDIR_SRCS) $(SRCDIR_CXXSRCS) $(OCC) -g -c $(INTERFACE:%.i=%.mli) $(OCC) -w -U -g -c $(INTERFACE:%.i=%.ml) test -z "$(PROGFILE)" || $(OCC_WITH_PP) -o $(PROGFILE:%.ml=%) $(OCAMLPP) -c $(SRCDIR)$(PROGFILE) @@ -924,7 +994,7 @@ ocaml_static_cpp_toplevel: $(SRCDIR_SRCS) ocaml_dynamic_cpp: $(SRCDIR_SRCS) $(SWIG) -ocaml -c++ $(SWIGOPT) -o $(ICXXSRCS) $(INTERFACEPATH) cp $(ICXXSRCS) $(ICXXSRCS:%.cxx=%.c) - $(OCC) -cc '$(CXX) $(CPPFLAGS)' -g -c -ccopt -g -ccopt "-xc++ $(INCLUDES)" $(ICXXSRCS:%.cxx=%.c) $(SRCDIR_SRCS) $(SRCDIR_CXXSRCS) -ccopt -fPIC + $(OCC) -cc '$(CXX) $(CPPFLAGS) $(CXXFLAGS)' -g -c -ccopt -g -ccopt "-xc++ $(INCLUDES)" $(ICXXSRCS:%.cxx=%.c) $(SRCDIR_SRCS) $(SRCDIR_CXXSRCS) -ccopt -fPIC $(CXXSHARED) $(CPPFLAGS) $(CXXFLAGS) $(LDFLAGS) -o $(INTERFACE:%.i=%@SO@) $(INTERFACE:%.i=%_wrap.@OBJEXT@) $(OBJS) $(CPP_DLLIBS) $(LIBS) $(OCAMLDLGEN) $(INTERFACE:%.i=%.ml) $(INTERFACE:%.i=%@SO@) > $(INTERFACE:%.i=%_dynamic.ml) mv $(INTERFACE:%.i=%_dynamic.ml) $(INTERFACE:%.i=%.ml) @@ -958,93 +1028,183 @@ 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@ ################################################################## -##### PHP7 ###### +##### PHP ###### ################################################################## PHP = @PHP@ PHP_INCLUDE = @PHPINC@ PHP_SO = @PHP_SO@ PHP_SCRIPT = $(SRCDIR)$(RUNME).php +PHP_EXTENSION = example$(PHP_SO) # ------------------------------------------------------------------- # Build a PHP dynamically loadable module (C) # ------------------------------------------------------------------- php: $(SRCDIR_SRCS) - $(SWIG) -php7 $(SWIGOPT) -o $(ISRCS) $(INTERFACEPATH) + $(SWIG) -php $(SWIGOPT) -o $(ISRCS) $(INTERFACEPATH) $(CC) -c $(CCSHARED) $(CPPFLAGS) $(CFLAGS) $(SRCDIR_SRCS) $(ISRCS) $(INCLUDES) $(PHP_INCLUDE) $(LDSHARED) $(CFLAGS) $(LDFLAGS) $(OBJS) $(IOBJS) $(LIBS) -o $(LIBPREFIX)$(TARGET)$(PHP_SO) @@ -1053,7 +1213,7 @@ php: $(SRCDIR_SRCS) # -------------------------------------------------------------------- php_cpp: $(SRCDIR_SRCS) - $(SWIG) -php7 -c++ $(SWIGOPT) -o $(ICXXSRCS) $(INTERFACEPATH) + $(SWIG) -php -c++ $(SWIGOPT) -o $(ICXXSRCS) $(INTERFACEPATH) $(CXX) -c $(CCSHARED) $(CPPFLAGS) $(CXXFLAGS) $(SRCDIR_SRCS) $(SRCDIR_CXXSRCS) $(ICXXSRCS) $(INCLUDES) $(PHP_INCLUDE) $(CXXSHARED) $(CXXFLAGS) $(LDFLAGS) $(OBJS) $(IOBJS) $(LIBS) $(CPP_DLLIBS) -o $(LIBPREFIX)$(TARGET)$(PHP_SO) @@ -1062,7 +1222,10 @@ php_cpp: $(SRCDIR_SRCS) # ----------------------------------------------------------------- php_run: - $(RUNTOOL) $(PHP) -n -q -d extension_dir=. -d safe_mode=Off -d display_errors=stderr $(PHP_SCRIPT) $(RUNPIPE) + $(RUNTOOL) $(PHP) -n -d extension_dir=. -d extension=$(PHP_EXTENSION) -d display_errors=stderr -r 'set_error_handler(function($$n,$$s,$$f,$$l){if($$f!==Null){print$$f;if($$l!==Null)print":$$l";print": ";}print"$$s\n";exit(1);});if(strlen($$argv[1]))include($$argv[1]);' '$(PHP_SCRIPT)' $(RUNPIPE) + +php_run_multi: + $(RUNTOOL) $(PHP) -n -d extension_dir=. `while read e ; do echo ' -d extension=$(TARGETPREFIX)'"$$e"'@PHP_SO@' ; done < $(PHP_EXTENSION_LIST)` -d display_errors=stderr -r 'set_error_handler(function($$n,$$s,$$f,$$l){if($$f!==Null){print$$f;if($$l!==Null)print":$$l";print": ";}print"$$s\n";exit(1);});if(strlen($$argv[1]))include($$argv[1]);' '$(PHP_SCRIPT)' $(RUNPIPE) # ----------------------------------------------------------------- # Version display @@ -1081,241 +1244,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) - -# ----------------------------------------------------------------- -# Run Lua example -# ----------------------------------------------------------------- - -lua_run: - $(RUNTOOL) $(LUA) $(LUA_SCRIPT) $(RUNPIPE) - -lua_embed_run: - $(RUNTOOL) ./$(TARGET) $(LUA_SCRIPT) $(RUNPIPE) - -# ----------------------------------------------------------------- -# Version display -# ----------------------------------------------------------------- - -lua_version: - $(LUA) -v | head -n 1 - -# ----------------------------------------------------------------- -# Cleaning the lua examples -# ----------------------------------------------------------------- - -lua_clean: - rm -f *_wrap* *~ .~* mylua@EXEEXT@ - rm -f core @EXTRA_CLEAN@ - rm -f *.@OBJEXT@ *$(LUA_SO) - -################################################################## -##### ALLEGRO CL ###### -################################################################## - -ALLEGROCL = @ALLEGROCLBIN@ -ALLEGROCL_SCRIPT=$(RUNME).lisp - -allegrocl: $(SRCDIR_SRCS) - $(SWIG) -allegrocl -cwrap $(SWIGOPT) -o $(ISRCS) $(INTERFACEPATH) - $(CC) -c $(CCSHARED) $(CPPFLAGS) $(CFLAGS) $(ISRCS) $(INCLUDES) $(SRCDIR_SRCS) - $(LDSHARED) $(CFLAGS) $(LDFLAGS) $(OBJS) $(IOBJS) $(LIBS) -o $(LIBPREFIX)$(TARGET)$(SO) - -allegrocl_cpp: $(SRCDIR_SRCS) - $(SWIG) -c++ -allegrocl $(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) +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 ALLEGRO CL example +# Build statically linked Python interpreter +# +# These should only be used in conjunction with the %include embed.i +# library file # ----------------------------------------------------------------- -allegrocl_run: - $(RUNTOOL) $(ALLEGROCL) -batch -s $(ALLEGROCL_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) -allegrocl_version: - $(ALLEGROCL) --version +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 ALLEGRO CL examples +# Running a Python example # ----------------------------------------------------------------- -allegrocl_clean: - rm -f *_wrap* *~ .~* - rm -f core @EXTRA_CLEAN@ - rm -f *.@OBJEXT@ *@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 @@ -1375,279 +1409,201 @@ r_clean: rm -f $(RRSRC) $(RUNME).Rout .RData ################################################################## -##### SCILAB ###### +##### RUBY ###### ################################################################## -SCILAB = @SCILAB@ -SCILAB_INC= @SCILABINCLUDE@ -SCILAB_OPT = @SCILABOPT@ -SCILAB_LIBPREFIX = lib +# 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 # ---------------------------------------------------------------- -scilab: - $(SWIG) -scilab $(SWIGOPT) -o $(ISRCS) $(INTERFACEPATH) - $(CC) -g -c $(CCSHARED) $(CPPFLAGS) $(CFLAGS) $(SCILAB_INC) $(INCLUDES) $(ISRCS) $(SRCDIR_SRCS) $(SRCDIR_CSRCS) - $(LDSHARED) $(CFLAGS) $(LDFLAGS) $(IOBJS) $(OBJS) $(LIBS) -o $(SCILAB_LIBPREFIX)$(TARGET)$(SO) +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 -# ---------------------------------------------------------------- +# ----------------------------------------------------------------- -scilab_cpp: - $(SWIG) -c++ -scilab $(SWIGOPT) -o $(ICXXSRCS) $(INTERFACEPATH) - $(CXX) -g -c $(CCSHARED) $(CPPFLAGS) $(CXXFLAGS) $(SCILAB_INC) $(INCLUDES) $(ICXXSRCS) $(SRCDIR_SRCS) $(SRCDIR_CXXSRCS) - $(CXXSHARED) $(CXXFLAGS) $(LDFLAGS) $(IOBJS) $(OBJS) $(LIBS) $(CPP_DLLIBS) -o $(SCILAB_LIBPREFIX)$(TARGET)$(SO) +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) # ----------------------------------------------------------------- -# Running a Scilab example +# Build statically linked Ruby interpreter +# +# These should only be used in conjunction with the %include embed.i +# library file # ----------------------------------------------------------------- -scilab_run: - env LD_LIBRARY_PATH=$$PWD $(RUNTOOL) $(SCILAB) $(SCILAB_OPT) -f $(SRCDIR)$(RUNME).sci $(RUNPIPE) +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) # ----------------------------------------------------------------- -# Scilab version +# Run Ruby example # ----------------------------------------------------------------- -scilab_version: - echo `$(SCILAB) -version | head -1` +ruby_run: + $(RUNTOOL) $(RUBY) $(RUBYFLAGS) -I. $(RUBY_SCRIPT) $(RUNPIPE) # ----------------------------------------------------------------- -# Cleaning the scilab examples +# Version display # ----------------------------------------------------------------- -scilab_clean: - rm -f *_wrap* *~ .~* +ruby_version: + $(RUBY) -v + +# ----------------------------------------------------------------- +# Cleaning the Ruby examples +# ----------------------------------------------------------------- + +ruby_clean: + rm -f *_wrap* *~ .~* myruby@EXEEXT@ rm -f core @EXTRA_CLEAN@ - rm -f *.@OBJEXT@ *@SO@ - rm -f *.sce + rm -f *.@OBJEXT@ *$(RUBY_SO) ################################################################## -##### Go ###### +##### SCILAB ###### ################################################################## -# 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=) +SCILAB = @SCILAB@ +SCILAB_INC= @SCILABINCLUDE@ +SCILAB_OPT = @SCILABOPT@ +SCILAB_VERSION = @SCILAB_VERSION@ +SCILAB_LIBPREFIX = lib # ---------------------------------------------------------------- -# Build a Go module (C) +# Build a C dynamically loadable module # ---------------------------------------------------------------- -$(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)); \ - 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); \ - cp gopath/$(GOMOD)/src/runme/runme $(RUNME); \ - fi +scilab: + $(SWIG) -scilab $(SWIGOPT) -o $(ISRCS) $(INTERFACEPATH) + $(CC) -g -c $(CCSHARED) $(CPPFLAGS) $(CFLAGS) $(SCILAB_INC) $(INCLUDES) $(ISRCS) $(SRCDIR_SRCS) $(SRCDIR_CSRCS) + $(LDSHARED) $(CFLAGS) $(LDFLAGS) $(IOBJS) $(OBJS) $(LIBS) -o $(SCILAB_LIBPREFIX)$(TARGET)$(SO) # ---------------------------------------------------------------- -# Build a Go module (C++) +# Build a C++ dynamically loadable module # ---------------------------------------------------------------- -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)); \ - 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); \ - cp gopath/$(GOMOD)/src/runme/runme $(RUNME); \ - fi +scilab_cpp: + $(SWIG) -c++ -scilab $(SWIGOPT) -o $(ICXXSRCS) $(INTERFACEPATH) + $(CXX) -g -c $(CCSHARED) $(CPPFLAGS) $(CXXFLAGS) $(SCILAB_INC) $(INCLUDES) $(ICXXSRCS) $(SRCDIR_SRCS) $(SRCDIR_CXXSRCS) + $(CXXSHARED) $(CXXFLAGS) $(LDFLAGS) $(IOBJS) $(OBJS) $(LIBS) $(CPP_DLLIBS) -o $(SCILAB_LIBPREFIX)$(TARGET)$(SO) # ----------------------------------------------------------------- -# Running Go example +# Running a Scilab example # ----------------------------------------------------------------- -go_run: - env $(RUNTOOL) ./$(RUNME) $(RUNPIPE) +scilab_run: + env LD_LIBRARY_PATH=$$PWD $(RUNTOOL) $(SCILAB) $(SCILAB_OPT) -f $(SRCDIR)$(RUNME).sci $(RUNPIPE) # ----------------------------------------------------------------- -# Version display +# Scilab version # ----------------------------------------------------------------- -go_version: - $(GO) $(GOVERSIONOPTION) +scilab_version: + echo `$(SCILAB) -nwni -version | head -1` # ----------------------------------------------------------------- -# Cleaning the Go examples +# Cleaning the scilab examples # ----------------------------------------------------------------- -go_clean: - rm -f *_wrap* *_gc* *.gox .~* $(RUNME) $(GOSRCS) - rm -rf gopath +scilab_clean: + rm -f *_wrap* *~ .~* rm -f core @EXTRA_CLEAN@ - rm -f *.@OBJEXT@ *.[568] *.a *@SO@ + rm -f *.@OBJEXT@ *@SO@ + rm -f *.sce ################################################################## -##### 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: - # Needs improvement! - echo D version guess - $(D_VERSION) +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) |