This is a live mirror of the Perl 5 development currently hosted at https://github.com/perl/perl5
cross-compilation for linux
[perl5.git] / Cross / build-arm-n770-sh
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
6 # to skip Configure/build for HOST miniperl, pass "noconf" argument to this script
7
8 # some trick is different, however - the file extension for objects files
9 # are choosen to be .${CROSS_NAME}, .armo in our case
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
20 CROSS_NAME=arm
21
22 # suppose compiler is in /opt/arm-2006q3
23 CCPATH=/opt/arm-2006q3
24 PATH=$CCPATH/bin:$PATH
25 CCPREF=arm-none-linux-gnueabi-
26
27 CROSSCC=${CCPREF}gcc
28 export CROSSCC
29 export CROSS_NAME
30
31 cp config.sh-arm-linux-n770 config-${CROSS_NAME}.sh
32
33 # following should be done better:
34 cd ..
35
36 if [[ "x$1" != xnoconf* ]] ; then
37 # do miniperl on HOST
38 ./Configure -des -D prefix=./dummy -Dusedevel
39 make miniperl
40 make uudmap.h
41 # fake uudmap, which should be on HOST
42 # TODO - all host utilities should be clearly stated and not built for TARGET
43 cp generate_uudmap generate_uudmap.${CROSS_NAME}
44 fi
45
46 #?? cd Cross
47
48 # do the rest for TARGET
49 $CROSSCC --version
50
51 # call make thusly so it will crosscompile...
52 XCOREDIR=xlib/$CROSS_NAME/CORE
53 PERL_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!)
58 rm cflags-cross-$CROSS_NAME
59 cp Cross/cflags-cross-$CROSS_NAME .
60 rm Makefile-cross-$CROSS_NAME
61 sh Cross/Makefile-cross-SH
62 cp Cross/Makefile-cross-$CROSS_NAME .
63
64 mkdir xlib
65 mkdir xlib/$CROSS_NAME
66 mkdir ${XCOREDIR}
67
68 #??OBJ_EXT=.${CROSS_NAME}o
69 # TODO these -- AR=${CCPREF}ar LD=${CCPREF}ld
70 make -f Makefile-cross-$CROSS_NAME xconfig.h
71 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
72 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
73 make -f Makefile-cross-$CROSS_NAME perl.${CROSS_NAME}
74