Wyatt Hepler | 2119240 | 2020-01-15 15:40:51 -0800 | [diff] [blame] | 1 | # Copyright 2020 The Pigweed Authors |
Alexei Frolov | 1a82c14 | 2019-10-31 17:37:12 -0700 | [diff] [blame] | 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 | |
Armando Montanez | 0ef17a7 | 2020-01-07 13:17:04 -0800 | [diff] [blame] | 15 | # This BUILDCONFIG file tells GN how to build upstream Pigweed. When starting a |
| 16 | # new project, you'll need to copy this file to your project and then modify it |
| 17 | # to fit your needs. Due to the way Pigweed handles file imports, you won't be |
| 18 | # able to simply import this file in your own BUILDCONFIG.gn. |
| 19 | # |
| 20 | # Keep in mind when importing .gni files that `gn format` will try to |
| 21 | # alphabetically sort imports unless they're separated by comments. For this |
| 22 | # file, import order matters (modules.gni MUST be imported first). |
Alexei Frolov | 1a82c14 | 2019-10-31 17:37:12 -0700 | [diff] [blame] | 23 | |
Armando Montanez | fb3d3fb | 2020-06-09 18:12:12 -0700 | [diff] [blame^] | 24 | # This is imported into a scope so as not to pollute the global variable space. |
| 25 | _pigweed_directory = { |
| 26 | import("//build_overrides/pigweed.gni") |
Alexei Frolov | 1a82c14 | 2019-10-31 17:37:12 -0700 | [diff] [blame] | 27 | } |
| 28 | |
Armando Montanez | fb3d3fb | 2020-06-09 18:12:12 -0700 | [diff] [blame^] | 29 | _pigweed_modules = { |
| 30 | # Import target configuration. This is what "completes" a Pigweed |
| 31 | # configuration. This file should set a default toolchain, configure |
| 32 | # pw_executable, select backends to build against, and provide target-specific |
| 33 | # build arguments. |
| 34 | import("${_pigweed_directory.dir_pigweed}/legacy_target.gni") |
| 35 | } |
Alexei Frolov | e899dcf | 2019-11-13 14:49:14 -0800 | [diff] [blame] | 36 | |
Armando Montanez | 0ef17a7 | 2020-01-07 13:17:04 -0800 | [diff] [blame] | 37 | # Ensure some sort of default toolchain was provided by the target, and then |
| 38 | # set the default toolchain. |
Armando Montanez | fb3d3fb | 2020-06-09 18:12:12 -0700 | [diff] [blame^] | 39 | assert(_pigweed_modules.pw_target_toolchain != "", |
Alexei Frolov | e899dcf | 2019-11-13 14:49:14 -0800 | [diff] [blame] | 40 | "Build target must provide its own toolchain.") |
Alexei Frolov | edd2f14 | 2020-06-09 19:11:27 -0700 | [diff] [blame] | 41 | |
| 42 | # The default toolchain is not used in Pigweed builds, so it is set to a dummy |
| 43 | # toolchain. The top-level BUILD.gn should stamp a group with all of the build |
| 44 | # targets and their toolchains. |
Armando Montanez | fb3d3fb | 2020-06-09 18:12:12 -0700 | [diff] [blame^] | 45 | set_default_toolchain("${_pigweed_modules.dir_pw_toolchain}/dummy") |