chiark / gitweb /
dffaf36368b4f1ee4b31b092dd5de899e4ad4d51
[termux-packages] / packages / perl / build.sh
1 # This port uses perl-cross: http://arsv.github.io/perl-cross/index.html
2 TERMUX_PKG_HOMEPAGE=http://www.perl.org/
3 TERMUX_PKG_DESCRIPTION="Capable, feature-rich programming language"
4 # cpan modules will require make:
5 TERMUX_PKG_DEPENDS="make"
6 TERMUX_PKG_VERSION=5.22.1
7 TERMUX_PKG_BUILD_REVISION=4
8 TERMUX_PKG_SRCURL=http://www.cpan.org/src/5.0/perl-${TERMUX_PKG_VERSION}.tar.gz
9 # Does not work with parallell builds:
10 TERMUX_MAKE_PROCESSES=1
11 TERMUX_PKG_RM_AFTER_INSTALL="bin/perl${TERMUX_PKG_VERSION}"
12 TERMUX_PKG_BUILD_IN_SRC="yes"
13 TERMUX_PKG_NO_DEVELSPLIT=yes
14
15 termux_step_post_extract_package () {
16         PERLCROSS_VERSION=1.0.2
17         PERLCROSS_FILE=perl-${TERMUX_PKG_VERSION}-cross-${PERLCROSS_VERSION}.tar.gz
18         PERLCROSS_TAR=$TERMUX_PKG_CACHEDIR/$PERLCROSS_FILE
19         test ! -f $PERLCROSS_TAR && curl -o $PERLCROSS_TAR -L https://github.com/arsv/perl-cross/releases/download/$PERLCROSS_VERSION/$PERLCROSS_FILE
20         cd $TERMUX_PKG_SRCDIR
21         tar xf $PERLCROSS_TAR
22         cd perl-${TERMUX_PKG_VERSION}
23         cp -Rf * ../
24
25         # Remove old installation to force fresh:
26         rm -rf $TERMUX_PREFIX/lib/perl5
27
28         # Remove patch from perl-cross for file we patch ourselves:
29         rm $TERMUX_PKG_SRCDIR/cnf/diffs/liblist.patch
30         # Export variable used by Kid.pm.patch:
31         export TERMUX_PKG_SRCDIR
32 }
33
34 termux_step_configure () {
35         export PATH=$PATH:$TERMUX_STANDALONE_TOOLCHAIN/bin
36
37         ORIG_AR=$AR; unset AR
38         ORIG_AS=$AS; unset AS
39         ORIG_CC=$CC; unset CC
40         ORIG_CXX=$CXX; unset CXX
41         ORIG_CPP=$CPP; unset CPP
42         ORIG_CFLAGS=$CFLAGS; unset CFLAGS
43         ORIG_CPPFLAGS=$CPPFLAGS; unset CPPFLAGS
44         ORIG_CXXFLAGS=$CXXFLAGS; unset CXXFLAGS
45         ORIG_LDFLAGS=$LDFLAGS; unset LDFLAGS
46         ORIG_RANLIB=$RANLIB; unset RANLIB
47         ORIG_LD=$LD; unset LD
48
49         # Since we specify $TERMUX_PREFIX/bin/sh below for the shell
50         # it will be run during the build, so temporarily (removed in
51         # termux_step_post_make_install below) setup symlink:
52         rm -f $TERMUX_PREFIX/bin/sh
53         ln -s /bin/sh $TERMUX_PREFIX/bin/sh
54
55         cd $TERMUX_PKG_BUILDDIR
56         $TERMUX_PKG_SRCDIR/configure \
57                 --target=$TERMUX_HOST_PLATFORM \
58                 -Dsysroot=$TERMUX_STANDALONE_TOOLCHAIN/sysroot \
59                 -Dprefix=$TERMUX_PREFIX \
60                 -Dsh=$TERMUX_PREFIX/bin/sh \
61                 -Duseshrplib \
62                 -A ccflags="-specs=$TERMUX_SCRIPTDIR/termux.spec" \
63                 -A ldflags="-specs=$TERMUX_SCRIPTDIR/termux.spec"
64 }
65
66 termux_step_post_make_install () {
67         # Replace hardlinks with symlinks:
68         cd $TERMUX_PREFIX/share/man/man1
69         rm {perlbug.1,c2ph.1}
70         ln -s perlthanks.1 perlbug.1
71         ln -s pstruct.1 c2ph.1
72
73         # Fix reference to termux.spec used only when cross compiling:
74         perl -p -i -e 's@-specs=/home/fornwall/dc/termux.spec@@g' $TERMUX_PREFIX/lib/perl5/*/*-linux/Config_heavy.pl
75
76         # lib/perl5/5.22.0/arm-linux/Config_heavy.pl
77         # Cleanup:
78         rm $TERMUX_PREFIX/bin/sh
79
80         cd $TERMUX_PREFIX/lib
81         ln -f -s perl5/${TERMUX_PKG_VERSION}/${TERMUX_ARCH}-linux/CORE/libperl.so libperl.so
82
83         cd $TERMUX_PREFIX/include
84         ln -f -s ../lib/perl5/${TERMUX_PKG_VERSION}/${TERMUX_ARCH}-linux/CORE perl
85 }