[PATCH xserver 2/2] xfree86: add support for Cygwin

Alan Coopersmith alan.coopersmith at oracle.com
Wed Mar 28 20:19:10 PDT 2012

On 03/27/12 10:16 PM, Yaakov (Cygwin/X) wrote:
> From: Yaakov Selkowitz <yselkowitz at users.sourceforge.net>
> 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.

I do something similar when building X11 for Solaris packaging, in order
to catch ABI issues such as missing symbols at build time instead of run
time, and this patch will make it easier for me to do that with all the
modules, while now it mostly just checks drivers due to build ordering.

> +
> +i2c/libi2c.la:
> +	$(MAKE) -C $(@D) $(@F)
> +
> +dixmods/libdixmods.la:
> +	$(MAKE) -C $(@D) $(@F)
> +
> +dixmods/libxorgxkb.la:
> +	$(MAKE) -C $(@D) $(@F)

Should those be $(MAKE) $(AM_MAKEFLAGS) ... ?  That's what most automake calls
seem to use.

Also -C is a gnu make specific flag, but I think we still require GNU make
to build the server due to other issues anyway.

> -libfb_la_LDFLAGS = -module -avoid-version
> +libfb_la_LDFLAGS = -module -avoid-version $(LD_NO_UNDEFINED_FLAG)
>  libfb_la_LIBADD = $(top_builddir)/fb/libfb.la
>  libfb_la_SOURCES = $(top_builddir)/fb/fbcmap_mi.c fbmodule.c
>  libfb_la_CFLAGS = $(AM_CFLAGS)

BTW, in my patch in the Solaris tree, I have:
+libfb_la_LIBADD += -lpixman-1

> +if CYGWIN
> +libshadow_la_LIBADD += libfb.la
> +endif

I currently patch that in on Solaris too, so would appreciate finding a more
common name than if CYGWIN for this.

The current work in progress from our branch to get 1.12 ready to merge in:

> diff --git a/hw/xfree86/man/xorg.conf.man b/hw/xfree86/man/xorg.conf.man
> index 72e5713..5d59e8d 100644
> --- a/hw/xfree86/man/xorg.conf.man
> +++ b/hw/xfree86/man/xorg.conf.man
> @@ -701,7 +701,8 @@ This instructs the server to load the module called
>  The module name given should be the module's standard name, not the
>  module file name.
>  The standard name is case\-sensitive, and does not include the \(lqlib\(rq
> -prefix, or the \(lq.a\(rq, \(lq.o\(rq, or \(lq.so\(rq suffixes.
> +or \(lqcyg\(rq prefixes, or the \(lq.a\(rq, \(lq.o\(rq, \(lq.dll\(rq,
> +or \(lq.so\(rq suffixes.

We can probably remove .o & .a from that list now that the old elfloader is gone.

	-Alan Coopersmith-              alan.coopersmith at oracle.com
	 Oracle Solaris Engineering - http://blogs.oracle.com/alanc

More information about the xorg-devel mailing list