/tags/rel-2.0.2/Examples/Makefile.in

# · Autoconf · 1280 lines · 690 code · 251 blank · 339 comment · 31 complexity · 3d0ffdd2a0f15c35c946e86e27d95e1f MD5 · raw file

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