On 28/12/2010 07:23, Behdad Esfahbod wrote: > New commits: > commit d1a0fca316ab8d9d61474028da54615e4d9f7540 > Author: Behdad Esfahbod <behdad@xxxxxxxxxx> > Date: Tue Dec 28 00:59:19 2010 -0600 > > Make fc-arch stuff cross-compiling-safe > > Fixes: > Bug 32679 - fontconfig-2.8.0 does not cross compile > Bug 25462 - Cross-compilation doesn't work > +++ b/src/fcarch.c > @@ -0,0 +1,72 @@ > +/* > + * Copyright © 2002 Keith Packard > + * > + * Permission to use, copy, modify, distribute, and sell this software and its > + * documentation for any purpose is hereby granted without fee, provided that > + * the above copyright notice appear in all copies and that both that > + * copyright notice and this permission notice appear in supporting > + * documentation, and that the name of the author(s) not be used in > + * advertising or publicity pertaining to distribution of the software without > + * specific, written prior permission. The authors make no > + * representations about the suitability of this software for any purpose. It > + * is provided "as is" without express or implied warranty. > + * > + * THE AUTHOR(S) DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE, > + * INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS, IN NO > + * EVENT SHALL THE AUTHOR(S) BE LIABLE FOR ANY SPECIAL, INDIRECT OR > + * CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, > + * DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER > + * TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR > + * PERFORMANCE OF THIS SOFTWARE. > + */ > + > +#include <stdio.h> > + > +#ifdef HAVE_CONFIG_H > +#include <config.h> > +#endif > + > +/* If architecture is hardcoded, skip the assert tests */ > + > +#ifndef FC_ARCHITECTURE > + > +#include "fcarch.h" > + > +/* Make sure the cache structure is consistent with what we expect */ > + > +#include "fcint.h" > + > +FC_ASSERT_STATIC (1 == sizeof (char)); > +FC_ASSERT_STATIC (2 == sizeof (FcChar16)); > +FC_ASSERT_STATIC (4 == sizeof (int)); > +FC_ASSERT_STATIC (4 == sizeof (FcChar32)); > +FC_ASSERT_STATIC (4 == sizeof (FcObject)); > +FC_ASSERT_STATIC (4 == sizeof (FcValueBinding)); > +FC_ASSERT_STATIC (8 == sizeof (FcAlign)); > +FC_ASSERT_STATIC (0x20 == sizeof (FcCharLeaf)); > + > +FC_ASSERT_STATIC (SIZEOF_VOID_P == sizeof (intptr_t)); > +FC_ASSERT_STATIC (SIZEOF_VOID_P == sizeof (FcPatternEltPtr)); > +FC_ASSERT_STATIC (SIZEOF_VOID_P == sizeof (FcValueListPtr)); > +FC_ASSERT_STATIC (SIZEOF_VOID_P == sizeof (char *)); > +FC_ASSERT_STATIC (SIZEOF_VOID_P == sizeof (struct FcPatternElt *)); > +FC_ASSERT_STATIC (SIZEOF_VOID_P == sizeof (FcValueList *)); > +FC_ASSERT_STATIC (SIZEOF_VOID_P == sizeof (FcStrSet *)); > +FC_ASSERT_STATIC (SIZEOF_VOID_P == sizeof (FcCharLeaf **)); > +FC_ASSERT_STATIC (SIZEOF_VOID_P == sizeof (FcChar16 *)); > + > +FC_ASSERT_STATIC (0x08 + 1*SIZEOF_VOID_P == sizeof (FcValue)); This compile-time assert fails on cygwin, see [1]. /opt/jhbuild/git/fontconfig/src/fcarch.c:58: error: size of array '_static_assert_on_line_58_failed' is negative make[3]: *** [fcarch.o] Error 1 cygwin is le32d8, and it looks to me like that assert isn't going to be correct for 8-byte aligned doubles. I'm not sure what the invariant should be, would the following be better? -FC_ASSERT_STATIC (0x08 + 1*SIZEOF_VOID_P == sizeof (FcValue)); +FC_ASSERT_STATIC (ALIGNOF_DOUBLE + sizeof(double) == sizeof (FcValue)); [1] http://tinderbox.freedesktop.org/builds/2010-12-31-0009/logs/fontconfig/#build > +FC_ASSERT_STATIC (0x00 + 2*SIZEOF_VOID_P == sizeof (FcPatternElt)); > +FC_ASSERT_STATIC (0x08 + 2*SIZEOF_VOID_P == sizeof (FcPattern)); > +FC_ASSERT_STATIC (0x08 + 2*SIZEOF_VOID_P == sizeof (FcCharSet)); > +FC_ASSERT_STATIC (0x08 + 6*SIZEOF_VOID_P == sizeof (FcCache)); > + > +#endif > + > + > +int > +main (int argc, char **argv) > +{ > + printf ("%s\n", FC_ARCHITECTURE); > + return 0; > +} _______________________________________________ Fontconfig mailing list Fontconfig@xxxxxxxxxxxxxxxxxxxxx http://lists.freedesktop.org/mailman/listinfo/fontconfig