1 #############################################################
5 #############################################################
7 PERL_VERSION
=$(PERL_MAJ
).8.8
8 PERL_SOURCE
=perl-
$(PERL_VERSION
).
tar.bz2
10 PERL_SITE
=http
://www.cpan.org
/src
/
11 PERL_DIR
=$(BUILD_DIR
)/perl-
$(PERL_VERSION
)
13 PERL_MODS_DIR
=/usr
/lib
/perl
$(PERL_MAJ
)/$(PERL_VERSION
)
14 PERL_MODS
=$(subst ",,$(BR2_PACKAGE_PERL_MODULES))
16 ifeq ($(BR2_PACKAGE_AUTOMAKE
),y
)
17 PERL_MODS
+=File
/Basename.pm Errno.pm Config.pm IO
/File.pm Symbol.pm \
18 SelectSaver.pm IO
/Seekable.pm IO
/Handle.pm IO.pm XSLoader.pm \
19 DynaLoader.pm AutoLoader.pm Carp
/Heavy.pm
22 ifeq ($(BR2_ENDIAN
),"BIG")
23 ifeq ($(KERNEL_BITS
),64)
24 PERL_BYTEORDER
:=87654321
26 ifeq ($(KERNEL_BITS
),32)
30 ifeq ($(BR2_ENDIAN
),"LITTLE")
31 ifeq ($(KERNEL_BITS
),64)
32 PERL_BYTEORDER
:=12345678
34 ifeq ($(KERNEL_BITS
),32)
38 ifeq ($(KERNEL_BITS
),32)
41 PERL_SIZEOF_LONG_LONG
:=8
42 PERL_SIZEOF_LONG_DOUBLE
:=12
44 PERL_TYPE_i64
:=long long
45 PERL_TYPE_QUAD
:=long long
49 ifeq ($(KERNEL_BITS
),64)
51 PERL_SIZEOF_LONG_LONG
:=8
52 PERL_SIZEOF_LONG_DOUBLE
:=16
61 ifneq ($(PERL_VERSION
),$(MICROPERL_VERSION
))
62 $(DL_DIR
)/$(PERL_SOURCE
):
63 $(WGET
) -P
$(DL_DIR
) $(PERL_SITE
)/$(PERL_SOURCE
)
66 $(PERL_DIR
)/.unpacked
: $(DL_DIR
)/$(PERL_SOURCE
)
67 rm -rf
$(BUILD_DIR
)/tmp.perl
68 mkdir
-p
$(BUILD_DIR
)/tmp.perl
69 $(PERL_CAT
) $(DL_DIR
)/$(PERL_SOURCE
) |
tar -C
$(BUILD_DIR
)/tmp.perl
$(TAR_OPTIONS
) -
70 mv
$(BUILD_DIR
)/tmp.perl
/perl-
$(PERL_VERSION
) $(@D
)
71 toolchain
/patch-kernel.sh
$(PERL_DIR
) package
/perl
/ perl-
$(PERL_VERSION
)\
*.patch
74 $(PERL_DIR
)/.configured
: $(PERL_DIR
)/.unpacked
75 # First we need to build a perl for the host..
76 (cd
$(PERL_DIR
); .
/Configure
-de
; \
77 $(MAKE1
) CC
="$(HOSTCC)" && \
78 mv perl hostperl
&& ln
-sf hostperl miniperl
; \
80 # ..then we can try to build it for the target. Must be some obscure
83 # Unsurprisingly also it's configury sucks
84 (cd
$(PERL_DIR
); rm -f config.sh Policy.sh
; \
85 $(CONFIG_SHELL
) .
/Configure
-deE \
86 -DXXXusecrosscompile
=yes_my_dear_and_apparently_you_could_impossibly_autodetect_this_fact \
87 -DXXXcc
="$(TARGET_CC)" \
88 -DXXXcflags
="$(TARGET_CFLAGS)" \
89 -DXXXoptimize
="$(TARGET_CFLAGS)" \
90 -DXXXldflags
="$(TARGET_LDFLAGS)" \
91 -Dcf_by
="Buildroot $(BR2_VERSION)" \
92 -A
define:osvers
=$(LINUX_HEADERS_VERSION
) \
93 -Dinstallprefix
="$(STAGING_DIR)" \
97 -Dprivlib
=$(STAGING_DIR
)/$(PERL_MODS_DIR
) \
98 -Darchlib
=$(STAGING_DIR
)/$(PERL_MODS_DIR
) \
99 -Dvendorlib
=$(STAGING_DIR
)/$(PERL_MODS_DIR
) \
100 -Dvendorarch
=$(STAGING_DIR
)/$(PERL_MODS_DIR
) \
101 -Dsitelib
=$(STAGING_DIR
)/$(PERL_MODS_DIR
) \
102 -Dsitearch
=$(STAGING_DIR
)/$(PERL_MODS_DIR
) \
103 $(if
$(BR2_ENABLE_SHARED
),-Duseshrplib
,-Uuseshrplib
) \
104 $(if
$(BR2_PTHREADS_NONE
),-Uusethreads
-Uuseithreads
,-Dusethreads
-Duseithreads
) \
105 $(if
$(BR2_LARGEFILE
),-Duselargefiles
-Dd_uselargefiles
,-Uuselargefiles
-Ud_uselargefiles
-Ud_readdir64_r
-Ud_off64_t
) \
110 $(if
$(BR2__UCLIBC_UCLIBC_HAS_SHADOW
),-Di_shadow
,-Ui_shadow
) \
111 $(if
$(BR2__UCLIBC_UCLIBC_HAS_SYSLOG
),-Di_syslog
,-Ui_syslog
) \
124 # despite specifying some desired settings above, this crap is broken
125 # enough not to set the config.sh properly, not even trivia like osvers.
126 # Fix this trash manually..
128 "s|^\(optimize\)=.*|\1=\'$(TARGET_CFLAGS)\'|" \
129 -e
"s|^\(osversXXX\)=.*|\1=\'$(LINUX_HEADERS_VERSION)\'|" \
130 -e
"s|^\(ar\)=.*|\1=\'$(TARGET_AR)\'|" \
131 -e
"s|^\(full_ar\)=.*|\1=\'$(TARGET_AR)\'|" \
132 -e
"s|^\(archname\)=.*|\1=\'$(REAL_GNU_TARGET_NAME)\'|" \
133 -e
"s|^\(cc\)=.*|\1=\'$(TARGET_CC) $(TARGET_CC_FLAGS)\'|" \
134 -e
"s|^\(ld\)=.*|\1=\'$(TARGET_LD) $(TARGET_LD_FLAGS)\'|" \
135 -e
"s|^\(ldflags\)=.*|\1=\'$(TARGET_LDFLAGS)\'|" \
136 -e
"s|/usr/local/|$(STAGING_DIR)/usr/|g" \
137 -e
"s|^\(byteorder\)=.*|\1=\'$(PERL_BYTEORDER)\'|" \
138 -e
"s|^\(alignbytes\)=.*|\1=\'$(PERL_SIZEOF_LONG)\'|" \
139 -e
"s|^\(longsize\)=.*|\1=\'$(PERL_SIZEOF_LONG)\'|" \
140 -e
"s|^\(ivsize\)=.*|\1=\'$(PERL_SIZEOF_LONG)\'|" \
141 -e
"s|^\(ptrsize\)=.*|\1=\'$(PERL_SIZEOF_LONG)\'|" \
142 -e
"s|^\(sizesize\)=.*|\1=\'$(PERL_SIZEOF_LONG)\'|" \
143 -e
"s|^\(uvsize\)=.*|\1=\'$(PERL_SIZEOF_LONG)\'|" \
144 -e
"s|^\(longlongsize\)=.*|\1=\'$(PERL_SIZEOF_LONG_LONG)\'|" \
145 -e
"s|^\(longdblsize\)=.*|\1=\'$(PERL_SIZEOF_LONG_DOUBLE)\'|" \
146 -e
"s|^\(quadkind\)=.*|\1=\'$(PERL_QUAD_KIND)\'|" \
147 -e
"s|^\(quadtype\)=.*|\1=\'$(PERL_TYPE_QUAD)\'|" \
148 -e
"s|^\(uquadtype\)=.*|\1=\'unsigned $(PERL_TYPE_QUAD)\'|" \
149 -e
"s|^\(i32type\)=.*|\1=\'$(PERL_TYPE_i32)\'|" \
150 -e
"s|^\(u32type\)=.*|\1=\'unsigned $(PERL_TYPE_i32)\'|" \
151 -e
"s|^\(i64type\)=.*|\1=\'$(PERL_TYPE_i64)\'|" \
152 -e
"s|^\(u64type\)=.*|\1=\'unsigned $(PERL_TYPE_i64)\'|" \
153 -e
"s|^\(d_u32align\)=.*|\1=\'$(if $(PERL_is_32),undef,define)\'|" \
154 -e
"s|^\(nv_preserves_uv_bits\)=.*|\1=\'$(if $(PERL_is_32),32,53)\'|" \
155 -e
"s|^\(use64bitall\)=.*|\1=\'$(if $(PERL_is_32),undef,define)\'|" \
156 -e
"s|^\(use64bitint\)=.*|\1=\'$(if $(PERL_is_32),undef,define)\'|" \
157 -e
"s|^\(selectminbits\)=.*|\1=\'$(if $(PERL_is_32),32,64)\'|" \
158 -e
"s|^\(uidformat\)=.*|\1=\'\"$(PERL_UID_FORMAT)\"\'|" \
159 -e
"s|^\(gidformat\)=.*|\1=\'\"$(PERL_UID_FORMAT)\"\'|" \
160 -e
"s|^\(sPRIXU64\)=.*|\1=\'\"$(if $(PERL_is_32),LX,lX)\"\'|" \
161 -e
"s|^\(sPRId64\)=.*|\1=\'\"$(if $(PERL_is_32),Ld,ld)\"\'|" \
162 -e
"s|^\(sPRIi64\)=.*|\1=\'\"$(if $(PERL_is_32),Li,li)\"\'|" \
163 -e
"s|^\(sPRIo64\)=.*|\1=\'\"$(if $(PERL_is_32),Lo,lo)\"\'|" \
164 -e
"s|^\(sPRIu64\)=.*|\1=\'\"$(if $(PERL_is_32),Lu,lu)\"\'|" \
165 -e
"s|^\(sPRIx64\)=.*|\1=\'\"$(if $(PERL_is_32),Lx,lx)\"\'|" \
166 -e
"s|^\(sPRIEUldbl\)=.*|\1=\'\"$(if $(PERL_is_32),LE,lE)\"\'|" \
167 -e
"s|^\(sPRIFUldbl\)=.*|\1=\'\"$(if $(PERL_is_32),LF,lF)\"\'|" \
168 -e
"s|^\(sPRIGUldbl\)=.*|\1=\'\"$(if $(PERL_is_32),LG,lG)\"\'|" \
169 -e
"s|^\(sPRIeldbl\)=.*|\1=\'\"$(if $(PERL_is_32),Le,le)\"\'|" \
170 -e
"s|^\(sPRIfldbl\)=.*|\1=\'\"$(if $(PERL_is_32),Lf,lf)\"\'|" \
171 -e
"s|^\(sPRIgldbl\)=.*|\1=\'\"$(if $(PERL_is_32),Lg,lg)\"\'|" \
172 -e
"s|^\(sSCNfldbl\)=.*|\1=\'\"$(if $(PERL_is_32),Lf,lf)\"\'|" \
173 $(PERL_DIR
)/config.sh
174 ifneq ($(BR2_LARGEFILE
),y
)
176 "/cppsymbols/s/\(_LARGEFILE64_SOURCE\|_LARGEFILE_SOURCE\|__USE_LARGEFILE\|__USE_LARGEFILE64\)=[^[:space:]]*//" \
177 $(PERL_DIR
)/config.sh
179 cp
-dpf
$(PERL_DIR
)/config.sh
$(PERL_DIR
)/config.sh
.01
181 $(CONFIG_SHELL
) .
/Configure
-f config.sh
-reS \
185 $(PERL_DIR
)/perl
: $(PERL_DIR
)/.configured
186 $(MAKE1
) -C
$(PERL_DIR
)
188 $(TARGET_DIR
)/usr
/bin
/perl
: $(PERL_DIR
)/perl
189 ifneq ($(PERL_MODS
),)
191 for i in
$(PERL_MODS
); do \
192 $(INSTALL
) -D lib
/$$i $(TARGET_DIR
)/$(PERL_MODS_DIR
)/$$i; \
196 $(INSTALL
) -D
-m
0755 $(PERL_DIR
)/perl
$(TARGET_DIR
)/usr
/bin
/perl
197 (cd
$(TARGET_DIR
)/usr
/bin
; rm -f perl
; ln
-s perl perl
;)
199 perl
: uclibc
$(TARGET_DIR
)/usr
/bin
/perl
201 perl-source
: $(DL_DIR
)/$(PERL_SOURCE
)
204 rm -rf
$(TARGET_DIR
)/usr
/bin
/perl \
205 $(TARGET_DIR
)/$(PERL_MODS_DIR
) $(TARGET_DIR
)/usr
/bin
/perl
206 -rmdir
$(TARGET_DIR
)/usr
/lib
/perl
$(PERL_MAJ
)
207 -$(MAKE
) -C
$(PERL_DIR
) clean
212 #############################################################
214 # Toplevel Makefile options
216 #############################################################
217 ifeq ($(BR2_PACKAGE_PERL
),y
)