Skip to content

Commit

Permalink
Merge "Fix default behavior for API level clamping." into snap-temp-L…
Browse files Browse the repository at this point in the history
…32800000951275450
  • Loading branch information
Android Build Coastguard Worker authored and Gerrit Code Review committed Sep 24, 2021
2 parents a1d397e + f0a9e74 commit 163b8cf
Show file tree
Hide file tree
Showing 6 changed files with 74 additions and 2 deletions.
3 changes: 1 addition & 2 deletions build/cmake/android.toolchain.cmake
Original file line number Diff line number Diff line change
Expand Up @@ -167,8 +167,7 @@ elseif(ANDROID_TOOLCHAIN STREQUAL gcc)
endif()

include(${CMAKE_ANDROID_NDK}/build/cmake/adjust_api_level.cmake)
adjust_api_level(${ANDROID_PLATFORM} CMAKE_SYSTEM_VERSION)
message(STATUS "CMAKE_SYSTEM_VERSION=${CMAKE_SYSTEM_VERSION}")
adjust_api_level("${ANDROID_PLATFORM}" CMAKE_SYSTEM_VERSION)

if(NOT DEFINED CMAKE_ANDROID_STL_TYPE AND DEFINED ANDROID_STL)
set(CMAKE_ANDROID_STL_TYPE ${ANDROID_STL})
Expand Down
Empty file.
4 changes: 4 additions & 0 deletions tests/build/cmake_toolchain_defaults/project/CMakeLists.txt
Original file line number Diff line number Diff line change
@@ -0,0 +1,4 @@
cmake_minimum_required(VERSION 3.6)
project(ToolchainDefaultsTest CXX)

add_library(foo SHARED foo.cpp)
8 changes: 8 additions & 0 deletions tests/build/cmake_toolchain_defaults/project/foo.cpp
Original file line number Diff line number Diff line change
@@ -0,0 +1,8 @@
#if !defined(__ARM_ARCH_7A__)
#error ABI did not default to armeabi-v7a
#endif

// Update this whenever we raise the minimum API level in the NDK.
#if __ANDROID_API__ != 19
#error API level did not default to 19
#endif
51 changes: 51 additions & 0 deletions tests/build/cmake_toolchain_defaults/test.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,51 @@
#
# Copyright (C) 2021 The Android Open Source Project
#
# Licensed under the Apache License, Version 2.0 (the "License");
# you may not use this file except in compliance with the License.
# You may obtain a copy of the License at
#
# http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS,
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
# See the License for the specific language governing permissions and
# limitations under the License.
#
"""Check that the default CMake toolchain behavior works."""
from pathlib import Path
import subprocess

from ndk.cmake import find_cmake, find_ninja
from ndk.test.spec import BuildConfiguration, CMakeToolchainFile


def run_test(ndk_path: str, config: BuildConfiguration) -> tuple[bool, str]:
"""Check that the default CMake toolchain behavior works.
All our regular CMake tests pass the API level and ABI explicitly. This
test checks that the defaults (armeabi-v7a, minimum supported API level)
work.
"""
cmake = find_cmake()
ninja = find_ninja()
toolchain_path = Path(ndk_path) / 'build/cmake/android.toolchain.cmake'
project_path = 'project'
if config.toolchain_file is CMakeToolchainFile.Legacy:
toolchain_mode = 'ON'
else:
toolchain_mode = 'OFF'
cmake_cmd = [
str(cmake),
f'-DCMAKE_TOOLCHAIN_FILE={toolchain_path}',
f'-DCMAKE_MAKE_PROGRAM={ninja}',
f'-DANDROID_USE_LEGACY_TOOLCHAIN_FILE={toolchain_mode}',
'-GNinja',
]
result = subprocess.run(cmake_cmd,
check=False,
cwd=project_path,
capture_output=True,
text=True)
return result.returncode == 0, result.stdout
10 changes: 10 additions & 0 deletions tests/build/cmake_toolchain_defaults/test_config.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,10 @@
from typing import Optional

from ndk.abis import LP32_ABIS
from ndk.test.types import Test


def build_unsupported(test: Test) -> Optional[str]:
if test.config.abi in LP32_ABIS:
return test.config.abi
return None

0 comments on commit 163b8cf

Please sign in to comment.