1 // This file moves some of the autoconf magic to compile-time when building on 2 // macOS. This is needed for building 4-way universal binaries and for 64-bit 3 // universal binaries because the values redefined below aren't configure-time 4 // constant but only compile-time constant in these scenarios. 5 6 #ifndef PY_MACCONFIG_H 7 #define PY_MACCONFIG_H 8 #ifdef __APPLE__ 9 10 #undef ALIGNOF_MAX_ALIGN_T 11 #undef SIZEOF_LONG 12 #undef SIZEOF_LONG_DOUBLE 13 #undef SIZEOF_PTHREAD_T 14 #undef SIZEOF_SIZE_T 15 #undef SIZEOF_TIME_T 16 #undef SIZEOF_VOID_P 17 #undef SIZEOF__BOOL 18 #undef SIZEOF_UINTPTR_T 19 #undef SIZEOF_PTHREAD_T 20 #undef WORDS_BIGENDIAN 21 #undef DOUBLE_IS_ARM_MIXED_ENDIAN_IEEE754 22 #undef DOUBLE_IS_BIG_ENDIAN_IEEE754 23 #undef DOUBLE_IS_LITTLE_ENDIAN_IEEE754 24 #undef HAVE_GCC_ASM_FOR_X87 25 #undef HAVE_GCC_ASM_FOR_X64 26 27 #undef VA_LIST_IS_ARRAY 28 #if defined(__LP64__) && defined(__x86_64__) 29 # define VA_LIST_IS_ARRAY 1 30 #endif 31 32 #undef HAVE_LARGEFILE_SUPPORT 33 #ifndef __LP64__ 34 # define HAVE_LARGEFILE_SUPPORT 1 35 #endif 36 37 #undef SIZEOF_LONG 38 #ifdef __LP64__ 39 # define SIZEOF__BOOL 1 40 # define SIZEOF__BOOL 1 41 # define SIZEOF_LONG 8 42 # define SIZEOF_PTHREAD_T 8 43 # define SIZEOF_SIZE_T 8 44 # define SIZEOF_TIME_T 8 45 # define SIZEOF_VOID_P 8 46 # define SIZEOF_UINTPTR_T 8 47 # define SIZEOF_PTHREAD_T 8 48 #else 49 # ifdef __ppc__ 50 # define SIZEOF__BOOL 4 51 # else 52 # define SIZEOF__BOOL 1 53 # endif 54 # define SIZEOF_LONG 4 55 # define SIZEOF_PTHREAD_T 4 56 # define SIZEOF_SIZE_T 4 57 # define SIZEOF_TIME_T 4 58 # define SIZEOF_VOID_P 4 59 # define SIZEOF_UINTPTR_T 4 60 # define SIZEOF_PTHREAD_T 4 61 #endif 62 63 // macOS 10.4 (the first release to support 64-bit code 64 // at all) only supports 64-bit in the UNIX layer. 65 // Therefore suppress the toolbox-glue in 64-bit mode. 66 // 67 // In 64-bit mode setpgrp always has no arguments, in 32-bit 68 // mode that depends on the compilation environment 69 #if defined(__LP64__) 70 # undef SETPGRP_HAVE_ARG 71 #endif 72 73 #ifdef __BIG_ENDIAN__ 74 # define WORDS_BIGENDIAN 1 75 # define DOUBLE_IS_BIG_ENDIAN_IEEE754 76 #else 77 # define DOUBLE_IS_LITTLE_ENDIAN_IEEE754 78 #endif 79 80 #if defined(__i386__) || defined(__x86_64__) 81 # define HAVE_GCC_ASM_FOR_X87 82 # define ALIGNOF_MAX_ALIGN_T 16 83 # define HAVE_GCC_ASM_FOR_X64 1 84 # define SIZEOF_LONG_DOUBLE 16 85 #else 86 # define ALIGNOF_MAX_ALIGN_T 8 87 # define SIZEOF_LONG_DOUBLE 8 88 #endif 89 90 #endif // __APPLE__ 91 #endif // !PY_MACCONFIG_H 92