1 # This makefile simplifies perl module builds.
7 HOST_PERL_PREFIX
:=$(STAGING_DIR_HOSTPKG
)/usr
8 ifneq ($(CONFIG_USE_GLIBC
),)
10 EXTRA_LIBDIRS
:=$(STAGING_DIR
)/lib
12 PERL_CMD
:=$(STAGING_DIR_HOSTPKG
)/usr
/bin
/perl
$(PERL_VERSION
).0
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
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
25 define perlmod
/host
/relink
26 rm -f
$(1)/Makefile.aperl
28 $(CP
) $(1)/perl
$(PERL_CMD
)
29 $(CP
) $(1)/perl
$(STAGING_DIR_HOSTPKG
)/usr
/bin
/perl
32 define perlmod
/host
/Configure
33 (cd
$(HOST_BUILD_DIR
); \
34 PERL_MM_USE_DEFAULT
=1 \
36 $(PERL_CMD
) Makefile.PL \
41 define perlmod
/host
/Compile
43 $(MAKE
) -C
$(HOST_BUILD_DIR
) \
48 define perlmod
/host
/Install
50 $(MAKE
) -C
$(HOST_BUILD_DIR
) \
53 $(call perlmod
/host
/relink
,$(HOST_BUILD_DIR
))
56 define perlmod
/Configure
57 (cd
$(if
$(3),$(3),$(PKG_BUILD_DIR
)); \
58 PERL_MM_USE_DEFAULT
=1 \
60 $(PERL_CMD
) -MConfig
-e
'$$$${tied %Config::Config}{cpprun}="$(GNU_TARGET_NAME)-cpp -E"; do "Makefile.PL"' \
63 CC
=$(GNU_TARGET_NAME
)-gcc \
64 CCFLAGS
="$(MOD_CFLAGS_PERL)" \
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%) " \
86 INSTALLPRIVLIB
=$(PERL_SITELIB
) \
87 INSTALLSITELIB
=$(PERL_SITELIB
) \
88 INSTALLVENDORLIB
=" " \
89 INSTALLARCHLIB
=$(PERL_SITELIB
) \
90 INSTALLSITEARCH
=$(PERL_SITELIB
) \
91 INSTALLVENDORARCH
=" " \
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
=" " \
105 DESTDIR
=$(PKG_INSTALL_DIR
) \
107 sed
's!^PERL_INC = .*!PERL_INC = $(STAGING_DIR)/usr/lib/perl5/$(PERL_VERSION)/CORE/!' -i
$(if
$(3),$(3),$(PKG_BUILD_DIR
))/Makefile
110 define perlmod
/Compile
111 PERL5LIB
=$(PERL_LIB
) \
113 $(MAKE
) -C
$(if
$(3),$(3),$(PKG_BUILD_DIR
)) \
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 \
123 --exclude
=.packlist \
124 $(addprefix --exclude
=/,$(strip $(3))) \
126 $(strip $(2)) $(strip $(1))$(PERL_SITELIB
))
128 chmod
-R u
+w
$(strip $(1))$(PERL_SITELIB
)
132 define perlmod
/_DoStrip
133 @echo
"---> Stripping modules in: $(strip $(1))$(PERL_SITELIB)"
134 find
$(strip $(1))$(PERL_SITELIB
) -name \
*.pm
-or
-name \
*.pl | \
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' \
142 define perlmod
/Install
143 $(call perlmod
/Install
/NoStrip
,$(1),$(2),$(3))
145 $(if
$(CONFIG_PERL_NOCOMMENT
),$(if
$(PKG_LEAVE_COMMENTS
),,$(call perlmod
/_DoStrip
,$(1),$(2),$(3))))
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 \
155 $(strip $(3)) $(strip $(1)))
157 chmod
-R u
+w
$(strip $(1))
160 define perlmod
/InstallBaseTests
161 $(if
$(CONFIG_PERL_TESTS
),$(call perlmod
/_InstallTests
,$(1)$(PERL_TESTSDIR
),,$(2)))
164 define perlmod
/InstallTests
165 $(if
$(CONFIG_PERL_TESTS
),$(call perlmod
/_InstallTests
,$(1)$(PERL_TESTSDIR
),$(2),$(3)))