brintos

brintos / llvm-project-archived public Read only

0
0
Text · 1.3 KiB · ebbeba1 Raw
43 lines · c
1// RUN: %clang %s -o %t -mmacosx-version-min=10.7 -framework CoreFoundation -DMAJOR=%macos_version_major -DMINOR=%macos_version_minor -DSUBMINOR=%macos_version_subminor2// RUN: %run %t3 4typedef int int32_t;5typedef unsigned int uint32_t;6 7int32_t __isPlatformVersionAtLeast(uint32_t Platform, uint32_t Major,8                                   uint32_t Minor, uint32_t Subminor);9 10int32_t __isPlatformOrVariantPlatformVersionAtLeast(11    uint32_t Platform, uint32_t Major, uint32_t Minor, uint32_t Subminor,12    uint32_t Platform2, uint32_t Major2, uint32_t Minor2, uint32_t Subminor2);13 14void exit(int status);15 16#define PLATFORM_MACOS 117#define PLATFORM_IOS 218 19int32_t check(uint32_t Major, uint32_t Minor, uint32_t Subminor) {20  int32_t Result =21      __isPlatformVersionAtLeast(PLATFORM_MACOS, Major, Minor, Subminor);22  int32_t ResultVariant = __isPlatformOrVariantPlatformVersionAtLeast(23      PLATFORM_MACOS, Major, Minor, Subminor, PLATFORM_IOS, 13, 0, 0);24  if (Result != ResultVariant)25    exit(-1);26  return Result;27}28 29int main() {30  if (!check(MAJOR, MINOR, SUBMINOR))31    return 1;32  if (check(MAJOR, MINOR, SUBMINOR + 1))33    return 1;34  if (SUBMINOR && check(MAJOR + 1, MINOR, SUBMINOR - 1))35    return 1;36  if (SUBMINOR && !check(MAJOR, MINOR, SUBMINOR - 1))37    return 1;38  if (MAJOR && !check(MAJOR - 1, MINOR + 1, SUBMINOR))39    return 1;40 41  return 0;42}43