blob: c2428d53db4ab8a94fb03cb581fc2f86516cfff1 [file] [log] [blame]
# Copyright (c) 2020 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/chip.gni")
import("//build_overrides/mbedtls.gni")
import("//build_overrides/nlassert.gni")
import("//build_overrides/nlio.gni")
import("//build_overrides/nlunit_test.gni")
import("//build_overrides/pigweed.gni")
# This build file should not be used in superproject builds.
assert(chip_root == "//")
import("${chip_root}/build/chip/tests.gni")
import("${chip_root}/build/chip/tools.gni")
if (current_toolchain != "${dir_pw_toolchain}/dummy:dummy") {
declare_args() {
chip_enable_python_modules = true
}
# This is a real toolchain. Build CHIP.
group("default") {
deps = [ ":all" ]
}
group("all") {
deps = [
"${chip_root}/src/app",
"${chip_root}/src/ble",
"${chip_root}/src/controller",
"${chip_root}/src/crypto",
"${chip_root}/src/inet",
"${chip_root}/src/lib",
"${chip_root}/src/lib/core",
"${chip_root}/src/lib/shell",
"${chip_root}/src/lib/support",
"${chip_root}/src/lwip:all",
"${chip_root}/src/setup_payload",
"${chip_root}/src/system",
"${chip_root}/src/transport",
"${mbedtls_root}:mbedtls",
"${nlassert_root}:nlassert",
"${nlio_root}:nlio",
"${nlunit_test_root}:nlunit-test",
]
# Temporary until RNG issue sorted out
if (current_os != "android") {
deps += [ "${chip_root}/src/lib/message" ]
}
if (chip_build_tests) {
deps += [ "//src:tests" ]
}
if (chip_build_tools) {
deps += [
"${chip_root}/examples/shell",
"${chip_root}/src/qrcodetool",
"${chip_root}/src/setup_payload",
]
if (chip_enable_python_modules) {
deps += [ "${chip_root}/src/controller/python" ]
}
}
if (current_os == "android") {
deps += [
"${chip_root}/src/controller/java",
"${chip_root}/src/setup_payload/java",
]
}
}
group("check") {
if (chip_link_tests) {
deps = [ "//src:tests_run" ]
}
}
} else {
# This is the unified build. Configure various real toolchains.
import("${chip_root}/build/chip/chip_build.gni")
declare_args() {
# Set this to false to disable all builds by default.
enable_default_builds = true
# Enable building for Android.
enable_android_builds = false
# Set this to true to enable nRF5 builds by default.
enable_nrf5_builds = false
# Set this to true to enable efr32 builds by default.
enable_efr32_builds = false
# Set this to true to enable qpg6100 builds by default.
enable_qpg6100_builds = false
}
declare_args() {
# Enable building chip with clang.
enable_host_clang_build = enable_default_builds
# Enable building chip with gcc.
enable_host_gcc_build = enable_default_builds
# Enable building chip with gcc & mbedtls.
enable_host_gcc_mbedtls_build = enable_default_builds
# Build the chip-tool example.
enable_standalone_chip_tool_build = enable_default_builds
# Build the shell example.
enable_standalone_shell_build = enable_default_builds
# Build the nRF5 lock app example.
enable_nrf5_lock_app_build = enable_nrf5_builds
# Build the nRF5 lighting app example.
enable_nrf5_lighting_app_build = enable_nrf5_builds
# Build the nRF5 pigweed app example.
enable_nrf5_pigweed_app_build = enable_nrf5_builds
# Build the efr32 lock app example.
enable_efr32_lock_app_build = enable_efr32_builds
# Build the qpg6100 lock app example.
enable_qpg6100_lock_app_build = enable_qpg6100_builds
# Build the efr32 lighting app example.
enable_efr32_lighting_app_build = enable_efr32_builds
}
chip_build("host_clang") {
toolchain = "//build/toolchain/host:${host_os}_${host_cpu}_clang"
}
chip_build("host_gcc") {
toolchain = "//build/toolchain/host:${host_os}_${host_cpu}_gcc"
}
chip_build("host_gcc_mbedtls") {
toolchain = "${chip_root}/config/mbedtls/toolchain:${host_os}_${host_cpu}_gcc_mbedtls"
}
if (enable_android_builds) {
chip_build("android_arm") {
toolchain = "//build/toolchain/android:android_arm"
}
chip_build("android_arm64") {
toolchain = "//build/toolchain/android:android_arm64"
}
chip_build("android_x64") {
toolchain = "//build/toolchain/android:android_x64"
}
chip_build("android_x86") {
toolchain = "//build/toolchain/android:android_x86"
}
}
standalone_toolchain = "${chip_root}/config/standalone/toolchain:standalone"
group("standalone_chip_tool") {
deps = [ "${chip_root}/examples/chip-tool(${standalone_toolchain})" ]
}
group("standalone_shell") {
deps = [ "${chip_root}/examples/shell(${standalone_toolchain})" ]
}
if (enable_nrf5_lock_app_build) {
group("nrf5_lock_app") {
deps = [ "${chip_root}/examples/lock-app/nrf5(${chip_root}/config/nrf5/toolchain:nrf5_lock_app)" ]
}
}
if (enable_nrf5_lighting_app_build) {
group("nrf5_lighting_app") {
deps = [ "${chip_root}/examples/lighting-app/nrf5(${chip_root}/config/nrf5/toolchain:nrf5_lighting_app)" ]
}
}
if (enable_nrf5_pigweed_app_build) {
group("nrf5_pigweed_app") {
deps = [ "${chip_root}/examples/pigweed-app/nrf5(${chip_root}/config/nrf5/toolchain:nrf5_pigweed_app)" ]
}
}
if (enable_efr32_lock_app_build) {
group("efr32_lock_app") {
deps = [ "${chip_root}/examples/lock-app/efr32(${chip_root}/config/efr32/toolchain:efr32_lock_app)" ]
}
}
if (enable_qpg6100_lock_app_build) {
group("qpg6100_lock_app") {
deps = [ "${chip_root}/examples/lock-app/qpg6100(${chip_root}/config/qpg6100/toolchain:qpg6100_lock_app)" ]
}
}
if (enable_efr32_lighting_app_build) {
group("efr32_lighting_app") {
deps = [ "${chip_root}/examples/lighting-app/efr32(${chip_root}/config/efr32/toolchain:efr32_lighting_app)" ]
}
}
group("default") {
deps = []
if (enable_host_clang_build) {
deps += [ ":all_host_clang" ]
}
if (enable_host_gcc_build) {
deps += [ ":all_host_gcc" ]
}
if (enable_host_gcc_mbedtls_build) {
deps += [ ":all_host_gcc_mbedtls" ]
}
if (enable_android_builds) {
deps += [
":all_android_arm",
":all_android_arm64",
":all_android_x64",
":all_android_x86",
]
}
if (enable_standalone_chip_tool_build) {
deps += [ ":standalone_chip_tool" ]
}
if (enable_standalone_shell_build) {
deps += [ ":standalone_shell" ]
}
if (enable_nrf5_lock_app_build) {
deps += [ ":nrf5_lock_app" ]
}
if (enable_nrf5_lighting_app_build) {
deps += [ ":nrf5_lighting_app" ]
}
if (enable_nrf5_pigweed_app_build) {
deps += [ ":nrf5_pigweed_app" ]
}
if (enable_efr32_lock_app_build) {
deps += [ ":efr32_lock_app" ]
}
}
group("check") {
deps = []
if (enable_host_clang_build) {
deps += [ ":check_host_clang" ]
}
if (enable_host_gcc_build) {
deps += [ ":check_host_gcc" ]
}
if (enable_host_gcc_mbedtls_build) {
deps += [ ":check_host_gcc_mbedtls" ]
}
}
}