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

编辑器/阅读器

开发平台:

DOS

  1. #
  2. # Makefile for Vim.
  3. # Compiler: Borland C++ 5.0 and later 32-bit compiler
  4. #  Targets: Dos16 or Win32 (Windows NT and Windows 95) (with/without GUI)
  5. #
  6. # Contributed by Ben Singer.
  7. # Updated 4/1997 by Ron Aaron
  8. # 6/1997 - added support for 16 bit DOS
  9. # Note: this has been tested, and works, for BC5.  Your mileage may vary.
  10. # Has been reported NOT to work with BC 4.52.  Maybe it can be fixed?
  11. # 10/1997 - ron - fixed bugs w/ BC 5.02
  12. # 8/1998 - ron - updated with new targets, fixed some stuff
  13. #
  14. # It builds on Windows 95 and NT-Intel, producing the same binary in either
  15. # case.  To build using Microsoft Visual C++, use Makefile.w32.
  16. #
  17. # let the make utility do the hard work:
  18. .AUTODEPEND
  19. .CACHEAUTODEPEND
  20. #
  21. # VARIABLES LIST:
  22. #
  23. #   BOR     - path to root of Borland C install, typ: BC5
  24. #   DEBUG   - define if you wish a DEBUGging build
  25. #   CODEGUARD - define (for BORLAND only) if you want to use CODEGUARD
  26. #   GUI     - define if you want the GUI version
  27. #   CPU     - one of 1 through 6 - select CPU to compile for
  28. #   USEDLL  - use the Runtime library DLL
  29. #   VIMDLL  - create vim32.dll, and stub (g)vim.exe
  30. #   ALIGN   - Alignment to use (1,2,4)
  31. #   FASTCALL - Use register-based function protocol
  32. #   OS     - DOS16 or WIN32
  33. #
  34. # Change this to point to the root of *your* BC installation:
  35. BOR = c:bc5
  36. #
  37. # PERL STUFF
  38. # 'USEDLL' doesn't seem to work with perl, don't know why.
  39. # if the following line is uncommented, you will have perl support in vim:
  40. # PERL=perl.exe
  41. PERLLIB=c:perllib
  42. #
  43. # OS Target - can be DOS16 or WIN32
  44. OS = WIN32
  45. #
  46. # Uncomment to make an executable for debugging:
  47. #DEBUG = -v
  48. #
  49. # Comment out to make a console-mode only version:
  50. GUI = 1
  51. #
  52. # Uncomment to make an OLE-capable version:
  53. #OLE = 1
  54. #
  55. # Uncomment to use the CODEGUARD stuff (BC 5.0 or later):
  56. #CODEGUARD = -vG
  57. #
  58. # Uncomment to use FASTCALL calling convention (RECOMMENDED!)
  59. FASTCALL = 1
  60. #
  61. # Optimize for space or speed? (SPEED RECOMMENDED)
  62. OPTIMIZE = SPEED
  63. #
  64. # Change as appropriate for your target processor (3 to 6):
  65. CPU = 3
  66. #
  67. # Comment out to use precompiled headers (faster, but uses lots of disk!)
  68. HEADERS = -H -H=vim.csm -Hc
  69. #
  70. # Comment out to use statically linked version of run-time:
  71. USEDLL = 1
  72. #
  73. # Uncomment to make a DLL version of VIM (NOT RECOMMENDED):
  74. #VIMDLL = 1
  75. #
  76. # Change to alignment you desire: (1,2 or 4: s/b 4 for Win32, 2 for DOS)
  77. !if ($(OS)==DOS16)
  78. ALIGN = 2
  79. !else
  80. ALIGN = 4
  81. !endif
  82. #
  83. # Sanity checks for the above options:
  84. #
  85. !if ($(OS)==DOS16)
  86. !if (($(CPU)+0)>4)
  87. !error CPU Must be less than or equal to 4 for DOS16
  88. !endif
  89. #
  90. !if (($(ALIGN)+0)>2)
  91. !error ALIGN Must be less than or equal to 2 for DOS16
  92. !endif
  93. #
  94. !else # not DOS16
  95. !if (($(CPU)+0)<3)
  96. !error CPU Must be greater or equal to 3 for WIN32
  97. !endif
  98. !endif
  99. #
  100. !if ($(OS)!=WIN32) && ($(OS)!=DOS16)
  101. !error Check the OS variable again: $(OS) is not supported!
  102. !endif
  103. #
  104. # Optimizations: change as desired (RECOMMENDATION: Don't change!):
  105. #
  106. !ifdef DEBUG
  107. OPT = -Od -N
  108. !else
  109. !if ($(OPTIMIZE)==SPACE)
  110. OPT = -O1 -f- -N- -d
  111. !else
  112. OPT = -O2 -f- -d -N- -Oca -O
  113. !endif
  114. !ifdef FASTCALL
  115. OPT = $(OPT) -pr
  116. !endif
  117. !ifndef CODEGUARD
  118. OPT = $(OPT) -vi-
  119. !endif
  120. !endif
  121. !if ($(OS)==DOS16)
  122. !undef GUI
  123. !undef VIMDLL
  124. !undef USEDLL
  125. !endif
  126. # shouldn't have to change:
  127. LIB = $(BOR)lib
  128. INCLUDE = $(BOR)include;$(PERLLIB)core;.;proto 
  129. DEFINES = -DWIN32 -DPC
  130. #
  131. !ifdef PERL
  132. DEFINES = $(DEFINES) -DHAVE_PERL_INTERP
  133. INCLUDE = $(PERLIB)core;$(INCLUDE)
  134. !endif
  135. #
  136. # DO NOT change below:
  137. #
  138. CPU = -$(CPU)
  139. ALIGN = -a$(ALIGN)
  140. #
  141. !ifdef DEBUG
  142. DEFINES=$(DEFINES) -DDEBUG
  143. !endif
  144. #
  145. !if ($(OLE)==1)
  146. DEFINES = $(DEFINES) -DHAVE_OLE
  147. !endif
  148. #
  149. !if ($(GUI)==1)
  150. DEFINES = $(DEFINES) -DUSE_GUI_WIN32 -DUSE_CLIPBOARD
  151. !ifdef DEBUG
  152. TARGET = gvimd.exe
  153. !else
  154. TARGET = gvim.exe
  155. !endif
  156. !ifdef VIMDLL
  157. EXETYPE=-WD
  158. DEFINES = $(DEFINES) -DVIMDLL
  159. !else
  160. EXETYPE=-WE
  161. !endif
  162. STARTUPOBJ = c0w32.obj
  163. LINK2 = -aa
  164. RESFILE = vim.res
  165. !else
  166. !ifdef DEBUG
  167. TARGET = vimd.exe
  168. !else
  169. # for now, anyway: VIMDLL is only for the GUI version
  170. !undef VIMDLL
  171. TARGET = vim.exe
  172. !endif
  173. !if ($(OS)==DOS16)
  174. DEFINES=-DMSDOS
  175. EXETYPE=-ml
  176. STARTUPOBJ = c0l.obj
  177. LINK2 =
  178. !else
  179. EXETYPE=-WC
  180. STARTUPOBJ = c0x32.obj
  181. LINK2 = -ap -OS -o -P
  182. !endif
  183. RESFILE =
  184. !endif
  185. !ifdef USEDLL
  186. DEFINES = $(DEFINES) -D_RTLDLL
  187. !endif
  188. !ifdef DEBUG
  189. OBJDIR = $(OS)objdbg
  190. !else
  191. !if ($(GUI)==1)
  192. OBJDIR = $(OS)gobj
  193. !else
  194. OBJDIR = $(OS)obj
  195. !endif
  196. !endif
  197. ##### BASE COMPILER/TOOLS RULES #####
  198. !if ($(OS)==DOS16)
  199. BRC =
  200. LINK = $(BOR)BINTLink
  201. CC   = $(BOR)BINBcc
  202. LFLAGS = -Tde -c -m -L$(LIB) $(DEBUG) $(LINK2)
  203. LFLAGSDLL  =
  204. CFLAGS = -w- -w-aus -w-par -I$(INCLUDE) -H- -P- $(HEADERS)
  205. !else
  206. BRC = brc32
  207. LINK = $(BOR)BINTLink32
  208. CC   = $(BOR)BINBcc32
  209. LFLAGS = -OS -r -Tpe -c -m -L$(LIB) $(DEBUG) $(LINK2)
  210. LFLAGSDLL  = -Tpd -c -m -L$(LIB) $(DEBUG) $(LINK2)
  211. CFLAGS = -w- -w-aus -w-par -I$(INCLUDE) -P- -d -x- -RT- -k- -Oi $(HEADERS) -N- -f-
  212. !endif
  213. CC1 = -c
  214. CC2 = -o
  215. CC = $(CC) +$(OBJDIR)bcc.cfg
  216. # implicit rules:
  217. .c.obj:
  218. $(CC) $(CC1) $(CC2)$@ $*.c
  219. .cpp.obj:
  220. $(CC) $(CC1) $(CC2)$@ $*.cpp
  221. !if ($(OS)==DOS16)
  222. !else # win32:
  223. vimmain = 
  224. $(OBJDIR)os_w32exe.obj
  225. !ifdef VIMDLL
  226. vimwinmain = 
  227. $(OBJDIR)os_w32dll.obj
  228. !else
  229. vimwinmain = 
  230. $(OBJDIR)os_w32exe.obj
  231. !endif
  232. !endif
  233. vimobj = $(vimwinmain) 
  234. $(OBJDIR)buffer.obj 
  235. $(OBJDIR)charset.obj 
  236. $(OBJDIR)digraph.obj 
  237. $(OBJDIR)edit.obj 
  238. $(OBJDIR)eval.obj 
  239. $(OBJDIR)ex_cmds.obj 
  240. $(OBJDIR)ex_docmd.obj 
  241. $(OBJDIR)ex_getln.obj 
  242. $(OBJDIR)fileio.obj 
  243. $(OBJDIR)getchar.obj 
  244. $(OBJDIR)main.obj 
  245. $(OBJDIR)mark.obj 
  246. $(OBJDIR)memfile.obj 
  247. $(OBJDIR)memline.obj 
  248. $(OBJDIR)message.obj 
  249. $(OBJDIR)misc1.obj 
  250. $(OBJDIR)misc2.obj 
  251. $(OBJDIR)multbyte.obj 
  252. $(OBJDIR)normal.obj 
  253. $(OBJDIR)ops.obj 
  254. $(OBJDIR)option.obj 
  255. $(OBJDIR)quickfix.obj 
  256. $(OBJDIR)regexp.obj 
  257. $(OBJDIR)screen.obj 
  258. $(OBJDIR)search.obj 
  259. $(OBJDIR)syntax.obj 
  260. $(OBJDIR)tag.obj 
  261. $(OBJDIR)term.obj 
  262. $(OBJDIR)ui.obj 
  263. $(OBJDIR)undo.obj 
  264. $(OBJDIR)version.obj 
  265. $(OBJDIR)window.obj
  266. !if ($(OLE)==1)
  267. vimobj = $(vimobj) 
  268. $(OBJDIR)if_ole.obj
  269. !endif
  270. !ifdef PERL
  271. vimobj = $(vimobj) 
  272.     $(OBJDIR)if_perl.obj
  273. !endif
  274. !ifdef VIMDLL
  275. vimdllobj = $(vimobj)
  276. !ifdef DEBUG
  277. DLLTARGET = vim32d.dll
  278. !else
  279. DLLTARGET = vim32.dll
  280. !endif
  281. !else
  282. DLLTARGET = joebob
  283. !endif
  284. !if ($(GUI)==1)
  285. vimobj = $(vimobj) 
  286. $(OBJDIR)gui.obj 
  287. $(OBJDIR)gui_w32.obj
  288. !endif
  289. !if ($(OS)==WIN32)
  290. vimobj = $(vimobj) 
  291. $(OBJDIR)os_win32.obj
  292. !elif ($(OS)==DOS16)
  293. vimobj = $(vimobj) 
  294. $(OBJDIR)os_msdos.obj
  295. !endif
  296. # Blab what we are going to do:
  297. MSG = Compiling $(OS) $(TARGET) $(OLETARGET), with:
  298. !ifdef GUI
  299. MSG = $(MSG) GUI
  300. !endif
  301. !ifdef USEDLL
  302. MSG = $(MSG) USEDLL
  303. !endif
  304. !ifdef VIMDLL
  305. MSG = $(MSG) VIMDLL
  306. !endif
  307. !ifdef DEBUG
  308. MSG = $(MSG) DEBUG
  309. !endif
  310. !ifdef CODEGUARD
  311. MSG = $(MSG) CODEGUARD
  312. !endif
  313. MSG = $(MSG) cpu=$(CPU)
  314. MSG = $(MSG) Align=$(ALIGN)
  315. !message $(MSG)
  316. !if ($(OS)==DOS16)
  317. TARGETS = $(TARGET)
  318. !else
  319. !ifdef VIMDLL
  320. TARGETS = $(DLLTARGET)
  321. !endif
  322. TARGETS = $(TARGETS) $(TARGET)
  323. !endif
  324. # Targets:
  325. vim: dirs $(OBJDIR)bcc.cfg $(TARGETS)
  326. @del $(OBJDIR)version.obj
  327. dirs: 
  328.     -@md $(OS)
  329.     -@md $(OBJDIR)
  330. all: vim vimrun.exe install.exe xxd ctags
  331. ###########################################################################
  332. ###### Note well: Before you attempt to make 'xxd' or 'ctags', you will
  333. ###### have to edit their respective makefile.w32 files to work with 
  334. ###### Borland C.  It isn't hard, but I can't do it for you!
  335. ###########################################################################
  336. xxd:
  337. @cd xxd
  338. $(MAKE) -f makefile.w32
  339. @cd ..
  340. ctags:
  341. @cd ctags
  342. $(MAKE) -f makefile.w32
  343. @cd ..
  344. install.exe: dosinst.c
  345. $(BOR)BINbcc32 -WC -einstall dosinst.c
  346. clean:
  347. -@del /y $(OBJDIR)*.*
  348. -@del /y *.res
  349. -@del /y *.dll
  350. -@del /y *vim*.exe
  351. -@del /y *.csm
  352. -@del /y *.map
  353. $(DLLTARGET): $(OBJDIR) $(vimdllobj)
  354.   $(LINK) @&&|
  355. $(LFLAGSDLL) +
  356. c0d32.obj +
  357. $(vimdllobj)
  358. $<,$*
  359. !ifdef CODEGUARD
  360. cg32.lib+
  361. !endif
  362. !if ($(OLE)==1)
  363. ole2w32.lib +
  364. !endif
  365. !if ($(OS)==WIN32)
  366. import32.lib+
  367. !ifdef PERL
  368. $(PERLLIB)coreperl.lib+
  369. !endif
  370. !if ($(USEDLL)==1)
  371. cw32i.lib
  372. !else
  373. cw32.lib
  374. !endif
  375. vim.def
  376. !else
  377. cl.lib
  378. !endif
  379. |
  380. !ifdef VIMDLL
  381. $(TARGET): $(OBJDIR) $(DLLTARGET) $(vimmain) $(RESFILE)
  382. !else
  383. $(TARGET): $(OBJDIR) $(vimobj) $(RESFILE)
  384. !endif
  385.   $(LINK) @&&|
  386. $(LFLAGS) +
  387. $(STARTUPOBJ) +
  388. !ifdef VIMDLL
  389. $(vimmain)
  390. !else
  391. $(vimobj)
  392. !endif
  393. $<,$*
  394. !if ($(OS)==WIN32)
  395. !ifdef CODEGUARD
  396. cg32.lib+
  397. !endif
  398. !if ($(OLE)==1)
  399. ole2w32.lib +
  400. !endif
  401. import32.lib+
  402. !ifdef PERL
  403. $(PERLLIB)coreperl.lib+
  404. !endif
  405. !if ($(USEDLL)==1)
  406. cw32i.lib
  407. !else
  408. cw32.lib
  409. !endif
  410. !if ($(GUI)==1)
  411. $(RESFILE)
  412. !endif
  413. !else
  414. emu.lib + cl.lib
  415. !endif
  416. |
  417. $(OBJDIR)buffer.obj:  buffer.c
  418. $(OBJDIR)charset.obj: charset.c
  419. $(OBJDIR)digraph.obj: digraph.c
  420. $(OBJDIR)edit.obj:  edit.c
  421. $(OBJDIR)eval.obj:  eval.c
  422. $(OBJDIR)ex_cmds.obj: ex_cmds.c ex_cmds.h
  423. $(OBJDIR)ex_docmd.obj:  ex_docmd.c ex_cmds.h
  424. $(OBJDIR)ex_getln.obj:  ex_getln.c
  425. $(OBJDIR)fileio.obj:  fileio.c
  426. $(OBJDIR)getchar.obj: getchar.c
  427. $(OBJDIR)main.obj:  main.c
  428. $(OBJDIR)mark.obj:  mark.c
  429. $(OBJDIR)memfile.obj: memfile.c
  430. $(OBJDIR)memline.obj: memline.c
  431. $(OBJDIR)message.obj: message.c
  432. $(OBJDIR)misc1.obj:  misc1.c
  433. $(OBJDIR)misc2.obj:  misc2.c
  434. $(OBJDIR)multbyte.obj:  multbyte.c
  435. $(OBJDIR)normal.obj:  normal.c
  436. $(OBJDIR)ops.obj:  ops.c
  437. $(OBJDIR)option.obj:  option.c
  438. $(OBJDIR)quickfix.obj:  quickfix.c
  439. $(OBJDIR)regexp.obj:  regexp.c
  440. $(OBJDIR)screen.obj:  screen.c
  441. $(OBJDIR)search.obj:  search.c
  442. $(OBJDIR)syntax.obj:  syntax.c
  443. $(OBJDIR)tag.obj:  tag.c
  444. $(OBJDIR)term.obj:  term.c
  445. $(OBJDIR)ui.obj:  ui.c
  446. $(OBJDIR)undo.obj:  undo.c
  447. $(OBJDIR)version.obj: version.c
  448. $(OBJDIR)os_win32.obj:  os_win32.c
  449. $(OBJDIR)os_msdos.obj:  os_msdos.c
  450. $(OBJDIR)window.obj:  window.c
  451. $(OBJDIR)gui.obj: gui.c
  452. $(OBJDIR)gui_w32.obj: gui_w32.c
  453. $(OBJDIR)os_w32dll.obj: os_w32dll.c
  454. $(OBJDIR)if_ole.obj: if_ole.cpp
  455. copy if_ole.obj $(OBJDIR)
  456. $(OBJDIR)os_w32exe.obj: os_w32exe.c
  457. $(CC) $(CC1) -WE $(CC2)$@ os_w32exe.c
  458. $(OBJDIR):
  459. -@if not exist $(OBJDIR)nul mkdir $(OS)
  460. -@if not exist $(OBJDIR)nul mkdir $(OBJDIR)
  461. $(OBJDIR)if_perl.obj: if_perl.c
  462. $(CC) $(CC1) $(CC2)$@ -pc if_perl.c
  463. if_perl.c: if_perl.xs typemap
  464. $(PERL) $(PERLLIB)ExtUtilsxsubpp -prototypes -typemap 
  465.     $(PERLLIB)ExtUtilstypemap if_perl.xs > $@
  466. vim.res: vim.rc version.h tools.bmp tearoff.bmp vim.ico vim_error.ico vim_alert.ico vim_info.ico vim_quest.ico
  467.     $(BRC) $(DEFINES) -i $(BOR)include -32 -r $*.rc
  468.     
  469. # vimrun.exe:
  470. vimrun.exe: vimrun.c 
  471. !if $d(USEDLL)
  472. $(BOR)BINBCC32 -WC -O1 -I$(INCLUDE) -D_RTLDLL vimrun.c cw32mti.lib
  473. !else
  474. $(BOR)BINBCC32 -WC -O1 -I$(INCLUDE) vimrun.c 
  475. !endif
  476. $(OBJDIR)bcc.cfg: Makefile.bor
  477.   copy &&|
  478. $(CFLAGS)
  479. $(DEFINES)
  480. $(EXETYPE)
  481. $(DEBUG)
  482. $(OPT)
  483. $(CODEGUARD)
  484. $(CPU)
  485. $(ALIGN)
  486. | $@
  487. # vi:set sts=4 sw=4: