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