xref: /aosp_15_r20/external/pigweed/third_party/micro_ecc/BUILD.gn (revision 61c4878ac05f98d0ceed94b57d316916de578985)
1*61c4878aSAndroid Build Coastguard Worker# Copyright 2021 The Pigweed Authors
2*61c4878aSAndroid Build Coastguard Worker#
3*61c4878aSAndroid Build Coastguard Worker# Licensed under the Apache License, Version 2.0 (the "License"); you may not
4*61c4878aSAndroid Build Coastguard Worker# use this file except in compliance with the License. You may obtain a copy of
5*61c4878aSAndroid Build Coastguard Worker# the License at
6*61c4878aSAndroid Build Coastguard Worker#
7*61c4878aSAndroid Build Coastguard Worker#     https://www.apache.org/licenses/LICENSE-2.0
8*61c4878aSAndroid Build Coastguard Worker#
9*61c4878aSAndroid Build Coastguard Worker# Unless required by applicable law or agreed to in writing, software
10*61c4878aSAndroid Build Coastguard Worker# distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
11*61c4878aSAndroid Build Coastguard Worker# WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
12*61c4878aSAndroid Build Coastguard Worker# License for the specific language governing permissions and limitations under
13*61c4878aSAndroid Build Coastguard Worker# the License.
14*61c4878aSAndroid Build Coastguard Worker
15*61c4878aSAndroid Build Coastguard Workerimport("//build_overrides/pigweed.gni")
16*61c4878aSAndroid Build Coastguard Workerimport("$dir_pw_build/target_types.gni")
17*61c4878aSAndroid Build Coastguard Workerimport("micro_ecc.gni")
18*61c4878aSAndroid Build Coastguard Worker
19*61c4878aSAndroid Build Coastguard Workerif (dir_pw_third_party_micro_ecc != "") {
20*61c4878aSAndroid Build Coastguard Worker  config("public_config") {
21*61c4878aSAndroid Build Coastguard Worker    include_dirs = [ "$dir_pw_third_party_micro_ecc/" ]
22*61c4878aSAndroid Build Coastguard Worker  }
23*61c4878aSAndroid Build Coastguard Worker
24*61c4878aSAndroid Build Coastguard Worker  config("internal_config") {
25*61c4878aSAndroid Build Coastguard Worker    # Suppress all upstream introduced warnings.
26*61c4878aSAndroid Build Coastguard Worker    cflags = [ "-w" ]
27*61c4878aSAndroid Build Coastguard Worker
28*61c4878aSAndroid Build Coastguard Worker    # Disabling point compression saves 200 bytes.
29*61c4878aSAndroid Build Coastguard Worker    defines = [ "uECC_SUPPORT_COMPRESSED_POINT=0" ]
30*61c4878aSAndroid Build Coastguard Worker  }
31*61c4878aSAndroid Build Coastguard Worker
32*61c4878aSAndroid Build Coastguard Worker  # Endianess is a public configuration for uECC as it determines how large
33*61c4878aSAndroid Build Coastguard Worker  # integers are interpreted in uECC public APIs.
34*61c4878aSAndroid Build Coastguard Worker  #
35*61c4878aSAndroid Build Coastguard Worker  # Big endian is a lot more common and thus is recommended unless you are
36*61c4878aSAndroid Build Coastguard Worker  # really resource-constrained or another uECC client expects little
37*61c4878aSAndroid Build Coastguard Worker  # endian.
38*61c4878aSAndroid Build Coastguard Worker  config("big_endian_config") {
39*61c4878aSAndroid Build Coastguard Worker    defines = [ "uECC_VLI_NATIVE_LITTLE_ENDIAN=0" ]
40*61c4878aSAndroid Build Coastguard Worker  }
41*61c4878aSAndroid Build Coastguard Worker
42*61c4878aSAndroid Build Coastguard Worker  # Little endian can reduce call stack usage in native little endian
43*61c4878aSAndroid Build Coastguard Worker  # execution environments (as determined by processor state, memory
44*61c4878aSAndroid Build Coastguard Worker  # access config etc.)
45*61c4878aSAndroid Build Coastguard Worker  config("little_endian_config") {
46*61c4878aSAndroid Build Coastguard Worker    defines = [ "uECC_VLI_NATIVE_LITTLE_ENDIAN=1" ]
47*61c4878aSAndroid Build Coastguard Worker  }
48*61c4878aSAndroid Build Coastguard Worker
49*61c4878aSAndroid Build Coastguard Worker  pw_source_set("micro_ecc") {
50*61c4878aSAndroid Build Coastguard Worker    public_configs = [
51*61c4878aSAndroid Build Coastguard Worker      ":big_endian_config",
52*61c4878aSAndroid Build Coastguard Worker      ":public_config",
53*61c4878aSAndroid Build Coastguard Worker    ]
54*61c4878aSAndroid Build Coastguard Worker    configs = [ ":internal_config" ]
55*61c4878aSAndroid Build Coastguard Worker    sources = [ "$dir_pw_third_party_micro_ecc/uECC.c" ]
56*61c4878aSAndroid Build Coastguard Worker  }
57*61c4878aSAndroid Build Coastguard Worker
58*61c4878aSAndroid Build Coastguard Worker  pw_source_set("micro_ecc_little_endian") {
59*61c4878aSAndroid Build Coastguard Worker    public_configs = [
60*61c4878aSAndroid Build Coastguard Worker      ":little_endian_config",
61*61c4878aSAndroid Build Coastguard Worker      ":public_config",
62*61c4878aSAndroid Build Coastguard Worker    ]
63*61c4878aSAndroid Build Coastguard Worker    configs = [ ":internal_config" ]
64*61c4878aSAndroid Build Coastguard Worker    sources = [ "$dir_pw_third_party_micro_ecc/uECC.c" ]
65*61c4878aSAndroid Build Coastguard Worker  }
66*61c4878aSAndroid Build Coastguard Worker} else {
67*61c4878aSAndroid Build Coastguard Worker  group("micro_ecc") {
68*61c4878aSAndroid Build Coastguard Worker  }
69*61c4878aSAndroid Build Coastguard Worker}
70