summaryrefslogtreecommitdiff
path: root/lib
diff options
context:
space:
mode:
Diffstat (limited to 'lib')
-rw-r--r--lib/os_internal.h77
1 files changed, 77 insertions, 0 deletions
diff --git a/lib/os_internal.h b/lib/os_internal.h
index dd48e04f7..e461b5581 100644
--- a/lib/os_internal.h
+++ b/lib/os_internal.h
@@ -1,6 +1,83 @@
#ifndef _XINE_OS_INTERNAL_H
#define _XINE_OS_INTERNAL_H
+/* When using Apple's GCC, __APPLE__ will be defined. This is a whole lot of
+ * messiness, but it's necessary in order to perform universal builds properly.
+ * It's meant to over-ride configure time stuff that would be different at
+ * compile time.
+ */
+#if defined(__APPLE__) && defined(XINE_MACOSX_UNIVERSAL_BINARY)
+
+#if !defined(__ppc__) && !defined(__ppc64__) && !defined(__i386__) && !defined(__x86_64__)
+#error unrecognized/unsupported CPU type building for Apple Darwin
+#endif
+
+/* First get rid of anything that initial configure might have set */
+#undef ARCH_PPC
+#undef ARCH_X86
+#undef ARCH_X86_32
+#undef ARCH_X86_64
+#undef BITFIELD_LSBF
+#undef ENABLE_ALTIVEC
+#undef FPM_64BIT
+#undef FPM_DEFAULT
+#undef FPM_INTEL
+#undef FPM_PPC
+#undef HAVE_MMX
+#undef HOST_ARCH
+#undef HOST_DARWIN
+#undef SIZEOF_INT
+#undef SIZEOF_LONG
+#undef SIZEOF_LONG_LONG
+#undef WORDS_BIGENDIAN
+
+#define HOST_DARWIN 1
+
+/* WORDS_BIGENDIAN (replaces AC_C_BIGENDIAN autoconf test at compile time) */
+#include <machine/endian.h>
+#if BYTE_ORDER == BIG_ENDIAN
+#define WORDS_BIGENDIAN 1
+#endif
+
+/* __ppc__, __ppc64__, __i386__, __x86_64__ are interesting arch macros */
+#if defined(__ppc__)
+#define ARCH_PPC
+#define FPM_PPC 1
+#define HOST_ARCH "darwin/powerpc"
+#define SIZEOF_INT 4
+#define SIZEOF_LONG 4
+#define SIZEOF_LONG_LONG 8
+#elif defined(__ppc64__)
+#define ARCH_PPC
+#define FPM_64BIT 1
+#define SIZEOF_INT 4
+#define SIZEOF_LONG 8
+#define SIZEOF_LONG_LONG 8
+#define HOST_ARCH "darwin/powerpc64"
+#elif defined(__i386__)
+#define ARCH_X86
+#define ARCH_X86_32
+#define BITFIELD_LSBF
+#define FPM_INTEL 1
+#define HAVE_MMX
+#define HOST_ARCH "darwin/i386"
+#define SIZEOF_INT 4
+#define SIZEOF_LONG 4
+#define SIZEOF_LONG_LONG 8
+#elif defined(__x86_64__)
+#define ARCH_X86
+#define ARCH_X86_64
+#define BITFIELD_LSBF
+#define FPM_64BIT 1
+#define HAVE_MMX
+#define HOST_ARCH "darwin/x64_64"
+#define SIZEOF_INT 4
+#define SIZEOF_LONG 8
+#define SIZEOF_LONG_LONG 8
+#endif
+
+#endif /* __APPLE__ */
+
#include <stddef.h>
#include <stdarg.h>