# $Id: Makefile,v 1.4 2006/01/17 06:44:58 frol Exp $
# 

include $(TOPDIR)/rules.mk

PKG_NAME:=perl
PKG_VERSION:=5.8.7
PKG_RELEASE:=1
PKG_MD5SUM:=9a175d6ccbb5d9b41ffac5073ff9cc3c

PKG_SOURCE_URL:=ftp://ftp.cpan.org/pub/CPAN/src/5.0 \
	        ftp://ftp.mpi-sb.mpg.de/pub/perl/CPAN/src/5.0 \
	   	ftp://ftp.gmd.de/mirrors/CPAN/src/5.0 \
		ftp://ftp.funet.fi/pub/languages/perl/CPAN/src/5.0
PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tar.bz2
PKG_CAT:=bzcat

PKG_BUILD_DIR:=$(BUILD_DIR)/perl/$(PKG_NAME)-$(PKG_VERSION)
PKG_INSTALL_DIR:=$(PKG_BUILD_DIR)/ipkg-install

include $(TOPDIR)/package/rules.mk

$(eval $(call PKG_template,PERL,perl,$(PKG_VERSION)-$(PKG_RELEASE),$(ARCH)))

PKG_DIR:=${shell pwd}

$(PKG_BUILD_DIR)/.stage1:
	@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)
	touch $@

$(PKG_BUILD_DIR)/.stage2: $(PKG_BUILD_DIR)/.stage1 $(PKG_BUILD_DIR)/.stage1
	@echo ""
	@echo "===> Stage 2: Build host miniperl binary"
	@echo ""
	$(MAKE) -C $(PKG_BUILD_DIR)/host-perl miniperl
	touch $@

$(PKG_BUILD_DIR)/.stage3: $(PKG_BUILD_DIR)/.stage2
	@echo ""
	@echo "===> Stage 3: Configure target perl"
	@echo ""
	-$(MAKE) -C $(PKG_BUILD_DIR) clean
	mkdir -p $(PKG_BUILD_DIR)/target-bin
	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' \
		$(PKG_DIR)/files/config.sh-mipsel-linux-uclibc.in \
		> $(PKG_BUILD_DIR)/config.sh
	(cd $(PKG_BUILD_DIR) && ./Configure -S)
	touch $@

$(PKG_BUILD_DIR)/.stage4: $(PKG_BUILD_DIR)/.stage3
	@echo ""
	@echo "===> Stage 4: Build target miniperl binary"
	@echo ""
	-rm -f $(PKG_BUILD_DIR)/miniperl
	$(MAKE) -C $(PKG_BUILD_DIR) miniperl
	install -m 0755 $(PKG_BUILD_DIR)/miniperl $(PKG_BUILD_DIR)/target-bin/
	touch $@

$(PKG_BUILD_DIR)/.stage5: $(PKG_BUILD_DIR)/.stage4
	@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/
	touch $@

$(PKG_BUILD_DIR)/.stage6: $(PKG_BUILD_DIR)/.stage5
	@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)
	touch $@

$(PKG_BUILD_DIR)/.stage7: $(PKG_BUILD_DIR)/.stage6
	@echo ""
	@echo "===> Stage 7: Install Perl into staging dir"
	@echo ""
	-rm -f $(PKG_BUILD_DIR)/perl
	install -m 0755 $(PKG_BUILD_DIR)/host-perl/miniperl \
		$(PKG_BUILD_DIR)/perl
	(cd $(PKG_BUILD_DIR) && ./perl installperl \
		--destdir=$(STAGING_DIR))
	touch $@

$(PKG_BUILD_DIR)/.stage8: $(PKG_BUILD_DIR)/.stage7
	@echo ""
	@echo "===> Stage 8: Install Perl into a temporary root"
	@echo ""
	-rm -f $(PKG_BUILD_DIR)/perl
	install -m 0755 $(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))
	chmod -R +w $(PKG_INSTALL_DIR)
	sh $(PKG_DIR)/files/deletepod.sh $(PKG_INSTALL_DIR)
	sh $(PKG_DIR)/files/strippm.sh $(PKG_INSTALL_DIR)
	$(RSTRIP) $(PKG_INSTALL_DIR)
	touch $@

$(PKG_BUILD_DIR)/.configured: $(PKG_BUILD_DIR)/.stage1 $(PKG_BUILD_DIR)/.stage3
	touch $@

$(PKG_BUILD_DIR)/.built: $(PKG_BUILD_DIR)/.stage8
	touch $@

$(IPKG_PERL):
	install -d -m0755 $(IDIR_PERL)/usr/bin
	install -m0755 $(PKG_INSTALL_DIR)/usr/bin/perl$(PKG_VERSION) \
		$(IDIR_PERL)/usr/bin/
	ln -f $(IDIR_PERL)/usr/bin/perl$(PKG_VERSION) $(IDIR_PERL)/usr/bin/perl
	$(IPKG_BUILD) $(IDIR_PERL) $(PACKAGE_DIR)

# module package template
define ipkg_pm

$$(eval $$(call PKG_template,$(1),$(2),$(PKG_VERSION)-$(PKG_RELEASE),$(ARCH)))

$$(IPKG_$(1)):
	sh $(PKG_DIR)/files/install-module.sh \
		$(PKG_INSTALL_DIR)/usr/lib/perl5/5.8 \
		$$(IDIR_$(1))/usr/lib/perl5/5.8 \
		$(3)
	$(IPKG_BUILD) $$(IDIR_$(1)) $(PACKAGE_DIR)
endef

include $(PKG_DIR)/Makefile.modules
