libs/stat: Fix and rework perl-binding build

For PERL_FLAGS, use make's shell rather than a backquote.

Rather than relying on the VCS to create an empty directory for us,
we can create one before generating the *.c file for the bindings.

Make use of generic variable names to build a shared library from a
source file: CFLAGS, LDFLAGS, and LDLIBS.

To build a shared library, we need to build the source file with
"-fPIC", which was drop by 6d0ec05390 (tools: split libxenstat into
new tools/libs/stat directory).

The source file generated by swig seems to be missing many prototype for
many functions, so we need "-Wno-missing-prototypes" in order to
build it. Also, one of the prototype is deemed malformed, so we also
need "-Wno-strict-prototypes".

Signed-off-by: Anthony PERARD <anthony.perard@citrix.com>
Reviewed-by: Juergen Gross <jgross@suse.com>
This commit is contained in:
Anthony PERARD authored and Julien Grall committed 2022-06-16 16:58:50 +01:00
1 parent 1e98396145
commit 9ae030da5c
2 files changed
+10 -4

No files matched your search

+10 -3
View File
@@ -94,13 +94,20 @@ uninstall:: uninstall-python-bindings
endif
# Perl bindings
PERL_FLAGS=`perl -MConfig -e 'print "$$Config{ccflags} -I$$Config{archlib}/CORE";'`
PERL_FLAGS = $(shell $(PERL) -MConfig -e 'print "$$Config{ccflags} -I$$Config{archlib}/CORE";')
$(PERLMOD): $(PERLSRC)
$(PERLSRC): bindings/swig/xenstat.i
swig -perl $(SWIG_FLAGS) -outdir $(@D) -o $(PERLSRC) $<
mkdir -p $(@D)
swig -perl $(SWIG_FLAGS) -outdir $(@D) -o $@ $<
$(PERLLIB): CFLAGS += -fPIC
$(PERLLIB): CFLAGS += -Wno-strict-prototypes
$(PERLLIB): CFLAGS += -Wno-missing-prototypes
$(PERLLIB): LDFLAGS += $(PERL_FLAGS)
$(PERLLIB): LDFLAGS += $(SHLIB_LDFLAGS)
$(PERLLIB): LDLIBS := $(LDLIBS_libxenstat)
$(PERLLIB): $(PERLSRC)
$(CC) $(CFLAGS) $(LDFLAGS) $(PERL_FLAGS) $(SHLIB_LDFLAGS) -lxenstat -o $@ $< $(APPEND_LDFLAGS)
$(CC) $(CFLAGS) $(LDFLAGS) -o $@ $< $(LDLIBS) $(APPEND_LDFLAGS)
.PHONY: perl-bindings
perl-bindings: $(PERLLIB) $(PERLMOD)
@@ -1 +0,0 @@
This directory is empty; this file is included to prevent version control systems from removing the directory.
Reference in new issue
Block a user
Blocking a user prevents them from interacting with repositories, such as opening or commenting on pull requests or issues. Learn more about blocking a user.