mirror of
https://github.com/flyinghead/flycast.git
synced 2026-11-09 01:59:49 -10:00
Speed up macOS Xcode project generation by skipping repeated feature checks, can be disabled with `FLYCAST_PRESEED_DARWIN_XCODE_CHECKS=OFF` [ci skip]
321 lines
6.8 KiB
CMake
321 lines
6.8 KiB
CMake
include_guard(GLOBAL)
|
|
|
|
# Xcode try_compile projects are expensive. These are stable native macOS
|
|
# SDK/libSystem facts; keep architecture-specific probes out of this cache.
|
|
if(NOT APPLE
|
|
OR NOT CMAKE_SYSTEM_NAME STREQUAL "Darwin"
|
|
OR CMAKE_CROSSCOMPILING
|
|
OR NOT CMAKE_GENERATOR STREQUAL "Xcode"
|
|
OR NOT CMAKE_C_COMPILER_ID MATCHES "^(AppleClang|Clang)$")
|
|
return()
|
|
endif()
|
|
|
|
message(STATUS "Pre-seeding native macOS CMake feature checks for Xcode")
|
|
|
|
function(_flycast_seed_darwin_xcode_probe name value)
|
|
if(NOT DEFINED ${name} AND NOT DEFINED CACHE{${name}})
|
|
set(${name} "${value}" CACHE INTERNAL "Pre-seeded native macOS feature-test result")
|
|
endif()
|
|
endfunction()
|
|
|
|
foreach(_probe IN ITEMS
|
|
CMAKE_HAVE_LIBC_PTHREAD
|
|
COMPILER_SUPPORTS_FOBJC_ARC
|
|
CXX_FLAG_QUNUSED_ARGUMENTS
|
|
CXX_FLAG_WALL
|
|
CXX_FLAG_WA_NOEXECSTACK
|
|
CXX_FLAG_WCAST_ALIGN
|
|
CXX_FLAG_WCAST_QUAL
|
|
CXX_FLAG_WEXTRA
|
|
CXX_FLAG_WSHADOW
|
|
CXX_FLAG_WUNDEF
|
|
C_FLAG_QUNUSED_ARGUMENTS
|
|
C_FLAG_WALL
|
|
C_FLAG_WA_NOEXECSTACK
|
|
C_FLAG_WCAST_ALIGN
|
|
C_FLAG_WCAST_QUAL
|
|
C_FLAG_WEXTRA
|
|
C_FLAG_WSHADOW
|
|
C_FLAG_WSTRICT_PROTOTYPES
|
|
C_FLAG_WUNDEF
|
|
HAVE_ABS
|
|
HAVE_ACOS
|
|
HAVE_ACOSF
|
|
HAVE_ARC4RANDOM
|
|
HAVE_ASIN
|
|
HAVE_ASINF
|
|
HAVE_ATAN
|
|
HAVE_ATAN2
|
|
HAVE_ATAN2F
|
|
HAVE_ATANF
|
|
HAVE_ATOF
|
|
HAVE_ATOI
|
|
HAVE_BCOPY
|
|
HAVE_BSEARCH
|
|
HAVE_CALLOC
|
|
HAVE_CEIL
|
|
HAVE_CEILF
|
|
HAVE_CLOCK_GETTIME
|
|
HAVE_CLONEFILE
|
|
HAVE_COPYSIGN
|
|
HAVE_COPYSIGNF
|
|
HAVE_COS
|
|
HAVE_COSF
|
|
HAVE_CTYPE_H
|
|
HAVE_DLOPEN_IN_LIBC
|
|
HAVE_EXP
|
|
HAVE_EXPF
|
|
HAVE_FABS
|
|
HAVE_FABSF
|
|
HAVE_FCHMOD
|
|
HAVE_FCNTL_H
|
|
HAVE_FILENO
|
|
HAVE_FLOAT_H
|
|
HAVE_FLOOR
|
|
HAVE_FLOORF
|
|
HAVE_FMOD
|
|
HAVE_FMODF
|
|
HAVE_FREE
|
|
HAVE_FRAMEWORK_COREHAPTICS
|
|
HAVE_FRAMEWORK_GAMECONTROLLER
|
|
HAVE_FRAMEWORK_METAL
|
|
HAVE_FSEEKO
|
|
HAVE_FTELLO
|
|
HAVE_FTS_H
|
|
HAVE_FTS_OPEN
|
|
HAVE_GCC_ATOMICS
|
|
HAVE_GCC_COMMENT_BLOCK_COMMANDS
|
|
HAVE_GCC_FVISIBILITY
|
|
HAVE_GCC_NO_STRICT_ALIASING
|
|
HAVE_GCC_WALL
|
|
HAVE_GCC_WDECLARATION_AFTER_STATEMENT
|
|
HAVE_GCC_WDOCUMENTATION
|
|
HAVE_GCC_WDOCUMENTATION_UNKNOWN_COMMAND
|
|
HAVE_GCC_WSHADOW
|
|
HAVE_GCC_WUNDEF
|
|
HAVE_GCC_WUNUSED_LOCAL_TYPEDEFS
|
|
HAVE_GETENV
|
|
HAVE_GETPROGNAME
|
|
HAVE_ICONV_H
|
|
HAVE_INDEX
|
|
HAVE_INTTYPES_H
|
|
HAVE_INTTYPES_H_LIBZIP
|
|
HAVE_LIBM
|
|
HAVE_LIMITS_H
|
|
HAVE_LOCALTIME_R
|
|
HAVE_LOG
|
|
HAVE_LOG10
|
|
HAVE_LOG10F
|
|
HAVE_LOGF
|
|
HAVE_LROUND
|
|
HAVE_LROUNDF
|
|
HAVE_MALLOC
|
|
HAVE_MATH_H
|
|
HAVE_MEMCMP
|
|
HAVE_MEMCPY
|
|
HAVE_MEMMOVE
|
|
HAVE_MEMORY_H
|
|
HAVE_MEMSET
|
|
HAVE_MPROTECT
|
|
HAVE_M_PI
|
|
HAVE_NANOSLEEP
|
|
HAVE_NULLABLE
|
|
HAVE_O_CLOEXEC
|
|
HAVE_POLL
|
|
HAVE_POW
|
|
HAVE_POWF
|
|
HAVE_PTHREADS
|
|
HAVE_PTHREADS_SEM
|
|
HAVE_PTHREAD_H
|
|
HAVE_PTHREAD_SETNAME_NP
|
|
HAVE_PTHREAD_THREADID_NP
|
|
HAVE_PUTENV
|
|
HAVE_QSORT
|
|
HAVE_RANDOM
|
|
HAVE_REALLOC
|
|
HAVE_RECURSIVE_MUTEXES
|
|
HAVE_RINDEX
|
|
HAVE_ROUND
|
|
HAVE_ROUNDF
|
|
HAVE_SA_SIGACTION
|
|
HAVE_SCALBN
|
|
HAVE_SCALBNF
|
|
HAVE_SETENV
|
|
HAVE_SETJMP
|
|
HAVE_SETMODE
|
|
HAVE_SIGACTION
|
|
HAVE_SIGNAL_H
|
|
HAVE_SIN
|
|
HAVE_SINF
|
|
HAVE_SNPRINTF
|
|
HAVE_SQRT
|
|
HAVE_SQRTF
|
|
HAVE_SSCANF
|
|
HAVE_STDARG_H
|
|
HAVE_STDBOOL_H
|
|
HAVE_STDDEF_H
|
|
HAVE_STDINT_H
|
|
HAVE_STDINT_H_LIBZIP
|
|
HAVE_STDIO_H
|
|
HAVE_STDLIB_H
|
|
HAVE_STRCASECMP
|
|
HAVE_STRCASESTR
|
|
HAVE_STRCHR
|
|
HAVE_STRCMP
|
|
HAVE_STRDUP
|
|
HAVE_STRINGS_H
|
|
HAVE_STRING_H
|
|
HAVE_STRLCAT
|
|
HAVE_STRLCPY
|
|
HAVE_STRLEN
|
|
HAVE_STRNCASECMP
|
|
HAVE_STRNCMP
|
|
HAVE_STRRCHR
|
|
HAVE_STRSTR
|
|
HAVE_STRTOD
|
|
HAVE_STRTOK_R
|
|
HAVE_STRTOL
|
|
HAVE_STRTOLL
|
|
HAVE_STRTOUL
|
|
HAVE_STRTOULL
|
|
HAVE_STRUCT_TIMESPEC
|
|
HAVE_SYSCONF
|
|
HAVE_SYSCTLBYNAME
|
|
HAVE_SYSLOG
|
|
HAVE_SYS_TIME_H
|
|
HAVE_SYS_TYPES_H
|
|
HAVE_SYS_TYPES_H_LIBZIP
|
|
HAVE_TAN
|
|
HAVE_TANF
|
|
HAVE_TRUNC
|
|
HAVE_TRUNCF
|
|
HAVE_UNISTD_H
|
|
HAVE_UNSETENV
|
|
HAVE_VISIBILITY
|
|
HAVE_VSNPRINTF
|
|
HAVE_VSSCANF
|
|
HAVE_WCHAR_H
|
|
HAVE_WCSCASECMP
|
|
HAVE_WCSCMP
|
|
HAVE_WCSDUP
|
|
HAVE_WCSLCAT
|
|
HAVE_WCSLCPY
|
|
HAVE_WCSLEN
|
|
HAVE_WCSNCASECMP
|
|
HAVE_WCSNCMP
|
|
HAVE_WCSSTR
|
|
HAVE_WNO_ERROR_DEPRECATED_DECLARATIONS
|
|
HAVE__EXIT
|
|
NOWIDE_HAS_INIT_PRIORITY
|
|
NOWIDE_HAS_LFS
|
|
STDC_HEADERS)
|
|
_flycast_seed_darwin_xcode_probe(${_probe} 1)
|
|
endforeach()
|
|
|
|
foreach(_probe IN ITEMS
|
|
HAVE_ASM_TYPES_H
|
|
HAVE_ELF_AUX_INFO
|
|
HAVE_EVENTFD
|
|
HAVE_EXPLICIT_BZERO
|
|
HAVE_EXPLICIT_MEMSET
|
|
HAVE_FICLONERANGE
|
|
HAVE_FOPEN64
|
|
HAVE_FSEEKO64
|
|
HAVE_GETAUXVAL
|
|
HAVE_ITOA
|
|
HAVE_LOCALTIME_S
|
|
HAVE_MALLOC_H
|
|
HAVE_MEMCPY_S
|
|
HAVE_MEMFD_CREATE
|
|
HAVE_NFDS_T
|
|
HAVE_PIPE2
|
|
HAVE_POSIX_FALLOCATE
|
|
HAVE_PTHREAD_CONDATTR_SETCLOCK
|
|
HAVE_PTHREAD_NP_H
|
|
HAVE_SEM_TIMEDWAIT
|
|
HAVE_SIGTIMEDWAIT
|
|
HAVE_SNPRINTF_S
|
|
HAVE_STRERRORLEN_S
|
|
HAVE_STRERROR_S
|
|
HAVE_STRICMP
|
|
HAVE_STRNCPY_S
|
|
HAVE_TIMERFD
|
|
HAVE__CLOSE
|
|
HAVE__DUP
|
|
HAVE__FDOPEN
|
|
HAVE__FILENO
|
|
HAVE__I64TOA
|
|
HAVE__LTOA
|
|
HAVE__SETMODE
|
|
HAVE__SNPRINTF
|
|
HAVE__SNPRINTF_S
|
|
HAVE__SNWPRINTF_S
|
|
HAVE__STRDUP
|
|
HAVE__STRICMP
|
|
HAVE__STRLWR
|
|
HAVE__STRNICMP
|
|
HAVE__STRREV
|
|
HAVE__STRTOI64
|
|
HAVE__STRTOUI64
|
|
HAVE__STRUPR
|
|
HAVE__UI64TOA
|
|
HAVE__UITOA
|
|
HAVE__ULTOA
|
|
HAVE__UNLINK
|
|
HAVE__WCSDUP
|
|
HAVE__WCSICMP
|
|
HAVE__WCSNICMP
|
|
LD_FLAG_Z_NOEXECSTACK
|
|
LIBC_IS_GLIBC)
|
|
_flycast_seed_darwin_xcode_probe(${_probe} "")
|
|
endforeach()
|
|
|
|
foreach(_probe IN ITEMS
|
|
HAVE___INT16_LIBZIP
|
|
HAVE___INT32_LIBZIP
|
|
HAVE___INT64_LIBZIP
|
|
HAVE___INT8_LIBZIP)
|
|
_flycast_seed_darwin_xcode_probe(${_probe} FALSE)
|
|
endforeach()
|
|
|
|
foreach(_probe IN ITEMS
|
|
__INT16_LIBZIP
|
|
__INT32_LIBZIP
|
|
__INT64_LIBZIP
|
|
__INT8_LIBZIP)
|
|
_flycast_seed_darwin_xcode_probe(${_probe} "")
|
|
endforeach()
|
|
|
|
_flycast_seed_darwin_xcode_probe(HAVE_INT8_T_LIBZIP TRUE)
|
|
_flycast_seed_darwin_xcode_probe(INT8_T_LIBZIP 1)
|
|
_flycast_seed_darwin_xcode_probe(HAVE_UINT8_T_LIBZIP TRUE)
|
|
_flycast_seed_darwin_xcode_probe(UINT8_T_LIBZIP 1)
|
|
_flycast_seed_darwin_xcode_probe(HAVE_INT16_T_LIBZIP TRUE)
|
|
_flycast_seed_darwin_xcode_probe(INT16_T_LIBZIP 2)
|
|
_flycast_seed_darwin_xcode_probe(HAVE_UINT16_T_LIBZIP TRUE)
|
|
_flycast_seed_darwin_xcode_probe(UINT16_T_LIBZIP 2)
|
|
_flycast_seed_darwin_xcode_probe(HAVE_SHORT_LIBZIP TRUE)
|
|
_flycast_seed_darwin_xcode_probe(SHORT_LIBZIP 2)
|
|
_flycast_seed_darwin_xcode_probe(HAVE_INT32_T_LIBZIP TRUE)
|
|
_flycast_seed_darwin_xcode_probe(INT32_T_LIBZIP 4)
|
|
_flycast_seed_darwin_xcode_probe(HAVE_UINT32_T_LIBZIP TRUE)
|
|
_flycast_seed_darwin_xcode_probe(UINT32_T_LIBZIP 4)
|
|
_flycast_seed_darwin_xcode_probe(HAVE_INT_LIBZIP TRUE)
|
|
_flycast_seed_darwin_xcode_probe(INT_LIBZIP 4)
|
|
|
|
# Flycast supports x86_64 and arm64 macOS builds; both use LP64.
|
|
_flycast_seed_darwin_xcode_probe(HAVE_INT64_T_LIBZIP TRUE)
|
|
_flycast_seed_darwin_xcode_probe(INT64_T_LIBZIP 8)
|
|
_flycast_seed_darwin_xcode_probe(HAVE_UINT64_T_LIBZIP TRUE)
|
|
_flycast_seed_darwin_xcode_probe(UINT64_T_LIBZIP 8)
|
|
_flycast_seed_darwin_xcode_probe(HAVE_LONG_LIBZIP TRUE)
|
|
_flycast_seed_darwin_xcode_probe(LONG_LIBZIP 8)
|
|
_flycast_seed_darwin_xcode_probe(HAVE_LONG_LONG_LIBZIP TRUE)
|
|
_flycast_seed_darwin_xcode_probe(LONG_LONG_LIBZIP 8)
|
|
_flycast_seed_darwin_xcode_probe(HAVE_SIZEOF_OFF_T TRUE)
|
|
_flycast_seed_darwin_xcode_probe(SIZEOF_OFF_T 8)
|
|
_flycast_seed_darwin_xcode_probe(HAVE_SIZEOF_SIZE_T TRUE)
|
|
_flycast_seed_darwin_xcode_probe(SIZEOF_SIZE_T 8)
|
|
|
|
unset(_probe)
|