1# Makefile for Vim on Win32 (Windows XP/2003/Vista/7/8/10) and Win64, 2# using the Microsoft Visual C++ compilers. Known to work with VC10 (VS2010), 3# VC11 (VS2012), VC12 (VS2013), VC14 (VS2015), VC14.1 (VS2017) and 4# VC14.2 (VS2019). 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 any features do "nmake clean" first !!!! 19# 20# Feature Set: FEATURES=[TINY, SMALL, NORMAL, BIG, HUGE] (default is HUGE) 21# 22# Name to add to the version: MODIFIED_BY=[name of modifier] 23# 24# GUI interface: GUI=yes (default is no) 25# 26# GUI with DirectWrite (DirectX): DIRECTX=yes 27# (default is yes if GUI=yes, requires GUI=yes) 28# 29# Color emoji support: COLOR_EMOJI=yes 30# (default is yes if DIRECTX=yes, requires WinSDK 8.1 or later.) 31# 32# OLE interface: OLE=yes (usually with GUI=yes) 33# 34# IME support: IME=yes (default is 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# Terminal support: TERMINAL=yes (default is yes if FEATURES is HUGE) 40# Will also enable CHANNEL 41# 42# Sound support: SOUND=yes (default is yes) 43# 44# Sodium support: SODIUM=[Path to Sodium directory] 45# Dynamic built with libsodium 46# You need to install the msvc package from 47# https://download.libsodium.org/libsodium/releases/ 48# and package the libsodium.dll with Vim 49# 50# 51# DLL support (EXPERIMENTAL): VIMDLL=yes (default is no) 52# Creates vim{32,64}.dll, and stub gvim.exe and vim.exe. 53# The shared codes between the GUI and the console are built into 54# the DLL. This reduces the total file size and memory usage. 55# Also supports `vim -g` and the `:gui` command. 56# 57# Lua interface: 58# LUA=[Path to Lua directory] 59# DYNAMIC_LUA=yes (to load the Lua DLL dynamically) 60# LUA_VER=[Lua version] (default is 53) 61# 62# MzScheme interface: 63# MZSCHEME=[Path to MzScheme directory] 64# DYNAMIC_MZSCHEME=yes (to load the MzScheme DLLs dynamically) 65# MZSCHEME_VER=[MzScheme version] (default is 3m_a0solc (6.6)) 66# Used for the DLL file name. E.g.: 67# C:\Program Files (x86)\Racket\lib\libracket3m_XXXXXX.dll 68# MZSCHEME_DEBUG=no 69# 70# Perl interface: 71# PERL=[Path to Perl directory] 72# DYNAMIC_PERL=yes (to load the Perl DLL dynamically) 73# PERL_VER=[Perl version, in the form 55 (5.005), 56 (5.6.x), 74# 510 (5.10.x), etc] 75# (default is 524) 76# 77# Python interface: 78# PYTHON=[Path to Python directory] 79# DYNAMIC_PYTHON=yes (to load the Python DLL dynamically) 80# PYTHON_VER=[Python version, eg 22, 23, ..., 27] (default is 27) 81# 82# Python3 interface: 83# PYTHON3=[Path to Python3 directory] 84# DYNAMIC_PYTHON3=yes (to load the Python3 DLL dynamically) 85# PYTHON3_VER=[Python3 version, eg 30, 31] (default is 36) 86# 87# Ruby interface: 88# RUBY=[Path to Ruby directory] 89# DYNAMIC_RUBY=yes (to load the Ruby DLL dynamically) 90# RUBY_VER=[Ruby version, eg 19, 22] (default is 22) 91# RUBY_API_VER_LONG=[Ruby API version, eg 1.8, 1.9.1, 2.2.0] 92# (default is 2.2.0) 93# You must set RUBY_API_VER_LONG when change RUBY_VER. 94# Note: If you use Ruby 1.9.3, set as follows: 95# RUBY_VER=19 96# RUBY_API_VER_LONG=1.9.1 (not 1.9.3, because the API version is 1.9.1.) 97# 98# Tcl interface: 99# TCL=[Path to Tcl directory] 100# DYNAMIC_TCL=yes (to load the Tcl DLL dynamically) 101# TCL_VER=[Tcl version, e.g. 80, 83] (default is 86) 102# TCL_VER_LONG=[Tcl version, eg 8.3] (default is 8.6) 103# You must set TCL_VER_LONG when you set TCL_VER. 104# TCL_DLL=[Tcl dll name, e.g. tcl86.dll] (default is tcl86.dll) 105# 106# Cscope support: CSCOPE=yes 107# 108# Iconv library support (always dynamically loaded): 109# ICONV=[yes or no] (default is yes) 110# 111# Intl library support (always dynamically loaded): 112# GETTEXT=[yes or no] (default is yes) 113# See http://sourceforge.net/projects/gettext/ 114# 115# PostScript printing: POSTSCRIPT=yes (default is no) 116# 117# Netbeans Support: NETBEANS=[yes or no] (default is yes if GUI is yes) 118# Requires CHANNEL. 119# 120# Netbeans Debugging Support: NBDEBUG=[yes or no] (should be no, yes 121# doesn't work) 122# 123# Inter process communication: CHANNEL=[yes or no] (default is yes if GUI 124# is yes or TERMINAL is yes) 125# 126# XPM Image Support: XPM=[path to XPM directory] 127# Default is "xpm", using the files included in the distribution. 128# Use "no" to disable this feature. 129# 130# Optimization: OPTIMIZE=[SPACE, SPEED, MAXSPEED] (default is MAXSPEED) 131# 132# Processor Version: CPUNR=[any, i586, i686, sse, sse2, avx, avx2] (default is 133# any) 134# avx is available on Visual C++ 2010 and after. 135# avx2 is available on Visual C++ 2013 Update 2 and after. 136# 137# Version Support: WINVER=[0x0501, 0x0502, 0x0600, 0x0601, 0x0602, 138# 0x0603, 0x0A00] (default is 0x0501) 139# Supported versions depends on your target SDK, check SDKDDKVer.h 140# See https://docs.microsoft.com/en-us/cpp/porting/modifying-winver-and-win32-winnt 141# 142# Debug version: DEBUG=yes 143# Mapfile: MAP=[no, yes or lines] (default is yes) 144# no: Don't write a mapfile. 145# yes: Write a normal mapfile. 146# lines: Write a mapfile with line numbers (only for VC6 and later) 147# 148# Static Code Analysis: ANALYZE=yes (works with VS2012 or later) 149# 150# You can combine any of these interfaces 151# 152# Example: To build the non-debug, GUI version with Perl interface: 153# nmake -f Make_mvc.mak GUI=yes PERL=C:\Perl 154 155### See feature.h for a list of optionals. 156# If you want to build some optional features without modifying the source, 157# you can set DEFINES on the command line, e.g., 158# nmake -f Make_mvc.mvc "DEFINES=-DEMACS_TAGS" 159 160# Build on Windows NT/XP 161 162TARGETOS = WINNT 163 164!if "$(VIMDLL)" == "yes" 165GUI = yes 166!endif 167 168!ifndef DIRECTX 169DIRECTX = $(GUI) 170!endif 171 172# Select a code directory, depends on GUI, OLE, DEBUG, interfaces and etc. 173# If you change something else, do "make clean" first! 174!if "$(VIMDLL)" == "yes" 175OBJDIR = .\ObjD 176!elseif "$(GUI)" == "yes" 177OBJDIR = .\ObjG 178!else 179OBJDIR = .\ObjC 180!endif 181!if "$(DIRECTX)" == "yes" && "$(GUI)" == "yes" 182OBJDIR = $(OBJDIR)X 183!endif 184!if "$(OLE)" == "yes" 185OBJDIR = $(OBJDIR)O 186!endif 187!ifdef LUA 188OBJDIR = $(OBJDIR)U 189!endif 190!ifdef PERL 191OBJDIR = $(OBJDIR)L 192!endif 193!ifdef PYTHON 194OBJDIR = $(OBJDIR)Y 195!endif 196!ifdef PYTHON3 197OBJDIR = $(OBJDIR)H 198!endif 199!ifdef TCL 200OBJDIR = $(OBJDIR)T 201!endif 202!ifdef RUBY 203OBJDIR = $(OBJDIR)R 204!endif 205!ifdef MZSCHEME 206OBJDIR = $(OBJDIR)Z 207!endif 208!ifdef USE_MSVCRT 209OBJDIR = $(OBJDIR)V 210!endif 211!if "$(DEBUG)" == "yes" 212OBJDIR = $(OBJDIR)d 213!endif 214 215!ifdef PROCESSOR_ARCHITECTURE 216# We're on Windows NT or using VC 6+ 217! ifdef CPU 218ASSEMBLY_ARCHITECTURE=$(CPU) 219# Using I386 for $ASSEMBLY_ARCHITECTURE doesn't work for VC7. 220! if "$(CPU)" == "I386" 221CPU = i386 222! endif 223! else # !CPU 224CPU = i386 225! if !defined(PLATFORM) && defined(TARGET_CPU) 226PLATFORM = $(TARGET_CPU) 227! endif 228! ifdef PLATFORM 229! if ("$(PLATFORM)" == "x64") || ("$(PLATFORM)" == "X64") 230CPU = AMD64 231! elseif ("$(PLATFORM)" == "arm64") || ("$(PLATFORM)" == "ARM64") 232CPU = ARM64 233! elseif ("$(PLATFORM)" != "x86") && ("$(PLATFORM)" != "X86") 234! error *** ERROR Unknown target platform "$(PLATFORM)". Make aborted. 235! endif 236! endif # !PLATFORM 237! endif 238!else # !PROCESSOR_ARCHITECTURE 239# We're on Windows 95 240CPU = i386 241!endif # !PROCESSOR_ARCHITECTURE 242ASSEMBLY_ARCHITECTURE=$(CPU) 243OBJDIR = $(OBJDIR)$(CPU) 244 245# Build a retail version by default 246 247!if "$(DEBUG)" != "yes" 248NODEBUG = 1 249!else 250! undef NODEBUG 251MAKEFLAGS_GVIMEXT = DEBUG=yes 252!endif 253 254link = link 255 256# Check VC version. 257!if [echo MSVCVER=_MSC_VER> msvcver.c && $(CC) /EP msvcver.c > msvcver.~ 2> nul] 258! message *** ERROR 259! message Cannot run Visual C to determine its version. Make sure cl.exe is in your PATH. 260! message This can usually be done by running "vcvarsall.bat", located in the bin directory where Visual Studio was installed. 261! error Make aborted. 262!else 263! include msvcver.~ 264! if [del msvcver.c msvcver.~] 265! endif 266!endif 267 268!if $(MSVCVER) < 1900 269MSVC_MAJOR = ($(MSVCVER) / 100 - 6) 270MSVCRT_VER = ($(MSVCVER) / 10 - 60) 271!else 272MSVC_MAJOR = ($(MSVCVER) / 100 - 5) 273MSVCRT_VER = ($(MSVCVER) / 100 * 10 - 50) 274!endif 275 276# Calculate MSVC_FULL for Visual C++ 8 and up. 277!if $(MSVC_MAJOR) >= 8 278! if [echo MSVC_FULL=_MSC_FULL_VER> msvcfullver.c && $(CC) /EP msvcfullver.c > msvcfullver.~ 2> nul] 279! message *** ERROR 280! message Cannot run Visual C to determine its version. Make sure cl.exe is in your PATH. 281! message This can usually be done by running "vcvarsall.bat", located in the bin directory where Visual Studio was installed. 282! error Make aborted. 283! else 284! include msvcfullver.~ 285! if [del msvcfullver.c msvcfullver.~] 286! endif 287! endif 288!endif 289 290 291# Calculate MSVCRT_VER 292!if [(set /a MSVCRT_VER="$(MSVCRT_VER)" > nul) && set MSVCRT_VER > msvcrtver.~] == 0 293! include msvcrtver.~ 294! if [del msvcrtver.~] 295! endif 296!endif 297 298# Base name of the msvcrXX.dll 299!if $(MSVCRT_VER) <= 60 300MSVCRT_NAME = msvcrt 301!elseif $(MSVCRT_VER) <= 130 302MSVCRT_NAME = msvcr$(MSVCRT_VER) 303!else 304MSVCRT_NAME = vcruntime$(MSVCRT_VER) 305!endif 306 307!if $(MSVC_MAJOR) == 6 308CPU = ix86 309!endif 310 311### Set the default $(WINVER) to make it work with VC++7.0 (VS.NET) 312!ifndef WINVER 313WINVER = 0x0501 314!endif 315 316# Flag to turn on Win64 compatibility warnings for VC7.x and VC8. 317WP64CHECK = /Wp64 318 319# Use multiprocess build 320USE_MP = yes 321 322#>>>>> path of the compiler and linker; name of include and lib directories 323# PATH = c:\msvc20\bin;$(PATH) 324# INCLUDE = c:\msvc20\include 325# LIB = c:\msvc20\lib 326 327!if "$(FEATURES)"=="" 328FEATURES = HUGE 329!endif 330 331!ifndef CTAGS 332# this assumes ctags is Exuberant ctags 333CTAGS = ctags -I INIT+,INIT2+,INIT3+,INIT4+,INIT5+ --fields=+S 334!endif 335 336!ifndef CSCOPE 337CSCOPE = yes 338!endif 339 340!if "$(CSCOPE)" == "yes" 341# CSCOPE - Include support for Cscope 342CSCOPE_DEFS = -DFEAT_CSCOPE 343!endif 344 345!ifndef TERMINAL 346! if "$(FEATURES)"=="HUGE" 347TERMINAL = yes 348! else 349TERMINAL = no 350! endif 351!endif 352 353!if "$(TERMINAL)" == "yes" 354TERM_OBJ = \ 355 $(OBJDIR)/terminal.obj \ 356 $(OBJDIR)/vterm_encoding.obj \ 357 $(OBJDIR)/vterm_keyboard.obj \ 358 $(OBJDIR)/vterm_mouse.obj \ 359 $(OBJDIR)/vterm_parser.obj \ 360 $(OBJDIR)/vterm_pen.obj \ 361 $(OBJDIR)/vterm_screen.obj \ 362 $(OBJDIR)/vterm_state.obj \ 363 $(OBJDIR)/vterm_unicode.obj \ 364 $(OBJDIR)/vterm_vterm.obj 365TERM_DEFS = -DFEAT_TERMINAL 366TERM_DEPS = \ 367 libvterm/include/vterm.h \ 368 libvterm/include/vterm_keycodes.h \ 369 libvterm/src/rect.h \ 370 libvterm/src/utf8.h \ 371 libvterm/src/vterm_internal.h 372!endif 373 374!ifndef SOUND 375! if "$(FEATURES)"=="HUGE" || "$(FEATURES)"=="BIG" 376SOUND = yes 377! else 378SOUND = no 379! endif 380!endif 381 382!ifndef SODIUM 383SODIUM = no 384!endif 385 386!if "$(SODIUM)" != "no" 387! if "$(CPU)" == "AMD64" 388SOD_LIB = $(SODIUM)\x64\Release\v140\dynamic 389! elseif "$(CPU)" == "i386" 390SOD_LIB = $(SODIUM)\Win32\Release\v140\dynamic 391! else 392SODIUM = no 393! endif 394!endif 395 396!if "$(SODIUM)" != "no" 397SOD_INC = /I "$(SODIUM)\include" 398SOD_DEFS = -DHAVE_SODIUM 399SOD_LIB = $(SOD_LIB)\libsodium.lib 400!endif 401 402!ifndef NETBEANS 403NETBEANS = $(GUI) 404!endif 405 406!ifndef CHANNEL 407! if "$(FEATURES)"=="HUGE" || "$(TERMINAL)"=="yes" 408CHANNEL = yes 409! else 410CHANNEL = $(GUI) 411! endif 412!endif 413 414# GUI specific features. 415!if "$(GUI)" == "yes" 416# Only allow NETBEANS for a GUI build and CHANNEL. 417! if "$(NETBEANS)" == "yes" && "$(CHANNEL)" == "yes" 418# NETBEANS - Include support for Netbeans integration 419NETBEANS_PRO = proto/netbeans.pro 420NETBEANS_OBJ = $(OBJDIR)/netbeans.obj 421NETBEANS_DEFS = -DFEAT_NETBEANS_INTG 422 423! if "$(NBDEBUG)" == "yes" 424NBDEBUG_DEFS = -DNBDEBUG 425NBDEBUG_INCL = nbdebug.h 426NBDEBUG_SRC = nbdebug.c 427! endif 428NETBEANS_LIB = WSock32.lib 429! endif 430 431# DirectWrite (DirectX) 432! if "$(DIRECTX)" == "yes" 433DIRECTX_DEFS = -DFEAT_DIRECTX -DDYNAMIC_DIRECTX 434! if "$(COLOR_EMOJI)" != "no" 435DIRECTX_DEFS = $(DIRECTX_DEFS) -DFEAT_DIRECTX_COLOR_EMOJI 436! endif 437DIRECTX_INCL = gui_dwrite.h 438DIRECTX_OBJ = $(OUTDIR)\gui_dwrite.obj 439! endif 440 441# Only allow XPM for a GUI build. 442! ifndef XPM 443! ifndef USE_MSVCRT 444# Both XPM and USE_MSVCRT are not set, use the included xpm files, depending 445# on the architecture. 446! if "$(CPU)" == "AMD64" 447XPM = xpm\x64 448! elseif "$(CPU)" == "ARM64" 449XPM = xpm\arm64 450! elseif "$(CPU)" == "i386" 451XPM = xpm\x86 452! else 453XPM = no 454! endif 455! else # USE_MSVCRT 456XPM = no 457! endif # USE_MSVCRT 458! endif # XPM 459! if "$(XPM)" != "no" 460# XPM - Include support for XPM signs 461# See the xpm directory for more information. 462XPM_OBJ = $(OBJDIR)/xpm_w32.obj 463XPM_DEFS = -DFEAT_XPM_W32 464! if $(MSVC_MAJOR) >= 14 465# VC14 cannot use a library built by VC12 or earlier, because VC14 uses 466# Universal CRT. 467XPM_LIB = $(XPM)\lib-vc14\libXpm.lib 468! else 469XPM_LIB = $(XPM)\lib\libXpm.lib 470! endif 471XPM_INC = -I $(XPM)\include -I $(XPM)\..\include 472! endif 473!endif # GUI 474 475!if "$(SOUND)" == "yes" 476SOUND_PRO = proto/sound.pro 477SOUND_OBJ = $(OBJDIR)/sound.obj 478SOUND_DEFS = -DFEAT_SOUND 479SOUND_LIB = winmm.lib 480!endif 481 482!if "$(CHANNEL)" == "yes" 483CHANNEL_PRO = proto/job.pro proto/channel.pro 484CHANNEL_OBJ = $(OBJDIR)/job.obj $(OBJDIR)/channel.obj 485CHANNEL_DEFS = -DFEAT_JOB_CHANNEL -DFEAT_IPV6 486! if $(WINVER) >= 0x600 487CHANNEL_DEFS = $(CHANNEL_DEFS) -DHAVE_INET_NTOP 488! endif 489 490NETBEANS_LIB = WSock32.lib Ws2_32.lib 491!endif 492 493# Set which version of the CRT to use 494!if defined(USE_MSVCRT) 495# CVARS = $(cvarsdll) 496# !elseif defined(MULTITHREADED) 497# CVARS = $(cvarsmt) 498!else 499# CVARS = $(cvars) 500# CVARS = $(cvarsmt) 501!endif 502 503# need advapi32.lib for GetUserName() 504# need shell32.lib for ExtractIcon() 505# need netapi32.lib for NetUserEnum() 506# gdi32.lib and comdlg32.lib for printing support 507# ole32.lib and uuid.lib are needed for FEAT_SHORTCUT 508CON_LIB = oldnames.lib kernel32.lib advapi32.lib shell32.lib gdi32.lib \ 509 comdlg32.lib ole32.lib netapi32.lib uuid.lib /machine:$(CPU) 510!if "$(DELAYLOAD)" == "yes" 511CON_LIB = $(CON_LIB) /DELAYLOAD:comdlg32.dll /DELAYLOAD:ole32.dll DelayImp.lib 512!endif 513 514# If you have a fixed directory for $VIM or $VIMRUNTIME, other than the normal 515# default, use these lines. 516#VIMRCLOC = somewhere 517#VIMRUNTIMEDIR = somewhere 518 519CFLAGS = -c /W3 /GF /nologo $(CVARS) -I. -Iproto -DHAVE_PATHDEF -DWIN32 \ 520 $(CSCOPE_DEFS) $(TERM_DEFS) $(SOUND_DEFS) $(NETBEANS_DEFS) $(CHANNEL_DEFS) \ 521 $(NBDEBUG_DEFS) $(XPM_DEFS) $(SOD_DEFS) $(SOD_INC) \ 522 $(DEFINES) -DWINVER=$(WINVER) -D_WIN32_WINNT=$(WINVER) 523 524#>>>>> end of choices 525########################################################################### 526 527DEL_TREE = rmdir /s /q 528 529INTDIR=$(OBJDIR) 530OUTDIR=$(OBJDIR) 531 532### Validate CPUNR 533!ifndef CPUNR 534# default to untargeted code 535CPUNR = any 536!elseif "$(CPUNR)" == "i386" || "$(CPUNR)" == "i486" 537# alias i386 and i486 to i586 538! message *** WARNING CPUNR=$(CPUNR) is not a valid target architecture. 539! message Windows XP is the minimum target OS, with a minimum target 540! message architecture of i586. 541! message Retargeting to i586 542CPUNR = i586 543!elseif "$(CPUNR)" == "pentium4" 544# alias pentium4 to sse2 545! message *** WARNING CPUNR=pentium4 is deprecated in favour of sse2. 546! message Retargeting to sse2. 547CPUNR = sse2 548!elseif "$(CPUNR)" != "any" && "$(CPUNR)" != "i586" && "$(CPUNR)" != "i686" && "$(CPUNR)" != "sse" && "$(CPUNR)" != "sse2" && "$(CPUNR)" != "avx" && "$(CPUNR)" != "avx2" 549! error *** ERROR Unknown target architecture "$(CPUNR)". Make aborted. 550!endif 551 552# Convert processor ID to MVC-compatible number 553!if $(MSVC_MAJOR) < 8 554! if "$(CPUNR)" == "i586" 555CPUARG = /G5 556! elseif "$(CPUNR)" == "i686" 557CPUARG = /G6 558! elseif "$(CPUNR)" == "sse" 559CPUARG = /G6 /arch:SSE 560! elseif "$(CPUNR)" == "sse2" 561CPUARG = /G7 /arch:SSE2 562! elseif "$(CPUNR)" == "avx" || "$(CPUNR)" == "avx2" 563! message AVX/AVX2 Instruction Sets are not supported by Visual C++ v$(MSVC_MAJOR) 564! message Falling back to SSE2 565CPUARG = /G7 /arch:SSE2 566! elseif "$(CPUNR)" == "any" 567CPUARG = 568! endif 569!else 570# IA32/SSE/SSE2 are only supported on x86 571! if "$(ASSEMBLY_ARCHITECTURE)" == "i386" && ("$(CPUNR)" == "i586" || "$(CPUNR)" == "i686" || "$(CPUNR)" == "any") 572# VC<11 generates fp87 code by default 573! if $(MSVC_MAJOR) < 11 574CPUARG = 575# VC>=11 needs explicit instructions to generate fp87 code 576! else 577CPUARG = /arch:IA32 578! endif 579! elseif "$(ASSEMBLY_ARCHITECTURE)" == "i386" && "$(CPUNR)" == "sse" 580CPUARG = /arch:SSE 581! elseif "$(ASSEMBLY_ARCHITECTURE)" == "i386" && "$(CPUNR)" == "sse2" 582CPUARG = /arch:SSE2 583! elseif "$(CPUNR)" == "avx" 584# AVX is only supported by VC 10 and up 585! if $(MSVC_MAJOR) < 10 586! message AVX Instruction Set is not supported by Visual C++ v$(MSVC_MAJOR) 587! if "$(ASSEMBLY_ARCHITECTURE)" == "i386" 588! message Falling back to SSE2 589CPUARG = /arch:SSE2 590! else 591CPUARG = 592! endif 593! else 594CPUARG = /arch:AVX 595! endif 596! elseif "$(CPUNR)" == "avx2" 597# AVX is only supported by VC 10 and up 598! if $(MSVC_MAJOR) < 10 599! message AVX2 Instruction Set is not supported by Visual C++ v$(MSVC_MAJOR) 600! if "$(ASSEMBLY_ARCHITECTURE)" == "i386" 601! message Falling back to SSE2 602CPUARG = /arch:SSE2 603! else 604CPUARG = 605! endif 606# AVX2 is only supported by VC 12U2 and up 607# 180030501 is the full version number for Visual Studio 2013/VC 12 Update 2 608! elseif $(MSVC_FULL) < 180030501 609! message AVX2 Instruction Set is not supported by Visual C++ v$(MSVC_MAJOR)-$(MSVC_FULL) 610! message Falling back to AVX 611CPUARG = /arch:AVX 612! else 613CPUARG = /arch:AVX2 614! endif 615! endif 616!endif 617 618# Pass CPUARG to GvimExt, to avoid using version-dependent defaults 619MAKEFLAGS_GVIMEXT = $(MAKEFLAGS_GVIMEXT) CPUARG="$(CPUARG)" 620 621!if "$(VIMDLL)" == "yes" 622VIMDLLBASE = vim 623! if "$(ASSEMBLY_ARCHITECTURE)" == "i386" 624VIMDLLBASE = $(VIMDLLBASE)32 625! else 626VIMDLLBASE = $(VIMDLLBASE)64 627! endif 628! if "$(DEBUG)" == "yes" 629VIMDLLBASE = $(VIMDLLBASE)d 630! endif 631!endif 632 633LIBC = 634DEBUGINFO = /Zi 635 636# Don't use /nodefaultlib on MSVC 14 637!if $(MSVC_MAJOR) >= 14 638NODEFAULTLIB = 639!else 640NODEFAULTLIB = /nodefaultlib 641!endif 642 643# Specify source code charset to suppress warning C4819 on non-English 644# environment. Only available from MSVC 14. 645!if $(MSVC_MAJOR) >= 14 646CFLAGS = $(CFLAGS) /source-charset:utf-8 647!endif 648 649# Use multiprocess build on MSVC 10 650!if ("$(USE_MP)" == "yes") && ($(MSVC_MAJOR) >= 10) 651CFLAGS = $(CFLAGS) /MP 652!endif 653 654# VC10 or later has stdint.h. 655!if $(MSVC_MAJOR) >= 10 656CFLAGS = $(CFLAGS) -DHAVE_STDINT_H 657!endif 658 659# Static code analysis generally available starting with VS2012 (VC11) or 660# Windows SDK 7.1 (VC10) 661!if ("$(ANALYZE)" == "yes") && ($(MSVC_MAJOR) >= 10) 662CFLAGS = $(CFLAGS) /analyze 663!endif 664 665!ifdef NODEBUG 666VIM = vim 667! if "$(OPTIMIZE)" == "SPACE" 668OPTFLAG = /O1 669! elseif "$(OPTIMIZE)" == "SPEED" 670OPTFLAG = /O2 671! else # MAXSPEED 672OPTFLAG = /Ox 673! endif 674 675! if $(MSVC_MAJOR) >= 8 676# Use link time code generation if not worried about size 677! if "$(OPTIMIZE)" != "SPACE" 678OPTFLAG = $(OPTFLAG) /GL 679! endif 680! endif 681 682# (/Wp64 is deprecated in VC9 and generates an obnoxious warning.) 683! if ($(MSVC_MAJOR) == 7) || ($(MSVC_MAJOR) == 8) 684CFLAGS = $(CFLAGS) $(WP64CHECK) 685! endif 686 687CFLAGS = $(CFLAGS) $(OPTFLAG) -DNDEBUG $(CPUARG) 688RCFLAGS = $(rcflags) $(rcvars) -DNDEBUG 689! ifdef USE_MSVCRT 690CFLAGS = $(CFLAGS) /MD 691LIBC = msvcrt.lib 692! else 693LIBC = libcmt.lib 694CFLAGS = $(CFLAGS) /Zl /MT 695! endif 696!else # DEBUG 697VIM = vimd 698! if ("$(CPU)" == "i386") || ("$(CPU)" == "ix86") 699DEBUGINFO = /ZI 700! endif 701CFLAGS = $(CFLAGS) -D_DEBUG -DDEBUG /Od 702RCFLAGS = $(rcflags) $(rcvars) -D_DEBUG -DDEBUG 703# The /fixed:no is needed for Quantify. Assume not 4.? as unsupported in VC4.0. 704! if $(MSVC_MAJOR) == 4 705LIBC = 706! else 707LIBC = /fixed:no 708! endif 709! ifdef USE_MSVCRT 710CFLAGS = $(CFLAGS) /MDd 711LIBC = $(LIBC) msvcrtd.lib 712! else 713LIBC = $(LIBC) libcmtd.lib 714CFLAGS = $(CFLAGS) /Zl /MTd 715! endif 716!endif # DEBUG 717 718!if "$(CL)" == "/D_USING_V110_SDK71_" 719RCFLAGS = $(RCFLAGS) /D_USING_V110_SDK71_ 720!endif 721 722!if $(MSVC_MAJOR) >= 8 723# Visual Studio 2005 has 'deprecated' many of the standard CRT functions 724CFLAGS_DEPR = /D_CRT_SECURE_NO_DEPRECATE /D_CRT_NONSTDC_NO_DEPRECATE 725CFLAGS = $(CFLAGS) $(CFLAGS_DEPR) 726!endif 727 728!include Make_all.mak 729!include testdir\Make_all.mak 730 731INCL = vim.h alloc.h ascii.h ex_cmds.h feature.h errors.h globals.h \ 732 keymap.h macros.h option.h os_dos.h os_win32.h proto.h regexp.h \ 733 spell.h structs.h termdefs.h beval.h $(NBDEBUG_INCL) 734 735OBJ = \ 736 $(OUTDIR)\alloc.obj \ 737 $(OUTDIR)\arabic.obj \ 738 $(OUTDIR)\arglist.obj \ 739 $(OUTDIR)\autocmd.obj \ 740 $(OUTDIR)\beval.obj \ 741 $(OUTDIR)\blob.obj \ 742 $(OUTDIR)\blowfish.obj \ 743 $(OUTDIR)\buffer.obj \ 744 $(OUTDIR)\bufwrite.obj \ 745 $(OUTDIR)\change.obj \ 746 $(OUTDIR)\charset.obj \ 747 $(OUTDIR)\cindent.obj \ 748 $(OUTDIR)\clientserver.obj \ 749 $(OUTDIR)\clipboard.obj \ 750 $(OUTDIR)\cmdexpand.obj \ 751 $(OUTDIR)\cmdhist.obj \ 752 $(OUTDIR)\crypt.obj \ 753 $(OUTDIR)\crypt_zip.obj \ 754 $(OUTDIR)\debugger.obj \ 755 $(OUTDIR)\dict.obj \ 756 $(OUTDIR)\diff.obj \ 757 $(OUTDIR)\digraph.obj \ 758 $(OUTDIR)\drawline.obj \ 759 $(OUTDIR)\drawscreen.obj \ 760 $(OUTDIR)\edit.obj \ 761 $(OUTDIR)\eval.obj \ 762 $(OUTDIR)\evalbuffer.obj \ 763 $(OUTDIR)\evalfunc.obj \ 764 $(OUTDIR)\evalvars.obj \ 765 $(OUTDIR)\evalwindow.obj \ 766 $(OUTDIR)\ex_cmds.obj \ 767 $(OUTDIR)\ex_cmds2.obj \ 768 $(OUTDIR)\ex_docmd.obj \ 769 $(OUTDIR)\ex_eval.obj \ 770 $(OUTDIR)\ex_getln.obj \ 771 $(OUTDIR)\fileio.obj \ 772 $(OUTDIR)\filepath.obj \ 773 $(OUTDIR)\findfile.obj \ 774 $(OUTDIR)\float.obj \ 775 $(OUTDIR)\fold.obj \ 776 $(OUTDIR)\getchar.obj \ 777 $(OUTDIR)\gui_xim.obj \ 778 $(OUTDIR)\hardcopy.obj \ 779 $(OUTDIR)\hashtab.obj \ 780 $(OUTDIR)\help.obj \ 781 $(OUTDIR)\highlight.obj \ 782 $(OBJDIR)\if_cscope.obj \ 783 $(OUTDIR)\indent.obj \ 784 $(OUTDIR)\insexpand.obj \ 785 $(OUTDIR)\json.obj \ 786 $(OUTDIR)\list.obj \ 787 $(OUTDIR)\locale.obj \ 788 $(OUTDIR)\main.obj \ 789 $(OUTDIR)\map.obj \ 790 $(OUTDIR)\mark.obj \ 791 $(OUTDIR)\match.obj \ 792 $(OUTDIR)\mbyte.obj \ 793 $(OUTDIR)\memfile.obj \ 794 $(OUTDIR)\memline.obj \ 795 $(OUTDIR)\menu.obj \ 796 $(OUTDIR)\message.obj \ 797 $(OUTDIR)\misc1.obj \ 798 $(OUTDIR)\misc2.obj \ 799 $(OUTDIR)\mouse.obj \ 800 $(OUTDIR)\move.obj \ 801 $(OUTDIR)\normal.obj \ 802 $(OUTDIR)\ops.obj \ 803 $(OUTDIR)\option.obj \ 804 $(OUTDIR)\optionstr.obj \ 805 $(OUTDIR)\os_mswin.obj \ 806 $(OUTDIR)\os_win32.obj \ 807 $(OUTDIR)\pathdef.obj \ 808 $(OUTDIR)\popupmenu.obj \ 809 $(OUTDIR)\popupwin.obj \ 810 $(OUTDIR)\profiler.obj \ 811 $(OUTDIR)\quickfix.obj \ 812 $(OUTDIR)\regexp.obj \ 813 $(OUTDIR)\register.obj \ 814 $(OUTDIR)\scriptfile.obj \ 815 $(OUTDIR)\screen.obj \ 816 $(OUTDIR)\search.obj \ 817 $(OUTDIR)\session.obj \ 818 $(OUTDIR)\sha256.obj \ 819 $(OUTDIR)\sign.obj \ 820 $(OUTDIR)\spell.obj \ 821 $(OUTDIR)\spellfile.obj \ 822 $(OUTDIR)\spellsuggest.obj \ 823 $(OUTDIR)\strings.obj \ 824 $(OUTDIR)\syntax.obj \ 825 $(OUTDIR)\tag.obj \ 826 $(OUTDIR)\term.obj \ 827 $(OUTDIR)\testing.obj \ 828 $(OUTDIR)\textformat.obj \ 829 $(OUTDIR)\textobject.obj \ 830 $(OUTDIR)\textprop.obj \ 831 $(OUTDIR)\time.obj \ 832 $(OUTDIR)\typval.obj \ 833 $(OUTDIR)\ui.obj \ 834 $(OUTDIR)\undo.obj \ 835 $(OUTDIR)\usercmd.obj \ 836 $(OUTDIR)\userfunc.obj \ 837 $(OUTDIR)\vim9compile.obj \ 838 $(OUTDIR)\vim9execute.obj \ 839 $(OUTDIR)\vim9script.obj \ 840 $(OUTDIR)\vim9type.obj \ 841 $(OUTDIR)\viminfo.obj \ 842 $(OUTDIR)\winclip.obj \ 843 $(OUTDIR)\window.obj \ 844 845!if "$(VIMDLL)" == "yes" 846OBJ = $(OBJ) $(OUTDIR)\os_w32dll.obj $(OUTDIR)\vimd.res 847EXEOBJC = $(OUTDIR)\os_w32exec.obj $(OUTDIR)\vimc.res 848EXEOBJG = $(OUTDIR)\os_w32exeg.obj $(OUTDIR)\vimg.res 849CFLAGS = $(CFLAGS) -DVIMDLL 850!else 851OBJ = $(OBJ) $(OUTDIR)\os_w32exe.obj $(OUTDIR)\vim.res 852!endif 853 854!if "$(OLE)" == "yes" 855CFLAGS = $(CFLAGS) -DFEAT_OLE 856RCFLAGS = $(RCFLAGS) -DFEAT_OLE 857OLE_OBJ = $(OUTDIR)\if_ole.obj 858OLE_IDL = if_ole.idl 859OLE_LIB = oleaut32.lib 860!endif 861 862!ifndef IME 863IME = yes 864!endif 865!if "$(IME)" == "yes" 866CFLAGS = $(CFLAGS) -DFEAT_MBYTE_IME 867! ifndef DYNAMIC_IME 868DYNAMIC_IME = yes 869! endif 870! if "$(DYNAMIC_IME)" == "yes" 871CFLAGS = $(CFLAGS) -DDYNAMIC_IME 872! else 873IME_LIB = imm32.lib 874! endif 875!endif 876 877!if "$(GIME)" == "yes" 878CFLAGS = $(CFLAGS) -DGLOBAL_IME 879OBJ = $(OBJ) $(OUTDIR)\dimm_i.obj $(OUTDIR)\glbl_ime.obj 880!endif 881 882!if "$(GUI)" == "yes" 883SUBSYSTEM = windows 884CFLAGS = $(CFLAGS) -DFEAT_GUI_MSWIN 885RCFLAGS = $(RCFLAGS) -DFEAT_GUI_MSWIN 886! if "$(VIMDLL)" == "yes" 887SUBSYSTEM_CON = console 888GVIM = g$(VIM) 889CUI_INCL = iscygpty.h 890CUI_OBJ = $(OUTDIR)\iscygpty.obj 891RCFLAGS = $(RCFLAGS) -DVIMDLL 892! else 893VIM = g$(VIM) 894! endif 895GUI_INCL = \ 896 gui.h 897GUI_OBJ = \ 898 $(OUTDIR)\gui.obj \ 899 $(OUTDIR)\gui_beval.obj \ 900 $(OUTDIR)\gui_w32.obj 901GUI_LIB = \ 902 gdi32.lib version.lib $(IME_LIB) \ 903 winspool.lib comctl32.lib advapi32.lib shell32.lib netapi32.lib \ 904 /machine:$(CPU) 905!else 906SUBSYSTEM = console 907CUI_INCL = iscygpty.h 908CUI_OBJ = $(OUTDIR)\iscygpty.obj 909!endif 910SUBSYSTEM_TOOLS = console 911 912XDIFF_OBJ = $(OBJDIR)/xdiffi.obj \ 913 $(OBJDIR)/xemit.obj \ 914 $(OBJDIR)/xprepare.obj \ 915 $(OBJDIR)/xutils.obj \ 916 $(OBJDIR)/xhistogram.obj \ 917 $(OBJDIR)/xpatience.obj 918 919XDIFF_DEPS = \ 920 xdiff/xdiff.h \ 921 xdiff/xdiffi.h \ 922 xdiff/xemit.h \ 923 xdiff/xinclude.h \ 924 xdiff/xmacros.h \ 925 xdiff/xprepare.h \ 926 xdiff/xtypes.h \ 927 xdiff/xutils.h 928 929 930!if "$(SUBSYSTEM_VER)" != "" 931SUBSYSTEM = $(SUBSYSTEM),$(SUBSYSTEM_VER) 932SUBSYSTEM_TOOLS = $(SUBSYSTEM_TOOLS),$(SUBSYSTEM_VER) 933! if "$(VIMDLL)" == "yes" 934SUBSYSTEM_CON = $(SUBSYSTEM_CON),$(SUBSYSTEM_VER) 935! endif 936# Pass SUBSYSTEM_VER to GvimExt and other tools 937MAKEFLAGS_GVIMEXT = $(MAKEFLAGS_GVIMEXT) SUBSYSTEM_VER=$(SUBSYSTEM_VER) 938MAKEFLAGS_TOOLS = $(MAKEFLAGS_TOOLS) SUBSYSTEM_VER=$(SUBSYSTEM_VER) 939!endif 940 941!if "$(GUI)" == "yes" && "$(DIRECTX)" == "yes" 942CFLAGS = $(CFLAGS) $(DIRECTX_DEFS) 943GUI_INCL = $(GUI_INCL) $(DIRECTX_INCL) 944GUI_OBJ = $(GUI_OBJ) $(DIRECTX_OBJ) 945!endif 946 947# iconv.dll library (dynamically loaded) 948!ifndef ICONV 949ICONV = yes 950!endif 951!if "$(ICONV)" == "yes" 952CFLAGS = $(CFLAGS) -DDYNAMIC_ICONV 953!endif 954 955# libintl.dll library 956!ifndef GETTEXT 957GETTEXT = yes 958!endif 959!if "$(GETTEXT)" == "yes" 960CFLAGS = $(CFLAGS) -DDYNAMIC_GETTEXT 961!endif 962 963# TCL interface 964!ifdef TCL 965! ifndef TCL_VER 966TCL_VER = 86 967TCL_VER_LONG = 8.6 968! endif 969! message Tcl requested (version $(TCL_VER)) - root dir is "$(TCL)" 970! if "$(DYNAMIC_TCL)" == "yes" 971! message Tcl DLL will be loaded dynamically 972! ifndef TCL_DLL 973TCL_DLL = tcl$(TCL_VER).dll 974! endif 975CFLAGS = $(CFLAGS) -DFEAT_TCL -DDYNAMIC_TCL -DDYNAMIC_TCL_DLL=\"$(TCL_DLL)\" \ 976 -DDYNAMIC_TCL_VER=\"$(TCL_VER_LONG)\" 977TCL_OBJ = $(OUTDIR)\if_tcl.obj 978TCL_INC = /I "$(TCL)\Include" /I "$(TCL)" 979TCL_LIB = "$(TCL)\lib\tclstub$(TCL_VER).lib" 980! else 981CFLAGS = $(CFLAGS) -DFEAT_TCL 982TCL_OBJ = $(OUTDIR)\if_tcl.obj 983TCL_INC = /I "$(TCL)\Include" /I "$(TCL)" 984TCL_LIB = $(TCL)\lib\tcl$(TCL_VER)vc.lib 985! endif 986!endif 987 988# Lua interface 989!ifdef LUA 990! ifndef LUA_VER 991LUA_VER = 53 992! endif 993! message Lua requested (version $(LUA_VER)) - root dir is "$(LUA)" 994! if "$(DYNAMIC_LUA)" == "yes" 995! message Lua DLL will be loaded dynamically 996! endif 997CFLAGS = $(CFLAGS) -DFEAT_LUA 998LUA_OBJ = $(OUTDIR)\if_lua.obj 999LUA_INC = /I "$(LUA)\include" /I "$(LUA)" 1000! if "$(DYNAMIC_LUA)" == "yes" 1001CFLAGS = $(CFLAGS) -DDYNAMIC_LUA \ 1002 -DDYNAMIC_LUA_DLL=\"lua$(LUA_VER).dll\" 1003LUA_LIB = /nodefaultlib:lua$(LUA_VER).lib 1004! else 1005LUA_LIB = "$(LUA)\lib\lua$(LUA_VER).lib" 1006! endif 1007!endif 1008 1009!ifdef PYTHON 1010! ifdef PYTHON3 1011DYNAMIC_PYTHON=yes 1012DYNAMIC_PYTHON3=yes 1013! endif 1014!endif 1015 1016# PYTHON interface 1017!ifdef PYTHON 1018! ifndef PYTHON_VER 1019PYTHON_VER = 27 1020! endif 1021! message Python requested (version $(PYTHON_VER)) - root dir is "$(PYTHON)" 1022! if "$(DYNAMIC_PYTHON)" == "yes" 1023! message Python DLL will be loaded dynamically 1024! endif 1025CFLAGS = $(CFLAGS) -DFEAT_PYTHON 1026PYTHON_OBJ = $(OUTDIR)\if_python.obj 1027PYTHON_INC = /I "$(PYTHON)\Include" /I "$(PYTHON)\PC" 1028! if "$(DYNAMIC_PYTHON)" == "yes" 1029CFLAGS = $(CFLAGS) -DDYNAMIC_PYTHON \ 1030 -DDYNAMIC_PYTHON_DLL=\"python$(PYTHON_VER).dll\" 1031PYTHON_LIB = /nodefaultlib:python$(PYTHON_VER).lib 1032! else 1033PYTHON_LIB = $(PYTHON)\libs\python$(PYTHON_VER).lib 1034! endif 1035!endif 1036 1037# PYTHON3 interface 1038!ifdef PYTHON3 1039! ifndef PYTHON3_VER 1040PYTHON3_VER = 36 1041! endif 1042! ifndef DYNAMIC_PYTHON3_DLL 1043DYNAMIC_PYTHON3_DLL = python$(PYTHON3_VER).dll 1044! endif 1045! message Python3 requested (version $(PYTHON3_VER)) - root dir is "$(PYTHON3)" 1046! if "$(DYNAMIC_PYTHON3)" == "yes" 1047! message Python3 DLL will be loaded dynamically 1048! endif 1049CFLAGS = $(CFLAGS) -DFEAT_PYTHON3 1050PYTHON3_OBJ = $(OUTDIR)\if_python3.obj 1051PYTHON3_INC = /I "$(PYTHON3)\Include" /I "$(PYTHON3)\PC" 1052! if "$(DYNAMIC_PYTHON3)" == "yes" 1053CFLAGS = $(CFLAGS) -DDYNAMIC_PYTHON3 \ 1054 -DDYNAMIC_PYTHON3_DLL=\"$(DYNAMIC_PYTHON3_DLL)\" 1055PYTHON3_LIB = /nodefaultlib:python$(PYTHON3_VER).lib 1056! else 1057CFLAGS = $(CFLAGS) -DPYTHON3_DLL=\"$(DYNAMIC_PYTHON3_DLL)\" 1058PYTHON3_LIB = $(PYTHON3)\libs\python$(PYTHON3_VER).lib 1059! endif 1060!endif 1061 1062# MzScheme interface 1063!ifdef MZSCHEME 1064! message MzScheme requested - root dir is "$(MZSCHEME)" 1065! ifndef MZSCHEME_VER 1066MZSCHEME_VER = 3m_a0solc 1067! endif 1068! ifndef MZSCHEME_COLLECTS 1069MZSCHEME_COLLECTS=$(MZSCHEME)\collects 1070! endif 1071CFLAGS = $(CFLAGS) -DFEAT_MZSCHEME -I "$(MZSCHEME)\include" 1072! if EXIST("$(MZSCHEME)\lib\msvc\libmzsch$(MZSCHEME_VER).lib") 1073MZSCHEME_MAIN_LIB=mzsch 1074! else 1075MZSCHEME_MAIN_LIB=racket 1076! endif 1077! if (EXIST("$(MZSCHEME)\lib\lib$(MZSCHEME_MAIN_LIB)$(MZSCHEME_VER).dll") \ 1078 && !EXIST("$(MZSCHEME)\lib\libmzgc$(MZSCHEME_VER).dll")) \ 1079 || (EXIST("$(MZSCHEME)\lib\msvc\lib$(MZSCHEME_MAIN_LIB)$(MZSCHEME_VER).lib") \ 1080 && !EXIST("$(MZSCHEME)\lib\msvc\libmzgc$(MZSCHEME_VER).lib")) 1081! message Building with Precise GC 1082MZSCHEME_PRECISE_GC = yes 1083CFLAGS = $(CFLAGS) -DMZ_PRECISE_GC 1084! endif 1085! if "$(DYNAMIC_MZSCHEME)" == "yes" 1086! message MzScheme DLLs will be loaded dynamically 1087CFLAGS = $(CFLAGS) -DDYNAMIC_MZSCHEME 1088! if "$(MZSCHEME_PRECISE_GC)" == "yes" 1089# Precise GC does not use separate dll 1090CFLAGS = $(CFLAGS) \ 1091 -DDYNAMIC_MZSCH_DLL=\"lib$(MZSCHEME_MAIN_LIB)$(MZSCHEME_VER).dll\" \ 1092 -DDYNAMIC_MZGC_DLL=\"lib$(MZSCHEME_MAIN_LIB)$(MZSCHEME_VER).dll\" 1093! else 1094CFLAGS = $(CFLAGS) \ 1095 -DDYNAMIC_MZSCH_DLL=\"lib$(MZSCHEME_MAIN_LIB)$(MZSCHEME_VER).dll\" \ 1096 -DDYNAMIC_MZGC_DLL=\"libmzgc$(MZSCHEME_VER).dll\" 1097! endif 1098! else 1099! if "$(MZSCHEME_DEBUG)" == "yes" 1100CFLAGS = $(CFLAGS) -DMZSCHEME_FORCE_GC 1101! endif 1102! if "$(MZSCHEME_PRECISE_GC)" == "yes" 1103# Precise GC does not use separate dll 1104! if EXIST("$(MZSCHEME)\lib\lib$(MZSCHEME_MAIN_LIB)$(MZSCHEME_VER).def") 1105# create .lib from .def 1106MZSCHEME_LIB = lib$(MZSCHEME_MAIN_LIB)$(MZSCHEME_VER).lib 1107MZSCHEME_EXTRA_DEP = lib$(MZSCHEME_MAIN_LIB)$(MZSCHEME_VER).lib 1108! else 1109MZSCHEME_LIB = "$(MZSCHEME)\lib\msvc\lib$(MZSCHEME_MAIN_LIB)$(MZSCHEME_VER).lib" 1110! endif 1111! else 1112MZSCHEME_LIB = "$(MZSCHEME)\lib\msvc\libmzgc$(MZSCHEME_VER).lib" \ 1113 "$(MZSCHEME)\lib\msvc\lib$(MZSCHEME_MAIN_LIB)$(MZSCHEME_VER).lib" 1114! endif 1115! endif 1116MZSCHEME_OBJ = $(OUTDIR)\if_mzsch.obj 1117# increase stack size 1118MZSCHEME_LIB = $(MZSCHEME_LIB) /STACK:8388608 1119MZSCHEME_INCL = if_mzsch.h 1120!endif 1121 1122# Perl interface 1123!ifdef PERL 1124! ifndef PERL_VER 1125PERL_VER = 524 1126! endif 1127! message Perl requested (version $(PERL_VER)) - root dir is "$(PERL)" 1128! if "$(DYNAMIC_PERL)" == "yes" 1129! if $(PERL_VER) >= 56 1130! message Perl DLL will be loaded dynamically 1131! else 1132! message Dynamic loading is not supported for Perl versions earlier than 5.6.0 1133! message Reverting to static loading... 1134! undef DYNAMIC_PERL 1135! endif 1136! endif 1137 1138# Is Perl installed in architecture-specific directories? 1139! if exist($(PERL)\Bin\MSWin32-x86) 1140PERL_ARCH = \MSWin32-x86 1141! endif 1142 1143PERL_INCDIR = $(PERL)\Lib$(PERL_ARCH)\Core 1144 1145# Version-dependent stuff 1146! if $(PERL_VER) == 55 1147PERL_LIB = $(PERL_INCDIR)\perl.lib 1148! else 1149PERL_DLL = perl$(PERL_VER).dll 1150! if exist($(PERL_INCDIR)\perl$(PERL_VER).lib) 1151PERL_LIB = $(PERL_INCDIR)\perl$(PERL_VER).lib 1152! else 1153# For ActivePerl 5.18 and later 1154PERL_LIB = $(PERL_INCDIR)\libperl$(PERL_VER).a 1155! endif 1156! endif 1157 1158CFLAGS = $(CFLAGS) -DFEAT_PERL -DPERL_IMPLICIT_CONTEXT -DPERL_IMPLICIT_SYS 1159 1160# Do we want to load Perl dynamically? 1161! if "$(DYNAMIC_PERL)" == "yes" 1162CFLAGS = $(CFLAGS) -DDYNAMIC_PERL -DDYNAMIC_PERL_DLL=\"$(PERL_DLL)\" 1163! undef PERL_LIB 1164! endif 1165 1166PERL_EXE = $(PERL)\Bin$(PERL_ARCH)\perl 1167PERL_INC = /I $(PERL_INCDIR) 1168! if $(MSVC_MAJOR) <= 11 1169# ActivePerl 5.20+ requires stdbool.h but VC2012 or earlier doesn't have it. 1170# Use a stub stdbool.h. 1171PERL_INC = $(PERL_INC) /I if_perl_msvc 1172! endif 1173PERL_OBJ = $(OUTDIR)\if_perl.obj $(OUTDIR)\if_perlsfio.obj 1174XSUBPP = $(PERL)\lib\ExtUtils\xsubpp 1175! if exist($(XSUBPP)) 1176XSUBPP = $(PERL_EXE) $(XSUBPP) 1177! else 1178XSUBPP = xsubpp 1179! endif 1180XSUBPP_TYPEMAP = $(PERL)\lib\ExtUtils\typemap 1181 1182!endif 1183 1184# 1185# Support Ruby interface 1186# 1187!ifdef RUBY 1188# Set default value 1189! ifndef RUBY_VER 1190RUBY_VER = 22 1191! endif 1192! ifndef RUBY_VER_LONG 1193RUBY_VER_LONG = 2.2.0 1194! endif 1195! ifndef RUBY_API_VER_LONG 1196RUBY_API_VER_LONG = $(RUBY_VER_LONG) 1197! endif 1198! ifndef RUBY_API_VER 1199RUBY_API_VER = $(RUBY_API_VER_LONG:.=) 1200! endif 1201 1202! if $(RUBY_VER) >= 18 1203 1204! ifndef RUBY_PLATFORM 1205! if "$(CPU)" == "i386" 1206RUBY_PLATFORM = i386-mswin32 1207! else # CPU 1208RUBY_PLATFORM = x64-mswin64 1209! endif # CPU 1210! if $(MSVCRT_VER) >= 70 && $(RUBY_VER) > 19 1211RUBY_PLATFORM = $(RUBY_PLATFORM)_$(MSVCRT_VER) 1212! endif # MSVCRT_VER 1213! endif # RUBY_PLATFORM 1214 1215! ifndef RUBY_INSTALL_NAME 1216! ifndef RUBY_MSVCRT_NAME 1217# Base name of msvcrXX.dll which is used by ruby's dll. 1218RUBY_MSVCRT_NAME = $(MSVCRT_NAME) 1219! endif # RUBY_MSVCRT_NAME 1220! if "$(CPU)" == "i386" 1221RUBY_INSTALL_NAME = $(RUBY_MSVCRT_NAME)-ruby$(RUBY_API_VER) 1222! else # CPU 1223RUBY_INSTALL_NAME = x64-$(RUBY_MSVCRT_NAME)-ruby$(RUBY_API_VER) 1224! endif # CPU 1225! endif # RUBY_INSTALL_NAME 1226 1227! else # $(RUBY_VER) >= 18 1228 1229! ifndef RUBY_PLATFORM 1230RUBY_PLATFORM = i586-mswin32 1231! endif 1232! ifndef RUBY_INSTALL_NAME 1233RUBY_INSTALL_NAME = mswin32-ruby$(RUBY_API_VER) 1234! endif 1235 1236! endif # $(RUBY_VER) >= 18 1237 1238! message Ruby requested (version $(RUBY_VER)) - root dir is "$(RUBY)" 1239CFLAGS = $(CFLAGS) -DFEAT_RUBY 1240RUBY_OBJ = $(OUTDIR)\if_ruby.obj 1241! if $(RUBY_VER) >= 19 1242RUBY_INC = /I "$(RUBY)\include\ruby-$(RUBY_API_VER_LONG)" /I "$(RUBY)\include\ruby-$(RUBY_API_VER_LONG)\$(RUBY_PLATFORM)" 1243! else 1244RUBY_INC = /I "$(RUBY)\lib\ruby\$(RUBY_API_VER_LONG)\$(RUBY_PLATFORM)" 1245! endif 1246RUBY_LIB = $(RUBY)\lib\$(RUBY_INSTALL_NAME).lib 1247# Do we want to load Ruby dynamically? 1248! if "$(DYNAMIC_RUBY)" == "yes" 1249! message Ruby DLL will be loaded dynamically 1250CFLAGS = $(CFLAGS) -DDYNAMIC_RUBY \ 1251 -DDYNAMIC_RUBY_DLL=\"$(RUBY_INSTALL_NAME).dll\" 1252! undef RUBY_LIB 1253! endif 1254CFLAGS = $(CFLAGS) -DRUBY_VERSION=$(RUBY_VER) 1255!endif # RUBY 1256 1257# 1258# Support PostScript printing 1259# 1260!if "$(POSTSCRIPT)" == "yes" 1261CFLAGS = $(CFLAGS) -DMSWINPS 1262!endif # POSTSCRIPT 1263 1264# 1265# FEATURES: TINY, SMALL, NORMAL, BIG or HUGE 1266# 1267CFLAGS = $(CFLAGS) -DFEAT_$(FEATURES) 1268 1269# 1270# MODIFIED_BY - Name of who modified a release version 1271# 1272!if "$(MODIFIED_BY)" != "" 1273CFLAGS = $(CFLAGS) -DMODIFIED_BY=\"$(MODIFIED_BY)\" 1274!endif 1275 1276# 1277# Always generate the .pdb file, so that we get debug symbols that can be used 1278# on a crash (doesn't add overhead to the executable). 1279# Generate edit-and-continue debug info when no optimization - allows to 1280# debug more conveniently (able to look at variables which are in registers) 1281# 1282CFLAGS = $(CFLAGS) /Fd$(OUTDIR)/ $(DEBUGINFO) 1283!if "$(VIMDLL)" == "yes" 1284LINK_PDB = /PDB:$(VIMDLLBASE).pdb -debug 1285!else 1286LINK_PDB = /PDB:$(VIM).pdb -debug 1287!endif 1288 1289# 1290# End extra feature include 1291# 1292!message 1293 1294# CFLAGS with /Fo$(OUTDIR)/ 1295CFLAGS_OUTDIR=$(CFLAGS) /Fo$(OUTDIR)/ 1296 1297# Add /opt:ref to remove unreferenced functions and data even when /DEBUG is 1298# added. 1299conflags = /nologo /opt:ref 1300 1301PATHDEF_SRC = $(OUTDIR)\pathdef.c 1302 1303!IF "$(MAP)" == "yes" 1304# "/map" is for debugging 1305conflags = $(conflags) /map 1306!ELSEIF "$(MAP)" == "lines" 1307# "/mapinfo:lines" is for debugging, only works for VC6 and later 1308conflags = $(conflags) /map /mapinfo:lines 1309!ENDIF 1310 1311LINKARGS1 = $(linkdebug) $(conflags) 1312LINKARGS2 = $(CON_LIB) $(GUI_LIB) $(NODEFAULTLIB) $(LIBC) $(OLE_LIB) user32.lib \ 1313 $(LUA_LIB) $(MZSCHEME_LIB) $(PERL_LIB) $(PYTHON_LIB) $(PYTHON3_LIB) $(RUBY_LIB) \ 1314 $(TCL_LIB) $(SOUND_LIB) $(NETBEANS_LIB) $(XPM_LIB) $(SOD_LIB) $(LINK_PDB) 1315 1316# Report link time code generation progress if used. 1317!ifdef NODEBUG 1318! if $(MSVC_MAJOR) >= 8 1319! if "$(OPTIMIZE)" != "SPACE" 1320LINKARGS1 = $(LINKARGS1) /LTCG:STATUS 1321! endif 1322! endif 1323!endif 1324 1325!if $(MSVC_MAJOR) >= 11 && "$(CPU)" == "AMD64" && "$(GUI)" == "yes" 1326# This option is required for VC2012 or later so that 64-bit gvim can 1327# accept D&D from 32-bit applications. NOTE: This disables 64-bit ASLR, 1328# therefore the security level becomes as same as VC2010. 1329LINKARGS1 = $(LINKARGS1) /HIGHENTROPYVA:NO 1330!endif 1331 1332!if "$(VIMDLL)" == "yes" 1333MAIN_TARGET = $(GVIM).exe $(VIM).exe $(VIMDLLBASE).dll 1334!else 1335MAIN_TARGET = $(VIM).exe 1336!endif 1337 1338# Target to run individual tests. 1339VIMTESTTARGET = $(VIM).exe 1340 1341all: $(MAIN_TARGET) \ 1342 vimrun.exe \ 1343 install.exe \ 1344 uninstall.exe \ 1345 xxd/xxd.exe \ 1346 tee/tee.exe \ 1347 GvimExt/gvimext.dll 1348 1349# To get around the command line limit: Make use of nmake's response files to 1350# capture the arguments for $(link) in a file using the @<<ARGS<< syntax. 1351 1352!if "$(VIMDLL)" == "yes" 1353 1354$(VIMDLLBASE).dll: $(OUTDIR) $(OBJ) $(XDIFF_OBJ) $(GUI_OBJ) $(CUI_OBJ) $(OLE_OBJ) $(OLE_IDL) $(MZSCHEME_OBJ) \ 1355 $(LUA_OBJ) $(PERL_OBJ) $(PYTHON_OBJ) $(PYTHON3_OBJ) $(RUBY_OBJ) $(TCL_OBJ) \ 1356 $(TERM_OBJ) $(SOUND_OBJ) $(NETBEANS_OBJ) $(CHANNEL_OBJ) $(XPM_OBJ) \ 1357 version.c version.h 1358 $(CC) $(CFLAGS_OUTDIR) version.c 1359 $(link) @<< 1360$(LINKARGS1) /dll -out:$(VIMDLLBASE).dll $(OBJ) $(XDIFF_OBJ) $(GUI_OBJ) $(CUI_OBJ) $(OLE_OBJ) 1361$(LUA_OBJ) $(MZSCHEME_OBJ) $(PERL_OBJ) $(PYTHON_OBJ) $(PYTHON3_OBJ) $(RUBY_OBJ) 1362$(TCL_OBJ) $(TERM_OBJ) $(SOUND_OBJ) $(NETBEANS_OBJ) $(CHANNEL_OBJ) 1363$(XPM_OBJ) $(OUTDIR)\version.obj $(LINKARGS2) 1364<< 1365 1366$(GVIM).exe: $(OUTDIR) $(EXEOBJG) $(VIMDLLBASE).dll 1367 $(link) $(LINKARGS1) /subsystem:$(SUBSYSTEM) -out:$(GVIM).exe $(EXEOBJG) $(VIMDLLBASE).lib $(LIBC) 1368 if exist $(GVIM).exe.manifest mt.exe -nologo -manifest $(GVIM).exe.manifest -updateresource:$(GVIM).exe;1 1369 1370$(VIM).exe: $(OUTDIR) $(EXEOBJC) $(VIMDLLBASE).dll 1371 $(link) $(LINKARGS1) /subsystem:$(SUBSYSTEM_CON) -out:$(VIM).exe $(EXEOBJC) $(VIMDLLBASE).lib $(LIBC) 1372 if exist $(VIM).exe.manifest mt.exe -nologo -manifest $(VIM).exe.manifest -updateresource:$(VIM).exe;1 1373 1374!else 1375 1376$(VIM).exe: $(OUTDIR) $(OBJ) $(XDIFF_OBJ) $(GUI_OBJ) $(CUI_OBJ) $(OLE_OBJ) $(OLE_IDL) $(MZSCHEME_OBJ) \ 1377 $(LUA_OBJ) $(PERL_OBJ) $(PYTHON_OBJ) $(PYTHON3_OBJ) $(RUBY_OBJ) $(TCL_OBJ) \ 1378 $(TERM_OBJ) $(SOUND_OBJ) $(NETBEANS_OBJ) $(CHANNEL_OBJ) $(XPM_OBJ) \ 1379 version.c version.h 1380 $(CC) $(CFLAGS_OUTDIR) version.c 1381 $(link) @<< 1382$(LINKARGS1) /subsystem:$(SUBSYSTEM) -out:$(VIM).exe $(OBJ) $(XDIFF_OBJ) $(GUI_OBJ) $(CUI_OBJ) $(OLE_OBJ) 1383$(LUA_OBJ) $(MZSCHEME_OBJ) $(PERL_OBJ) $(PYTHON_OBJ) $(PYTHON3_OBJ) $(RUBY_OBJ) 1384$(TCL_OBJ) $(TERM_OBJ) $(SOUND_OBJ) $(NETBEANS_OBJ) $(CHANNEL_OBJ) 1385$(XPM_OBJ) $(OUTDIR)\version.obj $(LINKARGS2) 1386<< 1387 if exist $(VIM).exe.manifest mt.exe -nologo -manifest $(VIM).exe.manifest -updateresource:$(VIM).exe;1 1388 1389!endif 1390 1391$(VIM): $(VIM).exe 1392 1393$(OUTDIR): 1394 if not exist $(OUTDIR)/nul mkdir $(OUTDIR) 1395 1396CFLAGS_INST = /nologo /O2 -DNDEBUG -DWIN32 -DWINVER=$(WINVER) -D_WIN32_WINNT=$(WINVER) $(CFLAGS_DEPR) 1397 1398install.exe: dosinst.c dosinst.h version.h 1399 $(CC) $(CFLAGS_INST) dosinst.c kernel32.lib shell32.lib \ 1400 user32.lib ole32.lib advapi32.lib uuid.lib \ 1401 -link -subsystem:$(SUBSYSTEM_TOOLS) 1402 - if exist install.exe del install.exe 1403 ren dosinst.exe install.exe 1404 1405uninstall.exe: uninstall.c dosinst.h version.h 1406 $(CC) $(CFLAGS_INST) uninstall.c shell32.lib advapi32.lib \ 1407 -link -subsystem:$(SUBSYSTEM_TOOLS) 1408 1409vimrun.exe: vimrun.c 1410 $(CC) /nologo -DNDEBUG vimrun.c -link -subsystem:$(SUBSYSTEM_TOOLS) 1411 1412xxd/xxd.exe: xxd/xxd.c 1413 cd xxd 1414 $(MAKE) /NOLOGO -f Make_mvc.mak $(MAKEFLAGS_TOOLS) 1415 cd .. 1416 1417tee/tee.exe: tee/tee.c 1418 cd tee 1419 $(MAKE) /NOLOGO -f Make_mvc.mak $(MAKEFLAGS_TOOLS) 1420 cd .. 1421 1422GvimExt/gvimext.dll: GvimExt/gvimext.cpp GvimExt/gvimext.rc GvimExt/gvimext.h 1423 cd GvimExt 1424 $(MAKE) /NOLOGO -f Makefile $(MAKEFLAGS_GVIMEXT) 1425 cd .. 1426 1427 1428tags: notags 1429 $(CTAGS) $(TAGS_FILES) 1430 1431notags: 1432 - if exist tags del tags 1433 1434clean: testclean 1435 - if exist $(OUTDIR)/nul $(DEL_TREE) $(OUTDIR) 1436 - if exist *.obj del *.obj 1437 - if exist $(VIM).exe del $(VIM).exe 1438 - if exist $(VIM).ilk del $(VIM).ilk 1439 - if exist $(VIM).pdb del $(VIM).pdb 1440 - if exist $(VIM).map del $(VIM).map 1441 - if exist $(VIM).ncb del $(VIM).ncb 1442!if "$(VIMDLL)" == "yes" 1443 - if exist $(GVIM).exe del $(GVIM).exe 1444 - if exist $(GVIM).map del $(GVIM).map 1445 - if exist $(VIMDLLBASE).dll del $(VIMDLLBASE).dll 1446 - if exist $(VIMDLLBASE).lib del $(VIMDLLBASE).lib 1447 - if exist $(VIMDLLBASE).exp del $(VIMDLLBASE).exp 1448 - if exist $(VIMDLLBASE).pdb del $(VIMDLLBASE).pdb 1449 - if exist $(VIMDLLBASE).map del $(VIMDLLBASE).map 1450!endif 1451 - if exist vimrun.exe del vimrun.exe 1452 - if exist install.exe del install.exe 1453 - if exist uninstall.exe del uninstall.exe 1454 - if exist if_perl.c del if_perl.c 1455 - if exist auto\if_perl.c del auto\if_perl.c 1456 - if exist dimm.h del dimm.h 1457 - if exist dimm_i.c del dimm_i.c 1458 - if exist dimm.tlb del dimm.tlb 1459 - if exist dosinst.exe del dosinst.exe 1460 cd xxd 1461 $(MAKE) /NOLOGO -f Make_mvc.mak clean 1462 cd .. 1463 cd tee 1464 $(MAKE) /NOLOGO -f Make_mvc.mak clean 1465 cd .. 1466 cd GvimExt 1467 $(MAKE) /NOLOGO -f Makefile clean 1468 cd .. 1469 1470# Run vim script to generate the Ex command lookup table. 1471# This only needs to be run when a command name has been added or changed. 1472# If this fails because you don't have Vim yet, first build and install Vim 1473# without changes. 1474cmdidxs: ex_cmds.h 1475 vim --clean -X --not-a-term -u create_cmdidxs.vim 1476 1477test: 1478 cd testdir 1479 $(MAKE) /NOLOGO -f Make_dos.mak 1480 cd .. 1481 1482testgvim: 1483 cd testdir 1484 $(MAKE) /NOLOGO -f Make_dos.mak VIMPROG=..\gvim 1485 cd .. 1486 1487testtiny: 1488 cd testdir 1489 $(MAKE) /NOLOGO -f Make_dos.mak tiny 1490 cd .. 1491 1492testgvimtiny: 1493 cd testdir 1494 $(MAKE) /NOLOGO -f Make_dos.mak tiny VIMPROG=..\gvim 1495 cd .. 1496 1497testclean: 1498 cd testdir 1499 $(MAKE) /NOLOGO -f Make_dos.mak clean 1500 cd .. 1501 1502# Run individual OLD style test. 1503# These do not depend on the executable, compile it when needed. 1504$(SCRIPTS_TINY): 1505 cd testdir 1506 - if exist [email protected] del [email protected] 1507 $(MAKE) /NOLOGO -f Make_dos.mak VIMPROG=..\$(VIMTESTTARGET) nolog 1508 $(MAKE) /NOLOGO -f Make_dos.mak VIMPROG=..\$(VIMTESTTARGET) [email protected] 1509 @ if exist test.log ( type test.log & exit /b 1 ) 1510 cd .. 1511 1512# Run individual NEW style test. 1513# These do not depend on the executable, compile it when needed. 1514$(NEW_TESTS): 1515 cd testdir 1516 - if exist [email protected] del [email protected] 1517 $(MAKE) /NOLOGO -f Make_dos.mak VIMPROG=..\$(VIMTESTTARGET) nolog 1518 $(MAKE) /NOLOGO -f Make_dos.mak VIMPROG=..\$(VIMTESTTARGET) [email protected] 1519 $(MAKE) /NOLOGO -f Make_dos.mak VIMPROG=..\$(VIMTESTTARGET) report 1520 cd .. 1521 1522# Run Vim9 tests. 1523# These do not depend on the executable, compile it when needed. 1524test_vim9: 1525 cd testdir 1526 -del test_vim9_*.res 1527 $(MAKE) /NOLOGO -f Make_dos.mak VIMPROG=..\$(VIMTESTTARGET) nolog 1528 $(MAKE) /NOLOGO -f Make_dos.mak VIMPROG=..\$(VIMTESTTARGET) $(TEST_VIM9_RES) 1529 $(MAKE) /NOLOGO -f Make_dos.mak VIMPROG=..\$(VIMTESTTARGET) report 1530 cd .. 1531 1532########################################################################### 1533 1534# Create a default rule for transforming .c files to .obj files in $(OUTDIR) 1535.c{$(OUTDIR)/}.obj:: 1536 $(CC) $(CFLAGS_OUTDIR) $< 1537 1538# Create a default rule for xdiff. 1539{xdiff/}.c{$(OUTDIR)/}.obj:: 1540 $(CC) $(CFLAGS_OUTDIR) $< 1541 1542# Create a default rule for transforming .cpp files to .obj files in $(OUTDIR) 1543.cpp{$(OUTDIR)/}.obj:: 1544 $(CC) $(CFLAGS_OUTDIR) $< 1545 1546$(OUTDIR)/alloc.obj: $(OUTDIR) alloc.c $(INCL) 1547 1548$(OUTDIR)/arabic.obj: $(OUTDIR) arabic.c $(INCL) 1549 1550$(OUTDIR)/arglist.obj: $(OUTDIR) arglist.c $(INCL) 1551 1552$(OUTDIR)/autocmd.obj: $(OUTDIR) autocmd.c $(INCL) 1553 1554$(OUTDIR)/beval.obj: $(OUTDIR) beval.c $(INCL) 1555 1556$(OUTDIR)/blob.obj: $(OUTDIR) blob.c $(INCL) 1557 1558$(OUTDIR)/blowfish.obj: $(OUTDIR) blowfish.c $(INCL) 1559 1560$(OUTDIR)/buffer.obj: $(OUTDIR) buffer.c $(INCL) version.h 1561 1562$(OUTDIR)/bufwrite.obj: $(OUTDIR) bufwrite.c $(INCL) 1563 1564$(OUTDIR)/change.obj: $(OUTDIR) change.c $(INCL) 1565 1566$(OUTDIR)/charset.obj: $(OUTDIR) charset.c $(INCL) 1567 1568$(OUTDIR)/cindent.obj: $(OUTDIR) cindent.c $(INCL) 1569 1570$(OUTDIR)/clientserver.obj: $(OUTDIR) clientserver.c $(INCL) 1571 1572$(OUTDIR)/clipboard.obj: $(OUTDIR) clipboard.c $(INCL) 1573 1574$(OUTDIR)/cmdexpand.obj: $(OUTDIR) cmdexpand.c $(INCL) 1575 1576$(OUTDIR)/cmdhist.obj: $(OUTDIR) cmdhist.c $(INCL) 1577 1578$(OUTDIR)/crypt.obj: $(OUTDIR) crypt.c $(INCL) 1579 1580$(OUTDIR)/crypt_zip.obj: $(OUTDIR) crypt_zip.c $(INCL) 1581 1582$(OUTDIR)/debugger.obj: $(OUTDIR) debugger.c $(INCL) 1583 1584$(OUTDIR)/dict.obj: $(OUTDIR) dict.c $(INCL) 1585 1586$(OUTDIR)/diff.obj: $(OUTDIR) diff.c $(INCL) 1587 1588$(OUTDIR)/xdiffi.obj: $(OUTDIR) xdiff/xdiffi.c $(XDIFF_DEPS) 1589 1590$(OUTDIR)/xemit.obj: $(OUTDIR) xdiff/xemit.c $(XDIFF_DEPS) 1591 1592$(OUTDIR)/xprepare.obj: $(OUTDIR) xdiff/xprepare.c $(XDIFF_DEPS) 1593 1594$(OUTDIR)/xutils.obj: $(OUTDIR) xdiff/xutils.c $(XDIFF_DEPS) 1595 1596$(OUTDIR)/xhistogram.obj: $(OUTDIR) xdiff/xhistogram.c $(XDIFF_DEPS) 1597 1598$(OUTDIR)/xpatience.obj: $(OUTDIR) xdiff/xpatience.c $(XDIFF_DEPS) 1599 1600$(OUTDIR)/digraph.obj: $(OUTDIR) digraph.c $(INCL) 1601 1602$(OUTDIR)/drawline.obj: $(OUTDIR) drawline.c $(INCL) 1603 1604$(OUTDIR)/drawscreen.obj: $(OUTDIR) drawscreen.c $(INCL) 1605 1606$(OUTDIR)/edit.obj: $(OUTDIR) edit.c $(INCL) 1607 1608$(OUTDIR)/eval.obj: $(OUTDIR) eval.c $(INCL) 1609 1610$(OUTDIR)/evalbuffer.obj: $(OUTDIR) evalbuffer.c $(INCL) 1611 1612$(OUTDIR)/evalfunc.obj: $(OUTDIR) evalfunc.c $(INCL) version.h 1613 1614$(OUTDIR)/evalvars.obj: $(OUTDIR) evalvars.c $(INCL) version.h 1615 1616$(OUTDIR)/evalwindow.obj: $(OUTDIR) evalwindow.c $(INCL) 1617 1618$(OUTDIR)/ex_cmds.obj: $(OUTDIR) ex_cmds.c $(INCL) version.h 1619 1620$(OUTDIR)/ex_cmds2.obj: $(OUTDIR) ex_cmds2.c $(INCL) version.h 1621 1622$(OUTDIR)/ex_docmd.obj: $(OUTDIR) ex_docmd.c $(INCL) ex_cmdidxs.h 1623 1624$(OUTDIR)/ex_eval.obj: $(OUTDIR) ex_eval.c $(INCL) 1625 1626$(OUTDIR)/ex_getln.obj: $(OUTDIR) ex_getln.c $(INCL) 1627 1628$(OUTDIR)/fileio.obj: $(OUTDIR) fileio.c $(INCL) 1629 1630$(OUTDIR)/filepath.obj: $(OUTDIR) filepath.c $(INCL) 1631 1632$(OUTDIR)/findfile.obj: $(OUTDIR) findfile.c $(INCL) 1633 1634$(OUTDIR)/float.obj: $(OUTDIR) float.c $(INCL) 1635 1636$(OUTDIR)/fold.obj: $(OUTDIR) fold.c $(INCL) 1637 1638$(OUTDIR)/getchar.obj: $(OUTDIR) getchar.c $(INCL) 1639 1640$(OUTDIR)/gui_xim.obj: $(OUTDIR) gui_xim.c $(INCL) 1641 1642$(OUTDIR)/hardcopy.obj: $(OUTDIR) hardcopy.c $(INCL) version.h 1643 1644$(OUTDIR)/hashtab.obj: $(OUTDIR) hashtab.c $(INCL) 1645 1646$(OUTDIR)/help.obj: $(OUTDIR) help.c $(INCL) 1647 1648$(OUTDIR)/highlight.obj: $(OUTDIR) highlight.c $(INCL) 1649 1650$(OUTDIR)/indent.obj: $(OUTDIR) indent.c $(INCL) 1651 1652$(OUTDIR)/insexpand.obj: $(OUTDIR) insexpand.c $(INCL) 1653 1654$(OUTDIR)/gui.obj: $(OUTDIR) gui.c $(INCL) $(GUI_INCL) 1655 1656$(OUTDIR)/gui_beval.obj: $(OUTDIR) gui_beval.c $(INCL) $(GUI_INCL) 1657 1658$(OUTDIR)/gui_w32.obj: $(OUTDIR) gui_w32.c $(INCL) $(GUI_INCL) version.h 1659 1660$(OUTDIR)/gui_dwrite.obj: $(OUTDIR) gui_dwrite.cpp gui_dwrite.h 1661 1662$(OUTDIR)/if_cscope.obj: $(OUTDIR) if_cscope.c $(INCL) if_cscope.h 1663 1664$(OUTDIR)/if_lua.obj: $(OUTDIR) if_lua.c $(INCL) 1665 $(CC) $(CFLAGS_OUTDIR) $(LUA_INC) if_lua.c 1666 1667auto/if_perl.c : if_perl.xs typemap 1668 -if not exist auto/nul mkdir auto 1669 $(XSUBPP) -prototypes -typemap $(XSUBPP_TYPEMAP) \ 1670 -typemap typemap if_perl.xs -output $@ 1671 1672$(OUTDIR)/if_perl.obj: $(OUTDIR) auto/if_perl.c $(INCL) 1673 $(CC) $(CFLAGS_OUTDIR) $(PERL_INC) auto/if_perl.c 1674 1675$(OUTDIR)/if_perlsfio.obj: $(OUTDIR) if_perlsfio.c $(INCL) 1676 $(CC) $(CFLAGS_OUTDIR) $(PERL_INC) if_perlsfio.c 1677 1678$(OUTDIR)/if_mzsch.obj: $(OUTDIR) if_mzsch.c $(MZSCHEME_INCL) $(INCL) $(MZSCHEME_EXTRA_DEP) 1679 $(CC) $(CFLAGS_OUTDIR) if_mzsch.c \ 1680 -DMZSCHEME_COLLECTS="\"$(MZSCHEME_COLLECTS:\=\\)\"" 1681 1682lib$(MZSCHEME_MAIN_LIB)$(MZSCHEME_VER).lib: 1683 lib /DEF:"$(MZSCHEME)\lib\lib$(MZSCHEME_MAIN_LIB)$(MZSCHEME_VER).def" 1684 1685$(OUTDIR)/if_python.obj: $(OUTDIR) if_python.c if_py_both.h $(INCL) 1686 $(CC) $(CFLAGS_OUTDIR) $(PYTHON_INC) if_python.c 1687 1688$(OUTDIR)/if_python3.obj: $(OUTDIR) if_python3.c if_py_both.h $(INCL) 1689 $(CC) $(CFLAGS_OUTDIR) $(PYTHON3_INC) if_python3.c 1690 1691$(OUTDIR)/if_ole.obj: $(OUTDIR) if_ole.cpp $(INCL) if_ole.h 1692 1693$(OUTDIR)/if_ruby.obj: $(OUTDIR) if_ruby.c $(INCL) version.h 1694 $(CC) $(CFLAGS_OUTDIR) $(RUBY_INC) if_ruby.c 1695 1696$(OUTDIR)/if_tcl.obj: $(OUTDIR) if_tcl.c $(INCL) 1697 $(CC) $(CFLAGS_OUTDIR) $(TCL_INC) if_tcl.c 1698 1699$(OUTDIR)/iscygpty.obj: $(OUTDIR) iscygpty.c $(CUI_INCL) 1700 $(CC) $(CFLAGS_OUTDIR) iscygpty.c -D_WIN32_WINNT=0x0600 -DUSE_DYNFILEID -DENABLE_STUB_IMPL 1701 1702$(OUTDIR)/job.obj: $(OUTDIR) job.c $(INCL) 1703 1704$(OUTDIR)/json.obj: $(OUTDIR) json.c $(INCL) 1705 1706$(OUTDIR)/list.obj: $(OUTDIR) list.c $(INCL) 1707 1708$(OUTDIR)/locale.obj: $(OUTDIR) locale.c $(INCL) 1709 1710$(OUTDIR)/main.obj: $(OUTDIR) main.c $(INCL) $(CUI_INCL) 1711 1712$(OUTDIR)/map.obj: $(OUTDIR) map.c $(INCL) 1713 1714$(OUTDIR)/mark.obj: $(OUTDIR) mark.c $(INCL) 1715 1716$(OUTDIR)/match.obj: $(OUTDIR) match.c $(INCL) 1717 1718$(OUTDIR)/memfile.obj: $(OUTDIR) memfile.c $(INCL) 1719 1720$(OUTDIR)/memline.obj: $(OUTDIR) memline.c $(INCL) 1721 1722$(OUTDIR)/menu.obj: $(OUTDIR) menu.c $(INCL) 1723 1724$(OUTDIR)/message.obj: $(OUTDIR) message.c $(INCL) 1725 1726$(OUTDIR)/misc1.obj: $(OUTDIR) misc1.c $(INCL) version.h 1727 1728$(OUTDIR)/misc2.obj: $(OUTDIR) misc2.c $(INCL) 1729 1730$(OUTDIR)/mouse.obj: $(OUTDIR) mouse.c $(INCL) 1731 1732$(OUTDIR)/move.obj: $(OUTDIR) move.c $(INCL) 1733 1734$(OUTDIR)/mbyte.obj: $(OUTDIR) mbyte.c $(INCL) 1735 1736$(OUTDIR)/netbeans.obj: $(OUTDIR) netbeans.c $(NBDEBUG_SRC) $(INCL) version.h 1737 1738$(OUTDIR)/channel.obj: $(OUTDIR) channel.c $(INCL) 1739 1740$(OUTDIR)/normal.obj: $(OUTDIR) normal.c $(INCL) 1741 1742$(OUTDIR)/option.obj: $(OUTDIR) option.c $(INCL) optiondefs.h 1743 1744$(OUTDIR)/optionstr.obj: $(OUTDIR) optionstr.c $(INCL) 1745 1746$(OUTDIR)/ops.obj: $(OUTDIR) ops.c $(INCL) 1747 1748$(OUTDIR)/os_mswin.obj: $(OUTDIR) os_mswin.c $(INCL) 1749 1750$(OUTDIR)/terminal.obj: $(OUTDIR) terminal.c $(INCL) $(TERM_DEPS) 1751 1752$(OUTDIR)/winclip.obj: $(OUTDIR) winclip.c $(INCL) 1753 1754$(OUTDIR)/os_win32.obj: $(OUTDIR) os_win32.c $(INCL) $(MZSCHEME_INCL) 1755 1756$(OUTDIR)/os_w32dll.obj: $(OUTDIR) os_w32dll.c 1757 1758$(OUTDIR)/os_w32exe.obj: $(OUTDIR) os_w32exe.c $(INCL) 1759 1760$(OUTDIR)/os_w32exec.obj: $(OUTDIR) os_w32exe.c $(INCL) 1761 $(CC) $(CFLAGS:-DFEAT_GUI_MSWIN=) /Fo$@ os_w32exe.c 1762 1763$(OUTDIR)/os_w32exeg.obj: $(OUTDIR) os_w32exe.c $(INCL) 1764 $(CC) $(CFLAGS) /Fo$@ os_w32exe.c 1765 1766$(OUTDIR)/pathdef.obj: $(OUTDIR) $(PATHDEF_SRC) $(INCL) 1767 $(CC) $(CFLAGS_OUTDIR) $(PATHDEF_SRC) 1768 1769$(OUTDIR)/popupmenu.obj: $(OUTDIR) popupmenu.c $(INCL) 1770 1771$(OUTDIR)/popupwin.obj: $(OUTDIR) popupwin.c $(INCL) 1772 1773$(OUTDIR)/profiler.obj: $(OUTDIR) profiler.c $(INCL) 1774 1775$(OUTDIR)/quickfix.obj: $(OUTDIR) quickfix.c $(INCL) 1776 1777$(OUTDIR)/regexp.obj: $(OUTDIR) regexp.c regexp_bt.c regexp_nfa.c $(INCL) 1778 1779$(OUTDIR)/register.obj: $(OUTDIR) register.c $(INCL) 1780 1781$(OUTDIR)/scriptfile.obj: $(OUTDIR) scriptfile.c $(INCL) 1782 1783$(OUTDIR)/screen.obj: $(OUTDIR) screen.c $(INCL) 1784 1785$(OUTDIR)/search.obj: $(OUTDIR) search.c $(INCL) 1786 1787$(OUTDIR)/session.obj: $(OUTDIR) session.c $(INCL) 1788 1789$(OUTDIR)/sha256.obj: $(OUTDIR) sha256.c $(INCL) 1790 1791$(OUTDIR)/sign.obj: $(OUTDIR) sign.c $(INCL) 1792 1793$(OUTDIR)/spell.obj: $(OUTDIR) spell.c $(INCL) 1794 1795$(OUTDIR)/spellfile.obj: $(OUTDIR) spellfile.c $(INCL) 1796 1797$(OUTDIR)/spellsuggest.obj: $(OUTDIR) spellsuggest.c $(INCL) 1798 1799$(OUTDIR)/strings.obj: $(OUTDIR) strings.c $(INCL) 1800 1801$(OUTDIR)/syntax.obj: $(OUTDIR) syntax.c $(INCL) 1802 1803$(OUTDIR)/tag.obj: $(OUTDIR) tag.c $(INCL) 1804 1805$(OUTDIR)/term.obj: $(OUTDIR) term.c $(INCL) 1806 1807$(OUTDIR)/term.obj: $(OUTDIR) testing.c $(INCL) 1808 1809$(OUTDIR)/textformat.obj: $(OUTDIR) textformat.c $(INCL) 1810 1811$(OUTDIR)/textobject.obj: $(OUTDIR) textobject.c $(INCL) 1812 1813$(OUTDIR)/textprop.obj: $(OUTDIR) textprop.c $(INCL) 1814 1815$(OUTDIR)/time.obj: $(OUTDIR) time.c $(INCL) 1816 1817$(OUTDIR)/typval.obj: $(OUTDIR) typval.c $(INCL) 1818 1819$(OUTDIR)/ui.obj: $(OUTDIR) ui.c $(INCL) 1820 1821$(OUTDIR)/undo.obj: $(OUTDIR) undo.c $(INCL) 1822 1823$(OUTDIR)/usercmd.obj: $(OUTDIR) usercmd.c $(INCL) 1824 1825$(OUTDIR)/userfunc.obj: $(OUTDIR) userfunc.c $(INCL) 1826 1827$(OUTDIR)/version.obj: $(OUTDIR) version.c $(INCL) version.h 1828 1829$(OUTDIR)/vim9compile.obj: $(OUTDIR) vim9compile.c $(INCL) 1830 1831$(OUTDIR)/vim9execute.obj: $(OUTDIR) vim9execute.c $(INCL) 1832 1833$(OUTDIR)/vim9script.obj: $(OUTDIR) vim9script.c $(INCL) 1834 1835$(OUTDIR)/vim9type.obj: $(OUTDIR) vim9type.c $(INCL) 1836 1837$(OUTDIR)/viminfo.obj: $(OUTDIR) viminfo.c $(INCL) version.h 1838 1839$(OUTDIR)/window.obj: $(OUTDIR) window.c $(INCL) 1840 1841$(OUTDIR)/xpm_w32.obj: $(OUTDIR) xpm_w32.c 1842 $(CC) $(CFLAGS_OUTDIR) $(XPM_INC) xpm_w32.c 1843 1844!if "$(VIMDLL)" == "yes" 1845$(OUTDIR)/vimc.res: $(OUTDIR) vim.rc vim.manifest version.h gui_w32_rc.h \ 1846 vim.ico 1847 $(RC) /nologo /l 0x409 /Fo$@ $(RCFLAGS:-DFEAT_GUI_MSWIN=) vim.rc 1848 1849$(OUTDIR)/vimg.res: $(OUTDIR) vim.rc vim.manifest version.h gui_w32_rc.h \ 1850 vim.ico 1851 $(RC) /nologo /l 0x409 /Fo$@ $(RCFLAGS) vim.rc 1852 1853$(OUTDIR)/vimd.res: $(OUTDIR) vim.rc version.h gui_w32_rc.h \ 1854 tools.bmp tearoff.bmp vim.ico vim_error.ico \ 1855 vim_alert.ico vim_info.ico vim_quest.ico 1856 $(RC) /nologo /l 0x409 /Fo$@ $(RCFLAGS) -DRCDLL -DVIMDLLBASE=\"$(VIMDLLBASE)\" vim.rc 1857!else 1858$(OUTDIR)/vim.res: $(OUTDIR) vim.rc vim.manifest version.h gui_w32_rc.h \ 1859 tools.bmp tearoff.bmp vim.ico vim_error.ico \ 1860 vim_alert.ico vim_info.ico vim_quest.ico 1861 $(RC) /nologo /l 0x409 /Fo$@ $(RCFLAGS) vim.rc 1862!endif 1863 1864iid_ole.c if_ole.h vim.tlb: if_ole.idl 1865 midl /nologo /error none /proxy nul /iid iid_ole.c /tlb vim.tlb \ 1866 /header if_ole.h if_ole.idl 1867 1868dimm.h dimm_i.c: dimm.idl 1869 midl /nologo /error none /proxy nul dimm.idl 1870 1871$(OUTDIR)/dimm_i.obj: $(OUTDIR) dimm_i.c $(INCL) 1872 1873$(OUTDIR)/glbl_ime.obj: $(OUTDIR) glbl_ime.cpp dimm.h $(INCL) 1874 1875 1876CCCTERM = $(CC) $(CFLAGS) -Ilibvterm/include -DINLINE="" \ 1877 -DVSNPRINTF=vim_vsnprintf \ 1878 -DSNPRINTF=vim_snprintf \ 1879 -DIS_COMBINING_FUNCTION=utf_iscomposing_uint \ 1880 -DWCWIDTH_FUNCTION=utf_uint2cells \ 1881 -DGET_SPECIAL_PTY_TYPE_FUNCTION=get_special_pty_type \ 1882 -D_CRT_SECURE_NO_WARNINGS 1883 1884$(OUTDIR)/vterm_encoding.obj: $(OUTDIR) libvterm/src/encoding.c $(TERM_DEPS) 1885 $(CCCTERM) /Fo$@ libvterm/src/encoding.c 1886 1887$(OUTDIR)/vterm_keyboard.obj: $(OUTDIR) libvterm/src/keyboard.c $(TERM_DEPS) 1888 $(CCCTERM) /Fo$@ libvterm/src/keyboard.c 1889 1890$(OUTDIR)/vterm_mouse.obj: $(OUTDIR) libvterm/src/mouse.c $(TERM_DEPS) 1891 $(CCCTERM) /Fo$@ libvterm/src/mouse.c 1892 1893$(OUTDIR)/vterm_parser.obj: $(OUTDIR) libvterm/src/parser.c $(TERM_DEPS) 1894 $(CCCTERM) /Fo$@ libvterm/src/parser.c 1895 1896$(OUTDIR)/vterm_pen.obj: $(OUTDIR) libvterm/src/pen.c $(TERM_DEPS) 1897 $(CCCTERM) /Fo$@ libvterm/src/pen.c 1898 1899$(OUTDIR)/vterm_screen.obj: $(OUTDIR) libvterm/src/screen.c $(TERM_DEPS) 1900 $(CCCTERM) /Fo$@ libvterm/src/screen.c 1901 1902$(OUTDIR)/vterm_state.obj: $(OUTDIR) libvterm/src/state.c $(TERM_DEPS) 1903 $(CCCTERM) /Fo$@ libvterm/src/state.c 1904 1905$(OUTDIR)/vterm_unicode.obj: $(OUTDIR) libvterm/src/unicode.c $(TERM_DEPS) 1906 $(CCCTERM) /Fo$@ libvterm/src/unicode.c 1907 1908$(OUTDIR)/vterm_vterm.obj: $(OUTDIR) libvterm/src/vterm.c $(TERM_DEPS) 1909 $(CCCTERM) /Fo$@ libvterm/src/vterm.c 1910 1911 1912# $CFLAGS may contain backslashes, quotes and chevrons, escape them all. 1913E0_CFLAGS = $(CFLAGS:\=\\) 1914E00_CFLAGS = $(E0_CFLAGS:"=\") 1915# ") stop the string 1916E000_CFLAGS = $(E00_CFLAGS:<=^^<) 1917E_CFLAGS = $(E000_CFLAGS:>=^^>) 1918# $LINKARGS2 may contain backslashes, quotes and chevrons, escape them all. 1919E0_LINKARGS2 = $(LINKARGS2:\=\\) 1920E00_LINKARGS2 = $(E0_LINKARGS2:"=\") 1921# ") stop the string 1922E000_LINKARGS2 = $(E00_LINKARGS2:<=^^<) 1923E_LINKARGS2 = $(E000_LINKARGS2:>=^^>) 1924 1925$(PATHDEF_SRC): Make_mvc.mak 1926 @echo creating $(PATHDEF_SRC) 1927 @echo /* pathdef.c */ > $(PATHDEF_SRC) 1928 @echo #include "vim.h" >> $(PATHDEF_SRC) 1929 @echo char_u *default_vim_dir = (char_u *)"$(VIMRCLOC:\=\\)"; >> $(PATHDEF_SRC) 1930 @echo char_u *default_vimruntime_dir = (char_u *)"$(VIMRUNTIMEDIR:\=\\)"; >> $(PATHDEF_SRC) 1931 @echo char_u *all_cflags = (char_u *)"$(CC:\=\\) $(E_CFLAGS)"; >> $(PATHDEF_SRC) 1932 @echo char_u *all_lflags = (char_u *)"$(link:\=\\) $(LINKARGS1:\=\\) $(E_LINKARGS2)"; >> $(PATHDEF_SRC) 1933 @echo char_u *compiled_user = (char_u *)"$(USERNAME)"; >> $(PATHDEF_SRC) 1934 @echo char_u *compiled_sys = (char_u *)"$(USERDOMAIN)"; >> $(PATHDEF_SRC) 1935 1936# End Custom Build 1937proto.h: \ 1938 proto/alloc.pro \ 1939 proto/arabic.pro \ 1940 proto/arglist.pro \ 1941 proto/autocmd.pro \ 1942 proto/blob.pro \ 1943 proto/blowfish.pro \ 1944 proto/buffer.pro \ 1945 proto/bufwrite.pro \ 1946 proto/change.pro \ 1947 proto/charset.pro \ 1948 proto/cindent.pro \ 1949 proto/clientserver.pro \ 1950 proto/clipboard.pro \ 1951 proto/cmdexpand.pro \ 1952 proto/cmdhist.pro \ 1953 proto/crypt.pro \ 1954 proto/crypt_zip.pro \ 1955 proto/debugger.pro \ 1956 proto/dict.pro \ 1957 proto/diff.pro \ 1958 proto/digraph.pro \ 1959 proto/drawline.pro \ 1960 proto/drawscreen.pro \ 1961 proto/edit.pro \ 1962 proto/eval.pro \ 1963 proto/evalbuffer.pro \ 1964 proto/evalfunc.pro \ 1965 proto/evalvars.pro \ 1966 proto/evalwindow.pro \ 1967 proto/ex_cmds.pro \ 1968 proto/ex_cmds2.pro \ 1969 proto/ex_docmd.pro \ 1970 proto/ex_eval.pro \ 1971 proto/ex_getln.pro \ 1972 proto/fileio.pro \ 1973 proto/filepath.pro \ 1974 proto/findfile.pro \ 1975 proto/float.pro \ 1976 proto/getchar.pro \ 1977 proto/gui_xim.pro \ 1978 proto/hardcopy.pro \ 1979 proto/hashtab.pro \ 1980 proto/help.pro \ 1981 proto/highlight.pro \ 1982 proto/indent.pro \ 1983 proto/insexpand.pro \ 1984 proto/json.pro \ 1985 proto/list.pro \ 1986 proto/locale.pro \ 1987 proto/main.pro \ 1988 proto/map.pro \ 1989 proto/mark.pro \ 1990 proto/match.pro \ 1991 proto/memfile.pro \ 1992 proto/memline.pro \ 1993 proto/menu.pro \ 1994 proto/message.pro \ 1995 proto/misc1.pro \ 1996 proto/misc2.pro \ 1997 proto/mouse.pro \ 1998 proto/move.pro \ 1999 proto/mbyte.pro \ 2000 proto/normal.pro \ 2001 proto/ops.pro \ 2002 proto/option.pro \ 2003 proto/optionstr.pro \ 2004 proto/os_mswin.pro \ 2005 proto/winclip.pro \ 2006 proto/os_win32.pro \ 2007 proto/popupmenu.pro \ 2008 proto/popupwin.pro \ 2009 proto/profiler.pro \ 2010 proto/quickfix.pro \ 2011 proto/regexp.pro \ 2012 proto/register.pro \ 2013 proto/scriptfile.pro \ 2014 proto/screen.pro \ 2015 proto/search.pro \ 2016 proto/session.pro \ 2017 proto/sha256.pro \ 2018 proto/sign.pro \ 2019 proto/spell.pro \ 2020 proto/spellfile.pro \ 2021 proto/spellsuggest.pro \ 2022 proto/strings.pro \ 2023 proto/syntax.pro \ 2024 proto/tag.pro \ 2025 proto/term.pro \ 2026 proto/testing.pro \ 2027 proto/textformat.pro \ 2028 proto/textobject.pro \ 2029 proto/textprop.pro \ 2030 proto/time.pro \ 2031 proto/typval.pro \ 2032 proto/ui.pro \ 2033 proto/undo.pro \ 2034 proto/usercmd.pro \ 2035 proto/userfunc.pro \ 2036 proto/vim9compile.pro \ 2037 proto/vim9execute.pro \ 2038 proto/vim9script.pro \ 2039 proto/vim9type.pro \ 2040 proto/viminfo.pro \ 2041 proto/window.pro \ 2042 $(SOUND_PRO) \ 2043 $(NETBEANS_PRO) \ 2044 $(CHANNEL_PRO) 2045 2046.SUFFIXES: .cod .i 2047 2048# Generate foo.cod (mixed source and assembly listing) from foo.c via "nmake 2049# foo.cod" 2050.c.cod: 2051 $(CC) $(CFLAGS) /FAcs $< 2052 2053# Generate foo.i (preprocessor listing) from foo.c via "nmake foo.i" 2054.c.i: 2055 $(CC) $(CFLAGS) /P /C $< 2056 2057# vim: set noet sw=8 ts=8 sts=0 wm=0 tw=0: 2058