/* * Copyright (C) 2019 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. */ cc_defaults { name: "linkerconfig_defaults", cflags: [ "-Wall", "-Werror", "-Wextra", ], defaults: ["libapexutil-deps"], static_libs: [ "libapexutil", "libbase", "liblog", ], host_supported: true, } cc_defaults { name: "linkerconfig_test_defaults", defaults: ["linkerconfig_defaults"], cflags: [ "-g", "-Wunused", ], test_suites: ["general-tests"], } cc_library_static { name: "linkerconfig_modules", defaults: [ "linkerconfig_defaults" ], export_include_dirs: [ "modules/include" ], srcs: [ "modules/*.cc", ], } cc_library_static { name: "linkerconfig_contents", defaults: [ "linkerconfig_defaults" ], export_include_dirs: [ "contents/include" ], static_libs: [ "linkerconfig_modules", ], srcs: [ "contents/namespace/*.cc", "contents/section/*.cc", "contents/configuration/*.cc", "contents/context/*.cc", "contents/common/*.cc", ], } cc_library_static { name: "linkerconfig_generator", defaults : [ "linkerconfig_defaults" ], export_include_dirs: [ "generator/include" ], static_libs: [ "linkerconfig_modules", "linkerconfig_contents", "libc++fs", ], srcs: [ "generator/*.cc", ], } cc_binary { name: "linkerconfig", defaults: [ "linkerconfig_defaults" ], static_libs: [ "linkerconfig_modules", "linkerconfig_contents", "linkerconfig_generator", ], srcs: [ "main.cc", ], static_executable: true, required: [ // files from /system/etc "sanitizer.libraries.txt", "vndkcorevariant.libraries.txt", // Note that even thought linkerconfig requires at least one version of VNDK APEXes, // we can't list it here because the exact version is unknown at build-time. It is decided // at runtime according to ro.vndk.version (or ro.product.vndk.version) ], } cc_test { name: "linkerconfig_modules_unittest", defaults: [ "linkerconfig_test_defaults" ], srcs: [ "modules/tests/*_test.cc", ], static_libs: [ "libgmock", "linkerconfig_modules", ], } cc_test { name: "linkerconfig_backward_compatibility_test", defaults: [ "linkerconfig_test_defaults" ], srcs: [ "contents/tests/backward_compatibility/*_test.cc", ], static_libs: [ "linkerconfig_modules", "linkerconfig_contents", ], } cc_test { name: "linkerconfig_generator_unittest", defaults: [ "linkerconfig_test_defaults" ], srcs: [ "generator/tests/*_test.cc", ], static_libs: [ "linkerconfig_modules", "linkerconfig_contents", "linkerconfig_generator", ], data: [ "generator/tests/data/*.txt", ], } cc_test { name: "linkerconfig_contents_fulltest", defaults: [ "linkerconfig_test_defaults" ], local_include_dirs: [ "contents/tests/configuration/include", ], srcs: [ "contents/tests/configuration/*_test.cc", ], static_libs: [ "linkerconfig_modules", "linkerconfig_contents", ], } prebuilt_etc { name: "ld.config.recovery.txt", recovery: true, filename: "ld.config.txt", src: ":generate_recovery_linker_config", } genrule { name: "generate_recovery_linker_config", recovery: true, out: ["ld.config.txt"], tools: ["linkerconfig"], cmd: "$(location linkerconfig) --recovery --target $(genDir)", }