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