summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorYaakov Selkowitz <yselkowitz@users.sourceforge.net>2012-03-29 02:26:41 -0500
committerYaakov Selkowitz <yselkowitz@users.sourceforge.net>2012-04-05 21:57:07 -0500
commitc7b162555849ab2d4cb195d02d98a40494c5ce55 (patch)
tree129f086b7f2e05c26cbb456836e17586cf643ad5
parent2dffdcd60f70f534ad730830fe97f0bb1a192e2a (diff)
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>
-rw-r--r--configure.ac11
-rw-r--r--hw/xfree86/Makefile.am18
-rw-r--r--xorg-server.pc.in2
3 files changed, 27 insertions, 4 deletions
diff --git a/configure.ac b/configure.ac
index 8de256392..8895b68fe 100644
--- a/configure.ac
+++ b/configure.ac
@@ -1473,8 +1473,19 @@ AC_SUBST([UTILS_SYS_LIBS])
# necessary flags for each platform when -export-dynamic is passed to it.
LD_EXPORT_SYMBOLS_FLAG="-export-dynamic"
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_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])
dnl Imake defines SVR4 on SVR4 systems, and many files check for it, so
diff --git a/hw/xfree86/Makefile.am b/hw/xfree86/Makefile.am
index 72be8891c..d61c6401b 100644
--- a/hw/xfree86/Makefile.am
+++ b/hw/xfree86/Makefile.am
@@ -25,9 +25,9 @@ if INT10MODULE
INT10_SUBDIR = int10
endif
-SUBDIRS = common ddc i2c x86emu $(INT10_SUBDIR) fbdevhw os-support parser \
- ramdac shadowfb $(VBE_SUBDIR) $(VGAHW_SUBDIR) $(XAA_SUBDIR) \
- loader dixmods exa modes \
+SUBDIRS = common ddc x86emu $(INT10_SUBDIR) os-support parser \
+ ramdac $(VBE_SUBDIR) $(VGAHW_SUBDIR) $(XAA_SUBDIR) \
+ loader modes . i2c dixmods fbdevhw shadowfb exa \
$(DRI_SUBDIR) $(DRI2_SUBDIR) $(XF86UTILS_SUBDIR) doc man
DIST_SUBDIRS = common ddc i2c x86emu int10 fbdevhw os-support \
@@ -92,6 +92,9 @@ if INSTALL_SETUID
chown root $(DESTDIR)$(bindir)/Xorg
chmod u+s $(DESTDIR)$(bindir)/Xorg
endif
+if CYGWIN
+ $(INSTALL_DATA) libXorg.exe.a $(DESTDIR)$(libdir)/libXorg.exe.a
+endif
# Use variables from XORG_MANPAGE_SECTIONS and X Server configuration
# 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
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
diff --git a/xorg-server.pc.in b/xorg-server.pc.in
index a98eca8f9..1de1c6c50 100644
--- a/xorg-server.pc.in
+++ b/xorg-server.pc.in
@@ -17,4 +17,4 @@ Description: Modular X.Org X Server
Version: @PACKAGE_VERSION@
Requires.private: @SDK_REQUIRED_MODULES@
Cflags: -I${sdkdir} @symbol_visibility@
-Libs: -L${libdir}
+Libs: -L${libdir} @XORG_DRIVER_LIBS@