| # 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") { |
| } |
| } |