+ $(INSTALL_DIR) $(1)/usr/bin
+ $(INSTALL_BIN) $(PKG_BUILD_DIR)/microperl $(1)/usr/bin/
+endef
+
+include perlmod.mk
+
+define Package/perl
+$(call Package/perl/Default)
+ MAINTAINER:=Peter Colberg <peter@petercolberg.org>
+endef
+
+define Package/perl/description
+ Perl is a stable, cross platform programming language.
+ It is used for mission critical projects in the public and private sectors
+ and is widely used to program web applications of all needs.
+endef
+
+define Build/perl/Configure
+ @echo
+ @echo "===> Stage 1: Configure host perl"
+ @echo
+ mkdir -p $(PKG_BUILD_DIR)/host-perl
+ (cd $(PKG_BUILD_DIR)/host-perl && sh ../Configure -der -Dmksymlinks -Uusedl)
+
+ @echo
+ @echo "===> Stage 2: Build host perl binary with static extensions"
+ @echo
+ $(MAKE) -C $(PKG_BUILD_DIR)/host-perl
+
+ @echo
+ @echo "===> Stage 3: Configure target perl"
+ @echo
+ -$(MAKE) -C $(PKG_BUILD_DIR) clean
+ sed \
+ -e 's!%%CC%%!$(TARGET_CC)!g' \
+ -e 's!%%CFLAGS%%!$(TARGET_CFLAGS) -DUSE_CROSS_COMPILE -I$(STAGING_DIR)/include -I$(STAGING_DIR)/usr/include!g' \
+ -e 's!%%CPP%%!$(TARGET_CROSS)gcc -E!g' \
+ -e 's!%%AR%%!$(TARGET_CROSS)ar!g' \
+ -e 's!%%LD%%!$(TARGET_CROSS)gcc!g' \
+ -e 's!%%LDFLAGS%%!-rdynamic -L$(STAGING_DIR)/lib -L$(STAGING_DIR)/usr/lib!g' \
+ -e 's!%%LIBDIRS%%!$(STAGING_DIR)/lib $(STAGING_DIR)/usr/lib!g' \
+ -e 's!%%INCDIRS%%!$(STAGING_DIR)/include $(STAGING_DIR)/usr/include!g' \
+ files/config.sh-$(patsubst i386,i486,$(ARCH)).in \
+ > $(PKG_BUILD_DIR)/config.sh
+ (cd $(PKG_BUILD_DIR) && ./Configure -S)
+endef
+
+define Build/perl/Compile
+ @echo
+ @echo "===> Stage 4: Build target miniperl binary"
+ @echo
+ install -m 0644 $(PKG_BUILD_DIR)/config.h $(PKG_BUILD_DIR)/xconfig.h
+ -rm -f $(PKG_BUILD_DIR)/miniperl
+ $(MAKE) -C $(PKG_BUILD_DIR) miniperl
+ mkdir -p $(PKG_BUILD_DIR)/target-bin
+ install -m 0755 $(PKG_BUILD_DIR)/miniperl $(PKG_BUILD_DIR)/target-bin/
+
+ @echo
+ @echo "===> Stage 5: Build target perl binary"
+ @echo
+ -rm -f $(PKG_BUILD_DIR)/miniperl $(PKG_BUILD_DIR)/perl
+ install -m 0755 $(PKG_BUILD_DIR)/host-perl/miniperl $(PKG_BUILD_DIR)/
+ touch $(PKG_BUILD_DIR)/miniperl
+ $(MAKE) -C $(PKG_BUILD_DIR) perl
+ install -m 0755 $(PKG_BUILD_DIR)/perl $(PKG_BUILD_DIR)/target-bin/
+
+ @echo
+ @echo "===> Stage 6: Build target extensions and utils"
+ @echo
+ -rm -f $(PKG_BUILD_DIR)/miniperl $(PKG_BUILD_DIR)/perl
+ install -m 0755 $(PKG_BUILD_DIR)/host-perl/miniperl $(PKG_BUILD_DIR)/
+ ln -sf miniperl $(PKG_BUILD_DIR)/perl
+ touch $(PKG_BUILD_DIR)/miniperl $(PKG_BUILD_DIR)/perl
+ $(MAKE) -C $(PKG_BUILD_DIR)
+
+ @echo
+ @echo "===> Stage 7: Install Perl into staging dir"
+ @echo
+ -rm -f $(PKG_BUILD_DIR)/perl
+ $(INSTALL_BIN) $(PKG_BUILD_DIR)/host-perl/perl $(PKG_BUILD_DIR)/
+ (cd $(PKG_BUILD_DIR) && ./perl installperl --destdir=$(STAGING_DIR))
+
+ @echo
+ @echo "===> Stage 8: Install Perl into a temporary root"
+ @echo
+ -rm -f $(PKG_BUILD_DIR)/perl
+ $(INSTALL_BIN) $(PKG_BUILD_DIR)/target-bin/perl $(PKG_BUILD_DIR)
+ -rm -rf $(PKG_INSTALL_DIR)
+ mkdir -p $(PKG_INSTALL_DIR)
+ (cd $(PKG_BUILD_DIR) && host-perl/miniperl installperl --destdir=$(PKG_INSTALL_DIR))
+endef
+
+define Package/perl/install
+ $(INSTALL_DIR) $(1)/usr/bin
+ $(INSTALL_BIN) $(PKG_INSTALL_DIR)/usr/bin/perl$(PKG_VERSION) $(1)/usr/bin
+ ln -f $(1)/usr/bin/perl$(PKG_VERSION) $(1)/usr/bin/perl
+endef
+
+ifneq ($(CONFIG_PACKAGE_microperl),)
+define Build/microperl
+ $(call Build/Template,microperl)
+endef
+endif
+$(eval $(Build/microperl))
+
+ifneq ($(CONFIG_PACKAGE_perl),)
+define Build/perl
+ $(call Build/Template,perl)
+endef
+endif
+$(eval $(Build/perl))
+
+define Build/Configure
+endef
+
+define Build/Compile