There are a few packages which mysteriously fail during the configure stage. Give us better means of understanding why. Also, some Makefile.PL's have "use" statements which reference files which are in or under ".". Signed-off-by: Philip Prindeville <philipp@redfish-solutions.com>
166 lines
4.5 KiB
Makefile
166 lines
4.5 KiB
Makefile
# This makefile simplifies perl module builds.
|
|
#
|
|
|
|
PERL_VERSION:=5.26
|
|
|
|
# Build environment
|
|
HOST_PERL_PREFIX:=$(STAGING_DIR_HOSTPKG)/usr
|
|
ifneq ($(CONFIG_USE_GLIBC),)
|
|
EXTRA_LIBS:=bsd
|
|
EXTRA_LIBDIRS:=$(STAGING_DIR)/lib
|
|
endif
|
|
PERL_CMD:=$(STAGING_DIR_HOSTPKG)/usr/bin/perl$(PERL_VERSION).0
|
|
|
|
MOD_CFLAGS_PERL:=-D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64 $(TARGET_CFLAGS) $(TARGET_CPPFLAGS)
|
|
ifdef CONFIG_PERL_THREADS
|
|
MOD_CFLAGS_PERL+= -D_REENTRANT -D_GNU_SOURCE
|
|
endif
|
|
|
|
# Module install prefix
|
|
PERL_SITELIB:=/usr/lib/perl5/$(PERL_VERSION)
|
|
PERL_TESTSDIR:=/usr/share/perl/perl-tests
|
|
PERLBASE_TESTSDIR:=/usr/share/perl/perlbase-tests
|
|
PERLMOD_TESTSDIR:=/usr/share/perl/perlmod-tests
|
|
|
|
define perlmod/host/relink
|
|
rm -f $(1)/Makefile.aperl
|
|
$(MAKE) -C $(1) perl
|
|
$(CP) $(1)/perl $(PERL_CMD)
|
|
$(CP) $(1)/perl $(STAGING_DIR_HOSTPKG)/usr/bin/perl
|
|
endef
|
|
|
|
define perlmod/host/Configure
|
|
(cd $(HOST_BUILD_DIR); \
|
|
PERL_MM_USE_DEFAULT=1 \
|
|
$(2) \
|
|
$(PERL_CMD) Makefile.PL \
|
|
$(1) \
|
|
);
|
|
endef
|
|
|
|
define perlmod/host/Compile
|
|
$(2) \
|
|
$(MAKE) -C $(HOST_BUILD_DIR) \
|
|
$(1) \
|
|
install
|
|
endef
|
|
|
|
define perlmod/host/Install
|
|
$(2) \
|
|
$(MAKE) -C $(HOST_BUILD_DIR) \
|
|
$(1) \
|
|
install
|
|
$(call perlmod/host/relink,$(HOST_BUILD_DIR))
|
|
endef
|
|
|
|
define perlmod/Configure
|
|
(cd $(if $(3),$(3),$(PKG_BUILD_DIR)); \
|
|
PERL_MM_USE_DEFAULT=1 \
|
|
$(2) \
|
|
$(PERL_CMD) -MConfig -e '$$$${tied %Config::Config}{cpprun}="$(GNU_TARGET_NAME)-cpp -E"; unshift(@INC, "."); unless (defined (do "./Makefile.PL")) { if ($$$$@) { die "couldn\047t parse Makefile.PL: $$$$@"; } else { die "couldn\047t do Makefile.PL: $$$$!"; } }; die "No Makefile generated!" unless -f "Makefile";' \
|
|
$(1) \
|
|
AR=ar \
|
|
CC=$(GNU_TARGET_NAME)-gcc \
|
|
CCFLAGS="$(MOD_CFLAGS_PERL)" \
|
|
CCCDLFLAGS=-fPIC \
|
|
CCDLFLAGS=-Wl,-E \
|
|
DLEXT=so \
|
|
DLSRC=dl_dlopen.xs \
|
|
EXE_EXT=" " \
|
|
FULL_AR=$(GNU_TARGET_NAME)-ar \
|
|
LD=$(GNU_TARGET_NAME)-gcc \
|
|
LDDLFLAGS="-shared -rdynamic $(TARGET_LDFLAGS)" \
|
|
LDFLAGS="$(EXTRA_LIBDIRS:%=-L%) $(EXTRA_LIBS:%=-l%) " \
|
|
LIBC=" " \
|
|
LIB_EXT=.a \
|
|
OBJ_EXT=.o \
|
|
OSNAME=linux \
|
|
OSVERS=2.4.30 \
|
|
RANLIB=: \
|
|
SITELIBEXP=" " \
|
|
SITEARCHEXP=" " \
|
|
SO=so \
|
|
VENDORARCHEXP=" " \
|
|
VENDORLIBEXP=" " \
|
|
SITEPREFIX=/usr \
|
|
INSTALLPRIVLIB=$(PERL_SITELIB) \
|
|
INSTALLSITELIB=$(PERL_SITELIB) \
|
|
INSTALLVENDORLIB=" " \
|
|
INSTALLARCHLIB=$(PERL_SITELIB) \
|
|
INSTALLSITEARCH=$(PERL_SITELIB) \
|
|
INSTALLVENDORARCH=" " \
|
|
INSTALLBIN=/usr/bin \
|
|
INSTALLSITEBIN=/usr/bin \
|
|
INSTALLVENDORBIN=" " \
|
|
INSTALLSCRIPT=/usr/bin \
|
|
INSTALLSITESCRIPT=/usr/bin \
|
|
INSTALLVENDORSCRIPT=" " \
|
|
INSTALLMAN1DIR=/usr/man/man1 \
|
|
INSTALLSITEMAN1DIR=/usr/man/man1 \
|
|
INSTALLVENDORMAN1DIR=" " \
|
|
INSTALLMAN3DIR=/usr/man/man3 \
|
|
INSTALLSITEMAN3DIR=/usr/man/man3 \
|
|
INSTALLVENDORMAN3DIR=" " \
|
|
LINKTYPE=dynamic \
|
|
DESTDIR=$(PKG_INSTALL_DIR) \
|
|
);
|
|
sed 's!^PERL_INC = .*!PERL_INC = $(STAGING_DIR)/usr/lib/perl5/$(PERL_VERSION)/CORE/!' -i $(if $(3),$(3),$(PKG_BUILD_DIR))/Makefile
|
|
endef
|
|
|
|
define perlmod/Compile
|
|
PERL5LIB=$(PERL_LIB) \
|
|
$(2) \
|
|
$(MAKE) -C $(if $(3),$(3),$(PKG_BUILD_DIR)) \
|
|
$(1) \
|
|
install
|
|
endef
|
|
|
|
define perlmod/Install/NoStrip
|
|
$(INSTALL_DIR) $(strip $(1))$(PERL_SITELIB)
|
|
(cd $(PKG_INSTALL_DIR)$(PERL_SITELIB) && \
|
|
rsync --relative -rlHp --itemize-changes \
|
|
--exclude=\*.pod \
|
|
--exclude=.packlist \
|
|
$(addprefix --exclude=/,$(strip $(3))) \
|
|
--prune-empty-dirs \
|
|
$(strip $(2)) $(strip $(1))$(PERL_SITELIB))
|
|
|
|
chmod -R u+w $(strip $(1))$(PERL_SITELIB)
|
|
endef
|
|
|
|
|
|
define perlmod/_DoStrip
|
|
@echo "---> Stripping modules in: $(strip $(1))$(PERL_SITELIB)"
|
|
find $(strip $(1))$(PERL_SITELIB) -name \*.pm -or -name \*.pl | \
|
|
xargs -r sed -i \
|
|
-e '/^=\(head\|pod\|item\|over\|back\|encoding\|begin\|end\|for\)/,/^=cut/d' \
|
|
-e '/^=\(head\|pod\|item\|over\|back\|encoding\|begin\|end\|for\)/,$$$$d' \
|
|
-e '/^#$$$$/d' \
|
|
-e '/^#[^!"'"'"']/d'
|
|
endef
|
|
|
|
define perlmod/Install
|
|
$(call perlmod/Install/NoStrip,$(1),$(2),$(3))
|
|
|
|
$(if $(CONFIG_PERL_NOCOMMENT),$(if $(PKG_LEAVE_COMMENTS),,$(call perlmod/_DoStrip,$(1),$(2),$(3))))
|
|
endef
|
|
|
|
# You probably don't want to use this directly. Look at perlmod/InstallTests
|
|
define perlmod/_InstallTests
|
|
$(INSTALL_DIR) $(strip $(1))
|
|
(cd $(PKG_BUILD_DIR)/$(2) && \
|
|
rsync --relative -rlHp --itemize-changes \
|
|
--exclude=.packlist \
|
|
--prune-empty-dirs \
|
|
$(strip $(3)) $(strip $(1)))
|
|
|
|
chmod -R u+w $(strip $(1))
|
|
endef
|
|
|
|
define perlmod/InstallBaseTests
|
|
$(if $(CONFIG_PERL_TESTS),$(call perlmod/_InstallTests,$(1)$(PERL_TESTSDIR),,$(2)))
|
|
endef
|
|
|
|
define perlmod/InstallTests
|
|
$(if $(CONFIG_PERL_TESTS),$(call perlmod/_InstallTests,$(1)$(PERL_TESTSDIR),$(2),$(3)))
|
|
endef
|