# $Id: Makefile 4033 2006-06-21 02:32:39Z nbd $

include $(TOPDIR)/rules.mk

PKG_NAME:=perl
PKG_VERSION:=5.8.8
PKG_RELEASE:=1
PKG_MD5SUM:=a377c0c67ab43fd96eeec29ce19e8382

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 $(INCLUDE_DIR)/package.mk
include perlmod.mk

define Package/perl
  SECTION:=lang
  CATEGORY:=Languages
  URL:=http://www.cpan.org/
  MAINTAINER:=Dmitry Frolov <frol@nov.net>
  TITLE:=Perl language
endef

define Build/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-mipsel-linux-uclibc.in \
		> $(PKG_BUILD_DIR)/config.sh
	(cd $(PKG_BUILD_DIR) && ./Configure -S)
endef

define Build/Compile
	@echo
	@echo "===> Stage 4: Build target miniperl binary"
	@echo
	-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

$(eval $(call BuildPackage,perl))

-include perlbase.mk
