Fresh pull from upstream (stable) package feed
[librecmc/package-feed.git] / lang / perl / perlmod.mk
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