microperl.mk 2.9 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788
  1. #############################################################
  2. #
  3. # microperl
  4. #
  5. #############################################################
  6. MICROPERL_MAJ=5
  7. MICROPERL_VERSION=$(MICROPERL_MAJ).8.8
  8. MICROPERL_SOURCE=perl-$(MICROPERL_VERSION).tar.bz2
  9. MICROPERL_CAT:=$(BZCAT)
  10. MICROPERL_SITE=ftp://ftp.cpan.org/pub/CPAN/src/5.0
  11. MICROPERL_DIR=$(BUILD_DIR)/perl-$(MICROPERL_VERSION)
  12. MICROPERL_MODS_DIR=/usr/lib/perl$(MICROPERL_MAJ)/$(MICROPERL_VERSION)
  13. MICROPERL_MODS=$(subst ",,$(BR2_PACKAGE_MICROPERL_MODULES))
  14. # ")
  15. ifeq ($(BR2_PACKAGE_AUTOMAKE),y)
  16. MICROPERL_MODS+=File/Basename.pm Errno.pm Config.pm IO/File.pm Symbol.pm \
  17. SelectSaver.pm IO/Seekable.pm IO/Handle.pm IO.pm XSLoader.pm \
  18. DynaLoader.pm AutoLoader.pm Carp/Heavy.pm
  19. endif
  20. $(DL_DIR)/$(MICROPERL_SOURCE):
  21. $(WGET) -P $(DL_DIR) $(MICROPERL_SITE)/$(MICROPERL_SOURCE)
  22. $(MICROPERL_DIR)/.source: $(DL_DIR)/$(MICROPERL_SOURCE)
  23. $(MICROPERL_CAT) $(DL_DIR)/$(MICROPERL_SOURCE) | tar -C $(BUILD_DIR) $(TAR_OPTIONS) -
  24. touch $@
  25. $(MICROPERL_DIR)/.configured: $(MICROPERL_DIR)/.source
  26. ifeq ($(BR2_PACKAGE_AUTOMAKE),y)
  27. # we need to build a perl for the host just for Errno.pm
  28. (cd $(MICROPERL_DIR) ; ./Configure -de ; \
  29. $(MAKE) CC="$(HOSTCC)" ; \
  30. $(SHELL) ext/util/make_ext nonxs Errno MAKE="$(firstword $(MAKE))" ; \
  31. )
  32. endif
  33. (cd $(MICROPERL_DIR) ; chmod u+w uconfig.h ; . ./uconfig.sh ; \
  34. $(MAKE) -f Makefile.micro regen_uconfig ; \
  35. $(SED) 's,PRIVLIB ".*,PRIVLIB "/$(MICROPERL_MODS_DIR)",' \
  36. -e 's,PRIVLIB_EXP ".*,PRIVLIB_EXP "$(MICROPERL_MODS_DIR)",' \
  37. -e 's,BIN ".*,BIN "/usr/bin",' \
  38. ./uconfig.h ; \
  39. )
  40. touch $@
  41. $(MICROPERL_DIR)/microperl: $(MICROPERL_DIR)/.configured
  42. $(MAKE) -f Makefile.micro CC=$(TARGET_CC) \
  43. OPTIMIZE="$(TARGET_CFLAGS)" -C $(MICROPERL_DIR)
  44. ifeq ($(BR2_PACKAGE_AUTOMAKE),y)
  45. #(cd $(@D) ; \
  46. # CONFIG=uconfig.h $(SHELL) ext/util/make_ext nonxs Errno MAKE="$(firstword $(MAKE))" ; \
  47. #)
  48. endif
  49. $(TARGET_DIR)/usr/bin/microperl: $(MICROPERL_DIR)/microperl
  50. ifneq ($(MICROPERL_MODS),)
  51. (cd $(MICROPERL_DIR) ; \
  52. for i in $(patsubst %,$(TARGET_DIR)/$(MICROPERL_MODS_DIR)/%,$(dir $(MICROPERL_MODS))) ; do \
  53. [ -d $$i ] || mkdir -p $$i ; \
  54. done ; \
  55. for i in $(MICROPERL_MODS) ; do \
  56. cp -dpf lib/$$i $(TARGET_DIR)/$(MICROPERL_MODS_DIR)/$$i ; \
  57. done; \
  58. )
  59. endif
  60. cp -dpf $(MICROPERL_DIR)/microperl $(TARGET_DIR)/usr/bin/microperl
  61. (cd $(TARGET_DIR)/usr/bin ; rm -f perl ; ln -s microperl perl ;)
  62. microperl: uclibc $(TARGET_DIR)/usr/bin/microperl
  63. microperl-source: $(DL_DIR)/$(MICROPERL_SOURCE)
  64. microperl-clean:
  65. rm -rf $(TARGET_DIR)/usr/bin/microperl \
  66. $(TARGET_DIR)/$(MICROPERL_MODS_DIR) $(TARGET_DIR)/usr/bin/perl
  67. -rmdir $(TARGET_DIR)/usr/lib/perl$(MICROPERL_MAJ)
  68. -$(MAKE) -C $(MICROPERL_DIR) -f Makefile.micro clean
  69. microperl-dirclean:
  70. rm -rf $(MICROPERL_DIR)
  71. #############################################################
  72. #
  73. # Toplevel Makefile options
  74. #
  75. #############################################################
  76. ifeq ($(strip $(BR2_PACKAGE_MICROPERL)),y)
  77. TARGETS+=microperl
  78. endif