lede-packages-rs

git clone git://archive.git.mtrnord.blog/MTRNord/lede-packages-rs.git
Log | Files | Refs | README | LICENSE

perlmod.mk (4356B)


      1 # This makefile simplifies perl module builds.
      2 #
      3 
      4 PERL_VERSION:=5.22
      5 
      6 # Build environment
      7 HOST_PERL_PREFIX:=$(STAGING_DIR_HOSTPKG)/usr
      8 ifneq ($(CONFIG_USE_GLIBC),)
      9 	EXTRA_LIBS:=bsd
     10 	EXTRA_LIBDIRS:=$(STAGING_DIR)/lib
     11 endif
     12 PERL_CMD:=$(STAGING_DIR_HOSTPKG)/usr/bin/perl$(PERL_VERSION).0
     13 
     14 MOD_CFLAGS_PERL:=-D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64 $(TARGET_CFLAGS) $(TARGET_CPPFLAGS)
     15 ifdef CONFIG_PERL_THREADS
     16 	MOD_CFLAGS_PERL+= -D_REENTRANT -D_GNU_SOURCE
     17 endif
     18 
     19 # Module install prefix
     20 PERL_SITELIB:=/usr/lib/perl5/$(PERL_VERSION)
     21 PERL_TESTSDIR:=/usr/share/perl/perl-tests
     22 PERLBASE_TESTSDIR:=/usr/share/perl/perlbase-tests
     23 PERLMOD_TESTSDIR:=/usr/share/perl/perlmod-tests
     24 
     25 define perlmod/host/relink
     26 	rm -f $(1)/Makefile.aperl
     27 	$(MAKE) -C $(1) perl
     28 	$(CP) $(1)/perl $(PERL_CMD)
     29 	$(CP) $(1)/perl $(STAGING_DIR_HOSTPKG)/usr/bin/perl
     30 endef
     31 
     32 define perlmod/host/Configure
     33 	(cd $(HOST_BUILD_DIR); \
     34 	PERL_MM_USE_DEFAULT=1 \
     35 	$(2) \
     36 	$(PERL_CMD) Makefile.PL \
     37 		$(1) \
     38 	);
     39 endef
     40 
     41 define perlmod/host/Compile
     42 	$(2) \
     43 	$(MAKE) -C $(HOST_BUILD_DIR) \
     44 		$(1) \
     45 		install
     46 endef
     47 
     48 define perlmod/host/Install
     49 	$(2) \
     50 	$(MAKE) -C $(HOST_BUILD_DIR) \
     51 		$(1) \
     52 		install
     53 	$(call perlmod/host/relink,$(HOST_BUILD_DIR))
     54 endef
     55 
     56 define perlmod/Configure
     57 	(cd $(if $(3),$(3),$(PKG_BUILD_DIR)); \
     58 	PERL_MM_USE_DEFAULT=1 \
     59 	$(2) \
     60 	$(PERL_CMD) -MConfig -e '$$$${tied %Config::Config}{cpprun}="$(GNU_TARGET_NAME)-cpp -E"; do "Makefile.PL"' \
     61 		$(1) \
     62 		AR=ar \
     63 		CC=$(GNU_TARGET_NAME)-gcc \
     64 		CCFLAGS="$(MOD_CFLAGS_PERL)" \
     65 		CCCDLFLAGS=-fPIC \
     66 		CCDLFLAGS=-Wl,-E \
     67 		DLEXT=so \
     68 		DLSRC=dl_dlopen.xs \
     69 		EXE_EXT=" " \
     70 		FULL_AR=$(GNU_TARGET_NAME)-ar \
     71 		LD=$(GNU_TARGET_NAME)-gcc \
     72 		LDDLFLAGS="-shared -rdynamic $(TARGET_LDFLAGS)"  \
     73 		LDFLAGS="$(EXTRA_LIBDIRS:%=-L%) $(EXTRA_LIBS:%=-l%) " \
     74 		LIBC=" " \
     75 		LIB_EXT=.a \
     76 		OBJ_EXT=.o \
     77 		OSNAME=linux \
     78 		OSVERS=2.4.30 \
     79 		RANLIB=: \
     80 		SITELIBEXP=" " \
     81 		SITEARCHEXP=" " \
     82 		SO=so  \
     83 		VENDORARCHEXP=" " \
     84 		VENDORLIBEXP=" " \
     85 		SITEPREFIX=/usr \
     86 		INSTALLPRIVLIB=$(PERL_SITELIB) \
     87 		INSTALLSITELIB=$(PERL_SITELIB) \
     88 		INSTALLVENDORLIB=" " \
     89 		INSTALLARCHLIB=$(PERL_SITELIB) \
     90 		INSTALLSITEARCH=$(PERL_SITELIB) \
     91 		INSTALLVENDORARCH=" " \
     92 		INSTALLBIN=/usr/bin \
     93 		INSTALLSITEBIN=/usr/bin \
     94 		INSTALLVENDORBIN=" " \
     95 		INSTALLSCRIPT=/usr/bin \
     96 		INSTALLSITESCRIPT=/usr/bin \
     97 		INSTALLVENDORSCRIPT=" " \
     98 		INSTALLMAN1DIR=/usr/man/man1 \
     99 		INSTALLSITEMAN1DIR=/usr/man/man1 \
    100 		INSTALLVENDORMAN1DIR=" " \
    101 		INSTALLMAN3DIR=/usr/man/man3 \
    102 		INSTALLSITEMAN3DIR=/usr/man/man3 \
    103 		INSTALLVENDORMAN3DIR=" " \
    104 		LINKTYPE=dynamic \
    105 		DESTDIR=$(PKG_INSTALL_DIR) \
    106 	);
    107 	sed 's!^PERL_INC = .*!PERL_INC = $(STAGING_DIR)/usr/lib/perl5/$(PERL_VERSION)/CORE/!' -i $(if $(3),$(3),$(PKG_BUILD_DIR))/Makefile
    108 endef
    109 
    110 define perlmod/Compile
    111 	PERL5LIB=$(PERL_LIB) \
    112 	$(2) \
    113 	$(MAKE) -C $(if $(3),$(3),$(PKG_BUILD_DIR)) \
    114 		$(1) \
    115 		install
    116 endef
    117 
    118 define perlmod/Install/NoStrip
    119 	$(INSTALL_DIR) $(strip $(1))$(PERL_SITELIB)
    120 	(cd $(PKG_INSTALL_DIR)$(PERL_SITELIB) && \
    121 	rsync --relative -rlHp --itemize-changes \
    122 		--exclude=\*.pod \
    123 		--exclude=.packlist \
    124 		$(addprefix --exclude=/,$(strip $(3))) \
    125 		--prune-empty-dirs \
    126 		$(strip $(2)) $(strip $(1))$(PERL_SITELIB))
    127 
    128 	chmod -R u+w $(strip $(1))$(PERL_SITELIB)
    129 endef
    130 
    131 
    132 define perlmod/_DoStrip
    133 	@echo "---> Stripping modules in: $(strip $(1))$(PERL_SITELIB)"
    134 	find $(strip $(1))$(PERL_SITELIB) -name \*.pm -or -name \*.pl | \
    135 	xargs -r sed -i \
    136 		-e '/^=\(head\|pod\|item\|over\|back\|encoding\|begin\|end\|for\)/,/^=cut/d' \
    137 		-e '/^=\(head\|pod\|item\|over\|back\|encoding\|begin\|end\|for\)/,$$$$d' \
    138 		-e '/^#$$$$/d' \
    139 		-e '/^#[^!"'"'"']/d'
    140 endef
    141 
    142 define perlmod/Install
    143 	$(call perlmod/Install/NoStrip,$(1),$(2),$(3))
    144 
    145 	$(if $(CONFIG_PERL_NOCOMMENT),$(if $(PKG_LEAVE_COMMENTS),,$(call perlmod/_DoStrip,$(1),$(2),$(3))))
    146 endef
    147 
    148 # You probably don't want to use this directly. Look at perlmod/InstallTests
    149 define perlmod/_InstallTests
    150 	$(INSTALL_DIR) $(strip $(1))
    151 	(cd $(PKG_BUILD_DIR)/$(2) && \
    152 	rsync --relative -rlHp --itemize-changes \
    153 		--exclude=.packlist \
    154 		--prune-empty-dirs \
    155 		$(strip $(3)) $(strip $(1)))
    156 
    157 	chmod -R u+w $(strip $(1))
    158 endef
    159 
    160 define perlmod/InstallBaseTests
    161 	$(if $(CONFIG_PERL_TESTS),$(call perlmod/_InstallTests,$(1)$(PERL_TESTSDIR),,$(2)))
    162 endef
    163 
    164 define perlmod/InstallTests
    165 	$(if $(CONFIG_PERL_TESTS),$(call perlmod/_InstallTests,$(1)$(PERL_TESTSDIR),$(2),$(3)))
    166 endef