[Buildroot] [PATCH 06/10] microperl: convert to gentargets

Martin Banky martin.banky at gmail.com
Tue Oct 5 08:22:39 UTC 2010


Signed-off-by: Martin Banky <Martin.Banky at gmail.com>
---
 package/microperl/microperl.mk |  145 ++++++++++++++-------------------------
 1 files changed, 52 insertions(+), 93 deletions(-)

diff --git a/package/microperl/microperl.mk b/package/microperl/microperl.mk
index bf76fa7..5b18606 100644
--- a/package/microperl/microperl.mk
+++ b/package/microperl/microperl.mk
@@ -3,122 +3,81 @@
 # microperl
 #
 #############################################################
-MICROPERL_MAJ=5
-MICROPERL_VERSION=$(MICROPERL_MAJ).8.8
+MICROPERL_VERSION=5.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_DIR=/usr/lib/perl5/$(MICROPERL_VERSION)
 MICROPERL_MODS=$(call qstrip,$(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) -
+define MICROPERL_CONFIGURE_CMDS
 	# makedepend contains bashisms
 	$(SED) 's~sh ./makedepend~bash ./makedepend~' \
-		$(MICROPERL_DIR)/Makefile.SH \
-		$(MICROPERL_DIR)/x2p/Makefile.SH \
-		$(MICROPERL_DIR)/pod/Makefile.SH
-	chmod -R u+w $(MICROPERL_DIR)
-	touch $@
-
-$(MICROPERL_DIR)/.host_configured: $(MICROPERL_DIR)/.source
+		$(@D)/Makefile.SH \
+		$(@D)/x2p/Makefile.SH \
+		$(@D)/pod/Makefile.SH
+	chmod -R u+w $(@D)
 	# 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
-	$(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
+	(cd $(@D); ./Configure -Dcc=$(HOSTCC) -de  )
+	$(SED) 's/^.*<command-line>.*//g' $(@D)/Makefile
+	$(SED) 's/^.*<command-line>.*//g' $(@D)/x2p/Makefile
+	$(SED) 's/^.*<command-line>.*//g' $(@D)/makefile
+	$(SED) 's/^.*<command-line>.*//g' $(@D)/x2p/makefile
+endef
+
+define MICROPERL_BUILD_CMDS
+	$(MAKE) -C $(@D)		|| echo "An error is expected on make"
+	$(MAKE) -C $(@D) test	|| echo "An error is expected on make test"
 	# 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 $(@D); \
+		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; \
+	(cd $(@D); \
+		chmod u+w uconfig.h; ./uconfig.sh; \
+		$(MAKE) -f $(@D)/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
+	$(MAKE) -f $(@D)/Makefile.micro CC="$(TARGET_CC)" \
+		OPTIMIZE="$(TARGET_CFLAGS)" -C $(@D)
+endef
 
-$(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; \
+define MICROPERL_INSTALL_MODS
+	(cd $(@D); \
+		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 \
+			install -D -m 644 $(@D)/lib/$$i $(TARGET_DIR)/$(MICROPERL_MODS_DIR)/$$i; \
+		done; \
 	)
+endef
 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: $(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
+define MICROPERL_INSTALL_TARGET_CMDS
+	$(MICROPERL_INSTALL_MODS)
+	install -D -m 755 $(@D)/microperl $(TARGET_DIR)/usr/bin/microperl
+	(cd $(TARGET_DIR)/usr/bin; rm -f perl; ln -s microperl perl;)
+endef
 
-microperl-clean:
+define MICROPERL_UNINSTALL_TARGET_CMDS
 	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
+	-rmdir $(TARGET_DIR)/usr/lib/perl5
+endef
 
-microperl-dirclean:
-	rm -rf $(MICROPERL_DIR)
+define MICROPERL_CLEAN_CMDS
+	-$(MAKE) -C $(@D) -f Makefile.micro clean
+endef
 
-#############################################################
-#
-# Toplevel Makefile options
-#
-#############################################################
-ifeq ($(BR2_PACKAGE_MICROPERL),y)
-TARGETS+=microperl
-endif
+$(eval $(call GENTARGETS,package,microperl))
-- 
1.7.3.1




More information about the buildroot mailing list