// Copyright (c) 2017 The Chromium Authors. All rights reserved. // Use of this source code is governed by a BSD-style license that can be // found in the LICENSE file. // Provides the definition of API_AVAILABLE while we're on an SDK that doesn't // contain it yet. // TODO(thakis): Remove this file once we're on the 10.12 SDK. #ifndef BASE_MAC_AVAILABILITY_H_ #define BASE_MAC_AVAILABILITY_H_ #include #if !defined(MAC_OS_X_VERSION_10_12) || \ MAC_OS_X_VERSION_MAX_ALLOWED < MAC_OS_X_VERSION_10_12 #define __API_AVAILABLE_PLATFORM_macos(x) macos, introduced = x #define __API_AVAILABLE_PLATFORM_macosx(x) macosx, introduced = x #define __API_AVAILABLE_PLATFORM_ios(x) ios, introduced = x #define __API_AVAILABLE_PLATFORM_watchos(x) watchos, introduced = x #define __API_AVAILABLE_PLATFORM_tvos(x) tvos, introduced = x #define __API_A(x) __attribute__((availability(__API_AVAILABLE_PLATFORM_##x))) #define __API_AVAILABLE1(x) __API_A(x) #define __API_AVAILABLE2(x, y) __API_A(x) __API_A(y) #define __API_AVAILABLE3(x, y, z) __API_A(x) __API_A(y) __API_A(z) #define __API_AVAILABLE4(x, y, z, t) __API_A(x) __API_A(y) __API_A(z) __API_A(t) #define __API_AVAILABLE_GET_MACRO(_1, _2, _3, _4, NAME, ...) NAME #define API_AVAILABLE(...) \ __API_AVAILABLE_GET_MACRO(__VA_ARGS__, __API_AVAILABLE4, __API_AVAILABLE3, \ __API_AVAILABLE2, __API_AVAILABLE1) \ (__VA_ARGS__) #else #import #endif // MAC_OS_X_VERSION_10_12 #endif // BASE_MAC_AVAILABILITY_H_