[Fontconfig] [PATCH] Fix compilation on Mac OS X 10.4
Akira TAGOH
akira at tagoh.org
Tue May 7 01:39:02 PDT 2013
Thanks for the patch. BTW was MAC_OS_X_VERSION_X_Y available in 10.4?
will it work on 10.5+ too?
On Sun, May 5, 2013 at 2:11 PM, Misty De Meo <misty at brew.sh> wrote:
> fontconfig fails to compile on Mac OS X 10.4 because it uses the
> OSAtomicCompareAndSwapPtrBarrier() function in a macro definition in
> fcatomic.h; this function was first introduced in 10.5.
>
> This is the only function that fontconfig uses which isn't in Tiger,
> and otherwise it compiles and functions perfectly. Tiger does have
> 32-bit and 64-bit specific equivalents to that function.
>
> The patch below defines the macro to use those specific functions on
> Tiger based on the CPU arch for which fontconfig is being used, and
> otherwise uses OSAtomicCompareAndSwapPtrBarrier() on 10.5 and newer.
> I've tested on both 10.4 and 10.7 to ensure that it works.
>
> Misty De Meo
>
> From 7657bd4d690f218ed9f3a43045fc474a935cbe27 Mon Sep 17 00:00:00 2001
> From: Misty De Meo <mistydemeo at gmail.com>
> Date: Sun, 14 Apr 2013 22:10:21 -0500
> Subject: [PATCH] Fix fc_atomic_ptr_cmpexch on Mac OS X 10.4
>
> The OSAtomicCompareAndSwapPtrBarrier() function was introduced in Mac
> OS X 10.5, but size-specific versions are available in 10.4.
>
> This commit defines the fc_atomic_ptr_cmpexch macro using
> OSAtomicCompareAndSwapPtrBarrier() on 10.5 or newer, and otherwise
> defines it as the 32-bit or 64-bit equivalent based on the CPU
> architecture for which fontconfig is being built.
> ---
> src/fcatomic.h | 10 ++++++++++
> 1 file changed, 10 insertions(+)
>
> diff --git a/src/fcatomic.h b/src/fcatomic.h
> index a764311..7d2fc7d 100644
> --- a/src/fcatomic.h
> +++ b/src/fcatomic.h
> @@ -69,13 +69,23 @@ typedef LONG fc_atomic_int_t;
>
> #elif !defined(FC_NO_MT) && defined(__APPLE__)
>
> +#include <AvailabilityMacros.h>
> #include <libkern/OSAtomic.h>
>
> typedef int fc_atomic_int_t;
> #define fc_atomic_int_add(AI, V) (OSAtomicAdd32Barrier ((V), &(AI)) - (V))
>
> #define fc_atomic_ptr_get(P) (OSMemoryBarrier (), (void *) *(P))
> +
> +/* OSAtomicCompareAndSwapPtrBarrier() was introduced in 10.5, but 32-bit
> + * and 64-bit specific functions are available in 10.4. */
> +#ifdef MAC_OS_X_VERSION_10_5
> #define fc_atomic_ptr_cmpexch(P,O,N)
> OSAtomicCompareAndSwapPtrBarrier ((void *) (O), (void *) (N), (void
> **) (P))
> +#elif defined(__LP64__)
> +#define fc_atomic_ptr_cmpexch(P,O,N) OSAtomicCompareAndSwap64Barrier
> ((void *) (O), (void *) (N), (void **) (P))
> +#else
> +#define fc_atomic_ptr_cmpexch(P,O,N) OSAtomicCompareAndSwap32Barrier
> ((void *) (O), (void *) (N), (void **) (P))
> +#endif
>
>
> #elif !defined(FC_NO_MT) && defined(HAVE_INTEL_ATOMIC_PRIMITIVES)
> --
> 1.8.2
> _______________________________________________
> Fontconfig mailing list
> Fontconfig at lists.freedesktop.org
> http://lists.freedesktop.org/mailman/listinfo/fontconfig
--
Akira TAGOH
More information about the Fontconfig
mailing list