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