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