blob: df57e5e77ab57201ed8941b59f6e2cc956f075d3 [file] [log] [blame]
Alexei Frolov1a82c142019-10-31 17:37:12 -07001# Copyright 2019 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
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.
34 pw_target_config = "$dir_pigweed/targets/host/host.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
42# Import default GN configurations. This file provides default configurations
43# for upstream Pigweed development, and projects are free to provide their own
44# variation of this file. (depends on modules.gni)
45import("$dir_pigweed/gn_defaults.gni")
46
47# Import target configuration. This is what "completes" a Pigweed configuration.
48# This file should set a default toolchain, configure pw_executable, select
49# backends to build against, and provide target-specific build arguments.
Alexei Frolove899dcf2019-11-13 14:49:14 -080050import(pw_target_config)
51
Armando Montanez0ef17a72020-01-07 13:17:04 -080052# Ensure some sort of default toolchain was provided by the target, and then
53# set the default toolchain.
Alexei Frolove899dcf2019-11-13 14:49:14 -080054assert(pw_target_toolchain != "",
55 "Build target must provide its own toolchain.")
Alexei Frolov02dfcc42019-11-08 15:51:51 -080056set_default_toolchain(pw_target_toolchain)