1 # This makefile simplifies perl module builds.
7 HOST_PERL_PREFIX
:=$(STAGING_DIR
)/host
/usr
8 ifneq ($(CONFIG_USE_GLIBC
),)
10 EXTRA_LIBDIRS
:=$(STAGING_DIR
)/lib
12 PERL_CMD
:=$(STAGING_DIR
)/host
/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
)/host
/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
/Install
133 $(call perlmod
/Install
/NoStrip
,$(1),$(2),$(3))
135 @echo
"---> Stripping modules in: $(strip $(1))$(PERL_SITELIB)"
136 find
$(strip $(1))$(PERL_SITELIB
) -name \
*.pm
-or
-name \
*.pl | \
138 -e
'/^=\(head\|pod\|item\|over\|back\|encoding\|begin\|end\|for\)/,/^=cut/d' \
139 -e
'/^=\(head\|pod\|item\|over\|back\|encoding\|begin\|end\|for\)/,$$$$d' \
144 # You probably don't want to use this directly. Look at perlmod/InstallTests
145 define perlmod
/_InstallTests
146 $(INSTALL_DIR
) $(strip $(1))
147 (cd
$(PKG_BUILD_DIR
)/$(2) && \
148 rsync
--relative
-rlHp
--itemize-changes \
149 --exclude
=.packlist \
151 $(strip $(3)) $(strip $(1)))
153 chmod
-R u
+w
$(strip $(1))
156 define perlmod
/InstallBaseTests
157 $(if
$(CONFIG_PERL_TESTS
),$(call perlmod
/_InstallTests
,$(1)$(PERL_TESTSDIR
),,$(2)))
160 define perlmod
/InstallTests
161 $(if
$(CONFIG_PERL_TESTS
),$(call perlmod
/_InstallTests
,$(1)$(PERL_TESTSDIR
),$(2),$(3)))