comparison src/Make_cyg.mak @ 6326:112c80234ce3 v7.4.496

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)
author Bram Moolenaar <bram@vim.org>
date Wed, 05 Nov 2014 13:53:32 +0100
parents 0079791cbbea
children 626fb8e8bb8a
comparison
equal deleted inserted replaced
6325:08adef366ea2 6326:112c80234ce3
1 # 1 #
2 # Makefile for VIM on Win32, using Cygnus gcc 2 # Makefile for VIM on Win32, using MinGW cross compiler on Cygwin
3 # Updated by Dan Sharp.
4 # Last Change: 2014 Aug 10
5 # 3 #
6 # Also read INSTALLpc.txt! 4 # Also read INSTALLpc.txt!
7 # 5 #
8 # This compiles Vim as a Windows application. If you want Vim to run as a 6 # This compiles Vim as a Windows application. If you want Vim to run as a
9 # Cygwin application use the Makefile (just like on Unix). 7 # Cygwin application use the Makefile (just like on Unix).
10 # 8 #
11 # GUI no or yes: set to yes if you want the GUI version (yes) 9 # The old Make_cyg.mak (maintained by Dan Sharp et al.) was merged into
12 # DIRECTX no or yes: set to yes if you want use DirectWrite (no) 10 # Make_cyg_ming.mak. Note: USEDLL option was removed.
13 # PERL define to path to Perl dir to get Perl support (not defined) 11 # This file contains Cygwin specific settings. Common settings are contained
14 # PERL_VER define to version of Perl being used (56) 12 # in Make_cyg_ming.mak.
15 # DYNAMIC_PERL no or yes: set to yes to load the Perl DLL dynamically (yes) 13 #
16 # PYTHON define to path to Python dir to get PYTHON support (not defined) 14 # Last updated by Ken Takata.
17 # PYTHON_VER define to version of Python being used (22) 15 # Last Change: 2014 Oct 21
18 # DYNAMIC_PYTHON no or yes: use yes to load the Python DLL dynamically (yes)
19 # PYTHON3 define to path to Python3 dir to get PYTHON3 support (not defined)
20 # PYTHON3_VER define to version of Python3 being used (22)
21 # DYNAMIC_PYTHON3 no or yes: use yes to load the Python3 DLL dynamically (yes)
22 # TCL define to path to TCL dir to get TCL support (not defined)
23 # TCL_VER define to version of TCL being used (83)
24 # DYNAMIC_TCL no or yes: use yes to load the TCL DLL dynamically (yes)
25 # RUBY define to path to Ruby dir to get Ruby support (not defined)
26 # RUBY_VER define to version of Ruby being used (16)
27 # RUBY_VER_LONG same, but in format with dot. (1.6)
28 # You must set RUBY_VER_LONG when changing RUBY_VER.
29 # You must set RUBY_API_VER version to RUBY_VER_LONG.
30 # Don't set ruby API version to RUBY_VER like 191.
31 # DYNAMIC_RUBY no or yes: use yes to load the Ruby DLL dynamically (yes)
32 # MZSCHEME define to path to MzScheme dir to get MZSCHEME support (not defined)
33 # MZSCHEME_VER define to version of MzScheme being used (209_000)
34 # DYNAMIC_MZSCHEME no or yes: use yes to load the MzScheme DLLs dynamically (yes)
35 # MZSCHEME_DLLS path to MzScheme DLLs (libmzgc and libmzsch), for "static" build.
36 # MZSCHEME_USE_RACKET define to use "racket" instead of "mzsch".
37 # LUA define to path to Lua dir to get Lua support (not defined)
38 # LUA_VER define to version of Lua being used (51)
39 # DYNAMIC_LUA no or yes: use yes to load the Lua DLL dynamically (yes)
40 # GETTEXT no or yes: set to yes for dynamic gettext support (yes)
41 # ICONV no or yes: set to yes for dynamic iconv support (yes)
42 # MBYTE no or yes: set to yes to include multibyte support (yes)
43 # IME no or yes: set to yes to include IME support (yes)
44 # DYNAMIC_IME no or yes: set to yes to load imm32.dll dynamically (yes)
45 # OLE no or yes: set to yes to make OLE gvim (no)
46 # DEBUG no or yes: set to yes if you wish a DEBUGging build (no)
47 # CPUNR No longer supported, use ARCH.
48 # ARCH i386 through pentium4: select -march argument to compile with
49 # (i386)
50 # USEDLL no or yes: set to yes to use the Runtime library DLL (no)
51 # For USEDLL=yes the cygwin1.dll is required to run Vim.
52 # For "no" the mingw-gcc-g++ package or the mingw64-i686-gcc-g++
53 # package is required to compile Vim. Or set CC to gcc-3 and add
54 # -L/lib/w32api to EXTRA_LIBS.
55 # POSTSCRIPT no or yes: set to yes for PostScript printing (no)
56 # FEATURES TINY, SMALL, NORMAL, BIG or HUGE (BIG)
57 # WINVER Lowest Win32 version to support. (0x0500)
58 # CSCOPE no or yes: to include cscope interface support (yes)
59 # OPTIMIZE SPACE, SPEED, or MAXSPEED: set optimization level (MAXSPEED)
60 # NETBEANS no or yes: to include netbeans interface support (yes when GUI
61 # is yes)
62 # NBDEBUG no or yes: to include netbeans interface debugging support (no)
63 # XPM define to path to XPM dir to get XPM image support (not defined)
64 #>>>>> choose options:
65 ifndef GUI
66 GUI=yes
67 endif
68
69 ifndef FEATURES
70 FEATURES = BIG
71 endif
72
73 ifndef GETTEXT
74 GETTEXT = yes
75 endif
76
77 ifndef ICONV
78 ICONV = yes
79 endif
80
81 ifndef MBYTE
82 MBYTE = yes
83 endif
84
85 ifndef IME
86 IME = yes
87 endif
88
89 ifndef ARCH
90 ARCH = i386
91 endif
92
93 ifndef DIRECTX
94 DIRECTX = no
95 endif
96
97 ifndef WINVER
98 WINVER = 0x0500
99 endif
100
101 ifndef CSCOPE
102 CSCOPE = yes
103 endif
104
105 ifndef NETBEANS
106 ifeq ($(GUI),yes)
107 NETBEANS = yes
108 endif
109 endif
110
111 ifndef OPTIMIZE
112 OPTIMIZE = MAXSPEED
113 endif
114 16
115 17
116 # Link against the shared version of libstdc++ by default. Set 18 # uncomment 'PERL' if you want a perl-enabled version
117 # STATIC_STDCPLUS to "yes" to link against static version instead. 19 #PERL=/cygdrive/c/perl
118 ifndef STATIC_STDCPLUS
119 STATIC_STDCPLUS=no
120 endif
121 20
122 ### See feature.h for a list of optionals. 21 # uncomment 'LUA' if you want a Lua-enabled version
123 ### Any other defines can be included here. 22 #LUA=/cygdrive/c/lua
124 23
125 DEFINES = -DWIN32 -DHAVE_PATHDEF -DFEAT_$(FEATURES) \ 24 # uncomment 'MZSCHEME' if you want a MzScheme-enabled version
126 -DWINVER=$(WINVER) -D_WIN32_WINNT=$(WINVER) 25 #MZSCHEME=/cygdrive/d/plt
127 ifeq ($(ARCH),x86-64)
128 DEFINES+=-DMS_WIN64
129 endif
130 INCLUDES = -march=$(ARCH) -Iproto
131 26
132 #>>>>> name of the compiler and linker, name of lib directory 27 # uncomment 'PYTHON' if you want a python-enabled version
133 ifeq (yes, $(USEDLL)) 28 #PYTHON=/cygdrive/c/python20
134 # CROSS_COMPILE is used for the gvimext DLL. 29
30 # uncomment 'PYTHON3' if you want a python3-enabled version
31 #PYTHON3=/cygdrive/c/python31
32
33 # uncomment 'TCL' if you want a Tcl-enabled version
34 #TCL=/cygdrive/c/tcl
35
36 # uncomment 'RUBY' if you want a Ruby-enabled version
37 #RUBY=/cygdribe/c/ruby
38
39
40 # Use MinGW(-w64) cross compiler.
41 # There are three MinGW packages in Cygwin:
42 # 32-bit: mingw-gcc-g++ and mingw64-i686-gcc-g++
43 # 64-bit: mingw64-x86_64-gcc-g++
44 # You may also need to set 'ARCH' in Make_cyg_ming.mak.
135 CROSS_COMPILE = i686-pc-mingw32- 45 CROSS_COMPILE = i686-pc-mingw32-
136 CC = gcc 46 #CROSS_COMPILE = i686-w64-mingw32-
137 RC = windres 47 #CROSS_COMPILE = x86_64-w64-mingw32-
138 else
139 # i686-pc-mingw32-gcc, i686-w64-mingw32-gcc or gcc-3 can be used.
140 CROSS_COMPILE = i686-pc-mingw32-
141 CC = $(CROSS_COMPILE)gcc
142 RC = $(CROSS_COMPILE)windres
143 endif
144 48
145 ##############################
146 # DYNAMIC_PERL=yes and no both work
147 ##############################
148 ifdef PERL
149 DEFINES += -DFEAT_PERL
150 INCLUDES += -I$(PERL)/lib/CORE
151 EXTRA_OBJS += $(OUTDIR)/if_perl.o
152 49
153 ifndef DYNAMIC_PERL 50 # Do not change this.
154 DYNAMIC_PERL = yes 51 UNDER_CYGWIN = yes
155 endif 52 include Make_cyg_ming.mak
156
157 ifndef PERL_VER
158 PERL_VER = 56
159 endif
160
161 ifeq (yes, $(DYNAMIC_PERL))
162 DEFINES += -DDYNAMIC_PERL -DDYNAMIC_PERL_DLL=\"perl$(PERL_VER).dll\"
163 else
164 EXTRA_LIBS += -L$(PERL)/lib/CORE -lperl$(PERL_VER)
165 endif
166 endif
167
168 ##############################
169 # DYNAMIC_PYTHON=yes works.
170 # DYNAMIC_PYTHON=no does not (unresolved externals on link).
171 ##############################
172 ifdef PYTHON
173 DEFINES += -DFEAT_PYTHON
174 EXTRA_OBJS += $(OUTDIR)/if_python.o
175
176 ifndef DYNAMIC_PYTHON
177 DYNAMIC_PYTHON = yes
178 endif
179
180 ifndef PYTHON_VER
181 PYTHON_VER = 22
182 endif
183
184 ifeq (yes, $(DYNAMIC_PYTHON))
185 DEFINES += -DDYNAMIC_PYTHON -DDYNAMIC_PYTHON_DLL=\"python$(PYTHON_VER).dll\"
186 else
187 EXTRA_LIBS += $(PYTHON)/libs/python$(PYTHON_VER).lib
188 endif
189 endif
190
191 ##############################
192 # DYNAMIC_PYTHON3=yes works.
193 # DYNAMIC_PYTHON3=no does not (unresolved externals on link).
194 ##############################
195 ifdef PYTHON3
196 DEFINES += -DFEAT_PYTHON3
197 EXTRA_OBJS += $(OUTDIR)/if_python3.o
198
199 ifndef DYNAMIC_PYTHON3
200 DYNAMIC_PYTHON3 = yes
201 endif
202
203 ifndef PYTHON3_VER
204 PYTHON3_VER = 31
205 endif
206
207 ifeq (yes, $(DYNAMIC_PYTHON3))
208 DEFINES += -DDYNAMIC_PYTHON3 -DDYNAMIC_PYTHON3_DLL=\"python$(PYTHON3_VER).dll\"
209 else
210 EXTRA_LIBS += $(PYTHON3)/libs/python$(PYTHON3_VER).lib
211 endif
212 endif
213
214 ##############################
215 # DYNAMIC_RUBY=yes works.
216 # DYNAMIC_RUBY=no does not (process exits).
217 ##############################
218 ifdef RUBY
219
220 ifndef DYNAMIC_RUBY
221 DYNAMIC_RUBY=yes
222 endif
223 # Set default value
224 ifndef RUBY_VER
225 RUBY_VER = 16
226 endif
227 ifndef RUBY_VER_LONG
228 RUBY_VER_LONG = 1.6
229 endif
230 ifndef RUBY_API_VER
231 RUBY_API_VER = $(subst .,,$(RUBY_VER_LONG))
232 endif
233
234 ifndef RUBY_PLATFORM
235 ifeq ($(RUBY_VER), 16)
236 RUBY_PLATFORM = i586-mswin32
237 else
238 ifneq ($(wildcard $(RUBY)/lib/ruby/$(RUBY_VER_LONG)/i386-mingw32),)
239 RUBY_PLATFORM = i386-mingw32
240 else
241 ifneq ($(wildcard $(RUBY)/lib/ruby/$(RUBY_VER_LONG)/x64-mingw32),)
242 RUBY_PLATFORM = x64-mingw32
243 else
244 RUBY_PLATFORM = i386-mswin32
245 endif
246 endif
247 endif
248 endif
249
250 ifndef RUBY_INSTALL_NAME
251 ifeq ($(RUBY_VER), 16)
252 RUBY_INSTALL_NAME = mswin32-ruby$(RUBY_API_VER)
253 else
254 ifeq ($(ARCH),x86-64)
255 RUBY_INSTALL_NAME = x64-msvcrt-ruby$(RUBY_API_VER)
256 else
257 RUBY_INSTALL_NAME = msvcrt-ruby$(RUBY_API_VER)
258 endif
259 endif
260 endif
261
262 ifeq (19, $(word 1,$(sort 19 $(RUBY_VER))))
263 RUBY_19_OR_LATER = 1
264 endif
265
266 DEFINES += -DFEAT_RUBY
267 ifneq ($(findstring w64-mingw32,$(CC)),)
268 # A workaround for mingw-w64
269 DEFINES += -DHAVE_STRUCT_TIMESPEC -DHAVE_STRUCT_TIMEZONE
270 endif
271 INCLUDES += -I$(RUBY)/lib/ruby/$(RUBY_VER_LONG)/$(RUBY_PLATFORM)
272 ifdef RUBY_19_OR_LATER
273 INCLUDES += -I$(RUBY)/include/ruby-$(RUBY_VER_LONG) -I$(RUBY)/include/ruby-$(RUBY_VER_LONG)/$(RUBY_PLATFORM)
274 endif
275 EXTRA_OBJS += $(OUTDIR)/if_ruby.o
276
277 ifeq (yes, $(DYNAMIC_RUBY))
278 DEFINES += -DDYNAMIC_RUBY -DDYNAMIC_RUBY_DLL=\"$(RUBY_INSTALL_NAME).dll\"
279 DEFINES += -DDYNAMIC_RUBY_VER=$(RUBY_VER)
280 else
281 EXTRA_LIBS += $(RUBY)/lib/$(RUBY_INSTALL_NAME)
282 endif
283 endif
284
285 ##############################
286 # DYNAMIC_MZSCHEME=yes works
287 # DYNAMIC_MZSCHEME=no works too
288 ##############################
289 ifdef MZSCHEME
290 DEFINES += -DFEAT_MZSCHEME
291 INCLUDES += -I$(MZSCHEME)/include
292 EXTRA_OBJS += $(OUTDIR)/if_mzsch.o
293
294 ifndef DYNAMIC_MZSCHEME
295 DYNAMIC_MZSCHEME = yes
296 endif
297
298 ifndef MZSCHEME_VER
299 MZSCHEME_VER = 209_000
300 endif
301
302 ifndef MZSCHEME_PRECISE_GC
303 MZSCHEME_PRECISE_GC=no
304 endif
305
306 # for version 4.x we need to generate byte-code for Scheme base
307 ifndef MZSCHEME_GENERATE_BASE
308 MZSCHEME_GENERATE_BASE=no
309 endif
310
311 ifndef MZSCHEME_USE_RACKET
312 MZSCHEME_MAIN_LIB=mzsch
313 else
314 MZSCHEME_MAIN_LIB=racket
315 endif
316
317 ifeq (yes, $(DYNAMIC_MZSCHEME))
318 DEFINES += -DDYNAMIC_MZSCHEME -DDYNAMIC_MZSCH_DLL=\"lib$(MZSCHEME_MAIN_LIB)$(MZSCHEME_VER).dll\" -DDYNAMIC_MZGC_DLL=\"libmzgc$(MZSCHEME_VER).dll\"
319 else
320 ifndef MZSCHEME_DLLS
321 MZSCHEME_DLLS = $(MZSCHEME)
322 endif
323 ifeq (yes,$(MZSCHEME_PRECISE_GC))
324 MZSCHEME_LIB=-l$(MZSCHEME_MAIN_LIB)$(MZSCHEME_VER)
325 else
326 MZSCHEME_LIB = -l$(MZSCHEME_MAIN_LIB)$(MZSCHEME_VER) -lmzgc$(MZSCHEME_VER)
327 endif
328 EXTRA_LIBS += -L$(MZSCHEME_DLLS) -L$(MZSCHEME_DLLS)/lib $(MZSCHEME_LIB)
329 endif
330 ifeq (yes,$(MZSCHEME_GENERATE_BASE))
331 DEFINES += -DINCLUDE_MZSCHEME_BASE
332 MZ_EXTRA_DEP += mzscheme_base.c
333 endif
334 ifeq (yes,$(MZSCHEME_PRECISE_GC))
335 DEFINES += -DMZ_PRECISE_GC
336 endif
337 endif
338
339 ##############################
340 # DYNAMIC_TCL=yes and no both work.
341 ##############################
342 ifdef TCL
343 DEFINES += -DFEAT_TCL
344 INCLUDES += -I$(TCL)/include
345 EXTRA_OBJS += $(OUTDIR)/if_tcl.o
346
347 ifndef DYNAMIC_TCL
348 DYNAMIC_TCL = yes
349 endif
350
351 ifndef TCL_VER
352 TCL_VER = 83
353 endif
354
355 ifeq (yes, $(DYNAMIC_TCL))
356 DEFINES += -DDYNAMIC_TCL -DDYNAMIC_TCL_DLL=\"tcl$(TCL_VER).dll\"
357 EXTRA_LIBS += $(TCL)/lib/tclstub$(TCL_VER).lib
358 else
359 EXTRA_LIBS += $(TCL)/lib/tcl$(TCL_VER).lib
360 endif
361 endif
362
363 ##############################
364 # DYNAMIC_LUA=yes works.
365 # DYNAMIC_LUA=no does not (unresolved externals on link).
366 ##############################
367 ifdef LUA
368 DEFINES += -DFEAT_LUA
369 INCLUDES += -I$(LUA)/include
370 EXTRA_OBJS += $(OUTDIR)/if_lua.o
371
372 ifndef DYNAMIC_LUA
373 DYNAMIC_LUA = yes
374 endif
375
376 ifndef LUA_VER
377 LUA_VER = 51
378 endif
379
380 ifeq (yes, $(DYNAMIC_LUA))
381 DEFINES += -DDYNAMIC_LUA -DDYNAMIC_LUA_DLL=\"lua$(LUA_VER).dll\"
382 else
383 EXTRA_LIBS += $(LUA)/lib/lua$(LUA_VER).lib
384 endif
385 endif
386
387 ##############################
388 ifeq (yes, $(GETTEXT))
389 DEFINES += -DDYNAMIC_GETTEXT
390 endif
391
392 ##############################
393 ifeq (yes, $(ICONV))
394 DEFINES += -DDYNAMIC_ICONV
395 endif
396
397 ##############################
398 ifeq (yes, $(MBYTE))
399 DEFINES += -DFEAT_MBYTE
400 endif
401
402 ##############################
403 ifeq (yes, $(IME))
404 DEFINES += -DFEAT_MBYTE_IME
405
406 ifndef DYNAMIC_IME
407 DYNAMIC_IME = yes
408 endif
409
410 ifeq (yes, $(DYNAMIC_IME))
411 DEFINES += -DDYNAMIC_IME
412 else
413 EXTRA_LIBS += -limm32
414 endif
415 endif
416
417 ##############################
418 ifeq (yes, $(DEBUG))
419 DEFINES += -DDEBUG
420 INCLUDES += -g -fstack-check
421 DEBUG_SUFFIX = d
422 else
423
424 ifeq ($(OPTIMIZE), SIZE)
425 OPTFLAG = -Os
426 else
427 ifeq ($(OPTIMIZE), MAXSPEED)
428 OPTFLAG = -O3 -fomit-frame-pointer -freg-struct-return
429 else
430 OPTFLAG = -O2
431 endif
432 endif
433
434 # A bug in the GCC <= 3.2 optimizer can cause a crash. The
435 # following option removes the problem optimization.
436 OPTFLAG += -fno-strength-reduce
437
438 INCLUDES += -s
439
440 endif
441
442 ##############################
443 # USEDLL=yes will build a Cygwin32 executable that relies on cygwin1.dll.
444 # USEDLL=no will build a Mingw32 executable with no extra dll dependencies.
445 ##############################
446 ifeq (yes, $(USEDLL))
447 DEFINES += -D_MAX_PATH=256 -D__CYGWIN__
448 endif
449
450 ##############################
451 ifeq (yes, $(POSTSCRIPT))
452 DEFINES += -DMSWINPS
453 endif
454
455 ##############################
456 ifeq (yes, $(CSCOPE))
457 DEFINES += -DFEAT_CSCOPE
458 EXTRA_OBJS += $(OUTDIR)/if_cscope.o
459 endif
460
461 ##############################
462 ifeq ($(GUI),yes)
463
464 ##############################
465 ifeq (yes, $(NETBEANS))
466 # Only allow NETBEANS for a GUI build.
467 DEFINES += -DFEAT_NETBEANS_INTG
468 EXTRA_OBJS += $(OUTDIR)/netbeans.o
469 EXTRA_LIBS += -lwsock32
470
471 ifeq (yes, $(NBDEBUG))
472 DEFINES += -DNBDEBUG
473 NBDEBUG_DEP = nbdebug.h nbdebug.c
474 endif
475
476 endif
477
478 ##############################
479 ifeq (yes, $(DIRECTX))
480 # Only allow DIRECTX for a GUI build.
481 DEFINES += -DFEAT_DIRECTX -DDYNAMIC_DIRECTX
482 EXTRA_OBJS += $(OUTDIR)/gui_dwrite.o
483 EXTRA_LIBS += -ld2d1 -ldwrite
484 USE_STDCPLUS = yes
485 endif
486
487 ##############################
488 ifndef XPM
489 ifeq ($(ARCH),i386)
490 XPM = xpm/x86
491 endif
492 ifeq ($(ARCH),i486)
493 XPM = xpm/x86
494 endif
495 ifeq ($(ARCH),i586)
496 XPM = xpm/x86
497 endif
498 ifeq ($(ARCH),i686)
499 XPM = xpm/x86
500 endif
501 ifeq ($(ARCH),x86-64)
502 XPM = xpm/x64
503 endif
504 endif
505 ifdef XPM
506 ifneq ($(XPM),no)
507 # Only allow XPM for a GUI build.
508 DEFINES += -DFEAT_XPM_W32
509 INCLUDES += -I$(XPM)/include -I$(XPM)/../include
510 EXTRA_OBJS += $(OUTDIR)/xpm_w32.o
511 EXTRA_LIBS += -L$(XPM)/lib -lXpm
512 endif
513 endif
514
515 ##############################
516 EXE = gvim$(DEBUG_SUFFIX).exe
517 OUTDIR = gobj$(DEBUG_SUFFIX)
518 DEFINES += -DFEAT_GUI_W32 -DFEAT_CLIPBOARD
519 EXTRA_OBJS += $(OUTDIR)/gui.o $(OUTDIR)/gui_w32.o $(OUTDIR)/gui_beval.o $(OUTDIR)/os_w32exe.o
520 EXTRA_LIBS += -mwindows -lcomctl32 -lversion
521 else
522 EXE = vim$(DEBUG_SUFFIX).exe
523 OUTDIR = obj$(DEBUG_SUFFIX)
524 LIBS += -luser32 -lgdi32 -lcomdlg32
525 endif
526
527 ##############################
528 ifeq (yes, $(OLE))
529 DEFINES += -DFEAT_OLE
530 EXTRA_OBJS += $(OUTDIR)/if_ole.o
531 EXTRA_LIBS += -loleaut32
532 USE_STDCPLUS = yes
533 endif
534
535 ##############################
536 ifneq (sh.exe, $(SHELL))
537 DEL = rm
538 MKDIR = mkdir -p
539 DIRSLASH = /
540 else
541 DEL = del
542 MKDIR = mkdir
543 DIRSLASH = \\
544 endif
545
546 ##############################
547 ifeq (yes, $(USE_STDCPLUS))
548 ifeq (yes, $(STATIC_STDCPLUS))
549 EXTRA_LIBS += -Wl,-Bstatic -lstdc++ -Wl,-Bdynamic
550 else
551 EXTRA_LIBS += -lstdc++
552 endif
553 endif
554
555 #>>>>> end of choices
556 ###########################################################################
557
558 INCL = vim.h globals.h option.h keymap.h macros.h ascii.h term.h os_win32.h \
559 structs.h version.h
560
561 CFLAGS = $(OPTFLAG) $(DEFINES) $(INCLUDES)
562
563 RCFLAGS = -O coff $(DEFINES)
564
565 OBJ = \
566 $(OUTDIR)/blowfish.o \
567 $(OUTDIR)/buffer.o \
568 $(OUTDIR)/charset.o \
569 $(OUTDIR)/crypt.o \
570 $(OUTDIR)/crypt_zip.o \
571 $(OUTDIR)/diff.o \
572 $(OUTDIR)/digraph.o \
573 $(OUTDIR)/edit.o \
574 $(OUTDIR)/eval.o \
575 $(OUTDIR)/ex_cmds.o \
576 $(OUTDIR)/ex_cmds2.o \
577 $(OUTDIR)/ex_docmd.o \
578 $(OUTDIR)/ex_eval.o \
579 $(OUTDIR)/ex_getln.o \
580 $(OUTDIR)/fileio.o \
581 $(OUTDIR)/fold.o \
582 $(OUTDIR)/getchar.o \
583 $(OUTDIR)/hardcopy.o \
584 $(OUTDIR)/hashtab.o \
585 $(OUTDIR)/main.o \
586 $(OUTDIR)/mark.o \
587 $(OUTDIR)/memfile.o \
588 $(OUTDIR)/memline.o \
589 $(OUTDIR)/menu.o \
590 $(OUTDIR)/message.o \
591 $(OUTDIR)/misc1.o \
592 $(OUTDIR)/misc2.o \
593 $(OUTDIR)/move.o \
594 $(OUTDIR)/mbyte.o \
595 $(OUTDIR)/normal.o \
596 $(OUTDIR)/ops.o \
597 $(OUTDIR)/option.o \
598 $(OUTDIR)/os_win32.o \
599 $(OUTDIR)/os_mswin.o \
600 $(OUTDIR)/winclip.o \
601 $(OUTDIR)/pathdef.o \
602 $(OUTDIR)/popupmnu.o \
603 $(OUTDIR)/quickfix.o \
604 $(OUTDIR)/regexp.o \
605 $(OUTDIR)/screen.o \
606 $(OUTDIR)/search.o \
607 $(OUTDIR)/sha256.o \
608 $(OUTDIR)/spell.o \
609 $(OUTDIR)/syntax.o \
610 $(OUTDIR)/tag.o \
611 $(OUTDIR)/term.o \
612 $(OUTDIR)/ui.o \
613 $(OUTDIR)/undo.o \
614 $(OUTDIR)/version.o \
615 $(OUTDIR)/vimrc.o \
616 $(OUTDIR)/window.o \
617 $(EXTRA_OBJS)
618
619 all: $(EXE) xxd/xxd.exe vimrun.exe install.exe uninstal.exe GvimExt/gvimext.dll
620
621 # According to the Cygwin doc 1.2 FAQ, kernel32 should not be specified for
622 # linking unless calling ld directly.
623 # See /usr/doc/cygwin-doc-1.2/html/faq_toc.html#TOC93 for more information.
624 $(EXE): $(OUTDIR) $(OBJ)
625 $(CC) $(CFLAGS) -o $(EXE) $(OBJ) $(LIBS) -luuid -lole32 $(EXTRA_LIBS)
626
627 xxd/xxd.exe: xxd/xxd.c
628 $(MAKE) -C xxd -f Make_cyg.mak CC=$(CC) USEDLL=$(USEDLL)
629
630 GvimExt/gvimext.dll: GvimExt/gvimext.cpp GvimExt/gvimext.rc GvimExt/gvimext.h
631 $(MAKE) -C GvimExt -f Make_cyg.mak CROSS_COMPILE=$(CROSS_COMPILE)
632
633 vimrun.exe: vimrun.c
634 $(CC) $(CFLAGS) -o vimrun.exe vimrun.c $(LIBS)
635
636 install.exe: dosinst.c
637 $(CC) $(CFLAGS) -o install.exe dosinst.c $(LIBS) -luuid -lole32
638
639 uninstal.exe: uninstal.c
640 $(CC) $(CFLAGS) -o uninstal.exe uninstal.c $(LIBS)
641
642 $(OUTDIR):
643 $(MKDIR) $(OUTDIR)
644
645 tags:
646 command /c ctags *.c $(INCL)
647
648 clean:
649 -$(DEL) $(OUTDIR)$(DIRSLASH)*.o
650 -rmdir $(OUTDIR)
651 -$(DEL) $(EXE) vimrun.exe install.exe uninstal.exe
652 ifdef PERL
653 -$(DEL) if_perl.c
654 endif
655 ifdef MZSCHEME
656 -$(DEL) mzscheme_base.c
657 endif
658 -$(DEL) pathdef.c
659 $(MAKE) -C xxd -f Make_cyg.mak clean
660 $(MAKE) -C GvimExt -f Make_cyg.mak clean
661
662 distclean: clean
663 -$(DEL) obj$(DIRSLASH)*.o
664 -rmdir obj
665 -$(DEL) gobj$(DIRSLASH)*.o
666 -rmdir gobj
667 -$(DEL) objd$(DIRSLASH)*.o
668 -rmdir objd
669 -$(DEL) gobjd$(DIRSLASH)*.o
670 -rmdir gobjd
671 -$(DEL) *.exe
672
673 ###########################################################################
674
675 $(OUTDIR)/%.o : %.c $(INCL)
676 $(CC) -c $(CFLAGS) $< -o $@
677
678 $(OUTDIR)/ex_docmd.o: ex_docmd.c $(INCL) ex_cmds.h
679 $(CC) -c $(CFLAGS) ex_docmd.c -o $(OUTDIR)/ex_docmd.o
680
681 $(OUTDIR)/ex_eval.o: ex_eval.c $(INCL) ex_cmds.h
682 $(CC) -c $(CFLAGS) ex_eval.c -o $(OUTDIR)/ex_eval.o
683
684 $(OUTDIR)/gui_w32.o: gui_w32.c gui_w48.c $(INCL)
685 $(CC) -c $(CFLAGS) gui_w32.c -o $(OUTDIR)/gui_w32.o
686
687 $(OUTDIR)/gui_dwrite.o: gui_dwrite.cpp $(INCL) gui_dwrite.h
688 $(CC) -c $(CFLAGS) gui_dwrite.cpp -o $(OUTDIR)/gui_dwrite.o
689
690 $(OUTDIR)/if_cscope.o: if_cscope.c $(INCL) if_cscope.h
691 $(CC) -c $(CFLAGS) if_cscope.c -o $(OUTDIR)/if_cscope.o
692
693 $(OUTDIR)/if_ole.o: if_ole.cpp $(INCL)
694 $(CC) -c $(CFLAGS) if_ole.cpp -o $(OUTDIR)/if_ole.o
695
696 $(OUTDIR)/if_python.o : if_python.c if_py_both.h $(INCL)
697 $(CC) -c $(CFLAGS) -I$(PYTHON)/include $< -o $@
698
699 $(OUTDIR)/if_python3.o : if_python3.c if_py_both.h $(INCL)
700 $(CC) -c $(CFLAGS) -I$(PYTHON3)/include $< -o $@
701
702 if_perl.c: if_perl.xs typemap
703 $(PERL)/bin/perl `cygpath -d $(PERL)/lib/ExtUtils/xsubpp` \
704 -prototypes -typemap \
705 `cygpath -d $(PERL)/lib/ExtUtils/typemap` if_perl.xs > $@
706
707 $(OUTDIR)/if_perl.o: if_perl.c $(INCL)
708 ifeq (yes, $(USEDLL))
709 $(CC) -c $(CFLAGS) -I/usr/include/mingw -D__MINGW32__ if_perl.c -o $(OUTDIR)/if_perl.o
710 endif
711
712 $(OUTDIR)/if_ruby.o: if_ruby.c $(INCL)
713 ifeq (16, $(RUBY_VER))
714 $(CC) -c $(CFLAGS) -U_WIN32 if_ruby.c -o $(OUTDIR)/if_ruby.o
715 endif
716
717 $(OUTDIR)/netbeans.o: netbeans.c $(INCL) $(NBDEBUG_DEP)
718 $(CC) -c $(CFLAGS) netbeans.c -o $(OUTDIR)/netbeans.o
719
720 $(OUTDIR)/regexp.o: regexp.c regexp_nfa.c $(INCL)
721 $(CC) -c $(CFLAGS) regexp.c -o $(OUTDIR)/regexp.o
722
723 $(OUTDIR)/if_mzsch.o: if_mzsch.c $(INCL) if_mzsch.h $(MZ_EXTRA_DEP)
724 $(CC) -c $(CFLAGS) if_mzsch.c -o $(OUTDIR)/if_mzsch.o
725
726 $(OUTDIR)/vimrc.o: vim.rc version.h gui_w32_rc.h
727 $(RC) $(RCFLAGS) vim.rc -o $(OUTDIR)/vimrc.o
728
729 mzscheme_base.c:
730 $(MZSCHEME)/mzc --c-mods mzscheme_base.c ++lib scheme/base
731
732 pathdef.c: $(INCL)
733 ifneq (sh.exe, $(SHELL))
734 @echo creating pathdef.c
735 @echo '/* pathdef.c */' > pathdef.c
736 @echo '#include "vim.h"' >> pathdef.c
737 @echo 'char_u *default_vim_dir = (char_u *)"$(VIMRCLOC)";' >> pathdef.c
738 @echo 'char_u *default_vimruntime_dir = (char_u *)"$(VIMRUNTIMEDIR)";' >> pathdef.c
739 @echo 'char_u *all_cflags = (char_u *)"$(CC) $(CFLAGS)";' >> pathdef.c
740 @echo 'char_u *all_lflags = (char_u *)"$(CC) -s -o $(EXE) $(LIBS) -luuid -lole32 $(EXTRA_LIBS)";' >> pathdef.c
741 @echo 'char_u *compiled_user = (char_u *)"$(USERNAME)";' >> pathdef.c
742 @echo 'char_u *compiled_sys = (char_u *)"$(USERDOMAIN)";' >> pathdef.c
743 else
744 @echo creating pathdef.c
745 @echo /* pathdef.c */ > pathdef.c
746 @echo #include "vim.h" >> pathdef.c
747 @echo char_u *default_vim_dir = (char_u *)"$(VIMRCLOC)"; >> pathdef.c
748 @echo char_u *default_vimruntime_dir = (char_u *)"$(VIMRUNTIMEDIR)"; >> pathdef.c
749 @echo char_u *all_cflags = (char_u *)"$(CC) $(CFLAGS)"; >> pathdef.c
750 @echo char_u *all_lflags = (char_u *)"$(CC) -s -o $(EXE) $(LIBS) -luuid -lole32 $(EXTRA_LIBS)"; >> pathdef.c
751 @echo char_u *compiled_user = (char_u *)"$(USERNAME)"; >> pathdef.c
752 @echo char_u *compiled_sys = (char_u *)"$(USERDOMAIN)"; >> pathdef.c
753 endif
754