PageRenderTime 54ms CodeModel.GetById 14ms RepoModel.GetById 0ms app.codeStats 0ms

/trunk/Examples/Makefile.in

#
Autoconf | 1300 lines | 703 code | 254 blank | 343 comment | 34 complexity | ba74ebba4bc796140b8a6a7da7e411f0 MD5 | raw file
Possible License(s): LGPL-2.1, Cube, GPL-3.0, 0BSD, GPL-2.0
  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 variables, 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. OCTAVE = @OCTAVE@ -qf
  269. # Extra Octave specific dynamic linking options
  270. OCTAVE_DLNK = @OCTAVEDYNAMICLINKING@
  271. OCTAVE_SO = @OCTAVE_SO@
  272. # ----------------------------------------------------------------
  273. # Build a C dynamically loadable module
  274. # Note: Octave requires C++ compiler when compiling C wrappers
  275. # ----------------------------------------------------------------
  276. octave: $(SRCS)
  277. $(SWIG) -octave $(SWIGOPT) $(INTERFACEPATH)
  278. $(CXX) -g -c $(CCSHARED) $(CFLAGS) $(ICXXSRCS) $(INCLUDES) -I$(OCTAVE_INCLUDE)
  279. $(CC) -g -c $(CCSHARED) $(CFLAGS) $(SRCS) $(CSRCS) $(INCLUDES)
  280. $(LDSHARED) $(CFLAGS) $(OBJS) $(IOBJS) $(OCTAVE_DLNK) $(LIBS) -o $(LIBPREFIX)$(TARGET)$(OCTAVE_SO)
  281. # -----------------------------------------------------------------
  282. # Build a C++ dynamically loadable module
  283. # -----------------------------------------------------------------
  284. octave_cpp: $(SRCS)
  285. $(SWIG) -c++ -octave $(SWIGOPT) $(INTERFACEPATH)
  286. $(CXX) -g -c $(CCSHARED) $(CFLAGS) $(ICXXSRCS) $(SRCS) $(CXXSRCS) $(INCLUDES) -I$(OCTAVE_INCLUDE)
  287. $(CXXSHARED) -g $(CFLAGS) $(OBJS) $(IOBJS) $(OCTAVE_DLNK) $(LIBS) $(CPP_DLLIBS) -o $(LIBPREFIX)$(TARGET)$(OCTAVE_SO)
  288. # -----------------------------------------------------------------
  289. # Running an Octave example
  290. # -----------------------------------------------------------------
  291. OCTSCRIPT = runme.m
  292. octave_run: $(OCTSCRIPT)
  293. for file in $(OCTSCRIPT); do \
  294. env LD_LIBRARY_PATH=.:$$LD_LIBRARY_PATH OCTAVE_PATH=$(srcdir):$$OCTAVE_PATH $(OCTAVE) $$file >/dev/null || break; \
  295. done
  296. # -----------------------------------------------------------------
  297. # Cleaning the octave examples
  298. # -----------------------------------------------------------------
  299. octave_clean:
  300. rm -f *_wrap* *~ .~* myoctave@EXEEXT@ *.pyc
  301. rm -f core @EXTRA_CLEAN@
  302. rm -f *.@OBJEXT@ *@SO@ *@OCTAVE_SO@
  303. ##################################################################
  304. ##### GUILE ######
  305. ##################################################################
  306. # Make sure these locate your Guile installation
  307. GUILE_INCLUDE = @GUILEINCLUDE@
  308. GUILE_LIB = @GUILELIB@
  309. GUILE_SO = @GUILE_SO@
  310. GUILE_LIBPREFIX = lib
  311. #------------------------------------------------------------------
  312. # Build a dynamically loaded module with passive linkage and the scm interface
  313. #------------------------------------------------------------------
  314. guile: $(SRCS)
  315. $(SWIG) -guile -scm -Linkage passive $(SWIGOPT) $(INTERFACEPATH)
  316. $(CC) -c $(CCSHARED) $(CFLAGS) $(INCLUDES) $(GUILE_INCLUDE) $(ISRCS) $(SRCS)
  317. $(LDSHARED) $(CFLAGS) $(OBJS) $(IOBJS) $(LIBS) -o $(GUILE_LIBPREFIX)$(TARGET)$(GUILE_SO)
  318. guile_cpp: $(SRCS)
  319. $(SWIG) -c++ -guile -scm -Linkage passive $(SWIGOPT) $(INTERFACEPATH)
  320. $(CXX) -c $(CCSHARED) $(CFLAGS) $(INCLUDES) $(GUILE_INCLUDE) $(ICXXSRCS) $(SRCS) $(CXXSRCS)
  321. $(CXXSHARED) $(CFLAGS) $(OBJS) $(IOBJS) $(LIBS) $(CPP_DLLIBS) -o $(GUILE_LIBPREFIX)$(TARGET)$(GUILE_SO)
  322. guile_externalhdr:
  323. $(SWIG) -guile -external-runtime $(TARGET)
  324. #------------------------------------------------------------------
  325. # Build a dynamically loaded module with passive linkage and the gh interface
  326. #------------------------------------------------------------------
  327. guile_gh: $(SRCS)
  328. $(SWIG) -guile -gh -Linkage passive $(SWIGOPT) $(INTERFACEPATH)
  329. $(CC) -c $(CCSHARED) $(CFLAGS) $(INCLUDES) $(GUILE_INCLUDE) $(ISRCS) $(SRCS)
  330. $(LDSHARED) $(CFLAGS) $(OBJS) $(IOBJS) $(LIBS) -o $(GUILE_LIBPREFIX)$(TARGET)$(GUILE_SO)
  331. guile_gh_cpp: $(SRCS)
  332. $(SWIG) -c++ -guile -gh -Linkage passive $(SWIGOPT) $(INTERFACEPATH)
  333. $(CXX) -c $(CCSHARED) $(CFLAGS) $(INCLUDES) $(GUILE_INCLUDE) $(ICXXSRCS) $(SRCS) $(CXXSRCS)
  334. $(CXXSHARED) $(CFLAGS) $(OBJS) $(IOBJS) $(LIBS) $(CPP_DLLIBS) -o $(GUILE_LIBPREFIX)$(TARGET)$(GUILE_SO)
  335. # -----------------------------------------------------------------
  336. # Build a dynamically loadable module with passive linkage
  337. # -----------------------------------------------------------------
  338. guile_passive: $(SRCS)
  339. $(SWIG) -guile -Linkage passive $(SWIGOPT) $(INTERFACEPATH)
  340. $(CC) -c $(CCSHARED) $(CFLAGS) $(INCLUDES) $(GUILE_INCLUDE) $(ISRCS) $(SRCS)
  341. $(LDSHARED) $(CFLAGS) $(OBJS) $(IOBJS) $(LIBS) -o $(GUILE_LIBPREFIX)$(TARGET)$(GUILE_SO)
  342. guile_passive_cpp: $(SRCS)
  343. $(SWIG) -c++ -guile -Linkage passive $(SWIGOPT) $(INTERFACEPATH)
  344. $(CXX) -c $(CCSHARED) $(CFLAGS) $(INCLUDES) $(GUILE_INCLUDE) $(ICXXSRCS) $(SRCS) $(CXXSRCS)
  345. $(CXXSHARED) $(CFLAGS) $(OBJS) $(IOBJS) $(LIBS) $(CPP_DLLIBS) -o $(GUILE_LIBPREFIX)$(TARGET)$(GUILE_SO)
  346. # -----------------------------------------------------------------
  347. # Build statically linked Guile interpreter
  348. # -----------------------------------------------------------------
  349. GUILE_LIBOPTS = @GUILELINK@ @LIBS@ $(SYSLIBS)
  350. guile_static: $(SRCS)
  351. $(SWIG) -guile -lguilemain.i -Linkage ltdlmod $(SWIGOPT) $(INTERFACEPATH)
  352. $(CC) $(CFLAGS) $(ISRCS) $(SRCS) $(INCLUDES) \
  353. -DSWIGINIT="SCM scm_init_$(TARGET)_module(void); scm_init_$(TARGET)_module();" \
  354. $(GUILE_INCLUDE) $(LIBS) -L$(GUILE_LIB) $(GUILE_LIBOPTS) -o $(TARGET)-guile
  355. guile_static_cpp: $(SRCS)
  356. $(SWIG) -c++ -guile -lguilemain.i -Linkage ltdlmod $(SWIGOPT) $(INTERFACEPATH)
  357. $(CXX) $(CFLAGS) $(ICXXSRCS) $(SRCS) $(CXXSRCS) $(INCLUDES) \
  358. -DSWIGINIT="SCM scm_init_$(TARGET)_module(void); scm_init_$(TARGET)_module();" \
  359. $(GUILE_INCLUDE) $(LIBS) -L$(GUILE_LIB) $(GUILE_LIBOPTS) -o $(TARGET)-guile
  360. guile_simple: $(SRCS)
  361. $(SWIG) -guile -lguilemain.i -Linkage simple $(SWIGOPT) $(INTERFACEPATH)
  362. $(CC) $(CFLAGS) $(ISRCS) $(SRCS) $(INCLUDES) \
  363. $(GUILE_INCLUDE) $(LIBS) -L$(GUILE_LIB) $(GUILE_LIBOPTS) -o $(TARGET)-guile
  364. guile_simple_cpp: $(SRCS)
  365. $(SWIG) -c++ -guile -lguilemain.i -Linkage simple $(SWIGOPT) $(INTERFACEPATH)
  366. $(CXX) $(CFLAGS) $(ICXXSRCS) $(SRCS) $(CXXSRCS) $(INCLUDES) \
  367. $(GUILE_INCLUDE) $(LIBS) -L$(GUILE_LIB) $(GUILE_LIBOPTS) -o $(TARGET)-guile
  368. # -----------------------------------------------------------------
  369. # Cleaning the Guile examples
  370. # -----------------------------------------------------------------
  371. guile_clean:
  372. rm -f *_wrap* *~ .~* my-guile@EXEEXT@ $(TARGET)@EXEEXT@
  373. rm -f core @EXTRA_CLEAN@
  374. rm -f *.@OBJEXT@ *@GUILE_SO@
  375. ##################################################################
  376. ##### JAVA ######
  377. ##################################################################
  378. # You need to set this variable to the java directories containing the
  379. # files "jni.h" and "md.h"
  380. # usually something like /usr/java/include and /usr/java/include/<arch-osname>.
  381. JAVA_INCLUDE= @JAVAINC@
  382. # Extra Java specific dynamic linking options
  383. JAVA_DLNK = @JAVADYNAMICLINKING@
  384. JAVA_LIBPREFIX = @JAVALIBRARYPREFIX@
  385. JAVASO =@JAVASO@
  386. JAVALDSHARED = @JAVALDSHARED@
  387. JAVACXXSHARED = @JAVACXXSHARED@
  388. JAVACFLAGS = @JAVACFLAGS@
  389. # ----------------------------------------------------------------
  390. # Build a java dynamically loadable module (C)
  391. # ----------------------------------------------------------------
  392. java: $(SRCS)
  393. $(SWIG) -java $(SWIGOPT) $(INTERFACEPATH)
  394. $(CC) -c $(CCSHARED) $(CFLAGS) $(JAVACFLAGS) $(SRCS) $(ISRCS) $(INCLUDES) $(JAVA_INCLUDE)
  395. $(JAVALDSHARED) $(CFLAGS) $(OBJS) $(IOBJS) $(JAVA_DLNK) $(LIBS) -o $(JAVA_LIBPREFIX)$(TARGET)$(JAVASO)
  396. # ----------------------------------------------------------------
  397. # Build a java dynamically loadable module (C++)
  398. # ----------------------------------------------------------------
  399. java_cpp: $(SRCS)
  400. $(SWIG) -java -c++ $(SWIGOPT) $(INTERFACEPATH)
  401. $(CXX) -c $(CCSHARED) $(CFLAGS) $(JAVACFLAGS) $(SRCS) $(CXXSRCS) $(ICXXSRCS) $(INCLUDES) $(JAVA_INCLUDE)
  402. $(JAVACXXSHARED) $(CFLAGS) $(OBJS) $(IOBJS) $(JAVA_DLNK) $(LIBS) $(CPP_DLLIBS) -o $(JAVA_LIBPREFIX)$(TARGET)$(JAVASO)
  403. # -----------------------------------------------------------------
  404. # Cleaning the java examples
  405. # -----------------------------------------------------------------
  406. java_clean:
  407. rm -f *_wrap* *~ .~* *.class `find . -name \*.java | grep -v runme.java`
  408. rm -f core @EXTRA_CLEAN@
  409. rm -f *.@OBJEXT@ *@JAVASO@
  410. ##################################################################
  411. ##### MODULA3 ######
  412. ##################################################################
  413. MODULA3_INCLUDE= @MODULA3INC@
  414. # ----------------------------------------------------------------
  415. # Build a modula3 dynamically loadable module (C)
  416. # ----------------------------------------------------------------
  417. modula3: $(SRCS)
  418. $(SWIG) -modula3 $(SWIGOPT) $(INTERFACEPATH)
  419. # $(CC) -c $(CCSHARED) $(CFLAGS) $(SRCS) $(ISRCS) $(INCLUDES) \
  420. # $(OBJS) $(IOBJS) $(LIBS)
  421. modula3_cpp: $(SRCS)
  422. $(SWIG) -modula3 -c++ $(SWIGOPT) $(INTERFACEPATH)
  423. # -----------------------------------------------------------------
  424. # Cleaning the modula3 examples
  425. # -----------------------------------------------------------------
  426. modula3_clean:
  427. rm -f *_wrap* *.i3 *.m3
  428. rm -f core @EXTRA_CLEAN@
  429. rm -f *.@OBJEXT@ *@SO@
  430. ##################################################################
  431. ##### MZSCHEME ######
  432. ##################################################################
  433. MZC = @MZC@
  434. MZDYNOBJ = @MZDYNOBJ@
  435. MZSCHEME_SO = @MZSCHEME_SO@
  436. # ----------------------------------------------------------------
  437. # Build a C/C++ dynamically loadable module
  438. # ----------------------------------------------------------------
  439. mzscheme: $(SRCS)
  440. $(SWIG) -mzscheme $(SWIGOPT) $(INTERFACEPATH)
  441. $(COMPILETOOL) $(MZC) `echo $(INCLUDES) | sed 's/-I/++ccf -I/g'` --cc $(ISRCS) $(SRCS)
  442. $(COMPILETOOL) $(MZC) --ld $(TARGET)$(MZSCHEME_SO) $(OBJS) $(IOBJS)
  443. mzscheme_cpp: $(SRCS)
  444. $(SWIG) -mzscheme -c++ $(SWIGOPT) $(INTERFACEPATH)
  445. $(COMPILETOOL) $(MZC) `echo $(INCLUDES) | sed 's/-I/++ccf -I/g'` --cc $(ICXXSRCS) $(SRCS) $(CXXSRCS)
  446. $(CXXSHARED) $(CFLAGS) -o $(LIBPREFIX)$(TARGET)$(MZSCHEME_SO) $(OBJS) $(IOBJS) $(MZDYNOBJ) $(CPP_DLLIBS)
  447. # -----------------------------------------------------------------
  448. # Cleaning the mzscheme examples
  449. # -----------------------------------------------------------------
  450. mzscheme_clean:
  451. rm -f *_wrap* *~ .~*
  452. rm -f core @EXTRA_CLEAN@
  453. rm -f *.@OBJEXT@ *@SO@
  454. ##################################################################
  455. ##### Ocaml #####
  456. ##################################################################
  457. OCC=@OCAMLC@
  458. OCAMLDLGEN=@OCAMLDLGEN@
  459. OCAMLFIND=@OCAMLFIND@
  460. OCAMLMKTOP=@OCAMLMKTOP@ $(SWIGWHERE)
  461. NOLINK ?= false
  462. OCAMLPP= -pp "camlp4o ./swigp4.cmo"
  463. OCAMLP4WHERE=`$(COMPILETOOL) camlp4 -where`
  464. OCAMLCORE=\
  465. rm -rf swig.mli swig.ml swigp4.ml && \
  466. $(SWIG) -ocaml -co swig.mli 2>/dev/null && \
  467. $(SWIG) -ocaml -co swig.ml 2>/dev/null && \
  468. $(SWIG) -ocaml -co swigp4.ml 2>/dev/null && \
  469. $(OCC) -c swig.mli && \
  470. $(OCC) -c swig.ml && \
  471. $(OCC) -I $(OCAMLP4WHERE) -pp "camlp4o pa_extend.cmo q_MLast.cmo" \
  472. -c swigp4.ml
  473. ocaml_static: $(SRCS)
  474. $(OCAMLCORE)
  475. $(SWIG) -ocaml $(SWIGOPT) $(INTERFACEPATH)
  476. $(OCC) -g -c -ccopt -g -ccopt "$(INCLUDES)" $(ISRCS) $(SRCS)
  477. $(OCC) -g -c $(INTERFACE:%.i=%.mli)
  478. $(OCC) -g -c $(INTERFACE:%.i=%.ml)
  479. test -z "$(PROGFILE)" || test -f "$(PROGFILE)" && \
  480. $(OCC) $(OCAMLPP) -c $(PROGFILE)
  481. $(NOLINK) || $(OCC) -g -ccopt -g -cclib -g -custom -o $(TARGET) \
  482. swig.cmo \
  483. $(INTERFACE:%.i=%.cmo) \
  484. $(PROGFILE:%.ml=%.cmo) \
  485. $(INTERFACE:%.i=%_wrap.@OBJEXT@) $(OBJS) -cclib "$(LIBS)"
  486. ocaml_dynamic: $(SRCS)
  487. $(OCAMLCORE)
  488. $(SWIG) -ocaml $(SWIGOPT) $(INTERFACEPATH)
  489. $(OCC) -g -c -ccopt -g -ccopt "$(INCLUDES)" $(ISRCS) $(SRCS)
  490. $(CXXSHARED) $(CFLAGS) $(CCSHARED) $(CFLAGS) -o $(INTERFACE:%.i=%@SO@) \
  491. $(INTERFACE:%.i=%_wrap.@OBJEXT@) $(OBJS) $(LIBS)
  492. $(OCAMLDLGEN) $(INTERFACE:%.i=%.ml) $(INTERFACE:%.i=%@SO@) > \
  493. $(INTERFACE:%.i=%_dynamic.ml)
  494. mv $(INTERFACE:%.i=%_dynamic.ml) $(INTERFACE:%.i=%.ml)
  495. rm $(INTERFACE:%.i=%.mli)
  496. $(OCAMLFIND) $(OCC) -g -c -package dl $(INTERFACE:%.i=%.ml)
  497. test -z "$(PROGFILE)" || test -f "$(PROGFILE)" && \
  498. $(OCC) $(OCAMLPP) -c $(PROGFILE)
  499. $(NOLINK) || $(OCAMLFIND) \
  500. $(OCC) -g -ccopt -g -cclib -g -custom -o $(TARGET) \
  501. swig.cmo \
  502. -package dl -linkpkg \
  503. $(INTERFACE:%.i=%.cmo) $(PROGFILE:%.ml=%.cmo)
  504. ocaml_static_toplevel: $(SRCS)
  505. $(OCAMLCORE)
  506. $(SWIG) -ocaml $(SWIGOPT) $(INTERFACEPATH)
  507. $(OCC) -g -c -ccopt -g -ccopt "$(INCLUDES)" $(ISRCS) $(SRCS)
  508. $(OCC) -g -c $(INTERFACE:%.i=%.mli)
  509. $(OCC) -g -c $(INTERFACE:%.i=%.ml)
  510. test -z "$(PROGFILE)" || test -f "$(PROGFILE)" && \
  511. $(OCC) $(OCAMLPP) -c $(PROGFILE)
  512. $(NOLINK) || $(OCAMLMKTOP) \
  513. swig.cmo \
  514. -I $(OCAMLP4WHERE) camlp4o.cma swigp4.cmo \
  515. -g -ccopt -g -cclib -g -custom -o $(TARGET)_top \
  516. $(INTERFACE:%.i=%.cmo) \
  517. $(INTERFACE:%.i=%_wrap.@OBJEXT@) $(OBJS) -cclib "$(LIBS)"
  518. ocaml_static_cpp: $(SRCS)
  519. $(OCAMLCORE)
  520. $(SWIG) -ocaml -c++ $(SWIGOPT) $(INTERFACEPATH)
  521. cp $(ICXXSRCS) $(ICXXSRCS:%.cxx=%.c)
  522. $(OCC) -cc '$(CXX) -Wno-write-strings' -g -c -ccopt -g -ccopt "-xc++ $(INCLUDES)" \
  523. $(ICXXSRCS:%.cxx=%.c) $(SRCS) $(CXXSRCS)
  524. $(OCC) -g -c $(INTERFACE:%.i=%.mli)
  525. $(OCC) -g -c $(INTERFACE:%.i=%.ml)
  526. test -z "$(PROGFILE)" || test -f "$(PROGFILE)" && \
  527. $(OCC) $(OCAMLPP) -c $(PROGFILE)
  528. $(NOLINK) || $(OCC) -g -ccopt -g -cclib -g -custom -o $(TARGET) \
  529. swig.cmo \
  530. $(INTERFACE:%.i=%.cmo) \
  531. $(PROGFILE:%.ml=%.cmo) \
  532. $(INTERFACE:%.i=%_wrap.@OBJEXT@) $(OBJS) \
  533. -cclib "$(LIBS)" -cc '$(CXX) -Wno-write-strings'
  534. ocaml_static_cpp_toplevel: $(SRCS)
  535. $(OCAMLCORE)
  536. $(SWIG) -ocaml -c++ $(SWIGOPT) $(INTERFACEPATH)
  537. cp $(ICXXSRCS) $(ICXXSRCS:%.cxx=%.c)
  538. $(OCC) -cc '$(CXX) -Wno-write-strings' -g -c -ccopt -g -ccopt "-xc++ $(INCLUDES)" \
  539. $(ICXXSRCS:%.cxx=%.c) $(SRCS) $(CXXSRCS)
  540. $(OCC) -g -c $(INTERFACE:%.i=%.mli)
  541. $(OCC) -g -c $(INTERFACE:%.i=%.ml)
  542. test -z "$(PROGFILE)" || test -f "$(PROGFILE)" && \
  543. $(OCC) $(OCAMLPP) -c $(PROGFILE)
  544. $(NOLINK) || $(OCAMLMKTOP) \
  545. swig.cmo \
  546. -I $(OCAMLP4WHERE) dynlink.cma camlp4o.cma swigp4.cmo \
  547. -g -ccopt -g -cclib -g -custom -o $(TARGET)_top \
  548. $(INTERFACE:%.i=%.cmo) \
  549. $(INTERFACE:%.i=%_wrap.@OBJEXT@) $(OBJS) \
  550. -cclib "$(LIBS)" -cc '$(CXX) -Wno-write-strings'
  551. ocaml_dynamic_cpp: $(SRCS)
  552. $(OCAMLCORE)
  553. $(SWIG) -ocaml -c++ $(SWIGOPT) $(INTERFACEPATH)
  554. cp $(ICXXSRCS) $(ICXXSRCS:%.cxx=%.c)
  555. $(OCC) -cc '$(CXX) -Wno-write-strings' -g -c -ccopt -g -ccopt "-xc++ $(INCLUDES)" \
  556. $(ICXXSRCS:%.cxx=%.c) $(SRCS) $(CXXSRCS) -ccopt -fPIC
  557. $(CXXSHARED) $(CFLAGS) -o $(INTERFACE:%.i=%@SO@) \
  558. $(INTERFACE:%.i=%_wrap.@OBJEXT@) $(OBJS) \
  559. $(CPP_DLLIBS) $(LIBS)
  560. $(OCAMLDLGEN) $(INTERFACE:%.i=%.ml) $(INTERFACE:%.i=%@SO@) > \
  561. $(INTERFACE:%.i=%_dynamic.ml)
  562. mv $(INTERFACE:%.i=%_dynamic.ml) $(INTERFACE:%.i=%.ml)
  563. rm $(INTERFACE:%.i=%.mli)
  564. $(OCAMLFIND) $(OCC) -g -c -package dl $(INTERFACE:%.i=%.ml)
  565. test -z "$(PROGFILE)" || test -f "$(PROGFILE)" && \
  566. $(OCC) $(OCAMLPP) -c $(PROGFILE)
  567. $(NOLINK) || $(OCAMLFIND) \
  568. swig.cmo \
  569. $(OCC) -cclib -export-dynamic -g -ccopt -g -cclib -g -custom \
  570. -o $(TARGET) \
  571. -package dl -linkpkg \
  572. $(INTERFACE:%.i=%.cmo) $(PROGFILE:%.ml=%.cmo) -cc '$(CXX) -Wno-write-strings'
  573. ocaml_clean:
  574. rm -f *_wrap* *~ .~* *.cmo *.cmi $(MLFILE) $(MLFILE)i swig.mli swig.cmi swig.ml swig.cmo swigp4.ml swigp4.cmo
  575. rm -f core @EXTRA_CLEAN@
  576. rm -f *.@OBJEXT@ *@SO@
  577. ##################################################################
  578. ##### RUBY ######
  579. ##################################################################
  580. # Make sure these locate your Ruby installation
  581. RUBY_CFLAGS= @RUBYCCDLFLAGS@ $(DEFS)
  582. RUBY_INCLUDE= @RUBYINCLUDE@
  583. RUBY_LIB = @RUBYLIB@
  584. RUBY_DLNK = @RUBYDYNAMICLINKING@
  585. # ----------------------------------------------------------------
  586. # Build a C dynamically loadable module
  587. # ----------------------------------------------------------------
  588. ruby: $(SRCS)
  589. $(SWIG) -ruby $(SWIGOPT) $(INTERFACEPATH)
  590. $(CC) -c $(CCSHARED) $(CFLAGS) $(RUBY_CFLAGS) $(ISRCS) $(SRCS) $(INCLUDES) $(RUBY_INCLUDE)
  591. $(LDSHARED) $(CFLAGS) $(OBJS) $(IOBJS) $(RUBY_DLNK) $(LIBS) -o $(LIBPREFIX)$(TARGET)$(SO)
  592. # -----------------------------------------------------------------
  593. # Build a C++ dynamically loadable module
  594. # -----------------------------------------------------------------
  595. ruby_cpp: $(SRCS)
  596. $(SWIG) -c++ -ruby $(SWIGOPT) $(INTERFACEPATH)
  597. $(CXX) -c $(CCSHARED) $(CFLAGS) $(RUBY_CFLAGS) $(ICXXSRCS) $(SRCS) $(CXXSRCS) $(INCLUDES) $(RUBY_INCLUDE)
  598. $(CXXSHARED) $(CFLAGS) $(OBJS) $(IOBJS) $(RUBY_DLNK) $(LIBS) $(CPP_DLLIBS) -o $(LIBPREFIX)$(TARGET)$(SO)
  599. # -----------------------------------------------------------------
  600. # Build statically linked Ruby interpreter
  601. #
  602. # These should only be used in conjunction with the %include embed.i
  603. # library file
  604. # -----------------------------------------------------------------
  605. RUBY_LIBOPTS = @RUBYLINK@ @LIBS@ $(SYSLIBS)
  606. ruby_static: $(SRCS)
  607. $(SWIG) -ruby -lembed.i $(SWIGOPT) $(INTERFACEPATH)
  608. $(CC) $(CFLAGS) $(RUBY_CFLAGS) @LINKFORSHARED@ $(ISRCS) $(SRCS) $(INCLUDES) \
  609. $(RUBY_INCLUDE) $(LIBS) -L$(RUBY_LIB) $(RUBY_LIBOPTS) -o $(TARGET)
  610. ruby_cpp_static: $(SRCS)
  611. $(SWIG) -c++ -ruby -lembed.i $(SWIGOPT) $(INTERFACEPATH)
  612. $(CXX) $(CFLAGS) $(RUBY_CFLAGS) $(ICXXSRCS) $(SRCS) $(CXXSRCS) $(INCLUDES) \
  613. $(RUBY_INCLUDE) $(LIBS) -L$(RUBY_LIB) $(RUBY_LIBOPTS) -o $(TARGET)
  614. # -----------------------------------------------------------------
  615. # Cleaning the Ruby examples
  616. # -----------------------------------------------------------------
  617. ruby_clean:
  618. rm -f *_wrap* *~ .~* myruby@EXEEXT@ *.pm
  619. rm -f core @EXTRA_CLEAN@
  620. rm -f *.@OBJEXT@ *@SO@
  621. ##################################################################
  622. ##### PHP ######
  623. ##################################################################
  624. # -------------------------------------------------------------------
  625. # Build a PHP dynamically loadable module (C)
  626. # -------------------------------------------------------------------
  627. PHP_INCLUDE = @PHPINC@
  628. PHP_SO = @PHP_SO@
  629. php: $(SRCS)
  630. $(SWIG) -php $(SWIGOPT) $(INTERFACEPATH)
  631. $(CC) -c $(CCSHARED) $(CFLAGS) $(SRCS) $(ISRCS) $(INCLUDES) $(PHP_INCLUDE)
  632. $(LDSHARED) $(CFLAGS) $(OBJS) $(IOBJS) $(LIBS) -o $(LIBPREFIX)$(TARGET)$(PHP_SO)
  633. # --------------------------------------------------------------------
  634. # Build a PHP dynamically loadable module (C++)
  635. # --------------------------------------------------------------------
  636. php_cpp: $(SRCS)
  637. $(SWIG) -php -cppext cxx -c++ $(SWIGOPT) $(INTERFACEPATH)
  638. $(CXX) -c $(CCSHARED) $(CFLAGS) $(SRCS) $(CXXSRCS) $(ICXXSRCS) $(INCLUDES) $(PHP_INCLUDE)
  639. $(CXXSHARED) $(CFLAGS) $(OBJS) $(IOBJS) $(LIBS) $(CPP_DLLIBS) -o $(LIBPREFIX)$(TARGET)$(PHP_SO)
  640. # -----------------------------------------------------------------
  641. # Running a PHP example
  642. # -----------------------------------------------------------------
  643. PHP=@PHP@
  644. PHPSCRIPT ?= runme.php
  645. php_run:
  646. $(RUNTOOL) $(PHP) -n -q -d extension_dir=. -d safe_mode=Off $(PHPSCRIPT)
  647. # -----------------------------------------------------------------
  648. # Cleaning the PHP examples
  649. # -----------------------------------------------------------------
  650. php_clean:
  651. rm -f *_wrap* *~ .~* example.php php_example.h
  652. rm -f core @EXTRA_CLEAN@
  653. rm -f *.@OBJEXT@ *@SO@
  654. ##################################################################
  655. ##### Pike ######
  656. ##################################################################
  657. # Make sure these locate your Pike installation
  658. PIKE_CFLAGS = @PIKECCDLFLAGS@ -DHAVE_CONFIG_H
  659. PIKE_INCLUDE = @PIKEINCLUDE@
  660. PIKE_LIB = @PIKELIB@
  661. PIKE_DLNK = @PIKEDYNAMICLINKING@
  662. # ----------------------------------------------------------------
  663. # Build a C dynamically loadable module
  664. # ----------------------------------------------------------------
  665. pike: $(SRCS)
  666. $(SWIG) -pike $(SWIGOPT) $(INTERFACEPATH)
  667. $(CC) -c $(CCSHARED) $(CFLAGS) $(PIKE_CFLAGS) $(ISRCS) $(SRCS) $(INCLUDES) $(PIKE_INCLUDE)
  668. $(LDSHARED) $(CFLAGS) $(OBJS) $(IOBJS) $(PIKE_DLNK) $(LIBS) -o $(LIBPREFIX)$(TARGET)$(SO)
  669. # -----------------------------------------------------------------
  670. # Build a C++ dynamically loadable module
  671. # -----------------------------------------------------------------
  672. pike_cpp: $(SRCS)
  673. $(SWIG) -c++ -pike $(SWIGOPT) $(INTERFACEPATH)
  674. $(CXX) -c $(CCSHARED) $(CFLAGS) $(PIKE_CFLAGS) $(ICXXSRCS) $(SRCS) $(CXXSRCS) $(INCLUDES) $(PIKE_INCLUDE)
  675. $(CXXSHARED) $(CFLAGS) $(OBJS) $(IOBJS) $(PIKE_DLNK) $(LIBS) $(CPP_DLLIBS) -o $(LIBPREFIX)$(TARGET)$(SO)
  676. # -----------------------------------------------------------------
  677. # Build statically linked Pike interpreter
  678. #
  679. # These should only be used in conjunction with the %include embed.i
  680. # library file
  681. # -----------------------------------------------------------------
  682. PIKE_LIBOPTS = @PIKELINK@ @LIBS@ $(SYSLIBS)
  683. pike_static: $(SRCS)
  684. $(SWIG) -pike -lembed.i $(SWIGOPT) $(INTERFACEPATH)
  685. $(CC) $(CFLAGS) $(PIKE_CFLAGS) @LINKFORSHARED@ $(ISRCS) $(SRCS) $(INCLUDES) \
  686. $(PIKE_INCLUDE) $(LIBS) -L$(PIKE_LIB) $(PIKE_LIBOPTS) -o $(TARGET)
  687. pike_cpp_static: $(SRCS)
  688. $(SWIG) -c++ -pike -lembed.i $(SWIGOPT) $(INTERFACEPATH)
  689. $(CXX) $(CFLAGS) $(PIKE_CFLAGS) $(ICXXSRCS) $(SRCS) $(CXXSRCS) $(INCLUDES) \
  690. $(PIKE_INCLUDE) $(LIBS) -L$(PIKE_LIB) $(PIKE_LIBOPTS) -o $(TARGET)
  691. # -----------------------------------------------------------------
  692. # Cleaning the Pike examples
  693. # -----------------------------------------------------------------
  694. pike_clean:
  695. rm -f *_wrap* *~ .~* mypike@EXEEXT@
  696. rm -f core @EXTRA_CLEAN@
  697. rm -f *.@OBJEXT@ *@SO@
  698. ##################################################################
  699. ##### Chicken ######
  700. ##################################################################
  701. CHICKEN = @CHICKEN@
  702. CHICKEN_CSC = @CHICKEN_CSC@
  703. CHICKEN_LIBOPTS = @CHICKENLIB@ $(SYSLIBS)
  704. CHICKEN_SHAREDLIBOPTS = @CHICKENSHAREDLIB@ $(SYSLIBS)
  705. CHICKEN_CFLAGS = @CHICKENOPTS@
  706. CHICKENOPTS = -quiet
  707. CHICKEN_MAIN =
  708. # SWIG produces $(ISRCS) (the C wrapper file)
  709. # and $(CHICKEN_GENERATED_SCHEME) (the Scheme wrapper file):
  710. CHICKEN_GENERATED_SCHEME = $(INTERFACE:.i=.scm)
  711. CHICKEN_COMPILED_SCHEME = $(INTERFACE:.i=_chicken.c)
  712. CHICKEN_COMPILED_OBJECT = $(CHICKEN_COMPILED_SCHEME:.c=.@OBJEXT@)
  713. # flags for the main chicken sources (only used when compiling staticly)
  714. CHICKEN_COMPILED_MAIN = $(CHICKEN_MAIN:.scm=_chicken.c)
  715. CHICKEN_COMPILED_MAIN_OBJECT = $(CHICKEN_COMPILED_MAIN:.c=.@OBJEXT@)
  716. # -----------------------------------------------------------------
  717. # Build a CHICKEN dynamically loadable module
  718. # -----------------------------------------------------------------
  719. # This is the old way to build chicken, but it does not work correctly with exceptions
  720. chicken_direct: $(SRCS)
  721. $(SWIG) -chicken $(SWIGOPT) $(INCLUDE) $(INTERFACEPATH)
  722. $(CHICKEN) $(CHICKEN_GENERATED_SCHEME) $(CHICKENOPTS) \
  723. -dynamic -feature chicken-compile-shared \
  724. -output-file $(CHICKEN_COMPILED_SCHEME)
  725. $(CC) -c $(CCSHARED) $(CFLAGS) $(CHICKEN_CFLAGS) \
  726. $(INCLUDES) $(CHICKEN_INCLUDE) $(ISRCS) $(SRCS) $(CHICKEN_COMPILED_SCHEME)
  727. $(LDSHARED) $(CFLAGS) $(CHICKEN_COMPILED_OBJECT) $(OBJS) $(IOBJS) \
  728. $(LIBS) $(CHICKEN_SHAREDLIBOPTS) -o $(LIBPREFIX)$(TARGET)$(SO)
  729. chicken_direct_cpp: $(CXXSRCS) $(CHICKSRCS)
  730. $(SWIG) -c++ -chicken $(SWIGOPT) $(INCLUDE) $(INTERFACEPATH)
  731. $(CHICKEN) $(CHICKEN_GENERATED_SCHEME) $(CHICKENOPTS) \
  732. -dynamic -feature chicken-compile-shared \
  733. -output-file $(CHICKEN_COMPILED_SCHEME)
  734. $(CXX) -c $(CCSHARED) $(CFLAGS) $(CHICKEN_CFLAGS) \
  735. $(INCLUDES) $(CHICKEN_INCLUDE) $(ICXXSRCS) $(SRCS) $(CXXSRCS) $(CHICKEN_COMPILED_SCHEME)
  736. $(CXXSHARED) $(CFLAGS) $(CHICKEN_COMPILED_OBJECT) $(OBJS) $(IOBJS) \
  737. $(LIBS) $(CPP_DLLIBS) $(CHICKEN_SHAREDLIBOPTS) -o $(LIBPREFIX)$(TARGET)$(SO)
  738. # -----------------------------------------------------------------
  739. # Build statically linked CHICKEN interpreter
  740. # -----------------------------------------------------------------
  741. # The following two targets are also used by the test suite
  742. chicken_static: $(SRCS) $(CHICKSRCS)
  743. $(SWIG) -chicken $(SWIGOPT) $(INCLUDE) $(INTERFACEPATH)
  744. $(CHICKEN) $(CHICKEN_GENERATED_SCHEME) $(CHICKENOPTS) \
  745. -output-file $(CHICKEN_COMPILED_SCHEME)
  746. $(CHICKEN) $(CHICKEN_MAIN) $(CHICKENOPTS) \
  747. -output-file $(CHICKEN_MAIN:.scm=_chicken.c)
  748. $(CC) -c $(CCSHARED) $(CFLAGS) $(CHICKEN_CFLAGS) \
  749. $(INCLUDES) $(CHICKEN_INCLUDE) $(ISRCS) $(SRCS) \
  750. $(CHICKEN_COMPILED_SCHEME) $(CHICKEN_COMPILED_MAIN)
  751. $(CC) $(CHICKEN_COMPILED_OBJECT) $(CHICKEN_COMPILED_MAIN_OBJECT) \
  752. $(OBJS) $(IOBJS) $(LIBS) $(CHICKEN_SHAREDLIBOPTS) -o $(TARGET)
  753. chicken_static_cpp: $(CXXSRCS) $(CHICKSRCS)
  754. $(SWIG) -c++ -chicken $(SWIGOPT) $(INCLUDE) $(INTERFACEPATH)
  755. $(CHICKEN) $(CHICKEN_GENERATED_SCHEME) $(CHICKENOPTS) \
  756. -output-file $(CHICKEN_COMPILED_SCHEME)
  757. $(CHICKEN) $(CHICKEN_MAIN) $(CHICKENOPTS) \
  758. -output-file $(CHICKEN_MAIN:.scm=_chicken.c)
  759. $(CXX) -c $(CCSHARED) $(CFLAGS) $(CHICKEN_CFLAGS) \
  760. $(INCLUDES) $(CHICKEN_INCLUDE) $(ICXXSRCS) $(SRCS) $(CXXSRCS) \
  761. $(CHICKEN_COMPILED_SCHEME) $(CHICKEN_COMPILED_MAIN)
  762. $(CXX) $(CHICKEN_COMPILED_OBJECT) $(CHICKEN_COMPILED_MAIN_OBJECT) \
  763. $(OBJS) $(IOBJS) $(LIBS) $(CPP_DLLIBS) $(CHICKEN_SHAREDLIBOPTS) -o $(TARGET)
  764. # ----------------------------------------------------------------
  765. # Build a shared library using csc
  766. # ----------------------------------------------------------------
  767. chicken:
  768. $(SWIG) -chicken $(SWIGOPT) $(INCLUDE) $(INTERFACEPATH)
  769. $(COMPILETOOL) $(CHICKEN_CSC) -s `echo $(INCLUDES) | sed 's/-I/-C -I/g'` $(CHICKEN_GENERATED_SCHEME) $(SRCS) $(ISRCS) -o $(TARGET)$(SO)
  770. chicken_cpp:
  771. $(SWIG) -c++ -chicken $(SWIGOPT) $(INCLUDE) $(INTERFACEPATH)
  772. $(COMPILETOOL) $(CHICKEN_CSC) -s `echo $(INCLUDES) | sed 's/-I/-C -I/g'` $(CHICKEN_GENERATED_SCHEME) $(SRCS) $(ICXXSRCS) $(CXXSRCS) -o $(TARGET)$(SO)
  773. chicken_externalhdr:
  774. $(SWIG) -chicken -external-runtime $(TARGET)
  775. chicken_clean:
  776. rm -f *_wrap* *~ .~* *_chicken*
  777. rm -f core @EXTRA_CLEAN@
  778. rm -f *.@OBJEXT@ *@SO@
  779. ##################################################################
  780. ##### CSHARP ######
  781. ##################################################################
  782. # Extra CSharp specific dynamic linking options
  783. CSHARP_DLNK = @CSHARPDYNAMICLINKING@
  784. CSHARP_LIBPREFIX = @CSHARPLIBRARYPREFIX@
  785. CSHARPCOMPILER = @CSHARPCOMPILER@
  786. CSHARPCILINTERPRETER = @CSHARPCILINTERPRETER@
  787. CSHARPCFLAGS = @CSHARPCFLAGS@
  788. CSHARPSO = @CSHARPSO@
  789. # ----------------------------------------------------------------
  790. # Build a CSharp dynamically loadable module (C)
  791. # ----------------------------------------------------------------
  792. csharp: $(SRCS)
  793. $(SWIG) -csharp $(SWIGOPT) $(INTERFACEPATH)
  794. $(CC) -c $(CCSHARED) $(CFLAGS) $(CSHARPCFLAGS) $(SRCS) $(ISRCS) $(INCLUDES)
  795. $(LDSHARED) $(CFLAGS) $(OBJS) $(IOBJS) $(CSHARP_DLNK) $(LIBS) -o $(CSHARP_LIBPREFIX)$(TARGET)$(CSHARPSO)
  796. # ----------------------------------------------------------------
  797. # Build a CSharp dynamically loadable module (C++)
  798. # ----------------------------------------------------------------
  799. csharp_cpp: $(SRCS)
  800. $(SWIG) -csharp -c++ $(SWIGOPT) $(INTERFACEPATH)
  801. $(CXX) -c $(CCSHARED) $(CFLAGS) $(CSHARPCFLAGS) $(SRCS) $(CXXSRCS) $(ICXXSRCS) $(INCLUDES)
  802. $(CXXSHARED) $(CFLAGS) $(OBJS) $(IOBJS) $(CSHARP_DLNK) $(LIBS) $(CPP_DLLIBS) -o $(CSHARP_LIBPREFIX)$(TARGET)$(CSHARPSO)
  803. # ----------------------------------------------------------------
  804. # Compile CSharp files
  805. # ----------------------------------------------------------------
  806. csharp_compile: $(SRCS)
  807. $(COMPILETOOL) $(CSHARPCOMPILER) $(CSHARPFLAGS) $(CSHARPSRCS)
  808. # -----------------------------------------------------------------
  809. # Cleaning the CSharp examples
  810. # -----------------------------------------------------------------
  811. csharp_clean:
  812. rm -f *_wrap* *~ .~* runme runme.exe *.exe.mdb gc.log `find . -name \*.cs | grep -v runme.cs`
  813. rm -f core @EXTRA_CLEAN@
  814. rm -f *.@OBJEXT@ *@CSHARPSO@
  815. ##################################################################
  816. ##### LUA ######
  817. ##################################################################
  818. # lua flags
  819. LUA_INCLUDE= @LUAFLAGS@
  820. LUA_LIB = @LUALINK@
  821. # Extra specific dynamic linking options
  822. LUA_DLNK = @LUADYNAMICLINKING@
  823. LUA_SO = @LUA_SO@
  824. # Extra code for lua static link
  825. LUA_INTERP = ../lua.c
  826. # ----------------------------------------------------------------
  827. # Build a C dynamically loadable module
  828. # ----------------------------------------------------------------
  829. lua: $(SRCS)
  830. $(SWIG) -lua $(SWIGOPT) $(INTERFACEPATH)
  831. $(CC) -c $(CCSHARED) $(CFLAGS) $(ISRCS) $(SRCS) $(INCLUDES) $(LUA_INCLUDE)
  832. $(LDSHARED) $(CFLAGS) $(OBJS) $(IOBJS) $(LIBS) $(LUA_LIB) -o $(LIBPREFIX)$(TARGET)$(LUA_SO)
  833. # -----------------------------------------------------------------
  834. # Build a C++ dynamically loadable module
  835. # -----------------------------------------------------------------
  836. lua_cpp: $(SRCS)
  837. $(SWIG) -c++ -lua $(SWIGOPT) $(INTERFACEPATH)
  838. $(CXX) -c $(CCSHARED) $(CFLAGS) $(ICXXSRCS) $(SRCS) $(CXXSRCS) $(INCLUDES) $(LUA_INCLUDE)
  839. $(CXXSHARED) $(CFLAGS) $(OBJS) $(IOBJS) $(LIBS) $(LUA_LIB) $(CPP_DLLIBS) -o $(LIBPREFIX)$(TARGET)$(LUA_SO)
  840. # -----------------------------------------------------------------
  841. # Build statically linked Lua interpreter
  842. # -----------------------------------------------------------------
  843. lua_static: $(SRCS)
  844. $(SWIG) -lua -module example $(SWIGOPT) $(INTERFACEPATH)
  845. $(CC) $(CFLAGS) $(ISRCS) $(SRCS) $(LUA_INTERP) $(INCLUDES) \
  846. $(LUA_INCLUDE) $(LIBS) $(LUA_LIB) -o $(TARGET)
  847. lua_static_cpp: $(SRCS)
  848. $(SWIG) -c++ -lua -module example $(SWIGOPT) $(INTERFACEPATH)
  849. $(CXX) $(CFLAGS) $(ICXXSRCS) $(SRCS) $(CXXSRCS) $(LUA_INTERP) $(INCLUDES) \
  850. $(LUA_INCLUDE) $(LIBS) $(LUA_LIB) -o $(TARGET)
  851. # -----------------------------------------------------------------
  852. # Cleaning the lua examples
  853. # -----------------------------------------------------------------
  854. lua_clean:
  855. rm -f *_wrap* *~ .~* mylua@EXEEXT@
  856. rm -f core @EXTRA_CLEAN@
  857. rm -f *.@OBJEXT@ *@SO@
  858. ##################################################################
  859. ##### ALLEGRO CL ######
  860. ##################################################################
  861. allegrocl: $(SRCS)
  862. $(SWIG) -allegrocl -cwrap $(SWIGOPT) $(INTERFACEPATH)
  863. $(CC) -c $(CCSHARED) $(CFLAGS) $(ISRCS) $(INCLUDES) $(SRCS)
  864. $(LDSHARED) $(CFLAGS) $(OBJS) $(IOBJS) $(LIBS) -o $(LIBPREFIX)$(TARGET)$(SO)
  865. allegrocl_cpp: $(SRCS)
  866. $(SWIG) -c++ -allegrocl $(SWIGOPT) $(INTERFACEPATH)
  867. $(CXX) -c $(CCSHARED) $(CFLAGS) $(ICXXSRCS) $(SRCS) $(CXXSRCS) $(INCLUDES)
  868. $(CXXSHARED) $(CFLAGS) $(OBJS) $(IOBJS) $(LIBS) $(CPP_DLLIBS) -o $(LIBPREFIX)$(TARGET)$(SO)
  869. allegrocl_clean:
  870. rm -f *_wrap* *~ .~*
  871. rm -f core @EXTRA_CLEAN@
  872. rm -f *.@OBJEXT@ *@SO@
  873. ##################################################################
  874. ##### CLISP ######
  875. ##################################################################
  876. clisp: $(SRCS)
  877. $(SWIG) -clisp $(SWIGOPT) $(INTERFACEPATH)
  878. clisp_cpp: $(SRCS)
  879. $(SWIG) -c++ -clisp $(SWIGOPT) $(INTERFACEPATH)
  880. clisp_clean:
  881. rm -f *_wrap* *~ .~*
  882. rm -f core @EXTRA_CLEAN@
  883. rm -f *.@OBJEXT@ *@SO@
  884. ##################################################################
  885. ##### CFFI ######
  886. ##################################################################
  887. cffi: $(SRCS)
  888. $(SWIG) -cffi $(SWIGOPT) $(INTERFACEPATH)
  889. # $(CC) -c $(CCSHARED) $(CFLAGS) $(ISRCS) $(INCLUDES) $(SRCS)
  890. # $(LDSHARED) $(CFLAGS) $(OBJS) $(IOBJS) $(LIBS) -o $(LIBPREFIX)$(TARGET)$(SO)
  891. cffi_cpp: $(SRCS)
  892. $(SWIG) -c++ -cffi $(SWIGOPT) $(INTERFACEPATH)
  893. $(CXX) -c $(CCSHARED) $(CFLAGS) $(ICXXSRCS) $(SRCS) $(CXXSRCS) $(INCLUDES)
  894. $(CXXSHARED) $(CFLAGS) $(OBJS) $(IOBJS) $(LIBS) $(CPP_DLLIBS) -o $(LIBPREFIX)$(TARGET)$(SO)
  895. cffi_clean:
  896. rm -f *_wrap* *~ .~*
  897. rm -f core @EXTRA_CLEAN@
  898. rm -f *.@OBJEXT@ *@SO@
  899. ##################################################################
  900. ##### UFFI ######
  901. ##################################################################
  902. uffi: $(SRCS)
  903. $(SWIG) -uffi $(SWIGOPT) $(INTERFACEPATH)
  904. # $(CC) -c $(CCSHARED) $(CFLAGS) $(ISRCS) $(INCLUDES) $(SRCS)
  905. # $(LDSHARED) $(CFLAGS) $(OBJS) $(IOBJS) $(LIBS) -o $(LIBPREFIX)$(TARGET)$(SO)
  906. uffi_cpp: $(SRCS)
  907. $(SWIG) -c++ -uffi $(SWIGOPT) $(INTERFACEPATH)
  908. # $(CXX) -c $(CCSHARED) $(CFLAGS) $(ICXXSRCS) $(SRCS) $(CXXSRCS) $(INCLUDES)
  909. # $(CXXSHARED) $(CFLAGS) $(OBJS) $(IOBJS) $(LIBS) $(CPP_DLLIBS) -o $(LIBPREFIX)$(TARGET)$(SO)
  910. uffi_clean:
  911. rm -f *_wrap* *~ .~*
  912. rm -f core @EXTRA_CLEAN@
  913. rm -f *.@OBJEXT@ *@SO@
  914. ##################################################################
  915. ##### R ######
  916. ##################################################################
  917. R = R
  918. RCXXSRCS = $(INTERFACE:.i=_wrap.cpp) #Need to use _wrap.cpp for R build system as it does not understand _wrap.cxx
  919. RRSRC = $(INTERFACE:.i=.R)
  920. R_CFLAGS=-fPIC
  921. # need to compile .cxx files outside of R build system to make sure that
  922. # we get -fPIC
  923. r: $(SRCS)
  924. $(SWIG) -r $(SWIGOPT) $(INTERFACEPATH)
  925. ifneq ($(SRCS),)
  926. $(CXX) -g -c $(CFLAGS) $(R_CFLAGS) $(SRCS) $(INCLUDES)
  927. endif
  928. +( PKG_CPPFLAGS="$(INCLUDES)" $(COMPILETOOL) $(R) CMD SHLIB -o $(LIBPREFIX)$(TARGET)$(SO) $(ISRCS) $(OBJS) )
  929. r_cpp: $(CXXSRCS)
  930. $(SWIG) -c++ -r $(SWIGOPT) -o $(RCXXSRCS) $(INTERFACEPATH)
  931. ifneq ($(CXXSRCS),)
  932. $(CXX) -g -c $(CFLAGS) $(R_CFLAGS) $(CXXSRCS) $(INCLUDES)
  933. endif
  934. +( PKG_CPPFLAGS="$(INCLUDES)" $(COMPILETOOL) $(R) CMD SHLIB -o $(LIBPREFIX)$(TARGET)$(SO) $(RCXXSRCS) $(OBJS) )
  935. r_clean:
  936. rm -f *_wrap* *~ .~*
  937. rm -f core @EXTRA_CLEAN@
  938. rm -f *.@OBJEXT@ *@SO@ NAMESPACE
  939. rm -f $(RRSRC) runme.Rout .RData
  940. ##################################################################
  941. ##### Go ######
  942. ##################################################################
  943. GO = @GO@
  944. GOGCC = @GOGCC@
  945. GO1 = @GO1@
  946. GOC = @GOC@
  947. GOSWIGARG = `if $(GOGCC) ; then echo -gccgo; fi`
  948. GOCOMPILEARG = `if $(GOGCC) ; then echo -c -g; elif $(GO1) ; then echo tool $(GOC:c=g) ; fi`
  949. GOSRCS = $(INTERFACE:.i=.go)
  950. GOCSRCS = $(INTERFACE:.i=_gc.c)
  951. GOLD = $(GOC:c=l)
  952. GOTOOL = `if $(GO1) ; then echo go tool; fi`
  953. GOPACK = `if $(GO1) ; then echo go tool pack; else echo gopack; fi`
  954. GOPACKAGE = $(INTERFACE:.i=.a)
  955. GOOBJEXT = $(GOC:c=)
  956. GOGCOBJS = $(GOSRCS:.go=.$(GOOBJEXT))
  957. GOGCCOBJS = $(GOSRCS:.go=.@OBJEXT@)
  958. # ----------------------------------------------------------------
  959. # Build a Go dynamically loadable module (C)
  960. # ----------------------------------------------------------------
  961. go: $(SRCS)
  962. $(SWIG) -go $(GOSWIGARG) $(SWIGOPT) $(INTERFACEPATH)
  963. $(CC) -g -c $(CCSHARED) $(CFLAGS) $(SRCS) $(ISRCS) $(INCLUDES)
  964. $(LDSHARED) $(CFLAGS) $(OBJS) $(IOBJS) $(LIBS) -o $(LIBPREFIX)$(TARGET)$(SO)
  965. $(COMPILETOOL) $(GO) $(GOCOMPILEARG) -I . $(GOSRCS)
  966. if ! $(GOGCC) ; then \
  967. $(COMPILETOOL) $(GOTOOL) $(GOC) -I $${GOROOT}/pkg/$${GOOS}_$${GOARCH} $(GOCSRCS) && \
  968. $(COMPILETOOL) $(GOPACK) grc $(GOPACKAGE) $(GOGCOBJS) $(GOCSRCS:.c=.$(GOOBJEXT)); \
  969. fi
  970. # ----------------------------------------------------------------
  971. # Build a Go dynamically loadable module (C++)
  972. # ----------------------------------------------------------------
  973. go_cpp: $(SRCS)
  974. $(SWIG) -go -c++ $(GOSWIGARG) $(SWIGOPT) $(INTERFACEPATH)
  975. $(CXX) -g -c $(CCSHARED) $(CFLAGS) $(SRCS) $(CXXSRCS) $(ICXXSRCS) $(INCLUDES)
  976. $(CXXSHARED) $(CFLAGS) $(OBJS) $(IOBJS) $(LIBS) $(CPP_DLLIBS) -o $(LIBPREFIX)$(TARGET)$(SO)
  977. $(COMPILETOOL) $(GO) $(GOCOMPILEARG) -I . $(GOSRCS)
  978. if ! $(GOGCC) ; then \
  979. $(COMPILETOOL) $(GOTOOL) $(GOC) -I $${GOROOT}/pkg/$${GOOS}_$${GOARCH} $(GOCSRCS) && \
  980. $(COMPILETOOL) $(GOPACK) grc $(GOPACKAGE) $(GOGCOBJS) $(GOCSRCS:.c=.$(GOOBJEXT)); \
  981. fi
  982. # -----------------------------------------------------------------
  983. # Running a Go example
  984. # -----------------------------------------------------------------
  985. go_run: runme.go
  986. $(GO) $(GOCOMPILEARG) runme.go
  987. if $(GOGCC) ; then \
  988. $(COMPILETOOL) $(GO) -o runme runme.@OBJEXT@ $(GOGCCOBJS) $(LIBPREFIX)$(TARGET)$(SO); \
  989. else \
  990. $(COMPILETOOL) $(GOTOOL) $(GOLD) -r $${GOROOT}/pkg/$${GOOS}_$${GOARCH}:. -o runme runme.$(GOOBJEXT); \
  991. fi
  992. env LD_LIBRARY_PATH=.:$$LD_LIBRARY_PATH $(RUNTOOL) ./runme
  993. # -----------------------------------------------------------------
  994. # Cleaning the Go examples
  995. # -----------------------------------------------------------------
  996. go_clean:
  997. rm -f *_wrap* *_gc* .~* runme
  998. rm -f core @EXTRA_CLEAN@
  999. rm -f *.@OBJEXT@ *.[568] *.a *@SO@
  1000. ##################################################################
  1001. ##### D ######
  1002. ##################################################################
  1003. DLIBPREFIX = @DLIBPREFIX@
  1004. ifeq (,$(D_VERSION))
  1005. D_VERSION = @DDEFAULTVERSION@
  1006. endif
  1007. ifeq (2,$(D_VERSION))
  1008. SWIGD = $(SWIG) -d -d2
  1009. DCOMPILER = @D2COMPILER@
  1010. else
  1011. SWIGD = $(SWIG) -d
  1012. DCOMPILER = @D1COMPILER@
  1013. endif
  1014. # ----------------------------------------------------------------
  1015. # Build a dynamically loadable D wrapper for a C module
  1016. # ----------------------------------------------------------------
  1017. d: $(SRCS)
  1018. $(SWIGD) $(SWIGOPT) $(INTERFACEPATH)
  1019. $(CC) -c $(CCSHARED) $(CFLAGS) $(DCFLAGS) $(EXTRA_CFLAGS) $(SRCS) $(ISRCS) $(INCLUDES)
  1020. $(LDSHARED) $(CFLAGS) $(DCFLAGS) $(EXTRA_LDFLAGS) $(OBJS) $(IOBJS) $(LIBS) -o $(DLIBPREFIX)$(TARGET)$(SO)
  1021. # ----------------------------------------------------------------
  1022. # Build a dynamically loadable D wrapper for a C++ module
  1023. # ----------------------------------------------------------------
  1024. d_cpp: $(SRCS)
  1025. $(SWIGD) -c++ $(SWIGOPT) $(INTERFACEPATH)
  1026. $(CXX) -c $(CCSHARED) $(CFLAGS) $(DCFLAGS) $(EXTRA_CFLAGS) $(SRCS) $(CXXSRCS) $(ICXXSRCS) $(INCLUDES)
  1027. $(CXXSHARED) $(CFLAGS) $(DCFLAGS) $(EXTRA_LDFLAGS) $(OBJS) $(IOBJS) $(LIBS) $(CPP_DLLIBS) -o $(DLIBPREFIX)$(TARGET)$(SO)
  1028. # ----------------------------------------------------------------
  1029. # Compile D files
  1030. # ----------------------------------------------------------------
  1031. # Clear the DFLAGS environment variable for the compiler call itself
  1032. # to work around a discrepancy in argument handling between DMD and LDC.
  1033. d_compile: $(SRCS)
  1034. DFLAGS="" $(COMPILETOOL) $(DCOMPILER) $(DFLAGS) $(DSRCS)
  1035. # -----------------------------------------------------------------
  1036. # Run D example
  1037. # -----------------------------------------------------------------
  1038. d_run:
  1039. env LD_LIBRARY_PATH=.:$$LD_LIBRARY_PATH $(RUNTOOL) ./runme
  1040. # -----------------------------------------------------------------
  1041. # Clean the D examples
  1042. # -----------------------------------------------------------------
  1043. d_clean:
  1044. rm -f *_wrap* *~ .~* runme runme.exe `find . -name \*.d | grep -v runme.d`
  1045. rm -f core @EXTRA_CLEAN@
  1046. rm -f *.@OBJEXT@ *@SO@