Backport crosscompile changes (sysroot + target*)
authorH.Merijn Brand <h.m.brand@xs4all.nl>
Sun, 19 Jan 2014 19:53:05 +0000 (20:53 +0100)
committerH.Merijn Brand <h.m.brand@xs4all.nl>
Sun, 19 Jan 2014 19:53:05 +0000 (20:53 +0100)
Also reindented some large chuncks to get consistency withing the unit(s)

18 files changed:
U/compline/alignbytes.U
U/compline/byteorder.U
U/compline/ccflags.U
U/compline/nblock_io.U
U/modified/Guess.U
U/modified/Loc.U
U/modified/Signal.U
U/modified/cppstdin.U
U/modified/d_socket.U
U/modified/i_termio.U [new file with mode: 0644]
U/modified/libc.U
U/modified/libpth.U
U/perl/Cross.U
U/perl/Sysroot.U [new file with mode: 0644]
U/perl/dlsrc.U
U/perl/fflushall.U
U/perl/libperl.U
U/perl/use64bits.U

index 221e948..8c0cf54 100644 (file)
@@ -18,7 +18,7 @@
 ?RCS: Revision 3.0  1993/08/18  12:05:23  ram
 ?RCS: Baseline for dist 3.0 netwide release.
 ?RCS:
-?MAKE:alignbytes: Myread Compile cat rm_try usecrosscompile multiarch run \
+?MAKE:alignbytes: Myread Compile cat rm_try multiarch run \
        d_longdbl uselongdouble test
 ?MAKE: -pick add $@ %<
 ?S:alignbytes:
 ?F:!try
 : check for alignment requirements
 echo " "
-case "$usecrosscompile" in
-*$define*)
-       $cat <<EOM
-You seem to be cross-compiling.  Skipping the memory alignment check.
-
-EOM
-       case "$alignbytes" in
-       '') alignbytes=8 ;;
-       esac
-       ;;
-*)
-       case "$alignbytes" in
-       '') echo "Checking alignment constraints..." >&4
-               if $test "X$uselongdouble" = Xdefine -a "X$d_longdbl" = Xdefine; then
-                       $cat >try.c <<'EOCP'
+case "$alignbytes" in
+    '') echo "Checking alignment constraints..." >&4
+       if $test "X$uselongdouble" = Xdefine -a "X$d_longdbl" = Xdefine; then
+           $cat >try.c <<'EOCP'
 typedef long double NV;
 EOCP
-               else
-                       $cat >try.c <<'EOCP'
+       else
+           $cat >try.c <<'EOCP'
 typedef double NV;
 EOCP
-               fi
-               $cat >>try.c <<'EOCP'
+       fi
+       $cat >>try.c <<'EOCP'
 #include <stdio.h>
 struct foobar {
-       char foo;
-       NV bar;
+    char foo;
+    NV bar;
 } try_algn;
 int main()
 {
@@ -73,33 +62,30 @@ int main()
     return(0);
 }
 EOCP
-               set try
-               if eval $compile_ok; then
-                       dflt=`$run ./try`
-               else
-                       dflt='8'
-                       echo "(I can't seem to compile the test program...)"
+       set try
+       if eval $compile_ok; then
+           dflt=`$run ./try`
+       else
+           dflt='8'
+           echo "(I can't seem to compile the test program...)"
+       fi
+       case "$multiarch" in
+           *$define*)
+               : The usual safe value is 8, but Darwin with -Duselongdouble
+               : needs 16.  Hence, we will take 8 as a minimum, but allow
+               : Configure to pick a larger value if needed.
+               if $test "$dflt" -lt 8; then
+                   dflt='8'
+                   echo "Setting alignment to 8 for multiarch support.">&4
                fi
-               case "$multiarch" in
-               *$define*)
-                       : The usual safe value is 8, but Darwin with -Duselongdouble
-                       : needs 16.  Hence, we will take 8 as a minimum, but allow
-                       : Configure to pick a larger value if needed.
-                       if $test "$dflt" -lt 8; then
-                           dflt='8'
-                               echo "Setting alignment to 8 for multiarch support.">&4
-                       fi
-                       ;;
-               esac
-               ;;
-       *) dflt="$alignbytes"
                ;;
        esac
-       rp="Doubles must be aligned on a how-many-byte boundary?"
-       . ./myread
-       alignbytes="$ans"
-       $rm_try
+       ;;
+    *) dflt="$alignbytes"
        ;;
 esac
-
+rp="Doubles must be aligned on a how-many-byte boundary?"
+. ./myread
+alignbytes="$ans"
+$rm_try
 
index 072a5f8..c4e3a39 100644 (file)
@@ -19,7 +19,7 @@
 ?RCS: Baseline for dist 3.0 netwide release.
 ?RCS:
 ?MAKE:byteorder: cat Myread Oldconfig Loc Compile rm_try run \
-       usecrosscompile multiarch uvtype uvsize i_stdlib
+       multiarch uvtype uvsize i_stdlib
 ?MAKE: -pick add $@ %<
 ?S:byteorder:
 ?S:    This variable holds the byte order in a UV. In the following,
 ?F:!try
 : check for ordering of bytes in a UV
 echo " "
-case "$usecrosscompile$multiarch" in
+case "$multiarch" in
 *$define*)
        $cat <<EOM
-You seem to be either cross-compiling or doing a multiarchitecture build,
+You seem to be doing a multiarchitecture build,
 skipping the byteorder check.
 
 EOM
index 0b06ed2..6999099 100644 (file)
@@ -48,7 +48,7 @@
 ?MAKE:ccflags ldflags lkflags cppflags optimize locincpth: test cat \
        Myread Guess Options Oldconfig +gccversion mips_type +usrinc \
        package contains rm +cc cppstdin cppminus cpprun cpplast libpth \
-       libs loclibpth hint usesocks sh run rm_try
+       libs loclibpth hint usesocks sh run rm_try _sysroot
 ?MAKE: -pick add $@ %<
 ?S:ccflags:
 ?S:    This variable contains any additional C compiler flags desired by
@@ -85,6 +85,7 @@
 ?D:ccflags=''
 ?D:ldflags=''
 ?D:optimize=''
+?LINT:extern _sysroot
 ?INIT:: Possible local include directories to search.
 ?INIT:: Set locincpth to "" in a hint file to defeat local include searches.
 ?INIT:locincpth="/usr/local/include /opt/local/include /usr/gnu/include"
@@ -157,7 +158,7 @@ checkccflag='check=$1; flag=$2; callback=$3;
 echo " ";
 echo "Checking if your compiler accepts $flag" 2>&1;
 echo "int main(void) { return 0; }" > gcctest.c;
-if $cc -O2 $flag -o gcctest gcctest.c 2>gcctest.out && ./gcctest; then
+if $cc $_sysroot -O2 $flag -o gcctest gcctest.c 2>gcctest.out && $run ./gcctest; then
     echo "Yes, it does." 2>&1;
     if $test -s gcctest.out ; then
         echo "But your platform does not like it:";
@@ -488,31 +489,12 @@ dflt=y
 ?X: We need to try the resulting executable, because cc might yield a 0 status
 ?X: even when ld failed, in which case the executable will not run properly,
 ?X: if its x bit is set at all...
-?X:
-?X: Also check the xxx=`$run ./try` output to check for misconfigured -lsfio.
-?X: If sfio's iffe goofed and it uses _exit instead of exit, then the
-?X: output buffers don't get flushed and we don't see any output
-?X: when run from within `backticks`.  What fun.
-?X: --Andy Dougherty 2/13/1998
 if $sh -c "$cc -o try $optimize $ccflags $ldflags try.c $libs" >>try.msg 2>&1; then
        if $sh -c "$run ./try " >>try.msg 2>&1; then
                xxx=`$run ./try`
                case "$xxx" in
                "Ok") dflt=n ;;
-               *)      echo 'The program compiled OK, but produced no output.' >> try.msg
-                       case " $libs " in
-                       *" -lsfio "*)
-                               cat >> try.msg <<'EOQS'
-If $libs contains -lsfio, and sfio is mis-configured, then it
-sometimes (apparently) runs and exits with a 0 status, but with no
-output!  It may have to do with sfio's use of _exit vs. exit.
-
-EOQS
-                               rp="You have a big problem.  Shall I abort Configure"
-                               dflt=y
-                               ;;
-                       esac
-                       ;;
+               *)    echo 'The program compiled OK, but produced no output.' >> try.msg ;;
                esac
        else
                echo "The program compiled OK, but exited with status $?." >>try.msg
index 71b9158..db3085e 100644 (file)
@@ -231,7 +231,7 @@ EOCP
                echo "$startsh" >mtry
                echo "$run ./try >try.out 2>try.ret 4>try.err || exit 4" >>mtry
                chmod +x mtry
-               ./mtry >/dev/null 2>&1
+               $run ./mtry >/dev/null 2>&1
                case $? in
                0) eagain=`$cat try.out`;;
                1) echo "Could not perform non-blocking setting!";;
index 2a5cbd1..0bb82c2 100644 (file)
@@ -35,7 +35,7 @@
 ?X: answers to other questions.
 ?X:
 ?MAKE:Guess d_eunice d_xenix d_bsd: cat test echo n c contains \
-       rm Loc eunicefix tr
+       rm Loc eunicefix tr sysroot
 ?MAKE: -pick add $@ %<
 ?S:d_eunice:
 ?S:    This variable conditionally defines the symbols EUNICE and VAX, which
@@ -96,8 +96,8 @@ d_bsd="$undef"
 ?X: Do not use 'usrinc', or we get a circular dependency. because
 ?X: usrinc is defined in usrinc.U, which relies on us...
 ?X:
-$cat /usr/include/signal.h /usr/include/sys/signal.h >foo 2>/dev/null
-if test -f /osf_boot || $contains 'OSF/1' /usr/include/ctype.h >/dev/null 2>&1
+$cat $sysroot/usr/include/signal.h $sysroot/usr/include/sys/signal.h >foo 2>/dev/null
+if test -f /osf_boot || $contains 'OSF/1' $sysroot/usr/include/ctype.h >/dev/null 2>&1
 then
        echo "Looks kind of like an OSF/1 system, but we'll see..."
        echo exit 0 >osf1
index d15dc2e..96a9830 100644 (file)
@@ -66,7 +66,7 @@
        gmake gzip grep inews ksh less line lint ln lp lpr ls mail mailx \
        make mkdir more mv nm nroff perl pg pmake pr rm rmail sed sendmail \
        shar sleep smail sort submit tail tar tbl tee test touch tr troff \
-       uname uniq uuname vi zcat zip:  eunicefix n c startsh Instruct
+       uname uniq uuname vi zcat zip: eunicefix n c startsh Instruct sysroot
 ?MAKE: -pick weed $@ %<
 ?LINT:describe awk ar bash bison byacc cat chgrp chmod chown \
        comm compress cp cpio cpp csh date echo egrep emacs expr find flex \
@@ -217,7 +217,7 @@ trylist="
        shar sleep smail sort submit tail tar tbl tee touch tr troff \
        uname uniq uuname vi zcat zip
 pth=`echo $PATH | sed -e "s/$p_/ /g"`
-pth="$pth /lib /usr/lib"
+pth="$pth $sysroot/lib $sysroot/usr/lib"
 for file in $loclist; do
 ?X:
 ?X: Allow them to -Dmake=pmake on the command line for instance...
index bb232ea..df8fdd1 100644 (file)
@@ -38,7 +38,8 @@
 ?X: This unit is then used by sig_name.U.
 ?X:
 ?MAKE:Signal: test tr rm awk cat grep startsh eunicefix sed sort uniq \
-       Findhdr cppstdin +cppflags cppminus Compile _o _exe trnl run i_stdlib
+       Findhdr cppstdin +cppflags cppminus Compile _o _exe trnl run i_stdlib \
+       sysroot
 ?MAKE: -pick add $@ %<
 ?X:all files declared as "public" since they're used from other units
 ?F:signal.c signal_cmd signal.lst signal signal.awk
@@ -52,7 +53,7 @@
 ?X: Some cpps, like os390, do not give the file name anywhere
 if [ "X$fieldn" = X ]; then
        : Just make some guesses.  We check them later.
-       xxx='/usr/include/signal.h /usr/include/sys/signal.h'
+       xxx="$sysroot/usr/include/signal.h $sysroot/usr/include/sys/signal.h"
 else
        xxx=`echo '#include <signal.h>' |
        $cppstdin $cppminus $cppflags 2>/dev/null |
index ba373ab..e89e460 100644 (file)
@@ -84,6 +84,7 @@
 ?H:.
 ?F:cppstdin !testcpp.out !testcpp.c
 ?T:wrapper x_cpp x_minus ok
+?LINT:extern cppflags
 : see how we invoke the C preprocessor
 echo " "
 echo "Now, how can we feed standard input to your C preprocessor..." >&4
@@ -99,7 +100,7 @@ if test ! -f cppstdin; then
                # locations but we'll cheat by using the -M flag.
                echo 'cat >.$$.c; rm -f .$$.u; '"$cc"' ${1+"$@"} -M -c .$$.c 2>/dev/null; test -s .$$.u && awk '"'"'$2 ~ /\.h$/ { print "# 0 \""$2"\"" }'"'"' .$$.u; rm -f .$$.o .$$.u; '"$cc"' -E ${1+"$@"} .$$.c; rm .$$.c' > cppstdin
        else
-               echo 'cat >.$$.c; '"$cc"' -E ${1+"$@"} .$$.c; rm .$$.c' >cppstdin
+               echo 'cat >.$$.c; '"$cc $cppflags"' -E ${1+"$@"} .$$.c; rm .$$.c' >cppstdin
        fi
 else
        echo "Keeping your $hint cppstdin wrapper."
@@ -147,37 +148,37 @@ elif echo 'Maybe "'"$cc"' -E" will work...'; \
        $cc -E <testcpp.c >testcpp.out 2>&1; \
        $contains 'abc.*xyz' testcpp.out >/dev/null 2>&1 ; then
        echo "Yup, it does."
-       x_cpp="$cc -E"
+       x_cpp="$cc $cppflags -E"
        x_minus='';
 elif echo 'Nope...maybe "'"$cc"' -E -" will work...'; \
        $cc -E - <testcpp.c >testcpp.out 2>&1; \
        $contains 'abc.*xyz' testcpp.out >/dev/null 2>&1 ; then
        echo "Yup, it does."
-       x_cpp="$cc -E"
+       x_cpp="$cc $cppflags -E"
        x_minus='-';
 elif echo 'Nope...maybe "'"$cc"' -P" will work...'; \
        $cc -P <testcpp.c >testcpp.out 2>&1; \
        $contains 'abc.*xyz' testcpp.out >/dev/null 2>&1 ; then
        echo "Yipee, that works!"
-       x_cpp="$cc -P"
+       x_cpp="$cc $cppflags -P"
        x_minus='';
 elif echo 'Nope...maybe "'"$cc"' -P -" will work...'; \
        $cc -P - <testcpp.c >testcpp.out 2>&1; \
        $contains 'abc.*xyz' testcpp.out >/dev/null 2>&1 ; then
        echo "At long last!"
-       x_cpp="$cc -P"
+       x_cpp="$cc $cppflags -P"
        x_minus='-';
 elif echo 'No such luck, maybe "'$cpp'" will work...'; \
        $cpp <testcpp.c >testcpp.out 2>&1; \
        $contains 'abc.*xyz' testcpp.out >/dev/null 2>&1 ; then
        echo "It works!"
-       x_cpp="$cpp"
+       x_cpp="$cpp $cppflags"
        x_minus='';
 elif echo 'Nixed again...maybe "'$cpp' -" will work...'; \
        $cpp - <testcpp.c >testcpp.out 2>&1; \
        $contains 'abc.*xyz' testcpp.out >/dev/null 2>&1 ; then
        echo "Hooray, it works!  I was beginning to wonder."
-       x_cpp="$cpp"
+       x_cpp="$cpp $cppflags"
        x_minus='-';
 elif echo 'Uh-uh.  Time to get fancy.  Trying a wrapper...'; \
        $wrapper <testcpp.c >testcpp.out 2>&1; \
index 5ce093a..46cdb21 100644 (file)
@@ -23,7 +23,7 @@
        d_scm_rights d_sockaddr_sa_len d_sockaddr_in6 d_sin6_scope_id \
        d_ip_mreq d_ip_mreq_source d_ipv6_mreq d_ipv6_mreq_source: \
        contains echo n c ar nm nm_opt nm_extract Inlibc Csym _a \
-       Compile cat rm_try Setvar Hasfield
+       Compile cat rm_try Setvar Hasfield sysroot
 ?MAKE: -pick add $@ %<
 ?S:d_socket:
 ?S:    This variable conditionally defines HAS_SOCKET, which indicates
@@ -203,64 +203,64 @@ sockethdr=''
 echo " "
 $echo $n "Hmm... $c" >&4
 if set socket val -f d_socket; eval $csym; $val; then
-       echo "Looks like you have Berkeley networking support." >&4
-       d_socket="$define"
+    echo "Looks like you have Berkeley networking support." >&4
+    d_socket="$define"
 ?X: now check for advanced features
-       if set setsockopt val -f; eval $csym; $val; then
-               d_oldsock="$undef"
-       else
-               echo "...but it uses the old BSD 4.1c interface, rather than 4.2." >&4
-               d_oldsock="$define"
-       fi
+    if set setsockopt val -f; eval $csym; $val; then
+       d_oldsock="$undef"
+    else
+       echo "...but it uses the old BSD 4.1c interface, rather than 4.2." >&4
+       d_oldsock="$define"
+    fi
 else
 ?X: HP-UX, for one, puts all the socket stuff in socklib.o. Note that if we
 ?X: come here on HP-UX, then we must have used nm to get symbols, or we really
 ?X: don't have sockets anyway...
-       if $contains socklib libc.list >/dev/null 2>&1; then
-               echo "Looks like you have Berkeley networking support." >&4
-               d_socket="$define"
-               : we will have to assume that it supports the 4.2 BSD interface
-               d_oldsock="$undef"
-       else
-               echo "You don't have Berkeley networking in libc$_a..." >&4
+    if $contains socklib libc.list >/dev/null 2>&1; then
+       echo "Looks like you have Berkeley networking support." >&4
+       d_socket="$define"
+       : we will have to assume that it supports the 4.2 BSD interface
+       d_oldsock="$undef"
+    else
+       echo "You don't have Berkeley networking in libc$_a..." >&4
 ?X: look for optional networking libraries
-               if test "X$d_socket" = "X$define"; then
-                  echo "...but you seem to believe that you have sockets." >&4
-               else
-                       for net in net socket
-                       do
-                               if test -f /usr/lib/lib$net$_a; then
+       if test "X$d_socket" = "X$define"; then
+           echo "...but you seem to believe that you have sockets." >&4
+       else
+           for net in net socket
+           do
+               if test -f $sysroot/usr/lib/lib$net$_a; then
 ?X: space between two  '(' needed for ksh
-                                       ( ($nm $nm_opt /usr/lib/lib$net$_a | eval $nm_extract) ||  \
-                                       $ar t /usr/lib/lib$net$_a) 2>/dev/null >> libc.list
-                                       if $contains socket libc.list >/dev/null 2>&1; then
-                                               d_socket="$define"
-                                               socketlib="-l$net"
-                                               case "$net" in
-                                               net)
-                                                       echo "...but the Wollongong group seems to have hacked it in." >&4
-                                                       sockethdr="-I/usr/netinclude"
-                                                       ;;
-                                               esac
-                                               echo "Found Berkeley sockets interface in lib$net." >&4
+                   ( ($nm $nm_opt $sysroot/usr/lib/lib$net$_a | eval $nm_extract) ||  \
+                   $ar t $sysroot/usr/lib/lib$net$_a) 2>/dev/null >> libc.list
+                   if $contains socket libc.list >/dev/null 2>&1; then
+                       d_socket="$define"
+                       socketlib="-l$net"
+                       case "$net" in
+                       net)
+                           echo "...but the Wollongong group seems to have hacked it in." >&4
+                           sockethdr="-I$sysroot/usr/netinclude"
+                           ;;
+                       esac
+                       echo "Found Berkeley sockets interface in lib$net." >&4
 ?X: now check for advanced features
-                                               if $contains setsockopt libc.list >/dev/null 2>&1; then
-                                                       d_oldsock="$undef"
-                                               else
-                                                       echo "...using the old BSD 4.1c interface, rather than 4.2." >&4
-                                                       d_oldsock="$define"
-                                               fi
-                                               break
-                                       fi
-                               fi
-                       done
-                       if test "X$d_socket" != "X$define"; then
-                          echo "or anywhere else I see." >&4
-                          d_socket="$undef"
-                          d_oldsock="$undef"
+                       if $contains setsockopt libc.list >/dev/null 2>&1; then
+                           d_oldsock="$undef"
+                       else
+                           echo "...using the old BSD 4.1c interface, rather than 4.2." >&4
+                           d_oldsock="$define"
                        fi
+                       break
+                   fi
                fi
+           done
+           if test "X$d_socket" != "X$define"; then
+              echo "or anywhere else I see." >&4
+              d_socket="$undef"
+              d_oldsock="$undef"
+           fi
        fi
+    fi
 fi
 
 @if HAS_SOCKETPAIR || d_sockpair
@@ -283,7 +283,7 @@ return (sa.sa_len);
 EOF
 val="$undef"
 set try; if eval $compile; then
-       val="$define"
+    val="$define"
 fi
 set d_sockaddr_sa_len; eval $setvar
 $rm_try
@@ -302,7 +302,7 @@ return (sin6.sin6_family);
 EOF
 val="$undef"
 set try; if eval $compile; then
-       val="$define"
+    val="$define"
 fi
 set d_sockaddr_in6; eval $setvar
 $rm_try
@@ -321,7 +321,7 @@ return (sin6.sin6_scope_id);
 EOF
 val="$undef"
 set try; if eval $compile; then
-       val="$define"
+    val="$define"
 fi
 set d_sin6_scope_id; eval $setvar
 $rm_try
@@ -378,7 +378,7 @@ return (mreq.ipv6mr_interface);
 EOF
 val="$undef"
 set try; if eval $compile; then
-       val="$define"
+    val="$define"
 fi
 set d_ipv6_mreq; eval $setvar
 $rm_try
@@ -407,19 +407,19 @@ echo " "
 ?X: so that ifdef will not work for detecting their presence.
 echo "Checking the availability of certain socket constants..." >&4
 for ENUM in MSG_CTRUNC MSG_DONTROUTE MSG_OOB MSG_PEEK MSG_PROXY SCM_RIGHTS; do
-       enum=`$echo $ENUM|./tr '[A-Z]' '[a-z]'`
-       $cat >try.c <<EOF
+    enum=`$echo $ENUM|./tr '[A-Z]' '[a-z]'`
+    $cat >try.c <<EOF
 #include <sys/types.h>
 #include <sys/socket.h>
 int main() {
     int i = $ENUM;
 }
 EOF
-       val="$undef"
-       set try; if eval $compile; then
-               val="$define"
-       fi
-       set d_${enum}; eval $setvar
-       $rm_try
+    val="$undef"
+    set try; if eval $compile; then
+       val="$define"
+    fi
+    set d_${enum}; eval $setvar
+    $rm_try
 done
 
diff --git a/U/modified/i_termio.U b/U/modified/i_termio.U
new file mode 100644 (file)
index 0000000..0f61617
--- /dev/null
@@ -0,0 +1,123 @@
+?RCS: $Id: i_termio.U 1 2006-08-24 12:32:52Z rmanfredi $
+?RCS:
+?RCS: Copyright (c) 1991-1997, 2004-2006, Raphael Manfredi
+?RCS:
+?RCS: You may redistribute only under the terms of the Artistic Licence,
+?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 Licence; a copy of which may be found at the root
+?RCS: of the source tree for dist 4.0.
+?RCS:
+?RCS: $Log: i_termio.U,v $
+?RCS: Revision 3.0.1.4  1994/10/29  16:20:54  ram
+?RCS: patch36: call ./usg and ./Cppsym explicitly instead of relying on PATH
+?RCS:
+?RCS: Revision 3.0.1.3  1994/08/29  16:26:38  ram
+?RCS: patch32: don't include all threee I_* symbols in config.h
+?RCS: patch32: (had forgotten to undo this part last time)
+?RCS:
+?RCS: Revision 3.0.1.2  1994/05/13  15:25:03  ram
+?RCS: patch27: undone ADO's fix in previous patch since it was useless
+?RCS:
+?RCS: Revision 3.0.1.1  1994/05/06  15:05:23  ram
+?RCS: patch23: now include all three defines in config.h (ADO)
+?RCS:
+?RCS: Revision 3.0  1993/08/18  12:08:44  ram
+?RCS: Baseline for dist 3.0 netwide release.
+?RCS:
+?MAKE:i_termio i_sgtty i_termios: test Inlibc Cppsym Guess Setvar Findhdr Warn run
+?MAKE: -pick add $@ %<
+?S:i_termio:
+?S:    This variable conditionally defines the I_TERMIO symbol, which
+?S:    indicates to the C program that it should include <termio.h> rather
+?S:    than <sgtty.h>.
+?S:.
+?S:i_termios:
+?S:    This variable conditionally defines the I_TERMIOS symbol, which
+?S:    indicates to the C program that the POSIX <termios.h> file is
+?S:    to be included.
+?S:.
+?S:i_sgtty:
+?S:    This variable conditionally defines the I_SGTTY symbol, which
+?S:    indicates to the C program that it should include <sgtty.h> rather
+?S:    than <termio.h>.
+?S:.
+?C:I_TERMIO:
+?C:    This symbol, if defined, indicates that the program should include
+?C:    <termio.h> rather than <sgtty.h>.  There are also differences in
+?C:    the ioctl() calls that depend on the value of this symbol.
+?C:.
+?C:I_TERMIOS:
+?C:    This symbol, if defined, indicates that the program should include
+?C:    the POSIX termios.h rather than sgtty.h or termio.h.
+?C:    There are also differences in the ioctl() calls that depend on the
+?C:    value of this symbol.
+?C:.
+?C:I_SGTTY:
+?C:    This symbol, if defined, indicates that the program should include
+?C:    <sgtty.h> rather than <termio.h>.  There are also differences in
+?C:    the ioctl() calls that depend on the value of this symbol.
+?C:.
+?H:#$i_termio I_TERMIO         /**/
+?H:#$i_termios I_TERMIOS               /**/
+?H:#$i_sgtty I_SGTTY           /**/
+?H:.
+?T:val2 val3
+?LINT:set i_termio i_sgtty i_termios
+: see if this is a termio system
+val="$undef"
+val2="$undef"
+val3="$undef"
+?X: Prefer POSIX-approved termios.h over all else
+if $test `./findhdr termios.h`; then
+    set tcsetattr i_termios
+    eval $inlibc
+    val3="$i_termios"
+fi
+echo " "
+case "$val3" in
+    "$define") echo "You have POSIX termios.h... good!" >&4;;
+    *)  if ./Cppsym pyr; then
+           case "`$run /bin/universe`" in
+               ucb) if $test `./findhdr sgtty.h`; then
+                       val2="$define"
+                       echo "<sgtty.h> found." >&4
+                   else
+                       echo "System is pyramid with BSD universe."
+                       ./warn "<sgtty.h> not found--you could have problems."
+                   fi;;
+               *)  if $test `./findhdr termio.h`; then
+                       val="$define"
+                       echo "<termio.h> found." >&4
+                   else
+                       echo "System is pyramid with USG universe."
+                       ./warn "<termio.h> not found--you could have problems."
+                   fi;;
+           esac
+?X: Start with USG to avoid problems if both usg/bsd was guessed
+       elif ./usg; then
+           if $test `./findhdr termio.h`; then
+               echo "<termio.h> found." >&4
+               val="$define"
+           elif $test `./findhdr sgtty.h`; then
+               echo "<sgtty.h> found." >&4
+               val2="$define"
+           else
+               ./warn "Neither <termio.h> nor <sgtty.h> found--cross fingers!"
+           fi
+       else
+           if $test `./findhdr sgtty.h`; then
+               echo "<sgtty.h> found." >&4
+               val2="$define"
+           elif $test `./findhdr termio.h`; then
+               echo "<termio.h> found." >&4
+               val="$define"
+           else
+               ./warn "Neither <sgtty.h> nor <termio.h> found--cross fingers!"
+           fi
+       fi;;
+esac
+set i_termio; eval $setvar
+val=$val2; set i_sgtty; eval $setvar
+val=$val3; set i_termios; eval $setvar
+
index 20bf87b..670ee60 100644 (file)
@@ -50,7 +50,7 @@
 ?RCS:
 ?MAKE:libc +nm_extract: echo n c rm test grep Getfile Myread Oldconfig Loc \
        sed libs incpath libpth ar runnm nm nm_opt nm_so_opt contains xlibpth \
-       so _a _o osname trnl tr sort uniq
+       so _a _o osname trnl tr sort uniq sysroot
 ?MAKE: -pick add $@ %<
 ?S:libc:
 ?S:    This variable contains the location of the C library.
@@ -149,8 +149,8 @@ unknown)
                         $sort | $sed -e 's/^.* //'`
                eval set \$$#
        done
-       $test -r $1 || set /usr/ccs/lib/libc.$so
-       $test -r $1 || set /lib/libsys_s$_a
+       $test -r $1 || set $sysroot/usr/ccs/lib/libc.$so
+       $test -r $1 || set $sysroot/lib/libsys_s$_a
        ;;
 *)
 ?X: ensure the test below for the (shared) C library will fail
index 6b7c2f4..26992be 100644 (file)
@@ -35,7 +35,7 @@
 ?X:    This unit initializes the path for C library lookup.
 ?X:
 ?MAKE:libpth glibpth xlibpth plibpth loclibpth: \
-       usrinc incpath test cat Myread Oldconfig
+       usrinc incpath test cat Myread Oldconfig sysroot
 ?MAKE: -pick add $@ %<
 ?S:libpth:
 ?S:    This variable holds the general path (space-separated) used to find
@@ -87,8 +87,8 @@
 case "$plibpth" in
 '') if ./mips; then
 ?X: on mips, we DO NOT want /lib, and we want $incpath/usr/lib
-               plibpth="$incpath/usr/lib /usr/local/lib /usr/ccs/lib"
-       fi;;
+       plibpth="$incpath/usr/lib $sysroot/usr/local/lib $sysroot/usr/ccs/lib"
+    fi;;
 esac
 case "$libpth" in
 ' ') dlist='';;
@@ -97,7 +97,6 @@ case "$libpth" in
 esac
 
 : Now check and see which directories actually exist, avoiding duplicates
-libpth=''
 for xxx in $dlist
 do
     if $test -d $xxx; then
@@ -115,6 +114,14 @@ know not to be holding relevant libraries, and add any that are needed.
 Say "none" for none.
 
 EOM
+
+if test "X$sysroot" != X; then
+    $cat <<EOM
+You have set sysroot to $sysroot, please supply the directories excluding sysroot
+
+EOM
+fi
+
 case "$libpth" in
 '') dflt='none';;
 *)
index 6deeb6a..8a566af 100644 (file)
@@ -5,8 +5,8 @@
 ?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:run to from targetarch targetdir targetmkdir targethost targetport usecrosscompile: \
+           src test rm echo sed mkdir cp chmod
 ?MAKE: -pick add $@ %<
 ?Y:TOP
 ?S:usecrosscompile:
 ?S:    If cross-compiling, this variable contains the target architecture.
 ?S:    If not, this will be empty.
 ?S:.
+?S:targetdir:
+?S:    This variable contains a path that will be created on the target
+?S:    host using targetmkdir, and then used to copy the cross-compiled
+?S:    executables to. Defaults to '/tmp' if not set.
+?S:.
+?S:targetmkdir:
+?S:    This variable contains the command used by Configure to create a
+?S:    new directory on the target host.
+?S:.
+?S:targethost:
+?S:    This variable contains the name of a separate host machine that
+?S:    can be used to run compiled test programs and perl tests on.
+?S:    Set to empty string if not in use.
+?S:.
+?S:targetport:
+?S:    This variable contains the number of a network port to be used to
+?S:    connect to the host in targethost, if unset defaults to 22 for ssh.
+?S:.
 ?C:USE_CROSS_COMPILE:
 ?C:    This symbol, if defined, indicates that Perl is being cross-compiled.
 ?C:.
 ?H:?%<:#define PERL_TARGETARCH "$targetarch"   /**/
 ?H:?%<:#endif
 ?H:.
-?T:croak pwd exe f q i j cwd
+?D:targethost=''
+?D:targetmkdir=''
+?T:croak pwd exe f q cwd file xxx
 ?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 targetport
 ?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 hostperl
+?LINT:extern hostgenerate
 : Check for Cross-Compilation
+?X: targethost mainly set to allow ?S: documentation
+?X:otherwise it could have been declared extern
+if $test "X$targethost" = "X"; then
+    targethost=""
+fi
 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
+       croak=''
+       case "$cc" in
+       *-gcc*|*-g++*) # A cross-compiling gcc, probably.
+           # arm-linux-androideabi-gcc  -> arm-linux-androideabi
+           # x86_64-w64-mingw32-gcc.exe -> x86_64-w64-mingw32
+           targetarch=`$echo $cc|$sed 's/-g[c\+][c\+].*$//'`
+           ar=`$echo $cc|$sed 's/-g[c\+][c\+]/-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 </,/^End of search /'|$grep '/include'`
-           shift
-            if $test $# -gt 0; then
-               incpth="$incpth $*"
-               incpth="`$echo $incpth|$sed 's/^ //'`"
-                echo "Guessing incpth '$incpth'." >&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
-           ;;
+           nm=`$echo $cc|$sed 's/-g[c\+][c\+]/-nm/'`
+           ranlib=`$echo $cc|$sed 's/-g[c\+][c\+]/-ranlib/'`
+           # We are in a weird spot. Just before us, some values
+           # were 'saved', to be restored after the hints are
+           # run.  This means that the changes we made to ar,
+           # nm and ranlib will get reverted.
+           # To avoid that, we hijack the saving mechanism and
+           # have it save our new values.
+           for file in ar nm ranlib; do
+               eval xxx=\$$file
+               eval $file=$xxx$_exe
+               eval _$file=$xxx
+           done
+       ;;
        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 ;;
+       *)  echo "Using targetarch $targetarch." >&4 ;;
        esac
        case "$targethost" in
        '') echo "Targethost not defined." >&4; croak=y ;;
-        *)  echo "Using targethost $targethost." >&4
+       *)  echo "Using targethost $targethost." >&4
        esac
        locincpth=' '
        loclibpth=' '
@@ -164,18 +159,23 @@ $define|true|[yY]*)
        case "$targetfrom" in
        '') targetfrom=scp ;;
        esac
-       run=$run-$targetrun
-       to=$to-$targetto
-       from=$from-$targetfrom
+       run=$run-$targetrun
+       to=$to-$targetto
+       from=$from-$targetfrom
        case "$targetdir" in
        '')  targetdir=/tmp
-             echo "Guessing targetdir $targetdir." >&4
-             ;;
+            echo "Guessing targetdir $targetdir." >&4
+            ;;
        esac
        case "$targetuser" in
        '')  targetuser=root
-             echo "Guessing targetuser $targetuser." >&4
-             ;;
+            echo "Guessing targetuser $targetuser." >&4
+            ;;
+       esac
+       case "$targetport" in
+       '')  targetport=22
+            echo "Guessing targetport $targetport." >&4
+            ;;
        esac
        case "$targetfrom" in
        scp)    q=-q ;;
@@ -197,11 +197,8 @@ case "\$cwd" in
 esac
 exe=\$1
 shift
-if $test ! -f \$exe.xok; then
-  $to \$exe
-  $touch \$exe.xok
-fi
-$targetrun -l $targetuser $targethost "cd \$cwd && ./\$exe \$@"
+$to \$exe
+$targetrun -p $targetport -l $targetuser $targethost "cd \$cwd && ./\$exe \$@"
 EOF
            ;;
        *)  echo "Unknown targetrun '$targetrun'" >&4
@@ -212,7 +209,7 @@ EOF
        */Cross/mkdir)
            cat >$targetmkdir <<EOF
 #!/bin/sh
-$targetrun -l $targetuser $targethost "mkdir -p \$@"
+$targetrun -p $targetport -l $targetuser $targethost "mkdir -p \$@"
 EOF
            $chmod a+rx $targetmkdir
            ;;
@@ -229,11 +226,11 @@ do
   case "\$f" in
   /*)
     $targetmkdir \`dirname \$f\`
-    $targetto $q \$f $targetuser@$targethost:\$f            || exit 1
+    $targetto -P $targetport $q \$f $targetuser@$targethost:\$f            || exit 1
     ;;
   *)
     $targetmkdir $targetdir/\`dirname \$f\`
-    $targetto $q \$f $targetuser@$targethost:$targetdir/\$f || exit 1
+    $targetto -P $targetport $q \$f $targetuser@$targethost:$targetdir/\$f || exit 1
     ;;
   esac
 done
@@ -269,7 +266,7 @@ EOF
 for f in \$@
 do
   $rm -f \$f
-  $targetfrom $q $targetuser@$targethost:$targetdir/\$f . || exit 1
+  $targetfrom -P $targetport $q $targetuser@$targethost:$targetdir/\$f . || exit 1
 done
 exit 0
 EOF
diff --git a/U/perl/Sysroot.U b/U/perl/Sysroot.U
new file mode 100644 (file)
index 0000000..824e408
--- /dev/null
@@ -0,0 +1,68 @@
+?RCS: $Id$
+?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:sysroot _sysroot: Head
+?MAKE: -pick add $@ %<
+?S:sysroot:
+?S:    This variable is empty unless supplied by the Configure user.
+?S:    It can contain a path to an alternative root directory, under which
+?S:    headers and libraries for the compilation target can be found. This
+?S:    is generally used when cross-compiling using a gcc-like compiler.
+?S:.
+?S:_sysroot:
+?S:    This is only used inside Configure and determines the --sysroot=
+?S:    argument to gcc or g++ but only when sysroot and gcc/g++ is used
+?S:.
+?LINT:extern cc
+?LINT:extern cppflags
+?LINT:change cppflags
+?LINT:extern ccflags
+?LINT:change ccflags
+?LINT:extern ldflags
+?LINT:change ldflags
+?LINT:extern cccdlflags
+?T:var xxx path
+: Set 'sysroot' to change the logical root directory to your headers and libraries see man gcc
+: This is primarily meant for cross-compile environments, and may fail to be useful in other cases
+if test "X$sysroot" = X; then
+    sysroot=""
+else
+    case "$cc" in
+       *gcc*|*g++*)
+           echo "Using $sysroot to find your headers and libraries, adding to ccflags"
+           # _sysroot is used in places where we need --sysroot=foo
+           # but using the rest of the flags could cause issues.
+           _sysroot="--sysroot=$sysroot";
+           case "$ccflags" in
+               *sysroot*) ;;
+               'undef'|*)
+               ccflags="$ccflags $_sysroot"
+           esac
+           case "$ldflags" in
+               *sysroot*) ;;
+               'undef'|*)
+               ldflags="$ldflags $_sysroot"
+           esac
+           case "$cppflags" in
+               *sysroot*) ;;
+               'undef'|*)
+               cppflags="$cppflags $_sysroot"
+           esac
+           # lddlflags updated below in lddlflags section;
+           # same with cccdlflags
+           ;;
+    esac
+
+    # Adjust some defaults to also use $sysroot
+    for var in xlibpth loclibpth locincpth glibpth; do
+       eval xxx=\$$var
+       eval $var=''
+       for path in $xxx; do
+           eval $var=\"\$$var $sysroot$path\"
+       done
+    done
+
+fi
+
index 4e8302a..01cbc78 100644 (file)
@@ -19,7 +19,7 @@
 ?MAKE:usedl ld dlsrc cccdlflags lddlflags ccdlflags bin_ELF ld_can_script: \
        rm_try Getfile Myread test osname sed d_dlopen Findhdr Setvar \
        src run cc ccflags ldflags optimize ls gccversion cat rsrc i_stdlib \
-       i_unistd osvers
+       i_unistd osvers sysroot
 ?MAKE: -pick add $@ %<
 ?Y:BOTTOM
 ?S:usedl:
 echo " "
 dldir="ext/DynaLoader"
 case "$usedl" in
-$define|y|true)
+    $define|y|true)
        dflt='y'
        usedl="$define"
        ;;
-$undef|n|false)
+    $undef|n|false)
        dflt='n'
        usedl="$undef"
        ;;
-*)
+    *)
        dflt='n'
        case "$d_dlopen" in
            $define) dflt='y' ;;
@@ -99,21 +99,20 @@ rp="Do you wish to use dynamic loading?"
 usedl="$ans"
 bin_ELF="$undef"
 case "$ans" in
-y*) usedl="$define"
+    y*) usedl="$define"
        case "$dlsrc" in
-       '')
-               if $test -f $rsrc/$dldir/dl_${osname}.xs ; then
-                       dflt="$dldir/dl_${osname}.xs"
+           '') if $test -f $rsrc/$dldir/dl_${osname}.xs ; then
+                   dflt="$dldir/dl_${osname}.xs"
                elif $test "$d_dlopen" = "$define" ; then
-                       dflt="$dldir/dl_dlopen.xs"
+                   dflt="$dldir/dl_dlopen.xs"
                else
-                       dflt=''
+                   dflt=''
                fi
                ;;
-       *)      dflt="$dldir/$dlsrc"
+           *)  dflt="$dldir/$dlsrc"
                ;;
        esac
-    echo "The following dynamic loading files are available:"
+       echo "The following dynamic loading files are available:"
        : Can not go over to $dldir because getfile has path hard-coded in.
        tdir=`pwd`; cd "$rsrc"; $ls -C $dldir/dl*.xs; cd "$tdir"
        rp="Source file to use for dynamic loading"
@@ -131,8 +130,8 @@ compile modules that will be used to create a shared library.
 To use no flags, say "none".
 
 EOM
-    case "$cccdlflags" in
-    '')        case "$gccversion" in
+       case "$cccdlflags" in
+           '') case "$gccversion" in
                '') case "$osname" in
                        hpux)   dflt='+z' ;;
                        next)   dflt='none' ;;
@@ -141,25 +140,48 @@ EOM
                        sunos)  dflt='-pic' ;;
                        *)      dflt='none' ;;
                    esac
-                       ;;
+                   ;;
                *)  case "$osname" in
-                       darwin) dflt='none' ;;
-                       linux*|svr4*|esix*|solaris|nonstopux) dflt='-fPIC' ;;
+                       darwin) dflt='none' ;;
+                       *linux*|svr4*|esix*|solaris|nonstopux) dflt='-fPIC' ;;
                        *)      dflt='-fpic' ;;
                    esac ;;
-           esac ;;
-       ' ') dflt='none' ;;
-    *) dflt="$cccdlflags" ;;
-    esac
-    rp="Any special flags to pass to $cc -c to compile shared library modules?"
-    . ./myread
-    case "$ans" in
+               esac ;;
+           ' ') dflt='none' ;;
+           *)   dflt="$cccdlflags" ;;
+       esac
+
+       case "$dflt" in
+           none) dflt='' ;;
+       esac
+
+       # If -Dsysroot was specified, now's the time to add it
+       # to cccdlflags
+       if test "X$sysroot" != X; then
+           case "$gccversion" in
+               '') ;;
+               *)  case "$dflt" in
+                       *sysroot*) ;;
+                       'undef'|*)
+                           dflt="$dflt --sysroot=$sysroot" ;;
+                   esac
+                   ;;
+           esac
+       fi
+
+       case "$dflt" in
+           '') dflt='none';;
+       esac
+
+       rp="Any special flags to pass to $cc -c to compile shared library modules?"
+       . ./myread
+       case "$ans" in
 ?X: Use ' ' so that a subsequent Configure run preserves the old state.
-    none) cccdlflags=' ' ;;
-    *) cccdlflags="$ans" ;;
-    esac
+           none) cccdlflags=' ' ;;
+           *)    cccdlflags="$ans" ;;
+       esac
 
-    cat << EOM
+       cat << EOM
 
 Some systems use ld to create libraries that can be dynamically loaded,
 while other systems (such as those using ELF) use $cc.
@@ -179,41 +201,40 @@ EOM
 #include <unistd.h>
 #endif
 int main() {
-       char b[4];
-       int i = open("a.out",O_RDONLY);
-       if(i == -1)
-               exit(1); /* fail */
-       if(read(i,b,4)==4 && b[0]==127 && b[1]=='E' && b[2]=='L' && b[3]=='F')
-               exit(0); /* succeed (yes, it is ELF) */
-       else
-               exit(1); /* fail */
+    char b[4];
+    int i = open("a.out",O_RDONLY);
+    if(i == -1)
+       exit(1); /* fail */
+    if(read(i,b,4)==4 && b[0]==127 && b[1]=='E' && b[2]=='L' && b[3]=='F')
+       exit(0); /* succeed (yes, it is ELF) */
+    exit(1); /* fail */
 }
 EOM
        if $cc $ccflags $ldflags try.c >/dev/null 2>&1 && $run ./a.out; then
-               bin_ELF="$define"
+           bin_ELF="$define"
        fi
        $rm_try
 
        case "$ld" in
-       '')     if $test $bin_ELF = "$define"; then
-                       cat <<EOM
+           '') if $test $bin_ELF = "$define"; then
+                   cat <<EOM
 You appear to have ELF support.  I'll use $cc to build dynamic libraries.
 EOM
-                       dflt="$cc"
+                   dflt="$cc"
                else
-                       echo "I'll use ld to build dynamic libraries."
-                       dflt='ld'
+                   echo "I'll use ld to build dynamic libraries."
+                   dflt='ld'
                fi
                ;;
-       *)      dflt="$ld"
+           *)  dflt="$ld"
                ;;
        esac
 
-    rp="What command should be used to create dynamic libraries?"
-    . ./myread
+       rp="What command should be used to create dynamic libraries?"
+       . ./myread
        ld="$ans"
 
-    cat << EOM
+       cat << EOM
 
 Some systems may require passing special flags to $ld to create a
 library that can be dynamically loaded.  If your ld flags include
@@ -222,76 +243,84 @@ search path, you may need to specify those -L options here as well.  To
 use no flags, say "none".
 
 EOM
-    case "$lddlflags" in
-    '') case "$osname" in
-                       haiku) dflt='-shared' ;;
-                       hpux) dflt='-b';
-                             case "$gccversion" in
+       case "$lddlflags" in
+           '') case "$osname" in
+                   haiku) dflt='-shared' ;;
+                   hpux) dflt='-b';
+                         case "$gccversion" in
                              '') dflt="$dflt +vnocompatwarnings" ;;
-                             esac
-                             ;;
-                       linux|irix*|gnu*)  dflt="-shared $optimize" ;;
-                       next)  dflt='none' ;;
-                       solaris) # See [perl #66604].
-                               # On Solaris 11, gcc -m64 on amd64 
-                               # appears not to understand -G.  gcc versions at
-                               # least as old as 3.4.3 support -shared, so just
-                               # use that with Solaris 11 and later, but keep
-                               # the old behavior for older Solaris versions.
-                               case "$gccversion" in
-                                       '') dflt='-G' ;;
-                                       *)      case "$osvers" in
-                                                       2.?|2.10) dflt='-G' ;;
-                                                       *) dflt='-shared' ;;
-                                               esac
-                                               ;;
-                               esac
-                               ;;
-                       sunos) dflt='-assert nodefinitions' ;;
-                       svr4*|esix*|nonstopux) dflt="-G $ldflags" ;;
-               *)     dflt='none' ;;
-                       esac
-                       ;;
-    *) dflt="$lddlflags" ;;
-    esac
+                         esac
+                         ;;
+                   *linux*|irix*|gnu*)  dflt="-shared $optimize" ;;
+                   next)  dflt='none' ;;
+                   solaris) # See [perl #66604].
+                           # On Solaris 11, gcc -m64 on amd64
+                           # appears not to understand -G.  gcc versions at
+                           # least as old as 3.4.3 support -shared, so just
+                           # use that with Solaris 11 and later, but keep
+                           # the old behavior for older Solaris versions.
+                           case "$gccversion" in
+                               '') dflt='-G' ;;
+                               *)  case "$osvers" in
+                                       2.?|2.10) dflt='-G' ;;
+                                       *) dflt='-shared' ;;
+                                   esac
+                                   ;;
+                           esac
+                           ;;
+                   sunos) dflt='-assert nodefinitions' ;;
+                   svr4*|esix*|nonstopux) dflt="-G $ldflags" ;;
+                   *)     dflt='none' ;;
+               esac
+               ;;
+           *) dflt="$lddlflags" ;;
+       esac
+
+       : Only do this for gcc, since, for example, qcc has no concept
+       : of --sysroot.
+       if $test "X$sysroot" != X; then
+           case "$gccversion" in
+               '') ;;
+               *)  dflt="$dflt --sysroot $sysroot" ;;
+           esac
+       fi
 
        : Try to guess additional flags to pick up local libraries.
        : Be careful not to append to a plain 'none'
        case "$dflt" in
-       none) dflt='' ;;
+           none) dflt='' ;;
        esac
        for thisflag in $ldflags; do
-               case "$thisflag" in
+           case "$thisflag" in
                -L*|-R*|-Wl,-R*)
-                       case " $dflt " in
+                   case " $dflt " in
                        *" $thisflag "*) ;;
                        *) dflt="$dflt $thisflag" ;;
-                       esac
-                       ;;
-               esac
+                   esac
+                   ;;
+           esac
        done
 
        case "$dflt" in
-       ''|' ') dflt='none' ;;
+           ''|' ') dflt='none' ;;
        esac
 
        case "$ldflags" in
-       *-fstack-protector*)
-           case "$dflt" in
-                       *-fstack-protector*) ;; # Don't add it again
-                       *) dflt="$dflt -fstack-protector" ;; 
+           *-fstack-protector*)
+               case "$dflt" in
+                   *-fstack-protector*) ;; # Don't add it again
+                   *) dflt="$dflt -fstack-protector" ;;
                esac
                ;;
        esac
 
-
-    rp="Any special flags to pass to $ld to create a dynamically loaded library?"
-    . ./myread
-    case "$ans" in
+       rp="Any special flags to pass to $ld to create a dynamically loaded library?"
+       . ./myread
+       case "$ans" in
 ?X: Use ' ' so that a subsequent Configure run preserves the old state.
-    none) lddlflags=' ' ;;
-    *) lddlflags="$ans" ;;
-    esac
+           none) lddlflags=' ' ;;
+           *) lddlflags="$ans" ;;
+       esac
 
        cat <<EOM
 
@@ -300,57 +329,58 @@ the resulting executable will use dynamic linking.  To use no flags,
 say "none".
 
 EOM
-    case "$ccdlflags" in
-    '') case "$osname" in
-           linux|hpux|gnu*)    dflt='-Wl,-E' ;;
-           next|sunos) dflt='none' ;;
-           *)          dflt='none' ;;
-           esac ;;
-    ' ')  dflt='none' ;;
-    *)  dflt="$ccdlflags" ;;
-    esac
-    rp="Any special flags to pass to $cc to use dynamic linking?"
-    . ./myread
-    case "$ans" in
+       case "$ccdlflags" in
+           '') case "$osname" in
+                   *linux*|hpux|gnu*) dflt='-Wl,-E' ;;
+                   next|sunos)      dflt='none'   ;;
+                   *)               dflt='none'   ;;
+               esac ;;
+           ' ') dflt='none' ;;
+           *)   dflt="$ccdlflags" ;;
+       esac
+       rp="Any special flags to pass to $cc to use dynamic linking?"
+       . ./myread
+       case "$ans" in
 ?X: Use ' ' so that a subsequent Configure run preserves the old state.
-    none) ccdlflags=' ' ;;
-    *) ccdlflags="$ans" ;;
-    esac
-    ;;
+           none) ccdlflags=' ' ;;
+           *)    ccdlflags="$ans" ;;
+       esac
+       ;;
 ?X: End of usedl=y section
-*)  usedl="$undef"
+
+    *)  usedl="$undef"
        ld='ld'
-    dlsrc='dl_none.xs'
-    lddlflags=''
-    ccdlflags=''
-    ;;
+       dlsrc='dl_none.xs'
+       lddlflags=''
+       ccdlflags=''
+       ;;
 esac
 
 ld_can_script="$undef"
 case "$bin_ELF$usedl" in
-$define$define)
-    # Abuse try.h and a.out names for neat cleanup
-    $cat >try.c <<EOM
+    $define$define)
+       # Abuse try.h and a.out names for neat cleanup
+       $cat >try.c <<EOM
 void foo() {}
 void bar() {}
 EOM
-    $cat >try.h <<EOM
+       $cat >try.h <<EOM
 LIBTEST_42 {
  global:
   foo;
  local: *;
  };
 EOM
-    if $cc $cccdlflags $ccdlflags $ccflags \
-           $ldflags $lddlflags -o a.out try.c \
-           -Wl,--version-script=try.h >/dev/null 2>&1 \
-       &&  $test -s a.out ; then
-       echo "ld supports scripting" >&4
-       ld_can_script="$define"
-    else
-       echo "ld does not support scripting" >&4
-    fi
-    $rm_try
-    ;;
+       if $cc $cccdlflags $ccdlflags $ccflags \
+              $ldflags $lddlflags -o a.out try.c \
+              -Wl,--version-script=try.h >/dev/null 2>&1 \
+          &&  $test -s a.out ; then
+           echo "ld supports scripting" >&4
+           ld_can_script="$define"
+       else
+           echo "ld does not support scripting" >&4
+       fi
+       $rm_try
+       ;;
 esac
 
index 1a8e777..c16648d 100644 (file)
@@ -9,7 +9,7 @@
 ?RCS: of the source tree for dist 3.0.
 ?RCS:
 ?MAKE:fflushNULL fflushall: Compile cat rm rm_try test osname run to from \
-       Oldconfig Myread Setvar echo \
+       Oldconfig Myread Setvar echo targethost \
        d_sysconf i_unistd d_stdio_stream_array stdio_stream_array i_stdlib
 ?MAKE: -pick add $@ %<
 ?S:fflushNULL:
@@ -125,7 +125,7 @@ if $test "X$fflushNULL" = X -o "X$fflushall" = X; then
     output=''
     set try -DTRY_FPUTC
     if eval $compile; then
-           $run ./try 2>/dev/null
+           $run ./try 2>/dev/null
            code="$?"
            $from try.out
            if $test ! -s try.out -a "X$code" = X42; then
@@ -136,7 +136,7 @@ if $test "X$fflushNULL" = X -o "X$fflushall" = X; then
     '')
            set try -DTRY_FPRINTF
            if eval $compile; then
-                   $run ./try 2>/dev/null
+                   $run ./try 2>/dev/null
                    code="$?"
                    $from try.out
                    if $test ! -s try.out -a "X$code" = X42; then
@@ -150,7 +150,7 @@ fi
 case "$fflushNULL" in
 '')    set try -DTRY_FFLUSH_NULL $output
        if eval $compile; then
-               $run ./try 2>/dev/null
+               $run ./try 2>/dev/null
                code="$?"
                $from try.out
                if $test -s try.out -a "X$code" = X42; then
@@ -181,37 +181,43 @@ main(int argc, char **argv)
     int i;
     char *bp = buf;
     while (1) {
-        while ((i = getc(stdin)) != -1
-               && (*bp++ = i) != '\n'
-               && bp < &buf[1024])
-       /* DO NOTHING */ ;
-        *bp = '\0';
-        fprintf(stdout, "%s", buf);
-        fflush(NULL);
-        if (i == -1)
+       while ((i = getc(stdin)) != -1
+              && (*bp++ = i) != '\n'
+              && bp < &buf[1024])
+       /* DO NOTHING */ ;
+       *bp = '\0';
+       fprintf(stdout, "%s", buf);
+       fflush(NULL);
+       if (i == -1)
            return 0;
-        bp = buf;
+       bp = buf;
     }
 }
 EOCP
-                fflushNULL="$define"
-                set tryp
-                if eval $compile; then
-                    $rm -f tryp.out
-                    $cat tryp.c | $run ./tryp 2>/dev/null > tryp.out
-                    if cmp tryp.c tryp.out >/dev/null 2>&1; then
-                       $cat >&4 <<EOM
+               fflushNULL="$define"
+               set tryp
+               if eval $compile; then
+                   $rm -f tryp.out
+                   # Copy the .c file to the remote host ($to is an ssh-alike if targethost is set)
+                   if $test "X$targethost" != X; then
+                       $to tryp.c
+                       $run ./tryp \< tryp.c 2>/dev/null > tryp.out
+                   else
+                       $cat tryp.c | $run ./tryp 2>/dev/null > tryp.out
+                   fi
+                   if cmp tryp.c tryp.out >/dev/null 2>&1; then
+                      $cat >&4 <<EOM
 fflush(NULL) seems to behave okay with input streams.
 EOM
                        fflushNULL="$define"
-                    else
+                   else
                        $cat >&4 <<EOM
 Ouch, fflush(NULL) clobbers input pipes!  We will not use it.
 EOM
-                        fflushNULL="$undef"
-                    fi
-                fi
-               $rm -f core tryp.c tryp.core core.tryp.*
+                       fflushNULL="$undef"
+                   fi
+               fi
+               $rm -f core tryp.c tryp.core core.tryp.*
                ;;
        '')     $cat >&4 <<EOM
 Your fflush(NULL) isn't working (contrary to ANSI C).
@@ -262,7 +268,12 @@ EOCP
        set tryp
        if eval $compile; then
            $rm -f tryp.out
-           $cat tryp.c | $run ./tryp 2>/dev/null > tryp.out
+           if $test "X$targethost" != X; then
+               $to tryp.c
+               $run ./tryp \< tryp.c 2>/dev/null > tryp.out
+           else
+               $cat tryp.c | $run ./tryp 2>/dev/null > tryp.out
+           fi
            if cmp tryp.c tryp.out >/dev/null 2>&1; then
               $cat >&4 <<EOM
 Good, at least fflush(stdin) seems to behave okay when stdin is a pipe.
index baaccb8..860d31a 100644 (file)
@@ -136,7 +136,7 @@ true)
                        dflt=libperl.5.$so
                        # XXX How handle the --version stuff for MAB?
                        ;;
-               linux*|gnu*)  # ld won't link with a bare -lperl otherwise.
+               *linux*|gnu*)  # ld won't link with a bare -lperl otherwise.
                        dflt=libperl.$so
                        ;;
                cygwin*) # ld links now against the dll directly
index 3a96dc8..a56d426 100644 (file)
@@ -6,7 +6,7 @@
 ?RCS: License or the Artistic License, as specified in the README file.
 ?RCS:
 ?MAKE:use64bitint use64bitall archname64: Myread Oldconfig Setvar test \
-       usemorebits longsize ccflags d_quad uquadtype Compile rm_try
+       usemorebits longsize ccflags d_quad uquadtype Compile rm_try run
 ?MAKE: -pick add $@ %<
 ?Y:TOP
 ?S:use64bitint:
@@ -246,7 +246,7 @@ int main (void)
 EOCP
        set try
        if eval $compile_ok; then
-           libcquad=`./try`
+           libcquad=`$run ./try`
            echo "Your C library's 64-bit functions are $libcquad."
        else
            echo "(I can't seem to compile the test program.)"