[Fontconfig] fontconfig: Branch 'master' - 2 commits

Jon TURNEY jon.turney at dronecode.org.uk
Sat Jan 1 09:35:46 PST 2011


On 28/12/2010 07:23, Behdad Esfahbod wrote:
> New commits:
> commit d1a0fca316ab8d9d61474028da54615e4d9f7540
> Author: Behdad Esfahbod <behdad at behdad.org>
> 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;
> +}


More information about the Fontconfig mailing list