Hi

I've begun the long overdue task of porting AOO to 64 bit Windows.

With my changes so far, oowintool can now detect (the 64 bit only) Java
1.9, dmake can now compile in Cygwin64, ./configure and ./bootstrap
complete successfully, and (with uncommitted patches) both dmake and gbuild
modules manage to compile, link, and deliver 64 bit binaries :-).

My progress will be documented on https://wiki.openoffice.org/
wiki/Win64_port and a blog entry might also be nice (how do you post to our
blog?).

One notable change in my (as yet uncommitted) patches will require the
Windows bitness to match the build bitness, ie. a 32 bit build will require
32 bit Windows, and a 64 bit build will require 64 bit Windows. Why? Our
configure.ac does not support cross-compilation at all, explicitly checking
for it and deliberately failing ./configure. It is not possible to build 32
bit builds on 64 bit hosts, or vice versa, on any operating system, and
probably never was (the temporary special case of building 32 bit AOO on
Windows 64, only worked because 32 bit x86 was hardcoded for Windows, and
will end).

Also, due to the fact MSVC implements compiling to different bitness using
compilers in different paths, supporting both a 32 and 64 bit build will
require that we stop searching $PATH for the compiler (cl.exe), and either
autodetect it through "oowintool --msvc-productdir" or, failing that, by
passing a --with-cl-home option to ./configure. Whether our $with_cl_home
arrived from oowintool or the --with-cl-home option, we will use:
* $with_cl_home/bin/cl.exe on x86 hosts
* $with_cl_home/bin/amd64/cl.exe on x86_64 hosts

While the progress I've made [in 1 weekend ;-)] is impressive, I imagine a
full port to Win64 will be long (assembly language development for the
Win64 UNO bridge, code audit for long <-> pointer conversions which work on
*nix64 but not on Win64), and you best get a 32 bit Windows if you plan to
build the stable 32 bit AOO in the meanwhile. Please prepare yourselves.

Alternatively, it should be possible to explicitly support compiling 32 bit
AOO binaries on Win64 with additional work (it essentially comes down to
the CPU and CPUNAME environment variables, and maybe some hacks to
set_soenv.in's COMPATH, ILIB and PATH); the changes involved should be
modest. But how much does this matter to people, and who is willing to help
implement it?

Damjan

Reply via email to