Disable shared version of libtetheringflags
- since the flags are readonly there is no real content to this,
and it should be statically linked for compile/link time optimization
(which should basically optimize the entire library out)
Use C++ magic to compile time verify the macro and flag are in sync.
The way this works:
constexpr auto useLibBpf = COM_ANDROID_TETHERING_READONLY_FLAGS_USE_LIBBPF;
^ this basically requires the macro to resolve to true/false, so that 'auto' resolves to 'const bool'
static_assert(std::is_same<decltype(useLibBpf), const bool>::value, "useLibBpf must be a boolean.");
^ which we check here
static_assert(useLibBpf == com::android::tethering::readonly:🎏:use_libbpf(), "useLibBpf flag mismatch");
^ and this then requires the macro and flag to be identical *and* compile time known
Test: TreeHugger
Flag: EXEMPT PURE_REFACTOR
Signed-off-by: Maciej Żenczykowski <maze@google.com>
Change-Id: Id5cd8c7d91b424765d6f469806434b3e9587f074
190 lines
6 KiB
Text
190 lines
6 KiB
Text
//
|
|
// Copyright (C) 2022 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.
|
|
//
|
|
|
|
package {
|
|
default_team: "trendy_team_fwk_core_networking",
|
|
// See: http://go/android-license-faq
|
|
default_applicable_licenses: ["Android-Apache-2.0"],
|
|
}
|
|
|
|
aconfig_declarations {
|
|
name: "tethering.beta.test.flags",
|
|
package: "com.android.tethering.beta.test",
|
|
container: "com.android.tethering",
|
|
srcs: ["mainline_beta_end_to_end_test.aconfig"],
|
|
}
|
|
|
|
java_aconfig_library {
|
|
name: "com.android.tethering.beta.test.flags-aconfig-java",
|
|
aconfig_declarations: "tethering.beta.test.flags",
|
|
defaults: ["framework-minus-apex-aconfig-java-defaults"],
|
|
min_sdk_version: "30",
|
|
apex_available: [
|
|
"com.android.tethering",
|
|
],
|
|
}
|
|
|
|
aconfig_declarations {
|
|
name: "tethering.mainline.beta.flags",
|
|
package: "com.android.tethering.mainline.beta",
|
|
container: "com.android.tethering",
|
|
srcs: ["mainline_beta.aconfig"],
|
|
}
|
|
|
|
java_aconfig_library {
|
|
name: "com.android.tethering.mainline.beta.flags-aconfig-java",
|
|
aconfig_declarations: "tethering.mainline.beta.flags",
|
|
defaults: ["framework-minus-apex-aconfig-java-defaults"],
|
|
min_sdk_version: "30",
|
|
apex_available: [
|
|
"com.android.tethering",
|
|
],
|
|
}
|
|
|
|
aconfig_declarations {
|
|
name: "tethering.readonly.flags",
|
|
package: "com.android.tethering.readonly.flags",
|
|
container: "com.android.tethering",
|
|
srcs: ["mainline_beta_readonly.aconfig"],
|
|
}
|
|
|
|
cc_aconfig_library {
|
|
name: "libtetheringflags",
|
|
aconfig_declarations: "tethering.readonly.flags",
|
|
mode: "force-read-only",
|
|
shared: { enabled: false },
|
|
min_sdk_version: "30",
|
|
apex_available: [
|
|
"com.android.tethering",
|
|
],
|
|
}
|
|
|
|
aconfig_declarations {
|
|
name: "com.android.net.flags-aconfig",
|
|
package: "com.android.net.flags",
|
|
exportable: true,
|
|
container: "com.android.tethering",
|
|
srcs: ["flags.aconfig"],
|
|
visibility: ["//packages/modules/Connectivity:__subpackages__"],
|
|
}
|
|
|
|
java_aconfig_library {
|
|
name: "com.android.net.flags-aconfig-java",
|
|
aconfig_declarations: "com.android.net.flags-aconfig",
|
|
defaults: ["framework-minus-apex-aconfig-java-defaults"],
|
|
min_sdk_version: "30",
|
|
apex_available: [
|
|
"com.android.tethering",
|
|
],
|
|
}
|
|
|
|
// This library MUST NOT be available to platform. This is because if the
|
|
// platform depends on a flag, it will not be able to delete that flag until
|
|
// that platform version is no longer supported by mainline. Additionally,
|
|
// there is no any safety mechanism that prevents the module from
|
|
// deleting the flag by mistake, regressing on previous platform versions.
|
|
java_aconfig_library {
|
|
name: "com.android.net.flags-aconfig-java-export",
|
|
aconfig_declarations: "com.android.net.flags-aconfig",
|
|
defaults: ["framework-minus-apex-aconfig-java-defaults"],
|
|
min_sdk_version: "30",
|
|
apex_available: [
|
|
"com.android.wifi",
|
|
],
|
|
mode: "exported",
|
|
}
|
|
|
|
aconfig_declarations {
|
|
name: "com.android.net.thread.flags-aconfig",
|
|
package: "com.android.net.thread.flags",
|
|
container: "com.android.tethering",
|
|
srcs: ["thread_flags.aconfig"],
|
|
visibility: ["//packages/modules/Connectivity:__subpackages__"],
|
|
}
|
|
|
|
java_aconfig_library {
|
|
name: "com.android.net.thread.flags-aconfig-java",
|
|
aconfig_declarations: "com.android.net.thread.flags-aconfig",
|
|
defaults: ["framework-minus-apex-aconfig-java-defaults"],
|
|
min_sdk_version: "30",
|
|
apex_available: [
|
|
"com.android.tethering",
|
|
],
|
|
}
|
|
|
|
aconfig_declarations {
|
|
name: "nearby_flags",
|
|
package: "com.android.nearby.flags",
|
|
container: "com.android.tethering",
|
|
srcs: ["nearby_flags.aconfig"],
|
|
visibility: ["//packages/modules/Connectivity:__subpackages__"],
|
|
}
|
|
|
|
java_aconfig_library {
|
|
name: "com.android.nearby.flags-aconfig-java",
|
|
aconfig_declarations: "nearby_flags",
|
|
defaults: ["framework-minus-apex-aconfig-java-defaults"],
|
|
min_sdk_version: "30",
|
|
apex_available: [
|
|
"com.android.tethering",
|
|
],
|
|
}
|
|
|
|
aconfig_declarations {
|
|
name: "com.android.networksecurity.flags-aconfig",
|
|
package: "com.android.net.ct.flags",
|
|
container: "com.android.tethering",
|
|
srcs: ["networksecurity_flags.aconfig"],
|
|
visibility: ["//packages/modules/Connectivity:__subpackages__"],
|
|
}
|
|
|
|
java_aconfig_library {
|
|
name: "networksecurity_flags_java_lib",
|
|
aconfig_declarations: "com.android.networksecurity.flags-aconfig",
|
|
min_sdk_version: "30",
|
|
defaults: ["framework-minus-apex-aconfig-java-defaults"],
|
|
apex_available: ["com.android.tethering"],
|
|
visibility: ["//packages/modules/Connectivity:__subpackages__"],
|
|
}
|
|
|
|
// The library requires the final artifact to contain net-utils-device-common-struct-base.
|
|
java_library {
|
|
name: "connectivity-net-module-utils-bpf",
|
|
srcs: [
|
|
"src/com/android/net/module/util/bpf/*.java",
|
|
],
|
|
sdk_version: "module_current",
|
|
min_sdk_version: "30",
|
|
visibility: [
|
|
// Do not add any lib. This library is only shared inside connectivity module
|
|
// and its tests.
|
|
"//packages/modules/Connectivity:__subpackages__",
|
|
],
|
|
libs: [
|
|
"androidx.annotation_annotation",
|
|
"framework-connectivity.stubs.module_lib",
|
|
// For libraries which are statically linked in framework-connectivity, do not
|
|
// statically link here because callers of this library might already have a static
|
|
// version linked.
|
|
"net-utils-device-common-struct-base",
|
|
],
|
|
apex_available: [
|
|
"com.android.tethering",
|
|
],
|
|
lint: {
|
|
strict_updatability_linting: true,
|
|
},
|
|
}
|