| To: vim_dev@googlegroups.com |
| Subject: Patch 7.4.117 |
| Fcc: outbox |
| From: Bram Moolenaar <Bram@moolenaar.net> |
| 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 |
| |
| |
| |
| |
| |
| *** 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 |
| |
| |
| |
| |
| *** 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 |
| |
| |
| |
| |
| *** 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 <EXTERN.h> |
| |
| *** 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 <inline.h> |
| + #endif |
| + |
| /* |
| * Make all runtime-links of perl. |
| * |
| |
| |
| |
| *** 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 /// |