?RCS: $Id$ ?RCS: ?RCS: Copyright (c) 1991-1997, 2004-2006, Raphael Manfredi ?RCS: ?RCS: You may redistribute only under the terms of the Artistic License, ?RCS: as specified in the README file that comes with the distribution. ?RCS: You may reuse parts of this distribution only within the terms of ?RCS: that same Artistic License; a copy of which may be found at the root ?RCS: of the source tree for dist 4.0. ?RCS: ?RCS: Copyright (c) 2001 Jarkko Hietaniemi ?RCS: ?MAKE:run to from targetarch usecrosscompile: src awk cat 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 our package 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 the 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 the 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 the 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 the package is being ?C: cross-compiled. ?C:. ?C:CROSS_TARGET_ARCH: ?C: This symbol, if defined, indicates the target architecture ?C: the package has been cross-compiled to. ?C: Undefined if not a cross-compile. ?C:. ?H:?usecrosscompile:#ifndef USE_CROSS_COMPILE ?H:?usecrosscompile:#$usecrosscompile USE_CROSS_COMPILE /**/ ?H:?usecrosscompile:#define CROSS_TARGET_ARCH "$targetarch" /**/ ?H:?usecrosscompile:#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 ?LINT:extern TMPDIR : setup for possible cross-compilation run='' to=: from=: usecrosscompile='undef' targetarch='' case "$usecrosscompile" in $define|true|[yY]*) @if { test -d ../Cross } ?X: ?X: Cross-compilation is enabled when there is a 'Cross' directory found ?X: at the root of the package. This directory must contain the following ?X: entries for defining the cross-compilation process: ?X: ?X: FIXME FIXME ?X: WE MUST DISTINGUISH BETWEEN LOCAL cross-compiling AND REMOTE ONE ?X: ACTUALLY, REMOTE COMPILATION SHOULD BE CONFIGURED INTERACTIVELY ?X: IT WILL COPY ALL THE FILES FROM THE MANIFEST DOWN TO THE REMOTE DIR... ?X: (and copy things like 'mkdep', etc...) ?X: $echo "Cross-compiling..." croak='' case "$cc" in *-*-gcc) ?X: A cross-compiling gcc, probably. targetarch=`$echo $cc|$sed 's/-gcc$//'` ar=$targetarch-ar ?X: 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="${TMPDIR:-/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 <&4 exit 1 @end ;; esac