X-Git-Url: https://perl5.git.perl.org/perl5.git/blobdiff_plain/de2902a66f5c4d896fc31460aaaf35320b576183..4719093e79525948257277f8749f1d0650cd280a:/README.qnx diff --git a/README.qnx b/README.qnx index a1c2e92..c16072e 100644 --- a/README.qnx +++ b/README.qnx @@ -137,6 +137,67 @@ 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. +=head2 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. + +=head3 Setting up a cross-compilation environment + +You can download the NDK from +L. + +See +L +for instructions to set up your device prior to attempting anything else. + +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, C (occasionally +named something like C) 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. + +So instead you'll want to do something like this: + + $ orig_path=$PATH + $ source $location_of_bbndk/bbndk-env*.sh + $ export PATH="$orig_path:$PATH" + +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. + +=head3 Preparing the target system + +It's quite possible that the target system doesn't have a readily +available /tmp, so it's generall safer to do something like this: + + $ ssh $TARGETUSER@$TARGETHOST 'rm -rf perl; mkdir perl; mkdir perl/tmp' + $ export TARGETDIR=`ssh $TARGETUSER@$TARGETHOST pwd`/perl + $ export TARGETENV="export TMPDIR=$TARGETDIR/tmp; " + +Later on, we'll pass this to Configure through -Dtargetenv + +=head3 Calling Configure + +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. + +A sample Configure invocation looks something like this: + + ./Configure -des -Dusecrosscompile \ + -Dsysroot=$QNX_TARGET \ + -Dtargetdir=$TARGETDIR \ + -Dtargetenv="$TARGETENV" \ + -Dcc=ntox86-gcc \ + -Dtarghost=... # Usual cross-compilation options + =head1 AUTHOR Norton T. Allen (allen@huarp.harvard.edu)