To reproduce:
$ perlbrew install -Duseshrplib 5.22.2 # I use perlbrew to install perls; you don't need to use it if you don't want to
$ perlbrew use perl-5.22.2
$ perl -v
This is perl 5, version 22, subversion 2 (v5.22.2) built for x86_64-linux
...
$ git clone https://github.com/vim/vim
$ cd vim/
$ ./configure --enable-perlinterp=dynamic
$ make
Build output:
Starting make in the src directory.
If there are problems, cd to the src directory and run make there
cd src && make first
make[1]: Entering directory '/tmp/vim/src'
gcc -c -I. -Iproto -DHAVE_CONFIG_H -DFEAT_GUI_GTK -pthread -I/usr/include/gtk-2.0 -I/usr/lib/gtk-2.0/include -I/usr/include/pango-1.0 -I/usr/include/atk-1.0 -I/usr/include/cairo -I/usr/include/pixman-1 -I/usr/include/libdrm -I/usr/include/gdk-pixbuf-2.0 -I/usr/include/libpng16 -I/usr/include/pango-1.0 -I/usr/include/freetype2 -I/usr/include/libpng16 -I/usr/include/harfbuzz -I/usr/include/glib-2.0 -I/usr/lib/glib-2.0/include -I/usr/include/freetype2 -I/usr/include/libpng16 -I/usr/include/harfbuzz -I/usr/include/glib-2.0 -I/usr/lib/glib-2.0/include -g -O2 -U_FORTIFY_SOURCE -D_FORTIFY_SOURCE=1 -DDYNAMIC_PERL_DLL=\"libperl.so\" -fwrapv -fstack-protector-strong -I/usr/local/include -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64 -I/home/rob/.perlbrew/perls/perl-5.24.0/lib/5.24.0/x86_64-linux/CORE -o objects/if_perl.o auto/if_perl.c
if_perl.xs:183:0: warning: "Perl_croak_nocontext" redefined
# define Perl_croak_nocontext dll_Perl_croak_nocontext
In file included from /home/rob/.perlbrew/perls/perl-5.24.0/lib/5.24.0/x86_64-linux/CORE/perl.h:5609:0,
from if_perl.xs:58:
/home/rob/.perlbrew/perls/perl-5.24.0/lib/5.24.0/x86_64-linux/CORE/embed.h:1913:0: note: this is the location of the previous definition
# define Perl_croak_nocontext Perl_croak
In file included from if_perl.xs:610:0:
/home/rob/.perlbrew/perls/perl-5.24.0/lib/5.24.0/x86_64-linux/CORE/inline.h: In function ‘S_av_top_index’:
/home/rob/.perlbrew/perls/perl-5.24.0/lib/5.24.0/x86_64-linux/CORE/inline.h:20:5: error: ‘PERL_ARGS_ASSERT_AV_TOP_INDEX’ undeclared (first use in this function)
PERL_ARGS_ASSERT_AV_TOP_INDEX;
^~~~~~~~~~~~~~~~~~~~~~~~~~~~~
/home/rob/.perlbrew/perls/perl-5.24.0/lib/5.24.0/x86_64-linux/CORE/inline.h:20:5: note: each undeclared identifier is reported only once for each function it appears in
/home/rob/.perlbrew/perls/perl-5.24.0/lib/5.24.0/x86_64-linux/CORE/inline.h: In function ‘S_append_utf8_from_native_byte’:
/home/rob/.perlbrew/perls/perl-5.24.0/lib/5.24.0/x86_64-linux/CORE/inline.h:242:5: error: ‘PERL_ARGS_ASSERT_APPEND_UTF8_FROM_NATIVE_BYTE’ undeclared (first use in this function)
PERL_ARGS_ASSERT_APPEND_UTF8_FROM_NATIVE_BYTE;
^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
/home/rob/.perlbrew/perls/perl-5.24.0/lib/5.24.0/x86_64-linux/CORE/inline.h: In function ‘S__is_utf8_char_slow’:
/home/rob/.perlbrew/perls/perl-5.24.0/lib/5.24.0/x86_64-linux/CORE/inline.h:274:5: error: ‘PERL_ARGS_ASSERT__IS_UTF8_CHAR_SLOW’ undeclared (first use in this function)
PERL_ARGS_ASSERT__IS_UTF8_CHAR_SLOW;
^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
/home/rob/.perlbrew/perls/perl-5.24.0/lib/5.24.0/x86_64-linux/CORE/inline.h: In function ‘S_is_safe_syscall’:
/home/rob/.perlbrew/perls/perl-5.24.0/lib/5.24.0/x86_64-linux/CORE/inline.h:305:5: error: ‘PERL_ARGS_ASSERT_IS_SAFE_SYSCALL’ undeclared (first use in this function)
PERL_ARGS_ASSERT_IS_SAFE_SYSCALL;
^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
/home/rob/.perlbrew/perls/perl-5.24.0/lib/5.24.0/x86_64-linux/CORE/inline.h: In function ‘S_sv_only_taint_gmagic’:
/home/rob/.perlbrew/perls/perl-5.24.0/lib/5.24.0/x86_64-linux/CORE/inline.h:390:5: error: ‘PERL_ARGS_ASSERT_SV_ONLY_TAINT_GMAGIC’ undeclared (first use in this function)
PERL_ARGS_ASSERT_SV_ONLY_TAINT_GMAGIC;
^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
/home/rob/.perlbrew/perls/perl-5.24.0/lib/5.24.0/x86_64-linux/CORE/inline.h: In function ‘S_cx_pushblock’:
/home/rob/.perlbrew/perls/perl-5.24.0/lib/5.24.0/x86_64-linux/CORE/inline.h:414:5: error: ‘PERL_ARGS_ASSERT_CX_PUSHBLOCK’ undeclared (first use in this function)
PERL_ARGS_ASSERT_CX_PUSHBLOCK;
^~~~~~~~~~~~~~~~~~~~~~~~~~~~~
/home/rob/.perlbrew/perls/perl-5.24.0/lib/5.24.0/x86_64-linux/CORE/inline.h: In function ‘S_cx_popblock’:
/home/rob/.perlbrew/perls/perl-5.24.0/lib/5.24.0/x86_64-linux/CORE/inline.h:439:5: error: ‘PERL_ARGS_ASSERT_CX_POPBLOCK’ undeclared (first use in this function)
PERL_ARGS_ASSERT_CX_POPBLOCK;
^~~~~~~~~~~~~~~~~~~~~~~~~~~~
/home/rob/.perlbrew/perls/perl-5.24.0/lib/5.24.0/x86_64-linux/CORE/inline.h: In function ‘S_cx_topblock’:
/home/rob/.perlbrew/perls/perl-5.24.0/lib/5.24.0/x86_64-linux/CORE/inline.h:464:5: error: ‘PERL_ARGS_ASSERT_CX_TOPBLOCK’ undeclared (first use in this function)
PERL_ARGS_ASSERT_CX_TOPBLOCK;
^~~~~~~~~~~~~~~~~~~~~~~~~~~~
/home/rob/.perlbrew/perls/perl-5.24.0/lib/5.24.0/x86_64-linux/CORE/inline.h: In function ‘S_cx_pushsub’:
/home/rob/.perlbrew/perls/perl-5.24.0/lib/5.24.0/x86_64-linux/CORE/inline.h:481:5: error: ‘PERL_ARGS_ASSERT_CX_PUSHSUB’ undeclared (first use in this function)
PERL_ARGS_ASSERT_CX_PUSHSUB;
^~~~~~~~~~~~~~~~~~~~~~~~~~~
/home/rob/.perlbrew/perls/perl-5.24.0/lib/5.24.0/x86_64-linux/CORE/inline.h: In function ‘S_cx_popsub_common’:
/home/rob/.perlbrew/perls/perl-5.24.0/lib/5.24.0/x86_64-linux/CORE/inline.h:501:5: error: ‘PERL_ARGS_ASSERT_CX_POPSUB_COMMON’ undeclared (first use in this function)
PERL_ARGS_ASSERT_CX_POPSUB_COMMON;
^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
/home/rob/.perlbrew/perls/perl-5.24.0/lib/5.24.0/x86_64-linux/CORE/inline.h: In function ‘S_cx_popsub_args’:
/home/rob/.perlbrew/perls/perl-5.24.0/lib/5.24.0/x86_64-linux/CORE/inline.h:520:5: error: ‘PERL_ARGS_ASSERT_CX_POPSUB_ARGS’ undeclared (first use in this function)
PERL_ARGS_ASSERT_CX_POPSUB_ARGS;
^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
/home/rob/.perlbrew/perls/perl-5.24.0/lib/5.24.0/x86_64-linux/CORE/inline.h: In function ‘S_cx_popsub’:
/home/rob/.perlbrew/perls/perl-5.24.0/lib/5.24.0/x86_64-linux/CORE/inline.h:540:5: error: ‘PERL_ARGS_ASSERT_CX_POPSUB’ undeclared (first use in this function)
PERL_ARGS_ASSERT_CX_POPSUB;
^~~~~~~~~~~~~~~~~~~~~~~~~~
/home/rob/.perlbrew/perls/perl-5.24.0/lib/5.24.0/x86_64-linux/CORE/inline.h:546:9: warning: implicit declaration of function ‘cx_popsub_args’ [-Wimplicit-function-declaration]
cx_popsub_args(cx);
^~~~~~~~~~~~~~
/home/rob/.perlbrew/perls/perl-5.24.0/lib/5.24.0/x86_64-linux/CORE/inline.h:547:5: warning: implicit declaration of function ‘cx_popsub_common’ [-Wimplicit-function-declaration]
cx_popsub_common(cx);
^~~~~~~~~~~~~~~~
/home/rob/.perlbrew/perls/perl-5.24.0/lib/5.24.0/x86_64-linux/CORE/inline.h: In function ‘S_cx_pushformat’:
/home/rob/.perlbrew/perls/perl-5.24.0/lib/5.24.0/x86_64-linux/CORE/inline.h:554:5: error: ‘PERL_ARGS_ASSERT_CX_PUSHFORMAT’ undeclared (first use in this function)
PERL_ARGS_ASSERT_CX_PUSHFORMAT;
^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
/home/rob/.perlbrew/perls/perl-5.24.0/lib/5.24.0/x86_64-linux/CORE/inline.h: In function ‘S_cx_popformat’:
/home/rob/.perlbrew/perls/perl-5.24.0/lib/5.24.0/x86_64-linux/CORE/inline.h:575:5: error: ‘PERL_ARGS_ASSERT_CX_POPFORMAT’ undeclared (first use in this function)
PERL_ARGS_ASSERT_CX_POPFORMAT;
^~~~~~~~~~~~~~~~~~~~~~~~~~~~~
/home/rob/.perlbrew/perls/perl-5.24.0/lib/5.24.0/x86_64-linux/CORE/inline.h: In function ‘S_cx_pusheval’:
/home/rob/.perlbrew/perls/perl-5.24.0/lib/5.24.0/x86_64-linux/CORE/inline.h:595:5: error: ‘PERL_ARGS_ASSERT_CX_PUSHEVAL’ undeclared (first use in this function)
PERL_ARGS_ASSERT_CX_PUSHEVAL;
^~~~~~~~~~~~~~~~~~~~~~~~~~~~
/home/rob/.perlbrew/perls/perl-5.24.0/lib/5.24.0/x86_64-linux/CORE/inline.h: In function ‘S_cx_popeval’:
/home/rob/.perlbrew/perls/perl-5.24.0/lib/5.24.0/x86_64-linux/CORE/inline.h:615:5: error: ‘PERL_ARGS_ASSERT_CX_POPEVAL’ undeclared (first use in this function)
PERL_ARGS_ASSERT_CX_POPEVAL;
^~~~~~~~~~~~~~~~~~~~~~~~~~~
/home/rob/.perlbrew/perls/perl-5.24.0/lib/5.24.0/x86_64-linux/CORE/inline.h: In function ‘S_cx_pushloop_plain’:
/home/rob/.perlbrew/perls/perl-5.24.0/lib/5.24.0/x86_64-linux/CORE/inline.h:642:5: error: ‘PERL_ARGS_ASSERT_CX_PUSHLOOP_PLAIN’ undeclared (first use in this function)
PERL_ARGS_ASSERT_CX_PUSHLOOP_PLAIN;
^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
/home/rob/.perlbrew/perls/perl-5.24.0/lib/5.24.0/x86_64-linux/CORE/inline.h: In function ‘S_cx_pushloop_for’:
/home/rob/.perlbrew/perls/perl-5.24.0/lib/5.24.0/x86_64-linux/CORE/inline.h:654:5: error: ‘PERL_ARGS_ASSERT_CX_PUSHLOOP_FOR’ undeclared (first use in this function)
PERL_ARGS_ASSERT_CX_PUSHLOOP_FOR;
^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
/home/rob/.perlbrew/perls/perl-5.24.0/lib/5.24.0/x86_64-linux/CORE/inline.h: In function ‘S_cx_poploop’:
/home/rob/.perlbrew/perls/perl-5.24.0/lib/5.24.0/x86_64-linux/CORE/inline.h:672:5: error: ‘PERL_ARGS_ASSERT_CX_POPLOOP’ undeclared (first use in this function)
PERL_ARGS_ASSERT_CX_POPLOOP;
^~~~~~~~~~~~~~~~~~~~~~~~~~~
/home/rob/.perlbrew/perls/perl-5.24.0/lib/5.24.0/x86_64-linux/CORE/inline.h: In function ‘S_cx_pushwhen’:
/home/rob/.perlbrew/perls/perl-5.24.0/lib/5.24.0/x86_64-linux/CORE/inline.h:705:5: error: ‘PERL_ARGS_ASSERT_CX_PUSHWHEN’ undeclared (first use in this function)
PERL_ARGS_ASSERT_CX_PUSHWHEN;
^~~~~~~~~~~~~~~~~~~~~~~~~~~~
/home/rob/.perlbrew/perls/perl-5.24.0/lib/5.24.0/x86_64-linux/CORE/inline.h: In function ‘S_cx_popwhen’:
/home/rob/.perlbrew/perls/perl-5.24.0/lib/5.24.0/x86_64-linux/CORE/inline.h:714:5: error: ‘PERL_ARGS_ASSERT_CX_POPWHEN’ undeclared (first use in this function)
PERL_ARGS_ASSERT_CX_POPWHEN;
^~~~~~~~~~~~~~~~~~~~~~~~~~~
/home/rob/.perlbrew/perls/perl-5.24.0/lib/5.24.0/x86_64-linux/CORE/inline.h: In function ‘S_cx_pushgiven’:
/home/rob/.perlbrew/perls/perl-5.24.0/lib/5.24.0/x86_64-linux/CORE/inline.h:725:5: error: ‘PERL_ARGS_ASSERT_CX_PUSHGIVEN’ undeclared (first use in this function)
PERL_ARGS_ASSERT_CX_PUSHGIVEN;
^~~~~~~~~~~~~~~~~~~~~~~~~~~~~
/home/rob/.perlbrew/perls/perl-5.24.0/lib/5.24.0/x86_64-linux/CORE/inline.h: In function ‘S_cx_popgiven’:
/home/rob/.perlbrew/perls/perl-5.24.0/lib/5.24.0/x86_64-linux/CORE/inline.h:737:5: error: ‘PERL_ARGS_ASSERT_CX_POPGIVEN’ undeclared (first use in this function)
PERL_ARGS_ASSERT_CX_POPGIVEN;
^~~~~~~~~~~~~~~~~~~~~~~~~~~~
Makefile:2859: recipe for target 'objects/if_perl.o' failed
make[1]: *** [objects/if_perl.o] Error 1
make[1]: Leaving directory '/tmp/vim/src'
Makefile:26: recipe for target 'first' failed
make: *** [first] Error 2
When digging into this, I noticed some trickery in if_perl.xs that dealt with inline macros; it appears that PERL_NO_INLINE_FUNCTIONS is defined before perl.h is included, and then inline.h, which relies on some of the macros defined in perl.h if PERL_NO_INLINE_FUNCTIONS is not defined, is included later.
—
You are receiving this because you are subscribed to this thread.
Reply to this email directly or view it on GitHub![]()
Basically this is already discussed in #790. Not that obvious as that issue was initially based on some wrong assumptions and the title hasn't bee adjusted yet.
In particular see #790 (comment).
Ah, sorry for the duplicate! I did a cursory search for perl on the issues, but at first glance that one didn't seem related.
Closed #810.