xfree86: link modules against Xorg symbols on Cygwin

As a PE platform, all symbols in both EXEs and DLLs must be resolved
at link time.  As Xorg modules depend on symbols in the Xorg
executable, we must build Xorg before its modules, creating an implib
from the former which is used to link the latter.  This implib must
then be installed in order to build the drivers.

Currently only two drivers are supported on Cygwin: xf86-video-dummy
(to replace Xvfb/Xfake) and xf86-video-nested (to replace Xnest/Xephyr).

Signed-off-by: Yaakov Selkowitz <yselkowitz@users.sourceforge.net>
Reviewed-by: Jon TURNEY <jon.turney@dronecode.org.uk>
Reviewed-by: Jeremy Huddleston <jeremyhu@apple.com>
This commit is contained in:
Yaakov Selkowitz 2012-03-29 02:26:41 -05:00
parent 2dffdcd60f
commit c7b1625558
3 changed files with 27 additions and 4 deletions

View File

@ -1473,8 +1473,19 @@ AC_SUBST([UTILS_SYS_LIBS])
# necessary flags for each platform when -export-dynamic is passed to it. # necessary flags for each platform when -export-dynamic is passed to it.
LD_EXPORT_SYMBOLS_FLAG="-export-dynamic" LD_EXPORT_SYMBOLS_FLAG="-export-dynamic"
LD_NO_UNDEFINED_FLAG= LD_NO_UNDEFINED_FLAG=
XORG_DRIVER_LIBS=
case "$host_os" in
cygwin*)
LD_EXPORT_SYMBOLS_FLAG="-Wl,--export-all,--out-implib,lib\$@.a"
LD_NO_UNDEFINED_FLAG="-no-undefined -Wl,\$(top_builddir)/hw/xfree86/libXorg.exe.a"
XORG_DRIVER_LIBS="-lXorg.exe -L\${moduledir} -lshadow -lfb -no-undefined"
CYGWIN=yes
;;
esac
AC_SUBST([LD_EXPORT_SYMBOLS_FLAG]) AC_SUBST([LD_EXPORT_SYMBOLS_FLAG])
AC_SUBST([LD_NO_UNDEFINED_FLAG]) AC_SUBST([LD_NO_UNDEFINED_FLAG])
AC_SUBST([XORG_DRIVER_LIBS])
AM_CONDITIONAL([CYGWIN], [test x"$CYGWIN" = xyes])
AM_CONDITIONAL([NO_UNDEFINED], [test x"$LD_NO_UNDEFINED_FLAG" != x]) AM_CONDITIONAL([NO_UNDEFINED], [test x"$LD_NO_UNDEFINED_FLAG" != x])
dnl Imake defines SVR4 on SVR4 systems, and many files check for it, so dnl Imake defines SVR4 on SVR4 systems, and many files check for it, so

View File

@ -25,9 +25,9 @@ if INT10MODULE
INT10_SUBDIR = int10 INT10_SUBDIR = int10
endif endif
SUBDIRS = common ddc i2c x86emu $(INT10_SUBDIR) fbdevhw os-support parser \ SUBDIRS = common ddc x86emu $(INT10_SUBDIR) os-support parser \
ramdac shadowfb $(VBE_SUBDIR) $(VGAHW_SUBDIR) $(XAA_SUBDIR) \ ramdac $(VBE_SUBDIR) $(VGAHW_SUBDIR) $(XAA_SUBDIR) \
loader dixmods exa modes \ loader modes . i2c dixmods fbdevhw shadowfb exa \
$(DRI_SUBDIR) $(DRI2_SUBDIR) $(XF86UTILS_SUBDIR) doc man $(DRI_SUBDIR) $(DRI2_SUBDIR) $(XF86UTILS_SUBDIR) doc man
DIST_SUBDIRS = common ddc i2c x86emu int10 fbdevhw os-support \ DIST_SUBDIRS = common ddc i2c x86emu int10 fbdevhw os-support \
@ -92,6 +92,9 @@ if INSTALL_SETUID
chown root $(DESTDIR)$(bindir)/Xorg chown root $(DESTDIR)$(bindir)/Xorg
chmod u+s $(DESTDIR)$(bindir)/Xorg chmod u+s $(DESTDIR)$(bindir)/Xorg
endif endif
if CYGWIN
$(INSTALL_DATA) libXorg.exe.a $(DESTDIR)$(libdir)/libXorg.exe.a
endif
# Use variables from XORG_MANPAGE_SECTIONS and X Server configuration # Use variables from XORG_MANPAGE_SECTIONS and X Server configuration
# Do not include manpages.am as values are not appropriate for rc files # Do not include manpages.am as values are not appropriate for rc files
@ -113,3 +116,12 @@ sdksyms.dep sdksyms.c: sdksyms.sh
SDKSYMS_DEP = sdksyms.dep SDKSYMS_DEP = sdksyms.dep
include $(SDKSYMS_DEP) include $(SDKSYMS_DEP)
i2c/libi2c.la:
$(AM_V_at)cd i2c && $(MAKE) libi2c.la
dixmods/libdixmods.la:
$(AM_V_at)cd dixmods && $(MAKE) libdixmods.la
dixmods/libxorgxkb.la:
$(AM_V_at)cd dixmods && $(MAKE) libxorgxkb.la

View File

@ -17,4 +17,4 @@ Description: Modular X.Org X Server
Version: @PACKAGE_VERSION@ Version: @PACKAGE_VERSION@
Requires.private: @SDK_REQUIRED_MODULES@ Requires.private: @SDK_REQUIRED_MODULES@
Cflags: -I${sdkdir} @symbol_visibility@ Cflags: -I${sdkdir} @symbol_visibility@
Libs: -L${libdir} Libs: -L${libdir} @XORG_DRIVER_LIBS@