| # ------------------------------------------------------------ |
| # SWIG Examples Makefile |
| # |
| # This file is used by the examples to build modules. Assuming |
| # you ran configure, this file will probably work. However, |
| # it's not perfect so you might need to do some hand tweaking. |
| # |
| # Other notes: |
| # |
| # 1. Take a look at the prefixes below. Since SWIG works with |
| # multiple target languages, you may need to find out where |
| # certain packages have been installed. Set the prefixes |
| # accordingly. |
| # |
| # 2. To use this makefile, simply set SRCS, INTERFACE, INCLUDE, LIBS, |
| # TARGET, and do a |
| # $(MAKE) -f Makefile.template.in SRCS='$(SRCS)' \ |
| # INCLUDE='$(INCLUDE) LIBS='$(LIBS)' INTERFACE='$(INTERFACE)' \ |
| # TARGET='$(TARGET)' method |
| # |
| # 'method' describes what is being built. |
| #--------------------------------------------------------------- |
| |
| TARGET = |
| CC = @CC@ |
| CXX = @CXX@ |
| CFLAGS = |
| prefix = @prefix@ |
| exec_prefix= @exec_prefix@ |
| SRCS = |
| INCLUDE = |
| LIBS = |
| INTERFACE = |
| SWIGOPT = |
| SWIG = swig@release_suffix@ |
| |
| LIBM = @LIBM@ |
| LIBC = @LIBC@ |
| LIBCRYPT = @LIBCRYPT@ |
| SYSLIBS = $(LIBM) $(LIBC) $(LIBCRYPT) |
| |
| libtool_comp = $(TOP)/../Tools/libtool --mode compile |
| libtool_link = $(TOP)/../Tools/libtool --mode link |
| |
| # X11 options |
| |
| XLIB = @XLIBSW@ |
| XINCLUDE = @XINCLUDES@ |
| |
| ISRCS = $(INTERFACE:.i=_wrap.c) |
| |
| ################################################################## |
| # Dynamic loading for C++ |
| # If you are going to be building dynamic loadable modules in C++, |
| # you may need to edit this line appropriately. |
| # |
| # This line works for g++, but I'm not sure what it might be |
| # for other C++ compilers |
| ################################################################## |
| |
| CPP_DLLIBS = #-L/usr/local/lib/gcc-lib/sparc-sun-solaris2.5.1/2.7.2 \ |
| -L/usr/local/lib -lg++ -lstdc++ -lgcc |
| |
| # Solaris workshop 5.0 |
| # CPP_DLLIBS = -L/opt/SUNWspro/lib -lCrun |
| |
| # Symbols used for using shared libraries |
| SO= @SO@ |
| LDSHARED= @LDSHARED@ |
| CCSHARED= @CCSHARED@ |
| CXXSHARED= @CXXSHARED@ |
| |
| # This is used for building shared libraries with a number of C++ |
| # compilers. If it doesn't work, comment it out. |
| |
| @TRYLINKINGWITHCXX@ |
| |
| OBJS = $(SRCS:.c=.o) $(CXXSRCS:.cxx=.o) |
| IOBJS = $(ISRCS:.c=.o) |
| |
| ################################################################## |
| ##### Tcl/Tk ###### |
| ################################################################## |
| |
| # Set these to your local copy of Tcl/Tk. |
| |
| TCL_INCLUDE = @TCLINCLUDE@ |
| TCL_LIB = @TCLLIB@ |
| TCL_OPTS = @LIBS@ |
| TK_OPTS = -ltk -ltcl @LIBS@ |
| |
| # ----------------------------------------------------------- |
| # Build a new version of the tclsh shell |
| # ----------------------------------------------------------- |
| |
| |
| tclsh: $(SRCS) |
| $(SWIG) -tcl8 $(SWIGOPT) $(TCL_SWIGOPTS) -ltclsh.i $(INTERFACE) |
| $(CC) $(CFLAGS) $(SRCS) $(ISRCS) $(INCLUDE) $(TCL_INCLUDE) \ |
| $(TCL_LIB) $(TCL_OPTS) $(LIBS) $(SYSLIBS) -o $(TARGET) |
| |
| tclsh_cpp: $(SRCS) |
| $(SWIG) -tcl8 -c++ $(SWIGOPT) $(TCL_SWIGOPTS) -ltclsh.i $(INTERFACE) |
| $(CXX) $(CFLAGS) $(SRCS) $(CXXSRCS) $(ISRCS) $(INCLUDE) $(TCL_INCLUDE) \ |
| $(TCL_LIB) $(TCL_OPTS) $(LIBS) $(SYSLIBS) -o $(TARGET) |
| |
| # ----------------------------------------------------------- |
| # Build a new copy of wish |
| # ----------------------------------------------------------- |
| |
| wish: $(SRCS) |
| $(SWIG) -tcl8 $(SWIGOPT) $(TCL_SWIGOPTS) -lwish.i $(INTERFACE) |
| $(CC) $(CFLAGS) $(SRCS) $(ISRCS) $(INCLUDE) $(TCL_INCLUDE) \ |
| $(XINCLUDE) $(TCL_LIB) $(TK_OPTS) $(XLIB) $(LIBS) $(SYSLIBS) -o $(TARGET) |
| |
| |
| wish_cpp: $(SRCS) |
| $(SWIG) -tcl8 -c++ $(SWIGOPT) $(TCL_SWIGOPTS) -lwish.i $(INTERFACE) |
| $(CXX) $(CFLAGS) $(SRCS) $(CXXSRCS) $(ISRCS) $(INCLUDE) $(TCL_INCLUDE) \ |
| $(XINCLUDE) $(TCL_LIB) $(TK_OPTS) $(XLIB) $(LIBS) $(SYSLIBS) -o $(TARGET) |
| |
| # ----------------------------------------------------------- |
| # Build a Tcl dynamic loadable module (you might need to tweak this) |
| # ----------------------------------------------------------- |
| |
| tcl: $(SRCS) |
| $(SWIG) -tcl8 $(SWIGOPT) $(TCL_SWIGOPTS) $(INTERFACE) |
| $(CC) -c $(CCSHARED) $(CFLAGS) $(SRCS) $(ISRCS) $(INCLUDE) $(TCL_INCLUDE) |
| $(LDSHARED) $(OBJS) $(IOBJS) $(LIBS) -o $(TARGET)$(SO) |
| |
| # ----------------------------------------------------------- |
| # Build a Tcl7.5 dynamic loadable module for C++ |
| # ----------------------------------------------------------- |
| |
| tcl_cpp: $(SRCS) |
| $(SWIG) -tcl8 -c++ $(SWIGOPT) $(TCL_SWIGOPTS) $(INTERFACE) |
| $(CXX) -c $(CCSHARED) $(CFLAGS) $(SRCS) $(CXXSRCS) $(ISRCS) $(INCLUDE) $(TCL_INCLUDE) |
| $(CXXSHARED) $(OBJS) $(IOBJS) $(LIBS) $(CPP_DLLIBS) -o $(TARGET)$(SO) |
| |
| ################################################################## |
| ##### 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@ |
| |
| |
| # ---------------------------------------------------------------- |
| # Build a Perl5 dynamically loadable module (C) |
| # ---------------------------------------------------------------- |
| |
| perl5: $(SRCS) |
| $(SWIG) -perl5 $(SWIGOPT) $(INTERFACE) |
| $(CC) -c -Dbool=char $(CCSHARED) $(CFLAGS) $(SRCS) $(ISRCS) $(INCLUDE) -I$(PERL5_INCLUDE) |
| $(LDSHARED) $(OBJS) $(IOBJS) $(LIBS) -o $(TARGET)$(SO) |
| |
| # ---------------------------------------------------------------- |
| # Build a Perl5 dynamically loadable module (C++) |
| # ---------------------------------------------------------------- |
| |
| perl5_cpp: $(SRCS) |
| $(SWIG) -perl5 -c++ $(SWIGOPT) $(INTERFACE) |
| $(CXX) -c $(CCSHARED) $(CFLAGS) -Dexplicit= $(SRCS) $(CXXSRCS) $(ISRCS) $(INCLUDE) -I$(PERL5_INCLUDE) |
| $(CXXSHARED) $(OBJS) $(IOBJS) $(LIBS) $(CPP_DLLIBS) -o $(TARGET)$(SO) |
| |
| # ---------------------------------------------------------------- |
| # Build a module from existing XS C source code. (ie. from xsubpp). |
| # ---------------------------------------------------------------- |
| perl5_xs: $(SRCS) |
| $(CC) -c $(CCSHARED) $(CFLAGS) $(SRCS) $(INCLUDE) -I$(PERL5_INCLUDE) |
| $(LDSHARED) $(OBJS) $(LIBS) -o $(TARGET)$(SO) |
| |
| # ---------------------------------------------------------------- |
| # Build a statically linked Perl5 executable |
| # ---------------------------------------------------------------- |
| |
| PERL5_LIB = -L$(PERL5_INCLUDE) -lperl @LIBS@ $(SYSLIBS) |
| |
| perl5_static: $(SRCS) |
| $(SWIG) -perl5 -static -lperlmain.i $(SWIGOPT) $(INTERFACE) |
| $(CC) $(CFLAGS) -Dbool=char $(SRCS) $(ISRCS) $(INCLUDE) -I$(PERL5_INCLUDE) $(PERL5_LIB) $(LIBS) -o $(TARGET) |
| |
| perl5_static_cpp: $(SRCS) |
| $(SWIG) -perl5 -c++ -static -lperlmain.i $(SWIGOPT) $(INTERFACE) |
| $(CXX) $(CFLAGS) -Dexplicit= $(SRCS) $(CXXSRCS) $(ISRCS) $(INCLUDE) -I$(PERL5_INCLUDE) $(PERL5_LIB) $(LIBS) -o $(TARGET) |
| |
| |
| ################################################################## |
| ##### PYTHON ###### |
| ################################################################## |
| |
| # Make sure these locate your Python installation |
| PYTHON_INCLUDE= -DHAVE_CONFIG_H @PYINCLUDE@ |
| PYTHON_LIB = @PYLIB@ |
| |
| # ---------------------------------------------------------------- |
| # Build a C dynamically loadable module |
| # ---------------------------------------------------------------- |
| |
| python: $(SRCS) |
| $(SWIG) -python $(SWIGOPT) $(INTERFACE) |
| $(CC) -c $(CCSHARED) $(CFLAGS) $(ISRCS) $(SRCS) $(INCLUDE) $(PYTHON_INCLUDE) |
| $(LDSHARED) $(OBJS) $(IOBJS) $(LIBS) -o $(TARGET)module$(SO) |
| |
| # ----------------------------------------------------------------- |
| # Build a C++ dynamically loadable module |
| # ----------------------------------------------------------------- |
| |
| python_cpp: $(SRCS) |
| $(SWIG) -c++ -python $(SWIGOPT) $(INTERFACE) |
| $(CXX) -c $(CCSHARED) $(CFLAGS) $(ISRCS) $(SRCS) $(CXXSRCS) $(INCLUDE) $(PYTHON_INCLUDE) |
| $(CXXSHARED) $(OBJS) $(IOBJS) $(LIBS) $(CPP_DLLIBS) -o $(TARGET)module$(SO) |
| |
| # ----------------------------------------------------------------- |
| # Build statically linked Python interpreter |
| # |
| # These should only be used in conjunction with the %include embed.i |
| # library file |
| # ----------------------------------------------------------------- |
| |
| #TKINTER = -L/usr/X11R6.3/lib -L/usr/local/compat/lib -ltk4.0 -ltcl7.4 -lX11 |
| TKINTER = |
| PYTHON_LIBOPTS = @PYLINK@ @LIBS@ $(TKINTER) $(SYSLIBS) |
| |
| python_static: $(SRCS) |
| $(SWIG) -python -lembed.i $(SWIGOPT) $(INTERFACE) |
| $(CC) $(CFLAGS) @LINKFORSHARED@ $(ISRCS) $(SRCS) $(INCLUDE) \ |
| $(PYTHON_INCLUDE) $(LIBS) -L$(PYTHON_LIB) $(PYTHON_LIBOPTS) -o $(TARGET) |
| |
| python_static_cpp: $(SRCS) |
| $(SWIG) -c++ -python -lembed.i $(SWIGOPT) $(INTERFACE) |
| $(CXX) $(CFLAGS) $(ISRCS) $(SRCS) $(CXXSRCS) $(INCLUDE) \ |
| $(PYTHON_INCLUDE) $(LIBS) -L$(PYTHON_LIB) $(PYTHON_LIBOPTS) -o $(TARGET) |
| |
| |
| ################################################################## |
| ##### GUILE ###### |
| ################################################################## |
| |
| # Make sure these locate your Guile installation |
| GUILE_INCLUDE = @GUILEINCLUDE@ |
| GUILE_LIB = @GUILELIB@ |
| |
| # ---------------------------------------------------------------- |
| # Build a C dynamically loadable module |
| # ---------------------------------------------------------------- |
| |
| guile: $(SRCS) |
| $(SWIG) -guile -Linkage ltdlmod $(SWIGOPT) $(INTERFACE) |
| $(CC) -c $(CCSHARED) $(CFLAGS) $(INCLUDE) $(GUILE_INCLUDE) $(ISRCS) $(SRCS) |
| $(LDSHARED) $(OBJS) $(IOBJS) $(LIBS) -o lib$(TARGET)$(SO) |
| |
| # ----------------------------------------------------------------- |
| # Build a C++ dynamically loadable module |
| # ----------------------------------------------------------------- |
| |
| guile_cpp: $(SRCS) |
| $(SWIG) -c++ -guile -Linkage ltdlmod $(SWIGOPT) $(INTERFACE) |
| $(CXX) -c $(CCSHARED) $(CFLAGS) $(INCLUDE) $(GUILE_INCLUDE) $(ISRCS) $(SRCS) $(CXXSRCS) |
| $(CXXSHARED) $(OBJS) $(IOBJS) $(LIBS) -o lib$(TARGET)$(SO) |
| |
| # ----------------------------------------------------------------- |
| # Build statically linked Guile interpreter |
| # ----------------------------------------------------------------- |
| |
| GUILE_LIBOPTS = @GUILELINK@ @LIBS@ $(SYSLIBS) |
| |
| guile_static: $(SRCS) |
| $(SWIG) -guile -lguilemain.i -Linkage ltdlmod $(SWIGOPT) $(INTERFACE) |
| $(CC) $(CFLAGS) $(ISRCS) $(SRCS) $(INCLUDE) \ |
| -DSWIGINIT="SCM scm_init_$(TARGET)_module(void); scm_init_$(TARGET)_module();" \ |
| $(GUILE_INCLUDE) $(LIBS) -L$(GUILE_LIB) $(GUILE_LIBOPTS) -o $(TARGET)-guile |
| |
| guile_static_cpp: $(SRCS) |
| $(SWIG) -c++ -guile -lguilemain.i -Linkage ltdlmod $(SWIGOPT) $(INTERFACE) |
| $(CXX) $(CFLAGS) $(ISRCS) $(SRCS) $(CXXSRCS) $(INCLUDE) \ |
| -DSWIGINIT="SCM scm_init_$(TARGET)_module(void); scm_init_$(TARGET)_module();" \ |
| $(GUILE_INCLUDE) $(LIBS) -L$(GUILE_LIB) $(GUILE_LIBOPTS) -o $(TARGET)-guile |
| |
| |
| ################################################################## |
| ##### JAVA ###### |
| ################################################################## |
| |
| # You need to set this variable to the java directories containing the |
| # files "jni.h" and "md.h" |
| # usually something like /usr/java/include and /usr/java/include/<arch-osname>. |
| |
| JAVA_INCLUDE= @JAVAINC@ |
| |
| # ---------------------------------------------------------------- |
| # Build a java dynamically loadable module (C) |
| # ---------------------------------------------------------------- |
| |
| java: $(SRCS) |
| $(SWIG) -java $(SWIGOPT) $(INTERFACE) |
| $(CC) -c $(CCSHARED) $(CFLAGS) $(SRCS) $(ISRCS) $(INCLUDE) $(JAVA_INCLUDE) |
| $(LDSHARED) $(OBJS) $(IOBJS) $(LIBS) -o $(TARGET)$(SO) |
| |
| # ---------------------------------------------------------------- |
| # Build a java dynamically loadable module (C++) |
| # ---------------------------------------------------------------- |
| |
| java_cpp: $(SRCS) |
| $(SWIG) -java -c++ $(SWIGOPT) $(INTERFACE) |
| $(CXX) -c $(CCSHARED) $(CFLAGS) $(SRCS) $(CXXSRCS) $(ISRCS) $(INCLUDE) $(JAVA_INCLUDE) |
| $(CXXSHARED) $(OBJS) $(IOBJS) $(LIBS) $(CPP_DLLIBS) -o $(TARGET)$(SO) |
| |
| ################################################################## |
| ##### MZSCHEME ###### |
| ################################################################## |
| |
| # ---------------------------------------------------------------- |
| # Build a C dynamically loadable module |
| # ---------------------------------------------------------------- |
| |
| MZC = test -n "@MZC@" && @MZC@ |
| |
| mzscheme: $(SRCS) |
| $(SWIG) -mzscheme $(SWIGOPT) $(INTERFACE) |
| $(MZC) --cc $(ISRCS) $(SRCS) |
| $(MZC) --ld $(TARGET)$(SO) $(OBJS) $(IOBJS) |
| |
| ################################################################## |
| ##### RUBY ###### |
| ################################################################## |
| |
| # Make sure these locate your Ruby installation |
| RUBY_CFLAGS= @RUBYCCDLFLAGS@ -DHAVE_CONFIG_H |
| RUBY_INCLUDE= @RUBYINCLUDE@ |
| RUBY_LIB = @RUBYLIB@ |
| RUBY_LIBOPTS = @RUBYLINK@ @LIBS@ $(SYSLIBS) |
| RUBY_LIBRUBYARG= @RUBYLIBRUBYARG@ |
| |
| # ---------------------------------------------------------------- |
| # Build a C dynamically loadable module |
| # ---------------------------------------------------------------- |
| |
| ruby: $(SRCS) |
| $(SWIG) -ruby $(SWIGOPT) $(INTERFACE) |
| $(CC) -c $(CCSHARED) $(CFLAGS) $(RUBY_CFLAGS) $(ISRCS) $(SRCS) $(INCLUDE) $(RUBY_INCLUDE) |
| $(LDSHARED) $(OBJS) $(IOBJS) $(LIBS) $(RUBY_LIBRUBYARG) -o $(TARGET)$(SO) |
| |
| # ----------------------------------------------------------------- |
| # Build a C++ dynamically loadable module |
| # ----------------------------------------------------------------- |
| |
| ruby_cpp: $(SRCS) |
| $(SWIG) -c++ -ruby $(SWIGOPT) $(INTERFACE) |
| $(CXX) -c $(CCSHARED) $(CFLAGS) $(RUBY_CFLAGS) $(ISRCS) $(SRCS) $(CXXSRCS) $(INCLUDE) $(RUBY_INCLUDE) |
| $(CXXSHARED) $(OBJS) $(IOBJS) $(LIBS) $(CPP_DLLIBS) $(RUBY_LIBRUBYARG) -o $(TARGET)$(SO) |
| |
| # ----------------------------------------------------------------- |
| # Build statically linked Ruby interpreter |
| # |
| # These should only be used in conjunction with the %include embed.i |
| # library file |
| # ----------------------------------------------------------------- |
| |
| ruby_static: $(SRCS) |
| $(SWIG) -ruby -lembed.i $(SWIGOPT) $(INTERFACE) |
| $(CC) $(CFLAGS) $(RUBY_CFLAGS) @LINKFORSHARED@ $(ISRCS) $(SRCS) $(INCLUDE) \ |
| $(RUBY_INCLUDE) $(LIBS) -L$(RUBY_LIB) $(RUBY_LIBOPTS) -o $(TARGET) |
| |
| ruby_cpp_static: $(SRCS) |
| $(SWIG) -c++ -ruby -lembed.i $(SWIGOPT) $(INTERFACE) |
| $(CXX) $(CFLAGS) $(RUBY_CFLAGS) $(ISRCS) $(SRCS) $(CXXSRCS) $(INCLUDE) \ |
| $(RUBY_INCLUDE) $(LIBS) -L$(RUBY_LIB) $(RUBY_LIBOPTS) -o $(TARGET) |
| |
| |
| ################################################################## |
| ##### SWIG ###### |
| ################################################################## |
| |
| # Build a new SWIG extension |
| |
| SWIGINCLUDE = -I${prefix}/include |
| SWIGLIB = -L${exec_prefix}/lib |
| |
| swig: $(SRCS) |
| $(CXX) $(SRCS) $(SWIGINCLUDE) $(INCLUDE) $(SWIGLIB) $(LIBS) -lswig -o $(TARGET) |
| |