Summary: | Built libXfont static-only | ||
---|---|---|---|
Product: | cygwin | Reporter: | Yaakov Selkowitz <yselkowi> |
Component: | Cygwin/X | Assignee: | Yaakov Selkowitz <yselkowi> |
Status: | RESOLVED FIXED | ||
Severity: | normal | CC: | jon.turney |
Priority: | P2 | ||
Version: | unspecified | ||
Target Milestone: | --- | ||
Host: | Target: | ||
Build: | Last reconfirmed: |
Description
Yaakov Selkowitz
2010-02-22 09:55:14 UTC
Shipped libXfont-1.4.1-2 as static only, but that won't help when building the entire stack from git (e.g. with jhbuild). One possible solution would be to remove -no-undefined from libXfont_la_LDFLAGS, in which case libtool will refuse to build a shared library on PE/COFF platforms. This would affect Xming as well, and it may still break xfs (not that I care). Thoughts? Or better still, fix the libXfont interface, so it doesn't rely on weak symbols to work. Then we can dynamically link and everyone is happy. Perhaps easier said then done. Here are the suspects: ./src/stubs/cauthgen.c:#pragma weak client_auth_generation ./src/stubs/csignal.c:#pragma weak ClientSignal ./src/stubs/delfntcid.c:#pragma weak DeleteFontClientID ./src/stubs/errorf.c:#pragma weak ErrorF ./src/stubs/fatalerror.c:#pragma weak FatalError ./src/stubs/findoldfnt.c:#pragma weak find_old_font ./src/stubs/getcres.c:#pragma weak GetClientResolutions ./src/stubs/getdefptsize.c:#pragma weak GetDefaultPointSize ./src/stubs/getnewfntcid.c:#pragma weak GetNewFontClientID ./src/stubs/gettime.c:#pragma weak GetTimeInMillis ./src/stubs/initfshdl.c:#pragma weak init_fs_handlers ./src/stubs/regfpefunc.c:#pragma weak RegisterFPEFunctions ./src/stubs/rmfshdl.c:#pragma weak remove_fs_handlers ./src/stubs/servclient.c:#pragma weak serverClient ./src/stubs/setfntauth.c:#pragma weak set_font_authorizations ./src/stubs/stfntcfnt.c:#pragma weak StoreFontClientFont ./src/util/atom.c:#pragma weak MakeAtom ./src/util/atom.c:#pragma weak ValidAtom ./src/util/atom.c:#pragma weak NameForAtom ./src/util/miscutil.c:#pragma weak serverGeneration ./src/util/miscutil.c:#pragma weak register_fpe_functions davek has confirmed that binutils is still not up to the task: http://cygwin.com/ml/cygwin/2010-04/msg00281.html and here is some discussion from the previous Cygwin/X maintainers: http://cygwin.com/ml/cygwin-xfree/2003-10/msg00292.html Although I'm not sure that the solution proposed there is the correct one. Note that mkcfm should be obsoleted if it isn't already See also https://bugs.freedesktop.org/show_bug.cgi?id=5553 commit c482a2c104aa5cd1a265c2ca310a308dcc418fe7 Author: Yaakov Selkowitz <yselkowitz@...> Date: Wed Apr 14 05:58:28 2010 -0500 Revert "Bug #6247: Fix build on Cygwin" libtool requires the '-no-undefined' flag in order to create shared libraries on PE/COFF platforms (Cygwin/MinGW); on other platforms this flag has no effect. The problem with libXfont is that PE weak symbols do not behave exactly as they do on ELF platforms. Since PE binaries (both executables and libraries) must have all symbols resolved at link time, there is no way for the real symbols in xserver to "displace" those in libXfont at runtime, so the result is that libXfont uses its stubs, which do nothing, and xserver ends up unable to find its fonts. Solving this will require either significant changes to libXfont or some major improvement to the toolchain to handle this case. Until that happens, removing '-no-undefined' will result in a static-only library on these platforms, which is the only currently working solution. http://sourceware.org/bugzilla/show_bug.cgi?id=11306 http://cygwin.com/ml/cygwin/2010-04/msg00281.html This reverts commit 69c4ae1e3e14a58bc2eb9b9b8820dc7183b82a67. |