# Copyright 2020 Google LLC # # 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 # # https://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/pigweed.gni") import("$dir_pw_bloat/bloat.gni") import("$dir_pw_build/target_types.gni") import("$dir_pw_unit_test/test.gni") group("default") { deps = [ ":fuzzers(//toolchains:host_fuzz)", ":optimized_libs(//toolchains:host_optimized)", ":tests.run(//toolchains:host_debug)", ] } pw_source_set("cbor_writer") { public = [ "include/dice/cbor_writer.h", ] sources = [ "src/cbor_writer.c" ] } pw_source_set("cbor_reader") { public = [ "include/dice/cbor_reader.h", ] sources = [ "src/cbor_reader.c" ] } config("standalone_ops_config") { include_dirs = [ "//include/dice/config/standalone" ] } pw_static_library("dice_standalone") { public = [ "include/dice/dice.h", "include/dice/utils.h", ] sources = [ "src/clear_memory.c", "src/dice.c" ] all_dependent_configs = [ ":standalone_ops_config" ] } config("boringssl_ed25519_ops_config") { include_dirs = [ "//include/dice/config/boringssl_ed25519" ] } pw_static_library("dice_with_boringssl_ops") { public = [ "include/dice/dice.h", "include/dice/utils.h", ] sources = [ "src/boringssl_cert_op.c", "src/boringssl_hash_kdf_ops.c", "src/boringssl_ed25519_ops.c", "src/clear_memory.c", "src/dice.c", "src/utils.c", ] deps = [ "//third_party/boringssl:crypto", ] all_dependent_configs = [ ":boringssl_ed25519_ops_config" ] } config("mbedtls_ops_config") { include_dirs = [ "//include//dice/config/mbedtls_ecdsa_p256" ] } pw_static_library("dice_with_mbedtls_ops") { public = [ "include/dice/dice.h", "include/dice/utils.h", ] sources = [ "src/clear_memory.c", "src/dice.c", "src/mbedtls_ops.c", "src/utils.c", ] deps = [ "//third_party/mbedtls:mbedcrypto", ] all_dependent_configs = [ ":mbedtls_ops_config" ] } pw_static_library("dice_with_cbor_cert") { public = [ "include/dice/dice.h", "include/dice/utils.h", ] sources = [ "src/boringssl_hash_kdf_ops.c", "src/boringssl_ed25519_ops.c", "src/cbor_cert_op.c", "src/clear_memory.c", "src/dice.c", "src/utils.c", ] deps = [ ":cbor_writer", "//third_party/boringssl:crypto", ] all_dependent_configs = [ ":boringssl_ed25519_ops_config" ] } pw_static_library("dice_with_cbor_template_cert") { public = [ "include/dice/dice.h", "include/dice/utils.h", ] sources = [ "src/boringssl_hash_kdf_ops.c", "src/boringssl_ed25519_ops.c", "src/clear_memory.c", "src/dice.c", "src/template_cbor_cert_op.c", "src/utils.c", ] deps = [ "//third_party/boringssl:crypto", ] all_dependent_configs = [ ":boringssl_ed25519_ops_config" ] } pw_static_library("dice_with_x509_template_cert") { public = [ "include/dice/dice.h", "include/dice/utils.h", ] sources = [ "src/boringssl_hash_kdf_ops.c", "src/boringssl_ed25519_ops.c", "src/clear_memory.c", "src/dice.c", "src/template_cert_op.c", "src/utils.c", ] deps = [ "//third_party/boringssl:crypto", ] all_dependent_configs = [ ":boringssl_ed25519_ops_config" ] } pw_source_set("fuzzer") { sources = [ "src/fuzzer.cc" ] } pw_test("cbor_writer_test") { sources = [ "src/cbor_writer_test.cc" ] deps = [ ":cbor_writer", ] } pw_test("cbor_reader_test") { sources = [ "src/cbor_reader_test.cc" ] deps = [ ":cbor_reader", ] } pw_executable("cbor_writer_fuzzer") { sources = [ "src/cbor_writer_fuzzer.cc" ] deps = [ ":cbor_writer", ] } pw_executable("cbor_reader_fuzzer") { sources = [ "src/cbor_reader_fuzzer.cc" ] deps = [ ":cbor_reader", ] } pw_test("dice_test") { sources = [ "src/dice_test.cc" ] deps = [ ":dice_standalone", "//third_party/boringssl:crypto", ] } pw_test("boringssl_ops_test") { sources = [ "src/boringssl_ops_test.cc", "src/test_utils.cc", ] deps = [ ":dice_with_boringssl_ops", "//third_party/boringssl:crypto", "//third_party/cose-c:cose-c", "$dir_pw_string:pw_string", ] } pw_executable("boringssl_ops_fuzzer") { deps = [ ":dice_with_boringssl_ops", ":fuzzer", ] } pw_test("template_cert_op_test") { sources = [ "src/template_cert_op_test.cc", "src/test_utils.cc", ] deps = [ ":dice_with_x509_template_cert", "//third_party/boringssl:crypto", "//third_party/cose-c:cose-c", "$dir_pw_string:pw_string", ] } pw_executable("template_cert_op_fuzzer") { deps = [ ":dice_with_x509_template_cert", ":fuzzer", ] } pw_test("cbor_cert_op_test") { sources = [ "src/cbor_cert_op_test.cc", "src/test_utils.cc", ] deps = [ ":dice_with_cbor_cert", "//third_party/boringssl:crypto", "//third_party/cose-c:cose-c", "$dir_pw_string:pw_string", ] } pw_executable("cbor_cert_op_fuzzer") { deps = [ ":dice_with_cbor_cert", ":fuzzer", ] } pw_test("template_cbor_cert_op_test") { sources = [ "src/template_cbor_cert_op_test.cc", "src/test_utils.cc", ] deps = [ ":dice_with_cbor_template_cert", "//third_party/boringssl:crypto", "//third_party/cose-c:cose-c", "$dir_pw_string:pw_string", ] } pw_executable("template_cbor_cert_op_fuzzer") { deps = [ ":dice_with_cbor_template_cert", ":fuzzer", ] } pw_test("mbedtls_ops_test") { sources = [ "src/mbedtls_ops_test.cc", "src/test_utils.cc", ] deps = [ ":dice_with_mbedtls_ops", "//third_party/boringssl:crypto", "//third_party/cose-c:cose-c", "$dir_pw_string:pw_string", ] } pw_executable("mbedtls_ops_fuzzer") { deps = [ ":dice_with_mbedtls_ops", ":fuzzer", ] } pw_test_group("tests") { tests = [ ":boringssl_ops_test", ":cbor_cert_op_test", ":cbor_reader_test", ":cbor_writer_test", ":dice_test", ":mbedtls_ops_test", ":template_cbor_cert_op_test", ":template_cert_op_test", "//src/android:bcc_test", ] } group("fuzzers") { deps = [ ":boringssl_ops_fuzzer", ":cbor_cert_op_fuzzer", ":cbor_reader_fuzzer", ":cbor_writer_fuzzer", ":mbedtls_ops_fuzzer", ":template_cbor_cert_op_fuzzer", ":template_cert_op_fuzzer", "//src/android:bcc_fuzzer", ] } pw_static_library("empty_lib") { } pw_executable("empty_main") { sources = [ "src/empty_main.c" ] } pw_executable("dice_standalone_main") { sources = [ "src/dice_standalone_main.c" ] deps = [ ":dice_standalone" ] } pw_source_set("dice_main") { sources = [ "src/dice_main.c" ] } pw_executable("dice_with_boringssl_ops_main") { deps = [ ":dice_main", ":dice_with_boringssl_ops", ] } pw_executable("dice_with_mbedtls_ops_main") { deps = [ ":dice_main", ":dice_with_mbedtls_ops", ] } pw_executable("dice_with_cbor_cert_main") { deps = [ ":dice_main", ":dice_with_cbor_cert", ] } pw_executable("dice_with_cbor_template_cert_main") { deps = [ ":dice_main", ":dice_with_cbor_template_cert", ] } pw_executable("dice_with_x509_template_cert_main") { deps = [ ":dice_main", ":dice_with_x509_template_cert", ] } pw_size_report("executable_size_report") { title = "Executable sizes (includes thirdparty deps)" base = ":empty_main" binaries = [ { target = ":dice_standalone_main" label = "DiceMainFlow only (No Ops)" }, { target = ":dice_with_boringssl_ops_main" label = "Boringssl Ops" base = ":dice_standalone_main" }, { target = ":dice_with_mbedtls_ops_main" label = "MbedTLS Ops" base = ":dice_standalone_main" }, { target = ":dice_with_cbor_cert_main" label = "Boringssl with CBOR Cert" base = ":dice_with_boringssl_ops_main" }, { target = ":dice_with_cbor_template_cert_main" label = "Boringssl with CBOR Template Cert" base = ":dice_with_boringssl_ops_main" }, { target = ":dice_with_x509_template_cert_main" label = "Boringssl with X.509 Template Cert" base = ":dice_with_boringssl_ops_main" }, ] } pw_size_report("library_size_report") { title = "Library sizes (excludes thirdparty deps)" base = ":empty_lib" binaries = [ { target = ":dice_standalone" label = "DICE Standalone (No Ops)" }, { target = ":dice_with_boringssl_ops" label = "Boringssl Ops" base = ":dice_standalone" }, { target = ":dice_with_mbedtls_ops" label = "MbedTLS Ops" base = ":dice_standalone" }, { target = ":dice_with_cbor_cert" label = "CBOR Cert" base = ":dice_standalone" }, { target = ":dice_with_cbor_template_cert" label = "CBOR Template Cert" base = ":dice_standalone" }, { target = ":dice_with_x509_template_cert" label = "X.509 Template Cert" base = ":dice_standalone" }, ] } group("optimized_libs") { deps = [ ":dice_standalone", ":dice_with_boringssl_ops", ":dice_with_cbor_cert", ":dice_with_cbor_template_cert", ":dice_with_mbedtls_ops", ":dice_with_x509_template_cert", ":executable_size_report", ":library_size_report", "//src/android:bcc", ] }