# Copyright 2021 The Pigweed 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 # # 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_build/target_types.gni") import("micro_ecc.gni") if (dir_pw_third_party_micro_ecc != "") { config("public_config") { include_dirs = [ "$dir_pw_third_party_micro_ecc/" ] } config("internal_config") { # Suppress all upstream introduced warnings. cflags = [ "-w" ] # Disabling point compression saves 200 bytes. defines = [ "uECC_SUPPORT_COMPRESSED_POINT=0" ] } # Endianess is a public configuration for uECC as it determines how large # integers are interpreted in uECC public APIs. # # Big endian is a lot more common and thus is recommended unless you are # really resource-constrained or another uECC client expects little # endian. config("big_endian_config") { defines = [ "uECC_VLI_NATIVE_LITTLE_ENDIAN=0" ] } # Little endian can reduce call stack usage in native little endian # execution environments (as determined by processor state, memory # access config etc.) config("little_endian_config") { defines = [ "uECC_VLI_NATIVE_LITTLE_ENDIAN=1" ] } pw_source_set("micro_ecc") { public_configs = [ ":big_endian_config", ":public_config", ] configs = [ ":internal_config" ] sources = [ "$dir_pw_third_party_micro_ecc/uECC.c" ] } pw_source_set("micro_ecc_little_endian") { public_configs = [ ":little_endian_config", ":public_config", ] configs = [ ":internal_config" ] sources = [ "$dir_pw_third_party_micro_ecc/uECC.c" ] } } else { group("micro_ecc") { } }