# HG changeset patch # User Bram Moolenaar # Date 1415192012 -3600 # Node ID 112c80234ce3815b2c7d1c27ad21aa885d2776f3 # Parent 08adef366ea2a54b03846dceded25eb5c9f44a6f updated for version 7.4.496 Problem: Many lines are both in Make_cyg.mak and Make_ming.mak Solution: Move the common parts to one file. (Ken Takata) diff --git a/Filelist b/Filelist --- a/Filelist +++ b/Filelist @@ -277,6 +277,7 @@ SRC_DOS = \ src/Make_bc3.mak \ src/Make_bc5.mak \ src/Make_cyg.mak \ + src/Make_cyg_ming.mak \ src/Make_djg.mak \ src/Make_ivc.mak \ src/Make_dvc.mak \ diff --git a/src/INSTALLpc.txt b/src/INSTALLpc.txt --- a/src/INSTALLpc.txt +++ b/src/INSTALLpc.txt @@ -228,11 +228,15 @@ at: http://www.mingw.org/ +or you can use 'MinGW-w64' compiler. + + http://mingw-w64.sourceforge.net/ + Once you have downloaded the compiler binaries, unpack them on your hard disk somewhere, and put them on your PATH. If you are on Win95/98 you can edit your AUTOEXEC.BAT file with a line like: - set PATH=C:\GCC-2.95.2\BIN;%PATH% + set PATH=C:\MinGW\bin;%PATH% or on NT/2000/XP, go to the Control Panel, (Performance and Maintenance), System, Advanced, and edit the environment from there. @@ -240,10 +244,10 @@ System, Advanced, and edit the environme Test if gcc is on your path. From a CMD (or COMMAND on '95/98) window: C:\> gcc --version - 2.95.2 + gcc (GCC) 4.8.1 - C:\> make --version - GNU Make version 3.77 (...etc...) + C:\> mingw32-make --version + GNU Make 3.82.90 (...etc...) Now you are ready to rock 'n' roll. Unpack the vim sources (look on www.vim.org for exactly which version of the vim files you need). @@ -255,7 +259,7 @@ Change directory to 'vim\src': and you type: - make -f Make_ming.mak gvim.exe + mingw32-make -f Make_ming.mak gvim.exe After churning for a while, you will end up with 'gvim.exe' in the 'vim\src' directory. @@ -264,7 +268,7 @@ You should not need to do *any* editing way. If, for some reason, you want the console-mode-only version of vim (this is NOT recommended on Win32, especially on '95/'98!!!), you can use: - make -f Make_ming.mak GUI=no vim.exe + mingw32-make -f Make_ming.mak GUI=no vim.exe If you are dismayed by how big the EXE is, I strongly recommend you get 'UPX' (also free!) and compress the file (typical compression is 50%). UPX can be @@ -291,8 +295,7 @@ 3. Cygwin Use Make_cyg.mak with Cygwin's GCC. See http://users.skynet.be/antoine.mechelynck/vim/compile.htm -The Cygnus one many not fully work yet. -With Cygnus gcc you can use the Unix Makefile instead (you need to get the +With Cygnus gcc you should use the Unix Makefile instead (you need to get the Unix archive then). Then you get a Cygwin application (feels like Vim is running on Unix), while with Make_cyg.mak you get a Windows application (like with the other makefiles). @@ -316,9 +319,9 @@ your Linux (or other unix) box. To do t http://www.mingw.org/wiki/LinuxCrossMinGW http://www.libsdl.org/extras/win32/cross/README.txt 2) Get and unpack both the Unix sources and the extra archive - 3) in 'Make_ming.mak', set 'CROSS' to 'yes' instead of 'no'. - Make further changes to 'Make_ming.mak' as you wish. - If your cross-compiler prefix differs from the predefined value, + 3) in 'Make_cyg_ming.mak', set 'CROSS' to 'yes' instead of 'no'. + Make further changes to 'Make_cyg_ming.mak' and 'Make_ming.mak' as you + wish. If your cross-compiler prefix differs from the predefined value, set 'CROSS_COMPILE' corresponding. 4) make -f Make_ming.mak gvim.exe diff --git a/src/Make_cyg.mak b/src/Make_cyg.mak --- a/src/Make_cyg.mak +++ b/src/Make_cyg.mak @@ -1,754 +1,52 @@ # -# Makefile for VIM on Win32, using Cygnus gcc -# Updated by Dan Sharp. -# Last Change: 2014 Aug 10 +# Makefile for VIM on Win32, using MinGW cross compiler on Cygwin # # Also read INSTALLpc.txt! # # This compiles Vim as a Windows application. If you want Vim to run as a # Cygwin application use the Makefile (just like on Unix). # -# GUI no or yes: set to yes if you want the GUI version (yes) -# DIRECTX no or yes: set to yes if you want use DirectWrite (no) -# PERL define to path to Perl dir to get Perl support (not defined) -# PERL_VER define to version of Perl being used (56) -# DYNAMIC_PERL no or yes: set to yes to load the Perl DLL dynamically (yes) -# PYTHON define to path to Python dir to get PYTHON support (not defined) -# PYTHON_VER define to version of Python being used (22) -# DYNAMIC_PYTHON no or yes: use yes to load the Python DLL dynamically (yes) -# PYTHON3 define to path to Python3 dir to get PYTHON3 support (not defined) -# PYTHON3_VER define to version of Python3 being used (22) -# DYNAMIC_PYTHON3 no or yes: use yes to load the Python3 DLL dynamically (yes) -# TCL define to path to TCL dir to get TCL support (not defined) -# TCL_VER define to version of TCL being used (83) -# DYNAMIC_TCL no or yes: use yes to load the TCL DLL dynamically (yes) -# RUBY define to path to Ruby dir to get Ruby support (not defined) -# RUBY_VER define to version of Ruby being used (16) -# RUBY_VER_LONG same, but in format with dot. (1.6) -# You must set RUBY_VER_LONG when changing RUBY_VER. -# You must set RUBY_API_VER version to RUBY_VER_LONG. -# Don't set ruby API version to RUBY_VER like 191. -# DYNAMIC_RUBY no or yes: use yes to load the Ruby DLL dynamically (yes) -# MZSCHEME define to path to MzScheme dir to get MZSCHEME support (not defined) -# MZSCHEME_VER define to version of MzScheme being used (209_000) -# DYNAMIC_MZSCHEME no or yes: use yes to load the MzScheme DLLs dynamically (yes) -# MZSCHEME_DLLS path to MzScheme DLLs (libmzgc and libmzsch), for "static" build. -# MZSCHEME_USE_RACKET define to use "racket" instead of "mzsch". -# LUA define to path to Lua dir to get Lua support (not defined) -# LUA_VER define to version of Lua being used (51) -# DYNAMIC_LUA no or yes: use yes to load the Lua DLL dynamically (yes) -# GETTEXT no or yes: set to yes for dynamic gettext support (yes) -# ICONV no or yes: set to yes for dynamic iconv support (yes) -# MBYTE no or yes: set to yes to include multibyte support (yes) -# IME no or yes: set to yes to include IME support (yes) -# DYNAMIC_IME no or yes: set to yes to load imm32.dll dynamically (yes) -# OLE no or yes: set to yes to make OLE gvim (no) -# DEBUG no or yes: set to yes if you wish a DEBUGging build (no) -# CPUNR No longer supported, use ARCH. -# ARCH i386 through pentium4: select -march argument to compile with -# (i386) -# USEDLL no or yes: set to yes to use the Runtime library DLL (no) -# For USEDLL=yes the cygwin1.dll is required to run Vim. -# For "no" the mingw-gcc-g++ package or the mingw64-i686-gcc-g++ -# package is required to compile Vim. Or set CC to gcc-3 and add -# -L/lib/w32api to EXTRA_LIBS. -# POSTSCRIPT no or yes: set to yes for PostScript printing (no) -# FEATURES TINY, SMALL, NORMAL, BIG or HUGE (BIG) -# WINVER Lowest Win32 version to support. (0x0500) -# CSCOPE no or yes: to include cscope interface support (yes) -# OPTIMIZE SPACE, SPEED, or MAXSPEED: set optimization level (MAXSPEED) -# NETBEANS no or yes: to include netbeans interface support (yes when GUI -# is yes) -# NBDEBUG no or yes: to include netbeans interface debugging support (no) -# XPM define to path to XPM dir to get XPM image support (not defined) -#>>>>> choose options: -ifndef GUI -GUI=yes -endif - -ifndef FEATURES -FEATURES = BIG -endif - -ifndef GETTEXT -GETTEXT = yes -endif - -ifndef ICONV -ICONV = yes -endif - -ifndef MBYTE -MBYTE = yes -endif - -ifndef IME -IME = yes -endif - -ifndef ARCH -ARCH = i386 -endif - -ifndef DIRECTX -DIRECTX = no -endif - -ifndef WINVER -WINVER = 0x0500 -endif - -ifndef CSCOPE -CSCOPE = yes -endif - -ifndef NETBEANS -ifeq ($(GUI),yes) -NETBEANS = yes -endif -endif - -ifndef OPTIMIZE -OPTIMIZE = MAXSPEED -endif +# The old Make_cyg.mak (maintained by Dan Sharp et al.) was merged into +# Make_cyg_ming.mak. Note: USEDLL option was removed. +# This file contains Cygwin specific settings. Common settings are contained +# in Make_cyg_ming.mak. +# +# Last updated by Ken Takata. +# Last Change: 2014 Oct 21 -# Link against the shared version of libstdc++ by default. Set -# STATIC_STDCPLUS to "yes" to link against static version instead. -ifndef STATIC_STDCPLUS -STATIC_STDCPLUS=no -endif - -### See feature.h for a list of optionals. -### Any other defines can be included here. - -DEFINES = -DWIN32 -DHAVE_PATHDEF -DFEAT_$(FEATURES) \ - -DWINVER=$(WINVER) -D_WIN32_WINNT=$(WINVER) -ifeq ($(ARCH),x86-64) -DEFINES+=-DMS_WIN64 -endif -INCLUDES = -march=$(ARCH) -Iproto - -#>>>>> name of the compiler and linker, name of lib directory -ifeq (yes, $(USEDLL)) -# CROSS_COMPILE is used for the gvimext DLL. -CROSS_COMPILE = i686-pc-mingw32- -CC = gcc -RC = windres -else -# i686-pc-mingw32-gcc, i686-w64-mingw32-gcc or gcc-3 can be used. -CROSS_COMPILE = i686-pc-mingw32- -CC = $(CROSS_COMPILE)gcc -RC = $(CROSS_COMPILE)windres -endif - -############################## -# DYNAMIC_PERL=yes and no both work -############################## -ifdef PERL -DEFINES += -DFEAT_PERL -INCLUDES += -I$(PERL)/lib/CORE -EXTRA_OBJS += $(OUTDIR)/if_perl.o - -ifndef DYNAMIC_PERL -DYNAMIC_PERL = yes -endif - -ifndef PERL_VER -PERL_VER = 56 -endif - -ifeq (yes, $(DYNAMIC_PERL)) -DEFINES += -DDYNAMIC_PERL -DDYNAMIC_PERL_DLL=\"perl$(PERL_VER).dll\" -else -EXTRA_LIBS += -L$(PERL)/lib/CORE -lperl$(PERL_VER) -endif -endif - -############################## -# DYNAMIC_PYTHON=yes works. -# DYNAMIC_PYTHON=no does not (unresolved externals on link). -############################## -ifdef PYTHON -DEFINES += -DFEAT_PYTHON -EXTRA_OBJS += $(OUTDIR)/if_python.o - -ifndef DYNAMIC_PYTHON -DYNAMIC_PYTHON = yes -endif - -ifndef PYTHON_VER -PYTHON_VER = 22 -endif - -ifeq (yes, $(DYNAMIC_PYTHON)) -DEFINES += -DDYNAMIC_PYTHON -DDYNAMIC_PYTHON_DLL=\"python$(PYTHON_VER).dll\" -else -EXTRA_LIBS += $(PYTHON)/libs/python$(PYTHON_VER).lib -endif -endif +# uncomment 'PERL' if you want a perl-enabled version +#PERL=/cygdrive/c/perl -############################## -# DYNAMIC_PYTHON3=yes works. -# DYNAMIC_PYTHON3=no does not (unresolved externals on link). -############################## -ifdef PYTHON3 -DEFINES += -DFEAT_PYTHON3 -EXTRA_OBJS += $(OUTDIR)/if_python3.o - -ifndef DYNAMIC_PYTHON3 -DYNAMIC_PYTHON3 = yes -endif - -ifndef PYTHON3_VER -PYTHON3_VER = 31 -endif - -ifeq (yes, $(DYNAMIC_PYTHON3)) -DEFINES += -DDYNAMIC_PYTHON3 -DDYNAMIC_PYTHON3_DLL=\"python$(PYTHON3_VER).dll\" -else -EXTRA_LIBS += $(PYTHON3)/libs/python$(PYTHON3_VER).lib -endif -endif - -############################## -# DYNAMIC_RUBY=yes works. -# DYNAMIC_RUBY=no does not (process exits). -############################## -ifdef RUBY +# uncomment 'LUA' if you want a Lua-enabled version +#LUA=/cygdrive/c/lua -ifndef DYNAMIC_RUBY -DYNAMIC_RUBY=yes -endif -# Set default value -ifndef RUBY_VER -RUBY_VER = 16 -endif -ifndef RUBY_VER_LONG -RUBY_VER_LONG = 1.6 -endif -ifndef RUBY_API_VER -RUBY_API_VER = $(subst .,,$(RUBY_VER_LONG)) -endif - -ifndef RUBY_PLATFORM -ifeq ($(RUBY_VER), 16) -RUBY_PLATFORM = i586-mswin32 -else -ifneq ($(wildcard $(RUBY)/lib/ruby/$(RUBY_VER_LONG)/i386-mingw32),) -RUBY_PLATFORM = i386-mingw32 -else -ifneq ($(wildcard $(RUBY)/lib/ruby/$(RUBY_VER_LONG)/x64-mingw32),) -RUBY_PLATFORM = x64-mingw32 -else -RUBY_PLATFORM = i386-mswin32 -endif -endif -endif -endif - -ifndef RUBY_INSTALL_NAME -ifeq ($(RUBY_VER), 16) -RUBY_INSTALL_NAME = mswin32-ruby$(RUBY_API_VER) -else -ifeq ($(ARCH),x86-64) -RUBY_INSTALL_NAME = x64-msvcrt-ruby$(RUBY_API_VER) -else -RUBY_INSTALL_NAME = msvcrt-ruby$(RUBY_API_VER) -endif -endif -endif - -ifeq (19, $(word 1,$(sort 19 $(RUBY_VER)))) -RUBY_19_OR_LATER = 1 -endif +# uncomment 'MZSCHEME' if you want a MzScheme-enabled version +#MZSCHEME=/cygdrive/d/plt -DEFINES += -DFEAT_RUBY -ifneq ($(findstring w64-mingw32,$(CC)),) -# A workaround for mingw-w64 -DEFINES += -DHAVE_STRUCT_TIMESPEC -DHAVE_STRUCT_TIMEZONE -endif -INCLUDES += -I$(RUBY)/lib/ruby/$(RUBY_VER_LONG)/$(RUBY_PLATFORM) -ifdef RUBY_19_OR_LATER -INCLUDES += -I$(RUBY)/include/ruby-$(RUBY_VER_LONG) -I$(RUBY)/include/ruby-$(RUBY_VER_LONG)/$(RUBY_PLATFORM) -endif -EXTRA_OBJS += $(OUTDIR)/if_ruby.o - -ifeq (yes, $(DYNAMIC_RUBY)) -DEFINES += -DDYNAMIC_RUBY -DDYNAMIC_RUBY_DLL=\"$(RUBY_INSTALL_NAME).dll\" -DEFINES += -DDYNAMIC_RUBY_VER=$(RUBY_VER) -else -EXTRA_LIBS += $(RUBY)/lib/$(RUBY_INSTALL_NAME) -endif -endif - -############################## -# DYNAMIC_MZSCHEME=yes works -# DYNAMIC_MZSCHEME=no works too -############################## -ifdef MZSCHEME -DEFINES += -DFEAT_MZSCHEME -INCLUDES += -I$(MZSCHEME)/include -EXTRA_OBJS += $(OUTDIR)/if_mzsch.o - -ifndef DYNAMIC_MZSCHEME -DYNAMIC_MZSCHEME = yes -endif - -ifndef MZSCHEME_VER -MZSCHEME_VER = 209_000 -endif - -ifndef MZSCHEME_PRECISE_GC -MZSCHEME_PRECISE_GC=no -endif - -# for version 4.x we need to generate byte-code for Scheme base -ifndef MZSCHEME_GENERATE_BASE -MZSCHEME_GENERATE_BASE=no -endif - -ifndef MZSCHEME_USE_RACKET -MZSCHEME_MAIN_LIB=mzsch -else -MZSCHEME_MAIN_LIB=racket -endif - -ifeq (yes, $(DYNAMIC_MZSCHEME)) -DEFINES += -DDYNAMIC_MZSCHEME -DDYNAMIC_MZSCH_DLL=\"lib$(MZSCHEME_MAIN_LIB)$(MZSCHEME_VER).dll\" -DDYNAMIC_MZGC_DLL=\"libmzgc$(MZSCHEME_VER).dll\" -else -ifndef MZSCHEME_DLLS -MZSCHEME_DLLS = $(MZSCHEME) -endif -ifeq (yes,$(MZSCHEME_PRECISE_GC)) -MZSCHEME_LIB=-l$(MZSCHEME_MAIN_LIB)$(MZSCHEME_VER) -else -MZSCHEME_LIB = -l$(MZSCHEME_MAIN_LIB)$(MZSCHEME_VER) -lmzgc$(MZSCHEME_VER) -endif -EXTRA_LIBS += -L$(MZSCHEME_DLLS) -L$(MZSCHEME_DLLS)/lib $(MZSCHEME_LIB) -endif -ifeq (yes,$(MZSCHEME_GENERATE_BASE)) -DEFINES += -DINCLUDE_MZSCHEME_BASE -MZ_EXTRA_DEP += mzscheme_base.c -endif -ifeq (yes,$(MZSCHEME_PRECISE_GC)) -DEFINES += -DMZ_PRECISE_GC -endif -endif - -############################## -# DYNAMIC_TCL=yes and no both work. -############################## -ifdef TCL -DEFINES += -DFEAT_TCL -INCLUDES += -I$(TCL)/include -EXTRA_OBJS += $(OUTDIR)/if_tcl.o +# uncomment 'PYTHON' if you want a python-enabled version +#PYTHON=/cygdrive/c/python20 -ifndef DYNAMIC_TCL -DYNAMIC_TCL = yes -endif - -ifndef TCL_VER -TCL_VER = 83 -endif - -ifeq (yes, $(DYNAMIC_TCL)) -DEFINES += -DDYNAMIC_TCL -DDYNAMIC_TCL_DLL=\"tcl$(TCL_VER).dll\" -EXTRA_LIBS += $(TCL)/lib/tclstub$(TCL_VER).lib -else -EXTRA_LIBS += $(TCL)/lib/tcl$(TCL_VER).lib -endif -endif - -############################## -# DYNAMIC_LUA=yes works. -# DYNAMIC_LUA=no does not (unresolved externals on link). -############################## -ifdef LUA -DEFINES += -DFEAT_LUA -INCLUDES += -I$(LUA)/include -EXTRA_OBJS += $(OUTDIR)/if_lua.o - -ifndef DYNAMIC_LUA -DYNAMIC_LUA = yes -endif - -ifndef LUA_VER -LUA_VER = 51 -endif - -ifeq (yes, $(DYNAMIC_LUA)) -DEFINES += -DDYNAMIC_LUA -DDYNAMIC_LUA_DLL=\"lua$(LUA_VER).dll\" -else -EXTRA_LIBS += $(LUA)/lib/lua$(LUA_VER).lib -endif -endif +# uncomment 'PYTHON3' if you want a python3-enabled version +#PYTHON3=/cygdrive/c/python31 -############################## -ifeq (yes, $(GETTEXT)) -DEFINES += -DDYNAMIC_GETTEXT -endif - -############################## -ifeq (yes, $(ICONV)) -DEFINES += -DDYNAMIC_ICONV -endif - -############################## -ifeq (yes, $(MBYTE)) -DEFINES += -DFEAT_MBYTE -endif - -############################## -ifeq (yes, $(IME)) -DEFINES += -DFEAT_MBYTE_IME - -ifndef DYNAMIC_IME -DYNAMIC_IME = yes -endif - -ifeq (yes, $(DYNAMIC_IME)) -DEFINES += -DDYNAMIC_IME -else -EXTRA_LIBS += -limm32 -endif -endif - -############################## -ifeq (yes, $(DEBUG)) -DEFINES += -DDEBUG -INCLUDES += -g -fstack-check -DEBUG_SUFFIX = d -else - -ifeq ($(OPTIMIZE), SIZE) -OPTFLAG = -Os -else -ifeq ($(OPTIMIZE), MAXSPEED) -OPTFLAG = -O3 -fomit-frame-pointer -freg-struct-return -else -OPTFLAG = -O2 -endif -endif +# uncomment 'TCL' if you want a Tcl-enabled version +#TCL=/cygdrive/c/tcl -# A bug in the GCC <= 3.2 optimizer can cause a crash. The -# following option removes the problem optimization. -OPTFLAG += -fno-strength-reduce - -INCLUDES += -s - -endif - -############################## -# USEDLL=yes will build a Cygwin32 executable that relies on cygwin1.dll. -# USEDLL=no will build a Mingw32 executable with no extra dll dependencies. -############################## -ifeq (yes, $(USEDLL)) -DEFINES += -D_MAX_PATH=256 -D__CYGWIN__ -endif - -############################## -ifeq (yes, $(POSTSCRIPT)) -DEFINES += -DMSWINPS -endif - -############################## -ifeq (yes, $(CSCOPE)) -DEFINES += -DFEAT_CSCOPE -EXTRA_OBJS += $(OUTDIR)/if_cscope.o -endif - -############################## -ifeq ($(GUI),yes) - -############################## -ifeq (yes, $(NETBEANS)) -# Only allow NETBEANS for a GUI build. -DEFINES += -DFEAT_NETBEANS_INTG -EXTRA_OBJS += $(OUTDIR)/netbeans.o -EXTRA_LIBS += -lwsock32 - -ifeq (yes, $(NBDEBUG)) -DEFINES += -DNBDEBUG -NBDEBUG_DEP = nbdebug.h nbdebug.c -endif - -endif - -############################## -ifeq (yes, $(DIRECTX)) -# Only allow DIRECTX for a GUI build. -DEFINES += -DFEAT_DIRECTX -DDYNAMIC_DIRECTX -EXTRA_OBJS += $(OUTDIR)/gui_dwrite.o -EXTRA_LIBS += -ld2d1 -ldwrite -USE_STDCPLUS = yes -endif +# uncomment 'RUBY' if you want a Ruby-enabled version +#RUBY=/cygdribe/c/ruby -############################## -ifndef XPM -ifeq ($(ARCH),i386) -XPM = xpm/x86 -endif -ifeq ($(ARCH),i486) -XPM = xpm/x86 -endif -ifeq ($(ARCH),i586) -XPM = xpm/x86 -endif -ifeq ($(ARCH),i686) -XPM = xpm/x86 -endif -ifeq ($(ARCH),x86-64) -XPM = xpm/x64 -endif -endif -ifdef XPM -ifneq ($(XPM),no) -# Only allow XPM for a GUI build. -DEFINES += -DFEAT_XPM_W32 -INCLUDES += -I$(XPM)/include -I$(XPM)/../include -EXTRA_OBJS += $(OUTDIR)/xpm_w32.o -EXTRA_LIBS += -L$(XPM)/lib -lXpm -endif -endif - -############################## -EXE = gvim$(DEBUG_SUFFIX).exe -OUTDIR = gobj$(DEBUG_SUFFIX) -DEFINES += -DFEAT_GUI_W32 -DFEAT_CLIPBOARD -EXTRA_OBJS += $(OUTDIR)/gui.o $(OUTDIR)/gui_w32.o $(OUTDIR)/gui_beval.o $(OUTDIR)/os_w32exe.o -EXTRA_LIBS += -mwindows -lcomctl32 -lversion -else -EXE = vim$(DEBUG_SUFFIX).exe -OUTDIR = obj$(DEBUG_SUFFIX) -LIBS += -luser32 -lgdi32 -lcomdlg32 -endif - -############################## -ifeq (yes, $(OLE)) -DEFINES += -DFEAT_OLE -EXTRA_OBJS += $(OUTDIR)/if_ole.o -EXTRA_LIBS += -loleaut32 -USE_STDCPLUS = yes -endif - -############################## -ifneq (sh.exe, $(SHELL)) -DEL = rm -MKDIR = mkdir -p -DIRSLASH = / -else -DEL = del -MKDIR = mkdir -DIRSLASH = \\ -endif - -############################## -ifeq (yes, $(USE_STDCPLUS)) -ifeq (yes, $(STATIC_STDCPLUS)) -EXTRA_LIBS += -Wl,-Bstatic -lstdc++ -Wl,-Bdynamic -else -EXTRA_LIBS += -lstdc++ -endif -endif - -#>>>>> end of choices -########################################################################### - -INCL = vim.h globals.h option.h keymap.h macros.h ascii.h term.h os_win32.h \ - structs.h version.h - -CFLAGS = $(OPTFLAG) $(DEFINES) $(INCLUDES) - -RCFLAGS = -O coff $(DEFINES) -OBJ = \ - $(OUTDIR)/blowfish.o \ - $(OUTDIR)/buffer.o \ - $(OUTDIR)/charset.o \ - $(OUTDIR)/crypt.o \ - $(OUTDIR)/crypt_zip.o \ - $(OUTDIR)/diff.o \ - $(OUTDIR)/digraph.o \ - $(OUTDIR)/edit.o \ - $(OUTDIR)/eval.o \ - $(OUTDIR)/ex_cmds.o \ - $(OUTDIR)/ex_cmds2.o \ - $(OUTDIR)/ex_docmd.o \ - $(OUTDIR)/ex_eval.o \ - $(OUTDIR)/ex_getln.o \ - $(OUTDIR)/fileio.o \ - $(OUTDIR)/fold.o \ - $(OUTDIR)/getchar.o \ - $(OUTDIR)/hardcopy.o \ - $(OUTDIR)/hashtab.o \ - $(OUTDIR)/main.o \ - $(OUTDIR)/mark.o \ - $(OUTDIR)/memfile.o \ - $(OUTDIR)/memline.o \ - $(OUTDIR)/menu.o \ - $(OUTDIR)/message.o \ - $(OUTDIR)/misc1.o \ - $(OUTDIR)/misc2.o \ - $(OUTDIR)/move.o \ - $(OUTDIR)/mbyte.o \ - $(OUTDIR)/normal.o \ - $(OUTDIR)/ops.o \ - $(OUTDIR)/option.o \ - $(OUTDIR)/os_win32.o \ - $(OUTDIR)/os_mswin.o \ - $(OUTDIR)/winclip.o \ - $(OUTDIR)/pathdef.o \ - $(OUTDIR)/popupmnu.o \ - $(OUTDIR)/quickfix.o \ - $(OUTDIR)/regexp.o \ - $(OUTDIR)/screen.o \ - $(OUTDIR)/search.o \ - $(OUTDIR)/sha256.o \ - $(OUTDIR)/spell.o \ - $(OUTDIR)/syntax.o \ - $(OUTDIR)/tag.o \ - $(OUTDIR)/term.o \ - $(OUTDIR)/ui.o \ - $(OUTDIR)/undo.o \ - $(OUTDIR)/version.o \ - $(OUTDIR)/vimrc.o \ - $(OUTDIR)/window.o \ - $(EXTRA_OBJS) - -all: $(EXE) xxd/xxd.exe vimrun.exe install.exe uninstal.exe GvimExt/gvimext.dll - -# According to the Cygwin doc 1.2 FAQ, kernel32 should not be specified for -# linking unless calling ld directly. -# See /usr/doc/cygwin-doc-1.2/html/faq_toc.html#TOC93 for more information. -$(EXE): $(OUTDIR) $(OBJ) - $(CC) $(CFLAGS) -o $(EXE) $(OBJ) $(LIBS) -luuid -lole32 $(EXTRA_LIBS) - -xxd/xxd.exe: xxd/xxd.c - $(MAKE) -C xxd -f Make_cyg.mak CC=$(CC) USEDLL=$(USEDLL) - -GvimExt/gvimext.dll: GvimExt/gvimext.cpp GvimExt/gvimext.rc GvimExt/gvimext.h - $(MAKE) -C GvimExt -f Make_cyg.mak CROSS_COMPILE=$(CROSS_COMPILE) - -vimrun.exe: vimrun.c - $(CC) $(CFLAGS) -o vimrun.exe vimrun.c $(LIBS) - -install.exe: dosinst.c - $(CC) $(CFLAGS) -o install.exe dosinst.c $(LIBS) -luuid -lole32 - -uninstal.exe: uninstal.c - $(CC) $(CFLAGS) -o uninstal.exe uninstal.c $(LIBS) - -$(OUTDIR): - $(MKDIR) $(OUTDIR) - -tags: - command /c ctags *.c $(INCL) +# Use MinGW(-w64) cross compiler. +# There are three MinGW packages in Cygwin: +# 32-bit: mingw-gcc-g++ and mingw64-i686-gcc-g++ +# 64-bit: mingw64-x86_64-gcc-g++ +# You may also need to set 'ARCH' in Make_cyg_ming.mak. +CROSS_COMPILE = i686-pc-mingw32- +#CROSS_COMPILE = i686-w64-mingw32- +#CROSS_COMPILE = x86_64-w64-mingw32- -clean: - -$(DEL) $(OUTDIR)$(DIRSLASH)*.o - -rmdir $(OUTDIR) - -$(DEL) $(EXE) vimrun.exe install.exe uninstal.exe -ifdef PERL - -$(DEL) if_perl.c -endif -ifdef MZSCHEME - -$(DEL) mzscheme_base.c -endif - -$(DEL) pathdef.c - $(MAKE) -C xxd -f Make_cyg.mak clean - $(MAKE) -C GvimExt -f Make_cyg.mak clean -distclean: clean - -$(DEL) obj$(DIRSLASH)*.o - -rmdir obj - -$(DEL) gobj$(DIRSLASH)*.o - -rmdir gobj - -$(DEL) objd$(DIRSLASH)*.o - -rmdir objd - -$(DEL) gobjd$(DIRSLASH)*.o - -rmdir gobjd - -$(DEL) *.exe - -########################################################################### - -$(OUTDIR)/%.o : %.c $(INCL) - $(CC) -c $(CFLAGS) $< -o $@ - -$(OUTDIR)/ex_docmd.o: ex_docmd.c $(INCL) ex_cmds.h - $(CC) -c $(CFLAGS) ex_docmd.c -o $(OUTDIR)/ex_docmd.o - -$(OUTDIR)/ex_eval.o: ex_eval.c $(INCL) ex_cmds.h - $(CC) -c $(CFLAGS) ex_eval.c -o $(OUTDIR)/ex_eval.o - -$(OUTDIR)/gui_w32.o: gui_w32.c gui_w48.c $(INCL) - $(CC) -c $(CFLAGS) gui_w32.c -o $(OUTDIR)/gui_w32.o - -$(OUTDIR)/gui_dwrite.o: gui_dwrite.cpp $(INCL) gui_dwrite.h - $(CC) -c $(CFLAGS) gui_dwrite.cpp -o $(OUTDIR)/gui_dwrite.o - -$(OUTDIR)/if_cscope.o: if_cscope.c $(INCL) if_cscope.h - $(CC) -c $(CFLAGS) if_cscope.c -o $(OUTDIR)/if_cscope.o - -$(OUTDIR)/if_ole.o: if_ole.cpp $(INCL) - $(CC) -c $(CFLAGS) if_ole.cpp -o $(OUTDIR)/if_ole.o - -$(OUTDIR)/if_python.o : if_python.c if_py_both.h $(INCL) - $(CC) -c $(CFLAGS) -I$(PYTHON)/include $< -o $@ - -$(OUTDIR)/if_python3.o : if_python3.c if_py_both.h $(INCL) - $(CC) -c $(CFLAGS) -I$(PYTHON3)/include $< -o $@ - -if_perl.c: if_perl.xs typemap - $(PERL)/bin/perl `cygpath -d $(PERL)/lib/ExtUtils/xsubpp` \ - -prototypes -typemap \ - `cygpath -d $(PERL)/lib/ExtUtils/typemap` if_perl.xs > $@ - -$(OUTDIR)/if_perl.o: if_perl.c $(INCL) -ifeq (yes, $(USEDLL)) - $(CC) -c $(CFLAGS) -I/usr/include/mingw -D__MINGW32__ if_perl.c -o $(OUTDIR)/if_perl.o -endif - -$(OUTDIR)/if_ruby.o: if_ruby.c $(INCL) -ifeq (16, $(RUBY_VER)) - $(CC) -c $(CFLAGS) -U_WIN32 if_ruby.c -o $(OUTDIR)/if_ruby.o -endif - -$(OUTDIR)/netbeans.o: netbeans.c $(INCL) $(NBDEBUG_DEP) - $(CC) -c $(CFLAGS) netbeans.c -o $(OUTDIR)/netbeans.o - -$(OUTDIR)/regexp.o: regexp.c regexp_nfa.c $(INCL) - $(CC) -c $(CFLAGS) regexp.c -o $(OUTDIR)/regexp.o - -$(OUTDIR)/if_mzsch.o: if_mzsch.c $(INCL) if_mzsch.h $(MZ_EXTRA_DEP) - $(CC) -c $(CFLAGS) if_mzsch.c -o $(OUTDIR)/if_mzsch.o - -$(OUTDIR)/vimrc.o: vim.rc version.h gui_w32_rc.h - $(RC) $(RCFLAGS) vim.rc -o $(OUTDIR)/vimrc.o - -mzscheme_base.c: - $(MZSCHEME)/mzc --c-mods mzscheme_base.c ++lib scheme/base - -pathdef.c: $(INCL) -ifneq (sh.exe, $(SHELL)) - @echo creating pathdef.c - @echo '/* pathdef.c */' > pathdef.c - @echo '#include "vim.h"' >> pathdef.c - @echo 'char_u *default_vim_dir = (char_u *)"$(VIMRCLOC)";' >> pathdef.c - @echo 'char_u *default_vimruntime_dir = (char_u *)"$(VIMRUNTIMEDIR)";' >> pathdef.c - @echo 'char_u *all_cflags = (char_u *)"$(CC) $(CFLAGS)";' >> pathdef.c - @echo 'char_u *all_lflags = (char_u *)"$(CC) -s -o $(EXE) $(LIBS) -luuid -lole32 $(EXTRA_LIBS)";' >> pathdef.c - @echo 'char_u *compiled_user = (char_u *)"$(USERNAME)";' >> pathdef.c - @echo 'char_u *compiled_sys = (char_u *)"$(USERDOMAIN)";' >> pathdef.c -else - @echo creating pathdef.c - @echo /* pathdef.c */ > pathdef.c - @echo #include "vim.h" >> pathdef.c - @echo char_u *default_vim_dir = (char_u *)"$(VIMRCLOC)"; >> pathdef.c - @echo char_u *default_vimruntime_dir = (char_u *)"$(VIMRUNTIMEDIR)"; >> pathdef.c - @echo char_u *all_cflags = (char_u *)"$(CC) $(CFLAGS)"; >> pathdef.c - @echo char_u *all_lflags = (char_u *)"$(CC) -s -o $(EXE) $(LIBS) -luuid -lole32 $(EXTRA_LIBS)"; >> pathdef.c - @echo char_u *compiled_user = (char_u *)"$(USERNAME)"; >> pathdef.c - @echo char_u *compiled_sys = (char_u *)"$(USERDOMAIN)"; >> pathdef.c -endif - +# Do not change this. +UNDER_CYGWIN = yes +include Make_cyg_ming.mak diff --git a/src/Make_cyg_ming.mak b/src/Make_cyg_ming.mak new file mode 100644 --- /dev/null +++ b/src/Make_cyg_ming.mak @@ -0,0 +1,847 @@ +# Makefile for VIM on Win32 (Cygwin and MinGW) +# +# This file contains common part for Cygwin and MinGW and it is included +# from Make_cyg.mak and Make_ming.mak. +# +# Info at http://www.mingw.org +# Alternative x86 and 64-builds: http://mingw-w64.sourceforge.net +# Also requires GNU make, which you can download from the same sites. +# Get missing libraries from http://gnuwin32.sf.net. +# +# Tested on Win32 NT 4 and Win95. +# +# To make everything, just 'make -f Make_ming.mak'. +# To make just e.g. gvim.exe, 'make -f Make_ming.mak gvim.exe'. +# After a run, you can 'make -f Make_ming.mak clean' to clean up. +# +# NOTE: Sometimes 'GNU Make' will stop after building vimrun.exe -- I think +# it's just run out of memory or something. Run again, and it will continue +# with 'xxd'. +# +# "make upx" makes *compressed* versions of the 32 bit GUI and console EXEs, +# using the excellent UPX compressor: +# http://upx.sourceforge.net/ +# "make mpress" uses the MPRESS compressor for 32- and 64-bit EXEs: +# http://www.matcode.com/mpress.htm +# +# Maintained by Ron Aaron et al. +# Updated 2014 Oct 13. + +#>>>>> choose options: +# set to yes for a debug build +DEBUG=no +# set to SIZE for size, SPEED for speed, MAXSPEED for maximum optimization +OPTIMIZE=MAXSPEED +# set to yes to make gvim, no for vim +GUI=yes +# set to yes if you want to use DirectWrite (DirectX) +# MinGW-w64 is needed, and ARCH should be set to i686 or x86-64. +DIRECTX=no +# FEATURES=[TINY | SMALL | NORMAL | BIG | HUGE] +# Set to TINY to make minimal version (few features). +FEATURES=BIG +# Set to one of i386, i486, i586, i686 as the minimum target processor. +# For amd64/x64 architecture set ARCH=x86-64 . +ARCH=i386 +# Set to yes to cross-compile from unix; no=native Windows (and Cygwin). +CROSS=no +# Set to path to iconv.h and libiconv.a to enable using 'iconv.dll'. +#ICONV="." +ICONV=yes +GETTEXT=yes +# Set to yes to include multibyte support. +MBYTE=yes +# Set to yes to include IME support. +IME=yes +DYNAMIC_IME=yes +# Set to yes to enable writing a postscript file with :hardcopy. +POSTSCRIPT=no +# Set to yes to enable OLE support. +OLE=no +# Set the default $(WINVER) to make it work with pre-Win2k. +ifndef WINVER +WINVER = 0x0500 +endif +# Set to yes to enable Cscope support. +CSCOPE=yes +# Set to yes to enable Netbeans support. +NETBEANS=$(GUI) + + +# Link against the shared version of libstdc++ by default. Set +# STATIC_STDCPLUS to "yes" to link against static version instead. +ifndef STATIC_STDCPLUS +STATIC_STDCPLUS=no +endif + +# If the user doesn't want gettext, undefine it. +ifeq (no, $(GETTEXT)) +GETTEXT= +endif +# Added by E.F. Amatria 2001 Feb 23 +# Uncomment the first line and one of the following three if you want Native Language +# Support. You'll need gnu_gettext.win32, a MINGW32 Windows PORT of gettext by +# Franco Bez . It may be found at +# http://home.a-city.de/franco.bez/gettext/gettext_win32_en.html +# Tested with mingw32 with GCC-2.95.2 on Win98 +# Updated 2001 Jun 9 +#GETTEXT=c:/gettext.win32.msvcrt +#STATIC_GETTEXT=USE_STATIC_GETTEXT +#DYNAMIC_GETTEXT=USE_GETTEXT_DLL +#DYNAMIC_GETTEXT=USE_SAFE_GETTEXT_DLL +SAFE_GETTEXT_DLL_OBJ = $(GETTEXT)/src/safe_gettext_dll/safe_gettext_dll.o +# Alternatively, if you uncomment the two following lines, you get a "safe" version +# without linking the safe_gettext_dll.o object file. +#DYNAMIC_GETTEXT=DYNAMIC_GETTEXT +#GETTEXT_DYNAMIC=gnu_gettext.dll +INTLPATH=$(GETTEXT)/lib/mingw32 +INTLLIB=gnu_gettext + +# If you are using gettext-0.10.35 from http://sourceforge.net/projects/gettext +# or gettext-0.10.37 from http://sourceforge.net/projects/mingwrep/ +# uncomment the following, but I can't build a static version with them, ?-(| +#GETTEXT=c:/gettext-0.10.37-20010430 +#STATIC_GETTEXT=USE_STATIC_GETTEXT +#DYNAMIC_GETTEXT=DYNAMIC_GETTEXT +#INTLPATH=$(GETTEXT)/lib +#INTLLIB=intl + +# Perl interface: +# PERL=[Path to Perl directory] (Set inside Make_cyg.mak or Make_ming.mak) +# DYNAMIC_PERL=yes (to load the Perl DLL dynamically) +# PERL_VER=[Perl version, eg 56, 58, 510] (default is 56) +ifdef PERL +ifndef PERL_VER +PERL_VER=56 +endif +ifndef DYNAMIC_PERL +DYNAMIC_PERL=yes +endif +# on Linux, for cross-compile, it's here: +#PERLLIB=/home/ron/ActivePerl/lib +# on NT, it's here: +PERLEXE=$(PERL)/bin/perl +PERLLIB=$(PERL)/lib +PERLLIBS=$(PERLLIB)/Core +ifeq ($(UNDER_CYGWIN),yes) +PERLTYPEMAP:=$(shell cygpath -m $(PERLLIB)/ExtUtils/typemap) +XSUBPPTRY:=$(shell cygpath -m $(PERLLIB)/ExtUtils/xsubpp) +else +PERLTYPEMAP=$(PERLLIB)/ExtUtils/typemap +XSUBPPTRY=$(PERLLIB)/ExtUtils/xsubpp +endif +XSUBPP_EXISTS=$(shell $(PERLEXE) -e "print 1 unless -e '$(XSUBPPTRY)'") +ifeq "$(XSUBPP_EXISTS)" "" +XSUBPP=$(PERLEXE) "$(XSUBPPTRY)" +else +XSUBPP=xsubpp +endif +endif + +# Lua interface: +# LUA=[Path to Lua directory] (Set inside Make_cyg.mak or Make_ming.mak) +# DYNAMIC_LUA=yes (to load the Lua DLL dynamically) +# LUA_VER=[Lua version, eg 51, 52] (default is 51) +ifdef LUA +ifndef DYNAMIC_LUA +DYNAMIC_LUA=yes +endif + +ifndef LUA_VER +LUA_VER=51 +endif + +ifeq (no,$(DYNAMIC_LUA)) +LUA_LIB = -L$(LUA)/lib -llua +endif + +endif + +# MzScheme interface: +# MZSCHEME=[Path to MzScheme directory] (Set inside Make_cyg.mak or Make_ming.mak) +# DYNAMIC_MZSCHEME=yes (to load the MzScheme DLL dynamically) +# MZSCHEME_VER=[MzScheme version] (default is 205_000) +# MZSCHEME_DEBUG=no +ifdef MZSCHEME +ifndef DYNAMIC_MZSCHEME +DYNAMIC_MZSCHEME=yes +endif + +ifndef MZSCHEME_VER +MZSCHEME_VER=205_000 +endif + +ifndef MZSCHEME_PRECISE_GC +MZSCHEME_PRECISE_GC=no +endif + +# for version 4.x we need to generate byte-code for Scheme base +ifndef MZSCHEME_GENERATE_BASE +MZSCHEME_GENERATE_BASE=no +endif + +ifndef MZSCHEME_USE_RACKET +MZSCHEME_MAIN_LIB=mzsch +else +MZSCHEME_MAIN_LIB=racket +endif + +ifeq (no,$(DYNAMIC_MZSCHEME)) +ifeq (yes,$(MZSCHEME_PRECISE_GC)) +MZSCHEME_LIB=-l$(MZSCHEME_MAIN_LIB)$(MZSCHEME_VER) +else +MZSCHEME_LIB = -l$(MZSCHEME_MAIN_LIB)$(MZSCHEME_VER) -lmzgc$(MZSCHEME_VER) +endif +# the modern MinGW can dynamically link to dlls directly. +# point MZSCHEME_DLLS to where you put libmzschXXXXXXX.dll and libgcXXXXXXX.dll +ifndef MZSCHEME_DLLS +MZSCHEME_DLLS=$(MZSCHEME) +endif +MZSCHEME_LIBDIR=-L$(MZSCHEME_DLLS) -L$(MZSCHEME_DLLS)\lib +endif + +endif + +# Python interface: +# PYTHON=[Path to Python directory] (Set inside Make_cyg.mak or Make_ming.mak) +# DYNAMIC_PYTHON=yes (to load the Python DLL dynamically) +# PYTHON_VER=[Python version, eg 22, 23, ..., 27] (default is 22) +ifdef PYTHON +ifndef DYNAMIC_PYTHON +DYNAMIC_PYTHON=yes +endif + +ifndef PYTHON_VER +PYTHON_VER=22 +endif + +ifeq (no,$(DYNAMIC_PYTHON)) +PYTHONLIB=-L$(PYTHON)/libs -lpython$(PYTHON_VER) +endif +# my include files are in 'win32inc' on Linux, and 'include' in the standard +# NT distro (ActiveState) +ifeq ($(CROSS),no) +PYTHONINC=-I $(PYTHON)/include +else +PYTHONINC=-I $(PYTHON)/win32inc +endif +endif + +# Python3 interface: +# PYTHON3=[Path to Python3 directory] (Set inside Make_cyg.mak or Make_ming.mak) +# DYNAMIC_PYTHON3=yes (to load the Python3 DLL dynamically) +# PYTHON3_VER=[Python3 version, eg 31, 32] (default is 31) +ifdef PYTHON3 +ifndef DYNAMIC_PYTHON3 +DYNAMIC_PYTHON3=yes +endif + +ifndef PYTHON3_VER +PYTHON3_VER=31 +endif + +ifeq (no,$(DYNAMIC_PYTHON3)) +PYTHON3LIB=-L$(PYTHON3)/libs -lPYTHON$(PYTHON3_VER) +endif + +ifeq ($(CROSS),no) +PYTHON3INC=-I $(PYTHON3)/include +else +PYTHON3INC=-I $(PYTHON3)/win32inc +endif +endif + +# TCL interface: +# TCL=[Path to TCL directory] (Set inside Make_cyg.mak or Make_ming.mak) +# DYNAMIC_TCL=yes (to load the TCL DLL dynamically) +# TCL_VER=[TCL version, eg 83, 84] (default is 83) +ifdef TCL +ifndef DYNAMIC_TCL +DYNAMIC_TCL=yes +endif +ifndef TCL_VER +TCL_VER = 83 +endif +TCLINC += -I$(TCL)/include +endif + + +# Ruby interface: +# RUBY=[Path to Ruby directory] (Set inside Make_cyg.mak or Make_ming.mak) +# DYNAMIC_RUBY=yes (to load the Ruby DLL dynamically) +# RUBY_VER=[Ruby version, eg 18, 19, 20] (default is 18) +# RUBY_VER_LONG=[Ruby version, eg 1.8, 1.9.1, 2.0.0] (default is 1.8) +# You must set RUBY_VER_LONG when changing RUBY_VER. +# RUBY_API_VER is derived from RUBY_VER_LONG. +# Note: If you use Ruby 1.9.3, set as follows: +# RUBY_VER=19 +# RUBY_VER_LONG=1.9.1 (not 1.9.3, because the API version is 1.9.1.) +ifdef RUBY +ifndef DYNAMIC_RUBY +DYNAMIC_RUBY=yes +endif +# Set default value +ifndef RUBY_VER +RUBY_VER = 18 +endif +ifndef RUBY_VER_LONG +RUBY_VER_LONG = 1.8 +endif +ifndef RUBY_API_VER +RUBY_API_VER = $(subst .,,$(RUBY_VER_LONG)) +endif + +ifndef RUBY_PLATFORM +ifeq ($(RUBY_VER), 16) +RUBY_PLATFORM = i586-mswin32 +else +ifneq ($(wildcard $(RUBY)/lib/ruby/$(RUBY_VER_LONG)/i386-mingw32),) +RUBY_PLATFORM = i386-mingw32 +else +ifneq ($(wildcard $(RUBY)/lib/ruby/$(RUBY_VER_LONG)/x64-mingw32),) +RUBY_PLATFORM = x64-mingw32 +else +RUBY_PLATFORM = i386-mswin32 +endif +endif +endif +endif + +ifndef RUBY_INSTALL_NAME +ifeq ($(RUBY_VER), 16) +RUBY_INSTALL_NAME = mswin32-ruby$(RUBY_API_VER) +else +ifeq ($(ARCH),x86-64) +RUBY_INSTALL_NAME = x64-msvcrt-ruby$(RUBY_API_VER) +else +RUBY_INSTALL_NAME = msvcrt-ruby$(RUBY_API_VER) +endif +endif +endif + +ifeq (19, $(word 1,$(sort 19 $(RUBY_VER)))) +RUBY_19_OR_LATER = 1 +endif + +RUBYINC = -I $(RUBY)/lib/ruby/$(RUBY_VER_LONG)/$(RUBY_PLATFORM) +ifdef RUBY_19_OR_LATER +RUBYINC += -I $(RUBY)/include/ruby-$(RUBY_VER_LONG) -I $(RUBY)/include/ruby-$(RUBY_VER_LONG)/$(RUBY_PLATFORM) +endif +ifeq (no, $(DYNAMIC_RUBY)) +RUBYLIB = -L$(RUBY)/lib -l$(RUBY_INSTALL_NAME) +endif + +endif # RUBY + +# See feature.h for a list of options. +# Any other defines can be included here. +DEF_GUI=-DFEAT_GUI_W32 -DFEAT_CLIPBOARD +DEFINES=-DWIN32 -DWINVER=$(WINVER) -D_WIN32_WINNT=$(WINVER) \ + -DHAVE_PATHDEF -DFEAT_$(FEATURES) +ifeq ($(ARCH),x86-64) +DEFINES+=-DMS_WIN64 +endif +ifeq ($(CROSS),yes) +# cross-compiler prefix: +ifndef CROSS_COMPILE +CROSS_COMPILE = i586-pc-mingw32msvc- +endif +DEL = rm +MKDIR = mkdir -p +DIRSLASH = / +else +# normal (Windows) compilation: +ifndef CROSS_COMPILE +CROSS_COMPILE = +endif +ifneq (sh.exe, $(SHELL)) +DEL = rm +MKDIR = mkdir -p +DIRSLASH = / +else +DEL = del +MKDIR = mkdir +DIRSLASH = \\ +endif +endif +CC := $(CROSS_COMPILE)gcc +CXX := $(CROSS_COMPILE)g++ +WINDRES := $(CROSS_COMPILE)windres +WINDRES_CC = $(CC) + +#>>>>> end of choices +########################################################################### + +CFLAGS = -Iproto $(DEFINES) -pipe -w -march=$(ARCH) -Wall +WINDRES_FLAGS = --preprocessor="$(WINDRES_CC) -E -xc" -DRC_INVOKED +EXTRA_LIBS = + +ifdef GETTEXT +DEFINES += -DHAVE_GETTEXT -DHAVE_LOCALE_H +GETTEXTINCLUDE = $(GETTEXT)/include +GETTEXTLIB = $(INTLPATH) +ifeq (yes, $(GETTEXT)) +DEFINES += -DDYNAMIC_GETTEXT +else +ifdef DYNAMIC_GETTEXT +DEFINES += -D$(DYNAMIC_GETTEXT) +ifdef GETTEXT_DYNAMIC +DEFINES += -DGETTEXT_DYNAMIC -DGETTEXT_DLL=\"$(GETTEXT_DYNAMIC)\" +endif +endif +endif +endif + +ifdef PERL +CFLAGS += -I$(PERLLIBS) -DFEAT_PERL +ifeq (yes, $(DYNAMIC_PERL)) +CFLAGS += -DDYNAMIC_PERL -DDYNAMIC_PERL_DLL=\"perl$(PERL_VER).dll\" +EXTRA_LIBS += -L$(PERLLIBS) -lperl$(PERL_VER) +endif +endif + +ifdef LUA +CFLAGS += -I$(LUA)/include -I$(LUA) -DFEAT_LUA +ifeq (yes, $(DYNAMIC_LUA)) +CFLAGS += -DDYNAMIC_LUA -DDYNAMIC_LUA_DLL=\"lua$(LUA_VER).dll\" +endif +endif + +ifdef MZSCHEME +CFLAGS += -I$(MZSCHEME)/include -DFEAT_MZSCHEME -DMZSCHEME_COLLECTS=\"$(MZSCHEME)/collects\" +ifeq (yes, $(DYNAMIC_MZSCHEME)) +CFLAGS += -DDYNAMIC_MZSCHEME -DDYNAMIC_MZSCH_DLL=\"lib$(MZSCHEME_MAIN_LIB)$(MZSCHEME_VER).dll\" -DDYNAMIC_MZGC_DLL=\"libmzgc$(MZSCHEME_VER).dll\" +endif +ifeq (yes, "$(MZSCHEME_DEBUG)") +CFLAGS += -DMZSCHEME_FORCE_GC +endif +endif + +ifdef RUBY +CFLAGS += -DFEAT_RUBY $(RUBYINC) +ifeq (yes, $(DYNAMIC_RUBY)) +CFLAGS += -DDYNAMIC_RUBY -DDYNAMIC_RUBY_DLL=\"$(RUBY_INSTALL_NAME).dll\" +CFLAGS += -DDYNAMIC_RUBY_VER=$(RUBY_VER) +endif +ifneq ($(findstring w64-mingw32,$(CC)),) +# A workaround for MinGW-w64 +CFLAGS += -DHAVE_STRUCT_TIMESPEC -DHAVE_STRUCT_TIMEZONE +endif +endif + +ifdef PYTHON +CFLAGS += -DFEAT_PYTHON +ifeq (yes, $(DYNAMIC_PYTHON)) +CFLAGS += -DDYNAMIC_PYTHON +endif +endif + +ifdef PYTHON3 +CFLAGS += -DFEAT_PYTHON3 +ifeq (yes, $(DYNAMIC_PYTHON3)) +CFLAGS += -DDYNAMIC_PYTHON3 +endif +endif + +ifdef TCL +CFLAGS += -DFEAT_TCL $(TCLINC) +ifeq (yes, $(DYNAMIC_TCL)) +CFLAGS += -DDYNAMIC_TCL -DDYNAMIC_TCL_DLL=\"tcl$(TCL_VER).dll\" +endif +endif + +ifeq ($(POSTSCRIPT),yes) +DEFINES += -DMSWINPS +endif + +ifeq (yes, $(OLE)) +DEFINES += -DFEAT_OLE +endif + +ifeq ($(CSCOPE),yes) +DEFINES += -DFEAT_CSCOPE +endif + +ifeq ($(NETBEANS),yes) +# Only allow NETBEANS for a GUI build. +ifeq (yes, $(GUI)) +DEFINES += -DFEAT_NETBEANS_INTG + +ifeq ($(NBDEBUG), yes) +DEFINES += -DNBDEBUG +NBDEBUG_INCL = nbdebug.h +NBDEBUG_SRC = nbdebug.c +endif +endif +endif + +# DirectWrite (DirectX) +ifeq ($(DIRECTX),yes) +# Only allow DirectWrite for a GUI build. +ifeq (yes, $(GUI)) +DEFINES += -DFEAT_DIRECTX -DDYNAMIC_DIRECTX +endif +endif + +# Only allow XPM for a GUI build. +ifeq (yes, $(GUI)) + +ifndef XPM +ifeq ($(ARCH),i386) +XPM = xpm/x86 +endif +ifeq ($(ARCH),i486) +XPM = xpm/x86 +endif +ifeq ($(ARCH),i586) +XPM = xpm/x86 +endif +ifeq ($(ARCH),i686) +XPM = xpm/x86 +endif +ifeq ($(ARCH),x86-64) +XPM = xpm/x64 +endif +endif +ifdef XPM +ifneq ($(XPM),no) +CFLAGS += -DFEAT_XPM_W32 -I $(XPM)/include -I $(XPM)/../include +endif +endif + +endif + +ifeq ($(DEBUG),yes) +CFLAGS += -g -fstack-check +DEBUG_SUFFIX=d +else +ifeq ($(OPTIMIZE), SIZE) +CFLAGS += -Os +else +ifeq ($(OPTIMIZE), MAXSPEED) +CFLAGS += -O3 +CFLAGS += -fomit-frame-pointer -freg-struct-return +else # SPEED +CFLAGS += -O2 +endif +endif +CFLAGS += -s +endif + +LIB = -lkernel32 -luser32 -lgdi32 -ladvapi32 -lcomdlg32 -lcomctl32 -lversion +GUIOBJ = $(OUTDIR)/gui.o $(OUTDIR)/gui_w32.o $(OUTDIR)/gui_beval.o $(OUTDIR)/os_w32exe.o +OBJ = \ + $(OUTDIR)/blowfish.o \ + $(OUTDIR)/buffer.o \ + $(OUTDIR)/charset.o \ + $(OUTDIR)/crypt.o \ + $(OUTDIR)/crypt_zip.o \ + $(OUTDIR)/diff.o \ + $(OUTDIR)/digraph.o \ + $(OUTDIR)/edit.o \ + $(OUTDIR)/eval.o \ + $(OUTDIR)/ex_cmds.o \ + $(OUTDIR)/ex_cmds2.o \ + $(OUTDIR)/ex_docmd.o \ + $(OUTDIR)/ex_eval.o \ + $(OUTDIR)/ex_getln.o \ + $(OUTDIR)/fileio.o \ + $(OUTDIR)/fold.o \ + $(OUTDIR)/getchar.o \ + $(OUTDIR)/hardcopy.o \ + $(OUTDIR)/hashtab.o \ + $(OUTDIR)/main.o \ + $(OUTDIR)/mark.o \ + $(OUTDIR)/memfile.o \ + $(OUTDIR)/memline.o \ + $(OUTDIR)/menu.o \ + $(OUTDIR)/message.o \ + $(OUTDIR)/misc1.o \ + $(OUTDIR)/misc2.o \ + $(OUTDIR)/move.o \ + $(OUTDIR)/mbyte.o \ + $(OUTDIR)/normal.o \ + $(OUTDIR)/ops.o \ + $(OUTDIR)/option.o \ + $(OUTDIR)/os_win32.o \ + $(OUTDIR)/os_mswin.o \ + $(OUTDIR)/winclip.o \ + $(OUTDIR)/pathdef.o \ + $(OUTDIR)/popupmnu.o \ + $(OUTDIR)/quickfix.o \ + $(OUTDIR)/regexp.o \ + $(OUTDIR)/screen.o \ + $(OUTDIR)/search.o \ + $(OUTDIR)/sha256.o \ + $(OUTDIR)/spell.o \ + $(OUTDIR)/syntax.o \ + $(OUTDIR)/tag.o \ + $(OUTDIR)/term.o \ + $(OUTDIR)/ui.o \ + $(OUTDIR)/undo.o \ + $(OUTDIR)/version.o \ + $(OUTDIR)/vimrc.o \ + $(OUTDIR)/window.o + +ifdef PERL +OBJ += $(OUTDIR)/if_perl.o +endif +ifdef LUA +OBJ += $(OUTDIR)/if_lua.o +endif +ifdef MZSCHEME +OBJ += $(OUTDIR)/if_mzsch.o +MZSCHEME_INCL = if_mzsch.h +ifeq (yes,$(MZSCHEME_GENERATE_BASE)) +CFLAGS += -DINCLUDE_MZSCHEME_BASE +MZ_EXTRA_DEP += mzscheme_base.c +endif +ifeq (yes,$(MZSCHEME_PRECISE_GC)) +CFLAGS += -DMZ_PRECISE_GC +endif +endif +ifdef PYTHON +OBJ += $(OUTDIR)/if_python.o +endif +ifdef PYTHON3 +OBJ += $(OUTDIR)/if_python3.o +endif +ifdef RUBY +OBJ += $(OUTDIR)/if_ruby.o +endif +ifdef TCL +OBJ += $(OUTDIR)/if_tcl.o +endif +ifeq ($(CSCOPE),yes) +OBJ += $(OUTDIR)/if_cscope.o +endif +ifeq ($(NETBEANS),yes) +# Only allow NETBEANS for a GUI build. +ifeq (yes, $(GUI)) +OBJ += $(OUTDIR)/netbeans.o +LIB += -lwsock32 +endif +endif +ifeq ($(DIRECTX),yes) +# Only allow DIRECTX for a GUI build. +ifeq (yes, $(GUI)) +OBJ += $(OUTDIR)/gui_dwrite.o +LIB += -ld2d1 -ldwrite +USE_STDCPLUS = yes +endif +endif +ifneq ($(XPM),no) +# Only allow XPM for a GUI build. +ifeq (yes, $(GUI)) +OBJ += $(OUTDIR)/xpm_w32.o +# You'll need libXpm.a from http://gnuwin32.sf.net +LIB += -L$(XPM)/lib -lXpm +endif +endif + + +ifdef MZSCHEME +MZSCHEME_SUFFIX = Z +endif + +ifeq ($(GUI),yes) +TARGET := gvim$(DEBUG_SUFFIX).exe +DEFINES += $(DEF_GUI) +OBJ += $(GUIOBJ) +LFLAGS += -mwindows +OUTDIR = gobj$(DEBUG_SUFFIX)$(MZSCHEME_SUFFIX)$(ARCH) +else +TARGET := vim$(DEBUG_SUFFIX).exe +OUTDIR = obj$(DEBUG_SUFFIX)$(MZSCHEME_SUFFIX)$(ARCH) +endif + +ifdef GETTEXT +ifneq (yes, $(GETTEXT)) +CFLAGS += -I$(GETTEXTINCLUDE) +ifndef STATIC_GETTEXT +LIB += -L$(GETTEXTLIB) -l$(INTLLIB) +ifeq (USE_SAFE_GETTEXT_DLL, $(DYNAMIC_GETTEXT)) +OBJ+=$(SAFE_GETTEXT_DLL_OBJ) +endif +else +LIB += -L$(GETTEXTLIB) -lintl +endif +endif +endif + +ifdef PERL +ifeq (no, $(DYNAMIC_PERL)) +LIB += -L$(PERLLIBS) -lperl$(PERL_VER) +endif +endif + +ifdef TCL +LIB += -L$(TCL)/lib +ifeq (yes, $(DYNAMIC_TCL)) +LIB += -ltclstub$(TCL_VER) +else +LIB += -ltcl$(TCL_VER) +endif +endif + +ifeq (yes, $(OLE)) +LIB += -loleaut32 +OBJ += $(OUTDIR)/if_ole.o +USE_STDCPLUS = yes +endif + +ifeq (yes, $(MBYTE)) +DEFINES += -DFEAT_MBYTE +endif + +ifeq (yes, $(IME)) +DEFINES += -DFEAT_MBYTE_IME +ifeq (yes, $(DYNAMIC_IME)) +DEFINES += -DDYNAMIC_IME +else +LIB += -limm32 +endif +endif + +ifdef ICONV +ifneq (yes, $(ICONV)) +LIB += -L$(ICONV) +CFLAGS += -I$(ICONV) +endif +DEFINES+=-DDYNAMIC_ICONV +endif + +ifeq (yes, $(USE_STDCPLUS)) +ifeq (yes, $(STATIC_STDCPLUS)) +LIB += -Wl,-Bstatic -lstdc++ -Wl,-Bdynamic +else +LIB += -lstdc++ +endif +endif + +all: $(TARGET) vimrun.exe xxd/xxd.exe install.exe uninstal.exe GvimExt/gvimext.dll + +vimrun.exe: vimrun.c + $(CC) $(CFLAGS) -o vimrun.exe vimrun.c $(LIB) + +install.exe: dosinst.c + $(CC) $(CFLAGS) -o install.exe dosinst.c $(LIB) -lole32 -luuid + +uninstal.exe: uninstal.c + $(CC) $(CFLAGS) -o uninstal.exe uninstal.c $(LIB) + +$(TARGET): $(OUTDIR) $(OBJ) + $(CC) $(CFLAGS) $(LFLAGS) -o $@ $(OBJ) $(LIB) -lole32 -luuid $(LUA_LIB) $(MZSCHEME_LIBDIR) $(MZSCHEME_LIB) $(PYTHONLIB) $(PYTHON3LIB) $(RUBYLIB) + +upx: exes + upx gvim.exe + upx vim.exe + +mpress: exes + mpress gvim.exe + mpress vim.exe + +xxd/xxd.exe: xxd/xxd.c + $(MAKE) -C xxd -f Make_ming.mak CC='$(CC)' + +GvimExt/gvimext.dll: GvimExt/gvimext.cpp GvimExt/gvimext.rc GvimExt/gvimext.h + $(MAKE) -C GvimExt -f Make_ming.mak CROSS=$(CROSS) CROSS_COMPILE=$(CROSS_COMPILE) CXX='$(CXX)' STATIC_STDCPLUS=$(STATIC_STDCPLUS) + +clean: + -$(DEL) $(OUTDIR)$(DIRSLASH)*.o + -$(DEL) $(OUTDIR)$(DIRSLASH)*.res + -rmdir $(OUTDIR) + -$(DEL) *.exe + -$(DEL) pathdef.c +ifdef PERL + -$(DEL) if_perl.c +endif +ifdef MZSCHEME + -$(DEL) mzscheme_base.c +endif + $(MAKE) -C GvimExt -f Make_ming.mak clean + $(MAKE) -C xxd -f Make_ming.mak clean + +########################################################################### +INCL = vim.h feature.h os_win32.h os_dos.h ascii.h keymap.h term.h macros.h \ + structs.h regexp.h option.h ex_cmds.h proto.h globals.h farsi.h \ + gui.h + +$(OUTDIR)/if_python.o : if_python.c if_py_both.h $(INCL) + $(CC) -c $(CFLAGS) $(PYTHONINC) -DDYNAMIC_PYTHON_DLL=\"python$(PYTHON_VER).dll\" $< -o $@ + +$(OUTDIR)/if_python3.o : if_python3.c if_py_both.h $(INCL) + $(CC) -c $(CFLAGS) $(PYTHON3INC) -DDYNAMIC_PYTHON3_DLL=\"PYTHON$(PYTHON3_VER).dll\" $< -o $@ + +$(OUTDIR)/%.o : %.c $(INCL) + $(CC) -c $(CFLAGS) $< -o $@ + +$(OUTDIR)/vimrc.o: vim.rc version.h gui_w32_rc.h + $(WINDRES) $(WINDRES_FLAGS) $(DEFINES) \ + --input-format=rc --output-format=coff -i vim.rc -o $@ + +$(OUTDIR): + $(MKDIR) $(OUTDIR) + +$(OUTDIR)/ex_docmd.o: ex_docmd.c $(INCL) ex_cmds.h + $(CC) -c $(CFLAGS) ex_docmd.c -o $(OUTDIR)/ex_docmd.o + +$(OUTDIR)/ex_eval.o: ex_eval.c $(INCL) ex_cmds.h + $(CC) -c $(CFLAGS) ex_eval.c -o $(OUTDIR)/ex_eval.o + +$(OUTDIR)/gui_w32.o: gui_w32.c gui_w48.c $(INCL) + $(CC) -c $(CFLAGS) gui_w32.c -o $(OUTDIR)/gui_w32.o + +$(OUTDIR)/gui_dwrite.o: gui_dwrite.cpp $(INCL) gui_dwrite.h + $(CC) -c $(CFLAGS) gui_dwrite.cpp -o $(OUTDIR)/gui_dwrite.o + +$(OUTDIR)/if_cscope.o: if_cscope.c $(INCL) if_cscope.h + $(CC) -c $(CFLAGS) if_cscope.c -o $(OUTDIR)/if_cscope.o + +# Remove -D__IID_DEFINED__ for newer versions of the w32api +$(OUTDIR)/if_ole.o: if_ole.cpp $(INCL) + $(CC) $(CFLAGS) -c -o $(OUTDIR)/if_ole.o if_ole.cpp + +$(OUTDIR)/if_ruby.o: if_ruby.c $(INCL) +ifeq (16, $(RUBY)) + $(CC) $(CFLAGS) -U_WIN32 -c -o $(OUTDIR)/if_ruby.o if_ruby.c +endif + +if_perl.c: if_perl.xs typemap + $(XSUBPP) -prototypes -typemap \ + "$(PERLTYPEMAP)" if_perl.xs > $@ + +$(OUTDIR)/netbeans.o: netbeans.c $(INCL) $(NBDEBUG_INCL) $(NBDEBUG_SRC) + $(CC) -c $(CFLAGS) netbeans.c -o $(OUTDIR)/netbeans.o + +$(OUTDIR)/regexp.o: regexp.c regexp_nfa.c $(INCL) + $(CC) -c $(CFLAGS) regexp.c -o $(OUTDIR)/regexp.o + +$(OUTDIR)/if_mzsch.o: if_mzsch.c $(INCL) if_mzsch.h $(MZ_EXTRA_DEP) + $(CC) -c $(CFLAGS) if_mzsch.c -o $(OUTDIR)/if_mzsch.o + +mzscheme_base.c: + $(MZSCHEME)/mzc --c-mods mzscheme_base.c ++lib scheme/base + +pathdef.c: $(INCL) +ifneq (sh.exe, $(SHELL)) + @echo creating pathdef.c + @echo '/* pathdef.c */' > pathdef.c + @echo '#include "vim.h"' >> pathdef.c + @echo 'char_u *default_vim_dir = (char_u *)"$(VIMRCLOC)";' >> pathdef.c + @echo 'char_u *default_vimruntime_dir = (char_u *)"$(VIMRUNTIMEDIR)";' >> pathdef.c + @echo 'char_u *all_cflags = (char_u *)"$(CC) $(CFLAGS)";' >> pathdef.c + @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 + @echo 'char_u *compiled_user = (char_u *)"$(USERNAME)";' >> pathdef.c + @echo 'char_u *compiled_sys = (char_u *)"$(USERDOMAIN)";' >> pathdef.c +else + @echo creating pathdef.c + @echo /* pathdef.c */ > pathdef.c + @echo #include "vim.h" >> pathdef.c + @echo char_u *default_vim_dir = (char_u *)"$(VIMRCLOC)"; >> pathdef.c + @echo char_u *default_vimruntime_dir = (char_u *)"$(VIMRUNTIMEDIR)"; >> pathdef.c + @echo char_u *all_cflags = (char_u *)"$(CC) $(CFLAGS)"; >> pathdef.c + @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 + @echo char_u *compiled_user = (char_u *)"$(USERNAME)"; >> pathdef.c + @echo char_u *compiled_sys = (char_u *)"$(USERDOMAIN)"; >> pathdef.c +endif diff --git a/src/Make_ming.mak b/src/Make_ming.mak --- a/src/Make_ming.mak +++ b/src/Make_ming.mak @@ -1,193 +1,27 @@ -# Makefile for VIM on Win32 -# -# Info at http://www.mingw.org -# Alternative x86 and 64-builds: http://mingw-w64.sourceforge.net -# Also requires GNU make, which you can download from the same sites. -# Get missing libraries from http://gnuwin32.sf.net. -# -# Tested on Win32 NT 4 and Win95. # -# To make everything, just 'make -f Make_ming.mak'. -# To make just e.g. gvim.exe, 'make -f Make_ming.mak gvim.exe'. -# After a run, you can 'make -f Make_ming.mak clean' to clean up. +# Makefile for VIM on Win32, using MinGW # -# NOTE: Sometimes 'GNU Make' will stop after building vimrun.exe -- I think -# it's just run out of memory or something. Run again, and it will continue -# with 'xxd'. -# -# "make upx" makes *compressed* versions of the 32 bit GUI and console EXEs, -# using the excellent UPX compressor: -# http://upx.sourceforge.net/ -# "make mpress" uses the MPRESS compressor for 32- and 64-bit EXEs: -# http://www.matcode.com/mpress.htm +# Also read INSTALLpc.txt! # -# Maintained by Ron Aaron et al. -# Updated 2014 Oct 13. - -#>>>>> choose options: -# set to yes for a debug build -DEBUG=no -# set to SIZE for size, SPEED for speed, MAXSPEED for maximum optimization -OPTIMIZE=MAXSPEED -# set to yes to make gvim, no for vim -GUI=yes -# set to yes if you want to use DirectWrite (DirectX) -DIRECTX=no -# FEATURES=[TINY | SMALL | NORMAL | BIG | HUGE] -# Set to TINY to make minimal version (few features). -FEATURES=BIG -# Set to one of i386, i486, i586, i686 as the minimum target processor. -# For amd64/x64 architecture set ARCH=x86-64 . -ARCH=i386 -# Set to yes to cross-compile from unix; no=native Windows. -CROSS=no -# Set to path to iconv.h and libiconv.a to enable using 'iconv.dll'. -#ICONV="." -ICONV=yes -GETTEXT=yes -# Set to yes to include multibyte support. -MBYTE=yes -# Set to yes to include IME support. -IME=yes -DYNAMIC_IME=yes -# Set to yes to enable writing a postscript file with :hardcopy. -POSTSCRIPT=no -# Set to yes to enable OLE support. -OLE=no -# Set the default $(WINVER) to make it work with pre-Win2k. -ifndef WINVER -WINVER = 0x0500 -endif -# Set to yes to enable Cscope support. -CSCOPE=yes -# Set to yes to enable Netbeans support. -NETBEANS=$(GUI) +# The old Make_ming.mak (maintained by Ron Aaron et al.) was merged into +# Make_cyg_ming.mak. +# This file contains MinGW specific settings. Common settings are contained +# in Make_cyg_ming.mak. +# +# Last updated by Ken Takata. +# Last Change: 2014 Oct 21 -# Link against the shared version of libstdc++ by default. Set -# STATIC_STDCPLUS to "yes" to link against static version instead. -ifndef STATIC_STDCPLUS -STATIC_STDCPLUS=no -endif - -# If the user doesn't want gettext, undefine it. -ifeq (no, $(GETTEXT)) -GETTEXT= -endif -# Added by E.F. Amatria 2001 Feb 23 -# Uncomment the first line and one of the following three if you want Native Language -# Support. You'll need gnu_gettext.win32, a MINGW32 Windows PORT of gettext by -# Franco Bez . It may be found at -# http://home.a-city.de/franco.bez/gettext/gettext_win32_en.html -# Tested with mingw32 with GCC-2.95.2 on Win98 -# Updated 2001 Jun 9 -#GETTEXT=c:/gettext.win32.msvcrt -#STATIC_GETTEXT=USE_STATIC_GETTEXT -#DYNAMIC_GETTEXT=USE_GETTEXT_DLL -#DYNAMIC_GETTEXT=USE_SAFE_GETTEXT_DLL -SAFE_GETTEXT_DLL_OBJ = $(GETTEXT)/src/safe_gettext_dll/safe_gettext_dll.o -# Alternatively, if you uncomment the two following lines, you get a "safe" version -# without linking the safe_gettext_dll.o object file. -#DYNAMIC_GETTEXT=DYNAMIC_GETTEXT -#GETTEXT_DYNAMIC=gnu_gettext.dll -INTLPATH=$(GETTEXT)/lib/mingw32 -INTLLIB=gnu_gettext - -# If you are using gettext-0.10.35 from http://sourceforge.net/projects/gettext -# or gettext-0.10.37 from http://sourceforge.net/projects/mingwrep/ -# uncomment the following, but I can't build a static version with them, ?-(| -#GETTEXT=c:/gettext-0.10.37-20010430 -#STATIC_GETTEXT=USE_STATIC_GETTEXT -#DYNAMIC_GETTEXT=DYNAMIC_GETTEXT -#INTLPATH=$(GETTEXT)/lib -#INTLLIB=intl - # uncomment 'PERL' if you want a perl-enabled version -#PERL=C:/perl -ifdef PERL -ifndef PERL_VER -PERL_VER=56 -endif -ifndef DYNAMIC_PERL -DYNAMIC_PERL=yes -endif -# on Linux, for cross-compile, it's here: -#PERLLIB=/home/ron/ActivePerl/lib -# on NT, it's here: -PERLLIB=$(PERL)/lib -PERLLIBS=$(PERLLIB)/Core -XSUBPPTRY=$(PERLLIB)/ExtUtils/xsubpp -XSUBPP_EXISTS=$(shell perl -e "print 1 unless -e '$(XSUBPPTRY)'") -ifeq "$(XSUBPP_EXISTS)" "" -XSUBPP=perl $(XSUBPPTRY) -else -XSUBPP=xsubpp -endif -endif +#PERL=c:/perl # uncomment 'LUA' if you want a Lua-enabled version -#LUA=/usr/local -ifdef LUA -ifndef DYNAMIC_LUA -DYNAMIC_LUA=yes -endif - -ifndef LUA_VER -LUA_VER=51 -endif - -ifeq (no,$(DYNAMIC_LUA)) -LUA_LIB = -L$(LUA)/lib -llua -endif - -endif +#LUA=c:/lua # uncomment 'MZSCHEME' if you want a MzScheme-enabled version #MZSCHEME=d:/plt -ifdef MZSCHEME -ifndef DYNAMIC_MZSCHEME -DYNAMIC_MZSCHEME=yes -endif -ifndef MZSCHEME_VER -MZSCHEME_VER=205_000 -endif - -ifndef MZSCHEME_PRECISE_GC -MZSCHEME_PRECISE_GC=no -endif - -# for version 4.x we need to generate byte-code for Scheme base -ifndef MZSCHEME_GENERATE_BASE -MZSCHEME_GENERATE_BASE=no -endif - -ifndef MZSCHEME_USE_RACKET -MZSCHEME_MAIN_LIB=mzsch -else -MZSCHEME_MAIN_LIB=racket -endif - -ifeq (no,$(DYNAMIC_MZSCHEME)) -ifeq (yes,$(MZSCHEME_PRECISE_GC)) -MZSCHEME_LIB=-l$(MZSCHEME_MAIN_LIB)$(MZSCHEME_VER) -else -MZSCHEME_LIB = -l$(MZSCHEME_MAIN_LIB)$(MZSCHEME_VER) -lmzgc$(MZSCHEME_VER) -endif -# the modern MinGW can dynamically link to dlls directly. -# point MZSCHEME_DLLS to where you put libmzschXXXXXXX.dll and libgcXXXXXXX.dll -ifndef MZSCHEME_DLLS -MZSCHEME_DLLS=$(MZSCHEME) -endif -MZSCHEME_LIBDIR=-L$(MZSCHEME_DLLS) -L$(MZSCHEME_DLLS)\lib -endif - -endif - -# Python support -- works with the ActiveState python 2.0 release (and others -# too, probably) -# -# uncomment 'PYTHON' to make python-enabled version +# uncomment 'PYTHON' if you want a python-enabled version # Put the path to the python distro here. If cross compiling from Linux, you # will also need to convert the header files to unix instead of dos format: # for fil in *.h ; do vim -e -c 'set ff=unix|w|q' $fil @@ -200,631 +34,16 @@ endif # on my NT box, it's here: #PYTHON=c:/python20 -ifdef PYTHON -ifndef DYNAMIC_PYTHON -DYNAMIC_PYTHON=yes -endif - -ifndef PYTHON_VER -PYTHON_VER=22 -endif - -ifeq (no,$(DYNAMIC_PYTHON)) -PYTHONLIB=-L$(PYTHON)/libs -lpython$(PYTHON_VER) -endif -# my include files are in 'win32inc' on Linux, and 'include' in the standard -# NT distro (ActiveState) -ifeq ($(CROSS),no) -PYTHONINC=-I $(PYTHON)/include -else -PYTHONINC=-I $(PYTHON)/win32inc -endif -endif - -#PYTHON3: See comment for Python 2 above - -ifdef PYTHON3 -ifndef DYNAMIC_PYTHON3 -DYNAMIC_PYTHON3=yes -endif +# uncomment 'PYTHON3' if you want a python3-enabled version +#PYTHON3=c:/python31 -ifndef PYTHON3_VER -PYTHON3_VER=31 -endif - -ifeq (no,$(DYNAMIC_PYTHON3)) -PYTHON3LIB=-L$(PYTHON3)/libs -lPYTHON$(PYTHON3_VER) -endif - -ifeq ($(CROSS),no) -PYTHON3INC=-I $(PYTHON3)/include -else -PYTHON3INC=-I $(PYTHON3)/win32inc -endif -endif +# uncomment 'TCL' if you want a Tcl-enabled version +#TCL=c:/tcl -# TCL interface: -# TCL=[Path to TCL directory] -# DYNAMIC_TCL=yes (to load the TCL DLL dynamically) -# TCL_VER=[TCL version, eg 83, 84] (default is 83) -#TCL=c:/tcl -ifdef TCL -ifndef DYNAMIC_TCL -DYNAMIC_TCL=yes -endif -ifndef TCL_VER -TCL_VER = 83 -endif -TCLINC += -I$(TCL)/include -endif +# uncomment 'RUBY' if you want a Ruby-enabled version +#RUBY=c:/ruby -# Ruby interface: -# RUBY=[Path to Ruby directory] -# DYNAMIC_RUBY=yes (to load the Ruby DLL dynamically) -# RUBY_VER=[Ruby version, eg 16, 17] (default is 16) -# RUBY_VER_LONG=[Ruby version, eg 1.6, 1.7] (default is 1.6) -# You must set RUBY_VER_LONG when changing RUBY_VER. -# You must set RUBY_API_VER version to RUBY_VER_LONG. -# Don't set ruby API version to RUBY_VER like 191. -#RUBY=c:/ruby -ifdef RUBY -ifndef DYNAMIC_RUBY -DYNAMIC_RUBY=yes -endif -# Set default value -ifndef RUBY_VER -RUBY_VER = 16 -endif -ifndef RUBY_VER_LONG -RUBY_VER_LONG = 1.6 -endif -ifndef RUBY_API_VER -RUBY_API_VER = $(subst .,,$(RUBY_VER_LONG)) -endif - -ifndef RUBY_PLATFORM -ifeq ($(RUBY_VER), 16) -RUBY_PLATFORM = i586-mswin32 -else -ifneq ($(wildcard $(RUBY)/lib/ruby/$(RUBY_VER_LONG)/i386-mingw32),) -RUBY_PLATFORM = i386-mingw32 -else -ifneq ($(wildcard $(RUBY)/lib/ruby/$(RUBY_VER_LONG)/x64-mingw32),) -RUBY_PLATFORM = x64-mingw32 -else -RUBY_PLATFORM = i386-mswin32 -endif -endif -endif -endif - -ifndef RUBY_INSTALL_NAME -ifeq ($(RUBY_VER), 16) -RUBY_INSTALL_NAME = mswin32-ruby$(RUBY_API_VER) -else -ifeq ($(ARCH),x86-64) -RUBY_INSTALL_NAME = x64-msvcrt-ruby$(RUBY_API_VER) -else -RUBY_INSTALL_NAME = msvcrt-ruby$(RUBY_API_VER) -endif -endif -endif - -ifeq (19, $(word 1,$(sort 19 $(RUBY_VER)))) -RUBY_19_OR_LATER = 1 -endif - -RUBYINC = -I $(RUBY)/lib/ruby/$(RUBY_VER_LONG)/$(RUBY_PLATFORM) -ifdef RUBY_19_OR_LATER -RUBYINC += -I $(RUBY)/include/ruby-$(RUBY_VER_LONG) -I $(RUBY)/include/ruby-$(RUBY_VER_LONG)/$(RUBY_PLATFORM) -endif -ifeq (no, $(DYNAMIC_RUBY)) -RUBYLIB = -L$(RUBY)/lib -l$(RUBY_INSTALL_NAME) -endif - -endif # RUBY - -# See feature.h for a list of options. -# Any other defines can be included here. -DEF_GUI=-DFEAT_GUI_W32 -DFEAT_CLIPBOARD -DEFINES=-DWIN32 -DWINVER=$(WINVER) -D_WIN32_WINNT=$(WINVER) \ - -DHAVE_PATHDEF -DFEAT_$(FEATURES) -ifeq ($(ARCH),x86-64) -DEFINES+=-DMS_WIN64 -endif -ifeq ($(CROSS),yes) -# cross-compiler prefix: -CROSS_COMPILE = i586-pc-mingw32msvc- -DEL = rm -MKDIR = mkdir -p -DIRSLASH = / -else -# normal (Windows) compilation: -CROSS_COMPILE = -ifneq (sh.exe, $(SHELL)) -DEL = rm -MKDIR = mkdir -p -DIRSLASH = / -else -DEL = del -MKDIR = mkdir -DIRSLASH = \\ -endif -endif -CC := $(CROSS_COMPILE)gcc -WINDRES := $(CROSS_COMPILE)windres -WINDRES_CC = $(CC) - -#>>>>> end of choices -########################################################################### - -CFLAGS = -Iproto $(DEFINES) -pipe -w -march=$(ARCH) -Wall -WINDRES_FLAGS = --preprocessor="$(WINDRES_CC) -E -xc" -DRC_INVOKED -EXTRA_LIBS = - -ifdef GETTEXT -DEFINES += -DHAVE_GETTEXT -DHAVE_LOCALE_H -GETTEXTINCLUDE = $(GETTEXT)/include -GETTEXTLIB = $(INTLPATH) -ifeq (yes, $(GETTEXT)) -DEFINES += -DDYNAMIC_GETTEXT -else -ifdef DYNAMIC_GETTEXT -DEFINES += -D$(DYNAMIC_GETTEXT) -ifdef GETTEXT_DYNAMIC -DEFINES += -DGETTEXT_DYNAMIC -DGETTEXT_DLL=\"$(GETTEXT_DYNAMIC)\" -endif -endif -endif -endif - -ifdef PERL -CFLAGS += -I$(PERLLIBS) -DFEAT_PERL -ifeq (yes, $(DYNAMIC_PERL)) -CFLAGS += -DDYNAMIC_PERL -DDYNAMIC_PERL_DLL=\"perl$(PERL_VER).dll\" -EXTRA_LIBS += -L$(PERLLIBS) -lperl$(PERL_VER) -endif -endif - -ifdef LUA -CFLAGS += -I$(LUA)/include -DFEAT_LUA -ifeq (yes, $(DYNAMIC_LUA)) -CFLAGS += -DDYNAMIC_LUA -DDYNAMIC_LUA_DLL=\"lua$(LUA_VER).dll\" -endif -endif - -ifdef MZSCHEME -CFLAGS += -I$(MZSCHEME)/include -DFEAT_MZSCHEME -DMZSCHEME_COLLECTS=\"$(MZSCHEME)/collects\" -ifeq (yes, $(DYNAMIC_MZSCHEME)) -CFLAGS += -DDYNAMIC_MZSCHEME -DDYNAMIC_MZSCH_DLL=\"lib$(MZSCHEME_MAIN_LIB)$(MZSCHEME_VER).dll\" -DDYNAMIC_MZGC_DLL=\"libmzgc$(MZSCHEME_VER).dll\" -endif -ifeq (yes, "$(MZSCHEME_DEBUG)") -CFLAGS += -DMZSCHEME_FORCE_GC -endif -endif - -ifdef RUBY -CFLAGS += -DFEAT_RUBY $(RUBYINC) -ifeq (yes, $(DYNAMIC_RUBY)) -CFLAGS += -DDYNAMIC_RUBY -DDYNAMIC_RUBY_DLL=\"$(RUBY_INSTALL_NAME).dll\" -CFLAGS += -DDYNAMIC_RUBY_VER=$(RUBY_VER) -endif -endif - -ifdef PYTHON -CFLAGS += -DFEAT_PYTHON -ifeq (yes, $(DYNAMIC_PYTHON)) -CFLAGS += -DDYNAMIC_PYTHON -endif -endif - -ifdef PYTHON3 -CFLAGS += -DFEAT_PYTHON3 -ifeq (yes, $(DYNAMIC_PYTHON3)) -CFLAGS += -DDYNAMIC_PYTHON3 -endif -endif - -ifdef TCL -CFLAGS += -DFEAT_TCL $(TCLINC) -ifeq (yes, $(DYNAMIC_TCL)) -CFLAGS += -DDYNAMIC_TCL -DDYNAMIC_TCL_DLL=\"tcl$(TCL_VER).dll\" -endif -endif - -ifeq ($(POSTSCRIPT),yes) -DEFINES += -DMSWINPS -endif - -ifeq (yes, $(OLE)) -DEFINES += -DFEAT_OLE -endif - -ifeq ($(CSCOPE),yes) -DEFINES += -DFEAT_CSCOPE -endif - -ifeq ($(NETBEANS),yes) -# Only allow NETBEANS for a GUI build. -ifeq (yes, $(GUI)) -DEFINES += -DFEAT_NETBEANS_INTG - -ifeq ($(NBDEBUG), yes) -DEFINES += -DNBDEBUG -NBDEBUG_INCL = nbdebug.h -NBDEBUG_SRC = nbdebug.c -endif -endif -endif - -# DirectWrite (DirectX) -ifeq ($(DIRECTX),yes) -# Only allow DirectWrite for a GUI build. -ifeq (yes, $(GUI)) -DEFINES += -DFEAT_DIRECTX -DDYNAMIC_DIRECTX -endif -endif - -# Only allow XPM for a GUI build. -ifeq (yes, $(GUI)) - -ifndef XPM -ifeq ($(ARCH),i386) -XPM = xpm/x86 -endif -ifeq ($(ARCH),i486) -XPM = xpm/x86 -endif -ifeq ($(ARCH),i586) -XPM = xpm/x86 -endif -ifeq ($(ARCH),i686) -XPM = xpm/x86 -endif -ifeq ($(ARCH),x86-64) -XPM = xpm/x64 -endif -endif -ifdef XPM -ifneq ($(XPM),no) -CFLAGS += -DFEAT_XPM_W32 -I $(XPM)/include -I $(XPM)/../include -endif -endif - -endif - -ifeq ($(DEBUG),yes) -CFLAGS += -g -fstack-check -DEBUG_SUFFIX=d -else -ifeq ($(OPTIMIZE), SIZE) -CFLAGS += -Os -else -ifeq ($(OPTIMIZE), MAXSPEED) -CFLAGS += -O3 -CFLAGS += -fomit-frame-pointer -freg-struct-return -else # SPEED -CFLAGS += -O2 -endif -endif -CFLAGS += -s -endif - -LIB = -lkernel32 -luser32 -lgdi32 -ladvapi32 -lcomdlg32 -lcomctl32 -lversion -GUIOBJ = $(OUTDIR)/gui.o $(OUTDIR)/gui_w32.o $(OUTDIR)/gui_beval.o $(OUTDIR)/os_w32exe.o -OBJ = \ - $(OUTDIR)/blowfish.o \ - $(OUTDIR)/buffer.o \ - $(OUTDIR)/charset.o \ - $(OUTDIR)/crypt.o \ - $(OUTDIR)/crypt_zip.o \ - $(OUTDIR)/diff.o \ - $(OUTDIR)/digraph.o \ - $(OUTDIR)/edit.o \ - $(OUTDIR)/eval.o \ - $(OUTDIR)/ex_cmds.o \ - $(OUTDIR)/ex_cmds2.o \ - $(OUTDIR)/ex_docmd.o \ - $(OUTDIR)/ex_eval.o \ - $(OUTDIR)/ex_getln.o \ - $(OUTDIR)/fileio.o \ - $(OUTDIR)/fold.o \ - $(OUTDIR)/getchar.o \ - $(OUTDIR)/hardcopy.o \ - $(OUTDIR)/hashtab.o \ - $(OUTDIR)/main.o \ - $(OUTDIR)/mark.o \ - $(OUTDIR)/memfile.o \ - $(OUTDIR)/memline.o \ - $(OUTDIR)/menu.o \ - $(OUTDIR)/message.o \ - $(OUTDIR)/misc1.o \ - $(OUTDIR)/misc2.o \ - $(OUTDIR)/move.o \ - $(OUTDIR)/mbyte.o \ - $(OUTDIR)/normal.o \ - $(OUTDIR)/ops.o \ - $(OUTDIR)/option.o \ - $(OUTDIR)/os_win32.o \ - $(OUTDIR)/os_mswin.o \ - $(OUTDIR)/winclip.o \ - $(OUTDIR)/pathdef.o \ - $(OUTDIR)/popupmnu.o \ - $(OUTDIR)/quickfix.o \ - $(OUTDIR)/regexp.o \ - $(OUTDIR)/screen.o \ - $(OUTDIR)/search.o \ - $(OUTDIR)/sha256.o \ - $(OUTDIR)/spell.o \ - $(OUTDIR)/syntax.o \ - $(OUTDIR)/tag.o \ - $(OUTDIR)/term.o \ - $(OUTDIR)/ui.o \ - $(OUTDIR)/undo.o \ - $(OUTDIR)/version.o \ - $(OUTDIR)/vimrc.o \ - $(OUTDIR)/window.o - -ifdef PERL -OBJ += $(OUTDIR)/if_perl.o -endif -ifdef LUA -OBJ += $(OUTDIR)/if_lua.o -endif -ifdef MZSCHEME -OBJ += $(OUTDIR)/if_mzsch.o -MZSCHEME_INCL = if_mzsch.h -ifeq (yes,$(MZSCHEME_GENERATE_BASE)) -CFLAGS += -DINCLUDE_MZSCHEME_BASE -MZ_EXTRA_DEP += mzscheme_base.c -endif -ifeq (yes,$(MZSCHEME_PRECISE_GC)) -CFLAGS += -DMZ_PRECISE_GC -endif -endif -ifdef PYTHON -OBJ += $(OUTDIR)/if_python.o -endif -ifdef PYTHON3 -OBJ += $(OUTDIR)/if_python3.o -endif -ifdef RUBY -OBJ += $(OUTDIR)/if_ruby.o -endif -ifdef TCL -OBJ += $(OUTDIR)/if_tcl.o -endif -ifeq ($(CSCOPE),yes) -OBJ += $(OUTDIR)/if_cscope.o -endif -ifeq ($(NETBEANS),yes) -# Only allow NETBEANS for a GUI build. -ifeq (yes, $(GUI)) -OBJ += $(OUTDIR)/netbeans.o -LIB += -lwsock32 -endif -endif -ifeq ($(DIRECTX),yes) -# Only allow DIRECTX for a GUI build. -ifeq (yes, $(GUI)) -OBJ += $(OUTDIR)/gui_dwrite.o -LIB += -ld2d1 -ldwrite -USE_STDCPLUS = yes -endif -endif -ifneq ($(XPM),no) -# Only allow XPM for a GUI build. -ifeq (yes, $(GUI)) -OBJ += $(OUTDIR)/xpm_w32.o -# You'll need libXpm.a from http://gnuwin32.sf.net -LIB += -L$(XPM)/lib -lXpm -endif -endif - - -ifdef MZSCHEME -MZSCHEME_SUFFIX = Z -endif - -ifeq ($(GUI),yes) -TARGET := gvim$(DEBUG_SUFFIX).exe -DEFINES += $(DEF_GUI) -OBJ += $(GUIOBJ) -LFLAGS += -mwindows -OUTDIR = gobj$(DEBUG_SUFFIX)$(MZSCHEME_SUFFIX)$(ARCH) -else -TARGET := vim$(DEBUG_SUFFIX).exe -OUTDIR = obj$(DEBUG_SUFFIX)$(MZSCHEME_SUFFIX)$(ARCH) -endif - -ifdef GETTEXT -ifneq (yes, $(GETTEXT)) -CFLAGS += -I$(GETTEXTINCLUDE) -ifndef STATIC_GETTEXT -LIB += -L$(GETTEXTLIB) -l$(INTLLIB) -ifeq (USE_SAFE_GETTEXT_DLL, $(DYNAMIC_GETTEXT)) -OBJ+=$(SAFE_GETTEXT_DLL_OBJ) -endif -else -LIB += -L$(GETTEXTLIB) -lintl -endif -endif -endif - -ifdef PERL -ifeq (no, $(DYNAMIC_PERL)) -LIB += -L$(PERLLIBS) -lperl$(PERL_VER) -endif -endif - -ifdef TCL -LIB += -L$(TCL)/lib -ifeq (yes, $(DYNAMIC_TCL)) -LIB += -ltclstub$(TCL_VER) -else -LIB += -ltcl$(TCL_VER) -endif -endif - -ifeq (yes, $(OLE)) -LIB += -loleaut32 -OBJ += $(OUTDIR)/if_ole.o -USE_STDCPLUS = yes -endif - -ifeq (yes, $(MBYTE)) -DEFINES += -DFEAT_MBYTE -endif - -ifeq (yes, $(IME)) -DEFINES += -DFEAT_MBYTE_IME -ifeq (yes, $(DYNAMIC_IME)) -DEFINES += -DDYNAMIC_IME -else -LIB += -limm32 -endif -endif - -ifdef ICONV -ifneq (yes, $(ICONV)) -LIB += -L$(ICONV) -CFLAGS += -I$(ICONV) -endif -DEFINES+=-DDYNAMIC_ICONV -endif - -ifeq (yes, $(USE_STDCPLUS)) -ifeq (yes, $(STATIC_STDCPLUS)) -LIB += -Wl,-Bstatic -lstdc++ -Wl,-Bdynamic -else -LIB += -lstdc++ -endif -endif - -all: $(TARGET) vimrun.exe xxd/xxd.exe install.exe uninstal.exe GvimExt/gvimext.dll - -vimrun.exe: vimrun.c - $(CC) $(CFLAGS) -o vimrun.exe vimrun.c $(LIB) - -install.exe: dosinst.c - $(CC) $(CFLAGS) -o install.exe dosinst.c $(LIB) -lole32 -luuid - -uninstal.exe: uninstal.c - $(CC) $(CFLAGS) -o uninstal.exe uninstal.c $(LIB) - -$(TARGET): $(OUTDIR) $(OBJ) - $(CC) $(CFLAGS) $(LFLAGS) -o $@ $(OBJ) $(LIB) -lole32 -luuid $(LUA_LIB) $(MZSCHEME_LIBDIR) $(MZSCHEME_LIB) $(PYTHONLIB) $(PYTHON3LIB) $(RUBYLIB) - -upx: exes - upx gvim.exe - upx vim.exe - -mpress: exes - mpress gvim.exe - mpress vim.exe - -xxd/xxd.exe: xxd/xxd.c - $(MAKE) -C xxd -f Make_ming.mak CC=$(CC) - -GvimExt/gvimext.dll: GvimExt/gvimext.cpp GvimExt/gvimext.rc GvimExt/gvimext.h - $(MAKE) -C GvimExt -f Make_ming.mak CROSS=$(CROSS) CROSS_COMPILE=$(CROSS_COMPILE) - -clean: - -$(DEL) $(OUTDIR)$(DIRSLASH)*.o - -$(DEL) $(OUTDIR)$(DIRSLASH)*.res - -rmdir $(OUTDIR) - -$(DEL) *.exe - -$(DEL) pathdef.c -ifdef PERL - -$(DEL) if_perl.c -endif -ifdef MZSCHEME - -$(DEL) mzscheme_base.c -endif - $(MAKE) -C GvimExt -f Make_ming.mak clean - $(MAKE) -C xxd -f Make_ming.mak clean - -########################################################################### -INCL = vim.h feature.h os_win32.h os_dos.h ascii.h keymap.h term.h macros.h \ - structs.h regexp.h option.h ex_cmds.h proto.h globals.h farsi.h \ - gui.h - -$(OUTDIR)/if_python.o : if_python.c if_py_both.h $(INCL) - $(CC) -c $(CFLAGS) $(PYTHONINC) -DDYNAMIC_PYTHON_DLL=\"python$(PYTHON_VER).dll\" $< -o $@ - -$(OUTDIR)/if_python3.o : if_python3.c if_py_both.h $(INCL) - $(CC) -c $(CFLAGS) $(PYTHON3INC) -DDYNAMIC_PYTHON3_DLL=\"PYTHON$(PYTHON3_VER).dll\" $< -o $@ - -$(OUTDIR)/%.o : %.c $(INCL) - $(CC) -c $(CFLAGS) $< -o $@ - -$(OUTDIR)/vimrc.o: vim.rc version.h gui_w32_rc.h - $(WINDRES) $(WINDRES_FLAGS) $(DEFINES) \ - --input-format=rc --output-format=coff -i vim.rc -o $@ - -$(OUTDIR): - $(MKDIR) $(OUTDIR) - -$(OUTDIR)/ex_docmd.o: ex_docmd.c $(INCL) ex_cmds.h - $(CC) -c $(CFLAGS) ex_docmd.c -o $(OUTDIR)/ex_docmd.o - -$(OUTDIR)/ex_eval.o: ex_eval.c $(INCL) ex_cmds.h - $(CC) -c $(CFLAGS) ex_eval.c -o $(OUTDIR)/ex_eval.o - -$(OUTDIR)/gui_w32.o: gui_w32.c gui_w48.c $(INCL) - $(CC) -c $(CFLAGS) gui_w32.c -o $(OUTDIR)/gui_w32.o - -$(OUTDIR)/gui_dwrite.o: gui_dwrite.cpp $(INCL) gui_dwrite.h - $(CC) -c $(CFLAGS) gui_dwrite.cpp -o $(OUTDIR)/gui_dwrite.o - -$(OUTDIR)/if_cscope.o: if_cscope.c $(INCL) if_cscope.h - $(CC) -c $(CFLAGS) if_cscope.c -o $(OUTDIR)/if_cscope.o - -# Remove -D__IID_DEFINED__ for newer versions of the w32api -$(OUTDIR)/if_ole.o: if_ole.cpp $(INCL) - $(CC) $(CFLAGS) -c -o $(OUTDIR)/if_ole.o if_ole.cpp - -$(OUTDIR)/if_ruby.o: if_ruby.c $(INCL) -ifeq (16, $(RUBY)) - $(CC) $(CFLAGS) -U_WIN32 -c -o $(OUTDIR)/if_ruby.o if_ruby.c -endif - -if_perl.c: if_perl.xs typemap - $(XSUBPP) -prototypes -typemap \ - $(PERLLIB)/ExtUtils/typemap if_perl.xs > $@ - -$(OUTDIR)/netbeans.o: netbeans.c $(INCL) $(NBDEBUG_INCL) $(NBDEBUG_SRC) - $(CC) -c $(CFLAGS) netbeans.c -o $(OUTDIR)/netbeans.o - -$(OUTDIR)/regexp.o: regexp.c regexp_nfa.c $(INCL) - $(CC) -c $(CFLAGS) regexp.c -o $(OUTDIR)/regexp.o - -$(OUTDIR)/if_mzsch.o: if_mzsch.c $(INCL) if_mzsch.h $(MZ_EXTRA_DEP) - $(CC) -c $(CFLAGS) if_mzsch.c -o $(OUTDIR)/if_mzsch.o - -mzscheme_base.c: - $(MZSCHEME)/mzc --c-mods mzscheme_base.c ++lib scheme/base - -pathdef.c: $(INCL) -ifneq (sh.exe, $(SHELL)) - @echo creating pathdef.c - @echo '/* pathdef.c */' > pathdef.c - @echo '#include "vim.h"' >> pathdef.c - @echo 'char_u *default_vim_dir = (char_u *)"$(VIMRCLOC)";' >> pathdef.c - @echo 'char_u *default_vimruntime_dir = (char_u *)"$(VIMRUNTIMEDIR)";' >> pathdef.c - @echo 'char_u *all_cflags = (char_u *)"$(CC) $(CFLAGS)";' >> pathdef.c - @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 - @echo 'char_u *compiled_user = (char_u *)"$(USERNAME)";' >> pathdef.c - @echo 'char_u *compiled_sys = (char_u *)"$(USERDOMAIN)";' >> pathdef.c -else - @echo creating pathdef.c - @echo /* pathdef.c */ > pathdef.c - @echo #include "vim.h" >> pathdef.c - @echo char_u *default_vim_dir = (char_u *)"$(VIMRCLOC)"; >> pathdef.c - @echo char_u *default_vimruntime_dir = (char_u *)"$(VIMRUNTIMEDIR)"; >> pathdef.c - @echo char_u *all_cflags = (char_u *)"$(CC) $(CFLAGS)"; >> pathdef.c - @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 - @echo char_u *compiled_user = (char_u *)"$(USERNAME)"; >> pathdef.c - @echo char_u *compiled_sys = (char_u *)"$(USERDOMAIN)"; >> pathdef.c -endif +# Do not change this. +UNDER_CYGWIN = no +include Make_cyg_ming.mak diff --git a/src/Make_mvc.mak b/src/Make_mvc.mak --- a/src/Make_mvc.mak +++ b/src/Make_mvc.mak @@ -50,13 +50,14 @@ # Perl interface: # PERL=[Path to Perl directory] # DYNAMIC_PERL=yes (to load the Perl DLL dynamically) -# PERL_VER=[Perl version, in the form 55 (5.005), 56 (5.6.x), etc] +# PERL_VER=[Perl version, in the form 55 (5.005), 56 (5.6.x), +# 510 (5.10.x), etc] # (default is 56) # # Python interface: # PYTHON=[Path to Python directory] # DYNAMIC_PYTHON=yes (to load the Python DLL dynamically) -# PYTHON_VER=[Python version, eg 15, 20] (default is 22) +# PYTHON_VER=[Python version, eg 22, 23, ..., 27] (default is 22) # # Python3 interface: # PYTHON3=[Path to Python3 directory] @@ -66,11 +67,13 @@ # Ruby interface: # RUBY=[Path to Ruby directory] # DYNAMIC_RUBY=yes (to load the Ruby DLL dynamically) -# RUBY_VER=[Ruby version, eg 16, 17] (default is 18) -# RUBY_VER_LONG=[Ruby version, eg 1.6, 1.7] (default is 1.8) +# RUBY_VER=[Ruby version, eg 18, 19, 20] (default is 18) +# RUBY_VER_LONG=[Ruby version, eg 1.8, 1.9.1, 2.0.0] (default is 1.8) # You must set RUBY_VER_LONG when change RUBY_VER. -# You must set RUBY_API_VER to RUBY_VER_LONG. -# Don't set ruby API version to RUBY_VER like 191. +# RUBY_API_VER is derived from RUBY_VER_LONG. +# Note: If you use Ruby 1.9.3, set as follows: +# RUBY_VER=19 +# RUBY_VER_LONG=1.9.1 (not 1.9.3, because the API version is 1.9.1.) # # Tcl interface: # TCL=[Path to Tcl directory] diff --git a/src/version.c b/src/version.c --- a/src/version.c +++ b/src/version.c @@ -742,6 +742,8 @@ static char *(features[]) = static int included_patches[] = { /* Add new patch number below this line */ /**/ + 496, +/**/ 495, /**/ 494,