summaryrefslogtreecommitdiffstats
path: root/upstream/fedora-40/man1/perlqnx.1
diff options
context:
space:
mode:
Diffstat (limited to 'upstream/fedora-40/man1/perlqnx.1')
-rw-r--r--upstream/fedora-40/man1/perlqnx.1251
1 files changed, 251 insertions, 0 deletions
diff --git a/upstream/fedora-40/man1/perlqnx.1 b/upstream/fedora-40/man1/perlqnx.1
new file mode 100644
index 00000000..0d3cd049
--- /dev/null
+++ b/upstream/fedora-40/man1/perlqnx.1
@@ -0,0 +1,251 @@
+.\" -*- mode: troff; coding: utf-8 -*-
+.\" Automatically generated by Pod::Man 5.01 (Pod::Simple 3.43)
+.\"
+.\" Standard preamble:
+.\" ========================================================================
+.de Sp \" Vertical space (when we can't use .PP)
+.if t .sp .5v
+.if n .sp
+..
+.de Vb \" Begin verbatim text
+.ft CW
+.nf
+.ne \\$1
+..
+.de Ve \" End verbatim text
+.ft R
+.fi
+..
+.\" \*(C` and \*(C' are quotes in nroff, nothing in troff, for use with C<>.
+.ie n \{\
+. ds C` ""
+. ds C' ""
+'br\}
+.el\{\
+. ds C`
+. ds C'
+'br\}
+.\"
+.\" Escape single quotes in literal strings from groff's Unicode transform.
+.ie \n(.g .ds Aq \(aq
+.el .ds Aq '
+.\"
+.\" If the F register is >0, we'll generate index entries on stderr for
+.\" titles (.TH), headers (.SH), subsections (.SS), items (.Ip), and index
+.\" entries marked with X<> in POD. Of course, you'll have to process the
+.\" output yourself in some meaningful fashion.
+.\"
+.\" Avoid warning from groff about undefined register 'F'.
+.de IX
+..
+.nr rF 0
+.if \n(.g .if rF .nr rF 1
+.if (\n(rF:(\n(.g==0)) \{\
+. if \nF \{\
+. de IX
+. tm Index:\\$1\t\\n%\t"\\$2"
+..
+. if !\nF==2 \{\
+. nr % 0
+. nr F 2
+. \}
+. \}
+.\}
+.rr rF
+.\" ========================================================================
+.\"
+.IX Title "PERLQNX 1"
+.TH PERLQNX 1 2024-01-25 "perl v5.38.2" "Perl Programmers Reference Guide"
+.\" For nroff, turn off justification. Always turn off hyphenation; it makes
+.\" way too many mistakes in technical documents.
+.if n .ad l
+.nh
+.SH NAME
+perlqnx \- Perl version 5 on QNX
+.SH DESCRIPTION
+.IX Header "DESCRIPTION"
+As of perl5.7.2 all tests pass under:
+.PP
+.Vb 3
+\& QNX 4.24G
+\& Watcom 10.6 with Beta/970211.wcc.update.tar.F
+\& socket3r.lib Nov21 1996.
+.Ve
+.PP
+As of perl5.8.1 there is at least one test still failing.
+.PP
+Some tests may complain under known circumstances.
+.PP
+See below and hints/qnx.sh for more information.
+.PP
+Under QNX 6.2.0 there are still a few tests which fail.
+See below and hints/qnx.sh for more information.
+.SS "Required Software for Compiling Perl on QNX4"
+.IX Subsection "Required Software for Compiling Perl on QNX4"
+As with many unix ports, this one depends on a few "standard"
+unix utilities which are not necessarily standard for QNX4.
+.IP /bin/sh 4
+.IX Item "/bin/sh"
+This is used heavily by Configure and then by
+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
+.IP ar 4
+.IX Item "ar"
+This is the standard unix library builder.
+We use wlib. With Watcom 10.6, when wlib is
+linked as "ar", it behaves like ar and all is
+fine. Under 9.5, a cover is required. One is
+included in ../qnx
+.IP nm 4
+.IX Item "nm"
+This is used (optionally) by configure to list
+the contents of libraries. I will generate
+a cover function on the fly in the UU directory.
+.IP cpp 4
+.IX Item "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 its own wrapper which works,
+but it doesn't handle some of the command line arguments
+that perl will throw at it.
+.IP make 4
+.IX Item "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.
+.SS "Outstanding Issues with Perl on QNX4"
+.IX Subsection "Outstanding Issues with Perl on QNX4"
+There is no support for dynamically linked libraries in QNX4.
+.PP
+If you wish to compile with the Socket extension, you need
+to have the TCP/IP toolkit, and you need to make sure that
+\&\-lsocket locates the correct copy of socket3r.lib. Beware
+that the Watcom compiler ships with a stub version of
+socket3r.lib which has very little functionality. Also
+beware the order in which wlink searches directories for
+libraries. You may have /usr/lib/socket3r.lib pointing to
+the correct library, but wlink may pick up
+/usr/watcom/10.6/usr/lib/socket3r.lib instead. Make sure
+they both point to the correct library, that is,
+/usr/tcptk/current/usr/lib/socket3r.lib.
+.PP
+The following tests may report errors under QNX4:
+.PP
+dist/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.
+.PP
+lib/File/Find/taint.t will complain if '.' is in your
+PATH. The PATH test is triggered because cwd calls
+`fullpath \-t`.
+.PP
+ext/IO/lib/IO/t/io_sock.t: Subtests 14 and 22 are 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.
+.PP
+t/io/tell.t: Subtest 27 is failing. We are still investigating.
+.SS "QNX auxiliary files"
+.IX Subsection "QNX auxiliary files"
+The files in the "qnx" directory are:
+.IP qnx/ar 4
+.IX Item "qnx/ar"
+A script that emulates the standard unix archive (aka library)
+utility. Under Watcom 10.6, ar is linked to wlib and provides the
+expected interface. With Watcom 9.5, a cover function is
+required. This one is fairly crude but has proved adequate for
+compiling perl.
+.IP qnx/cpp 4
+.IX Item "qnx/cpp"
+A script that provides C preprocessing functionality. Configure can
+generate a similar cover, but it doesn't handle all the command-line
+options that perl throws at it. This might be reasonably placed in
+/usr/local/bin.
+.SS "Outstanding issues with perl under QNX6"
+.IX Subsection "Outstanding issues with perl under QNX6"
+The following tests are still failing for Perl 5.8.1 under QNX 6.2.0:
+.PP
+.Vb 2
+\& op/sprintf.........................FAILED at test 91
+\& lib/Benchmark......................FAILED at test 26
+.Ve
+.PP
+This is due to a bug in the C library's printf routine.
+printf("'%e'", 0. ) produces '0.000000e+0', but ANSI requires
+\&'0.000000e+00'. QNX has acknowledged the bug.
+.SS Cross-compilation
+.IX Subsection "Cross-compilation"
+Perl supports cross-compiling to QNX NTO through the
+Native Development Kit (NDK) for the Blackberry 10. This means that you
+can cross-compile for both ARM and x86 versions of the platform.
+.PP
+\fISetting up a cross-compilation environment\fR
+.IX Subsection "Setting up a cross-compilation environment"
+.PP
+You can download the NDK from
+<http://developer.blackberry.com/native/downloads/>.
+.PP
+See
+<http://developer.blackberry.com/native/documentation/cascades/getting_started/setting_up.html>
+for instructions to set up your device prior to attempting anything else.
+.PP
+Once you've installed the NDK and set up your device, all that's
+left to do is setting up the device and the cross-compilation
+environment. Blackberry provides a script, \f(CW\*(C`bbndk\-env.sh\*(C'\fR (occasionally
+named something like \f(CW\*(C`bbndk\-env_10_1_0_4828.sh\*(C'\fR) which can be used
+to do this. However, there's a bit of a snag that we have to work through:
+The script modifies PATH so that 'gcc' or 'ar' point to their
+cross-compilation equivalents, which screws over the build process.
+.PP
+So instead you'll want to do something like this:
+.PP
+.Vb 3
+\& $ orig_path=$PATH
+\& $ source $location_of_bbndk/bbndk\-env*.sh
+\& $ export PATH="$orig_path:$PATH"
+.Ve
+.PP
+Besides putting the cross-compiler and the rest of the toolchain in your
+PATH, this will also provide the QNX_TARGET variable, which
+we will pass to Configure through \-Dsysroot.
+.PP
+\fIPreparing the target system\fR
+.IX Subsection "Preparing the target system"
+.PP
+It's quite possible that the target system doesn't have a readily
+available /tmp, so it's generally safer to do something like this:
+.PP
+.Vb 3
+\& $ ssh $TARGETUSER@$TARGETHOST \*(Aqrm \-rf perl; mkdir perl; mkdir perl/tmp\*(Aq
+\& $ export TARGETDIR=\`ssh $TARGETUSER@$TARGETHOST pwd\`/perl
+\& $ export TARGETENV="export TMPDIR=$TARGETDIR/tmp; "
+.Ve
+.PP
+Later on, we'll pass this to Configure through \-Dtargetenv
+.PP
+\fICalling Configure\fR
+.IX Subsection "Calling Configure"
+.PP
+If you are targetting an ARM device \-\- which currently includes the vast
+majority of phones and tablets \-\- you'll want to pass
+\&\-Dcc=arm\-unknown\-nto\-qnx8.0.0eabi\-gcc to Configure. Alternatively, if you
+are targetting an x86 device, or using the simulator provided with the NDK,
+you should specify \-Dcc=ntox86\-gcc instead.
+.PP
+A sample Configure invocation looks something like this:
+.PP
+.Vb 6
+\& ./Configure \-des \-Dusecrosscompile \e
+\& \-Dsysroot=$QNX_TARGET \e
+\& \-Dtargetdir=$TARGETDIR \e
+\& \-Dtargetenv="$TARGETENV" \e
+\& \-Dcc=ntox86\-gcc \e
+\& \-Dtarghost=... # Usual cross\-compilation options
+.Ve
+.SH AUTHOR
+.IX Header "AUTHOR"
+Norton T. Allen (allen@huarp.harvard.edu)