Subject: psiconv on Windows
From: Tom Briggs (tom@sane.com)
Date: Thu Jan 25 2001 - 12:12:45 CST
I believe that I've finally managed to track down all the problems with
psiconv on Windows. Unfortunately, I don't have the time or the knowledge
to fix them, so I'm going to explain what I've come up with and respectfully
request that someone else implement the fix.
The compilation problems were due to a incorrect include paths in a couple of
the makefiles. Simple enough, already taken care of.
The larger problem, however, is linking. The core of the problem is that
psiconv is compiled as an XP library (in src/config/require/xp/Makefile), not a
platform specific library (like wv or iconv, in src/config/require/XX/Makefile).
This causes configure to make all it's choices based on the cygwin environment,
rather than based on information passed to it; in addition, the generated
Makefile is used for compilation rather than a predefined Makefile.abi. This
results in a build process that's incompatible with AbiWord's, primarily
because psiconv gets built with gcc instead of the MSVC compiler. This makes
it impossible to link psiconv into AbiWord.exe, because unfortunately you can't
link objects built with gcc against objects built with MSVC (I believe that
the gcc-built objects are looking for some globals in libc that the MS libc
doesn't provide, or something; it's a big mess, but I think it's safe to blame
a gcc vs. msvc conflict).
I would guess that this whole problem can probably be solved by mimicking
the way that libiconv is compiled into abi (using the MSVC compiler on Windows,
allowing existing versions on *nix systems to be used if present, then falling
fallinng back to the version included with abi if one isn't present).
Unfortunately, I'm not comfortable enough with the whole build system to
think that I can make this change and not break the Unix builds (especially for
those building with psiconv as a system lib), so I'm going to leave it for
someone more qualified.
On a related note: the linker flags for psiconv aren't currently specified
correctly, so any linker errors you see for the Win32 tinderbox build are
related to that (the EXTRA_LIBS var isn't an LDFLAGS equivalent, and isn't
intended to be passed to the linker verbatim). It isn't until after you resolve
the LDFLAGS vs. EXTRA_LIBS problem that you begin to see the gcc vs. MSVC
problems.
Questions/comments/problems/complaints/etc. all welcome.
-Tom
This archive was generated by hypermail 2b25 : Thu Jan 25 2001 - 12:13:50 CST