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...*
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
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
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
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
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
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
