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 chosen 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 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 36if [[ "x$1" != xnoconf* ]] ; then 37# do miniperl on HOST 38CROSS_NAME= ./Configure -des -D prefix=./dummy -Dusedevel 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 61CROSS_NAME=$CROSS_NAME sh Makefile.SH 62cp Cross/Makefile-cross-$CROSS_NAME . 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 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 87 88