1# Makefile for VIM on Win32 2# 3# Info at http://www.mingw.org 4# Alternative x86 and 64-builds: http://mingw-w64.sourceforge.net 5# Also requires GNU make, which you can download from the same sites. 6# Get missing libraries from http://gnuwin32.sf.net. 7# 8# Tested on Win32 NT 4 and Win95. 9# 10# To make everything, just 'make -f Make_ming.mak'. 11# To make just e.g. gvim.exe, 'make -f Make_ming.mak gvim.exe'. 12# After a run, you can 'make -f Make_ming.mak clean' to clean up. 13# 14# NOTE: Sometimes 'GNU Make' will stop after building vimrun.exe -- I think 15# it's just run out of memory or something. Run again, and it will continue 16# with 'xxd'. 17# 18# "make upx" makes *compressed* versions of the 32 bit GUI and console EXEs, 19# using the excellent UPX compressor: 20# http://upx.sourceforge.net/ 21# "make mpress" uses the MPRESS compressor for 32- and 64-bit EXEs: 22# http://www.matcode.com/mpress.htm 23# 24# Maintained by Ron Aaron <[email protected]> et al. 25# Updated 2012 Sep 5. 26 27#>>>>> choose options: 28# set to yes for a debug build 29DEBUG=no 30# set to SIZE for size, SPEED for speed, MAXSPEED for maximum optimization 31OPTIMIZE=MAXSPEED 32# set to yes to make gvim, no for vim 33GUI=yes 34# FEATURES=[TINY | SMALL | NORMAL | BIG | HUGE] 35# Set to TINY to make minimal version (few features). 36FEATURES=BIG 37# Set to one of i386, i486, i586, i686 as the minimum target processor. 38# For amd64/x64 architecture set ARCH=x86-64 . 39ARCH=i386 40# Set to yes to cross-compile from unix; no=native Windows. 41CROSS=no 42# Set to path to iconv.h and libiconv.a to enable using 'iconv.dll'. 43#ICONV="." 44ICONV=yes 45GETTEXT=yes 46# Set to yes to include multibyte support. 47MBYTE=yes 48# Set to yes to include IME support. 49IME=yes 50DYNAMIC_IME=yes 51# Set to yes to enable writing a postscript file with :hardcopy. 52POSTSCRIPT=no 53# Set to yes to enable OLE support. 54OLE=no 55# Set the default $(WINVER) to make it work with pre-Win2k. 56ifndef WINVER 57WINVER = 0x0500 58endif 59# Set to yes to enable Cscope support. 60CSCOPE=yes 61# Set to yes to enable Netbeans support. 62NETBEANS=$(GUI) 63 64 65# Link against the shared version of libstdc++ by default. Set 66# STATIC_STDCPLUS to "yes" to link against static version instead. 67ifndef STATIC_STDCPLUS 68STATIC_STDCPLUS=no 69endif 70 71# If the user doesn't want gettext, undefine it. 72ifeq (no, $(GETTEXT)) 73GETTEXT= 74endif 75# Added by E.F. Amatria <[email protected]> 2001 Feb 23 76# Uncomment the first line and one of the following three if you want Native Language 77# Support. You'll need gnu_gettext.win32, a MINGW32 Windows PORT of gettext by 78# Franco Bez <[email protected]>. It may be found at 79# http://home.a-city.de/franco.bez/gettext/gettext_win32_en.html 80# Tested with mingw32 with GCC-2.95.2 on Win98 81# Updated 2001 Jun 9 82#GETTEXT=c:/gettext.win32.msvcrt 83#STATIC_GETTEXT=USE_STATIC_GETTEXT 84#DYNAMIC_GETTEXT=USE_GETTEXT_DLL 85#DYNAMIC_GETTEXT=USE_SAFE_GETTEXT_DLL 86SAFE_GETTEXT_DLL_OBJ = $(GETTEXT)/src/safe_gettext_dll/safe_gettext_dll.o 87# Alternatively, if you uncomment the two following lines, you get a "safe" version 88# without linking the safe_gettext_dll.o object file. 89#DYNAMIC_GETTEXT=DYNAMIC_GETTEXT 90#GETTEXT_DYNAMIC=gnu_gettext.dll 91INTLPATH=$(GETTEXT)/lib/mingw32 92INTLLIB=gnu_gettext 93 94# If you are using gettext-0.10.35 from http://sourceforge.net/projects/gettext 95# or gettext-0.10.37 from http://sourceforge.net/projects/mingwrep/ 96# uncomment the following, but I can't build a static version with them, ?-(| 97#GETTEXT=c:/gettext-0.10.37-20010430 98#STATIC_GETTEXT=USE_STATIC_GETTEXT 99#DYNAMIC_GETTEXT=DYNAMIC_GETTEXT 100#INTLPATH=$(GETTEXT)/lib 101#INTLLIB=intl 102 103# uncomment 'PERL' if you want a perl-enabled version 104#PERL=C:/perl 105ifdef PERL 106ifndef PERL_VER 107PERL_VER=56 108endif 109ifndef DYNAMIC_PERL 110DYNAMIC_PERL=yes 111endif 112# on Linux, for cross-compile, it's here: 113#PERLLIB=/home/ron/ActivePerl/lib 114# on NT, it's here: 115PERLLIB=$(PERL)/lib 116PERLLIBS=$(PERLLIB)/Core 117XSUBPPTRY=$(PERLLIB)/ExtUtils/xsubpp 118XSUBPP_EXISTS=$(shell perl -e "print 1 unless -e '$(XSUBPPTRY)'") 119ifeq "$(XSUBPP_EXISTS)" "" 120XSUBPP=perl $(XSUBPPTRY) 121else 122XSUBPP=xsubpp 123endif 124endif 125 126# uncomment 'LUA' if you want a Lua-enabled version 127#LUA=/usr/local 128ifdef LUA 129ifndef DYNAMIC_LUA 130DYNAMIC_LUA=yes 131endif 132 133ifndef LUA_VER 134LUA_VER=51 135endif 136 137ifeq (no,$(DYNAMIC_LUA)) 138LUA_LIB = -L$(LUA)/lib -llua 139endif 140 141endif 142 143# uncomment 'MZSCHEME' if you want a MzScheme-enabled version 144#MZSCHEME=d:/plt 145ifdef MZSCHEME 146ifndef DYNAMIC_MZSCHEME 147DYNAMIC_MZSCHEME=yes 148endif 149 150ifndef MZSCHEME_VER 151MZSCHEME_VER=205_000 152endif 153 154ifndef MZSCHEME_PRECISE_GC 155MZSCHEME_PRECISE_GC=no 156endif 157 158# for version 4.x we need to generate byte-code for Scheme base 159ifndef MZSCHEME_GENERATE_BASE 160MZSCHEME_GENERATE_BASE=no 161endif 162 163ifndef MZSCHEME_USE_RACKET 164MZSCHEME_MAIN_LIB=mzsch 165else 166MZSCHEME_MAIN_LIB=racket 167endif 168 169ifeq (no,$(DYNAMIC_MZSCHEME)) 170ifeq (yes,$(MZSCHEME_PRECISE_GC)) 171MZSCHEME_LIB=-l$(MZSCHEME_MAIN_LIB)$(MZSCHEME_VER) 172else 173MZSCHEME_LIB = -l$(MZSCHEME_MAIN_LIB)$(MZSCHEME_VER) -lmzgc$(MZSCHEME_VER) 174endif 175# the modern MinGW can dynamically link to dlls directly. 176# point MZSCHEME_DLLS to where you put libmzschXXXXXXX.dll and libgcXXXXXXX.dll 177ifndef MZSCHEME_DLLS 178MZSCHEME_DLLS=$(MZSCHEME) 179endif 180MZSCHEME_LIBDIR=-L$(MZSCHEME_DLLS) -L$(MZSCHEME_DLLS)\lib 181endif 182 183endif 184 185# Python support -- works with the ActiveState python 2.0 release (and others 186# too, probably) 187# 188# uncomment 'PYTHON' to make python-enabled version 189# Put the path to the python distro here. If cross compiling from Linux, you 190# will also need to convert the header files to unix instead of dos format: 191# for fil in *.h ; do vim -e -c 'set ff=unix|w|q' $fil 192# and also, you will need to make a mingw32 'libpython20.a' to link with: 193# cd $PYTHON/libs 194# pexports python20.dll > python20.def 195# dlltool -d python20.def -l libpython20.a 196# on my Linux box, I put the Python stuff here: 197#PYTHON=/home/ron/ActivePython-2.0.0-202/src/Core 198# on my NT box, it's here: 199#PYTHON=c:/python20 200 201ifdef PYTHON 202ifndef DYNAMIC_PYTHON 203DYNAMIC_PYTHON=yes 204endif 205 206ifndef PYTHON_VER 207PYTHON_VER=22 208endif 209 210ifeq (no,$(DYNAMIC_PYTHON)) 211PYTHONLIB=-L$(PYTHON)/libs -lpython$(PYTHON_VER) 212endif 213# my include files are in 'win32inc' on Linux, and 'include' in the standard 214# NT distro (ActiveState) 215ifeq ($(CROSS),no) 216PYTHONINC=-I $(PYTHON)/include 217else 218PYTHONINC=-I $(PYTHON)/win32inc 219endif 220endif 221 222#PYTHON3: See comment for Python 2 above 223 224ifdef PYTHON3 225ifndef DYNAMIC_PYTHON3 226DYNAMIC_PYTHON3=yes 227endif 228 229ifndef PYTHON3_VER 230PYTHON3_VER=31 231endif 232 233ifeq (no,$(DYNAMIC_PYTHON3)) 234PYTHON3LIB=-L$(PYTHON3)/libs -lPYTHON$(PYTHON3_VER) 235endif 236 237ifeq ($(CROSS),no) 238PYTHON3INC=-I $(PYTHON3)/include 239else 240PYTHON3INC=-I $(PYTHON3)/win32inc 241endif 242endif 243 244# TCL interface: 245# TCL=[Path to TCL directory] 246# DYNAMIC_TCL=yes (to load the TCL DLL dynamically) 247# TCL_VER=[TCL version, eg 83, 84] (default is 83) 248#TCL=c:/tcl 249ifdef TCL 250ifndef DYNAMIC_TCL 251DYNAMIC_TCL=yes 252endif 253ifndef TCL_VER 254TCL_VER = 83 255endif 256TCLINC += -I$(TCL)/include 257endif 258 259 260# Ruby interface: 261# RUBY=[Path to Ruby directory] 262# DYNAMIC_RUBY=yes (to load the Ruby DLL dynamically) 263# RUBY_VER=[Ruby version, eg 16, 17] (default is 16) 264# RUBY_VER_LONG=[Ruby version, eg 1.6, 1.7] (default is 1.6) 265# You must set RUBY_VER_LONG when changing RUBY_VER. 266# You must set RUBY_API_VER version to RUBY_VER_LONG. 267# Don't set ruby API version to RUBY_VER like 191. 268#RUBY=c:/ruby 269ifdef RUBY 270ifndef DYNAMIC_RUBY 271DYNAMIC_RUBY=yes 272endif 273# Set default value 274ifndef RUBY_VER 275RUBY_VER = 16 276endif 277ifndef RUBY_VER_LONG 278RUBY_VER_LONG = 1.6 279endif 280ifndef RUBY_API_VER 281RUBY_API_VER = $(subst .,,$(RUBY_VER_LONG)) 282endif 283 284ifndef RUBY_PLATFORM 285ifeq ($(RUBY_VER), 16) 286RUBY_PLATFORM = i586-mswin32 287else 288ifneq ($(wildcard $(RUBY)/lib/ruby/$(RUBY_VER_LONG)/i386-mingw32),) 289RUBY_PLATFORM = i386-mingw32 290else 291RUBY_PLATFORM = i386-mswin32 292endif 293endif 294endif 295 296ifndef RUBY_INSTALL_NAME 297ifeq ($(RUBY_VER), 16) 298RUBY_INSTALL_NAME = mswin32-ruby$(RUBY_API_VER) 299else 300RUBY_INSTALL_NAME = msvcrt-ruby$(RUBY_API_VER) 301endif 302endif 303 304RUBYINC =-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) 305ifeq (no, $(DYNAMIC_RUBY)) 306RUBYLIB = -L$(RUBY)/lib -l$(RUBY_INSTALL_NAME) 307endif 308 309endif # RUBY 310 311# See feature.h for a list of options. 312# Any other defines can be included here. 313DEF_GUI=-DFEAT_GUI_W32 -DFEAT_CLIPBOARD 314DEFINES=-DWIN32 -DWINVER=$(WINVER) -D_WIN32_WINNT=$(WINVER) \ 315 -DHAVE_PATHDEF -DFEAT_$(FEATURES) 316ifeq ($(CROSS),yes) 317# cross-compiler prefix: 318CROSS_COMPILE = i586-pc-mingw32msvc- 319DEL = rm 320MKDIR = mkdir -p 321DIRSLASH = / 322else 323# normal (Windows) compilation: 324CROSS_COMPILE = 325ifneq (sh.exe, $(SHELL)) 326DEL = rm 327MKDIR = mkdir -p 328DIRSLASH = / 329else 330DEL = del 331MKDIR = mkdir 332DIRSLASH = \\ 333endif 334endif 335CC := $(CROSS_COMPILE)gcc 336WINDRES := $(CROSS_COMPILE)windres 337WINDRES_CC = $(CC) 338 339#>>>>> end of choices 340########################################################################### 341 342CFLAGS = -Iproto $(DEFINES) -pipe -w -march=$(ARCH) -Wall 343WINDRES_FLAGS = --preprocessor="$(WINDRES_CC) -E -xc" -DRC_INVOKED 344 345ifdef GETTEXT 346DEFINES += -DHAVE_GETTEXT -DHAVE_LOCALE_H 347GETTEXTINCLUDE = $(GETTEXT)/include 348GETTEXTLIB = $(INTLPATH) 349ifeq (yes, $(GETTEXT)) 350DEFINES += -DDYNAMIC_GETTEXT 351else 352ifdef DYNAMIC_GETTEXT 353DEFINES += -D$(DYNAMIC_GETTEXT) 354ifdef GETTEXT_DYNAMIC 355DEFINES += -DGETTEXT_DYNAMIC -DGETTEXT_DLL=\"$(GETTEXT_DYNAMIC)\" 356endif 357endif 358endif 359endif 360 361ifdef PERL 362CFLAGS += -I$(PERLLIBS) -DFEAT_PERL -L$(PERLLIBS) 363ifeq (yes, $(DYNAMIC_PERL)) 364CFLAGS += -DDYNAMIC_PERL -DDYNAMIC_PERL_DLL=\"perl$(PERL_VER).dll\" 365endif 366endif 367 368ifdef LUA 369CFLAGS += -I$(LUA)/include -DFEAT_LUA 370ifeq (yes, $(DYNAMIC_LUA)) 371CFLAGS += -DDYNAMIC_LUA -DDYNAMIC_LUA_DLL=\"lua$(LUA_VER).dll\" 372endif 373endif 374 375ifdef MZSCHEME 376CFLAGS += -I$(MZSCHEME)/include -DFEAT_MZSCHEME -DMZSCHEME_COLLECTS=\"$(MZSCHEME)/collects\" 377ifeq (yes, $(DYNAMIC_MZSCHEME)) 378CFLAGS += -DDYNAMIC_MZSCHEME -DDYNAMIC_MZSCH_DLL=\"lib$(MZSCHEME_MAIN_LIB)$(MZSCHEME_VER).dll\" -DDYNAMIC_MZGC_DLL=\"libmzgc$(MZSCHEME_VER).dll\" 379endif 380endif 381 382ifdef RUBY 383CFLAGS += -DFEAT_RUBY $(RUBYINC) 384ifeq (yes, $(DYNAMIC_RUBY)) 385CFLAGS += -DDYNAMIC_RUBY -DDYNAMIC_RUBY_DLL=\"$(RUBY_INSTALL_NAME).dll\" 386CFLAGS += -DDYNAMIC_RUBY_VER=$(RUBY_VER) 387endif 388endif 389 390ifdef PYTHON 391CFLAGS += -DFEAT_PYTHON 392ifeq (yes, $(DYNAMIC_PYTHON)) 393CFLAGS += -DDYNAMIC_PYTHON 394endif 395endif 396 397ifdef PYTHON3 398CFLAGS += -DFEAT_PYTHON3 399ifeq (yes, $(DYNAMIC_PYTHON3)) 400CFLAGS += -DDYNAMIC_PYTHON3 401endif 402endif 403 404ifdef TCL 405CFLAGS += -DFEAT_TCL $(TCLINC) 406ifeq (yes, $(DYNAMIC_TCL)) 407CFLAGS += -DDYNAMIC_TCL -DDYNAMIC_TCL_DLL=\"tcl$(TCL_VER).dll\" 408endif 409endif 410 411ifeq ($(POSTSCRIPT),yes) 412DEFINES += -DMSWINPS 413endif 414 415ifeq (yes, $(OLE)) 416DEFINES += -DFEAT_OLE 417endif 418 419ifeq ($(CSCOPE),yes) 420DEFINES += -DFEAT_CSCOPE 421endif 422 423ifeq ($(NETBEANS),yes) 424# Only allow NETBEANS for a GUI build. 425ifeq (yes, $(GUI)) 426DEFINES += -DFEAT_NETBEANS_INTG 427 428ifeq ($(NBDEBUG), yes) 429DEFINES += -DNBDEBUG 430NBDEBUG_INCL = nbdebug.h 431NBDEBUG_SRC = nbdebug.c 432endif 433endif 434endif 435 436# Only allow XPM for a GUI build. 437ifeq (yes, $(GUI)) 438 439ifndef XPM 440ifeq ($(ARCH),i386) 441XPM = xpm/x86 442endif 443ifeq ($(ARCH),i486) 444XPM = xpm/x86 445endif 446ifeq ($(ARCH),i586) 447XPM = xpm/x86 448endif 449ifeq ($(ARCH),i686) 450XPM = xpm/x86 451endif 452ifeq ($(ARCH),x86-64) 453XPM = xpm/x64 454endif 455endif 456ifdef XPM 457ifneq ($(XPM),no) 458CFLAGS += -DFEAT_XPM_W32 -I $(XPM)/include -I $(XPM)/../include 459endif 460endif 461 462endif 463 464ifeq ($(DEBUG),yes) 465CFLAGS += -g -fstack-check 466DEBUG_SUFFIX=d 467else 468ifeq ($(OPTIMIZE), SIZE) 469CFLAGS += -Os 470else 471ifeq ($(OPTIMIZE), MAXSPEED) 472CFLAGS += -O3 473CFLAGS += -fomit-frame-pointer -freg-struct-return 474else # SPEED 475CFLAGS += -O2 476endif 477endif 478CFLAGS += -s 479endif 480 481LIB = -lkernel32 -luser32 -lgdi32 -ladvapi32 -lcomdlg32 -lcomctl32 -lversion 482GUIOBJ = $(OUTDIR)/gui.o $(OUTDIR)/gui_w32.o $(OUTDIR)/gui_beval.o $(OUTDIR)/os_w32exe.o 483OBJ = \ 484 $(OUTDIR)/blowfish.o \ 485 $(OUTDIR)/buffer.o \ 486 $(OUTDIR)/charset.o \ 487 $(OUTDIR)/diff.o \ 488 $(OUTDIR)/digraph.o \ 489 $(OUTDIR)/edit.o \ 490 $(OUTDIR)/eval.o \ 491 $(OUTDIR)/ex_cmds.o \ 492 $(OUTDIR)/ex_cmds2.o \ 493 $(OUTDIR)/ex_docmd.o \ 494 $(OUTDIR)/ex_eval.o \ 495 $(OUTDIR)/ex_getln.o \ 496 $(OUTDIR)/fileio.o \ 497 $(OUTDIR)/fold.o \ 498 $(OUTDIR)/getchar.o \ 499 $(OUTDIR)/hardcopy.o \ 500 $(OUTDIR)/hashtab.o \ 501 $(OUTDIR)/main.o \ 502 $(OUTDIR)/mark.o \ 503 $(OUTDIR)/memfile.o \ 504 $(OUTDIR)/memline.o \ 505 $(OUTDIR)/menu.o \ 506 $(OUTDIR)/message.o \ 507 $(OUTDIR)/misc1.o \ 508 $(OUTDIR)/misc2.o \ 509 $(OUTDIR)/move.o \ 510 $(OUTDIR)/mbyte.o \ 511 $(OUTDIR)/normal.o \ 512 $(OUTDIR)/ops.o \ 513 $(OUTDIR)/option.o \ 514 $(OUTDIR)/os_win32.o \ 515 $(OUTDIR)/os_mswin.o \ 516 $(OUTDIR)/pathdef.o \ 517 $(OUTDIR)/popupmnu.o \ 518 $(OUTDIR)/quickfix.o \ 519 $(OUTDIR)/regexp.o \ 520 $(OUTDIR)/screen.o \ 521 $(OUTDIR)/search.o \ 522 $(OUTDIR)/sha256.o \ 523 $(OUTDIR)/spell.o \ 524 $(OUTDIR)/syntax.o \ 525 $(OUTDIR)/tag.o \ 526 $(OUTDIR)/term.o \ 527 $(OUTDIR)/ui.o \ 528 $(OUTDIR)/undo.o \ 529 $(OUTDIR)/version.o \ 530 $(OUTDIR)/vimrc.o \ 531 $(OUTDIR)/window.o 532 533ifdef PERL 534OBJ += $(OUTDIR)/if_perl.o 535endif 536ifdef LUA 537OBJ += $(OUTDIR)/if_lua.o 538endif 539ifdef MZSCHEME 540OBJ += $(OUTDIR)/if_mzsch.o 541MZSCHEME_INCL = if_mzsch.h 542ifeq (yes,$(MZSCHEME_GENERATE_BASE)) 543CFLAGS += -DINCLUDE_MZSCHEME_BASE 544MZ_EXTRA_DEP += mzscheme_base.c 545endif 546ifeq (yes,$(MZSCHEME_PRECISE_GC)) 547CFLAGS += -DMZ_PRECISE_GC 548endif 549endif 550ifdef PYTHON 551OBJ += $(OUTDIR)/if_python.o 552endif 553ifdef PYTHON3 554OBJ += $(OUTDIR)/if_python3.o 555endif 556ifdef RUBY 557OBJ += $(OUTDIR)/if_ruby.o 558endif 559ifdef TCL 560OBJ += $(OUTDIR)/if_tcl.o 561endif 562ifeq ($(CSCOPE),yes) 563OBJ += $(OUTDIR)/if_cscope.o 564endif 565ifeq ($(NETBEANS),yes) 566# Only allow NETBEANS for a GUI build. 567ifeq (yes, $(GUI)) 568OBJ += $(OUTDIR)/netbeans.o 569LIB += -lwsock32 570endif 571endif 572ifdef XPM 573# Only allow XPM for a GUI build. 574ifeq (yes, $(GUI)) 575OBJ += $(OUTDIR)/xpm_w32.o 576# You'll need libXpm.a from http://gnuwin32.sf.net 577LIB += -L $(XPM)/lib -lXpm 578endif 579endif 580 581 582ifdef MZSCHEME 583MZSCHEME_SUFFIX = Z 584endif 585 586ifeq ($(GUI),yes) 587TARGET := gvim$(DEBUG_SUFFIX).exe 588DEFINES += $(DEF_GUI) 589OBJ += $(GUIOBJ) 590LFLAGS += -mwindows 591OUTDIR = gobj$(DEBUG_SUFFIX)$(MZSCHEME_SUFFIX)$(ARCH) 592else 593TARGET := vim$(DEBUG_SUFFIX).exe 594OUTDIR = obj$(DEBUG_SUFFIX)$(MZSCHEME_SUFFIX)$(ARCH) 595endif 596 597ifdef GETTEXT 598ifneq (yes, $(GETTEXT)) 599CFLAGS += -I$(GETTEXTINCLUDE) 600ifndef STATIC_GETTEXT 601LIB += -L$(GETTEXTLIB) -l$(INTLLIB) 602ifeq (USE_SAFE_GETTEXT_DLL, $(DYNAMIC_GETTEXT)) 603OBJ+=$(SAFE_GETTEXT_DLL_OBJ) 604endif 605else 606LIB += -L$(GETTEXTLIB) -lintl 607endif 608endif 609endif 610 611ifdef PERL 612ifeq (no, $(DYNAMIC_PERL)) 613LIB += -lperl$(PERL_VER) 614endif 615endif 616 617ifdef TCL 618LIB += -L$(TCL)/lib 619ifeq (yes, $(DYNAMIC_TCL)) 620LIB += -ltclstub$(TCL_VER) 621else 622LIB += -ltcl$(TCL_VER) 623endif 624endif 625 626ifeq (yes, $(OLE)) 627LIB += -loleaut32 628OBJ += $(OUTDIR)/if_ole.o 629ifeq (yes, $(STATIC_STDCPLUS)) 630LIB += -Wl,-Bstatic -lstdc++ -Wl,-Bdynamic 631else 632LIB += -lstdc++ 633endif 634endif 635 636ifeq (yes, $(MBYTE)) 637DEFINES += -DFEAT_MBYTE 638endif 639 640ifeq (yes, $(IME)) 641DEFINES += -DFEAT_MBYTE_IME 642ifeq (yes, $(DYNAMIC_IME)) 643DEFINES += -DDYNAMIC_IME 644else 645LIB += -limm32 646endif 647endif 648 649ifdef ICONV 650ifneq (yes, $(ICONV)) 651LIB += -L$(ICONV) 652CFLAGS += -I$(ICONV) 653endif 654DEFINES+=-DDYNAMIC_ICONV 655endif 656 657all: $(TARGET) vimrun.exe xxd/xxd.exe install.exe uninstal.exe GvimExt/gvimext.dll 658 659vimrun.exe: vimrun.c 660 $(CC) $(CFLAGS) -o vimrun.exe vimrun.c $(LIB) 661 662install.exe: dosinst.c 663 $(CC) $(CFLAGS) -o install.exe dosinst.c $(LIB) -lole32 -luuid 664 665uninstal.exe: uninstal.c 666 $(CC) $(CFLAGS) -o uninstal.exe uninstal.c $(LIB) 667 668$(TARGET): $(OUTDIR) $(OBJ) 669 $(CC) $(CFLAGS) $(LFLAGS) -o $@ $(OBJ) $(LIB) -lole32 -luuid $(LUA_LIB) $(MZSCHEME_LIBDIR) $(MZSCHEME_LIB) $(PYTHONLIB) $(PYTHON3LIB) $(RUBYLIB) 670 671upx: exes 672 upx gvim.exe 673 upx vim.exe 674 675mpress: exes 676 mpress gvim.exe 677 mpress vim.exe 678 679xxd/xxd.exe: xxd/xxd.c 680 $(MAKE) -C xxd -f Make_ming.mak CC=$(CC) 681 682GvimExt/gvimext.dll: GvimExt/gvimext.cpp GvimExt/gvimext.rc GvimExt/gvimext.h 683 $(MAKE) -C GvimExt -f Make_ming.mak CROSS=$(CROSS) CROSS_COMPILE=$(CROSS_COMPILE) 684 685clean: 686 -$(DEL) $(OUTDIR)$(DIRSLASH)*.o 687 -$(DEL) $(OUTDIR)$(DIRSLASH)*.res 688 -rmdir $(OUTDIR) 689 -$(DEL) *.exe 690 -$(DEL) pathdef.c 691ifdef PERL 692 -$(DEL) if_perl.c 693endif 694ifdef MZSCHEME 695 -$(DEL) mzscheme_base.c 696endif 697 $(MAKE) -C GvimExt -f Make_ming.mak clean 698 $(MAKE) -C xxd -f Make_ming.mak clean 699 700########################################################################### 701INCL = vim.h feature.h os_win32.h os_dos.h ascii.h keymap.h term.h macros.h \ 702 structs.h regexp.h option.h ex_cmds.h proto.h globals.h farsi.h \ 703 gui.h 704 705$(OUTDIR)/if_python.o : if_python.c $(INCL) 706 $(CC) -c $(CFLAGS) $(PYTHONINC) -DDYNAMIC_PYTHON_DLL=\"python$(PYTHON_VER).dll\" $< -o $@ 707 708$(OUTDIR)/if_python3.o : if_python3.c $(INCL) 709 $(CC) -c $(CFLAGS) $(PYTHON3INC) -DDYNAMIC_PYTHON3_DLL=\"PYTHON$(PYTHON3_VER).dll\" $< -o $@ 710 711$(OUTDIR)/%.o : %.c $(INCL) 712 $(CC) -c $(CFLAGS) $< -o $@ 713 714$(OUTDIR)/vimrc.o: vim.rc version.h gui_w32_rc.h 715 $(WINDRES) $(WINDRES_FLAGS) $(DEFINES) \ 716 --input-format=rc --output-format=coff -i vim.rc -o $@ 717 718$(OUTDIR): 719 $(MKDIR) $(OUTDIR) 720 721$(OUTDIR)/ex_docmd.o: ex_docmd.c $(INCL) ex_cmds.h 722 $(CC) -c $(CFLAGS) ex_docmd.c -o $(OUTDIR)/ex_docmd.o 723 724$(OUTDIR)/ex_eval.o: ex_eval.c $(INCL) ex_cmds.h 725 $(CC) -c $(CFLAGS) ex_eval.c -o $(OUTDIR)/ex_eval.o 726 727$(OUTDIR)/if_cscope.o: if_cscope.c $(INCL) if_cscope.h 728 $(CC) -c $(CFLAGS) if_cscope.c -o $(OUTDIR)/if_cscope.o 729 730# Remove -D__IID_DEFINED__ for newer versions of the w32api 731$(OUTDIR)/if_ole.o: if_ole.cpp $(INCL) 732 $(CC) $(CFLAGS) -c -o $(OUTDIR)/if_ole.o if_ole.cpp 733 734$(OUTDIR)/if_ruby.o: if_ruby.c $(INCL) 735ifeq (16, $(RUBY)) 736 $(CC) $(CFLAGS) -U_WIN32 -c -o $(OUTDIR)/if_ruby.o if_ruby.c 737endif 738 739if_perl.c: if_perl.xs typemap 740 $(XSUBPP) -prototypes -typemap \ 741 $(PERLLIB)/ExtUtils/typemap if_perl.xs > $@ 742 743$(OUTDIR)/netbeans.o: netbeans.c $(INCL) $(NBDEBUG_INCL) $(NBDEBUG_SRC) 744 $(CC) -c $(CFLAGS) netbeans.c -o $(OUTDIR)/netbeans.o 745 746$(OUTDIR)/if_mzsch.o: if_mzsch.c $(INCL) if_mzsch.h $(MZ_EXTRA_DEP) 747 $(CC) -c $(CFLAGS) if_mzsch.c -o $(OUTDIR)/if_mzsch.o 748 749mzscheme_base.c: 750 $(MZSCHEME)/mzc --c-mods mzscheme_base.c ++lib scheme/base 751 752pathdef.c: $(INCL) 753ifneq (sh.exe, $(SHELL)) 754 @echo creating pathdef.c 755 @echo '/* pathdef.c */' > pathdef.c 756 @echo '#include "vim.h"' >> pathdef.c 757 @echo 'char_u *default_vim_dir = (char_u *)"$(VIMRCLOC)";' >> pathdef.c 758 @echo 'char_u *default_vimruntime_dir = (char_u *)"$(VIMRUNTIMEDIR)";' >> pathdef.c 759 @echo 'char_u *all_cflags = (char_u *)"$(CC) $(CFLAGS)";' >> pathdef.c 760 @echo 'char_u *all_lflags = (char_u *)"$(CC) $(CFLAGS) $(LFLAGS) -o $(TARGET) $(LIB) -lole32 -luuid $(LUA_LIB) $(MZSCHEME_LIBDIR) $(MZSCHEME_LIB) $(PYTHONLIB) $(PYTHON3LIB) $(RUBYLIB)";' >> pathdef.c 761 @echo 'char_u *compiled_user = (char_u *)"$(USERNAME)";' >> pathdef.c 762 @echo 'char_u *compiled_sys = (char_u *)"$(USERDOMAIN)";' >> pathdef.c 763else 764 @echo creating pathdef.c 765 @echo /* pathdef.c */ > pathdef.c 766 @echo #include "vim.h" >> pathdef.c 767 @echo char_u *default_vim_dir = (char_u *)"$(VIMRCLOC)"; >> pathdef.c 768 @echo char_u *default_vimruntime_dir = (char_u *)"$(VIMRUNTIMEDIR)"; >> pathdef.c 769 @echo char_u *all_cflags = (char_u *)"$(CC) $(CFLAGS)"; >> pathdef.c 770 @echo char_u *all_lflags = (char_u *)"$(CC) $(CFLAGS) $(LFLAGS) -o $(TARGET) $(LIB) -lole32 -luuid $(LUA_LIB) $(MZSCHEME_LIBDIR) $(MZSCHEME_LIB) $(PYTHONLIB) $(PYTHON3LIB) $(RUBYLIB)"; >> pathdef.c 771 @echo char_u *compiled_user = (char_u *)"$(USERNAME)"; >> pathdef.c 772 @echo char_u *compiled_sys = (char_u *)"$(USERDOMAIN)"; >> pathdef.c 773endif 774