| # Copyright (c) 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/p6.gni") |
| import("${p6_sdk_build_root}/p6_sdk.gni") |
| |
| declare_args() { |
| # Build target to use for p6 SDK. Use this to set global SDK defines. |
| p6_target_project = "" |
| } |
| |
| assert(p6_target_project != "", "p6_target_project must be specified") |
| |
| # Add includes, cflags, asmflags, etc in config |
| config("p6_sdk_config") { |
| # Pull out includes from generated json |
| # Treat these includes as system includes, so warnings in them are not fatal. |
| _system_include_dirs = [] |
| foreach(include_dir, mtb_json.includes) { |
| # Strip off leading -I part |
| include_dir = string_replace(include_dir, "-I", "", 1) |
| |
| # Path is relative to SDK |
| include_dir = "${p6_sdk_root}/${include_dir}" |
| |
| _system_include_dirs += [ include_dir ] |
| } |
| |
| cflags = [] |
| foreach(include_dir, _system_include_dirs) { |
| cflags += [ "-isystem" + rebase_path(include_dir, root_build_dir) ] |
| } |
| |
| # Also add project include path (passed in from project build) |
| proj_path = get_label_info(p6_target_project, "dir") |
| include_dirs = [ "${proj_path}/include" ] |
| |
| # Pull out defines from generated json |
| defines = [] |
| foreach(def, mtb_json.defines) { |
| # Strip off leading -D part |
| defines += [ string_replace(def, "-D", "", 1) ] |
| } |
| |
| # Pull out static libs (.a files) from generated json |
| libs = [] |
| foreach(lib, mtb_json.libs) { |
| # Path is relative to SDK |
| lib = "${p6_sdk_root}/${lib}" |
| |
| libs += [ lib ] |
| } |
| |
| cflags_c = mtb_json.cflags |
| cflags_cc = mtb_json.cxxflags |
| asmflags = mtb_json.asflags |
| ldflags = filter_exclude(mtb_json.ldflags, [ "-T*" ]) |
| |
| # Pull out linker flags with paths (-T flags) and make paths absolute |
| # OTA app provides it's own linker script |
| if (!chip_enable_ota_requestor) { |
| linker_script_flags = filter_include(mtb_json.ldflags, [ "-T*" ]) |
| foreach(linker_script, linker_script_flags) { |
| # Strip off leading -T part |
| linker_script = string_replace(linker_script, "-T", "", 1) |
| |
| # Path is relative to SDK |
| linker_script = "${p6_sdk_root}/${linker_script}" |
| |
| ldflags += [ "-T" + rebase_path(linker_script, root_build_dir) ] |
| } |
| } |
| |
| # --specs=nano.specs is getting added twice and causing compile issues so remove from cxx flags here. |
| cflags_c -= [ "--specs=nano.specs" ] |
| cflags_cc -= [ "--specs=nano.specs" ] |
| asmflags -= [ "--specs=nano.specs" ] |
| ldflags -= [ "--specs=nano.specs" ] |
| } |
| |
| group("p6_build") { |
| public_configs = [ ":p6_sdk_config" ] |
| public_deps = [ p6_target_project ] |
| } |