# # Copyright (C) 2006-2014 OpenWrt.org # # This is free software, licensed under the GNU General Public License v2. # See /LICENSE for more information. # include $(TOPDIR)/rules.mk PKG_NAME:=perl PKG_VERSION:=5.20.0 PKG_RELEASE:=1 PKG_MD5SUM:=406ec049ebe3afcc80d9c76ec78ca4f8 PKG_SOURCE_URL:=ftp://ftp.cpan.org/pub/CPAN/src/5.0 \ http://www.cpan.org/src/5.0/perl-5.20.0.tar.gz \ ftp://ftp.mpi-sb.mpg.de/pub/perl/CPAN/src/5.0 \ http://ftp.mpi-sb.mpg.de/pub/perl/CPAN/src/5.0 \ ftp://ftp.gmd.de/mirrors/CPAN/src/5.0 \ http://ftp5.gwdg.de/pub/languages/perl/CPAN/src/ \ ftp://ftp.funet.fi/pub/languages/perl/CPAN/src/5.0 \ http://ftp.funet.fi/pub/languages/perl/CPAN/src/5.0 PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tar.gz PKG_LICENSE:=GPLv1 ARTISTIC PKG_LICENSE_FILES:=Copying Artistic README PKG_MAINTAINER:=Marcel Denia PKG_BUILD_DIR:=$(BUILD_DIR)/perl/$(PKG_NAME)-$(PKG_VERSION) include $(INCLUDE_DIR)/package.mk ifneq ($(CONFIG_USE_EGLIBC),) EXTRA_LIBS:=bsd EXTRA_LIBDIRS:=$(STAGING_DIR)/lib endif define Package/perl/Default SUBMENU:=Perl SECTION:=lang CATEGORY:=Languages TITLE:=The Perl intepreter URL:=http://www.perl.com/ DEPENDS:=+USE_EGLIBC:libbsd endef define Package/microperl $(call Package/perl/Default) TITLE+=(minimal version) endef define Package/microperl/description A perl package without operating-specific functions such as readdir. endef define Build/Template $(STAMP_CONFIGURED)-$(1): $(STAMP_PREPARED) -$(MAKE) -C $(PKG_BUILD_DIR) clean $(call Build/$(1)/Configure) touch $$@ $(STAMP_BUILT)-$(1): $(STAMP_CONFIGURED)-$(1) $(call Build/$(1)/Compile) touch $$@ $(STAMP_BUILT): $(STAMP_BUILT)-$(1) endef define Build/microperl/Configure endef define Build/microperl/Compile +$(MAKE) $(MAKE_J) -C $(PKG_BUILD_DIR) -f Makefile.micro \ CC="gcc" ugenerate_uudmap +$(MAKE) $(MAKE_J) -C $(PKG_BUILD_DIR) -f Makefile.micro \ CC="$(TARGET_CC)" OPTIMIZE="$(TARGET_CFLAGS)" $(INSTALL_DIR) $(PKG_INSTALL_DIR)/usr/bin/ $(CP) $(PKG_BUILD_DIR)/microperl $(PKG_INSTALL_DIR)/usr/bin/ endef define Package/microperl/install $(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) 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 -Dotherlibdirs=$(PERL_LIB)) @echo @echo "===> Stage 2: Build host perl binary with static extensions" @echo +$(MAKE) $(MAKE_J) -C $(PKG_BUILD_DIR)/host-perl miniperl @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) $(TARGET_CPPFLAGS)!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 $(TARGET_LDFLAGS)!g' \ -e 's!%%LIBDIRS%%!$(STAGING_DIR)/lib $(STAGING_DIR)/usr/lib!g' \ -e 's!%%INCDIRS%%!$(STAGING_DIR)/include $(STAGING_DIR)/usr/include!g' \ -e 's!%%EXTRA_PERLLIBS%%!$(EXTRA_LIBS:%=-l%)!g' \ -e 's!%%EXTRA_PERLLIBDIRS%%!$(EXTRA_LIBDIRS:%=-L%)!g' \ -e 's!%%IPV6%%!$(if $($(CONFIG_IPV6)),define,undef)!g' \ -e 's!%%HOSTMINIPERL%%!$(PKG_BUILD_DIR)/host-perl/miniperl!g' \ -e 's!%%HOSTGENERATE%%!$(PKG_BUILD_DIR)/host-perl/generate_uudmap!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 perl binary" @echo install -m 0644 $(PKG_BUILD_DIR)/config.h $(PKG_BUILD_DIR)/xconfig.h +$(MAKE) $(MAKE_J) -C $(PKG_BUILD_DIR) perl mkdir -p $(PKG_BUILD_DIR)/target-bin install -m 0755 $(PKG_BUILD_DIR)/perl $(PKG_BUILD_DIR)/target-bin/ @echo @echo "===> Stage 5: Build target extensions and utils" @echo +$(MAKE) $(MAKE_J) -C $(PKG_BUILD_DIR) @echo @echo "===> Stage 6: Install Perl into staging dir" @echo (cd $(PKG_BUILD_DIR) && ./miniperl installperl --destdir=$(STAGING_DIR)) @echo @echo "===> Stage 7: Install Perl into a temporary root" @echo mkdir -p $(PKG_INSTALL_DIR) (cd $(PKG_BUILD_DIR) && ./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 -nsf 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 endef $(eval $(call RequireCommand,rsync, \ $(PKG_NAME) requires rsync installed on the host-system. \ )) $(eval $(call BuildPackage,microperl)) $(eval $(call BuildPackage,perl)) -include perlbase.mk