1*fb1b10abSAndroid Build Coastguard Worker /* 2*fb1b10abSAndroid Build Coastguard Worker * Copyright (c) 2023 The WebM project authors. All Rights Reserved. 3*fb1b10abSAndroid Build Coastguard Worker * 4*fb1b10abSAndroid Build Coastguard Worker * Use of this source code is governed by a BSD-style license 5*fb1b10abSAndroid Build Coastguard Worker * that can be found in the LICENSE file in the root of the source 6*fb1b10abSAndroid Build Coastguard Worker * tree. An additional intellectual property rights grant can be found 7*fb1b10abSAndroid Build Coastguard Worker * in the file PATENTS. All contributing project authors may 8*fb1b10abSAndroid Build Coastguard Worker * be found in the AUTHORS file in the root of the source tree. 9*fb1b10abSAndroid Build Coastguard Worker */ 10*fb1b10abSAndroid Build Coastguard Worker 11*fb1b10abSAndroid Build Coastguard Worker #include <stdlib.h> 12*fb1b10abSAndroid Build Coastguard Worker #include <string.h> 13*fb1b10abSAndroid Build Coastguard Worker 14*fb1b10abSAndroid Build Coastguard Worker #include "vpx_config.h" 15*fb1b10abSAndroid Build Coastguard Worker #include "vpx_ports/arm.h" 16*fb1b10abSAndroid Build Coastguard Worker 17*fb1b10abSAndroid Build Coastguard Worker #if defined(_WIN32) 18*fb1b10abSAndroid Build Coastguard Worker #undef WIN32_LEAN_AND_MEAN 19*fb1b10abSAndroid Build Coastguard Worker #define WIN32_LEAN_AND_MEAN 20*fb1b10abSAndroid Build Coastguard Worker #undef WIN32_EXTRA_LEAN 21*fb1b10abSAndroid Build Coastguard Worker #define WIN32_EXTRA_LEAN 22*fb1b10abSAndroid Build Coastguard Worker #include <windows.h> 23*fb1b10abSAndroid Build Coastguard Worker #endif 24*fb1b10abSAndroid Build Coastguard Worker 25*fb1b10abSAndroid Build Coastguard Worker #ifdef WINAPI_FAMILY 26*fb1b10abSAndroid Build Coastguard Worker #include <winapifamily.h> 27*fb1b10abSAndroid Build Coastguard Worker #if !WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_DESKTOP) 28*fb1b10abSAndroid Build Coastguard Worker #define getenv(x) NULL 29*fb1b10abSAndroid Build Coastguard Worker #endif 30*fb1b10abSAndroid Build Coastguard Worker #endif 31*fb1b10abSAndroid Build Coastguard Worker 32*fb1b10abSAndroid Build Coastguard Worker #if defined(__ANDROID__) && (__ANDROID_API__ < 18) 33*fb1b10abSAndroid Build Coastguard Worker #define VPX_USE_ANDROID_CPU_FEATURES 1 34*fb1b10abSAndroid Build Coastguard Worker // Use getauxval() when targeting (64-bit) Android with API level >= 18. 35*fb1b10abSAndroid Build Coastguard Worker // getauxval() is supported since Android API level 18 (Android 4.3.) 36*fb1b10abSAndroid Build Coastguard Worker // First Android version with 64-bit support was Android 5.x (API level 21). 37*fb1b10abSAndroid Build Coastguard Worker #include <cpu-features.h> 38*fb1b10abSAndroid Build Coastguard Worker #endif 39*fb1b10abSAndroid Build Coastguard Worker arm_cpu_env_flags(int * flags)40*fb1b10abSAndroid Build Coastguard Workerstatic INLINE int arm_cpu_env_flags(int *flags) { 41*fb1b10abSAndroid Build Coastguard Worker const char *env = getenv("VPX_SIMD_CAPS"); 42*fb1b10abSAndroid Build Coastguard Worker if (env && *env) { 43*fb1b10abSAndroid Build Coastguard Worker *flags = (int)strtol(env, NULL, 0); 44*fb1b10abSAndroid Build Coastguard Worker return 1; 45*fb1b10abSAndroid Build Coastguard Worker } 46*fb1b10abSAndroid Build Coastguard Worker return 0; 47*fb1b10abSAndroid Build Coastguard Worker } 48*fb1b10abSAndroid Build Coastguard Worker arm_cpu_env_mask(void)49*fb1b10abSAndroid Build Coastguard Workerstatic INLINE int arm_cpu_env_mask(void) { 50*fb1b10abSAndroid Build Coastguard Worker const char *env = getenv("VPX_SIMD_CAPS_MASK"); 51*fb1b10abSAndroid Build Coastguard Worker return env && *env ? (int)strtol(env, NULL, 0) : ~0; 52*fb1b10abSAndroid Build Coastguard Worker } 53