1d3868032626d59662ff73b372b5d584c1d144c53Ben Murdoch# ============================================================================= 2d3868032626d59662ff73b372b5d584c1d144c53Ben Murdoch# BUILD FLAGS 3d3868032626d59662ff73b372b5d584c1d144c53Ben Murdoch# ============================================================================= 4d3868032626d59662ff73b372b5d584c1d144c53Ben Murdoch# 5d3868032626d59662ff73b372b5d584c1d144c53Ben Murdoch# This block lists input arguments to the build, along with their default 6d3868032626d59662ff73b372b5d584c1d144c53Ben Murdoch# values. GN requires listing them explicitly so it can validate input and have 7d3868032626d59662ff73b372b5d584c1d144c53Ben Murdoch# a central place to manage the build flags. 8d3868032626d59662ff73b372b5d584c1d144c53Ben Murdoch# 9d3868032626d59662ff73b372b5d584c1d144c53Ben Murdoch# If a value is specified on the command line, it will overwrite the defaults 10d3868032626d59662ff73b372b5d584c1d144c53Ben Murdoch# given here, otherwise the default will be injected into the root scope. 11d3868032626d59662ff73b372b5d584c1d144c53Ben Murdoch# 12d3868032626d59662ff73b372b5d584c1d144c53Ben Murdoch# KEEP IN ALPHABETICAL ORDER and write a good description for everything. 13d3868032626d59662ff73b372b5d584c1d144c53Ben Murdoch# Use "is_*" names for intrinsic platform descriptions and build modes, and 14d3868032626d59662ff73b372b5d584c1d144c53Ben Murdoch# "use_*" names for optional features libraries, and configurations. 15d3868032626d59662ff73b372b5d584c1d144c53Ben Murdochdeclare_args() { 162385ea399aae016c0806a4f9ef3c9cfe3d2a39dfBen Murdoch is_android = 0 17d3868032626d59662ff73b372b5d584c1d144c53Ben Murdoch is_component_build = 1 18d3868032626d59662ff73b372b5d584c1d144c53Ben Murdoch is_chromeos = 0 19d3868032626d59662ff73b372b5d584c1d144c53Ben Murdoch is_debug = 1 202385ea399aae016c0806a4f9ef3c9cfe3d2a39dfBen Murdoch is_ios = 0 21d3868032626d59662ff73b372b5d584c1d144c53Ben Murdoch use_ash = 0 22d3868032626d59662ff73b372b5d584c1d144c53Ben Murdoch use_aura = 0 23d3868032626d59662ff73b372b5d584c1d144c53Ben Murdoch use_ozone = 0 24d3868032626d59662ff73b372b5d584c1d144c53Ben Murdoch} 25d3868032626d59662ff73b372b5d584c1d144c53Ben Murdoch 26d3868032626d59662ff73b372b5d584c1d144c53Ben Murdoch# ============================================================================= 27d3868032626d59662ff73b372b5d584c1d144c53Ben Murdoch# SOURCES FILTERS 28d3868032626d59662ff73b372b5d584c1d144c53Ben Murdoch# ============================================================================= 29d3868032626d59662ff73b372b5d584c1d144c53Ben Murdoch# 30d3868032626d59662ff73b372b5d584c1d144c53Ben Murdoch# These patterns filter out platform-specific files when assigning to the 31d3868032626d59662ff73b372b5d584c1d144c53Ben Murdoch# sources variable. The magic variable |sources_assignment_filter| is applied 32d3868032626d59662ff73b372b5d584c1d144c53Ben Murdoch# to each assignment or appending to the sources variable and matches are 33d3868032626d59662ff73b372b5d584c1d144c53Ben Murdoch# automatcally removed. 34d3868032626d59662ff73b372b5d584c1d144c53Ben Murdoch# 35d3868032626d59662ff73b372b5d584c1d144c53Ben Murdoch# We define lists of filters for each platform for all builds so they can 36d3868032626d59662ff73b372b5d584c1d144c53Ben Murdoch# be used by individual targets if necessary (a target can always change 37d3868032626d59662ff73b372b5d584c1d144c53Ben Murdoch# sources_assignment_filter on itself if it needs something more specific). 38d3868032626d59662ff73b372b5d584c1d144c53Ben Murdoch# 39d3868032626d59662ff73b372b5d584c1d144c53Ben Murdoch# Note that the patterns are NOT regular expressions. Only "*" and "\b" (path 40d3868032626d59662ff73b372b5d584c1d144c53Ben Murdoch# boundary = end of string or slash) are supported, and the entire string 41d3868032626d59662ff73b372b5d584c1d144c53Ben Murdoch# muct match the pattern (so you need "*.cc" to match all .cc files, for 42d3868032626d59662ff73b372b5d584c1d144c53Ben Murdoch# example). 43d3868032626d59662ff73b372b5d584c1d144c53Ben Murdoch 44d3868032626d59662ff73b372b5d584c1d144c53Ben Murdochwindows_sources_filters = [ 45d3868032626d59662ff73b372b5d584c1d144c53Ben Murdoch "*_win.cc", 46d3868032626d59662ff73b372b5d584c1d144c53Ben Murdoch "*_win.h", 47d3868032626d59662ff73b372b5d584c1d144c53Ben Murdoch "*_win_unittest.cc", 48d3868032626d59662ff73b372b5d584c1d144c53Ben Murdoch "*\bwin/*", 49d3868032626d59662ff73b372b5d584c1d144c53Ben Murdoch] 50d3868032626d59662ff73b372b5d584c1d144c53Ben Murdochmac_sources_filters = [ 51d3868032626d59662ff73b372b5d584c1d144c53Ben Murdoch "*_mac.h", 52d3868032626d59662ff73b372b5d584c1d144c53Ben Murdoch "*_mac.cc", 53d3868032626d59662ff73b372b5d584c1d144c53Ben Murdoch "*_mac.mm", 54d3868032626d59662ff73b372b5d584c1d144c53Ben Murdoch "*_mac_unittest.h", 55d3868032626d59662ff73b372b5d584c1d144c53Ben Murdoch "*_mac_unittest.cc", 56d3868032626d59662ff73b372b5d584c1d144c53Ben Murdoch "*_mac_unittest.mm", 57d3868032626d59662ff73b372b5d584c1d144c53Ben Murdoch "*\bmac/*", 58d3868032626d59662ff73b372b5d584c1d144c53Ben Murdoch "*_cocoa.h", 59d3868032626d59662ff73b372b5d584c1d144c53Ben Murdoch "*_cocoa.cc", 60d3868032626d59662ff73b372b5d584c1d144c53Ben Murdoch "*_cocoa.mm", 61d3868032626d59662ff73b372b5d584c1d144c53Ben Murdoch "*_cocoa_unittest.h", 62d3868032626d59662ff73b372b5d584c1d144c53Ben Murdoch "*_cocoa_unittest.cc", 63d3868032626d59662ff73b372b5d584c1d144c53Ben Murdoch "*_cocoa_unittest.mm", 64d3868032626d59662ff73b372b5d584c1d144c53Ben Murdoch "*\bcocoa/*", 65d3868032626d59662ff73b372b5d584c1d144c53Ben Murdoch] 66d3868032626d59662ff73b372b5d584c1d144c53Ben Murdochios_sources_filters = [ 67d3868032626d59662ff73b372b5d584c1d144c53Ben Murdoch "*_ios.h", 68d3868032626d59662ff73b372b5d584c1d144c53Ben Murdoch "*_ios.cc", 69d3868032626d59662ff73b372b5d584c1d144c53Ben Murdoch "*_ios.mm", 70d3868032626d59662ff73b372b5d584c1d144c53Ben Murdoch "*_ios_unittest.h", 71d3868032626d59662ff73b372b5d584c1d144c53Ben Murdoch "*_ios_unittest.cc", 72d3868032626d59662ff73b372b5d584c1d144c53Ben Murdoch "*_ios_unittest.mm", 73d3868032626d59662ff73b372b5d584c1d144c53Ben Murdoch "*\bios/*", 74d3868032626d59662ff73b372b5d584c1d144c53Ben Murdoch] 75d3868032626d59662ff73b372b5d584c1d144c53Ben Murdochobjective_c_sources_filters = [ 76d3868032626d59662ff73b372b5d584c1d144c53Ben Murdoch "*.mm", 77d3868032626d59662ff73b372b5d584c1d144c53Ben Murdoch] 78d3868032626d59662ff73b372b5d584c1d144c53Ben Murdochlinux_sources_filters = [ 79d3868032626d59662ff73b372b5d584c1d144c53Ben Murdoch "*_linux.h", 80d3868032626d59662ff73b372b5d584c1d144c53Ben Murdoch "*_linux.cc", 81d3868032626d59662ff73b372b5d584c1d144c53Ben Murdoch "*_linux_unittest.h", 82d3868032626d59662ff73b372b5d584c1d144c53Ben Murdoch "*_linux_unittest.cc", 83d3868032626d59662ff73b372b5d584c1d144c53Ben Murdoch "*\blinux/*", 84d3868032626d59662ff73b372b5d584c1d144c53Ben Murdoch] 85d3868032626d59662ff73b372b5d584c1d144c53Ben Murdochandroid_sources_filters = [ 86d3868032626d59662ff73b372b5d584c1d144c53Ben Murdoch "*_android.h", 87d3868032626d59662ff73b372b5d584c1d144c53Ben Murdoch "*_android.cc", 88d3868032626d59662ff73b372b5d584c1d144c53Ben Murdoch "*_android_unittest.h", 89d3868032626d59662ff73b372b5d584c1d144c53Ben Murdoch "*_android_unittest.cc", 90d3868032626d59662ff73b372b5d584c1d144c53Ben Murdoch "*\bandroid/*", 91d3868032626d59662ff73b372b5d584c1d144c53Ben Murdoch] 92d3868032626d59662ff73b372b5d584c1d144c53Ben Murdochposix_sources_filters = [ 93d3868032626d59662ff73b372b5d584c1d144c53Ben Murdoch "*_posix.h", 94d3868032626d59662ff73b372b5d584c1d144c53Ben Murdoch "*_posix.cc", 95d3868032626d59662ff73b372b5d584c1d144c53Ben Murdoch "*_posix_unittest.h", 96d3868032626d59662ff73b372b5d584c1d144c53Ben Murdoch "*_posix_unittest.cc", 97d3868032626d59662ff73b372b5d584c1d144c53Ben Murdoch "*\bposix/*", 98d3868032626d59662ff73b372b5d584c1d144c53Ben Murdoch] 99d3868032626d59662ff73b372b5d584c1d144c53Ben Murdoch 100d3868032626d59662ff73b372b5d584c1d144c53Ben Murdoch# Construct the full list of sources we're using for this platform. 101d3868032626d59662ff73b372b5d584c1d144c53Ben Murdochsources_assignment_filter = [] 102d3868032626d59662ff73b372b5d584c1d144c53Ben Murdochif (is_win) { 103d3868032626d59662ff73b372b5d584c1d144c53Ben Murdoch sources_assignment_filter += posix_sources_filters 104d3868032626d59662ff73b372b5d584c1d144c53Ben Murdoch} else { 105d3868032626d59662ff73b372b5d584c1d144c53Ben Murdoch sources_assignment_filter += windows_sources_filters 106d3868032626d59662ff73b372b5d584c1d144c53Ben Murdoch} 107d3868032626d59662ff73b372b5d584c1d144c53Ben Murdochif (!is_mac) { 108d3868032626d59662ff73b372b5d584c1d144c53Ben Murdoch sources_assignment_filter += mac_sources_filters 109d3868032626d59662ff73b372b5d584c1d144c53Ben Murdoch} 110d3868032626d59662ff73b372b5d584c1d144c53Ben Murdochif (!is_ios) { 111d3868032626d59662ff73b372b5d584c1d144c53Ben Murdoch sources_assignment_filter += ios_sources_filters 112d3868032626d59662ff73b372b5d584c1d144c53Ben Murdoch} 113d3868032626d59662ff73b372b5d584c1d144c53Ben Murdochif (!is_mac && !is_ios) { 114d3868032626d59662ff73b372b5d584c1d144c53Ben Murdoch sources_assignment_filter += objective_c_sources_filters 115d3868032626d59662ff73b372b5d584c1d144c53Ben Murdoch} 116d3868032626d59662ff73b372b5d584c1d144c53Ben Murdochif (!is_linux) { 117d3868032626d59662ff73b372b5d584c1d144c53Ben Murdoch sources_assignment_filter += linux_sources_filters 118d3868032626d59662ff73b372b5d584c1d144c53Ben Murdoch} 119d3868032626d59662ff73b372b5d584c1d144c53Ben Murdochif (!is_android) { 120d3868032626d59662ff73b372b5d584c1d144c53Ben Murdoch sources_assignment_filter += android_sources_filters 121d3868032626d59662ff73b372b5d584c1d144c53Ben Murdoch} 122d3868032626d59662ff73b372b5d584c1d144c53Ben Murdoch 123d3868032626d59662ff73b372b5d584c1d144c53Ben Murdoch# This is the actual set. 124d3868032626d59662ff73b372b5d584c1d144c53Ben Murdochset_sources_assignment_filter(sources_assignment_filter) 125d3868032626d59662ff73b372b5d584c1d144c53Ben Murdoch 126d3868032626d59662ff73b372b5d584c1d144c53Ben Murdoch# ============================================================================= 127d3868032626d59662ff73b372b5d584c1d144c53Ben Murdoch# SYSTEM CONFIG 128d3868032626d59662ff73b372b5d584c1d144c53Ben Murdoch# ============================================================================= 129d3868032626d59662ff73b372b5d584c1d144c53Ben Murdoch 130d3868032626d59662ff73b372b5d584c1d144c53Ben Murdochis_nacl = 0 131d3868032626d59662ff73b372b5d584c1d144c53Ben Murdoch 132d3868032626d59662ff73b372b5d584c1d144c53Ben Murdoch# ============================================================================= 133d3868032626d59662ff73b372b5d584c1d144c53Ben Murdoch# BUILD OPTIONS 134d3868032626d59662ff73b372b5d584c1d144c53Ben Murdoch# ============================================================================= 135d3868032626d59662ff73b372b5d584c1d144c53Ben Murdoch 136d3868032626d59662ff73b372b5d584c1d144c53Ben Murdochif (is_component_build) { 137d3868032626d59662ff73b372b5d584c1d144c53Ben Murdoch component_mode = "shared_library" 138d3868032626d59662ff73b372b5d584c1d144c53Ben Murdoch} else { 139d3868032626d59662ff73b372b5d584c1d144c53Ben Murdoch component_mode = "static_library" 140d3868032626d59662ff73b372b5d584c1d144c53Ben Murdoch} 141d3868032626d59662ff73b372b5d584c1d144c53Ben Murdoch 142d3868032626d59662ff73b372b5d584c1d144c53Ben Murdoch# ============================================================================= 143d3868032626d59662ff73b372b5d584c1d144c53Ben Murdoch# TARGET DEFAULTS 144d3868032626d59662ff73b372b5d584c1d144c53Ben Murdoch# ============================================================================= 145d3868032626d59662ff73b372b5d584c1d144c53Ben Murdoch# 146d3868032626d59662ff73b372b5d584c1d144c53Ben Murdoch# Set up the default configuration for every build target of the given type. 147d3868032626d59662ff73b372b5d584c1d144c53Ben Murdoch# The values configured here will be automatically set on the scope of the 148d3868032626d59662ff73b372b5d584c1d144c53Ben Murdoch# corresponding target. Target definitions can add or remove to the settings 149d3868032626d59662ff73b372b5d584c1d144c53Ben Murdoch# here as needed. 150d3868032626d59662ff73b372b5d584c1d144c53Ben Murdoch 151d3868032626d59662ff73b372b5d584c1d144c53Ben Murdoch# Holds all configs used for making native executables and libraries, to avoid 152d3868032626d59662ff73b372b5d584c1d144c53Ben Murdoch# duplication in each target below. 153d3868032626d59662ff73b372b5d584c1d144c53Ben Murdochnative_compiler_configs = [ 154d3868032626d59662ff73b372b5d584c1d144c53Ben Murdoch "//build/config:my_msvs", # TODO(brettw) eraseme 155d3868032626d59662ff73b372b5d584c1d144c53Ben Murdoch 1562385ea399aae016c0806a4f9ef3c9cfe3d2a39dfBen Murdoch "//build/config/compiler:compiler", 157d3868032626d59662ff73b372b5d584c1d144c53Ben Murdoch "//build/config/compiler:chromium_code", 1582385ea399aae016c0806a4f9ef3c9cfe3d2a39dfBen Murdoch "//build/config/compiler:default_warnings", 159d3868032626d59662ff73b372b5d584c1d144c53Ben Murdoch "//build/config/compiler:no_rtti", 160d3868032626d59662ff73b372b5d584c1d144c53Ben Murdoch "//build/config/compiler:runtime_library", 161d3868032626d59662ff73b372b5d584c1d144c53Ben Murdoch] 162d3868032626d59662ff73b372b5d584c1d144c53Ben Murdochif (is_win) { 163d3868032626d59662ff73b372b5d584c1d144c53Ben Murdoch native_compiler_configs += "//build/config/win:sdk" 1642385ea399aae016c0806a4f9ef3c9cfe3d2a39dfBen Murdoch} else if (is_mac) { 1652385ea399aae016c0806a4f9ef3c9cfe3d2a39dfBen Murdoch # TODO(brettw) this should be in an if (is_clang) block instead but I haven't 1662385ea399aae016c0806a4f9ef3c9cfe3d2a39dfBen Murdoch # written an is_clang flag yet. 1672385ea399aae016c0806a4f9ef3c9cfe3d2a39dfBen Murdoch native_compiler_configs += "//build/config/clang:find_bad_constructs" 168d3868032626d59662ff73b372b5d584c1d144c53Ben Murdoch} 169d3868032626d59662ff73b372b5d584c1d144c53Ben Murdoch 170d3868032626d59662ff73b372b5d584c1d144c53Ben Murdochif (is_debug) { 171d3868032626d59662ff73b372b5d584c1d144c53Ben Murdoch native_compiler_configs += "//build/config:debug" 172d3868032626d59662ff73b372b5d584c1d144c53Ben Murdoch} else { 1732385ea399aae016c0806a4f9ef3c9cfe3d2a39dfBen Murdoch native_compiler_configs += "//build/config:release" 174d3868032626d59662ff73b372b5d584c1d144c53Ben Murdoch} 175d3868032626d59662ff73b372b5d584c1d144c53Ben Murdoch 176d3868032626d59662ff73b372b5d584c1d144c53Ben Murdochset_defaults("executable") { 177d3868032626d59662ff73b372b5d584c1d144c53Ben Murdoch configs = native_compiler_configs 1783240926e260ce088908e02ac07a6cf7b0c0cbf44Ben Murdoch if (is_mac) { 1793240926e260ce088908e02ac07a6cf7b0c0cbf44Ben Murdoch configs += "//build/config/mac:mac_dynamic_flags" 1803240926e260ce088908e02ac07a6cf7b0c0cbf44Ben Murdoch } 181d3868032626d59662ff73b372b5d584c1d144c53Ben Murdoch} 182d3868032626d59662ff73b372b5d584c1d144c53Ben Murdoch 183d3868032626d59662ff73b372b5d584c1d144c53Ben Murdochset_defaults("static_library") { 184d3868032626d59662ff73b372b5d584c1d144c53Ben Murdoch configs = native_compiler_configs 185d3868032626d59662ff73b372b5d584c1d144c53Ben Murdoch} 186d3868032626d59662ff73b372b5d584c1d144c53Ben Murdoch 187d3868032626d59662ff73b372b5d584c1d144c53Ben Murdochset_defaults("shared_library") { 188d3868032626d59662ff73b372b5d584c1d144c53Ben Murdoch configs = native_compiler_configs 1893240926e260ce088908e02ac07a6cf7b0c0cbf44Ben Murdoch if (is_mac) { 1903240926e260ce088908e02ac07a6cf7b0c0cbf44Ben Murdoch configs += "//build/config/mac:mac_dynamic_flags" 1913240926e260ce088908e02ac07a6cf7b0c0cbf44Ben Murdoch } 192d3868032626d59662ff73b372b5d584c1d144c53Ben Murdoch} 193d3868032626d59662ff73b372b5d584c1d144c53Ben Murdoch 194d3868032626d59662ff73b372b5d584c1d144c53Ben Murdoch# ============================================================================== 195d3868032626d59662ff73b372b5d584c1d144c53Ben Murdoch# TOOLCHAIN SETUP 196d3868032626d59662ff73b372b5d584c1d144c53Ben Murdoch# ============================================================================== 197d3868032626d59662ff73b372b5d584c1d144c53Ben Murdoch 198d3868032626d59662ff73b372b5d584c1d144c53Ben Murdochif (is_win) { 199d3868032626d59662ff73b372b5d584c1d144c53Ben Murdoch set_default_toolchain("//build/config/win:32") 2002385ea399aae016c0806a4f9ef3c9cfe3d2a39dfBen Murdoch} else if (is_mac) { 2012385ea399aae016c0806a4f9ef3c9cfe3d2a39dfBen Murdoch set_default_toolchain("//build/config/mac:clang") 202d3868032626d59662ff73b372b5d584c1d144c53Ben Murdoch} 203