6cd57ce392
Fix the little build systems hacks that no longer applied to the version of Perl being used. With these fixes in place, microperl builds and runs properly simple Perl commands on the target. Signed-off-by: Thomas Petazzoni <thomas.petazzoni@free-electrons.com>
119 lines
3.8 KiB
Makefile
119 lines
3.8 KiB
Makefile
#############################################################
|
|
#
|
|
# microperl
|
|
#
|
|
#############################################################
|
|
MICROPERL_MAJ=5
|
|
MICROPERL_VERSION=$(MICROPERL_MAJ).8.8
|
|
MICROPERL_SOURCE=perl-$(MICROPERL_VERSION).tar.bz2
|
|
MICROPERL_CAT:=$(BZCAT)
|
|
MICROPERL_SITE=ftp://ftp.cpan.org/pub/CPAN/src/5.0
|
|
MICROPERL_DIR=$(BUILD_DIR)/perl-$(MICROPERL_VERSION)
|
|
|
|
MICROPERL_MODS_DIR=/usr/lib/perl$(MICROPERL_MAJ)/$(MICROPERL_VERSION)
|
|
MICROPERL_MODS=$(subst ",,$(BR2_PACKAGE_MICROPERL_MODULES))
|
|
# ")
|
|
ifeq ($(BR2_PACKAGE_AUTOMAKE),y)
|
|
MICROPERL_MODS+=File/Basename.pm Errno.pm Config.pm IO/File.pm Symbol.pm \
|
|
SelectSaver.pm IO/Seekable.pm IO/Handle.pm IO.pm XSLoader.pm \
|
|
DynaLoader.pm AutoLoader.pm Carp/Heavy.pm
|
|
endif
|
|
$(DL_DIR)/$(MICROPERL_SOURCE):
|
|
$(call DOWNLOAD,$(MICROPERL_SITE),$(MICROPERL_SOURCE))
|
|
|
|
$(MICROPERL_DIR)/.source: $(DL_DIR)/$(MICROPERL_SOURCE)
|
|
$(MICROPERL_CAT) $(DL_DIR)/$(MICROPERL_SOURCE) | tar -C $(BUILD_DIR) $(TAR_OPTIONS) -
|
|
chmod -R u+w $(MICROPERL_DIR)
|
|
touch $@
|
|
|
|
$(MICROPERL_DIR)/.host_configured: $(MICROPERL_DIR)/.source
|
|
# we need to build a perl for the host just for Errno.pm
|
|
(cd $(MICROPERL_DIR); ./Configure -Dcc=$(HOSTCC) -de )
|
|
touch $@
|
|
|
|
|
|
$(MICROPERL_DIR)/.host_configured_and_fixed: $(MICROPERL_DIR)/.host_configured
|
|
$(SED) 's/^.*<command-line>.*//g' $(MICROPERL_DIR)/Makefile
|
|
$(SED) 's/^.*<command-line>.*//g' $(MICROPERL_DIR)/x2p/Makefile
|
|
touch $@
|
|
|
|
$(MICROPERL_DIR)/.host_make: $(MICROPERL_DIR)/.host_configured_and_fixed
|
|
$(MAKE) -C $(MICROPERL_DIR) || echo "An error is expected on make"
|
|
touch $@
|
|
|
|
$(MICROPERL_DIR)/.host_make_fixed: $(MICROPERL_DIR)/.host_make
|
|
$(MAKE) -C $(MICROPERL_DIR) test || echo "An error is expected on make test"
|
|
touch $@
|
|
|
|
$(MICROPERL_DIR)/.configured: $(MICROPERL_DIR)/.host_make_fixed
|
|
# we need to build a perl for the host just for Errno.pm
|
|
(cd $(MICROPERL_DIR); \
|
|
chmod a+x ext/util/make_ext; \
|
|
ext/util/make_ext nonxs Errno MAKE="$(firstword $(MAKE))" \
|
|
)
|
|
(cd $(MICROPERL_DIR); \
|
|
chmod u+w uconfig.h; ./uconfig.sh; \
|
|
$(MAKE) -f $(MICROPERL_DIR)/Makefile.micro regen_uconfig; \
|
|
$(SED) 's,PRIVLIB ".*,PRIVLIB "/$(MICROPERL_MODS_DIR)",' \
|
|
-e 's,PRIVLIB_EXP ".*,PRIVLIB_EXP "$(MICROPERL_MODS_DIR)",' \
|
|
-e 's,BIN ".*,BIN "/usr/bin",' \
|
|
./uconfig.h; \
|
|
)
|
|
touch $@
|
|
|
|
$(MICROPERL_DIR)/microperl: $(MICROPERL_DIR)/.configured
|
|
$(MAKE) -f $(MICROPERL_DIR)/Makefile.micro CC=$(TARGET_CC) \
|
|
OPTIMIZE="$(TARGET_CFLAGS)" -C $(MICROPERL_DIR)
|
|
ifeq ($(BR2_PACKAGE_AUTOMAKE),y)
|
|
#(cd $(@D); \
|
|
# CONFIG=uconfig.h $(SHELL) ext/util/make_ext nonxs Errno MAKE="$(firstword $(MAKE))"; \
|
|
#)
|
|
endif
|
|
|
|
$(TARGET_DIR)/usr/bin/microperl: $(MICROPERL_DIR)/microperl
|
|
ifneq ($(MICROPERL_MODS),)
|
|
(cd $(MICROPERL_DIR); \
|
|
for i in $(patsubst %,$(TARGET_DIR)/$(MICROPERL_MODS_DIR)/%,$(dir $(MICROPERL_MODS))); do \
|
|
[ -d $$i ] || mkdir -p $$i; \
|
|
done; \
|
|
for i in $(MICROPERL_MODS); do \
|
|
cp -dpf $(MICROPERL_DIR)/lib/$$i $(TARGET_DIR)/$(MICROPERL_MODS_DIR)/$$i; \
|
|
done; \
|
|
)
|
|
endif
|
|
cp -dpf $(MICROPERL_DIR)/microperl $@
|
|
ifneq ($(BR2_STRIP_none),y)
|
|
$(STRIPCMD) $(STRIP_STRIP_ALL) $@
|
|
endif
|
|
(cd $(TARGET_DIR)/usr/bin; rm -f perl; ln -s microperl perl;)
|
|
|
|
microperl: uclibc $(TARGET_DIR)/usr/bin/microperl
|
|
|
|
microperl-source: $(DL_DIR)/$(MICROPERL_SOURCE)
|
|
|
|
microperl-unpacked: $(MICROPERL_DIR)/.source
|
|
|
|
microperl-config: $(MICROPERL_DIR)/.host_configured
|
|
|
|
microperl-host: $(MICROPERL_DIR)/.host_make
|
|
|
|
microperl-host-fixed: $(MICROPERL_DIR)/.host_make_fixed
|
|
|
|
microperl-clean:
|
|
rm -rf $(TARGET_DIR)/usr/bin/microperl \
|
|
$(TARGET_DIR)/$(MICROPERL_MODS_DIR) $(TARGET_DIR)/usr/bin/perl
|
|
-rmdir $(TARGET_DIR)/usr/lib/perl$(MICROPERL_MAJ)
|
|
-$(MAKE) -C $(MICROPERL_DIR) -f Makefile.micro clean
|
|
|
|
microperl-dirclean:
|
|
rm -rf $(MICROPERL_DIR)
|
|
|
|
#############################################################
|
|
#
|
|
# Toplevel Makefile options
|
|
#
|
|
#############################################################
|
|
ifeq ($(BR2_PACKAGE_MICROPERL),y)
|
|
TARGETS+=microperl
|
|
endif
|