• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1# Copyright 2022 The Pigweed Authors
2#
3# Licensed under the Apache License, Version 2.0 (the "License"); you may not
4# use this file except in compliance with the License. You may obtain a copy of
5# the License at
6#
7#     https://www.apache.org/licenses/LICENSE-2.0
8#
9# Unless required by applicable law or agreed to in writing, software
10# distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
11# WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
12# License for the specific language governing permissions and limitations under
13# the License.
14
15import("//build_overrides/pi_pico.gni")
16import("//build_overrides/pigweed.gni")
17
18import("$dir_pw_build/target_types.gni")
19declare_args() {
20  PICO_SDK_VERSION_MAJOR = 1
21  PICO_SDK_VERSION_MINOR = 3
22  PICO_SDK_VERSION_REVISION = 0
23}
24
25# GN-ism: To reference earlier args, this needs to be in a separate block.
26declare_args() {
27  PICO_SDK_VERSION_STRING = "${PICO_SDK_VERSION_MAJOR}.${PICO_SDK_VERSION_MINOR}.${PICO_SDK_VERSION_REVISION}"
28}
29
30template("generate_version_header") {
31  assert(defined(invoker.version_major))
32  assert(defined(invoker.version_minor))
33  assert(defined(invoker.version_revision))
34  assert(defined(invoker.version_string))
35
36  _generated_header_dir = "${target_gen_dir}/${target_name}_include"
37  _generated_header_path = "${_generated_header_dir}/pico/version.h"
38
39  config("${target_name}.public_include_dirs") {
40    include_dirs = [ "${_generated_header_dir}" ]
41  }
42
43  generated_file("${target_name}.generated_header") {
44    outputs = [ "${_generated_header_path}" ]
45    _lines = [
46      "// ---------------------------------------",
47      "// THIS FILE IS AUTOGENERATED; DO NOT EDIT",
48      "// ---------------------------------------",
49      "",
50      "#ifndef _PICO_VERSION_H",
51      "#define _PICO_VERSION_H",
52      "",
53      "#define PICO_SDK_VERSION_MAJOR    ${invoker.version_major}",
54      "#define PICO_SDK_VERSION_MINOR    ${invoker.version_minor}",
55      "#define PICO_SDK_VERSION_REVISION ${invoker.version_revision}",
56      "#define PICO_SDK_VERSION_STRING   \"${invoker.version_string}\"",
57      "",
58      "#endif",
59    ]
60
61    # Join with newline.
62    _NEWLINE_CHAR = "$0x0A"
63    contents = string_join(_NEWLINE_CHAR, _lines)
64  }
65
66  pw_source_set("${target_name}") {
67    remove_configs = [ "$dir_pw_build:strict_warnings" ]
68    public_configs = [ ":${target_name}.public_include_dirs" ]
69    deps = [ ":${target_name}.generated_header" ]
70    public = [ "${_generated_header_path}" ]
71    forward_variables_from(invoker,
72                           "*",
73                           [
74                             "version_major",
75                             "version_minor",
76                             "version_revision",
77                             "version_string",
78                           ])
79  }
80}
81