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