To: vim_dev@googlegroups.com Subject: Patch 7.4.117 Fcc: outbox From: Bram Moolenaar Mime-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit ------------ Patch 7.4.117 Problem: Can't build with Cygwin/MingW and Perl 5.18. Solution: Add a linker argument for the Perl library. (Cesar Romani) Adjust CFLAGS and LIB. (Cesar Romani) Move including inline.h further down. (Ken Takata) Files: src/Make_cyg.mak, src/Make_ming.mak, src/if_perl.xs *** ../vim-7.4.116/src/Make_cyg.mak 2013-11-28 16:32:34.000000000 +0100 --- src/Make_cyg.mak 2013-12-11 14:59:12.000000000 +0100 *************** *** 1,6 **** # # Makefile for VIM on Win32, using Cygnus gcc ! # Last updated by Dan Sharp. Last Change: 2013 Nov 28 # # Also read INSTALLpc.txt! # --- 1,6 ---- # # Makefile for VIM on Win32, using Cygnus gcc ! # Last updated by Dan Sharp. Last Change: 2013 Dec 11 # # Also read INSTALLpc.txt! # *************** *** 155,161 **** ifeq (yes, $(DYNAMIC_PERL)) DEFINES += -DDYNAMIC_PERL -DDYNAMIC_PERL_DLL=\"perl$(PERL_VER).dll\" else ! EXTRA_LIBS += $(PERL)/lib/CORE/perl$(PERL_VER).lib endif endif --- 155,161 ---- 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 *** ../vim-7.4.116/src/Make_ming.mak 2013-07-06 13:32:11.000000000 +0200 --- src/Make_ming.mak 2013-12-07 20:02:52.000000000 +0100 *************** *** 359,364 **** --- 359,365 ---- 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 *************** *** 377,385 **** endif ifdef PERL ! CFLAGS += -I$(PERLLIBS) -DFEAT_PERL -L$(PERLLIBS) ifeq (yes, $(DYNAMIC_PERL)) CFLAGS += -DDYNAMIC_PERL -DDYNAMIC_PERL_DLL=\"perl$(PERL_VER).dll\" endif endif --- 378,387 ---- 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 *************** *** 632,638 **** ifdef PERL ifeq (no, $(DYNAMIC_PERL)) ! LIB += -lperl$(PERL_VER) endif endif --- 634,640 ---- ifdef PERL ifeq (no, $(DYNAMIC_PERL)) ! LIB += -L$(PERLLIBS) -lperl$(PERL_VER) endif endif *** ../vim-7.4.116/src/if_perl.xs 2013-08-02 19:28:50.000000000 +0200 --- src/if_perl.xs 2013-12-11 15:02:58.000000000 +0100 *************** *** 14,20 **** #define IN_PERL_FILE /* don't include if_perl.pro from proto.h */ /* ! * Currently 32-bit version of ActivePerl is built with VC6. * (http://community.activestate.com/faq/windows-compilers-perl-modules) * It means that time_t should be 32-bit. However the default size of * time_t is 64-bit since VC8. So we have to define _USE_32BIT_TIME_T. --- 14,21 ---- #define IN_PERL_FILE /* don't include if_perl.pro from proto.h */ /* ! * Currently 32-bit version of ActivePerl is built with VC6 (or MinGW since ! * ActivePerl 5.18). * (http://community.activestate.com/faq/windows-compilers-perl-modules) * It means that time_t should be 32-bit. However the default size of * time_t is 64-bit since VC8. So we have to define _USE_32BIT_TIME_T. *************** *** 23,28 **** --- 24,45 ---- # define _USE_32BIT_TIME_T #endif + /* Work around for perl-5.18. + * Don't include "perl\lib\CORE\inline.h" for now, + * include it after Perl_sv_free2 is defined. */ + #define PERL_NO_INLINE_FUNCTIONS + + /* + * Prevent including winsock.h. perl.h tries to detect whether winsock.h is + * already included before including winsock2.h, because winsock2.h isn't + * compatible with winsock.h. However the detection doesn't work with some + * versions of MinGW. If WIN32_LEAN_AND_MEAN is defined, windows.h will not + * include winsock.h. + */ + #ifdef WIN32 + # define WIN32_LEAN_AND_MEAN + #endif + #include "vim.h" #include *************** *** 81,90 **** # define PERL5101_OR_LATER #endif - #if (PERL_REVISION == 5) && (PERL_VERSION >= 18) - # define PERL5180_OR_LATER - #endif - #ifndef pTHX # define pTHX void # define pTHX_ --- 98,103 ---- *************** *** 145,155 **** # define perl_free dll_perl_free # define Perl_get_context dll_Perl_get_context # define Perl_croak dll_Perl_croak - # ifndef PERL5180_OR_LATER # ifdef PERL5101_OR_LATER # define Perl_croak_xs_usage dll_Perl_croak_xs_usage # endif - # endif # ifndef PROTO # define Perl_croak_nocontext dll_Perl_croak_nocontext # define Perl_call_argv dll_Perl_call_argv --- 158,166 ---- *************** *** 262,271 **** static int (*perl_parse)(PerlInterpreter*, XSINIT_t, int, char**, char**); static void* (*Perl_get_context)(void); static void (*Perl_croak)(pTHX_ const char*, ...); - #ifndef PERL5180_OR_LATER #ifdef PERL5101_OR_LATER static void (*Perl_croak_xs_usage)(pTHX_ const CV *const, const char *const params); ! #endif #endif static void (*Perl_croak_nocontext)(const char*, ...); static I32 (*Perl_dowantarray)(pTHX); --- 273,285 ---- static int (*perl_parse)(PerlInterpreter*, XSINIT_t, int, char**, char**); static void* (*Perl_get_context)(void); static void (*Perl_croak)(pTHX_ const char*, ...); #ifdef PERL5101_OR_LATER + /* Perl-5.18 has a different Perl_croak_xs_usage signature. */ + # if (PERL_REVISION == 5) && (PERL_VERSION >= 18) + static void (*Perl_croak_xs_usage)(const CV *const, const char *const params); + # else static void (*Perl_croak_xs_usage)(pTHX_ const CV *const, const char *const params); ! # endif #endif static void (*Perl_croak_nocontext)(const char*, ...); static I32 (*Perl_dowantarray)(pTHX); *************** *** 337,343 **** --- 351,362 ---- static XPV** (*Perl_TXpv_ptr)(register PerlInterpreter*); static STRLEN* (*Perl_Tna_ptr)(register PerlInterpreter*); #else + /* Perl-5.18 has a different Perl_sv_free2 signature. */ + # if (PERL_REVISION == 5) && (PERL_VERSION >= 18) + static void (*Perl_sv_free2)(pTHX_ SV*, const U32); + # else static void (*Perl_sv_free2)(pTHX_ SV*); + # endif static void (*Perl_sys_init)(int* argc, char*** argv); static void (*Perl_sys_term)(void); static void (*Perl_call_list)(pTHX_ I32, AV*); *************** *** 384,394 **** {"perl_parse", (PERL_PROC*)&perl_parse}, {"Perl_get_context", (PERL_PROC*)&Perl_get_context}, {"Perl_croak", (PERL_PROC*)&Perl_croak}, - #ifndef PERL5180_OR_LATER #ifdef PERL5101_OR_LATER {"Perl_croak_xs_usage", (PERL_PROC*)&Perl_croak_xs_usage}, #endif - #endif {"Perl_croak_nocontext", (PERL_PROC*)&Perl_croak_nocontext}, {"Perl_dowantarray", (PERL_PROC*)&Perl_dowantarray}, {"Perl_free_tmps", (PERL_PROC*)&Perl_free_tmps}, --- 403,411 ---- *************** *** 492,497 **** --- 509,522 ---- {"", NULL}, }; + /* Work around for perl-5.18. + * The definitions of S_SvREFCNT_inc and S_SvREFCNT_dec are needed, so include + * "perl\lib\CORE\inline.h", after Perl_sv_free2 is defined. + * The linker won't complain about undefined __impl_Perl_sv_free2. */ + #if (PERL_REVISION == 5) && (PERL_VERSION >= 18) + # include + #endif + /* * Make all runtime-links of perl. * *** ../vim-7.4.116/src/version.c 2013-12-11 14:54:58.000000000 +0100 --- src/version.c 2013-12-11 15:00:12.000000000 +0100 *************** *** 740,741 **** --- 740,743 ---- { /* Add new patch number below this line */ + /**/ + 117, /**/ -- Despite the cost of living, have you noticed how it remains so popular? /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net \\\ /// sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\ \\\ an exciting new programming language -- http://www.Zimbu.org /// \\\ help me help AIDS victims -- http://ICCF-Holland.org ///