Makefile.w32
上传用户:gddssl
上传日期:2007-01-06
资源大小:1003k
文件大小:13k
源码类别:

编辑器/阅读器

开发平台:

DOS

  1. #
  2. # Makefile for Vim on Win32 (Windows NT and Windows 95), using the
  3. # Microsoft Visual C++ 2.x and MSVC 4.x compilers.  It builds on Windows 95
  4. # and all four NT platforms: i386, Alpha, MIPS, and PowerPC.  The NT/i386
  5. # binary and the Windows 95 binary are identical.
  6. #
  7. # This makefile can build the console, gui, OLE-enable, Perl-enabled and
  8. # Python-enabled versions of vim for Win32 platforms.
  9. #
  10. # When compiling different versions, do "nmake clean" first!
  11. #
  12. # The basic command line to build vim is:
  13. # nmake -f Makefile.w32
  14. # This will build the console version of vim with no additional interfaces.
  15. # To add interfaces, define any of the following:
  16. # GUI interface: GUI=yes
  17. # OLE interface: OLE=yes
  18. # IME support: IME=yes (requires GUI=yes)
  19. # Perl interface: PERL=[Path to Perl directory]
  20. # Python interface: PYTHON=[Path to Python directory]
  21. # Debug version: DEBUG=1
  22. #
  23. # You can combine any of these interfaces
  24. #
  25. # Example: To build the non-debug, gui version with Perl interface:
  26. # nmake -f Makefile.w32 GUI=yes PERL=C:Perl
  27. #
  28. # To build using Borland C++, use Makefile.bor.
  29. #
  30. ### See feature.h for a list of optionals.
  31. # If you want to build some optional features without modifying the source,
  32. # you can set DEFINES on the command line, e.g.,
  33. # nmake -f makefile.w32 "DEFINES=-DEMACS_TAGS"
  34. # Build on both Windows NT and Windows 95
  35. TARGETOS = BOTH
  36. # select one of four object code directories, depends on GUI and DEBUG
  37. !ifdef GUI
  38. !ifdef DEBUG
  39. OBJDIR = .ObjGD
  40. !else
  41. OBJDIR = .ObjG
  42. !endif
  43. !else
  44. !ifdef DEBUG
  45. OBJDIR = .ObjCD
  46. !else
  47. OBJDIR = .ObjC
  48. !endif
  49. !endif
  50. # ntwin32.mak requires that CPU be set appropriately
  51. !ifdef PROCESSOR_ARCHITECTURE
  52. # We're on Windows NT
  53. CPU = $(PROCESSOR_ARCHITECTURE)
  54. ! if "$(CPU)" == "x86"
  55. CPU = i386
  56. ! endif
  57. !else  # !PROCESSOR_ARCHITECTURE
  58. # We're on Windows 95
  59. CPU = i386
  60. !endif # !PROCESSOR_ARCHITECTURE
  61. # Build a retail version by default
  62. !ifndef DEBUG
  63. NODEBUG = 1
  64. !endif
  65. # Build a multithreaded version for the Windows 95 dead keys hack
  66. # Commented out because it doesn't work.
  67. # MULTITHREADED = 1
  68. # Get all sorts of useful, standard macros from the SDK.  (Note that
  69. # MSVC 2.2 does not install <ntwin32.mak> in the msvc20include
  70. # directory, but you can find it in msvc20include on the CD-ROM.
  71. # You may also need <win32.mak> from the same place.)
  72. !include <ntwin32.mak>
  73. #>>>>> path of the compiler and linker; name of include and lib directories
  74. # PATH = c:msvc20bin;$(PATH)
  75. # INCLUDE = c:msvc20include
  76. # LIB = c:msvc20lib
  77. !ifndef CTAGS
  78. CTAGS = ctags
  79. !endif
  80. !ifdef MULTITHREADED
  81. CVARS = $(cvarsmt)
  82. CONLIBS = $(conlibsmt)
  83. !else
  84. CVARS = $(cvars)
  85. CONLIBS = $(conlibs)
  86. !endif
  87. CFLAGS = -c /W3 /nologo $(CVARS) -Iproto $(cflags) $(DEFINES)
  88. #>>>>> end of choices
  89. ###########################################################################
  90. !ifdef PROCESSOR_ARCHITECTURE
  91. OS_TYPE = winnt
  92. DEL_TREE = rmdir /s /q
  93. !else
  94. OS_TYPE = win95
  95. DEL_TREE = deltree /y
  96. !endif
  97. INTDIR=$(OBJDIR)
  98. OUTDIR=$(OBJDIR)
  99. !ifdef NODEBUG
  100. VIM = vim
  101. CFLAGS = $(CFLAGS) -DNDEBUG /Ox
  102. RCFLAGS = $(rcflags) $(rcvars) -DNDEBUG
  103. LIBC = libc.lib
  104. !else  # DEBUG
  105. VIM = vimd
  106. # MSVC 4.1
  107. PDB = /Fd$(OUTDIR)/
  108. LINK_PDB = /PDB:$(OUTDIR)/
  109. # MSVC 2.2
  110. # PDB = /Fd$(OUTDIR)/vim.pdb
  111. # LINK_PDB = /PDB:$(OUTDIR)/vim.pdb
  112. CFLAGS = $(CFLAGS) -D_DEBUG -DDEBUG /Zi /Od
  113. RCFLAGS = $(rcflags) $(rcvars) -D_DEBUG -DDEBUG
  114. LIBC = libcd.lib
  115. !endif # DEBUG
  116. INCL = vim.h os_win32.h ascii.h feature.h globals.h keymap.h macros.h 
  117. proto.h option.h structs.h term.h
  118. OBJ = 
  119. $(OUTDIR)buffer.obj 
  120. $(OUTDIR)charset.obj 
  121. $(OUTDIR)digraph.obj 
  122. $(OUTDIR)edit.obj 
  123. $(OUTDIR)eval.obj 
  124. $(OUTDIR)ex_cmds.obj 
  125. $(OUTDIR)ex_docmd.obj 
  126. $(OUTDIR)ex_getln.obj 
  127. $(OUTDIR)fileio.obj 
  128. $(OUTDIR)getchar.obj 
  129. $(OUTDIR)main.obj 
  130. $(OUTDIR)mark.obj 
  131. $(OUTDIR)memfile.obj 
  132. $(OUTDIR)memline.obj 
  133. $(OUTDIR)message.obj 
  134. $(OUTDIR)misc1.obj 
  135. $(OUTDIR)misc2.obj 
  136. $(OUTDIR)multbyte.obj 
  137. $(OUTDIR)normal.obj 
  138. $(OUTDIR)option.obj 
  139. $(OUTDIR)ops.obj 
  140. $(OUTDIR)os_win32.obj 
  141. $(OUTDIR)quickfix.obj 
  142. $(OUTDIR)regexp.obj 
  143. $(OUTDIR)screen.obj 
  144. $(OUTDIR)search.obj 
  145. $(OUTDIR)syntax.obj 
  146. $(OUTDIR)tag.obj 
  147. $(OUTDIR)term.obj 
  148. $(OUTDIR)ui.obj 
  149. $(OUTDIR)undo.obj 
  150. $(OUTDIR)window.obj 
  151. $(OUTDIR)vim.res
  152. !if "$(OLE)" == "yes"
  153. # Force gui version to be built
  154. GUI = yes
  155. CFLAGS = $(CFLAGS) -DHAVE_OLE
  156. RCFLAGS = $(RCFLAGS) -DHAVE_OLE
  157. OLE_OBJ = $(OUTDIR)if_ole.obj
  158. OLE_IDL = if_ole.idl
  159. OLE_LIBS = ole32.lib oleaut32.lib uuid.lib 
  160. !endif
  161. !if "$(IME)" == "yes"
  162. IMELIB = imm32.lib
  163. !endif
  164. !if "$(GUI)" == "yes"
  165. SUBSYSTEM = windows
  166. CFLAGS = $(CFLAGS) -DUSE_GUI_WIN32 -DWIN32
  167. RCFLAGS = $(RCFLAGS) -DUSE_GUI_WIN32
  168. VIM = g$(VIM)
  169. GUI_INCL = 
  170. gui.h 
  171. regexp.h 
  172. ascii.h 
  173. ex_cmds.h 
  174. farsi.h 
  175. feature.h 
  176. globals.h 
  177. gui.h 
  178. keymap.h 
  179. macros.h 
  180. option.h 
  181. os_dos.h 
  182. os_win32.h
  183. GUI_OBJ = 
  184. $(OUTDIR)gui.obj 
  185. $(OUTDIR)gui_w32.obj 
  186. $(OUTDIR)os_w32exe.obj
  187. GUI_LIBS = 
  188. oldnames.lib kernel32.lib gdi32.lib $(IMELIB) 
  189. winspool.lib comdlg32.lib comctl32.lib advapi32.lib shell32.lib 
  190. /machine:I386 /nodefaultlib
  191. !else
  192. SUBSYSTEM = console
  193. !endif
  194. # PYTHON interface
  195. !ifdef PYTHON
  196. !message Python detected - root dir is "$(PYTHON)"
  197. CFLAGS    = $(CFLAGS) -DHAVE_PYTHON
  198. PYTHONOBJ = $(OUTDIR)if_python.obj
  199. PYTHONINC = /I "$(PYTHON)Include" /I "$(PYTHON)PC"
  200. PYTHONLIB = $(PYTHON)vc40python14.lib
  201. !endif
  202. # Perl interface
  203. !ifdef PERL 
  204. !message Perl detected - root dir is "$(PERL)"
  205. !message
  206. CFLAGS = $(CFLAGS) -DHAVE_PERL_INTERP
  207. PERLEXE = $(PERL)Binperl
  208. PERLOBJ = $(OUTDIR)if_perl.obj $(OUTDIR)if_perlsfio.obj
  209. PERLINC = /I $(PERL)LibCore
  210. PERLLIB = $(PERL)LibCoreperl.lib
  211. XSUBPP = $(PERL)libExtUtilsxsubpp
  212. XSUBPP_TYPEMAP = $(PERL)libExtUtilstypemap
  213. !endif
  214. conflags = /nologo /subsystem:$(SUBSYSTEM) /incremental:no
  215. all: $(VIM) install.exe vimrun.exe ctags/ctags.exe xxd/xxd.exe
  216. $(VIM): $(OUTDIR) $(OBJ) $(GUI_OBJ) $(OLE_OBJ) $(OLE_IDL) $(PERLOBJ) $(PYTHONOBJ) $(OUTDIR)version.obj
  217. $(link) $(linkdebug) $(conflags) -out:$*.exe $(OBJ) $(GUI_OBJ) $(OLE_OBJ) $(PERLOBJ) $(PYTHONOBJ) 
  218. $(OUTDIR)version.obj $(CONLIBS) $(GUI_LIBS) $(OLE_LIBS) user32.lib $(PERLLIB) $(PYTHONLIB) $(LINK_PDB)
  219.         del $(OUTDIR)version.obj
  220. $(VIM).exe: $(VIM)
  221. $(OUTDIR):
  222. if not exist $(OUTDIR)/nul    mkdir $(OUTDIR)
  223. install.exe: dosinst.c
  224. $(CC) -DWIN32 dosinst.c kernel32.lib
  225. ren dosinst.exe install.exe
  226. vimrun.exe: vimrun.c
  227. $(CC) vimrun.c
  228. ctags/ctags.exe: ctags/main.c
  229. cd ctags
  230. $(MAKE) -f Makefile.w32
  231. cd ..
  232. xxd/xxd.exe: xxd/xxd.c
  233. cd xxd
  234. $(MAKE) -f Makefile.w32
  235. cd ..
  236. ctags tags: notags
  237. $(CTAGS) *.c *.h proto*.pro
  238. notags:
  239. - del tags
  240. clean:
  241. - $(DEL_TREE) $(OUTDIR)
  242. - del $(VIM).exe
  243. - del $(VIM).ilk
  244. - del $(VIM).pdb
  245. - del $(VIM).map
  246. - del $(VIM).ncb
  247. - del if_perl.c
  248. test:
  249. cd testdir
  250. $(MAKE) -f Makefile.dos
  251. cd ..
  252. ###########################################################################
  253. $(OUTDIR)/buffer.obj: $(OUTDIR) buffer.c  $(INCL)
  254. $(CC) $(CFLAGS) buffer.c /Fo$(OUTDIR)/buffer.obj $(PDB)
  255. $(OUTDIR)/charset.obj: $(OUTDIR) charset.c  $(INCL)
  256. $(CC) $(CFLAGS) charset.c /Fo$(OUTDIR)/charset.obj $(PDB)
  257. $(OUTDIR)/digraph.obj: $(OUTDIR) digraph.c  $(INCL)
  258. $(CC) $(CFLAGS) digraph.c /Fo$(OUTDIR)/digraph.obj $(PDB)
  259. $(OUTDIR)/edit.obj: $(OUTDIR) edit.c  $(INCL)
  260. $(CC) $(CFLAGS) edit.c /Fo$(OUTDIR)/edit.obj $(PDB)
  261. $(OUTDIR)/eval.obj: $(OUTDIR) eval.c  $(INCL)
  262. $(CC) $(CFLAGS) eval.c /Fo$(OUTDIR)/eval.obj $(PDB)
  263. $(OUTDIR)/ex_cmds.obj: $(OUTDIR) ex_cmds.c  $(INCL) ex_cmds.h
  264. $(CC) $(CFLAGS) ex_cmds.c /Fo$(OUTDIR)/ex_cmds.obj $(PDB)
  265. $(OUTDIR)/ex_docmd.obj: $(OUTDIR) ex_docmd.c  $(INCL) ex_cmds.h
  266. $(CC) $(CFLAGS) ex_docmd.c /Fo$(OUTDIR)/ex_docmd.obj $(PDB)
  267. $(OUTDIR)/ex_getln.obj: $(OUTDIR) ex_getln.c  $(INCL)
  268. $(CC) $(CFLAGS) ex_getln.c /Fo$(OUTDIR)/ex_getln.obj $(PDB)
  269. $(OUTDIR)/fileio.obj: $(OUTDIR) fileio.c  $(INCL)
  270. $(CC) $(CFLAGS) fileio.c /Fo$(OUTDIR)/fileio.obj $(PDB)
  271. $(OUTDIR)/getchar.obj: $(OUTDIR) getchar.c  $(INCL)
  272. $(CC) $(CFLAGS) getchar.c /Fo$(OUTDIR)/getchar.obj $(PDB)
  273. $(OUTDIR)/gui.obj: $(OUTDIR) gui.c  $(INCL) $(GUI_INCL)
  274. $(CC) $(CFLAGS) gui.c /Fo$(OUTDIR)/gui.obj $(PDB)
  275. $(OUTDIR)/gui_w32.obj: $(OUTDIR) gui_w32.c  $(INCL) $(GUI_INCL)
  276. $(CC) $(CFLAGS) gui_w32.c /Fo$(OUTDIR)/gui_w32.obj $(PDB)
  277. if_perl.c : if_perl.xs typemap
  278. $(PERLEXE) $(XSUBPP) -prototypes -typemap $(XSUBPP_TYPEMAP) -typemap typemap if_perl.xs > if_perl.c
  279. $(OUTDIR)/if_perl.obj: $(OUTDIR) if_perl.c  $(INCL)
  280. $(CC) $(CFLAGS) $(PERLINC) if_perl.c /Fo$(OUTDIR)/if_perl.obj $(PDB)
  281. $(OUTDIR)/if_perlsfio.obj: $(OUTDIR) if_perlsfio.c  $(INCL)
  282. $(CC) $(CFLAGS) $(PERLINC) if_perlsfio.c /Fo$(OUTDIR)/if_perlsfio.obj $(PDB)
  283. $(OUTDIR)/if_python.obj: $(OUTDIR) if_python.c  $(INCL)
  284. $(CC) $(CFLAGS) $(PYTHONINC) if_python.c /Fo$(OUTDIR)/if_python.obj $(PDB)
  285. $(OUTDIR)/if_ole.obj: $(OUTDIR) if_ole.cpp  $(INCL) if_ole.h
  286. $(CC) $(CFLAGS) if_ole.cpp /Fo$(OUTDIR)/if_ole.obj $(PDB)
  287. $(OUTDIR)/main.obj: $(OUTDIR) main.c  $(INCL)
  288. $(CC) $(CFLAGS) main.c /Fo$(OUTDIR)/main.obj $(PDB)
  289. $(OUTDIR)/mark.obj: $(OUTDIR) mark.c  $(INCL)
  290. $(CC) $(CFLAGS) mark.c /Fo$(OUTDIR)/mark.obj $(PDB)
  291. $(OUTDIR)/memfile.obj: $(OUTDIR) memfile.c  $(INCL)
  292. $(CC) $(CFLAGS) memfile.c /Fo$(OUTDIR)/memfile.obj $(PDB)
  293. $(OUTDIR)/memline.obj: $(OUTDIR) memline.c  $(INCL)
  294. $(CC) $(CFLAGS) memline.c /Fo$(OUTDIR)/memline.obj $(PDB)
  295. $(OUTDIR)/message.obj: $(OUTDIR) message.c  $(INCL)
  296. $(CC) $(CFLAGS) message.c /Fo$(OUTDIR)/message.obj $(PDB)
  297. $(OUTDIR)/misc1.obj: $(OUTDIR) misc1.c  $(INCL)
  298. $(CC) $(CFLAGS) misc1.c /Fo$(OUTDIR)/misc1.obj $(PDB)
  299. $(OUTDIR)/misc2.obj: $(OUTDIR) misc2.c  $(INCL)
  300. $(CC) $(CFLAGS) misc2.c /Fo$(OUTDIR)/misc2.obj $(PDB)
  301. $(OUTDIR)/multbyte.obj: $(OUTDIR) multbyte.c  $(INCL)
  302. $(CC) $(CFLAGS) multbyte.c /Fo$(OUTDIR)/multbyte.obj $(PDB)
  303. $(OUTDIR)/normal.obj: $(OUTDIR) normal.c  $(INCL)
  304. $(CC) $(CFLAGS) normal.c /Fo$(OUTDIR)/normal.obj $(PDB)
  305. $(OUTDIR)/option.obj: $(OUTDIR) option.c  $(INCL)
  306. $(CC) $(CFLAGS) option.c /Fo$(OUTDIR)/option.obj $(PDB)
  307. $(OUTDIR)/ops.obj: $(OUTDIR) ops.c  $(INCL)
  308. $(CC) $(CFLAGS) ops.c /Fo$(OUTDIR)/ops.obj $(PDB)
  309. $(OUTDIR)/os_win32.obj: $(OUTDIR) os_win32.c  $(INCL) os_win32.h
  310. $(CC) $(CFLAGS) os_win32.c /Fo$(OUTDIR)/os_win32.obj $(PDB)
  311. $(OUTDIR)/os_w32exe.obj: $(OUTDIR) os_w32exe.c  $(INCL)
  312. $(CC) $(CFLAGS) os_w32exe.c /Fo$(OUTDIR)/os_w32exe.obj $(PDB)
  313. $(OUTDIR)/quickfix.obj: $(OUTDIR) quickfix.c  $(INCL)
  314. $(CC) $(CFLAGS) quickfix.c /Fo$(OUTDIR)/quickfix.obj $(PDB)
  315. $(OUTDIR)/regexp.obj: $(OUTDIR) regexp.c  $(INCL)
  316. $(CC) $(CFLAGS) regexp.c /Fo$(OUTDIR)/regexp.obj $(PDB)
  317. $(OUTDIR)/screen.obj: $(OUTDIR) screen.c  $(INCL)
  318. $(CC) $(CFLAGS) screen.c /Fo$(OUTDIR)/screen.obj $(PDB)
  319. $(OUTDIR)/search.obj: $(OUTDIR) search.c  $(INCL)
  320. $(CC) $(CFLAGS) search.c /Fo$(OUTDIR)/search.obj $(PDB)
  321. $(OUTDIR)/syntax.obj: $(OUTDIR) syntax.c  $(INCL)
  322. $(CC) $(CFLAGS) syntax.c /Fo$(OUTDIR)/syntax.obj $(PDB)
  323. $(OUTDIR)/tag.obj: $(OUTDIR) tag.c  $(INCL)
  324. $(CC) $(CFLAGS) tag.c /Fo$(OUTDIR)/tag.obj $(PDB)
  325. $(OUTDIR)/term.obj: $(OUTDIR) term.c  $(INCL)
  326. $(CC) $(CFLAGS) term.c /Fo$(OUTDIR)/term.obj $(PDB)
  327. $(OUTDIR)/ui.obj: $(OUTDIR) ui.c  $(INCL)
  328. $(CC) $(CFLAGS) ui.c /Fo$(OUTDIR)/ui.obj $(PDB)
  329. $(OUTDIR)/undo.obj: $(OUTDIR) undo.c  $(INCL)
  330. $(CC) $(CFLAGS) undo.c /Fo$(OUTDIR)/undo.obj $(PDB)
  331. $(OUTDIR)/version.obj: $(OUTDIR) version.c version.h
  332. $(CC) $(CFLAGS) version.c /Fo$(OUTDIR)/version.obj $(PDB)
  333. $(OUTDIR)/window.obj: $(OUTDIR) window.c  $(INCL)
  334. $(CC) $(CFLAGS) window.c /Fo$(OUTDIR)/window.obj $(PDB)
  335. $(OUTDIR)/vim.res: $(OUTDIR) vim.rc version.h tools.bmp tearoff.bmp vim.ico vim_error.ico vim_alert.ico vim_info.ico vim_quest.ico
  336. $(RC) /l 0x409 /Fo$(OUTDIR)/vim.res $(RCFLAGS) vim.rc
  337. iid_ole.c if_ole.h vim.tlb: if_ole.idl $(INTDIR) $(OUTDIR)
  338. midl /proxy nul /iid iid_ole.c /tlb vim.tlb /header if_ole.h if_ole.idl
  339. # End Custom Build
  340. proto.h: 
  341. proto/buffer.pro 
  342. proto/charset.pro 
  343. proto/digraph.pro 
  344. proto/edit.pro 
  345. proto/eval.pro 
  346. proto/ex_cmds.pro 
  347. proto/ex_docmd.pro 
  348. proto/ex_getln.pro 
  349. proto/fileio.pro 
  350. proto/getchar.pro 
  351. proto/main.pro 
  352. proto/mark.pro 
  353. proto/memfile.pro 
  354. proto/memline.pro 
  355. proto/message.pro 
  356. proto/misc1.pro 
  357. proto/misc2.pro 
  358. proto/multbyte.pro 
  359. proto/normal.pro 
  360. proto/ops.pro 
  361. proto/option.pro 
  362. proto/os_win32.pro 
  363. proto/quickfix.pro 
  364. proto/regexp.pro 
  365. proto/screen.pro 
  366. proto/search.pro 
  367. proto/syntax.pro 
  368. proto/tag.pro 
  369. proto/term.pro 
  370. proto/ui.pro 
  371. proto/undo.pro 
  372. proto/window.pro