diff options
author | Danny Baumann <dannybaumann@web.de> | 2018-08-29 11:21:52 +0200 |
---|---|---|
committer | Michael Bestas <mkbestas@lineageos.org> | 2020-12-08 17:39:59 +0200 |
commit | fc1fe32d871e001014c05bd6cd4a41e915d95dad (patch) | |
tree | 84429eb6e84a204e307779403dd271eaa214141c | |
parent | f935cf52b8b69a2f7f550510dc71f9af0ebbde84 (diff) |
Implement per-process target SDK version override.
Change-Id: I65bbdbe96541d8aacdd4de125cdb9c1435129413
-rw-r--r-- | linker/Android.bp | 3 | ||||
-rw-r--r-- | linker/linker.cpp | 13 |
2 files changed, 15 insertions, 1 deletions
diff --git a/linker/Android.bp b/linker/Android.bp index 435ae8cf7..5f8367ee9 100644 --- a/linker/Android.bp +++ b/linker/Android.bp @@ -92,6 +92,9 @@ cc_defaults { cppflags: ["-DUSE_LD_CONFIG_FILE"], }, lineage: { + target_process_sdk_version_override: { + cppflags: ["-DSDK_VERSION_OVERRIDES=\"%s\""], + }, target_shim_libs: { cppflags: ["-DLD_SHIM_LIBS=\"%s\""], }, diff --git a/linker/linker.cpp b/linker/linker.cpp index 25cfd300e..c87118b9f 100644 --- a/linker/linker.cpp +++ b/linker/linker.cpp @@ -3601,7 +3601,18 @@ std::vector<android_namespace_t*> init_default_namespaces(const char* executable } } - set_application_target_sdk_version(config->target_sdk_version()); + uint32_t target_sdk = config->target_sdk_version(); +#ifdef SDK_VERSION_OVERRIDES + for (const auto& entry : android::base::Split(SDK_VERSION_OVERRIDES, " ")) { + auto splitted = android::base::Split(entry, "="); + if (splitted.size() == 2 && splitted[0] == executable_path) { + target_sdk = static_cast<uint32_t>(std::stoul(splitted[1])); + break; + } + } + DEBUG("Target SDK for %s = %d", executable_path, target_sdk); +#endif + set_application_target_sdk_version(target_sdk); std::vector<android_namespace_t*> created_namespaces; created_namespaces.reserve(namespaces.size()); |