X-Git-Url: https://perl5.git.perl.org/perl5.git/blobdiff_plain/0419447e3dca6b659723638f9b0899e6c3ee37ca..091ab6010f97a3f49489e8fb6c7cc430e9479bff:/hints/qnx.sh diff --git a/hints/qnx.sh b/hints/qnx.sh index f251059..18bacf9 100644 --- a/hints/qnx.sh +++ b/hints/qnx.sh @@ -1,16 +1,19 @@ #---------------------------------------------------------------- # QNX hints # -# As of perl5.004_04, all tests pass under: -# QNX 4.23A +# Most of the hints in this file are for QNX4, which needed +# more help. The QNX6 hints are located toward the bottom. +# +# perl-5.7.2 passes all tests under QNX4.24G # Watcom 10.6 with Beta/970211.wcc.update.tar.F # socket3r.lib Nov21 1996. +# perl-5.7.2 fails 4 known tests under QNX6.1.0 # # As with many unix ports, this one depends on a few "standard" -# unix utilities which are not necessarily standard for QNX. +# unix utilities which are not necessarily standard for QNX4. # # /bin/sh This is used heavily by Configure and then by -# perl itself. QNX's version is fine, but Configure +# perl itself. QNX4's version is fine, but Configure # will choke on the 16-bit version, so if you are # running QNX 4.22, link /bin/sh to /bin32/ksh # ar This is the standard unix library builder. @@ -24,27 +27,46 @@ # cpp Configure and perl need a way to invoke a C # preprocessor. I have created a simple cover # for cc which does the right thing. Without this, -# Configure will create it's own wrapper which works, +# Configure will create its own wrapper which works, # but it doesn't handle some of the command line arguments # that perl will throw at it. # make You really need GNU make to compile this. GNU make # ships by default with QNX 4.23, but you can get it # from quics for earlier versions. #---------------------------------------------------------------- -# Outstanding Issues: -# lib/posix.t test fails on test 17 because acos(1) != 0. +# Outstanding Issues for QNX4: +# There is no support for dynamically linked libraries in +# QNX4. +# +# ext/Cwd/Cwd.t will complain if `pwd` and cwd don't give +# the same results. cwd calls `fullpath -t`, so if you +# cd `fullpath -t` before running the test, it will +# pass. +# +# lib/File/Find/taint.t will complain if '.' is in your +# PATH. The PATH test is triggered because cwd calls +# `fullpath -t`. +# +# ext/IO/lib/IO/t/io_sock.t: Subtest 14 is skipped due to +# the fact that the functionality to read back the non-blocking +# status of a socket is not implemented in QNX's TCP/IP. This +# has been reported to QNX and it may work with later versions +# of TCP/IP. +# +# Older issues: +# lib/posix.t test failed on test 17 because acos(1) != 0. # Resolved in 970211 Beta # lib/io_udp.t test hangs because of a bug in getsockname(). # Fixed in latest BETA socket3r.lib -# If there is a softlink in your path, Findbin will fail. -# This is a documented feature of perl's getpwd(). -# There is currently no support for dynamically linked -# libraries. #---------------------------------------------------------------- -# At present, all QNX systems are equivalent architectures, -# so it might be reasonable to call archname=qnx rather than -# making an unnecessary distinction between AT-qnx and PCI-qnx, -# for example. +# Outstanding Issues for QNX6: +# The following tests are still failing as of 5.7.1: +# +# op/sprintf.........................FAILED at test 91 +# lib/1_compile......................FAILED at test 33 +# ext/IO/lib/IO/t/io_sock............FAILED at test 12 +# ext/IO/lib/IO/t/io_udp.............FAILED at test 4 +# #---------------------------------------------------------------- # These hints were submitted by: # Norton T. Allen @@ -54,124 +76,159 @@ # If you have suggestions or changes, please let me know. #---------------------------------------------------------------- -#---------------------------------------------------------------- -# QNX doesn't come with a csh and the ports of tcsh I've used -# don't work reliably: -#---------------------------------------------------------------- -csh='' -d_csh='undef' -full_csh='' +echo "" +echo "Some tests may fail. Please read the hints/qnx.sh file." +echo "" #---------------------------------------------------------------- -# setuid scripts are secure under QNX. -# (Basically, the same race conditions apply, but assuming -# the scripts are located in a secure directory, the methods -# for exploiting the race condition are defeated because -# the loader expands the script name fully before executing -# the interpreter.) -#---------------------------------------------------------------- -d_suidsafe='define' +# At present, all QNX4 systems are equivalent architectures, +# so it is reasonable to call archname=x86-qnx rather than +# making an unnecessary distinction between AT-qnx and PCI-qnx, +# for example. I will use uname's architecture for Neutrino. +#---------------------------------------------------------------- +set X `uname -a` +shift +[ "$1" != "QNX" ] && echo "uname doesn't look like QNX!" +case $4 in + 42[2-9]) archname='x86-qnx';; + *) osname='nto' + osvers=$3 + archname="$5-nto";; +esac -#---------------------------------------------------------------- -# difftime is implemented as a preprocessor macro, so it doesn't show -# up in the libraries: -#---------------------------------------------------------------- -d_difftime='define' +if [ "$osname" = "qnx" ]; then + #---------------------------------------------------------------- + # QNX doesn't come with a csh and the ports of tcsh I've used + # don't work reliably: + #---------------------------------------------------------------- + csh='' + d_csh='undef' + full_csh='' -#---------------------------------------------------------------- -# strtod is in the math library, but we can't tell Configure -# about the math library or it will confuse the linker -#---------------------------------------------------------------- -d_strtod='define' + #---------------------------------------------------------------- + # setuid scripts are secure under QNX. + # (Basically, the same race conditions apply, but assuming + # the scripts are located in a secure directory, the methods + # for exploiting the race condition are defeated because + # the loader expands the script name fully before executing + # the interpreter.) + #---------------------------------------------------------------- + d_suidsafe='define' -lib_ext='3r.lib' -libc='/usr/lib/clib3r.lib' + #---------------------------------------------------------------- + # difftime is implemented as a preprocessor macro, so it doesn't show + # up in the libraries: + #---------------------------------------------------------------- + d_difftime='define' -#---------------------------------------------------------------- -# ccflags: -# I like to turn the warnings up high, but a few common -# constructs make a lot of noise, so I turn those warnings off. -# A few still remain... -# -# HIDEMYMALLOC is necessary if using mymalloc since it is very -# tricky (though not impossible) to totally replace the watcom -# malloc/free set. -# -# unix.h is required as a general rule for unixy applications. -#---------------------------------------------------------------- -ccflags='-DHIDEMYMALLOC -mf -w4 -Wc,-wcd=202 -Wc,-wcd=203 -Wc,-wcd=302 -Wc,-fi=unix.h' + #---------------------------------------------------------------- + # strtod is in the math library, but we can't tell Configure + # about the math library or it will confuse the linker + #---------------------------------------------------------------- + d_strtod='define' -#---------------------------------------------------------------- -# ldflags: -# If you want debugging information, you must specify -g on the -# link as well as the compile. If optimize != -g, you should -# remove this. -#---------------------------------------------------------------- -ldflags="-g -N1M" + lib_ext='3r.lib' + libc='/usr/lib/clib3r.lib' -so='none' -selecttype='fd_set *' + #---------------------------------------------------------------- + # ccflags: + # I like to turn the warnings up high, but a few common + # constructs make a lot of noise, so I turn those warnings off. + # A few still remain... + # + # unix.h is required as a general rule for unixy applications. + #---------------------------------------------------------------- + ccflags='-mf -w4 -Wc,-wcd=202 -Wc,-wcd=203 -Wc,-wcd=302 -Wc,-fi=unix.h' -#---------------------------------------------------------------- -# Add -lunix to list of libs. This is needed mainly so the nm -# search will find funcs in the unix lib. Including unix.h should -# automatically include the library without -l. -#---------------------------------------------------------------- -libswanted="$libswanted unix" + #---------------------------------------------------------------- + # ldflags: + # If you want debugging information, you must specify -g on the + # link as well as the compile. If optimize != -g, you should + # remove this. + #---------------------------------------------------------------- + ldflags="-g -N1M" -if [ -z "`which ar 2>/dev/null`" ]; then - cat <<-'EOF' >&4 - I don't see an 'ar', so I'm guessing you are running - Watcom 9.5 or earlier. You may want to install the ar - cover found in the qnx subdirectory of this distribution. - It might reasonably be placed in /usr/local/bin. + so='none' + selecttype='fd_set *' + + #---------------------------------------------------------------- + # Add -lunix to list of libs. This is needed mainly so the nm + # search will find funcs in the unix lib. Including unix.h should + # automatically include the library without -l. + #---------------------------------------------------------------- + libswanted="$libswanted unix" + + if [ -z "`which ar 2>/dev/null`" ]; then + cat <<-'EOF' >&4 + I don't see an 'ar', so I'm guessing you are running + Watcom 9.5 or earlier. You may want to install the ar + cover found in the qnx subdirectory of this distribution. + It might reasonably be placed in /usr/local/bin. EOF -fi -#---------------------------------------------------------------- -# Here is a nm script which fixes up wlib's output to look -# something like nm's, at least enough so that Configure can -# use it. -#---------------------------------------------------------------- -if [ -z "`which nm 2>/dev/null`" ]; then - cat <<-EOF - Creating a quick-and-dirty nm cover for Configure to use: + fi + #---------------------------------------------------------------- + # Here is a nm script which fixes up wlib's output to look + # something like nm's, at least enough so that Configure can + # use it. + #---------------------------------------------------------------- + if [ -z "`which nm 2>/dev/null`" ]; then + cat <<-EOF + Creating a quick-and-dirty nm cover for Configure to use: EOF - cat >../UU/nm <<-'EOF' - #! /bin/sh - #__USAGE - #%C [ ...] - # Designed to mimic Unix's nm utility to list - # defined symbols in a library - unset WLIB - for i in $*; do wlib $i; done | - awk ' - /^ / { - for (i = 1; i <= NF; i++) { - sub("_$", "", $i) - print "000000 T " $i - } - }' + cat >./UU/nm <<-'EOF' + #! /bin/sh + #__USAGE + #%C [ ...] + # Designed to mimic Unix's nm utility to list + # defined symbols in a library + unset WLIB + for i in $*; do wlib $i; done | + awk ' + /^ / { + for (i = 1; i <= NF; i++) { + sub("_$", "", $i) + print "000000 T " $i + } + }' EOF - chmod +x ../UU/nm -fi + chmod +x ./UU/nm + fi -cppstdin=`which cpp 2>/dev/null` -if [ -n "$cppstdin" ]; then - cat <<-EOF >&4 - I found a cpp at $cppstdin and will assume it is a good - thing to use. If this proves to be false, there is a - thin cover for cpp in the qnx subdirectory of this - distribution which you could move into your path. + cppstdin=`which cpp 2>/dev/null` + if [ -n "$cppstdin" ]; then + cat <<-EOF >&4 + I found a cpp at $cppstdin and will assume it is a good + thing to use. If this proves to be false, there is a + thin cover for cpp in the qnx subdirectory of this + distribution which you could move into your path. EOF - cpprun="$cppstdin" -else - cat <<-EOF >&4 + cpprun="$cppstdin" + else + cat <<-EOF >&4 - There is a cpp cover in the qnx subdirectory of this - distribution which works a little better than the - Configure default. You may wish to copy it to - /usr/local/bin or some other suitable location. + There is a cpp cover in the qnx subdirectory of this + distribution which works a little better than the + Configure default. You may wish to copy it to + /usr/local/bin or some other suitable location. EOF -fi + fi +else + # $^O eq nto + + ccflags='-DDLOPEN_WONT_DO_RELATIVE_PATHS' + + # Options required to get dynamic linking to work + lddlflags='-shared' + ccdlflags='-Wl,-E' + + # Somewhere in the build, something tries to throw a gcc + # option to $cc if it knows it invokes gcc. Our cc doesn't + # recognize that option, so we're better off setting cc=gcc. + cc='gcc' + + # If we use perl's malloc, it dies with an invalid sbrk. + # This is probably worth tracking down someday. + usemymalloc='false' +fi