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