| # See Project CHIP LICENSE file for licensing information. |
| |
| import("//build_overrides/build.gni") |
| import("//build_overrides/chip.gni") |
| import("//build_overrides/pigweed.gni") |
| |
| import("${chip_root}/src/platform/device.gni") |
| |
| source_set("headers") { |
| public = [ "LogV.h" ] |
| } |
| |
| if (current_os == "android") { |
| static_library("android") { |
| sources = [ "impl/android/Logging.cpp" ] |
| deps = [ |
| ":headers", |
| "${chip_root}/src/lib/core:chip_config_header", |
| "${chip_root}/src/lib/support:attributes", |
| "${chip_root}/src/lib/support:logging_constants", |
| "${chip_root}/src/platform:platform_config_header", |
| "${chip_root}/src/platform/logging:headers", |
| ] |
| |
| libs = [ "log" ] |
| } |
| } |
| |
| # We need to reference the output file of ":stdio" at build time, |
| # but get_target_outputs() does not work for binary targets. As a |
| # workaround, define a reasonable path and make the target use it. |
| stdio_archive = "$root_out_dir/liblogging-stdio.a" |
| |
| static_library("stdio") { |
| if (chip_device_platform == "darwin") { |
| sources = [ "impl/stdio/darwin/Logging.cpp" ] |
| } else { |
| sources = [ "impl/stdio/Logging.cpp" ] |
| } |
| |
| deps = [ |
| ":headers", |
| "${chip_root}/src/lib/core:chip_config_header", |
| "${chip_root}/src/lib/support:attributes", |
| "${chip_root}/src/lib/support:logging_constants", |
| "${chip_root}/src/platform:platform_config_header", |
| "${chip_root}/src/platform/logging:headers", |
| ] |
| |
| # Ensure we end up with the expected output file name |
| output_dir = get_path_info(stdio_archive, "dir") |
| output_name = get_path_info(stdio_archive, "name") |
| output_extension = get_path_info(stdio_archive, "extension") |
| output_prefix_override = true |
| } |
| |
| # Depending on this target (via public_deps) pulls in the stdio |
| # logger and ensures it takes precendce over the platform backend. |
| group("force_stdio") { |
| deps = [ ":stdio" ] |
| public_configs = [ ":force_stdio_config" ] |
| } |
| |
| config("force_stdio_config") { |
| # Ensure the linker sees the stdio implementation first. This |
| # works because ldflags come before inputs on the command line. |
| ldflags = [ rebase_path(stdio_archive, root_build_dir) ] |
| } |