• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
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