import source from 1.3.40
[external/swig.git] / Examples / Makefile.in
1 # ------------------------------------------------------------
2 # SWIG Examples Makefile
3 #
4 # This file is used by the examples to build modules.  Assuming
5 # you ran configure, this file will probably work.  However,
6 # it's not perfect so you might need to do some hand tweaking.
7 #
8 # Other notes:
9 #
10 # 1.   Take a look at the prefixes below.   Since SWIG works with
11 #      multiple target languages, you may need to find out where
12 #      certain packages have been installed.   Set the prefixes
13 #      accordingly.
14 #
15 # 2.   To use this makefile, set required varibles, eg SRCS, INTERFACE, 
16 #      INTERFACEDIR, INCLUDES, LIBS, TARGET, and do a
17 #           $(MAKE) -f Makefile.template.in SRCS='$(SRCS)' \
18 #           INCLUDES='$(INCLUDES) LIBS='$(LIBS)' INTERFACE='$(INTERFACE)' \
19 #           INTERFACEDIR='$(INTERFACEDIR)' TARGET='$(TARGET)' method
20 #
21 #      'method' describes what is being built.
22 #---------------------------------------------------------------
23
24 TARGET     =
25 CC         = @CC@
26 CXX        = @CXX@
27 CFLAGS     = @PLATFLAGS@
28 prefix     = @prefix@
29 exec_prefix= @exec_prefix@
30 SRCS       =
31 INCLUDES   =
32 LIBS       =
33 INTERFACE  =
34 INTERFACEDIR  =
35 INTERFACEPATH = $(INTERFACEDIR)$(INTERFACE)
36 SWIGOPT    =
37 SWIG       = swig
38
39 LIBM       = @LIBM@
40 LIBC       = @LIBC@
41 LIBCRYPT   = @LIBCRYPT@
42 SYSLIBS    = $(LIBM) $(LIBC) $(LIBCRYPT)
43 LIBPREFIX  =
44
45 # RUNTOOL is for use with runtime tools, eg set it to valgrind
46 RUNTOOL    =
47 # COMPILETOOL is a way to run the compiler under another tool, or more commonly just to stop the compiler executing
48 COMPILETOOL=
49
50 # X11 options
51
52 XLIB       = @XLIBSW@
53 XINCLUDE   = @XINCLUDES@
54
55 IWRAP      = $(INTERFACE:.i=_wrap.i)
56 ISRCS      = $(IWRAP:.i=.c)
57 ICXXSRCS   = $(IWRAP:.i=.cxx)
58 IOBJS      = $(IWRAP:.i=.@OBJEXT@)
59
60 ##################################################################
61 # Dynamic loading for C++
62 # If you are going to be building dynamic loadable modules in C++,
63 # you may need to edit this line appropriately.
64 #
65 # This line works for g++, but I'm not sure what it might be
66 # for other C++ compilers
67 ##################################################################
68
69 CPP_DLLIBS = #-L/usr/local/lib/gcc-lib/sparc-sun-solaris2.5.1/2.7.2 \
70              -L/usr/local/lib -lg++ -lstdc++ -lgcc
71
72 # Solaris workshop 5.0 
73 # CPP_DLLIBS = -L/opt/SUNWspro/lib -lCrun
74
75 # Symbols used for using shared libraries
76 SO=             @SO@
77 LDSHARED=       @LDSHARED@
78 CCSHARED=       @CCSHARED@
79 CXXSHARED=      @CXXSHARED@
80
81 # This is used for building shared libraries with a number of C++
82 # compilers.   If it doesn't work,  comment it out.
83 @TRYLINKINGWITHCXX@
84
85 OBJS      = $(SRCS:.c=.@OBJEXT@) $(CXXSRCS:.cxx=.@OBJEXT@)
86
87 ##################################################################
88 #####                       Tcl/Tk                          ######
89 ##################################################################
90
91 # Set these to your local copy of Tcl/Tk.
92
93 TCL_INCLUDE = @TCLINCLUDE@
94 TCL_LIB     = @TCLLIB@
95 TCL_OPTS    = @LIBS@
96 TK_OPTS     = -ltk -ltcl @LIBS@
97
98 # Extra Tcl specific dynamic linking options
99 TCL_DLNK   = @TCLDYNAMICLINKING@
100 TCL_SO     = @TCL_SO@
101 TCLLDSHARED = @TCLLDSHARED@
102 TCLCXXSHARED = @TCLCXXSHARED@
103
104 # -----------------------------------------------------------
105 # Build a new version of the tclsh shell
106 # -----------------------------------------------------------
107
108
109 tclsh: $(SRCS)
110         $(SWIG) -tcl8 $(SWIGOPT) $(TCL_SWIGOPTS) -ltclsh.i $(INTERFACEPATH)
111         $(CC) $(CFLAGS) $(SRCS) $(ISRCS) $(INCLUDES) $(TCL_INCLUDE) \
112         $(TCL_LIB)  $(TCL_OPTS) $(LIBS) $(SYSLIBS) -o $(TARGET)
113
114 tclsh_cpp: $(SRCS)
115         $(SWIG) -tcl8 -c++ $(SWIGOPT) $(TCL_SWIGOPTS) -ltclsh.i $(INTERFACEPATH)
116         $(CXX) $(CFLAGS) $(SRCS) $(CXXSRCS) $(ICXXSRCS) $(INCLUDES) $(TCL_INCLUDE) \
117         $(TCL_LIB) $(TCL_OPTS) $(LIBS) $(SYSLIBS) -o $(TARGET)
118
119 # -----------------------------------------------------------
120 # Build a new copy of wish
121 # -----------------------------------------------------------
122
123 wish: $(SRCS)
124         $(SWIG) -tcl8 $(SWIGOPT) $(TCL_SWIGOPTS) -lwish.i $(INTERFACEPATH)
125         $(CC) $(CFLAGS) $(SRCS) $(ISRCS) $(INCLUDES) $(TCL_INCLUDE) \
126         $(XINCLUDE) $(TCL_LIB) $(TK_OPTS) $(XLIB) $(LIBS) $(SYSLIBS) -o $(TARGET)
127
128
129 wish_cpp: $(SRCS)
130         $(SWIG) -tcl8 -c++ $(SWIGOPT) $(TCL_SWIGOPTS) -lwish.i $(INTERFACEPATH)
131         $(CXX) $(CFLAGS) $(SRCS) $(CXXSRCS) $(ICXXSRCS) $(INCLUDES) $(TCL_INCLUDE) \
132         $(XINCLUDE) $(TCL_LIB) $(TK_OPTS) $(XLIB) $(LIBS) $(SYSLIBS) -o $(TARGET)
133
134 # -----------------------------------------------------------
135 # Build a Tcl dynamic loadable module (you might need to tweak this)
136 # -----------------------------------------------------------
137
138 tcl:  $(SRCS)
139         $(SWIG) -tcl8 $(SWIGOPT) $(TCL_SWIGOPTS) $(INTERFACEPATH)
140         $(CC) -c $(CCSHARED) $(CFLAGS) $(SRCS) $(ISRCS) $(INCLUDES) $(TCL_INCLUDE)
141         $(TCLLDSHARED) $(CFLAGS) $(OBJS) $(IOBJS) $(TCL_DLNK) $(LIBS) -o $(LIBPREFIX)$(TARGET)$(TCL_SO)
142
143 # -----------------------------------------------------------
144 # Build a Tcl7.5 dynamic loadable module for C++
145 # -----------------------------------------------------------
146
147 tcl_cpp: $(SRCS)
148         $(SWIG) -tcl8 -c++ $(SWIGOPT) $(TCL_SWIGOPTS) $(INTERFACEPATH)
149         $(CXX) -c $(CCSHARED) $(CFLAGS) $(SRCS) $(CXXSRCS) $(ICXXSRCS) $(INCLUDES) $(TCL_INCLUDE)
150         $(TCLCXXSHARED) $(CFLAGS) $(OBJS) $(IOBJS) $(TCL_DLNK) $(LIBS) $(CPP_DLLIBS) -o $(LIBPREFIX)$(TARGET)$(TCL_SO)
151
152 # -----------------------------------------------------------------
153 # Cleaning the Tcl examples
154 # -----------------------------------------------------------------
155
156 tcl_clean:
157         rm -f *_wrap* *~ .~* mytclsh@EXEEXT@ 
158         rm -f core @EXTRA_CLEAN@
159         rm -f *.@OBJEXT@ *@SO@
160
161 ##################################################################
162 #####                       PERL 5                          ######
163 ##################################################################
164
165 # You need to set this variable to the Perl5 directory containing the
166 # files "perl.h", "EXTERN.h" and "XSUB.h".   With Perl5.003, it's
167 # usually something like /usr/local/lib/perl5/arch-osname/5.003/CORE.
168
169 PERL5_INCLUDE= @PERL5EXT@
170
171 # Extra Perl specific dynamic linking options
172 PERL5_DLNK   = @PERL5DYNAMICLINKING@
173 PERL5_CCFLAGS = @PERL5CCFLAGS@
174
175 # ----------------------------------------------------------------
176 # Build a Perl5 dynamically loadable module (C)
177 # ----------------------------------------------------------------
178
179 perl5: $(SRCS)
180         $(SWIG) -perl5 $(SWIGOPT) $(INTERFACEPATH)
181         $(CC) -c -Dbool=char $(CCSHARED) $(CFLAGS) $(SRCS) $(ISRCS) $(INCLUDES) $(PERL5_CCFLAGS) -I$(PERL5_INCLUDE)
182         $(LDSHARED) $(CFLAGS) $(OBJS) $(IOBJS) $(PERL5_DLNK) $(LIBS) -o $(LIBPREFIX)$(TARGET)$(SO)
183
184 # ----------------------------------------------------------------
185 # Build a Perl5 dynamically loadable module (C++)
186 # ----------------------------------------------------------------
187
188 perl5_cpp: $(SRCS)
189         $(SWIG) -perl5 -c++ $(SWIGOPT) $(INTERFACEPATH)
190         $(CXX) -c $(CCSHARED) $(CFLAGS) $(SRCS) $(CXXSRCS) $(ICXXSRCS) $(INCLUDES) $(PERL5_CCFLAGS) -I$(PERL5_INCLUDE)
191         $(CXXSHARED) $(CFLAGS) $(OBJS) $(IOBJS) $(PERL5_DLNK) $(LIBS) $(CPP_DLLIBS) -o $(LIBPREFIX)$(TARGET)$(SO)
192
193 # ----------------------------------------------------------------
194 # Build a module from existing XS C source code.   (ie. from xsubpp).
195 # ----------------------------------------------------------------
196 perl5_xs: $(SRCS)
197         $(CC) -c $(CCSHARED) $(CFLAGS) $(SRCS) $(INCLUDES) -I$(PERL5_INCLUDE)
198         $(LDSHARED) $(CFLAGS) $(OBJS) $(LIBS) -o $(TARGET)$(SO)
199
200 # ----------------------------------------------------------------
201 # Build a statically linked Perl5 executable
202 # ----------------------------------------------------------------
203
204 PERL5_LIB    = -L$(PERL5_INCLUDE) -l@PERL5LIB@ @LIBS@ $(SYSLIBS)
205
206 perl5_static: $(SRCS)
207         $(SWIG) -perl5 -static -lperlmain.i $(SWIGOPT) $(INTERFACEPATH)
208         $(CC) $(CFLAGS) -Dbool=char $(SRCS) $(ISRCS) $(INCLUDES) -I$(PERL5_INCLUDE) $(PERL5_LIB) $(LIBS) -o $(TARGET)
209
210 perl5_static_cpp: $(SRCS)
211         $(SWIG) -perl5 -c++ -static -lperlmain.i $(SWIGOPT) $(INTERFACEPATH)
212         $(CXX) $(CFLAGS) $(SRCS) $(CXXSRCS) $(ICXXSRCS) $(INCLUDES) -I$(PERL5_INCLUDE) $(PERL5_LIB) $(LIBS) -o $(TARGET)
213
214 # -----------------------------------------------------------------
215 # Cleaning the Perl5 examples
216 # -----------------------------------------------------------------
217
218 perl5_clean:
219         rm -f *_wrap* *~ .~* myperl@EXEEXT@ *.pm
220         rm -f core @EXTRA_CLEAN@
221         rm -f *.@OBJEXT@ *@SO@
222
223 ##################################################################
224 #####                       PYTHON                          ######
225 ##################################################################
226
227 # Make sure these locate your Python installation
228 ifeq (,$(PY3))
229   PYTHON_INCLUDE= $(DEFS) @PYINCLUDE@
230   PYTHON_LIB    = @PYLIB@
231   PYTHON        = @PYTHON@
232 else
233   PYTHON_INCLUDE= $(DEFS) @PY3INCLUDE@
234   PYTHON_LIB    = @PY3LIB@
235   PYTHON        = @PYTHON3@
236 endif
237
238 # Extra Python specific linking options
239 ifeq (,$(PY3))
240   PYTHON_DLNK   = @PYTHONDYNAMICLINKING@
241   PYTHON_LINK   = @PYLINK@
242 else
243   PYTHON_DLNK   = @PYTHON3DYNAMICLINKING@
244   PYTHON_LINK   = @PY3LINK@
245 endif
246 PYTHON_SO     = @PYTHON_SO@
247
248 # SWIG option for Python
249 ifeq (,$(PY3))
250   SWIGPYTHON = $(SWIG) -python
251 else
252   SWIGPYTHON = $(SWIG) -python -py3
253 endif
254
255 # ----------------------------------------------------------------
256 # Build a C dynamically loadable module
257 # ----------------------------------------------------------------
258
259 python: $(SRCS)
260         $(SWIGPYTHON) $(SWIGOPT) $(INTERFACEPATH)
261         $(CC) -c $(CCSHARED) $(CFLAGS) $(ISRCS) $(SRCS) $(INCLUDES) $(PYTHON_INCLUDE)
262         $(LDSHARED) $(CFLAGS) $(OBJS) $(IOBJS) $(PYTHON_DLNK) $(LIBS) -o $(LIBPREFIX)_$(TARGET)$(PYTHON_SO)
263
264 # -----------------------------------------------------------------
265 # Build a C++ dynamically loadable module
266 # -----------------------------------------------------------------
267
268 python_cpp: $(SRCS)
269         $(SWIGPYTHON) -c++ $(SWIGOPT) $(INTERFACEPATH)
270         $(CXX) -c $(CCSHARED) $(CFLAGS) $(ICXXSRCS) $(SRCS) $(CXXSRCS) $(INCLUDES) $(PYTHON_INCLUDE)
271         $(CXXSHARED) $(CFLAGS) $(OBJS) $(IOBJS) $(PYTHON_DLNK) $(LIBS) $(CPP_DLLIBS) -o $(LIBPREFIX)_$(TARGET)$(PYTHON_SO)
272
273 # -----------------------------------------------------------------
274 # Build statically linked Python interpreter
275 #
276 # These should only be used in conjunction with the %include embed.i
277 # library file
278 # -----------------------------------------------------------------
279
280 #TKINTER = -L/usr/X11R6.3/lib -L/usr/local/compat/lib -ltk4.0 -ltcl7.4 -lX11
281 TKINTER =
282 PYTHON_LIBOPTS = $(PYTHON_LINK) @LIBS@ $(TKINTER) $(SYSLIBS)
283
284 python_static: $(SRCS)
285         $(SWIGPYTHON) -lembed.i $(SWIGOPT) $(INTERFACEPATH)
286         $(CC) $(CFLAGS) @LINKFORSHARED@ $(ISRCS) $(SRCS) $(INCLUDES) \
287         $(PYTHON_INCLUDE) $(LIBS) -L$(PYTHON_LIB) $(PYTHON_LIBOPTS) -o $(TARGET)
288
289 python_static_cpp: $(SRCS)
290         $(SWIGPYTHON) -c++ -lembed.i $(SWIGOPT) $(INTERFACEPATH)
291         $(CXX) $(CFLAGS) $(ICXXSRCS) $(SRCS) $(CXXSRCS) $(INCLUDES) \
292         $(PYTHON_INCLUDE) $(LIBS)  -L$(PYTHON_LIB) $(PYTHON_LIBOPTS) -o $(TARGET)
293
294 # ----------------------------------------------------------------- 
295 # Running a Python example
296 # ----------------------------------------------------------------- 
297
298 ifeq (,$(PY3))
299   PYSCRIPT = runme.py
300 else
301   PYSCRIPT = runme3.py
302 endif
303
304 PY2TO3 = 2to3 `2to3 -l | grep -v -E "Available|import$$" | awk '{print "-f "$$0}'`
305
306 python_run: $(PYSCRIPT)
307         env LD_LIBRARY_PATH=.:$$LD_LIBRARY_PATH PYTHONPATH=$(srcdir):$$PYTHONPATH $(PYTHON) $(PYSCRIPT) >/dev/null
308
309 runme3.py: runme.py
310         cp $< $@
311         $(PY2TO3) -w $@ >/dev/null 2>&1 
312
313 # -----------------------------------------------------------------
314 # Cleaning the python examples
315 # -----------------------------------------------------------------
316
317 python_clean:
318         rm -f *_wrap* *~ .~* mypython@EXEEXT@ *.pyc
319         rm -f core @EXTRA_CLEAN@
320         rm -f *.@OBJEXT@ *@SO@ *@PYTHON_SO@
321         if [ -f runme.py ]; then rm -f runme3.py runme3.py.bak; fi
322
323
324 ##################################################################
325 #####                       OCTAVE                          ######
326 ##################################################################
327
328 # Make sure these locate your Octave installation
329 OCTAVE_INCLUDE= $(DEFS) @OCTAVEEXT@
330 OCTAVE_LIB    = 
331
332 # Extra Octave specific dynamic linking options
333 OCTAVE_DLNK   = @OCTAVEDYNAMICLINKING@
334 OCTAVE_SO     = @OCTAVE_SO@
335
336 # ----------------------------------------------------------------
337 # Build a C dynamically loadable module
338 # Note: Octave requires C++ compiler when compiling C wrappers
339 # ----------------------------------------------------------------
340
341 octave: $(SRCS)
342         $(SWIG) -octave $(SWIGOPT) $(INTERFACEPATH)
343         $(CXX) -g -c $(CCSHARED) $(CFLAGS) $(ICXXSRCS) $(INCLUDES) -I$(OCTAVE_INCLUDE)
344         $(CC) -g -c $(CCSHARED) $(CFLAGS) $(SRCS) $(INCLUDES)
345         $(LDSHARED) $(CFLAGS) $(OBJS) $(IOBJS) $(OCTAVE_DLNK) $(LIBS) -o $(LIBPREFIX)$(TARGET)$(OCTAVE_SO)
346
347 # -----------------------------------------------------------------
348 # Build a C++ dynamically loadable module
349 # -----------------------------------------------------------------
350
351 octave_cpp: $(SRCS)
352         $(SWIG) -c++ -octave $(SWIGOPT) $(INTERFACEPATH)
353         $(CXX) -g -c $(CCSHARED) $(CFLAGS) $(ICXXSRCS) $(SRCS) $(CXXSRCS) $(INCLUDES) -I$(OCTAVE_INCLUDE)
354         $(CXXSHARED) -g $(CFLAGS) $(OBJS) $(IOBJS) $(OCTAVE_DLNK) $(LIBS) $(CPP_DLLIBS) -o $(LIBPREFIX)$(TARGET)$(OCTAVE_SO)
355
356 # -----------------------------------------------------------------
357 # Cleaning the octave examples
358 # -----------------------------------------------------------------
359
360 octave_clean:
361         rm -f *_wrap* *~ .~* myoctave@EXEEXT@ *.pyc
362         rm -f core @EXTRA_CLEAN@
363         rm -f *.@OBJEXT@ *@SO@ *@OCTAVE_SO@
364
365 ##################################################################
366 #####                       GUILE                           ######
367 ##################################################################
368
369 # Make sure these locate your Guile installation
370 GUILE_INCLUDE = @GUILEINCLUDE@
371 GUILE_LIB     = @GUILELIB@
372 GUILE_SO      = @GUILE_SO@
373 GUILE_LIBPREFIX = lib
374
375 #------------------------------------------------------------------
376 # Build a dynamically loaded module with passive linkage and the scm interface
377 #------------------------------------------------------------------
378 guile: $(SRCS)
379         $(SWIG) -guile -scm -Linkage passive $(SWIGOPT) $(INTERFACEPATH)
380         $(CC) -c $(CCSHARED) $(CFLAGS) $(INCLUDES) $(GUILE_INCLUDE) $(ISRCS) $(SRCS)
381         $(LDSHARED) $(CFLAGS) $(OBJS) $(IOBJS) $(LIBS) -o $(GUILE_LIBPREFIX)$(TARGET)$(GUILE_SO)
382
383 guile_cpp: $(SRCS)
384         $(SWIG) -c++ -guile -scm -Linkage passive $(SWIGOPT) $(INTERFACEPATH)
385         $(CXX) -c $(CCSHARED) $(CFLAGS) $(INCLUDES) $(GUILE_INCLUDE) $(ICXXSRCS) $(SRCS) $(CXXSRCS)
386         $(CXXSHARED) $(CFLAGS) $(OBJS) $(IOBJS) $(LIBS) $(CPP_DLLIBS) -o $(GUILE_LIBPREFIX)$(TARGET)$(GUILE_SO)
387
388 guile_externalhdr:
389         $(SWIG) -guile -external-runtime $(TARGET)
390
391 #------------------------------------------------------------------
392 # Build a dynamically loaded module with passive linkage and the gh interface
393 #------------------------------------------------------------------
394 guile_gh: $(SRCS)
395         $(SWIG) -guile -gh -Linkage passive $(SWIGOPT) $(INTERFACEPATH)
396         $(CC) -c $(CCSHARED) $(CFLAGS) $(INCLUDES) $(GUILE_INCLUDE) $(ISRCS) $(SRCS)
397         $(LDSHARED) $(CFLAGS) $(OBJS) $(IOBJS) $(LIBS) -o $(GUILE_LIBPREFIX)$(TARGET)$(GUILE_SO)
398
399 guile_gh_cpp: $(SRCS)
400         $(SWIG) -c++ -guile -gh -Linkage passive $(SWIGOPT) $(INTERFACEPATH)
401         $(CXX) -c $(CCSHARED) $(CFLAGS) $(INCLUDES) $(GUILE_INCLUDE) $(ICXXSRCS) $(SRCS) $(CXXSRCS)
402         $(CXXSHARED) $(CFLAGS) $(OBJS) $(IOBJS) $(LIBS) $(CPP_DLLIBS) -o $(GUILE_LIBPREFIX)$(TARGET)$(GUILE_SO)
403
404 # -----------------------------------------------------------------
405 # Build a dynamically loadable module with passive linkage
406 # -----------------------------------------------------------------
407
408 guile_passive: $(SRCS)
409         $(SWIG) -guile -Linkage passive $(SWIGOPT) $(INTERFACEPATH)
410         $(CC) -c $(CCSHARED) $(CFLAGS) $(INCLUDES) $(GUILE_INCLUDE) $(ISRCS) $(SRCS)
411         $(LDSHARED) $(CFLAGS) $(OBJS) $(IOBJS) $(LIBS) -o $(GUILE_LIBPREFIX)$(TARGET)$(GUILE_SO)
412
413 guile_passive_cpp: $(SRCS)
414         $(SWIG) -c++ -guile -Linkage passive $(SWIGOPT) $(INTERFACEPATH)
415         $(CXX) -c $(CCSHARED) $(CFLAGS) $(INCLUDES) $(GUILE_INCLUDE) $(ICXXSRCS) $(SRCS) $(CXXSRCS)
416         $(CXXSHARED) $(CFLAGS) $(OBJS) $(IOBJS) $(LIBS) $(CPP_DLLIBS) -o $(GUILE_LIBPREFIX)$(TARGET)$(GUILE_SO)
417
418 # -----------------------------------------------------------------
419 # Build statically linked Guile interpreter
420 # -----------------------------------------------------------------
421
422 GUILE_LIBOPTS = @GUILELINK@ @LIBS@ $(SYSLIBS)
423
424 guile_static: $(SRCS)
425         $(SWIG) -guile -lguilemain.i -Linkage ltdlmod $(SWIGOPT) $(INTERFACEPATH)
426         $(CC) $(CFLAGS) $(ISRCS) $(SRCS) $(INCLUDES) \
427           -DSWIGINIT="SCM scm_init_$(TARGET)_module(void); scm_init_$(TARGET)_module();" \
428           $(GUILE_INCLUDE) $(LIBS) -L$(GUILE_LIB) $(GUILE_LIBOPTS) -o $(TARGET)-guile
429
430 guile_static_cpp: $(SRCS)
431         $(SWIG) -c++ -guile -lguilemain.i -Linkage ltdlmod $(SWIGOPT) $(INTERFACEPATH)
432         $(CXX) $(CFLAGS) $(ICXXSRCS) $(SRCS) $(CXXSRCS) $(INCLUDES) \
433           -DSWIGINIT="SCM scm_init_$(TARGET)_module(void); scm_init_$(TARGET)_module();" \
434           $(GUILE_INCLUDE) $(LIBS) -L$(GUILE_LIB) $(GUILE_LIBOPTS) -o $(TARGET)-guile
435
436 guile_simple: $(SRCS)
437         $(SWIG) -guile -lguilemain.i -Linkage simple $(SWIGOPT) $(INTERFACEPATH)
438         $(CC) $(CFLAGS) $(ISRCS) $(SRCS) $(INCLUDES) \
439           $(GUILE_INCLUDE) $(LIBS) -L$(GUILE_LIB) $(GUILE_LIBOPTS) -o $(TARGET)-guile
440
441 guile_simple_cpp: $(SRCS)
442         $(SWIG) -c++ -guile -lguilemain.i -Linkage simple $(SWIGOPT) $(INTERFACEPATH)
443         $(CXX) $(CFLAGS) $(ICXXSRCS) $(SRCS) $(CXXSRCS) $(INCLUDES) \
444           $(GUILE_INCLUDE) $(LIBS) -L$(GUILE_LIB) $(GUILE_LIBOPTS) -o $(TARGET)-guile
445
446 # -----------------------------------------------------------------
447 # Cleaning the Guile examples
448 # -----------------------------------------------------------------
449
450 guile_clean:
451         rm -f *_wrap* *~ .~* my-guile@EXEEXT@ $(TARGET)@EXEEXT@
452         rm -f core @EXTRA_CLEAN@
453         rm -f *.@OBJEXT@ *@GUILE_SO@
454
455 ##################################################################
456 #####                       JAVA                            ######
457 ##################################################################
458
459 # You need to set this variable to the java directories containing the
460 # files "jni.h" and "md.h"
461 # usually something like /usr/java/include and /usr/java/include/<arch-osname>.
462 JAVA_INCLUDE= @JAVAINC@
463
464 # Extra Java specific dynamic linking options
465 JAVA_DLNK  = @JAVADYNAMICLINKING@
466 JAVA_LIBPREFIX = @JAVALIBRARYPREFIX@
467 JAVASO =@JAVASO@
468 JAVALDSHARED = @JAVALDSHARED@
469 JAVACXXSHARED = @JAVACXXSHARED@
470 JAVACFLAGS = @JAVACFLAGS@
471
472 # ----------------------------------------------------------------
473 # Build a java dynamically loadable module (C)
474 # ----------------------------------------------------------------
475
476 java: $(SRCS)
477         $(SWIG) -java $(SWIGOPT) $(INTERFACEPATH)
478         $(CC) -c $(CCSHARED) $(CFLAGS) $(JAVACFLAGS) $(SRCS) $(ISRCS) $(INCLUDES) $(JAVA_INCLUDE)
479         $(JAVALDSHARED) $(CFLAGS) $(OBJS) $(IOBJS) $(JAVA_DLNK) $(LIBS) -o $(JAVA_LIBPREFIX)$(TARGET)$(JAVASO)
480
481 # ----------------------------------------------------------------
482 # Build a java dynamically loadable module (C++)
483 # ----------------------------------------------------------------
484
485 java_cpp: $(SRCS)
486         $(SWIG) -java -c++ $(SWIGOPT) $(INTERFACEPATH)
487         $(CXX) -c $(CCSHARED) $(CFLAGS) $(JAVACFLAGS) $(SRCS) $(CXXSRCS) $(ICXXSRCS) $(INCLUDES) $(JAVA_INCLUDE)
488         $(JAVACXXSHARED) $(CFLAGS) $(OBJS) $(IOBJS) $(JAVA_DLNK) $(LIBS) $(CPP_DLLIBS) -o $(JAVA_LIBPREFIX)$(TARGET)$(JAVASO)
489
490 # -----------------------------------------------------------------
491 # Cleaning the java examples
492 # -----------------------------------------------------------------
493
494 java_clean:
495         rm -f *_wrap* *~ .~* *.class `find . -name \*.java | grep -v runme.java`
496         rm -f core @EXTRA_CLEAN@
497         rm -f *.@OBJEXT@ *@JAVASO@
498
499 ##################################################################
500 #####                      MODULA3                          ######
501 ##################################################################
502
503 MODULA3_INCLUDE= @MODULA3INC@
504
505 # ----------------------------------------------------------------
506 # Build a modula3 dynamically loadable module (C)
507 # ----------------------------------------------------------------
508
509 modula3: $(SRCS)
510         $(SWIG) -modula3 $(SWIGOPT) $(INTERFACEPATH)
511 #       $(CC) -c $(CCSHARED) $(CFLAGS) $(SRCS) $(ISRCS) $(INCLUDES) \
512 #       $(OBJS) $(IOBJS) $(LIBS)
513
514 modula3_cpp: $(SRCS)
515         $(SWIG) -modula3 -c++ $(SWIGOPT) $(INTERFACEPATH)
516
517 # -----------------------------------------------------------------
518 # Cleaning the modula3 examples
519 # -----------------------------------------------------------------
520
521 modula3_clean:
522         rm -f *_wrap* *.i3 *.m3
523         rm -f core @EXTRA_CLEAN@
524         rm -f *.@OBJEXT@ *@SO@
525
526 ##################################################################
527 #####                       MZSCHEME                        ######
528 ##################################################################
529
530 MZC = @MZC@
531 MZDYNOBJ = @MZDYNOBJ@
532 MZSCHEME_SO = @MZSCHEME_SO@
533
534 # ----------------------------------------------------------------
535 # Build a C/C++ dynamically loadable module
536 # ----------------------------------------------------------------
537
538 mzscheme: $(SRCS)
539         $(SWIG) -mzscheme $(SWIGOPT) $(INTERFACEPATH)
540         $(COMPILETOOL) $(MZC) `echo $(INCLUDES) | sed 's/-I/++ccf -I/g'` --cc $(ISRCS) $(SRCS)
541         $(COMPILETOOL) $(MZC) --ld $(TARGET)$(MZSCHEME_SO) $(OBJS) $(IOBJS)
542
543 mzscheme_cpp: $(SRCS)
544         $(SWIG) -mzscheme -c++ $(SWIGOPT) $(INTERFACEPATH)
545         $(COMPILETOOL) $(MZC) `echo $(INCLUDES) | sed 's/-I/++ccf -I/g'` --cc $(ICXXSRCS) $(SRCS) $(CXXSRCS)
546         $(CXXSHARED) $(CFLAGS) -o $(LIBPREFIX)$(TARGET)$(MZSCHEME_SO) $(OBJS) $(IOBJS) $(MZDYNOBJ) $(CPP_DLLIBS) 
547
548 # -----------------------------------------------------------------
549 # Cleaning the mzscheme examples
550 # -----------------------------------------------------------------
551
552 mzscheme_clean:
553         rm -f *_wrap* *~ .~* 
554         rm -f core @EXTRA_CLEAN@
555         rm -f *.@OBJEXT@ *@SO@
556
557 ##################################################################
558 #####                          Ocaml                         #####
559 ##################################################################
560
561 OCC=@OCAMLC@
562 OCAMLDLGEN=@OCAMLDLGEN@
563 OCAMLFIND=@OCAMLFIND@
564 OCAMLMKTOP=@OCAMLMKTOP@ $(SWIGWHERE)
565 NOLINK ?= false
566 OCAMLPP= -pp "camlp4o ./swigp4.cmo"
567 OCAMLP4WHERE=`$(COMPILETOOL) camlp4 -where`
568 OCAMLCORE=\
569         rm -rf swig.mli swig.ml swigp4.ml && \
570         $(SWIG) -ocaml -co swig.mli 2>/dev/null &&  \
571         $(SWIG) -ocaml -co swig.ml 2>/dev/null &&  \
572         $(SWIG) -ocaml -co swigp4.ml 2>/dev/null &&  \
573         $(OCC) -c swig.mli &&  \
574         $(OCC) -c swig.ml &&  \
575         $(OCC) -I $(OCAMLP4WHERE) -pp "camlp4o pa_extend.cmo q_MLast.cmo" \
576                 -c swigp4.ml
577
578 ocaml_static: $(SRCS)
579         $(OCAMLCORE)
580         $(SWIG) -ocaml $(SWIGOPT) $(INTERFACEPATH)
581         $(OCC) -g -c -ccopt -g -ccopt "$(INCLUDES)" $(ISRCS) $(SRCS)
582         $(OCC) -g -c $(INTERFACE:%.i=%.mli)
583         $(OCC) -g -c $(INTERFACE:%.i=%.ml)
584         test -z "$(PROGFILE)" || test -f "$(PROGFILE)" && \
585                 $(OCC) $(OCAMLPP) -c $(PROGFILE)
586         $(NOLINK) || $(OCC) -g -ccopt -g -cclib -g -custom -o $(TARGET) \
587                 swig.cmo \
588                 $(INTERFACE:%.i=%.cmo) \
589                 $(PROGFILE:%.ml=%.cmo) \
590                 $(INTERFACE:%.i=%_wrap.@OBJEXT@) $(OBJS) -cclib "$(LIBS)"
591
592 ocaml_dynamic: $(SRCS)
593         $(OCAMLCORE)
594         $(SWIG) -ocaml $(SWIGOPT) $(INTERFACEPATH)
595         $(OCC) -g -c -ccopt -g -ccopt "$(INCLUDES)" $(ISRCS) $(SRCS)
596         $(CXXSHARED) $(CFLAGS) $(CCSHARED) $(CFLAGS) -o $(INTERFACE:%.i=%@SO@) \
597                 $(INTERFACE:%.i=%_wrap.@OBJEXT@) $(OBJS) $(LIBS)
598         $(OCAMLDLGEN) $(INTERFACE:%.i=%.ml) $(INTERFACE:%.i=%@SO@) > \
599                 $(INTERFACE:%.i=%_dynamic.ml)
600         mv $(INTERFACE:%.i=%_dynamic.ml) $(INTERFACE:%.i=%.ml)
601         rm $(INTERFACE:%.i=%.mli)
602         $(OCAMLFIND) $(OCC) -g -c -package dl $(INTERFACE:%.i=%.ml)
603         test -z "$(PROGFILE)" || test -f "$(PROGFILE)" && \
604                 $(OCC) $(OCAMLPP) -c $(PROGFILE)
605         $(NOLINK) || $(OCAMLFIND) \
606                 $(OCC) -g -ccopt -g -cclib -g -custom -o $(TARGET) \
607                 swig.cmo \
608                 -package dl -linkpkg \
609                 $(INTERFACE:%.i=%.cmo) $(PROGFILE:%.ml=%.cmo)
610
611 ocaml_static_toplevel: $(SRCS)
612         $(OCAMLCORE)
613         $(SWIG) -ocaml $(SWIGOPT) $(INTERFACEPATH)
614         $(OCC) -g -c -ccopt -g -ccopt "$(INCLUDES)" $(ISRCS) $(SRCS)
615         $(OCC) -g -c $(INTERFACE:%.i=%.mli)
616         $(OCC) -g -c $(INTERFACE:%.i=%.ml)
617         test -z "$(PROGFILE)" || test -f "$(PROGFILE)" && \
618                 $(OCC) $(OCAMLPP) -c $(PROGFILE)
619         $(NOLINK) || $(OCAMLMKTOP) \
620                 swig.cmo \
621                 -I $(OCAMLP4WHERE) camlp4o.cma swigp4.cmo \
622                 -g -ccopt -g -cclib -g -custom -o $(TARGET)_top \
623                 $(INTERFACE:%.i=%.cmo) \
624                 $(INTERFACE:%.i=%_wrap.@OBJEXT@) $(OBJS) -cclib "$(LIBS)"
625
626 ocaml_static_cpp: $(SRCS)
627         $(OCAMLCORE)
628         $(SWIG) -ocaml -c++ $(SWIGOPT) $(INTERFACEPATH)
629         cp $(ICXXSRCS) $(ICXXSRCS:%.cxx=%.c)
630         $(OCC) -cc '$(CXX)' -g -c -ccopt -g -ccopt "-xc++ $(INCLUDES)" \
631                 $(ICXXSRCS:%.cxx=%.c) $(SRCS) $(CXXSRCS)
632         $(OCC) -g -c $(INTERFACE:%.i=%.mli)
633         $(OCC) -g -c $(INTERFACE:%.i=%.ml)
634         test -z "$(PROGFILE)" || test -f "$(PROGFILE)" && \
635                 $(OCC) $(OCAMLPP) -c $(PROGFILE)
636         $(NOLINK) || $(OCC) -g -ccopt -g -cclib -g -custom -o $(TARGET) \
637                 swig.cmo \
638                 $(INTERFACE:%.i=%.cmo) \
639                 $(PROGFILE:%.ml=%.cmo) \
640                 $(INTERFACE:%.i=%_wrap.@OBJEXT@) $(OBJS) \
641                 -cclib "$(LIBS)" -cc '$(CXX)' 
642
643 ocaml_static_cpp_toplevel: $(SRCS)
644         $(OCAMLCORE)
645         $(SWIG) -ocaml -c++ $(SWIGOPT) $(INTERFACEPATH)
646         cp $(ICXXSRCS) $(ICXXSRCS:%.cxx=%.c)
647         $(OCC) -cc '$(CXX)' -g -c -ccopt -g -ccopt "-xc++ $(INCLUDES)" \
648                 $(ICXXSRCS:%.cxx=%.c) $(SRCS) $(CXXSRCS)
649         $(OCC) -g -c $(INTERFACE:%.i=%.mli)
650         $(OCC) -g -c $(INTERFACE:%.i=%.ml)
651         test -z "$(PROGFILE)" || test -f "$(PROGFILE)" && \
652                 $(OCC) $(OCAMLPP) -c $(PROGFILE)
653         $(NOLINK) || $(OCAMLMKTOP) \
654                 swig.cmo \
655                 -I $(OCAMLP4WHERE) camlp4o.cma swigp4.cmo \
656                 -g -ccopt -g -cclib -g -custom -o $(TARGET)_top \
657                 $(INTERFACE:%.i=%.cmo) \
658                 $(INTERFACE:%.i=%_wrap.@OBJEXT@) $(OBJS) \
659                 -cclib "$(LIBS)" -cc '$(CXX)' 
660
661 ocaml_dynamic_cpp: $(SRCS)
662         $(OCAMLCORE)
663         $(SWIG) -ocaml -c++ $(SWIGOPT) $(INTERFACEPATH)
664         cp $(ICXXSRCS) $(ICXXSRCS:%.cxx=%.c)
665         $(OCC) -cc '$(CXX)' -g -c -ccopt -g -ccopt "-xc++ $(INCLUDES)" \
666                 $(ICXXSRCS:%.cxx=%.c) $(SRCS) $(CXXSRCS) -ccopt -fPIC
667         $(CXXSHARED) $(CFLAGS) -o $(INTERFACE:%.i=%@SO@) \
668                 $(INTERFACE:%.i=%_wrap.@OBJEXT@) $(OBJS) \
669                 $(CPP_DLLIBS) $(LIBS)
670         $(OCAMLDLGEN) $(INTERFACE:%.i=%.ml) $(INTERFACE:%.i=%@SO@) > \
671                 $(INTERFACE:%.i=%_dynamic.ml)
672         mv $(INTERFACE:%.i=%_dynamic.ml) $(INTERFACE:%.i=%.ml)
673         rm $(INTERFACE:%.i=%.mli)
674         $(OCAMLFIND) $(OCC) -g -c -package dl $(INTERFACE:%.i=%.ml)
675         test -z "$(PROGFILE)" || test -f "$(PROGFILE)" && \
676                 $(OCC) $(OCAMLPP) -c $(PROGFILE)
677         $(NOLINK) || $(OCAMLFIND) \
678                 swig.cmo \
679                 $(OCC) -cclib -export-dynamic -g -ccopt -g -cclib -g -custom \
680                 -o $(TARGET) \
681                 -package dl -linkpkg \
682                 $(INTERFACE:%.i=%.cmo) $(PROGFILE:%.ml=%.cmo) -cc '$(CXX)'
683
684 ocaml_clean:
685         rm -f *_wrap* *~ .~* *.cmo *.cmi $(MLFILE) $(MLFILE)i swig.mli swig.cmi swig.ml swig.cmo swigp4.ml swigp4.cmo
686         rm -f core @EXTRA_CLEAN@
687         rm -f *.@OBJEXT@ *@SO@
688
689 ##################################################################
690 #####                       RUBY                            ######
691 ##################################################################
692
693 # Make sure these locate your Ruby installation
694 RUBY_CFLAGS= @RUBYCCDLFLAGS@ $(DEFS)
695 RUBY_INCLUDE= @RUBYINCLUDE@
696 RUBY_LIB     = @RUBYLIB@
697 RUBY_DLNK = @RUBYDYNAMICLINKING@
698
699 # ----------------------------------------------------------------
700 # Build a C dynamically loadable module
701 # ----------------------------------------------------------------
702
703 ruby: $(SRCS)
704         $(SWIG) -ruby $(SWIGOPT) $(INTERFACEPATH)
705         $(CC) -c $(CCSHARED) $(CFLAGS) $(RUBY_CFLAGS) $(ISRCS) $(SRCS) $(INCLUDES) $(RUBY_INCLUDE)
706         $(LDSHARED) $(CFLAGS) $(OBJS) $(IOBJS) $(RUBY_DLNK) $(LIBS) -o $(LIBPREFIX)$(TARGET)$(SO)
707
708 # -----------------------------------------------------------------
709 # Build a C++ dynamically loadable module
710 # -----------------------------------------------------------------
711
712 ruby_cpp: $(SRCS)
713         $(SWIG) -c++ -ruby $(SWIGOPT) $(INTERFACEPATH)
714         $(CXX) -c $(CCSHARED) $(CFLAGS) $(RUBY_CFLAGS) $(ICXXSRCS) $(SRCS) $(CXXSRCS) $(INCLUDES) $(RUBY_INCLUDE)
715         $(CXXSHARED) $(CFLAGS) $(OBJS) $(IOBJS) $(RUBY_DLNK) $(LIBS) $(CPP_DLLIBS) -o $(LIBPREFIX)$(TARGET)$(SO)
716
717 # -----------------------------------------------------------------
718 # Build statically linked Ruby interpreter
719 #
720 # These should only be used in conjunction with the %include embed.i
721 # library file
722 # -----------------------------------------------------------------
723
724 RUBY_LIBOPTS = @RUBYLINK@ @LIBS@ $(SYSLIBS)
725
726 ruby_static: $(SRCS)
727         $(SWIG) -ruby -lembed.i $(SWIGOPT) $(INTERFACEPATH)
728         $(CC) $(CFLAGS) $(RUBY_CFLAGS) @LINKFORSHARED@ $(ISRCS) $(SRCS) $(INCLUDES) \
729         $(RUBY_INCLUDE) $(LIBS) -L$(RUBY_LIB) $(RUBY_LIBOPTS) -o $(TARGET)
730
731 ruby_cpp_static: $(SRCS)
732         $(SWIG) -c++ -ruby -lembed.i $(SWIGOPT) $(INTERFACEPATH)
733         $(CXX) $(CFLAGS) $(RUBY_CFLAGS) $(ICXXSRCS) $(SRCS) $(CXXSRCS) $(INCLUDES) \
734         $(RUBY_INCLUDE) $(LIBS)  -L$(RUBY_LIB) $(RUBY_LIBOPTS) -o $(TARGET)
735
736
737 # -----------------------------------------------------------------
738 # Cleaning the Ruby examples
739 # -----------------------------------------------------------------
740
741 ruby_clean:
742         rm -f *_wrap* *~ .~* myruby@EXEEXT@ *.pm
743         rm -f core @EXTRA_CLEAN@
744         rm -f *.@OBJEXT@ *@SO@
745
746 ##################################################################
747 #####                       PHP                             ######
748 ##################################################################
749
750 # -------------------------------------------------------------------
751 # Build a PHP dynamically loadable module (C)
752 # -------------------------------------------------------------------
753
754 PHP_INCLUDE = @PHPINC@
755 PHP_SO      = @PHP_SO@
756
757 php: $(SRCS)
758         $(SWIG) -php $(SWIGOPT) $(INTERFACEPATH)
759         $(CC) -c $(CCSHARED) $(CFLAGS) $(SRCS) $(ISRCS) $(INCLUDES) $(PHP_INCLUDE)
760         $(LDSHARED) $(CFLAGS) $(OBJS) $(IOBJS) $(LIBS) -o $(LIBPREFIX)$(TARGET)$(PHP_SO)
761
762 # --------------------------------------------------------------------
763 # Build a PHP dynamically loadable module (C++)
764 # --------------------------------------------------------------------
765
766 php_cpp: $(SRCS)
767         $(SWIG) -php -cppext cxx -c++ $(SWIGOPT) $(INTERFACEPATH)
768         $(CXX) -c $(CCSHARED) $(CFLAGS) $(SRCS) $(CXXSRCS) $(ICXXSRCS) $(INCLUDES) $(PHP_INCLUDE)
769         $(CXXSHARED) $(CFLAGS) $(OBJS) $(IOBJS) $(LIBS) $(CPP_DLLIBS) -o $(LIBPREFIX)$(TARGET)$(PHP_SO)
770
771 # -----------------------------------------------------------------
772 # Running a PHP example
773 # -----------------------------------------------------------------
774
775 PHP=@PHP@
776 PHPSCRIPT ?= runme.php
777
778 php_run:
779         env LD_LIBRARY_PATH=.:$$LD_LIBRARY_PATH $(RUNTOOL) $(PHP) -n -q -d extension_dir=. -d safe_mode=Off $(PHPSCRIPT)
780
781 # -----------------------------------------------------------------
782 # Cleaning the PHP examples
783 # -----------------------------------------------------------------
784
785 php_clean:
786         rm -f *_wrap* *~ .~* example.php php_example.h
787         rm -f core @EXTRA_CLEAN@
788         rm -f *.@OBJEXT@ *@SO@
789
790 ##################################################################
791 #####                       Pike                            ######
792 ##################################################################
793
794 # Make sure these locate your Pike installation
795 PIKE_CFLAGS  = @PIKECCDLFLAGS@ -DHAVE_CONFIG_H
796 PIKE_INCLUDE = @PIKEINCLUDE@
797 PIKE_LIB     = @PIKELIB@
798 PIKE_DLNK    = @PIKEDYNAMICLINKING@
799
800 # ----------------------------------------------------------------
801 # Build a C dynamically loadable module
802 # ----------------------------------------------------------------
803
804 pike: $(SRCS)
805         $(SWIG) -pike $(SWIGOPT) $(INTERFACEPATH)
806         $(CC) -c $(CCSHARED) $(CFLAGS) $(PIKE_CFLAGS) $(ISRCS) $(SRCS) $(INCLUDES) $(PIKE_INCLUDE)
807         $(LDSHARED) $(CFLAGS) $(OBJS) $(IOBJS) $(PIKE_DLNK) $(LIBS) -o $(LIBPREFIX)$(TARGET)$(SO)
808
809 # -----------------------------------------------------------------
810 # Build a C++ dynamically loadable module
811 # -----------------------------------------------------------------
812
813 pike_cpp: $(SRCS)
814         $(SWIG) -c++ -pike $(SWIGOPT) $(INTERFACEPATH)
815         $(CXX) -c $(CCSHARED) $(CFLAGS) $(PIKE_CFLAGS) $(ICXXSRCS) $(SRCS) $(CXXSRCS) $(INCLUDES) $(PIKE_INCLUDE)
816         $(CXXSHARED) $(CFLAGS) $(OBJS) $(IOBJS) $(PIKE_DLNK) $(LIBS) $(CPP_DLLIBS) -o $(LIBPREFIX)$(TARGET)$(SO)
817
818 # -----------------------------------------------------------------
819 # Build statically linked Pike interpreter
820 #
821 # These should only be used in conjunction with the %include embed.i
822 # library file
823 # -----------------------------------------------------------------
824
825 PIKE_LIBOPTS = @PIKELINK@ @LIBS@ $(SYSLIBS)
826
827 pike_static: $(SRCS)
828         $(SWIG) -pike -lembed.i $(SWIGOPT) $(INTERFACEPATH)
829         $(CC) $(CFLAGS) $(PIKE_CFLAGS) @LINKFORSHARED@ $(ISRCS) $(SRCS) $(INCLUDES) \
830         $(PIKE_INCLUDE) $(LIBS) -L$(PIKE_LIB) $(PIKE_LIBOPTS) -o $(TARGET)
831
832 pike_cpp_static: $(SRCS)
833         $(SWIG) -c++ -pike -lembed.i $(SWIGOPT) $(INTERFACEPATH)
834         $(CXX) $(CFLAGS) $(PIKE_CFLAGS) $(ICXXSRCS) $(SRCS) $(CXXSRCS) $(INCLUDES) \
835         $(PIKE_INCLUDE) $(LIBS)  -L$(PIKE_LIB) $(PIKE_LIBOPTS) -o $(TARGET)
836
837 # -----------------------------------------------------------------
838 # Cleaning the Pike examples
839 # -----------------------------------------------------------------
840
841 pike_clean:
842         rm -f *_wrap* *~ .~* mypike@EXEEXT@ 
843         rm -f core @EXTRA_CLEAN@
844         rm -f *.@OBJEXT@ *@SO@
845
846
847 ##################################################################
848 #####                      Chicken                          ######
849 ##################################################################
850
851 CHICKEN = @CHICKEN@
852 CHICKEN_CSC = @CHICKEN_CSC@
853 CHICKEN_LIBOPTS = @CHICKENLIB@  $(SYSLIBS)
854 CHICKEN_SHAREDLIBOPTS = @CHICKENSHAREDLIB@  $(SYSLIBS)
855 CHICKEN_CFLAGS = @CHICKENOPTS@
856 CHICKENOPTS = -quiet
857 CHICKEN_MAIN =
858
859 # SWIG produces $(ISRCS) (the C wrapper file) 
860 # and $(CHICKEN_GENERATED_SCHEME) (the Scheme wrapper file):
861 CHICKEN_GENERATED_SCHEME = $(INTERFACE:.i=.scm)
862 CHICKEN_COMPILED_SCHEME = $(INTERFACE:.i=_chicken.c)
863 CHICKEN_COMPILED_OBJECT = $(CHICKEN_COMPILED_SCHEME:.c=.@OBJEXT@)
864
865 # flags for the main chicken sources (only used when compiling staticly)
866 CHICKEN_COMPILED_MAIN = $(CHICKEN_MAIN:.scm=_chicken.c)
867 CHICKEN_COMPILED_MAIN_OBJECT = $(CHICKEN_COMPILED_MAIN:.c=.@OBJEXT@)
868
869 # -----------------------------------------------------------------
870 # Build a CHICKEN dynamically loadable module
871 # -----------------------------------------------------------------
872
873 # This is the old way to build chicken, but it does not work correctly with exceptions
874 chicken_direct: $(SRCS)
875         $(SWIG) -chicken $(SWIGOPT) $(INCLUDE) $(INTERFACEPATH)
876         $(CHICKEN) $(CHICKEN_GENERATED_SCHEME) $(CHICKENOPTS) \
877                 -dynamic -feature chicken-compile-shared \
878                 -output-file $(CHICKEN_COMPILED_SCHEME)
879         $(CC) -c $(CCSHARED) $(CFLAGS) $(CHICKEN_CFLAGS) \
880                 $(INCLUDES) $(CHICKEN_INCLUDE) $(ISRCS) $(SRCS) $(CHICKEN_COMPILED_SCHEME)
881         $(LDSHARED) $(CFLAGS) $(CHICKEN_COMPILED_OBJECT) $(OBJS) $(IOBJS) \
882                 $(LIBS) $(CHICKEN_SHAREDLIBOPTS) -o $(LIBPREFIX)$(TARGET)$(SO)
883
884 chicken_direct_cpp: $(CXXSRCS) $(CHICKSRCS)
885         $(SWIG) -c++ -chicken $(SWIGOPT) $(INCLUDE) $(INTERFACEPATH)
886         $(CHICKEN) $(CHICKEN_GENERATED_SCHEME) $(CHICKENOPTS) \
887                 -dynamic -feature chicken-compile-shared \
888                 -output-file $(CHICKEN_COMPILED_SCHEME)
889         $(CXX) -c $(CCSHARED) $(CFLAGS) $(CHICKEN_CFLAGS) \
890                 $(INCLUDES) $(CHICKEN_INCLUDE) $(ICXXSRCS) $(SRCS) $(CXXSRCS) $(CHICKEN_COMPILED_SCHEME)
891         $(CXXSHARED) $(CFLAGS) $(CHICKEN_COMPILED_OBJECT) $(OBJS) $(IOBJS) \
892                 $(LIBS) $(CPP_DLLIBS) $(CHICKEN_SHAREDLIBOPTS) -o $(LIBPREFIX)$(TARGET)$(SO)
893
894 # -----------------------------------------------------------------
895 # Build statically linked CHICKEN interpreter
896 # -----------------------------------------------------------------
897
898 # The following two targets are also used by the test suite
899 chicken_static: $(SRCS) $(CHICKSRCS)
900         $(SWIG) -chicken $(SWIGOPT) $(INCLUDE) $(INTERFACEPATH)
901         $(CHICKEN) $(CHICKEN_GENERATED_SCHEME) $(CHICKENOPTS) \
902                 -output-file $(CHICKEN_COMPILED_SCHEME)
903         $(CHICKEN) $(CHICKEN_MAIN) $(CHICKENOPTS) \
904                 -output-file $(CHICKEN_MAIN:.scm=_chicken.c)
905         $(CC) -c $(CCSHARED) $(CFLAGS) $(CHICKEN_CFLAGS) \
906                 $(INCLUDES) $(CHICKEN_INCLUDE) $(ISRCS) $(SRCS) \
907                 $(CHICKEN_COMPILED_SCHEME) $(CHICKEN_COMPILED_MAIN)
908         $(CC) $(CHICKEN_COMPILED_OBJECT) $(CHICKEN_COMPILED_MAIN_OBJECT) \
909                 $(OBJS) $(IOBJS) $(LIBS) $(CHICKEN_SHAREDLIBOPTS) -o $(TARGET)
910
911 chicken_static_cpp: $(CXXSRCS) $(CHICKSRCS)
912         $(SWIG) -c++ -chicken $(SWIGOPT) $(INCLUDE) $(INTERFACEPATH)
913         $(CHICKEN) $(CHICKEN_GENERATED_SCHEME) $(CHICKENOPTS) \
914                 -output-file $(CHICKEN_COMPILED_SCHEME)
915         $(CHICKEN) $(CHICKEN_MAIN) $(CHICKENOPTS) \
916                 -output-file $(CHICKEN_MAIN:.scm=_chicken.c)
917         $(CXX) -c $(CCSHARED) $(CFLAGS) $(CHICKEN_CFLAGS) \
918                 $(INCLUDES) $(CHICKEN_INCLUDE) $(ICXXSRCS) $(SRCS) $(CXXSRCS) \
919                 $(CHICKEN_COMPILED_SCHEME) $(CHICKEN_COMPILED_MAIN)
920         $(CXX) $(CHICKEN_COMPILED_OBJECT) $(CHICKEN_COMPILED_MAIN_OBJECT) \
921                 $(OBJS) $(IOBJS) $(LIBS) $(CPP_DLLIBS) $(CHICKEN_SHAREDLIBOPTS) -o $(TARGET)
922
923 # ----------------------------------------------------------------
924 # Build a shared library using csc
925 # ----------------------------------------------------------------
926
927 chicken:
928         $(SWIG) -chicken $(SWIGOPT) $(INCLUDE) $(INTERFACEPATH)
929         $(COMPILETOOL) $(CHICKEN_CSC) -s `echo $(INCLUDES) | sed 's/-I/-C -I/g'` $(CHICKEN_GENERATED_SCHEME) $(SRCS) $(ISRCS) -o $(TARGET)$(SO)
930
931 chicken_cpp:
932         $(SWIG) -c++ -chicken $(SWIGOPT) $(INCLUDE) $(INTERFACEPATH)
933         $(COMPILETOOL) $(CHICKEN_CSC) -s `echo $(INCLUDES) | sed 's/-I/-C -I/g'` $(CHICKEN_GENERATED_SCHEME) $(SRCS) $(ICXXSRCS) $(CXXSRCS) -o $(TARGET)$(SO)
934
935 chicken_externalhdr:
936         $(SWIG) -chicken -external-runtime $(TARGET)
937
938 chicken_clean:
939         rm -f *_wrap* *~ .~* *_chicken*
940         rm -f core @EXTRA_CLEAN@
941         rm -f *.@OBJEXT@ *@SO@
942
943 ##################################################################
944 #####                      CSHARP                           ######
945 ##################################################################
946
947 # Extra CSharp specific dynamic linking options
948 CSHARP_DLNK  = @CSHARPDYNAMICLINKING@
949 CSHARP_LIBPREFIX = @CSHARPLIBRARYPREFIX@
950 CSHARPCOMPILER = @CSHARPCOMPILER@
951 CSHARPCILINTERPRETER = @CSHARPCILINTERPRETER@
952 CSHARPCFLAGS = @CSHARPCFLAGS@
953 CSHARPSO = @CSHARPSO@
954
955 # ----------------------------------------------------------------
956 # Build a CSharp dynamically loadable module (C)
957 # ----------------------------------------------------------------
958
959 csharp: $(SRCS)
960         $(SWIG) -csharp $(SWIGOPT) $(INTERFACEPATH)
961         $(CC) -c $(CCSHARED) $(CFLAGS) $(CSHARPCFLAGS) $(SRCS) $(ISRCS) $(INCLUDES)
962         $(LDSHARED) $(CFLAGS) $(OBJS) $(IOBJS) $(CSHARP_DLNK) $(LIBS) -o $(CSHARP_LIBPREFIX)$(TARGET)$(CSHARPSO)
963
964 # ----------------------------------------------------------------
965 # Build a CSharp dynamically loadable module (C++)
966 # ----------------------------------------------------------------
967
968 csharp_cpp: $(SRCS)
969         $(SWIG) -csharp -c++ $(SWIGOPT) $(INTERFACEPATH)
970         $(CXX) -c $(CCSHARED) $(CFLAGS) $(CSHARPCFLAGS) $(SRCS) $(CXXSRCS) $(ICXXSRCS) $(INCLUDES)
971         $(CXXSHARED) $(CFLAGS) $(OBJS) $(IOBJS) $(CSHARP_DLNK) $(LIBS) $(CPP_DLLIBS) -o $(CSHARP_LIBPREFIX)$(TARGET)$(CSHARPSO)
972
973 # ----------------------------------------------------------------
974 # Compile CSharp files
975 # ----------------------------------------------------------------
976
977 csharp_compile: $(SRCS)
978         $(COMPILETOOL) $(CSHARPCOMPILER) $(CSHARPFLAGS) $(CSHARPSRCS)
979
980 # -----------------------------------------------------------------
981 # Cleaning the CSharp examples
982 # -----------------------------------------------------------------
983
984 csharp_clean:
985         rm -f *_wrap* *~ .~* runme runme.exe *.exe.mdb gc.log `find . -name \*.cs | grep -v runme.cs`
986         rm -f core @EXTRA_CLEAN@
987         rm -f *.@OBJEXT@ *@CSHARPSO@
988
989 ##################################################################
990 #####                      LUA                              ######
991 ##################################################################
992
993 # lua flags
994 LUA_INCLUDE= @LUAFLAGS@
995 LUA_LIB    = @LUALINK@
996
997 # Extra specific dynamic linking options
998 LUA_DLNK   = @LUADYNAMICLINKING@
999 LUA_SO     = @LUA_SO@
1000
1001 # Extra code for lua static link
1002 LUA_INTERP     = ../lua.c
1003
1004 # ----------------------------------------------------------------
1005 # Build a C dynamically loadable module
1006 # ----------------------------------------------------------------
1007
1008 lua: $(SRCS)
1009         $(SWIG) -lua $(SWIGOPT) $(INTERFACEPATH)
1010         $(CC) -c $(CCSHARED) $(CFLAGS) $(ISRCS) $(SRCS) $(INCLUDES) $(LUA_INCLUDE)
1011         $(LDSHARED) $(CFLAGS) $(OBJS) $(IOBJS) $(LIBS) $(LUA_LIB) -o $(LIBPREFIX)$(TARGET)$(LUA_SO)
1012
1013 # -----------------------------------------------------------------
1014 # Build a C++ dynamically loadable module
1015 # -----------------------------------------------------------------
1016
1017 lua_cpp: $(SRCS)
1018         $(SWIG) -c++ -lua $(SWIGOPT) $(INTERFACEPATH)
1019         $(CXX) -c $(CCSHARED) $(CFLAGS) $(ICXXSRCS) $(SRCS) $(CXXSRCS) $(INCLUDES) $(LUA_INCLUDE)
1020         $(CXXSHARED) $(CFLAGS) $(OBJS) $(IOBJS) $(LIBS) $(LUA_LIB) $(CPP_DLLIBS) -o $(LIBPREFIX)$(TARGET)$(LUA_SO)
1021
1022 # -----------------------------------------------------------------
1023 # Build statically linked Lua interpreter
1024 # -----------------------------------------------------------------
1025
1026 lua_static: $(SRCS)
1027         $(SWIG) -lua -module example $(SWIGOPT) $(INTERFACEPATH)
1028         $(CC) $(CFLAGS)  $(ISRCS) $(SRCS) $(LUA_INTERP) $(INCLUDES) \
1029         $(LUA_INCLUDE) $(LIBS) $(LUA_LIB) -o $(TARGET)
1030
1031 lua_static_cpp: $(SRCS)
1032         $(SWIG) -c++ -lua -module example $(SWIGOPT) $(INTERFACEPATH)
1033         $(CXX) $(CFLAGS) $(ICXXSRCS) $(SRCS) $(CXXSRCS) $(LUA_INTERP) $(INCLUDES) \
1034         $(LUA_INCLUDE) $(LIBS)  $(LUA_LIB) -o $(TARGET)
1035
1036 # -----------------------------------------------------------------
1037 # Cleaning the lua examples
1038 # -----------------------------------------------------------------
1039
1040 lua_clean:
1041         rm -f *_wrap* *~ .~* mylua@EXEEXT@
1042         rm -f core @EXTRA_CLEAN@
1043         rm -f *.@OBJEXT@ *@SO@
1044
1045 ##################################################################
1046 #####                   ALLEGRO CL                          ######
1047 ##################################################################
1048
1049 allegrocl: $(SRCS)
1050         $(SWIG) -allegrocl -cwrap $(SWIGOPT) $(INTERFACEPATH)
1051         $(CC) -c $(CCSHARED) $(CFLAGS) $(ISRCS) $(INCLUDES) $(SRCS) 
1052         $(LDSHARED) $(CFLAGS) $(OBJS) $(IOBJS) $(LIBS) -o $(LIBPREFIX)$(TARGET)$(SO)
1053
1054 allegrocl_cpp: $(SRCS)
1055         $(SWIG) -c++ -allegrocl $(SWIGOPT) $(INTERFACEPATH)
1056         $(CXX) -c $(CCSHARED) $(CFLAGS) $(ICXXSRCS) $(SRCS) $(CXXSRCS) $(INCLUDES) 
1057         $(CXXSHARED) $(CFLAGS) $(OBJS) $(IOBJS) $(LIBS) $(CPP_DLLIBS) -o $(LIBPREFIX)$(TARGET)$(SO)
1058
1059 allegrocl_clean:
1060         rm -f *_wrap* *~ .~*
1061         rm -f core @EXTRA_CLEAN@
1062         rm -f *.@OBJEXT@ *@SO@
1063
1064 ##################################################################
1065 #####                      CLISP                            ######
1066 ##################################################################
1067
1068 clisp: $(SRCS)
1069         $(SWIG) -clisp $(SWIGOPT) $(INTERFACEPATH)
1070
1071 clisp_cpp: $(SRCS)
1072         $(SWIG) -c++ -clisp $(SWIGOPT) $(INTERFACEPATH)
1073
1074 clisp_clean:
1075         rm -f *_wrap* *~ .~*
1076         rm -f core @EXTRA_CLEAN@
1077         rm -f *.@OBJEXT@ *@SO@
1078
1079 ##################################################################
1080 #####                      CFFI                             ######
1081 ##################################################################
1082
1083 cffi: $(SRCS)
1084         $(SWIG) -cffi $(SWIGOPT) $(INTERFACEPATH)
1085 #       $(CC) -c $(CCSHARED) $(CFLAGS) $(ISRCS) $(INCLUDES) $(SRCS) 
1086 #       $(LDSHARED) $(CFLAGS) $(OBJS) $(IOBJS) $(LIBS) -o $(LIBPREFIX)$(TARGET)$(SO)
1087
1088 cffi_cpp: $(SRCS)
1089         $(SWIG) -c++ -cffi $(SWIGOPT) $(INTERFACEPATH)
1090         $(CXX) -c $(CCSHARED) $(CFLAGS) $(ICXXSRCS) $(SRCS) $(CXXSRCS) $(INCLUDES) 
1091         $(CXXSHARED) $(CFLAGS) $(OBJS) $(IOBJS) $(LIBS) $(CPP_DLLIBS) -o $(LIBPREFIX)$(TARGET)$(SO)
1092
1093 cffi_clean:
1094         rm -f *_wrap* *~ .~*
1095         rm -f core @EXTRA_CLEAN@
1096         rm -f *.@OBJEXT@ *@SO@
1097
1098 ##################################################################
1099 #####                      UFFI                             ######
1100 ##################################################################
1101
1102 uffi: $(SRCS)
1103         $(SWIG) -uffi $(SWIGOPT) $(INTERFACEPATH)
1104 #       $(CC) -c $(CCSHARED) $(CFLAGS) $(ISRCS) $(INCLUDES) $(SRCS) 
1105 #       $(LDSHARED) $(CFLAGS) $(OBJS) $(IOBJS) $(LIBS) -o $(LIBPREFIX)$(TARGET)$(SO)
1106
1107 uffi_cpp: $(SRCS)
1108         $(SWIG) -c++ -uffi $(SWIGOPT) $(INTERFACEPATH)
1109 #       $(CXX) -c $(CCSHARED) $(CFLAGS) $(ICXXSRCS) $(SRCS) $(CXXSRCS) $(INCLUDES) 
1110 #       $(CXXSHARED) $(CFLAGS) $(OBJS) $(IOBJS) $(LIBS) $(CPP_DLLIBS) -o $(LIBPREFIX)$(TARGET)$(SO)
1111
1112 uffi_clean:
1113         rm -f *_wrap* *~ .~*
1114         rm -f core @EXTRA_CLEAN@
1115         rm -f *.@OBJEXT@ *@SO@
1116
1117 ##################################################################
1118 #####                      R                                ######
1119 ##################################################################
1120
1121 R = R
1122 RCXXSRCS = $(INTERFACE:.i=_wrap.cpp) #Need to use _wrap.cpp for R build system as it does not understand _wrap.cxx
1123 RRSRC = $(INTERFACE:.i=.R)
1124
1125 r: $(SRCS)
1126         $(SWIG) -r $(SWIGOPT) $(INTERFACEPATH)
1127         +( PKG_LIBS="$(SRCS)" PKG_CPPFLAGS="$(INCLUDES)" $(COMPILETOOL) $(R) CMD SHLIB -o $(LIBPREFIX)$(TARGET)$(SO) $(ISRCS) )
1128
1129 r_cpp: $(CXXSRCS)
1130         $(SWIG) -c++ -r $(SWIGOPT) -o $(RCXXSRCS) $(INTERFACEPATH)
1131         +( PKG_LIBS="$(CXXSRCS)" PKG_CPPFLAGS="$(INCLUDES)" $(COMPILETOOL) $(R) CMD SHLIB -o $(LIBPREFIX)$(TARGET)$(SO) $(RCXXSRCS) )
1132
1133 r_clean:
1134         rm -f *_wrap* *~ .~*
1135         rm -f core @EXTRA_CLEAN@
1136         rm -f *.@OBJEXT@ *@SO@ NAMESPACE
1137         rm -f $(RRSRC) runme.Rout .RData
1138