[fpc-pascal] FPC's broken cross-compiler directory structure?

Bruce Tulloch pascal at causal.com
Mon Jan 7 07:45:28 CET 2013


I build FPC cross-compilers for Windows, Macintosh and (32 bit) Linux on a
Debian Wheezy 64 bit host.

There appears to be a bug in the build process that produces dodgy
*crosszipinstall
tarballs* for Windows.

This applies to FPC 2.6.0, 2.6.2 RC1 and 2.7.1 (today's SVN head). It's
completely broken in 2.7.1 so I'll ignore that.

Below is the *build script* and the (filtered) *directory layout* of each
tarball produced when building 2.6.2 RC 1.

*fpc-2.6.2rc1.x86_64-linux.tar.gz* is the native compiler. All the others
are all cross-compilers.

Both windows compilers have directory structures that are different and
seem to be wrong.

They do not appear to map where *fpc* expects to find *ppcross386* and *
ppcrossx64* compilers (i.e. *lib/fpc/2.6.2*) and instead they are located
in *bin/<arch>/*. Further, the tarball cannot simply be unpacked at the
installation root (e.g. /usr/local) to have everything put in the correct
place.

I can manually work around this problem but am I missing something?

Is this installation difference intentional?

Is there some additional option required when building cross compilers for
Windows?

Many thanks, Cheers, Bruce.**

*Build Script...*

# Build Mac OSX 10.6 64 Bit...make distclean >/dev/nulltime make
crossall crosszipinstall \CPU_TARGET=x86_64 OS_TARGET=darwin
\CROSSBINDIR=/usr/local/opt/cctools/bin \BINUTILSPREFIX=i686-darwin-
\OPT="-gl -gw -godwarfsets -XX -CX -Xd -Fl${OSX_SDK_LIB}"
# Build Mac OSX 10.6 32 Bit...make distclean >/dev/nulltime make
crossall crosszipinstall \CPU_TARGET=i386 OS_TARGET=darwin
\CROSSBINDIR=/usr/local/opt/cctools/bin \BINUTILSPREFIX=i686-darwin-
\OPT="-gl -gw -godwarfsets -XX -CX -Xd -Fl${OSX_SDK_LIB}"
# Build Windows 8 64 Bit...make distclean >/dev/nulltime make crossall
crosszipinstall \CPU_TARGET=x86_64 OS_TARGET=win64
\CROSSBINDIR=/usr/local/opt/binutils/bin \BINUTILSPREFIX=i386-mingw-
\OPT="-XX -CX"
# Build Windows 8 32 Bit...make distclean >/dev/nulltime make crossall
crosszipinstall \CPU_TARGET=i386 OS_TARGET=win32
\CROSSBINDIR=/usr/local/opt/binutils/bin \BINUTILSPREFIX=i386-mingw-
\OPT="-XX -CX"
# Build Linux 32 Bit...make distclean >/dev/nulltime make crossall
crosszipinstall \CPU_TARGET=i386 OS_TARGET=linux
\CROSSBINDIR=/usr/local/opt/binutils/bin \BINUTILSPREFIX=i386-linux-
\OPT="-XX -CX"
# Build (native) Linux 64 Bit...make distclean >/dev/nulltime make all
zipinstall

*Directory Layout...*

bruce at beria:~/hg/pascal$ tar tvfz fpc-2.6.2rc1.i386-win32.tar.gz #
cross compiler (wrong layout?)
drwxr-xr-x bruce/bruce       0 2013-01-07 16:03 bin/
drwxr-xr-x bruce/bruce       0 2013-01-07 16:03 bin/x86_64-linux/
-rwxr-xr-x bruce/bruce 2760664 2013-01-07 16:03 bin/x86_64-linux/ppcross386
drwxr-xr-x bruce/bruce       0 2013-01-07 16:03 units/
drwxr-xr-x bruce/bruce       0 2013-01-07 16:03
units/i386-win32/bruce at beria:~/hg/pascal$ tar tvfz
fpc-2.6.2rc1.i386-darwin.tar.gz # cross compiler (correct layout)
drwxr-xr-x bruce/bruce       0 2013-01-07 16:00 bin/
drwxr-xr-x bruce/bruce       0 2013-01-07 16:00 lib/
drwxr-xr-x bruce/bruce       0 2013-01-07 16:00 lib/fpc/
drwxr-xr-x bruce/bruce       0 2013-01-07 16:00 lib/fpc/2.6.2/
-rwxr-xr-x bruce/bruce 8376619 2013-01-07 16:00 lib/fpc/2.6.2/ppcross386
drwxr-xr-x bruce/bruce       0 2013-01-07 16:00 lib/fpc/2.6.2/units/
drwxr-xr-x bruce/bruce       0 2013-01-07 16:00
lib/fpc/2.6.2/units/i386-darwin/bruce at beria:~/hg/pascal$ tar tvfz
fpc-2.6.2rc1.i386-linux.tar.gz # cross compiler (correct layout)
drwxr-xr-x bruce/bruce       0 2013-01-07 16:04 bin/
drwxr-xr-x bruce/bruce       0 2013-01-07 16:04 lib/
drwxr-xr-x bruce/bruce       0 2013-01-07 16:04 lib/fpc/
drwxr-xr-x bruce/bruce       0 2013-01-07 16:04 lib/fpc/2.6.2/
-rwxr-xr-x bruce/bruce 2760664 2013-01-07 16:04 lib/fpc/2.6.2/ppcross386
drwxr-xr-x bruce/bruce       0 2013-01-07 16:04 lib/fpc/2.6.2/units/
drwxr-xr-x bruce/bruce       0 2013-01-07 16:04
lib/fpc/2.6.2/units/i386-linux/bruce at beria:~/hg/pascal$ tar tvfz
fpc-2.6.2rc1.x86_64-win64.tar.gz # cross compiler (wrong layout?)
drwxr-xr-x bruce/bruce       0 2013-01-07 16:01 bin/
drwxr-xr-x bruce/bruce       0 2013-01-07 16:01 bin/x86_64-linux/
-rwxr-xr-x bruce/bruce 2471768 2013-01-07 16:01 bin/x86_64-linux/ppcrossx64
drwxr-xr-x bruce/bruce       0 2013-01-07 16:01 units/
drwxr-xr-x bruce/bruce       0 2013-01-07 16:01
units/x86_64-win64/bruce at beria:~/hg/pascal$ tar tvfz
fpc-2.6.2rc1.x86_64-darwin.tar.gz # cross compiler (correct layout)
drwxr-xr-x bruce/bruce       0 2013-01-07 15:58 bin/
drwxr-xr-x bruce/bruce       0 2013-01-07 15:58 lib/
drwxr-xr-x bruce/bruce       0 2013-01-07 15:58 lib/fpc/
drwxr-xr-x bruce/bruce       0 2013-01-07 15:58 lib/fpc/2.6.2/
drwxr-xr-x bruce/bruce       0 2013-01-07 15:58 lib/fpc/2.6.2/units/
drwxr-xr-x bruce/bruce       0 2013-01-07 15:58
lib/fpc/2.6.2/units/x86_64-darwin/
-rwxr-xr-x bruce/bruce 7773587 2013-01-07 15:58
lib/fpc/2.6.2/ppcrossx64bruce at beria:~/hg/pascal$ tar tvfz
fpc-2.6.2rc1.x86_64-linux.tar.gz # native installation (correct
layout)
drwxr-xr-x bruce/bruce       0 2013-01-07 16:06 bin/
-rwxr-xr-x bruce/bruce  371304 2013-01-07 16:06 bin/fpc
drwxr-xr-x bruce/bruce       0 2013-01-07 16:06 lib/
drwxr-xr-x bruce/bruce       0 2013-01-07 16:06 lib/fpc/
drwxr-xr-x bruce/bruce       0 2013-01-07 16:06 lib/fpc/2.6.2/
drwxr-xr-x bruce/bruce       0 2013-01-07 16:06 lib/fpc/2.6.2/units/
drwxr-xr-x bruce/bruce       0 2013-01-07 16:06
lib/fpc/2.6.2/units/x86_64-linux/
drwxr-xr-x bruce/bruce       0 2013-01-07 16:06 lib/fpc/2.6.2/ide/
-rwxr-xr-x bruce/bruce 2868120 2013-01-07 16:06 lib/fpc/2.6.2/ppcx64
drwxr-xr-x bruce/bruce       0 2013-01-07 16:06 lib/fpc/2.6.2/msg/
drwxr-xr-x bruce/bruce       0 2013-01-07 16:06 lib/fpc/lexyacc/
drwxr-xr-x bruce/bruce       0 2013-01-07 16:06 share/
drwxr-xr-x bruce/bruce       0 2013-01-07 16:06 share/doc/
drwxr-xr-x bruce/bruce       0 2013-01-07 16:06
share/doc/fpc-2.6.2/bruce at beria:~/hg/pascal$
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.freepascal.org/pipermail/fpc-pascal/attachments/20130107/9cefcf1a/attachment.html>


More information about the fpc-pascal mailing list