Merge branch 'vim' into feat/lua
[vim_extended.git] / src / Make_mvc.mak
blob3cfadd251957b179d1d9985be2b87faf4273b0b3
1 # Makefile for Vim on Win32 (Windows NT/2000/XP/2003 and Windows 95/98/Me)
2 # and Win64, using the Microsoft Visual C++ compilers. Known to work with
3 # VC5, VC6 (VS98), VC7.0 (VS2002), VC7.1 (VS2003), VC8 (VS2005),
4 # VC9 (VS2008), and VC10 (VS2010).
6 # To build using other Windows compilers, see INSTALLpc.txt
8 # This makefile can build the console, GUI, OLE-enable, Perl-enabled and
9 # Python-enabled versions of Vim for Win32 platforms.
11 # The basic command line to build Vim is:
13 # nmake -f Make_mvc.mak
15 # This will build the console version of Vim with no additional interfaces.
16 # To add features, define any of the following:
18 # !!!! After changing features do "nmake clean" first !!!!
20 # Feature Set: FEATURES=[TINY, SMALL, NORMAL, BIG, HUGE] (default is BIG)
22 # GUI interface: GUI=yes (default is no)
24 # OLE interface: OLE=yes (usually with GUI=yes)
26 # Multibyte support: MBYTE=yes (default is no)
28 # IME support: IME=yes (requires GUI=yes)
29 # DYNAMIC_IME=[yes or no] (to load the imm32.dll dynamically, default
30 # is yes)
31 # Global IME support: GIME=yes (requires GUI=yes)
33 # Lua interface:
34 # LUA=[Path to Lua directory]
35 # DYNAMIC_LUA=yes (to load the Lua DLL dynamically)
36 # LUA_VER=[Lua version] (default is 51)
38 # MzScheme interface:
39 # MZSCHEME=[Path to MzScheme directory]
40 # DYNAMIC_MZSCHEME=yes (to load the MzScheme DLLs dynamically)
41 # MZSCHEME_VER=[version, 205_000, ...]
42 # MZSCHEME_DEBUG=no
44 # Perl interface:
45 # PERL=[Path to Perl directory]
46 # DYNAMIC_PERL=yes (to load the Perl DLL dynamically)
47 # PERL_VER=[Perl version, in the form 55 (5.005), 56 (5.6.x), etc]
48 # (default is 56)
50 # Python interface:
51 # PYTHON=[Path to Python directory]
52 # DYNAMIC_PYTHON=yes (to load the Python DLL dynamically)
53 # PYTHON_VER=[Python version, eg 15, 20] (default is 22)
55 # Ruby interface:
56 # RUBY=[Path to Ruby directory]
57 # DYNAMIC_RUBY=yes (to load the Ruby DLL dynamically)
58 # RUBY_VER=[Ruby version, eg 16, 17] (default is 18)
59 # RUBY_VER_LONG=[Ruby version, eg 1.6, 1.7] (default is 1.8)
60 # You must set RUBY_VER_LONG when change RUBY_VER.
62 # Tcl interface:
63 # TCL=[Path to Tcl directory]
64 # DYNAMIC_TCL=yes (to load the Tcl DLL dynamically)
65 # TCL_VER=[Tcl version, e.g. 80, 83] (default is 83)
66 # TCL_VER_LONG=[Tcl version, eg 8.3] (default is 8.3)
67 # You must set TCL_VER_LONG when you set TCL_VER.
69 # SNiFF+ interface: SNIFF=yes
71 # Cscope support: CSCOPE=yes
73 # Iconv library support (always dynamically loaded):
74 # ICONV=[yes or no] (default is yes)
76 # Intl library support (always dynamically loaded):
77 # GETTEXT=[yes or no] (default is yes)
78 # See http://sourceforge.net/projects/gettext/
80 # PostScript printing: POSTSCRIPT=yes (default is no)
82 # Netbeans Support: NETBEANS=[yes or no] (default is yes if GUI is yes)
84 # XPM Image Support: XPM=[path to XPM directory]
86 # Optimization: OPTIMIZE=[SPACE, SPEED, MAXSPEED] (default is MAXSPEED)
88 # Processor Version: CPUNR=[i386, i486, i586, i686, pentium4] (default is
89 # i386)
91 # Version Support: WINVER=[0x0400, 0x0500] (default is 0x0400)
93 # Debug version: DEBUG=yes
94 # Mapfile: MAP=[no, yes or lines] (default is yes)
95 # no: Don't write a mapfile.
96 # yes: Write a normal mapfile.
97 # lines: Write a mapfile with line numbers (only for VC6 and later)
99 # Netbeans Debugging Support: NBDEBUG=[yes or no] (should be no, yes
100 # doesn't work)
102 # Visual C Version: MSVCVER=m.n (default derived from nmake if undefined)
104 # You can combine any of these interfaces
106 # Example: To build the non-debug, GUI version with Perl interface:
107 # nmake -f Make_mvc.mak GUI=yes PERL=C:\Perl
109 # DEBUG with Make_mvc.mak and Make_dvc.mak:
110 # This makefile gives a fineness of control which is not supported in
111 # Visual C++ configuration files. Therefore, debugging requires a bit of
112 # extra work.
113 # Make_dvc.mak is a Visual C++ project to access that support. It may be
114 # badly out of date for the Visual C++ you are using...
115 # To use Make_dvc.mak:
116 # 1) Build Vim with Make_mvc.mak.
117 # Use a "DEBUG=yes" argument to build Vim with debug support.
118 # E.g. the following builds gvimd.exe:
119 # nmake -f Make_mvc.mak debug=yes gui=yes
120 # 2) Use MS Devstudio and set it up to allow that file to be debugged:
121 # i) Pass Make_dvc.mak to the IDE.
122 # Use the "open workspace" menu entry to load Make_dvc.mak.
123 # Alternatively, from the command line:
124 # msdev /nologo Make_dvc.mak
125 # Note: Make_dvc.mak is in VC4.0 format. Later VC versions see
126 # this and offer to convert it to their own format. Accept that.
127 # It creates a file called Make_dvc.dsw which can then be used
128 # for further operations. E.g.
129 # msdev /nologo Make_dvc.dsw
130 # ii) Set the built executable for debugging:
131 # a) Alt+F7/Debug takes you to the Debug dialog.
132 # b) Fill "Executable for debug session". e.g. gvimd.exe
133 # c) Fill "Program arguments". e.g. -R dosinst.c
134 # d) Complete the dialog
135 # 3) You can now debug the executable you built with Make_mvc.mak
137 # Note: Make_dvc.mak builds vimrun.exe, because it must build something
138 # to be a valid makefile..
140 ### See feature.h for a list of optionals.
141 # If you want to build some optional features without modifying the source,
142 # you can set DEFINES on the command line, e.g.,
143 # nmake -f Make_mvc.mvc "DEFINES=-DEMACS_TAGS"
145 # Build on both Windows NT/XP and Windows 9x
147 TARGETOS = BOTH
149 # Select one of eight object code directories, depends on GUI, OLE, DEBUG and
150 # interfaces.
151 # If you change something else, do "make clean" first!
152 !if "$(GUI)" == "yes"
153 OBJDIR = .\ObjG
154 !else
155 OBJDIR = .\ObjC
156 !endif
157 !if "$(OLE)" == "yes"
158 OBJDIR = $(OBJDIR)O
159 !endif
160 !ifdef LUA
161 OBJDIR = $(OBJDIR)U
162 !endif
163 !ifdef PERL
164 OBJDIR = $(OBJDIR)L
165 !endif
166 !ifdef PYTHON
167 OBJDIR = $(OBJDIR)Y
168 !endif
169 !ifdef TCL
170 OBJDIR = $(OBJDIR)T
171 !endif
172 !ifdef RUBY
173 OBJDIR = $(OBJDIR)R
174 !endif
175 !ifdef MZSCHEME
176 OBJDIR = $(OBJDIR)Z
177 !endif
178 !if "$(DEBUG)" == "yes"
179 OBJDIR = $(OBJDIR)d
180 !endif
182 # Win32.mak requires that CPU be set appropriately.
183 # To cross-compile for Win64, set CPU=AMD64 or CPU=IA64.
185 !ifdef PROCESSOR_ARCHITECTURE
186 # We're on Windows NT or using VC 6+
187 ! ifdef CPU
188 ASSEMBLY_ARCHITECTURE=$(CPU)
189 # Using I386 for $ASSEMBLY_ARCHITECTURE doesn't work for VC7.
190 ! if ("$(ASSEMBLY_ARCHITECTURE)" == "i386") || ("$(ASSEMBLY_ARCHITECTURE)" == "I386")
191 ASSEMBLY_ARCHITECTURE = x86
192 ! endif
193 ! else
194 CPU = $(PROCESSOR_ARCHITECTURE)
195 ASSEMBLY_ARCHITECTURE = $(PROCESSOR_ARCHITECTURE)
196 ! if ("$(CPU)" == "x86") || ("$(CPU)" == "X86")
197 CPU = i386
198 ! endif
199 ! endif
200 !else # !PROCESSOR_ARCHITECTURE
201 # We're on Windows 95
202 CPU = i386
203 !endif # !PROCESSOR_ARCHITECTURE
205 # Build a retail version by default
207 !if "$(DEBUG)" != "yes"
208 NODEBUG = 1
209 !else
210 !undef NODEBUG
211 MAKEFLAGS_GVIMEXT = DEBUG=yes
212 !endif
215 # Get all sorts of useful, standard macros from the Platform SDK.
217 !include <Win32.mak>
219 # Turn on Win64 compatibility warnings for VC7.x and VC8.
220 # (/Wp64 is deprecated in VC9 and generates an obnoxious warning.)
221 !if ("$(MSVCVER)" == "7.0") || ("$(MSVCVER)" == "7.1") || ("$(MSVCVER)" == "8.0")
222 DEFINES=$(DEFINES) /Wp64
223 !endif
225 #>>>>> path of the compiler and linker; name of include and lib directories
226 # PATH = c:\msvc20\bin;$(PATH)
227 # INCLUDE = c:\msvc20\include
228 # LIB = c:\msvc20\lib
230 !ifndef CTAGS
231 CTAGS = ctags
232 !endif
234 !if "$(SNIFF)" == "yes"
235 # SNIFF - Include support for SNiFF+.
236 SNIFF_INCL = if_sniff.h
237 SNIFF_OBJ = $(OBJDIR)/if_sniff.obj
238 SNIFF_LIB = shell32.lib
239 SNIFF_DEFS = -DFEAT_SNIFF
240 # The SNiFF integration needs multithreaded libraries!
241 MULTITHREADED = yes
242 !endif
244 !ifndef CSCOPE
245 CSCOPE = yes
246 !endif
248 !if "$(CSCOPE)" == "yes"
249 # CSCOPE - Include support for Cscope
250 CSCOPE_INCL = if_cscope.h
251 CSCOPE_OBJ = $(OBJDIR)/if_cscope.obj
252 CSCOPE_DEFS = -DFEAT_CSCOPE
253 !endif
255 !ifndef NETBEANS
256 NETBEANS = $(GUI)
257 !endif
259 # Only allow NETBEANS and XPM for a GUI build.
260 !if "$(GUI)" == "yes"
261 !if "$(NETBEANS)" == "yes"
262 # NETBEANS - Include support for Netbeans integration
263 NETBEANS_PRO = proto/netbeans.pro
264 NETBEANS_OBJ = $(OBJDIR)/netbeans.obj
265 NETBEANS_DEFS = -DFEAT_NETBEANS_INTG
267 !if "$(NBDEBUG)" == "yes"
268 NBDEBUG_DEFS = -DNBDEBUG
269 NBDEBUG_INCL = nbdebug.h
270 NBDEBUG_SRC = nbdebug.c
271 !endif
272 NETBEANS_LIB = WSock32.lib
273 !endif
275 !ifdef XPM
276 # XPM - Include support for XPM signs
277 # you can get xpm.lib from http://iamphet.nm.ru/xpm or create it yourself
278 XPM_OBJ = $(OBJDIR)/xpm_w32.obj
279 XPM_DEFS = -DFEAT_XPM_W32
280 XPM_LIB = $(XPM)\lib\libXpm.lib
281 XPM_INC = -I $(XPM)\include
282 !endif
283 !endif
285 # Set which version of the CRT to use
286 !if defined(USE_MSVCRT)
287 # CVARS = $(cvarsdll)
288 # !elseif defined(MULTITHREADED)
289 # CVARS = $(cvarsmt)
290 !else
291 # CVARS = $(cvars)
292 # CVARS = $(cvarsmt)
293 !endif
295 # need advapi32.lib for GetUserName()
296 # need shell32.lib for ExtractIcon()
297 # gdi32.lib and comdlg32.lib for printing support
298 # ole32.lib and uuid.lib are needed for FEAT_SHORTCUT
299 CON_LIB = oldnames.lib kernel32.lib advapi32.lib shell32.lib gdi32.lib \
300 comdlg32.lib ole32.lib uuid.lib /machine:$(CPU) /nodefaultlib
301 !if "$(DELAYLOAD)" == "yes"
302 CON_LIB = $(CON_LIB) /DELAYLOAD:comdlg32.dll /DELAYLOAD:ole32.dll DelayImp.lib
303 !endif
305 ### Set the default $(WINVER) to make it work with VC++7.0 (VS.NET)
306 # When set to 0x0500 ":browse" stops working.
307 !ifndef WINVER
308 WINVER = 0x0400
309 !endif
311 # If you have a fixed directory for $VIM or $VIMRUNTIME, other than the normal
312 # default, use these lines.
313 #VIMRCLOC = somewhere
314 #VIMRUNTIMEDIR = somewhere
316 CFLAGS = -c /W3 /nologo $(CVARS) -I. -Iproto -DHAVE_PATHDEF -DWIN32 \
317 $(SNIFF_DEFS) $(CSCOPE_DEFS) $(NETBEANS_DEFS) \
318 $(NBDEBUG_DEFS) $(XPM_DEFS) \
319 $(DEFINES) -DWINVER=$(WINVER) -D_WIN32_WINNT=$(WINVER) \
320 /Fo$(OUTDIR)/
322 #>>>>> end of choices
323 ###########################################################################
325 !ifdef OS
326 OS_TYPE = winnt
327 DEL_TREE = rmdir /s /q
328 !else
329 OS_TYPE = win95
330 DEL_TREE = deltree /y
331 !endif
333 INTDIR=$(OBJDIR)
334 OUTDIR=$(OBJDIR)
336 # Derive version of VC being used from nmake if not specified
337 !if "$(MSVCVER)" == ""
338 !if "$(_NMAKE_VER)" == ""
339 MSVCVER = 4.0
340 !endif
341 !if "$(_NMAKE_VER)" == "162"
342 MSVCVER = 5.0
343 !endif
344 !if "$(_NMAKE_VER)" == "6.00.8168.0"
345 MSVCVER = 6.0
346 CPU = ix86
347 !endif
348 !if "$(_NMAKE_VER)" == "7.00.9466"
349 MSVCVER = 7.0
350 !endif
351 !if "$(_NMAKE_VER)" == "7.10.3077"
352 MSVCVER = 7.1
353 !endif
354 !if "$(_NMAKE_VER)" == "8.00.50727.42"
355 MSVCVER = 8.0
356 !endif
357 !if "$(_NMAKE_VER)" == "8.00.50727.762"
358 MSVCVER = 8.0
359 !endif
360 !if "$(_NMAKE_VER)" == "9.00.20706.01"
361 MSVCVER = 9.0
362 !endif
363 !if "$(_NMAKE_VER)" == "9.00.21022.08"
364 MSVCVER = 9.0
365 !endif
366 !if "$(_NMAKE_VER)" == "9.00.30729.01"
367 MSVCVER = 9.0
368 !endif
369 !if "$(_NMAKE_VER)" == "10.00.20506.01"
370 MSVCVER = 10.0
371 !endif
372 !endif
374 # Abort bulding VIM if version of VC is unrecognised.
375 !ifndef MSVCVER
376 !message *** ERROR
377 !message Cannot determine Visual C version being used. If you are using the
378 !message Windows SDK then you must have the environment variable MSVCVER set to
379 !message your version of the VC compiler. If you are not using the Express
380 !message version of Visual C, you can either set MSVCVER or update this makefile
381 !message to handle the new value for _NMAKE_VER, "$(_NMAKE_VER)".
382 !error Make aborted.
383 !endif
385 # Convert processor ID to MVC-compatible number
386 !if ("$(MSVCVER)" != "8.0") && ("$(MSVCVER)" != "9.0") && ("$(MSVCVER)" != "10.0")
387 !if "$(CPUNR)" == "i386"
388 CPUARG = /G3
389 !elseif "$(CPUNR)" == "i486"
390 CPUARG = /G4
391 !elseif "$(CPUNR)" == "i586"
392 CPUARG = /G5
393 !elseif "$(CPUNR)" == "i686"
394 CPUARG = /G6
395 !elseif "$(CPUNR)" == "pentium4"
396 CPUARG = /G7 /arch:SSE2
397 !else
398 CPUARG =
399 !endif
400 !else
401 # VC8/9 only allows specifying SSE architecture
402 !if "$(CPUNR)" == "pentium4"
403 CPUARG = /arch:SSE2
404 !endif
405 !endif
407 LIBC =
408 DEBUGINFO = /Zi
410 !ifdef NODEBUG
411 VIM = vim
412 !if "$(OPTIMIZE)" == "SPACE"
413 OPTFLAG = /O1
414 !elseif "$(OPTIMIZE)" == "SPEED"
415 OPTFLAG = /O2
416 !else # MAXSPEED
417 OPTFLAG = /Ox
418 !endif
419 !if ("$(MSVCVER)" == "8.0") || ("$(MSVCVER)" == "9.0") || ("$(MSVCVER)" == "10.0")
420 # Use link time code generation if not worried about size
421 !if "$(OPTIMIZE)" != "SPACE"
422 OPTFLAG = $(OPTFLAG) /GL
423 !endif
424 !endif
425 CFLAGS = $(CFLAGS) $(OPTFLAG) -DNDEBUG $(CPUARG)
426 RCFLAGS = $(rcflags) $(rcvars) -DNDEBUG
427 ! ifdef USE_MSVCRT
428 CFLAGS = $(CFLAGS) /MD
429 LIBC = msvcrt.lib
430 ! else
431 LIBC = libcmt.lib
432 CFLAGS = $(CFLAGS) /Zl /MT
433 ! endif
434 !else # DEBUG
435 VIM = vimd
436 ! if ("$(CPU)" == "i386") || ("$(CPU)" == "ix86")
437 DEBUGINFO = /ZI
438 ! endif
439 CFLAGS = $(CFLAGS) -D_DEBUG -DDEBUG /Od
440 RCFLAGS = $(rcflags) $(rcvars) -D_DEBUG -DDEBUG
441 # The /fixed:no is needed for Quantify. Assume not 4.? as unsupported in VC4.0.
442 ! if "$(MSVCVER)" == "4.0"
443 LIBC =
444 ! else
445 LIBC = /fixed:no
446 ! endif
447 ! ifdef USE_MSVCRT
448 CFLAGS = $(CFLAGS) /MDd
449 LIBC = $(LIBC) msvcrtd.lib
450 ! else
451 LIBC = $(LIBC) libcmtd.lib
452 CFLAGS = $(CFLAGS) /Zl /MTd
453 ! endif
454 !endif # DEBUG
456 INCL = vim.h os_win32.h ascii.h feature.h globals.h keymap.h macros.h \
457 proto.h option.h structs.h term.h $(SNIFF_INCL) $(CSCOPE_INCL) \
458 $(NBDEBUG_INCL)
460 OBJ = \
461 $(OUTDIR)\buffer.obj \
462 $(OUTDIR)\charset.obj \
463 $(OUTDIR)\diff.obj \
464 $(OUTDIR)\digraph.obj \
465 $(OUTDIR)\edit.obj \
466 $(OUTDIR)\eval.obj \
467 $(OUTDIR)\ex_cmds.obj \
468 $(OUTDIR)\ex_cmds2.obj \
469 $(OUTDIR)\ex_docmd.obj \
470 $(OUTDIR)\ex_eval.obj \
471 $(OUTDIR)\ex_getln.obj \
472 $(OUTDIR)\fileio.obj \
473 $(OUTDIR)\fold.obj \
474 $(OUTDIR)\getchar.obj \
475 $(OUTDIR)\hardcopy.obj \
476 $(OUTDIR)\hashtab.obj \
477 $(OUTDIR)\main.obj \
478 $(OUTDIR)\mark.obj \
479 $(OUTDIR)\mbyte.obj \
480 $(OUTDIR)\memfile.obj \
481 $(OUTDIR)\memline.obj \
482 $(OUTDIR)\menu.obj \
483 $(OUTDIR)\message.obj \
484 $(OUTDIR)\misc1.obj \
485 $(OUTDIR)\misc2.obj \
486 $(OUTDIR)\move.obj \
487 $(OUTDIR)\normal.obj \
488 $(OUTDIR)\ops.obj \
489 $(OUTDIR)\option.obj \
490 $(OUTDIR)\os_mswin.obj \
491 $(OUTDIR)\os_win32.obj \
492 $(OUTDIR)\pathdef.obj \
493 $(OUTDIR)\popupmnu.obj \
494 $(OUTDIR)\quickfix.obj \
495 $(OUTDIR)\regexp.obj \
496 $(OUTDIR)\screen.obj \
497 $(OUTDIR)\search.obj \
498 $(OUTDIR)\spell.obj \
499 $(OUTDIR)\syntax.obj \
500 $(OUTDIR)\tag.obj \
501 $(OUTDIR)\term.obj \
502 $(OUTDIR)\ui.obj \
503 $(OUTDIR)\undo.obj \
504 $(OUTDIR)\window.obj \
505 $(OUTDIR)\vim.res
507 !if "$(OLE)" == "yes"
508 CFLAGS = $(CFLAGS) -DFEAT_OLE
509 RCFLAGS = $(RCFLAGS) -DFEAT_OLE
510 OLE_OBJ = $(OUTDIR)\if_ole.obj
511 OLE_IDL = if_ole.idl
512 OLE_LIB = oleaut32.lib
513 !endif
515 !if "$(IME)" == "yes"
516 CFLAGS = $(CFLAGS) -DFEAT_MBYTE_IME
517 !ifndef DYNAMIC_IME
518 DYNAMIC_IME = yes
519 !endif
520 !if "$(DYNAMIC_IME)" == "yes"
521 CFLAGS = $(CFLAGS) -DDYNAMIC_IME
522 !else
523 IME_LIB = imm32.lib
524 !endif
525 !endif
527 !if "$(GIME)" == "yes"
528 CFLAGS = $(CFLAGS) -DGLOBAL_IME
529 OBJ = $(OBJ) $(OUTDIR)\dimm_i.obj $(OUTDIR)\glbl_ime.obj
530 MBYTE = yes
531 !endif
533 !if "$(MBYTE)" == "yes"
534 CFLAGS = $(CFLAGS) -DFEAT_MBYTE
535 !endif
537 !if "$(GUI)" == "yes"
538 SUBSYSTEM = windows
539 CFLAGS = $(CFLAGS) -DFEAT_GUI_W32
540 RCFLAGS = $(RCFLAGS) -DFEAT_GUI_W32
541 VIM = g$(VIM)
542 GUI_INCL = \
543 gui.h \
544 regexp.h \
545 ascii.h \
546 ex_cmds.h \
547 farsi.h \
548 feature.h \
549 globals.h \
550 gui_beval.h \
551 keymap.h \
552 macros.h \
553 option.h \
554 os_dos.h \
555 os_win32.h
556 GUI_OBJ = \
557 $(OUTDIR)\gui.obj \
558 $(OUTDIR)\gui_beval.obj \
559 $(OUTDIR)\gui_w32.obj \
560 $(OUTDIR)\os_w32exe.obj
561 GUI_LIB = \
562 gdi32.lib version.lib $(IME_LIB) \
563 winspool.lib comctl32.lib advapi32.lib shell32.lib \
564 /machine:$(CPU) /nodefaultlib
565 !else
566 SUBSYSTEM = console
567 !endif
569 # iconv.dll library (dynamically loaded)
570 !ifndef ICONV
571 ICONV = yes
572 !endif
573 !if "$(ICONV)" == "yes"
574 CFLAGS = $(CFLAGS) -DDYNAMIC_ICONV
575 !endif
577 # libintl.dll library
578 !ifndef GETTEXT
579 GETTEXT = yes
580 !endif
581 !if "$(GETTEXT)" == "yes"
582 CFLAGS = $(CFLAGS) -DDYNAMIC_GETTEXT
583 !endif
585 # TCL interface
586 !ifdef TCL
587 !ifndef TCL_VER
588 TCL_VER = 83
589 TCL_VER_LONG = 8.3
590 !endif
591 !message Tcl requested (version $(TCL_VER)) - root dir is "$(TCL)"
592 !if "$(DYNAMIC_TCL)" == "yes"
593 !message Tcl DLL will be loaded dynamically
594 TCL_DLL = tcl$(TCL_VER).dll
595 CFLAGS = $(CFLAGS) -DFEAT_TCL -DDYNAMIC_TCL -DDYNAMIC_TCL_DLL=\"$(TCL_DLL)\" \
596 -DDYNAMIC_TCL_VER=\"$(TCL_VER_LONG)\"
597 TCL_OBJ = $(OUTDIR)\if_tcl.obj
598 TCL_INC = /I "$(TCL)\Include" /I "$(TCL)"
599 TCL_LIB = $(TCL)\lib\tclstub$(TCL_VER).lib
600 !else
601 CFLAGS = $(CFLAGS) -DFEAT_TCL
602 TCL_OBJ = $(OUTDIR)\if_tcl.obj
603 TCL_INC = /I "$(TCL)\Include" /I "$(TCL)"
604 TCL_LIB = $(TCL)\lib\tcl$(TCL_VER)vc.lib
605 !endif
606 !endif
608 # Lua interface
609 !ifdef LUA
610 !ifndef LUA_VER
611 LUA_VER = 51
612 !endif
613 !message Lua requested (version $(LUA_VER)) - root dir is "$(LUA)"
614 !if "$(DYNAMIC_LUA)" == "yes"
615 !message Lua DLL will be loaded dynamically
616 !endif
617 CFLAGS = $(CFLAGS) -DFEAT_LUA
618 LUA_OBJ = $(OUTDIR)\if_lua.obj
619 LUA_INC = /I "$(LUA)\include" /I "$(LUA)"
620 !if "$(DYNAMIC_LUA)" == "yes"
621 CFLAGS = $(CFLAGS) -DDYNAMIC_LUA \
622 -DDYNAMIC_LUA_DLL=\"lua$(LUA_VER).dll\"
623 LUA_LIB = /nodefaultlib:lua$(LUA_VER).lib
624 !else
625 LUA_LIB = "$(LUA)\lib\lua$(LUA_VER).lib"
626 !endif
627 !endif
629 # PYTHON interface
630 !ifdef PYTHON
631 !ifndef PYTHON_VER
632 PYTHON_VER = 22
633 !endif
634 !message Python requested (version $(PYTHON_VER)) - root dir is "$(PYTHON)"
635 !if "$(DYNAMIC_PYTHON)" == "yes"
636 !message Python DLL will be loaded dynamically
637 !endif
638 CFLAGS = $(CFLAGS) -DFEAT_PYTHON
639 PYTHON_OBJ = $(OUTDIR)\if_python.obj
640 PYTHON_INC = /I "$(PYTHON)\Include" /I "$(PYTHON)\PC"
641 !if "$(DYNAMIC_PYTHON)" == "yes"
642 CFLAGS = $(CFLAGS) -DDYNAMIC_PYTHON \
643 -DDYNAMIC_PYTHON_DLL=\"python$(PYTHON_VER).dll\"
644 PYTHON_LIB = /nodefaultlib:python$(PYTHON_VER).lib
645 !else
646 PYTHON_LIB = $(PYTHON)\libs\python$(PYTHON_VER).lib
647 !endif
648 !endif
650 # MzScheme interface
651 !ifdef MZSCHEME
652 !message MzScheme requested - root dir is "$(MZSCHEME)"
653 !ifndef MZSCHEME_VER
654 MZSCHEME_VER = 205_000
655 !endif
656 CFLAGS = $(CFLAGS) -DFEAT_MZSCHEME -I $(MZSCHEME)\include
657 !if EXIST("$(MZSCHEME)\collects\scheme\base.ss")
658 # for MzScheme 4.x we need to include byte code for basic Scheme stuff
659 MZSCHEME_EXTRA_DEP = mzscheme_base.c
660 CFLAGS = $(CFLAGS) -DINCLUDE_MZSCHEME_BASE
661 !endif
662 !if EXIST("$(MZSCHEME)\lib\msvc\libmzsch$(MZSCHEME_VER).lib") \
663 && !EXIST("$(MZSCHEME)\lib\msvc\libmzgc$(MZSCHEME_VER).lib")
664 !message Building with Precise GC
665 MZSCHEME_PRECISE_GC = yes
666 CFLAGS = $(CFLAGS) -DMZ_PRECISE_GC
667 !endif
668 !if "$(DYNAMIC_MZSCHEME)" == "yes"
669 !if "$(MZSCHEME_PRECISE_GC)" == "yes"
670 !error MzScheme with Precise GC cannot be loaded dynamically
671 !endif
672 !message MzScheme DLLs will be loaded dynamically
673 CFLAGS = $(CFLAGS) -DDYNAMIC_MZSCHEME \
674 -DDYNAMIC_MZSCH_DLL=\"libmzsch$(MZSCHEME_VER).dll\" \
675 -DDYNAMIC_MZGC_DLL=\"libmzgc$(MZSCHEME_VER).dll\"
676 !else
677 !if "$(MZSCHEME_DEBUG)" == "yes"
678 CFLAGS = $(CFLAGS) -DMZSCHEME_FORCE_GC
679 !endif
680 !if "$(MZSCHEME_PRECISE_GC)" == "yes"
681 # Precise GC does not use separate dll
682 MZSCHEME_LIB = $(MZSCHEME)\lib\msvc\libmzsch$(MZSCHEME_VER).lib
683 !else
684 MZSCHEME_LIB = $(MZSCHEME)\lib\msvc\libmzgc$(MZSCHEME_VER).lib \
685 $(MZSCHEME)\lib\msvc\libmzsch$(MZSCHEME_VER).lib
686 !endif
687 !endif
688 MZSCHEME_OBJ = $(OUTDIR)\if_mzsch.obj
689 !endif
691 # Perl interface
692 !ifdef PERL
693 !ifndef PERL_VER
694 PERL_VER = 56
695 !endif
696 !message Perl requested (version $(PERL_VER)) - root dir is "$(PERL)"
697 !if "$(DYNAMIC_PERL)" == "yes"
698 !if $(PERL_VER) >= 56
699 !message Perl DLL will be loaded dynamically
700 !else
701 !message Dynamic loading is not supported for Perl versions earlier than 5.6.0
702 !message Reverting to static loading...
703 !undef DYNAMIC_PERL
704 !endif
705 !endif
707 # Is Perl installed in architecture-specific directories?
708 !if exist($(PERL)\Bin\MSWin32-x86)
709 PERL_ARCH = \MSWin32-x86
710 !endif
712 PERL_INCDIR = $(PERL)\Lib$(PERL_ARCH)\Core
714 # Version-dependent stuff
715 !if $(PERL_VER) == 55
716 PERL_LIB = $(PERL_INCDIR)\perl.lib
717 !else
718 PERL_DLL = perl$(PERL_VER).dll
719 PERL_LIB = $(PERL_INCDIR)\perl$(PERL_VER).lib
720 !endif
722 CFLAGS = $(CFLAGS) -DFEAT_PERL
724 # Do we want to load Perl dynamically?
725 !if "$(DYNAMIC_PERL)" == "yes"
726 CFLAGS = $(CFLAGS) -DDYNAMIC_PERL -DDYNAMIC_PERL_DLL=\"$(PERL_DLL)\"
727 !undef PERL_LIB
728 !endif
730 PERL_EXE = $(PERL)\Bin$(PERL_ARCH)\perl
731 PERL_INC = /I $(PERL_INCDIR)
732 PERL_OBJ = $(OUTDIR)\if_perl.obj $(OUTDIR)\if_perlsfio.obj
733 XSUBPP = $(PERL)\lib\ExtUtils\xsubpp
734 XSUBPP_TYPEMAP = $(PERL)\lib\ExtUtils\typemap
736 !endif
739 # Support Ruby interface
741 !ifdef RUBY
742 # Set default value
743 !ifndef RUBY_VER
744 RUBY_VER = 18
745 !endif
746 !ifndef RUBY_VER_LONG
747 RUBY_VER_LONG = 1.8
748 !endif
750 !if $(RUBY_VER) >= 18
751 !ifndef RUBY_PLATFORM
752 RUBY_PLATFORM = i386-mswin32
753 !endif
754 !ifndef RUBY_INSTALL_NAME
755 RUBY_INSTALL_NAME = msvcrt-ruby$(RUBY_VER)
756 !endif
757 !else
758 !ifndef RUBY_PLATFORM
759 RUBY_PLATFORM = i586-mswin32
760 !endif
761 !ifndef RUBY_INSTALL_NAME
762 RUBY_INSTALL_NAME = mswin32-ruby$(RUBY_VER)
763 !endif
764 !endif # $(RUBY_VER) >= 18
766 !message Ruby requested (version $(RUBY_VER)) - root dir is "$(RUBY)"
767 CFLAGS = $(CFLAGS) -DFEAT_RUBY
768 RUBY_OBJ = $(OUTDIR)\if_ruby.obj
769 RUBY_INC = /I "$(RUBY)\lib\ruby\$(RUBY_VER_LONG)\$(RUBY_PLATFORM)"
770 RUBY_LIB = $(RUBY)\lib\$(RUBY_INSTALL_NAME).lib
771 # Do we want to load Ruby dynamically?
772 !if "$(DYNAMIC_RUBY)" == "yes"
773 !message Ruby DLL will be loaded dynamically
774 CFLAGS = $(CFLAGS) -DDYNAMIC_RUBY -DDYNAMIC_RUBY_VER=$(RUBY_VER) \
775 -DDYNAMIC_RUBY_DLL=\"$(RUBY_INSTALL_NAME).dll\"
776 !undef RUBY_LIB
777 !endif
778 !endif # RUBY
781 # Support PostScript printing
783 !if "$(POSTSCRIPT)" == "yes"
784 CFLAGS = $(CFLAGS) -DMSWINPS
785 !endif # POSTSCRIPT
788 # FEATURES: TINY, SMALL, NORMAL, BIG or HUGE
790 !if "$(FEATURES)"==""
791 FEATURES = BIG
792 !endif
793 CFLAGS = $(CFLAGS) -DFEAT_$(FEATURES)
796 # Always generate the .pdb file, so that we get debug symbols that can be used
797 # on a crash (doesn't add overhead to the executable).
798 # Generate edit-and-continue debug info when no optimization - allows to
799 # debug more conveniently (able to look at variables which are in registers)
801 CFLAGS = $(CFLAGS) /Fd$(OUTDIR)/ $(DEBUGINFO)
802 LINK_PDB = /PDB:$(VIM).pdb -debug
805 # End extra feature include
807 !message
809 conflags = /nologo /subsystem:$(SUBSYSTEM)
811 PATHDEF_SRC = $(OUTDIR)\pathdef.c
813 !IF "$(MAP)" == "yes"
814 # "/map" is for debugging
815 conflags = $(conflags) /map
816 !ELSEIF "$(MAP)" == "lines"
817 # "/mapinfo:lines" is for debugging, only works for VC6 and later
818 conflags = $(conflags) /map /mapinfo:lines
819 !ENDIF
821 LINKARGS1 = $(linkdebug) $(conflags)
822 LINKARGS2 = $(CON_LIB) $(GUI_LIB) $(LIBC) $(OLE_LIB) user32.lib $(SNIFF_LIB) \
823 $(LUA_LIB) $(MZSCHEME_LIB) $(PERL_LIB) $(PYTHON_LIB) $(RUBY_LIB) \
824 $(TCL_LIB) $(NETBEANS_LIB) $(XPM_LIB) $(LINK_PDB)
826 # Report link time code generation progress if used.
827 !ifdef NODEBUG
828 !if ("$(MSVCVER)" == "8.0") || ("$(MSVCVER)" == "9.0") || ("$(MSVCVER)" == "10.0")
829 !if "$(OPTIMIZE)" != "SPACE"
830 LINKARGS1 = $(LINKARGS1) /LTCG:STATUS
831 !endif
832 !endif
833 !endif
835 all: $(VIM).exe vimrun.exe install.exe uninstal.exe xxd/xxd.exe \
836 GvimExt/gvimext.dll
838 $(VIM).exe: $(OUTDIR) $(OBJ) $(GUI_OBJ) $(OLE_OBJ) $(OLE_IDL) $(MZSCHEME_OBJ) \
839 $(LUA_OBJ) $(PERL_OBJ) $(PYTHON_OBJ) $(RUBY_OBJ) $(TCL_OBJ) \
840 $(SNIFF_OBJ) $(CSCOPE_OBJ) $(NETBEANS_OBJ) $(XPM_OBJ) \
841 version.c version.h
842 $(CC) $(CFLAGS) version.c
843 $(link) $(LINKARGS1) -out:$(VIM).exe $(OBJ) $(GUI_OBJ) $(OLE_OBJ) \
844 $(LUA_OBJ) $(MZSCHEME_OBJ) $(PERL_OBJ) $(PYTHON_OBJ) $(RUBY_OBJ) \
845 $(TCL_OBJ) $(SNIFF_OBJ) $(CSCOPE_OBJ) $(NETBEANS_OBJ) \
846 $(XPM_OBJ) $(OUTDIR)\version.obj $(LINKARGS2)
848 $(VIM): $(VIM).exe
850 $(OUTDIR):
851 if not exist $(OUTDIR)/nul mkdir $(OUTDIR)
853 install.exe: dosinst.c
854 $(CC) /nologo -DNDEBUG -DWIN32 dosinst.c kernel32.lib shell32.lib \
855 ole32.lib advapi32.lib uuid.lib
856 - if exist install.exe del install.exe
857 ren dosinst.exe install.exe
859 uninstal.exe: uninstal.c
860 $(CC) /nologo -DNDEBUG -DWIN32 uninstal.c shell32.lib advapi32.lib
862 vimrun.exe: vimrun.c
863 $(CC) /nologo -DNDEBUG vimrun.c
865 xxd/xxd.exe: xxd/xxd.c
866 cd xxd
867 $(MAKE) /NOLOGO -f Make_mvc.mak
868 cd ..
870 GvimExt/gvimext.dll: GvimExt/gvimext.cpp GvimExt/gvimext.rc GvimExt/gvimext.h
871 cd GvimExt
872 $(MAKE) /NOLOGO -f Makefile $(MAKEFLAGS_GVIMEXT)
873 cd ..
876 tags: notags
877 $(CTAGS) *.c *.cpp *.h if_perl.xs proto\*.pro
879 notags:
880 - if exist tags del tags
882 clean:
883 - if exist $(OUTDIR)/nul $(DEL_TREE) $(OUTDIR)
884 - if exist *.obj del *.obj
885 - if exist $(VIM).exe del $(VIM).exe
886 - if exist $(VIM).ilk del $(VIM).ilk
887 - if exist $(VIM).pdb del $(VIM).pdb
888 - if exist $(VIM).map del $(VIM).map
889 - if exist $(VIM).ncb del $(VIM).ncb
890 - if exist vimrun.exe del vimrun.exe
891 - if exist install.exe del install.exe
892 - if exist uninstal.exe del uninstal.exe
893 - if exist if_perl.c del if_perl.c
894 - if exist dimm.h del dimm.h
895 - if exist dimm_i.c del dimm_i.c
896 - if exist dimm.tlb del dimm.tlb
897 - if exist dosinst.exe del dosinst.exe
898 - if exist mzscheme_base.c del mzscheme_base.c
899 cd xxd
900 $(MAKE) /NOLOGO -f Make_mvc.mak clean
901 cd ..
902 cd GvimExt
903 $(MAKE) /NOLOGO -f Makefile clean
904 cd ..
905 cd GvimExt
906 $(MAKE) /NOLOGO -f Makefile clean
907 cd ..
908 - if exist testdir\*.out del testdir\*.out
910 test:
911 cd testdir
912 $(MAKE) /NOLOGO -f Make_dos.mak win32
913 cd ..
915 testclean:
916 cd testdir
917 $(MAKE) /NOLOGO -f Make_dos.mak clean
918 cd ..
920 ###########################################################################
922 # Create a default rule for transforming .c files to .obj files in $(OUTDIR)
923 # Batch compilation is supported by nmake 1.62 (part of VS 5.0) and later)
924 !IF "$(MSVCVER)" == "4.0"
925 .c{$(OUTDIR)/}.obj:
926 !ELSE
927 .c{$(OUTDIR)/}.obj::
928 !ENDIF
929 $(CC) $(CFLAGS) $<
931 # Create a default rule for transforming .cpp files to .obj files in $(OUTDIR)
932 # Batch compilation is supported by nmake 1.62 (part of VS 5.0) and later)
933 !IF "$(MSVCVER)" == "4.0"
934 .cpp{$(OUTDIR)/}.obj:
935 !ELSE
936 .cpp{$(OUTDIR)/}.obj::
937 !ENDIF
938 $(CC) $(CFLAGS) $<
940 $(OUTDIR)/buffer.obj: $(OUTDIR) buffer.c $(INCL)
942 $(OUTDIR)/charset.obj: $(OUTDIR) charset.c $(INCL)
944 $(OUTDIR)/diff.obj: $(OUTDIR) diff.c $(INCL)
946 $(OUTDIR)/digraph.obj: $(OUTDIR) digraph.c $(INCL)
948 $(OUTDIR)/edit.obj: $(OUTDIR) edit.c $(INCL)
950 $(OUTDIR)/eval.obj: $(OUTDIR) eval.c $(INCL)
952 $(OUTDIR)/ex_cmds.obj: $(OUTDIR) ex_cmds.c $(INCL)
954 $(OUTDIR)/ex_cmds2.obj: $(OUTDIR) ex_cmds2.c $(INCL)
956 $(OUTDIR)/ex_docmd.obj: $(OUTDIR) ex_docmd.c $(INCL) ex_cmds.h
958 $(OUTDIR)/ex_eval.obj: $(OUTDIR) ex_eval.c $(INCL) ex_cmds.h
960 $(OUTDIR)/ex_getln.obj: $(OUTDIR) ex_getln.c $(INCL)
962 $(OUTDIR)/fileio.obj: $(OUTDIR) fileio.c $(INCL)
964 $(OUTDIR)/fold.obj: $(OUTDIR) fold.c $(INCL)
966 $(OUTDIR)/getchar.obj: $(OUTDIR) getchar.c $(INCL)
968 $(OUTDIR)/hardcopy.obj: $(OUTDIR) hardcopy.c $(INCL)
970 $(OUTDIR)/hashtab.obj: $(OUTDIR) hashtab.c $(INCL)
972 $(OUTDIR)/gui.obj: $(OUTDIR) gui.c $(INCL) $(GUI_INCL)
974 $(OUTDIR)/gui_beval.obj: $(OUTDIR) gui_beval.c $(INCL) $(GUI_INCL)
976 $(OUTDIR)/gui_w32.obj: $(OUTDIR) gui_w32.c gui_w48.c $(INCL) $(GUI_INCL)
978 $(OUTDIR)/if_cscope.obj: $(OUTDIR) if_cscope.c $(INCL)
980 $(OUTDIR)/if_lua.obj: $(OUTDIR) if_lua.c $(INCL)
981 $(CC) $(CFLAGS) $(LUA_INC) if_lua.c
983 if_perl.c : if_perl.xs typemap
984 $(PERL_EXE) $(XSUBPP) -prototypes -typemap $(XSUBPP_TYPEMAP) \
985 -typemap typemap if_perl.xs > if_perl.c
987 $(OUTDIR)/if_perl.obj: $(OUTDIR) if_perl.c $(INCL)
988 $(CC) $(CFLAGS) $(PERL_INC) if_perl.c
990 $(OUTDIR)/if_perlsfio.obj: $(OUTDIR) if_perlsfio.c $(INCL)
991 $(CC) $(CFLAGS) $(PERL_INC) if_perlsfio.c
993 $(OUTDIR)/if_mzsch.obj: $(OUTDIR) if_mzsch.c $(INCL) $(MZSCHEME_EXTRA_DEP)
994 $(CC) $(CFLAGS) if_mzsch.c \
995 -DMZSCHEME_COLLECTS=\"$(MZSCHEME:\=\\)\\collects\"
996 mzscheme_base.c:
997 $(MZSCHEME)\mzc --c-mods mzscheme_base.c ++lib scheme/base
999 $(OUTDIR)/if_python.obj: $(OUTDIR) if_python.c $(INCL)
1000 $(CC) $(CFLAGS) $(PYTHON_INC) if_python.c
1002 $(OUTDIR)/if_ole.obj: $(OUTDIR) if_ole.cpp $(INCL) if_ole.h
1004 $(OUTDIR)/if_ruby.obj: $(OUTDIR) if_ruby.c $(INCL)
1005 $(CC) $(CFLAGS) $(RUBY_INC) if_ruby.c
1007 $(OUTDIR)/if_sniff.obj: $(OUTDIR) if_sniff.c $(INCL)
1008 $(CC) $(CFLAGS) if_sniff.c
1010 $(OUTDIR)/if_tcl.obj: $(OUTDIR) if_tcl.c $(INCL)
1011 $(CC) $(CFLAGS) $(TCL_INC) if_tcl.c
1013 $(OUTDIR)/main.obj: $(OUTDIR) main.c $(INCL)
1015 $(OUTDIR)/mark.obj: $(OUTDIR) mark.c $(INCL)
1017 $(OUTDIR)/memfile.obj: $(OUTDIR) memfile.c $(INCL)
1019 $(OUTDIR)/memline.obj: $(OUTDIR) memline.c $(INCL)
1021 $(OUTDIR)/menu.obj: $(OUTDIR) menu.c $(INCL)
1023 $(OUTDIR)/message.obj: $(OUTDIR) message.c $(INCL)
1025 $(OUTDIR)/misc1.obj: $(OUTDIR) misc1.c $(INCL)
1027 $(OUTDIR)/misc2.obj: $(OUTDIR) misc2.c $(INCL)
1029 $(OUTDIR)/move.obj: $(OUTDIR) move.c $(INCL)
1031 $(OUTDIR)/mbyte.obj: $(OUTDIR) mbyte.c $(INCL)
1033 $(OUTDIR)/netbeans.obj: $(OUTDIR) netbeans.c $(NBDEBUG_SRC) $(INCL)
1035 $(OUTDIR)/normal.obj: $(OUTDIR) normal.c $(INCL)
1037 $(OUTDIR)/option.obj: $(OUTDIR) option.c $(INCL)
1039 $(OUTDIR)/ops.obj: $(OUTDIR) ops.c $(INCL)
1041 $(OUTDIR)/os_mswin.obj: $(OUTDIR) os_mswin.c $(INCL)
1043 $(OUTDIR)/os_win32.obj: $(OUTDIR) os_win32.c $(INCL) os_win32.h
1045 $(OUTDIR)/os_w32exe.obj: $(OUTDIR) os_w32exe.c $(INCL)
1047 $(OUTDIR)/pathdef.obj: $(OUTDIR) $(PATHDEF_SRC) $(INCL)
1048 $(CC) $(CFLAGS) $(PATHDEF_SRC)
1050 $(OUTDIR)/popupmnu.obj: $(OUTDIR) popupmnu.c $(INCL)
1052 $(OUTDIR)/quickfix.obj: $(OUTDIR) quickfix.c $(INCL)
1054 $(OUTDIR)/regexp.obj: $(OUTDIR) regexp.c $(INCL)
1056 $(OUTDIR)/screen.obj: $(OUTDIR) screen.c $(INCL)
1058 $(OUTDIR)/search.obj: $(OUTDIR) search.c $(INCL)
1060 $(OUTDIR)/spell.obj: $(OUTDIR) spell.c $(INCL)
1062 $(OUTDIR)/syntax.obj: $(OUTDIR) syntax.c $(INCL)
1064 $(OUTDIR)/tag.obj: $(OUTDIR) tag.c $(INCL)
1066 $(OUTDIR)/term.obj: $(OUTDIR) term.c $(INCL)
1068 $(OUTDIR)/ui.obj: $(OUTDIR) ui.c $(INCL)
1070 $(OUTDIR)/undo.obj: $(OUTDIR) undo.c $(INCL)
1072 $(OUTDIR)/window.obj: $(OUTDIR) window.c $(INCL)
1074 $(OUTDIR)/xpm_w32.obj: $(OUTDIR) xpm_w32.c
1075 $(CC) $(CFLAGS) $(XPM_INC) xpm_w32.c
1077 $(OUTDIR)/vim.res: $(OUTDIR) vim.rc gvim.exe.mnf version.h tools.bmp tearoff.bmp \
1078 vim.ico vim_error.ico vim_alert.ico vim_info.ico vim_quest.ico
1079 $(RC) /l 0x409 /Fo$(OUTDIR)/vim.res $(RCFLAGS) vim.rc
1081 iid_ole.c if_ole.h vim.tlb: if_ole.idl
1082 midl /nologo /error none /proxy nul /iid iid_ole.c /tlb vim.tlb \
1083 /header if_ole.h if_ole.idl
1085 dimm.h dimm_i.c: dimm.idl
1086 midl /nologo /error none /proxy nul dimm.idl
1088 $(OUTDIR)/dimm_i.obj: $(OUTDIR) dimm_i.c $(INCL)
1090 $(OUTDIR)/glbl_ime.obj: $(OUTDIR) glbl_ime.cpp dimm.h $(INCL)
1092 # $CFLAGS may contain backslashes and double quotes, escape them both.
1093 E0_CFLAGS = $(CFLAGS:\=\\)
1094 E_CFLAGS = $(E0_CFLAGS:"=\")
1095 # ") stop the string
1097 $(PATHDEF_SRC): auto
1098 @echo creating $(PATHDEF_SRC)
1099 @echo /* pathdef.c */ > $(PATHDEF_SRC)
1100 @echo #include "vim.h" >> $(PATHDEF_SRC)
1101 @echo char_u *default_vim_dir = (char_u *)"$(VIMRCLOC:\=\\)"; >> $(PATHDEF_SRC)
1102 @echo char_u *default_vimruntime_dir = (char_u *)"$(VIMRUNTIMEDIR:\=\\)"; >> $(PATHDEF_SRC)
1103 @echo char_u *all_cflags = (char_u *)"$(CC:\=\\) $(E_CFLAGS)"; >> $(PATHDEF_SRC)
1104 @echo char_u *all_lflags = (char_u *)"$(link:\=\\) $(LINKARGS1:\=\\) $(LINKARGS2:\=\\)"; >> $(PATHDEF_SRC)
1105 @echo char_u *compiled_user = (char_u *)"$(USERNAME)"; >> $(PATHDEF_SRC)
1106 @echo char_u *compiled_sys = (char_u *)"$(USERDOMAIN)"; >> $(PATHDEF_SRC)
1108 auto:
1109 if not exist auto/nul mkdir auto
1111 # End Custom Build
1112 proto.h: \
1113 proto/buffer.pro \
1114 proto/charset.pro \
1115 proto/diff.pro \
1116 proto/digraph.pro \
1117 proto/edit.pro \
1118 proto/eval.pro \
1119 proto/ex_cmds.pro \
1120 proto/ex_cmds2.pro \
1121 proto/ex_docmd.pro \
1122 proto/ex_eval.pro \
1123 proto/ex_getln.pro \
1124 proto/fileio.pro \
1125 proto/getchar.pro \
1126 proto/hardcopy.pro \
1127 proto/hashtab.pro \
1128 proto/main.pro \
1129 proto/mark.pro \
1130 proto/memfile.pro \
1131 proto/memline.pro \
1132 proto/menu.pro \
1133 proto/message.pro \
1134 proto/misc1.pro \
1135 proto/misc2.pro \
1136 proto/move.pro \
1137 proto/mbyte.pro \
1138 proto/normal.pro \
1139 proto/ops.pro \
1140 proto/option.pro \
1141 proto/os_mswin.pro \
1142 proto/os_win32.pro \
1143 proto/popupmnu.pro \
1144 proto/quickfix.pro \
1145 proto/regexp.pro \
1146 proto/screen.pro \
1147 proto/search.pro \
1148 proto/spell.pro \
1149 proto/syntax.pro \
1150 proto/tag.pro \
1151 proto/term.pro \
1152 proto/ui.pro \
1153 proto/undo.pro \
1154 proto/window.pro \
1155 $(NETBEANS_PRO)
1157 .SUFFIXES: .cod .i
1159 # Generate foo.cod (mixed source and assembly listing) from foo.c via "nmake
1160 # foo.cod"
1161 .c.cod:
1162 $(CC) $(CFLAGS) /FAcs $<
1164 # Generate foo.i (preprocessor listing) from foo.c via "nmake foo.i"
1165 .c.i:
1166 $(CC) $(CFLAGS) /P /C $<
1169 # vim: set noet sw=8 ts=8 sts=0 wm=0 tw=0: