PageRenderTime 57ms CodeModel.GetById 32ms RepoModel.GetById 0ms app.codeStats 0ms

/msvc/Makefile

https://github.com/vincentcoetzee/ecl-iphone
Makefile | 412 lines | 322 code | 38 blank | 52 comment | 19 complexity | 52fc72807b54748dcac50e1e47a85467 MD5 | raw file
  1. #
  2. # Makefile for ECoLisp
  3. #
  4. top_srcdir= ..\src
  5. srcdir = ..\src
  6. # =============================================================
  7. # ECL configuration
  8. # <BEGIN>
  9. SHORT_SITE_NAME =
  10. LONG_SITE_NAME =
  11. ECL_VERSION = 9.3.0
  12. ARCHITECTURE = PENTIUM4
  13. SOFTWARE_TYPE = NT
  14. SOFTWARE_VERSION = 5.0
  15. THEHOST = win32
  16. # Define here the processor type to compile GMP library
  17. # with maximum optimization. Possible values are:
  18. # gc -> generic implementation
  19. # p0 -> Pentium processor
  20. # p3 -> Pentium III processor
  21. # p4 -> Pentium IV processor
  22. GMP_TYPE = gc
  23. # Set it to non-empty to include Win32 thread support
  24. ECL_THREADS =
  25. # Set it to non-empty to include support for Unicode characters
  26. ECL_UNICODE =
  27. # Set it to non-empty to enable Win32 debug support
  28. #ECL_DEBUG = 1
  29. # Add the extensions to include in the build process. Comment any
  30. # of the following lines to remove a feature from the build process
  31. # LISP->C compiled
  32. ECL_CMP =
  33. # ASDF support
  34. ECL_ASDF =
  35. # TCP support
  36. ECL_SOCKETS =
  37. # X Windows support
  38. # ECL_CLX = 1
  39. # Regression Tests support
  40. ECL_RT =
  41. # Defsystem support
  42. ECL_DEFSYS =
  43. # Profiling
  44. ECL_PROFILE =
  45. # <END> (ECL configuration)
  46. # =============================================================
  47. TAR_DIR = %CD%\ecl-$(ECL_VERSION)
  48. # Programs used by "make":
  49. #
  50. CC = cl
  51. LIBS = eclgc.lib eclgmp.lib user32.lib ws2_32.lib shell32.lib
  52. RM = del
  53. RMDIR = rmdir /Q /S
  54. MKDIR = mkdir
  55. EXE = .exe
  56. CP = copy /Y
  57. MV = move /Y
  58. MSDEV = msdev
  59. MKNSI = makensis.exe
  60. # ==================== Flags ====================
  61. #
  62. # Configuration-specific (Debug/Release) options
  63. #
  64. !if "$(ECL_DEBUG)" != ""
  65. CFLAGS_OPTIMIZE = /Od
  66. CFLAGS_CONFIG = /Zi /D_DEBUG /MDd $(CFLAGS_OPTIMIZE)
  67. LDFLAGS_CONFIG = /debug /nodefaultlib:msvcrt.lib
  68. SHARED_LDFLAGS = /LDd
  69. GCFLAGS =
  70. !else
  71. CFLAGS_OPTIMIZE = /O2
  72. CFLAGS_CONFIG = /DNDEBUG /MD $(CFLAGS_OPTIMIZE)
  73. LDFLAGS_CONFIG = /nodefaultlib:msvcrtd.lib
  74. SHARED_LDFLAGS = /LD
  75. GCFLAGS = nodebug=1
  76. !endif
  77. CFLAGS = /EHsc /DGC_DLL /nologo /D_CRT_SECURE_NO_DEPRECATE $(CFLAGS_CONFIG)
  78. LDFLAGS = /link /nologo /verbose:lib /nodefaultlib:libcmt /nodefaultlib:libcmtd /nodefaultlib:libc /nodefaultlib:libcd $(LDFLAGS_CONFIG)
  79. # Additional configuration for thread support
  80. #
  81. !if "$(ECL_THREADS)" == ""
  82. ENV_EXPORT = cl_env,DATA
  83. !else
  84. ENV_EXPORT = ecl_process_env
  85. CFLAGS = $(CFLAGS) /DECL_THREADS
  86. DEF = ecl-threads.def
  87. !endif
  88. # Additional configuration for Unicode support
  89. #
  90. !if "$(ECL_UNICODE)" != ""
  91. CFLAGS = $(CFLAGS) /DECL_UNICODE
  92. !endif
  93. !MESSAGE C++ compiler flags: $(CFLAGS)
  94. !MESSAGE C++ linker flags: $(LDFLAGS)
  95. # ==================== Where To Install Things ====================
  96. # The default location for installation. Everything is placed in
  97. # subdirectories of this directory. The default values for many of
  98. # the variables below are expressed in terms of this one, so you may
  99. # not need to change them. This defaults to /usr/local.
  100. prefix=%CD%\package
  101. exec_prefix=$(prefix)
  102. bindir=$(prefix)
  103. libdir=$(prefix)
  104. includedir=$(prefix)
  105. docdir=$(prefix)\doc
  106. # Programs used by "make install":
  107. #
  108. SHELL = @SHELL@
  109. INSTALL = @INSTALL@
  110. INSTALL_PROGRAM = @INSTALL_PROGRAM@
  111. INSTALL_SCRIPT = @INSTALL_SCRIPT@
  112. INSTALL_DATA = @INSTALL_DATA@
  113. mkinstalldirs = $(SHELL) $(top_srcdir)/gc/mkinstalldirs
  114. # Files
  115. #
  116. SUBDIR = c gc gmp
  117. LIBRARIES =
  118. TARGETS = ecl2$(EXE)
  119. DEF = ecl.def
  120. # Additional modules
  121. #
  122. ECL_MODULES =
  123. ECL_FEATURES = (cons :wants-dlopen *features*)
  124. !ifdef ECL_CMP
  125. ECL_MODULES = $(ECL_MODULES) cmp
  126. ECL_FEATURES = (cons :wants-cmp $(ECL_FEATURES))
  127. !endif
  128. !ifdef ECL_ASDF
  129. ECL_MODULES = $(ECL_MODULES) asdf
  130. ECL_FEATURES = (cons :wants-asdf $(ECL_FEATURES))
  131. !endif
  132. !ifdef ECL_SOCKETS
  133. ECL_MODULES = $(ECL_MODULES) sockets
  134. ECL_FEATURES = (cons :wants-sockets $(ECL_FEATURES))
  135. !endif
  136. !ifdef ECL_CLX
  137. ECL_MODULES = $(ECL_MODULES) clx
  138. ECL_FEATURES = (cons :wants-clx $(ECL_FEATURES))
  139. !endif
  140. !ifdef ECL_RT
  141. ECL_MODULES = $(ECL_MODULES) rt
  142. ECL_FEATURES = (cons :wants-rt $(ECL_FEATURES))
  143. !endif
  144. !ifdef ECL_DEFSYS
  145. ECL_MODULES = $(ECL_MODULES) defsystem
  146. ECL_FEATURES = (cons :wants-defsystem $(ECL_FEATURES))
  147. !endif
  148. !ifdef ECL_PROFILE
  149. ECL_MODULES = $(ECL_MODULES) profile
  150. ECL_FEATURES = (cons :wants-profile $(ECL_FEATURES))
  151. !endif
  152. !MESSAGE ECL Modules: $(ECL_MODULES)
  153. !MESSAGE ECL Features: $(ECL_FEATURES)
  154. # Build rules
  155. #
  156. all: $(TARGETS) ecl-config.bat ecl-cc.bat
  157. .PHONY: all
  158. %Makefile: $(srcdir)/%Makefile.in config.status
  159. ./config.status
  160. c\cut$(EXE): $(top_srcdir)\util\cut.c
  161. cd c
  162. $(MAKE) cut$(EXE)
  163. cd ..
  164. $(TARGETS): ecl_min$(EXE) compile.lsp sysfun.lsp BUILD-STAMP
  165. .\ecl_min < compile.lsp
  166. BUILD-STAMP: Makefile
  167. date /t > $@
  168. ecl-static.lib: $(TARGETS)
  169. link /lib /out:$@ eclmin.lib c\all_symbols2.obj lsp.lib eclgmp.lib eclgc.lib
  170. ecl_min$(EXE): $(LIBRARIES) eclmin.lib
  171. $(CC) /Fe$@ cinit.obj c\all_symbols.obj eclmin.lib $(LDFLAGS) $(LIBS)
  172. .gdbinit: $(srcdir)\util\gdbinit
  173. $(CP) $(srcdir)\util\gdbinit $@
  174. lsp/config.lsp: $(srcdir)/lsp/config.lsp.in Makefile c\cut$(EXE)
  175. if not exist lsp $(MKDIR) lsp
  176. c\cut "@ecldir\@" "$(libdir:\=/)" \
  177. "@SHORT_SITE_NAME@" "$(SHORT_SITE_NAME)" \
  178. "@LONG_SITE_NAME@" "$(LONG_SITE_NAME)" \
  179. "@PACKAGE_VERSION@" "$(ECL_VERSION)" \
  180. "@ARCHITECTURE@" "$(ARCHITECTURE)" \
  181. "@SOFTWARE_TYPE@" "$(SOFTWARE_TYPE)" \
  182. "@SOFTWARE_VERSION@" "$(SOFTWARE_VERSION)" \
  183. "@thehost@" "$(THEHOST)" \
  184. < $(srcdir)\lsp\config.lsp.in > lsp\config.lsp
  185. compile.lsp: bare.lsp $(srcdir)/compile.lsp.in Makefile
  186. c\cut "@ecldir\@" "$(libdir:\=/)" \
  187. "@libdir\@" "$(libdir:\=/)" \
  188. "@true_srcdir@" "$(srcdir:\=/)" \
  189. "@true_builddir@" "$(MAKEDIR:\=/)" \
  190. "@CFLAGS@" "$(CFLAGS) -DGC_BUILD" \
  191. "@ECL_CFLAGS@" "" \
  192. "@CPPFLAGS@" "" \
  193. "@LDRPATH@" "" \
  194. "@LDFLAGS@" "$(LDFLAGS)" \
  195. "@SHARED_LDFLAGS@" "$(SHARED_LDFLAGS)" \
  196. "@BUNDLE_LDFLAGS@" "$(SHARED_LDFLAGS)" \
  197. "@CLIBS@" "user32.lib ws2_32.lib shell32.lib" \
  198. "@STATICLIBS@" "eclgmp.lib eclgc.lib" \
  199. "@LIBS@" "user32.lib ws2_32.lib shell32.lib" \
  200. "@CORE_LIBS@" "" \
  201. "@FASL_LIBS@" "" \
  202. "@OBJEXT@" "obj" \
  203. "@SHAREDPREFIX@" "" \
  204. "@SHAREDEXT@" "lib" \
  205. "@LIBPREFIX@" "" \
  206. "@LIBEXT@" "lib" \
  207. "@EXEEXT@" ".exe" \
  208. "@LDINSTALLNAME@" "" \
  209. "@DEF@" "$(DEF)" \
  210. "@RANLIB@" "ranlib" \
  211. "@LSP_FEATURES@" "$(ECL_FEATURES)" \
  212. < $(srcdir)\compile.lsp.in > compile.lsp
  213. bare.lsp: $(srcdir)/bare.lsp.in lsp/load.lsp clos/load.lsp cmp/load.lsp cmp/cmpdefs.lsp
  214. c\cut "@true_srcdir@" "$(srcdir:\=/)" \
  215. "@true_builddir@" "$(MAKEDIR:\=/)" < $(srcdir)\bare.lsp.in > bare.lsp
  216. lsp/load.lsp: $(srcdir)/lsp/load.lsp.in
  217. $(CP) $(srcdir)\lsp\load.lsp.in lsp\load.lsp
  218. clos/load.lsp: $(srcdir)/clos/load.lsp.in
  219. if not exist clos $(MKDIR) clos
  220. $(CP) $(srcdir)\clos\load.lsp.in clos\load.lsp
  221. cmp/load.lsp: $(srcdir)/cmp/load.lsp.in
  222. if not exist cmp $(MKDIR) cmp
  223. $(CP) $(srcdir)\cmp\load.lsp.in cmp\load.lsp
  224. cmp/cmpdefs.lsp: $(srcdir)/cmp/cmpdefs.lsp Makefile
  225. c\cut "@ECL_CC@" "$(CC)" \
  226. "@CFLAGS@" "$(CFLAGS)" \
  227. "@CFLAGS_OPTIMIZE@" "$(CFLAGS_OPTIMIZE)" \
  228. "@ECL_CFLAGS@" "" \
  229. "@CPPFLAGS@" "" \
  230. "@LDRPATH@" "" \
  231. "@LDFLAGS@" "$(LDFLAGS)" \
  232. "@SHARED_LDFLAGS@" "$(SHARED_LDFLAGS)" \
  233. "@BUNDLE_LDFLAGS@" "$(SHARED_LDFLAGS)" \
  234. "@CLIBS@" "user32.lib ws2_32.lib shell32.lib" \
  235. "@STATICLIBS@" "eclgmp.lib eclgc.lib" \
  236. "@OBJEXT@" "obj" \
  237. "@SHAREDPREFIX@" "" \
  238. "@SHAREDEXT@" "dll" \
  239. "@LIBPREFIX@" "" \
  240. "@LIBEXT@" "lib" \
  241. "@EXEEXT@" ".exe" \
  242. "@ecldir\@" "NIL" \
  243. "@libdir\@" "NIL" \
  244. "@includedir\@" "NIL" \
  245. < $(srcdir)\cmp\cmpdefs.lsp > cmp\cmpdefs.lsp
  246. ecl-config.bat: util\ecl-config.bat Makefile
  247. c\cut "~A" "$(libdir:\=/)"\
  248. "~*" "" \
  249. "@ECL_CFLAGS@" "$(CFLAGS)" \
  250. "@LDFLAGS@" "$(LDFLAGS)" \
  251. "@CLIBS@" "" \
  252. "@libdir@" "$(prefix:\=/)" \
  253. "@includedir@" "$(prefix:\=/)/ecl" \
  254. < util\ecl-config.bat > ecl-config.bat
  255. ecl-cc.bat: util\ecl-cc.bat Makefile
  256. c\cut "@ECL_CFLAGS@" "$(CFLAGS)" \
  257. "@LDFLAGS@" "$(LDFLAGS)" \
  258. "@CLIBS@" "" \
  259. "@libdir@" "$(prefix:\=/)" \
  260. "@includedir@" "$(prefix:\=/)/ecl" \
  261. < util\ecl-cc.bat > ecl-cc.bat
  262. eclmin.lib: eclgmp.lib eclgc.lib lsp/config.lsp
  263. cd c
  264. $(MAKE) ECL_THREADS=$(ECL_THREADS) "ECL_CFLAGS=$(CFLAGS) -DGC_BUILD"
  265. cd ..
  266. eclgc.lib:
  267. cd gc
  268. $(MAKE) $(GCFLAGS) ECL_THREADS=$(ECL_THREADS) "CFLAGS_CONFIG=$(CFLAGS_CONFIG)" gc.lib
  269. $(CP) gc.lib ..\eclgc.lib
  270. cd ..
  271. if not exist ecl\gc $(MKDIR) ecl\gc
  272. if not exist ecl\gc\private $(MKDIR) ecl\gc\private
  273. for %h in (gc.h gc_local_alloc.h gc_pthread_redirects.h \
  274. gc_config_macros.h leak_detector.h gc_typed.h \
  275. private\gc_priv.h private\gcconfig.h gc_mark.h) \
  276. do $(CP) $(srcdir)\gc\include\%h ecl\gc\%h
  277. eclgmp.lib:
  278. cd gmp
  279. $(MAKE) "MPN_TYPE = $(GMP_TYPE)" "CFLAGS_CONFIG=$(CFLAGS_CONFIG)"
  280. $(CP) gmp.lib ..\eclgmp.lib
  281. $(CP) gmp.h ..\ecl\gmp.h
  282. cd ..
  283. sysfun.lsp:
  284. $(CP) $(srcdir)\cmp\sysfun.lsp .\
  285. rt.lisp:
  286. $(CP) $(srcdir)\..\contrib\rt\rt.lisp .\
  287. install:
  288. IF NOT EXIST "$(prefix)" $(MKDIR) "$(prefix)"
  289. IF NOT EXIST "$(bindir)" $(MKDIR) "$(bindir)"
  290. for %i in ($(TARGETS) ecl.dll) do $(CP) %i "$(bindir)\%i"
  291. IF EXIST "$(bindir)\ecl2$(EXE)" $(MV) "$(bindir)\ecl2$(EXE)" "$(bindir)\ecl$(EXE)"
  292. IF EXIST ecl2$(EXE).manifest $(CP) ecl2$(EXE).manifest "$(bindir)\ecl$(EXE).manifest"
  293. IF EXIST ecl.dll.manifest $(CP) ecl.dll.manifest "$(bindir)"
  294. $(CP) ecl-config.bat "$(bindir)\ecl-config.bat"
  295. $(CP) ecl-cc.bat "$(bindir)\ecl-cc.bat"
  296. IF NOT EXIST "$(includedir)\ecl" $(MKDIR) "$(includedir)\ecl"
  297. IF NOT EXIST "$(includedir)\ecl\gc" $(MKDIR) $(includedir)\ecl\gc
  298. IF NOT EXIST "$(includedir)\ecl\gc\private" $(MKDIR) "$(includedir)\ecl\gc\private"
  299. for %i in (ecl\*.h ecl\gc\*.h ecl\gc\private\*.h) do $(CP) %i $(includedir)\%i
  300. cd c
  301. $(MAKE) cut.exe
  302. cd ..
  303. c\cut.exe < ecl\config.h > $(includedir)\ecl\config.h
  304. IF NOT EXIST "$(libdir)" $(MKDIR) "$(libdir)"
  305. IF NOT EXIST "$(libdir)\ecl" $(MKDIR) "$(libdir)\ecl"
  306. for %i in ($(LIBRARIES) c\dpp.exe BUILD-STAMP help.doc ecl.lib) do $(CP) %i "$(libdir)"
  307. for /f %i in ('type MODULES') do $(CP) %i "$(libdir)"
  308. for %i in (ecl-static.lib) do IF EXIST %i $(CP) %i "$(libdir)"
  309. IF NOT EXIST "$(docdir)" $(MKDIR) "$(docdir)"
  310. for %i in (..\Copyright ..\ANNOUNCEMENT ..\LGPL ..\README.1st ..\src\CHANGELOG) do $(CP) %i "$(docdir)"
  311. windows-nsi:
  312. IF EXIST "$(TAR_DIR)" $(RMDIR) "$(TAR_DIR)"
  313. $(MKDIR) "$(TAR_DIR)"
  314. $(MAKE) prefix="$(TAR_DIR)" install
  315. util\ecl_nsi.bat %%CD%%\"$(srcdir)"\util\ecl.nsi "$(TAR_DIR)" $(ECL_VERSION)
  316. "$(MKNSI)" "$(TAR_DIR)/ecl.nsi"
  317. $(MV) $(TAR_DIR)\Setup.exe ecl-$(ECL_VERSION).exe
  318. $(RMDIR) $(TAR_DIR)
  319. clean: clean_ecl clean_lisp
  320. -$(RM) .gdbinit cinit.lib ecl_min.lib
  321. -$(RM) gc\*.pdb
  322. cd gc
  323. -$(MAKE) ECL_THREADS=$(ECL_THREADS) clean
  324. cd ..
  325. -for %h in (gc.h gc_local_alloc.h gc_pthread_redirects.h \
  326. gc_config_macros.h leak_detector.h gc_typed.h \
  327. gc_mark.h private\gc_priv.h private\gcconfig.h) \
  328. do $(RM) ecl\gc\%h
  329. -$(RMDIR) ecl\gc\private
  330. -$(RMDIR) ecl\gc
  331. cd gmp
  332. -$(MAKE) ECL_THREADS=$(ECL_THREADS) clean
  333. cd ..
  334. -$(RM) ecl\gmp.h
  335. clean_ecl:
  336. -for %i in (eclgc.lib eclgmp.lib lsp\config.lsp compile.lsp bare.lsp \
  337. lsp\load.lsp clos\load.lsp cmp\load.lsp cmp\cmpdefs.lsp \
  338. ecl.lib ecl.dll ecl_min$(EXE) eclmin.lib help.doc sysfun.lsp BUILD-STAMP \
  339. $(TARGETS) *.exp *.ilk *.manifest *.pdb *.c *.obj ecl-config.bat ecl-static.lib) \
  340. do $(RM) %i
  341. cd c
  342. -$(MAKE) ECL_THREADS=$(ECL_THREADS) clean
  343. cd ..
  344. clean_lisp:
  345. -for %i in (lsp clos $(ECL_MODULES)) do for %k in (%i.lib %i.fas %i.ilk %i.c %i.obj %i.pdb) do $(RM) %k
  346. -for %i in (lsp clos ext $(ECL_MODULES)) do $(RMDIR) %i
  347. -$(RM) help.doc
  348. -$(RM) MODULES
  349. distclean: clean
  350. realclean: distclean
  351. test1:
  352. cd c; $(MAKE)
  353. $(MAKE) ecl_min
  354. $(MAKE) ecl
  355. cd tests; $(MAKE)
  356. diff tests tests2
  357. test2:
  358. $(MAKE) clean_lisp
  359. cd c; $(MAKE)
  360. $(MAKE) ecl_min
  361. $(RM) ecl
  362. $(MAKE) ecl
  363. for i in lsp clos cmp; do diff --exclude=\*.o $$i old/$$i; done
  364. test3:
  365. -mkdir stage2
  366. cp -rf lsp clos cmp stage2
  367. -for i in lsp cmp clos clx tk; do test -f lib$$i.a && mv lib$$i.a stage2; done
  368. $(MAKE) clean_lisp
  369. ./ecl < compile.lsp
  370. -for i in lsp clos cmp clx tk; do test -d $$i && diff --exclude=\*.o $$i stage2/$$i; done | less
  371. test:
  372. $(MAKE) -C tests
  373. $(MAKE) -C ansi-tests > ansi-tests/log
  374. # -(diff tests ~/src/tests; diff --exclude log ansi-tests ~/src/ansi-tests) | less