1d8ead18145cba98fdc7256f9a0e69b8c1c90cd1cDmitriy Ivanov/* 2d8ead18145cba98fdc7256f9a0e69b8c1c90cd1cDmitriy Ivanov * Copyright (C) 2015 The Android Open Source Project 3bcc4da9b752f0def46d63ed7b31f3f49cc2435adDimitry Ivanov * All rights reserved. 4d8ead18145cba98fdc7256f9a0e69b8c1c90cd1cDmitriy Ivanov * 5bcc4da9b752f0def46d63ed7b31f3f49cc2435adDimitry Ivanov * Redistribution and use in source and binary forms, with or without 6bcc4da9b752f0def46d63ed7b31f3f49cc2435adDimitry Ivanov * modification, are permitted provided that the following conditions 7bcc4da9b752f0def46d63ed7b31f3f49cc2435adDimitry Ivanov * are met: 8bcc4da9b752f0def46d63ed7b31f3f49cc2435adDimitry Ivanov * * Redistributions of source code must retain the above copyright 9bcc4da9b752f0def46d63ed7b31f3f49cc2435adDimitry Ivanov * notice, this list of conditions and the following disclaimer. 10bcc4da9b752f0def46d63ed7b31f3f49cc2435adDimitry Ivanov * * Redistributions in binary form must reproduce the above copyright 11bcc4da9b752f0def46d63ed7b31f3f49cc2435adDimitry Ivanov * notice, this list of conditions and the following disclaimer in 12bcc4da9b752f0def46d63ed7b31f3f49cc2435adDimitry Ivanov * the documentation and/or other materials provided with the 13bcc4da9b752f0def46d63ed7b31f3f49cc2435adDimitry Ivanov * distribution. 14d8ead18145cba98fdc7256f9a0e69b8c1c90cd1cDmitriy Ivanov * 15bcc4da9b752f0def46d63ed7b31f3f49cc2435adDimitry Ivanov * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS 16bcc4da9b752f0def46d63ed7b31f3f49cc2435adDimitry Ivanov * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT 17bcc4da9b752f0def46d63ed7b31f3f49cc2435adDimitry Ivanov * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS 18bcc4da9b752f0def46d63ed7b31f3f49cc2435adDimitry Ivanov * FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE 19bcc4da9b752f0def46d63ed7b31f3f49cc2435adDimitry Ivanov * COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, 20bcc4da9b752f0def46d63ed7b31f3f49cc2435adDimitry Ivanov * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, 21bcc4da9b752f0def46d63ed7b31f3f49cc2435adDimitry Ivanov * BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS 22bcc4da9b752f0def46d63ed7b31f3f49cc2435adDimitry Ivanov * OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED 23bcc4da9b752f0def46d63ed7b31f3f49cc2435adDimitry Ivanov * AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, 24bcc4da9b752f0def46d63ed7b31f3f49cc2435adDimitry Ivanov * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT 25bcc4da9b752f0def46d63ed7b31f3f49cc2435adDimitry Ivanov * OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF 26bcc4da9b752f0def46d63ed7b31f3f49cc2435adDimitry Ivanov * SUCH DAMAGE. 27d8ead18145cba98fdc7256f9a0e69b8c1c90cd1cDmitriy Ivanov */ 28d8ead18145cba98fdc7256f9a0e69b8c1c90cd1cDmitriy Ivanov 29d8ead18145cba98fdc7256f9a0e69b8c1c90cd1cDmitriy Ivanov#include "linker.h" 3004f7e3e955ba7de5f449c995e667659319dc1cceDmitriy Ivanov#include <android/api-level.h> 31d8ead18145cba98fdc7256f9a0e69b8c1c90cd1cDmitriy Ivanov#include <atomic> 32d8ead18145cba98fdc7256f9a0e69b8c1c90cd1cDmitriy Ivanov 3304f7e3e955ba7de5f449c995e667659319dc1cceDmitriy Ivanovstatic std::atomic<uint32_t> g_target_sdk_version(__ANDROID_API__); 34d8ead18145cba98fdc7256f9a0e69b8c1c90cd1cDmitriy Ivanov 35d8ead18145cba98fdc7256f9a0e69b8c1c90cd1cDmitriy Ivanovvoid set_application_target_sdk_version(uint32_t target) { 3628154f5c56dc4a64270cae2374b47a168d1bd7faDmitriy Ivanov // translate current sdk_version to platform sdk_version 3728154f5c56dc4a64270cae2374b47a168d1bd7faDmitriy Ivanov if (target == 0) { 3828154f5c56dc4a64270cae2374b47a168d1bd7faDmitriy Ivanov target = __ANDROID_API__; 3928154f5c56dc4a64270cae2374b47a168d1bd7faDmitriy Ivanov } 40d8ead18145cba98fdc7256f9a0e69b8c1c90cd1cDmitriy Ivanov g_target_sdk_version = target; 41d8ead18145cba98fdc7256f9a0e69b8c1c90cd1cDmitriy Ivanov} 42d8ead18145cba98fdc7256f9a0e69b8c1c90cd1cDmitriy Ivanov 43d8ead18145cba98fdc7256f9a0e69b8c1c90cd1cDmitriy Ivanovuint32_t get_application_target_sdk_version() { 44d8ead18145cba98fdc7256f9a0e69b8c1c90cd1cDmitriy Ivanov return g_target_sdk_version; 45d8ead18145cba98fdc7256f9a0e69b8c1c90cd1cDmitriy Ivanov} 46d8ead18145cba98fdc7256f9a0e69b8c1c90cd1cDmitriy Ivanov 47