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)
6 # to skip Configure/build for HOST miniperl, pass "noconf" argument to this script
8 # some trick is different, however - the file extension for objects files
9 # are choosen to be .${CROSS_NAME}, .armo in our case
11 # note how invoked Makefile.PL for cross-compilation:
12 # miniperl -MCross Makefile.PL
15 # - run HOST configure
16 # - build HOST miniperl
17 # given freshly-created HOST makefile and existing miniperl fix makefile
22 # suppose compiler is in /opt/arm-2006q3
23 CCPATH=/opt/arm-2006q3
24 PATH=$CCPATH/bin:$PATH
25 CCPREF=arm-none-linux-gnueabi-
31 cp config.sh-arm-linux-n770 config-${CROSS_NAME}.sh
33 # following should be done better:
36 if [[ "x$1" != xnoconf* ]] ; then
38 ./Configure -des -D prefix=./dummy -Dusedevel
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}
48 # do the rest for TARGET
51 # call make thusly so it will crosscompile...
52 XCOREDIR=xlib/$CROSS_NAME/CORE
53 PERL_CONFIG_SH=Cross/config-${CROSS_NAME}.sh
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 .
65 mkdir xlib/$CROSS_NAME
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}