This is a live mirror of the Perl 5 development currently hosted at https://github.com/perl/perl5
In Perl_pv_escape(), avoid reading 1 byte beyond the end of the buffer.
[perl5.git] / Cross / build-arm-n770-sh
CommitLineData
8ed6d636
VK
1# this is a build script for ARM-linux cross-compiling.
2# it builds miniperl on HOST and then perl for TARGET
3# this approach is like Perl-CE cross-compiling, and allows
4# for full TARGET perl (as opposed to renamed miniperl)
5
608969de
VK
6# to skip Configure/build for HOST miniperl, pass "noconf" argument to this script
7
8ed6d636 8# some trick is different, however - the file extension for objects files
8534470b 9# are chosen to be .${CROSS_NAME}, .armo in our case
8ed6d636
VK
10
11# note how invoked Makefile.PL for cross-compilation:
12# miniperl -MCross Makefile.PL
13
14# steps are:
15# - run HOST configure
16# - build HOST miniperl
17# given freshly-created HOST makefile and existing miniperl fix makefile
18# to use
19
20CROSS_NAME=arm
21
22# suppose compiler is in /opt/arm-2006q3
23CCPATH=/opt/arm-2006q3
24PATH=$CCPATH/bin:$PATH
25CCPREF=arm-none-linux-gnueabi-
26
27CROSSCC=${CCPREF}gcc
28export CROSSCC
29export CROSS_NAME
30
31cp config.sh-arm-linux-n770 config-${CROSS_NAME}.sh
32
33# following should be done better:
34cd ..
35
608969de 36if [[ "x$1" != xnoconf* ]] ; then
8ed6d636 37# do miniperl on HOST
5a20539c 38CROSS_NAME= ./Configure -des -D prefix=./dummy -Dusedevel
8ed6d636
VK
39make miniperl
40make uudmap.h
41# fake uudmap, which should be on HOST
42# TODO - all host utilities should be clearly stated and not built for TARGET
43cp generate_uudmap generate_uudmap.${CROSS_NAME}
44fi
45
46#?? cd Cross
47
48# do the rest for TARGET
49$CROSSCC --version
50
51# call make thusly so it will crosscompile...
52XCOREDIR=xlib/$CROSS_NAME/CORE
53PERL_CONFIG_SH=Cross/config-${CROSS_NAME}.sh
54
55#?? . $PERL_CONFIG_SH
56
57# make cflags do cross-compile work (now its hackish, will be improved!)
58rm cflags-cross-$CROSS_NAME
59cp Cross/cflags-cross-$CROSS_NAME .
60rm Makefile-cross-$CROSS_NAME
5a20539c 61CROSS_NAME=$CROSS_NAME sh Makefile.SH
8ed6d636 62cp Cross/Makefile-cross-$CROSS_NAME .
8ed6d636
VK
63
64mkdir xlib
65mkdir xlib/$CROSS_NAME
66mkdir ${XCOREDIR}
67
68#??OBJ_EXT=.${CROSS_NAME}o
69# TODO these -- AR=${CCPREF}ar LD=${CCPREF}ld
5a20539c
VK
70cmd="make -f Makefile-cross-$CROSS_NAME xconfig.h"
71echo "running $cmd"
72$cmd
73
74echo "running $cmd"
75cmd="make -f Makefile-cross-$CROSS_NAME libperl.${CROSS_NAME}a OBJ_EXT=.${CROSS_NAME}o EXE_EXT=.$CROSS_NAME LIB_EXT=.${CROSS_NAME}a AR=${CCPREF}ar LD=${CCPREF}ld"
76$cmd
77
78exit
79
80cmd="make -f Makefile-cross-$CROSS_NAME DynaLoader.${CROSS_NAME}o OBJ_EXT=.${CROSS_NAME}o EXE_EXT=.$CROSS_NAME LIB_EXT=.${CROSS_NAME}a AR=${CCPREF}ar LD=${CCPREF}ld"
81echo "running $cmd"
82$cmd
83
84cmd="make -f Makefile-cross-$CROSS_NAME perl.${CROSS_NAME}"
85echo "running $cmd"
86$cmd
8ed6d636 87