perl plugin: needs _LARGEFILE64_SOURCE
authorRuben Kerkhof <ruben@rubenkerkhof.com>
Sun, 7 Aug 2016 09:59:31 +0000 (11:59 +0200)
committerRuben Kerkhof <ruben@rubenkerkhof.com>
Sun, 7 Aug 2016 10:06:02 +0000 (12:06 +0200)
libperl compiled with LARGE_FILES support defines its own Off_t
as off64_t, even if off_t is 64-bit wide on 64bit platforms.

off64_t is only exposed in the libc headers if _LARGEFILE64_SOURCE
is defined.

In file included from perl.c:47:0:
/usr/lib/x86_64-linux-gnu/perl/5.20/CORE/perl.h:2398:22: error: unknown
type name 'off64_t'
 #       define Off_t off64_t
                      ^
/usr/lib/x86_64-linux-gnu/perl/5.20/CORE/perlio.h:277:15: note: in
expansion of macro 'Off_t'
 PERL_EXPORT_C Off_t PerlIO_tell(PerlIO *);

src/Makefile.am

index 8b8143f..a51e2ec 100644 (file)
@@ -848,6 +848,9 @@ perl_la_SOURCES = perl.c
 # Despite C99 providing the "bool" type thru stdbool.h, Perl defines its own
 # version of that type if HAS_BOOL is not defined... *sigh*
 perl_la_CPPFLAGS = $(AM_CPPFLAGS) -DHAS_BOOL=1
+# Despite off_t being 64 bit wide on 64 bit platforms, Perl insist on using
+# off64_t which is only exposed when _LARGEFILE64_SOURCE is defined... *sigh*
+perl_la_CPPFLAGS += -D_LARGEFILE64_SOURCE
 perl_la_CFLAGS  = $(AM_CFLAGS) \
                $(PERL_CFLAGS) \
                -DXS_VERSION=\"$(VERSION)\" -DVERSION=\"$(VERSION)\"