?RCS: $Id$ ?RCS: ?RCS: Copyright (c) 2001 Jarkko Hietaniemi ?RCS: ?RCS: You may distribute under the terms of either the GNU General Public ?RCS: License or the Artistic License, as specified in the README file. ?RCS: ?MAKE:run to from targetarch usecrosscompile: src awk grep test rm \ echo sed mkdir cp touch chmod ?MAKE: -pick add $@ %< ?Y:TOP ?S:usecrosscompile: ?S: This variable conditionally defines the USE_CROSS_COMPILE symbol, ?S: and indicates that Perl has been cross-compiled. ?S:. ?S:run: ?S: This variable contains the command used by Configure ?S: to copy and execute a cross-compiled executable in the ?S: target host. Useful and available only during Perl build. ?S: Empty string '' if not cross-compiling. ?S:. ?S:from: ?S: This variable contains the command used by Configure ?S: to copy files from the target host. Useful and available ?S: only during Perl build. ?S: The string ':' if not cross-compiling. ?S:. ?S:to: ?S: This variable contains the command used by Configure ?S: to copy to from the target host. Useful and available ?S: only during Perl build. ?S: The string ':' if not cross-compiling. ?S:. ?S:targetarch: ?S: If cross-compiling, this variable contains the target architecture. ?S: If not, this will be empty. ?S:. ?C:USE_CROSS_COMPILE: ?C: This symbol, if defined, indicates that Perl is being cross-compiled. ?C:. ?C:PERL_TARGETARCH: ?C: This symbol, if defined, indicates the target architecture ?C: Perl has been cross-compiled to. Undefined if not a cross-compile. ?C:. ?H:?%<:#ifndef USE_CROSS_COMPILE ?H:?%<:#$usecrosscompile USE_CROSS_COMPILE /**/ ?H:?%<:#define PERL_TARGETARCH "$targetarch" /**/ ?H:?%<:#endif ?H:. ?T:croak pwd exe f q i j cwd ?LINT:extern usecrosscompile ?LINT:extern cc ?LINT:extern usrinc ?LINT:change usrinc ?LINT:change ar ?LINT:change nm ?LINT:change ranlib ?LINT:extern targethost ?LINT:extern targetdir ?LINT:change targetdir ?LINT:extern targetuser ?LINT:change targetuser ?LINT:extern targetrun ?LINT:extern targetfrom ?LINT:extern targetto ?LINT:extern targetmkdir ?LINT:change targetrun ?LINT:change targetfrom ?LINT:change targetto ?LINT:change targetmkdir ?LINT:extern incpth ?LINT:extern libpth ?LINT:change incpth ?LINT:change libpth ?LINT:extern locincpth ?LINT:extern loclibpth ?LINT:change locincpth ?LINT:change loclibpth : Check for Cross-Compilation case "$usecrosscompile" in $define|true|[yY]*) $echo "Cross-compiling..." croak='' case "$cc" in *-*-gcc) # A cross-compiling gcc, probably. targetarch=`$echo $cc|$sed 's/-gcc$//'` ar=$targetarch-ar # leave out ld, choosing it is more complex nm=$targetarch-nm ranlib=$targetarch-ranlib $echo 'extern int foo;' > try.c set X `$cc -v -E try.c 2>&1 | $awk '/^#include &4 for i in $*; do j="`$echo $i|$sed 's,/include$,/lib,'`" if $test -d $j; then libpth="$libpth $j" fi done libpth="`$echo $libpth|$sed 's/^ //'`" echo "Guessing libpth '$libpth'." >&4 fi $rm -f try.c ;; esac case "$targetarch" in '') echo "Targetarch not defined." >&4; croak=y ;; *) echo "Using targetarch $targetarch." >&4 ;; esac case "$incpth" in '') echo "Incpth not defined." >&4; croak=y ;; *) echo "Using incpth '$incpth'." >&4 ;; esac case "$libpth" in '') echo "Libpth not defined." >&4; croak=y ;; *) echo "Using libpth '$libpth'." >&4 ;; esac case "$usrinc" in '') for i in $incpth; do if $test -f $i/errno.h -a -f $i/stdio.h -a -f $i/time.h; then usrinc=$i echo "Guessing usrinc $usrinc." >&4 break fi done case "$usrinc" in '') echo "Usrinc not defined." >&4; croak=y ;; esac ;; *) echo "Using usrinc $usrinc." >&4 ;; esac case "$targethost" in '') echo "Targethost not defined." >&4; croak=y ;; *) echo "Using targethost $targethost." >&4 esac locincpth=' ' loclibpth=' ' case "$croak" in y) echo "Cannot continue, aborting." >&4; exit 1 ;; esac case "$src" in /*) run=$src/Cross/run targetmkdir=$src/Cross/mkdir to=$src/Cross/to from=$src/Cross/from ;; *) pwd=`$test -f ../Configure & cd ..; pwd` run=$pwd/Cross/run targetmkdir=$pwd/Cross/mkdir to=$pwd/Cross/to from=$pwd/Cross/from ;; esac case "$targetrun" in '') targetrun=ssh ;; esac case "$targetto" in '') targetto=scp ;; esac case "$targetfrom" in '') targetfrom=scp ;; esac run=$run-$targetrun to=$to-$targetto from=$from-$targetfrom case "$targetdir" in '') targetdir=/tmp echo "Guessing targetdir $targetdir." >&4 ;; esac case "$targetuser" in '') targetuser=root echo "Guessing targetuser $targetuser." >&4 ;; esac case "$targetfrom" in scp) q=-q ;; *) q='' ;; esac case "$targetrun" in ssh|rsh) cat >$run <&4 exit 1 ;; esac case "$targetmkdir" in */Cross/mkdir) cat >$targetmkdir <&4 exit 1 ;; esac case "$targetto" in scp|rcp) cat >$to <$to <&4 exit 1 ;; esac case "$targetfrom" in scp|rcp) cat >$from <$from <&4 exit 1 ;; esac if $test ! -f $run; then echo "Target 'run' script '$run' not found." >&4 else $chmod a+rx $run fi if $test ! -f $to; then echo "Target 'to' script '$to' not found." >&4 else $chmod a+rx $to fi if $test ! -f $from; then echo "Target 'from' script '$from' not found." >&4 else $chmod a+rx $from fi if $test ! -f $run -o ! -f $to -o ! -f $from; then exit 1 fi cat >&4 <