blob: 306ce8c7365c00fe5712074348707795206a52ee [file] [log] [blame]
Wyatt Hepler21192402020-01-15 15:40:51 -08001# Copyright 2020 The Pigweed Authors
Alexei Frolov1a82c142019-10-31 17:37:12 -07002#
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 Montanez0ef17a72020-01-07 13:17:04 -080015# 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 Frolov1a82c142019-10-31 17:37:12 -070023
24declare_args() {
Armando Montanez0ef17a72020-01-07 13:17:04 -080025 # Location of the Pigweed modules directory (defaults to the directory of
26 # this file). When copying this buildconfig into a new project, this should
27 # be modified to point to the location of the Pigweed repository.
28 dir_pigweed = get_path_info(get_path_info("BUILDCONFIG.gn", "abspath"), "dir")
29
Alexei Frolove899dcf2019-11-13 14:49:14 -080030 # Path to the Pigweed variables config file for the build target.
Alexei Frolov02dfcc42019-11-08 15:51:51 -080031 #
Alexei Frolove899dcf2019-11-13 14:49:14 -080032 # When this is changed, you must run `ninja -t clean` to remove any files from
33 # the previous target's build before building again.
Armando Montaneze97f0592020-03-19 09:54:09 -070034 pw_target_config = "$dir_pigweed/targets/host/target_config.gni"
Alexei Frolov1a82c142019-10-31 17:37:12 -070035}
36
Armando Montanez0ef17a72020-01-07 13:17:04 -080037# Import variables that provide paths to modules. Pigweed's GN build requires
38# that this file is imported, and it MUST be imported before any other Pigweed
39# .gni files (as they depend on the dir_[module] variables).
40import("$dir_pigweed/modules.gni")
41
Armando Montanez0ef17a72020-01-07 13:17:04 -080042# Import target configuration. This is what "completes" a Pigweed configuration.
43# This file should set a default toolchain, configure pw_executable, select
44# backends to build against, and provide target-specific build arguments.
Alexei Frolove899dcf2019-11-13 14:49:14 -080045import(pw_target_config)
46
Armando Montanez0ef17a72020-01-07 13:17:04 -080047# Ensure some sort of default toolchain was provided by the target, and then
48# set the default toolchain.
Alexei Frolove899dcf2019-11-13 14:49:14 -080049assert(pw_target_toolchain != "",
50 "Build target must provide its own toolchain.")
Alexei Frolovedd2f142020-06-09 19:11:27 -070051
52# The default toolchain is not used in Pigweed builds, so it is set to a dummy
53# toolchain. The top-level BUILD.gn should stamp a group with all of the build
54# targets and their toolchains.
Alexei Frolov844ff0f2020-05-06 12:15:29 -070055set_default_toolchain("$dir_pw_toolchain/dummy")