1 # This makefile simplifies perl module builds.
4 ifeq ($(origin PERL_INCLUDE_DIR
),undefined
)
5 PERL_INCLUDE_DIR
:=$(dir $(lastword
$(MAKEFILE_LIST
)))
8 include $(PERL_INCLUDE_DIR
)/perlver.mk
10 ifneq ($(PKG_NAME
),perl
)
11 PKG_VERSION
:=$(PKG_VERSION
)+perl
$(PERL_VERSION2
)
14 PERL_VERSION
:=$(PERL_VERSION2
)
17 HOST_PERL_PREFIX
:=$(STAGING_DIR_HOSTPKG
)/usr
18 ifneq ($(CONFIG_USE_GLIBC
),)
20 EXTRA_LIBDIRS
:=$(STAGING_DIR
)/lib
22 PERL_CMD
:=$(STAGING_DIR_HOSTPKG
)/usr
/bin
/perl
$(PERL_VERSION3
)
24 MOD_CFLAGS_PERL
:=-D_LARGEFILE_SOURCE
-D_FILE_OFFSET_BITS
=64 $(TARGET_CFLAGS
) $(TARGET_CPPFLAGS
)
25 ifdef CONFIG_PERL_THREADS
26 MOD_CFLAGS_PERL
+= -D_REENTRANT
-D_GNU_SOURCE
29 MOD_CFLAGS_PERL
+= -D_LARGEFILE64_SOURCE
32 # Module install prefix
33 PERL_SITELIB
:=/usr
/lib
/perl5
/$(PERL_VERSION
)
34 PERL_TESTSDIR
:=/usr
/share
/perl
/perl-tests
35 PERLBASE_TESTSDIR
:=/usr
/share
/perl
/perlbase-tests
36 PERLMOD_TESTSDIR
:=/usr
/share
/perl
/perlmod-tests
38 FLOCK
:=$(STAGING_DIR_HOST
)/bin
/flock
40 define perlmod
/host
/relink
41 rm -f
$(1)/Makefile.aperl
42 ($(FLOCK
) -w
900 9 ||
{ echo perlmod
/host
/relink
: failed to acquire lock
; exit
1; }; \
43 $(MAKE
) -C
$(1) perl
&& \
44 $(INSTALL_BIN
) $(1)/perl
$(PERL_CMD
) && \
45 $(INSTALL_BIN
) $(1)/perl
$(STAGING_DIR_HOSTPKG
)/usr
/bin
/perl \
46 ) 9> $(TMP_DIR
)/.perlmod-perl.flock
49 define perlmod
/host
/Configure
50 (cd
$(HOST_BUILD_DIR
); \
51 $(FLOCK
) -s
-w
300 9 ||
{ echo perlmod
/host
/Configure
: failed to acquire lock
; exit
1; }; \
52 PERL_MM_USE_DEFAULT
=1 \
54 $(PERL_CMD
) Makefile.PL \
56 ) 9> $(TMP_DIR
)/.perlmod-perl.flock
;
59 define perlmod
/host
/Compile
60 ($(FLOCK
) -s
-w
300 9 ||
{ echo perlmod
/host
/Compile
: failed to acquire lock
; exit
1; }; \
62 $(MAKE
) -C
$(HOST_BUILD_DIR
) \
65 ) 9> $(TMP_DIR
)/.perlmod-perl.flock
68 define perlmod
/host
/Install
69 ($(FLOCK
) -s
-w
300 9 ||
{ echo perlmod
/host
/Install
: failed to acquire lock
; exit
1; }; \
71 $(MAKE
) -C
$(HOST_BUILD_DIR
) \
74 ) 9> $(TMP_DIR
)/.perlmod-perl.flock
75 $(call perlmod
/host
/relink
,$(HOST_BUILD_DIR
))
78 define perlmod
/Configure
79 (cd
$(if
$(3),$(3),$(PKG_BUILD_DIR
)); \
80 $(FLOCK
) -s
-w
300 9 ||
{ echo perlmod
/Configure
: failed to acquire lock
; exit
1; }; \
81 (echo
-e
'use Config;\n\n$$$${tied %Config::Config}{cpprun}="$(GNU_TARGET_NAME)-cpp -E";\n' ; cat Makefile.PL
) | \
82 PERL_MM_USE_DEFAULT
=1 \
84 $(PERL_CMD
) -I.
-- - \
87 CC
=$(GNU_TARGET_NAME
)-gcc \
88 CCFLAGS
="$(MOD_CFLAGS_PERL)" \
94 FULL_AR
=$(GNU_TARGET_NAME
)-ar \
95 LD
=$(GNU_TARGET_NAME
)-gcc \
96 LDDLFLAGS
="-shared -rdynamic $(TARGET_LDFLAGS)" \
97 LDFLAGS
="$(EXTRA_LIBDIRS:%=-L%) $(EXTRA_LIBS:%=-l%) " \
110 INSTALLPRIVLIB
=$(PERL_SITELIB
) \
111 INSTALLSITELIB
=$(PERL_SITELIB
) \
112 INSTALLVENDORLIB
=" " \
113 INSTALLARCHLIB
=$(PERL_SITELIB
) \
114 INSTALLSITEARCH
=$(PERL_SITELIB
) \
115 INSTALLVENDORARCH
=" " \
116 INSTALLBIN
=/usr
/bin \
117 INSTALLSITEBIN
=/usr
/bin \
118 INSTALLVENDORBIN
=" " \
119 INSTALLSCRIPT
=/usr
/bin \
120 INSTALLSITESCRIPT
=/usr
/bin \
121 INSTALLVENDORSCRIPT
=" " \
122 INSTALLMAN1DIR
=/usr
/man
/man1 \
123 INSTALLSITEMAN1DIR
=/usr
/man
/man1 \
124 INSTALLVENDORMAN1DIR
=" " \
125 INSTALLMAN3DIR
=/usr
/man
/man3 \
126 INSTALLSITEMAN3DIR
=/usr
/man
/man3 \
127 INSTALLVENDORMAN3DIR
=" " \
129 DESTDIR
=$(PKG_INSTALL_DIR
) \
130 ) 9> $(TMP_DIR
)/.perlmod-perl.flock
131 sed
-i
-e
's!^PERL_INC = .*!PERL_INC = $(STAGING_DIR)/usr/lib/perl5/$(PERL_VERSION)/CORE/!' $(if
$(3),$(3),$(PKG_BUILD_DIR
))/Makefile
134 define perlmod
/Compile
135 ($(FLOCK
) -s
-w
300 9 ||
{ echo perlmod
/Compile
: failed to acquire lock
; exit
1; }; \
136 PERL5LIB
=$(PERL_LIB
) \
138 $(MAKE
) -C
$(if
$(3),$(3),$(PKG_BUILD_DIR
)) \
141 ) 9> $(TMP_DIR
)/.perlmod-perl.flock
144 define perlmod
/Install
/NoStrip
145 $(INSTALL_DIR
) $(strip $(1))$(PERL_SITELIB
)
146 (cd
$(PKG_INSTALL_DIR
)$(PERL_SITELIB
) && \
147 rsync
--relative
-rlHp
--itemize-changes \
149 --exclude
=.packlist \
150 $(addprefix --exclude
=/,$(strip $(3))) \
152 $(strip $(2)) $(strip $(1))$(PERL_SITELIB
))
154 chmod
-R u
+w
$(strip $(1))$(PERL_SITELIB
)
158 define perlmod
/_DoStrip
159 @echo
"---> Stripping modules in: $(strip $(1))$(PERL_SITELIB)"
160 find
$(strip $(1))$(PERL_SITELIB
) -name \
*.pm
-or
-name \
*.pl | \
162 -e
'/^=\(head\|pod\|item\|over\|back\|encoding\|begin\|end\|for\)/,/^=cut/d' \
163 -e
'/^=\(head\|pod\|item\|over\|back\|encoding\|begin\|end\|for\)/,$$$$d' \
168 define perlmod
/Install
169 $(call perlmod
/Install
/NoStrip
,$(1),$(2),$(3))
171 $(if
$(CONFIG_PERL_NOCOMMENT
),$(if
$(PKG_LEAVE_COMMENTS
),,$(call perlmod
/_DoStrip
,$(1),$(2),$(3))))
174 # You probably don't want to use this directly. Look at perlmod/InstallTests
175 define perlmod
/_InstallTests
176 $(INSTALL_DIR
) $(strip $(1))
177 (cd
$(PKG_BUILD_DIR
)/$(2) && \
178 rsync
--relative
-rlHp
--itemize-changes \
179 --exclude
=.packlist \
181 $(strip $(3)) $(strip $(1)))
183 chmod
-R u
+w
$(strip $(1))
186 define perlmod
/InstallBaseTests
187 $(if
$(CONFIG_PERL_TESTS
),$(call perlmod
/_InstallTests
,$(1)$(PERL_TESTSDIR
),,$(2)))
190 define perlmod
/InstallTests
191 $(if
$(CONFIG_PERL_TESTS
),$(call perlmod
/_InstallTests
,$(1)$(PERL_TESTSDIR
),$(2),$(3)))