blob: 0ead05ccfc55f190067dc179216edb1fe33dde75 [file] [log] [blame]
# Copyright (c) 2020-2021 Project CHIP Authors
#
# 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.
import("//build_overrides/build.gni")
import("//build_overrides/chip.gni")
import("//build_overrides/nlassert.gni")
import("//build_overrides/nlfaultinjection.gni")
import("//build_overrides/nlio.gni")
import("//build_overrides/nlunit_test.gni")
import("//build_overrides/pigweed.gni")
import("$dir_pw_build/target_types.gni")
import("${chip_root}/build/chip/chip_version.gni")
import("${chip_root}/build/chip/java/config.gni")
import("${chip_root}/build/chip/tests.gni")
import("${chip_root}/src/lib/core/core.gni")
declare_args() {
# Set to true to run the PersistentStorageDelegate API compliance audit
chip_support_enable_storage_api_audit = false
# Set to true to run the PersistentStorageDelegate load test audit
chip_support_enable_storage_load_test_audit = false
}
config("storage_audit_config") {
defines = []
if (chip_support_enable_storage_api_audit) {
defines += [ "CHIP_SUPPORT_ENABLE_STORAGE_API_AUDIT" ]
}
if (chip_support_enable_storage_load_test_audit) {
defines += [ "CHIP_SUPPORT_ENABLE_STORAGE_LOAD_TEST_AUDIT" ]
}
}
if (chip_pw_tokenizer_logging) {
import("//build_overrides/pigweed.gni")
}
action("gen_chip_version") {
script = "${chip_root}/scripts/gen_chip_version.py"
version_file = "${root_gen_dir}/include/CHIPVersion.h"
outputs = [ version_file ]
args = [
"--output_file=" + rebase_path(version_file, root_build_dir),
"--chip_major=${chip_version_major}",
"--chip_minor=${chip_version_minor}",
"--chip_patch=${chip_version_patch}",
"--chip_extra=${chip_version_extra}",
]
}
source_set("logging_constants") {
sources = [ "logging/Constants.h" ]
}
source_set("attributes") {
sources = [
"DLLUtil.h",
"EnforceFormat.h",
]
}
source_set("verifymacros_no_logging") {
sources = [ "VerificationMacrosNoLogging.h" ]
public_deps = [ "${nlassert_root}:nlassert" ]
}
source_set("safeint") {
sources = [ "SafeInt.h" ]
}
source_set("memory") {
sources = [
"CHIPMem.cpp",
"CHIPMem.h",
"CHIPPlatformMemory.cpp",
"CHIPPlatformMemory.h",
]
if (chip_config_memory_management == "simple") {
sources += [ "CHIPMem-Simple.cpp" ]
}
if (chip_config_memory_management == "malloc") {
sources += [ "CHIPMem-Malloc.cpp" ]
}
public_deps = [ "${chip_root}/src/lib/core:error" ]
deps = [
":safeint",
":verifymacros_no_logging",
"${chip_root}/src/lib/core:chip_config_header",
]
}
source_set("text_only_logging") {
sources = [
"logging/TextOnlyLogging.cpp",
"logging/TextOnlyLogging.h",
]
public_deps = [
":attributes",
":logging_constants",
":verifymacros_no_logging",
"${chip_root}/src/lib/core:chip_config_header",
]
if (chip_pw_tokenizer_logging) {
public_deps += [ "${dir_pw_tokenizer}" ]
}
deps = [
":memory",
"${chip_root}/src/lib/core:chip_config_header",
"${chip_root}/src/platform/logging:headers",
]
}
source_set("verifymacros") {
sources = [ "CodeUtils.h" ]
public_deps = [
":attributes",
":text_only_logging",
":verifymacros_no_logging",
"${chip_root}/src/lib/core:chip_config_header",
"${chip_root}/src/lib/core:error",
"${nlassert_root}:nlassert",
]
}
source_set("span") {
sources = [ "Span.h" ]
public_deps = [
":verifymacros",
"${chip_root}/src/lib/core:types",
]
}
source_set("chip_version_header") {
sources = get_target_outputs(":gen_chip_version")
deps = [ ":gen_chip_version" ]
}
static_library("support") {
output_name = "libSupportLayer"
sources = [
"Base64.cpp",
"Base64.h",
"BitFlags.h",
"BitMask.h",
"BufferReader.cpp",
"BufferReader.h",
"BufferWriter.cpp",
"BufferWriter.h",
"BytesCircularBuffer.cpp",
"BytesCircularBuffer.h",
"BytesToHex.cpp",
"BytesToHex.h",
"CHIPArgParser.cpp",
"CHIPCounter.h",
"CHIPMemString.h",
"DLLUtil.h",
"DefaultStorageKeyAllocator.h",
"Defer.h",
"FibonacciUtils.cpp",
"FibonacciUtils.h",
"FixedBufferAllocator.cpp",
"FixedBufferAllocator.h",
"IniEscaping.cpp",
"IniEscaping.h",
"Iterators.h",
"LifetimePersistedCounter.h",
"ObjectLifeCycle.h",
"PersistedCounter.h",
"PersistentStorageAudit.cpp",
"PersistentStorageAudit.h",
"PersistentStorageMacros.h",
"Pool.cpp",
"Pool.h",
"PrivateHeap.cpp",
"PrivateHeap.h",
"ReferenceCountedHandle.h",
"Scoped.h",
"SerializableIntegerSet.cpp",
"SerializableIntegerSet.h",
"SetupDiscriminator.h",
"SortUtils.h",
"StateMachine.h",
"StringBuilder.cpp",
"StringBuilder.h",
"StringSplitter.h",
"ThreadOperationalDataset.cpp",
"ThreadOperationalDataset.h",
"TimeUtils.cpp",
"TimeUtils.h",
"Variant.h",
"ZclString.cpp",
"ZclString.h",
"logging/BinaryLogging.cpp",
"logging/BinaryLogging.h",
"logging/CHIPLogging.h",
"utf8.cpp",
"utf8.h",
"verhoeff/Verhoeff.cpp",
"verhoeff/Verhoeff.h",
"verhoeff/Verhoeff10.cpp",
]
if (current_os == "android" || matter_enable_java_compilation) {
if (matter_enable_java_compilation) {
include_dirs = java_matter_controller_dependent_paths
}
# added JNI helper on android
sources += [
"CHIPJNIError.h",
"JniReferences.cpp",
"JniReferences.h",
"JniTypeWrappers.h",
]
}
libs = []
cflags = [ "-Wconversion" ]
public_deps = [
":attributes",
":chip_version_header",
":logging_constants",
":memory",
":safeint",
":span",
":text_only_logging",
":verifymacros",
":verifymacros_no_logging",
"${chip_root}/src/lib/core:chip_config_header",
"${chip_root}/src/lib/core:error",
"${chip_root}/src/lib/core:types",
"${chip_root}/src/platform:platform_config_header",
"${chip_root}/src/system:system_config_header",
"${nlassert_root}:nlassert",
"${nlio_root}:nlio",
]
# These are needed because we include CHIPCore.h, which uses config
# options for src/ble and src/inet, however we cannot depend on those
# directly as such a dependency is cyclic.
public_deps += [
"${chip_root}/src/ble:ble_config_header",
"${chip_root}/src/inet:inet_config_header",
]
# Android has no 'platform' that provides logging
if (current_os == "android") {
public_deps += [ "${chip_root}/src/platform/logging:android" ]
}
if (current_os == "mac" || current_os == "ios") {
public_deps += [ "${chip_root}/src/platform/Darwin:logging" ]
}
public_configs = [
"${chip_root}/src:includes",
"${chip_root}/src/system:system_config",
":storage_audit_config",
]
if (chip_with_nlfaultinjection) {
sources += [
"CHIPFaultInjection.cpp",
"CHIPFaultInjection.h",
]
public_deps += [ "${nlfaultinjection_root}:nlfaultinjection" ]
}
if (chip_pw_tokenizer_logging) {
public_deps += [ "${dir_pw_tokenizer}" ]
}
if (chip_config_memory_debug_dmalloc) {
libs += [ "dmallocthcxx" ]
}
}
static_library("test_utils") {
output_name = "libTestUtils"
output_dir = "${root_out_dir}/lib"
deps = [ "${chip_root}/src/platform" ]
sources = [
"UnitTestUtils.cpp",
"UnitTestUtils.h",
]
}
pw_static_library("pw_tests_wrapper") {
if (chip_device_platform == "esp32") {
complete_static_lib = true
}
output_name = "libPWTestsWrapper"
output_dir = "${root_out_dir}/lib"
public_deps = [
"$dir_pw_log:impl",
"$dir_pw_unit_test",
]
sources = [
"UnitTest.cpp",
"UnitTest.h",
]
}
static_library("testing_nlunit") {
output_name = "libSupportTesting"
output_dir = "${root_out_dir}/lib"
sources = [
"UnitTestExtendedAssertions.h",
"UnitTestRegistration.cpp",
"UnitTestRegistration.h",
]
public_deps = [
":support",
"${chip_root}/src/lib/core",
"${chip_root}/src/platform",
"${nlassert_root}:nlassert",
"${nlunit_test_root}:nlunit-test",
]
}