| # ============================================================================= | |
| # BUILD FLAGS | |
| # ============================================================================= | |
| # | |
| # This block lists input arguments to the build, along with their default | |
| # values. GN requires listing them explicitly so it can validate input and have | |
| # a central place to manage the build flags. | |
| # | |
| # If a value is specified on the command line, it will overwrite the defaults | |
| # given here, otherwise the default will be injected into the root scope. | |
| # | |
| # KEEP IN ALPHABETICAL ORDER and write a good description for everything. | |
| # Use "is_*" names for intrinsic platform descriptions and build modes, and | |
| # "use_*" names for optional features libraries, and configurations. | |
| declare_args() { | |
| is_component_build = 1 | |
| is_chromeos = 0 | |
| is_debug = 1 | |
| use_ash = 0 | |
| use_aura = 0 | |
| use_ozone = 0 | |
| } | |
| # ============================================================================= | |
| # SOURCES FILTERS | |
| # ============================================================================= | |
| # | |
| # These patterns filter out platform-specific files when assigning to the | |
| # sources variable. The magic variable |sources_assignment_filter| is applied | |
| # to each assignment or appending to the sources variable and matches are | |
| # automatcally removed. | |
| # | |
| # We define lists of filters for each platform for all builds so they can | |
| # be used by individual targets if necessary (a target can always change | |
| # sources_assignment_filter on itself if it needs something more specific). | |
| # | |
| # Note that the patterns are NOT regular expressions. Only "*" and "\b" (path | |
| # boundary = end of string or slash) are supported, and the entire string | |
| # muct match the pattern (so you need "*.cc" to match all .cc files, for | |
| # example). | |
| windows_sources_filters = [ | |
| "*_win.cc", | |
| "*_win.h", | |
| "*_win_unittest.cc", | |
| "*\bwin/*", | |
| ] | |
| mac_sources_filters = [ | |
| "*_mac.h", | |
| "*_mac.cc", | |
| "*_mac.mm", | |
| "*_mac_unittest.h", | |
| "*_mac_unittest.cc", | |
| "*_mac_unittest.mm", | |
| "*\bmac/*", | |
| "*_cocoa.h", | |
| "*_cocoa.cc", | |
| "*_cocoa.mm", | |
| "*_cocoa_unittest.h", | |
| "*_cocoa_unittest.cc", | |
| "*_cocoa_unittest.mm", | |
| "*\bcocoa/*", | |
| ] | |
| ios_sources_filters = [ | |
| "*_ios.h", | |
| "*_ios.cc", | |
| "*_ios.mm", | |
| "*_ios_unittest.h", | |
| "*_ios_unittest.cc", | |
| "*_ios_unittest.mm", | |
| "*\bios/*", | |
| ] | |
| objective_c_sources_filters = [ | |
| "*.mm", | |
| ] | |
| linux_sources_filters = [ | |
| "*_linux.h", | |
| "*_linux.cc", | |
| "*_linux_unittest.h", | |
| "*_linux_unittest.cc", | |
| "*\blinux/*", | |
| ] | |
| android_sources_filters = [ | |
| "*_android.h", | |
| "*_android.cc", | |
| "*_android_unittest.h", | |
| "*_android_unittest.cc", | |
| "*\bandroid/*", | |
| ] | |
| posix_sources_filters = [ | |
| "*_posix.h", | |
| "*_posix.cc", | |
| "*_posix_unittest.h", | |
| "*_posix_unittest.cc", | |
| "*\bposix/*", | |
| ] | |
| # Construct the full list of sources we're using for this platform. | |
| sources_assignment_filter = [] | |
| if (is_win) { | |
| sources_assignment_filter += posix_sources_filters | |
| } else { | |
| sources_assignment_filter += windows_sources_filters | |
| } | |
| if (!is_mac) { | |
| sources_assignment_filter += mac_sources_filters | |
| } | |
| if (!is_ios) { | |
| sources_assignment_filter += ios_sources_filters | |
| } | |
| if (!is_mac && !is_ios) { | |
| sources_assignment_filter += objective_c_sources_filters | |
| } | |
| if (!is_linux) { | |
| sources_assignment_filter += linux_sources_filters | |
| } | |
| if (!is_android) { | |
| sources_assignment_filter += android_sources_filters | |
| } | |
| # This is the actual set. | |
| set_sources_assignment_filter(sources_assignment_filter) | |
| # ============================================================================= | |
| # SYSTEM CONFIG | |
| # ============================================================================= | |
| is_nacl = 0 | |
| # ============================================================================= | |
| # BUILD OPTIONS | |
| # ============================================================================= | |
| if (is_component_build) { | |
| component_mode = "shared_library" | |
| } else { | |
| component_mode = "static_library" | |
| } | |
| # ============================================================================= | |
| # TARGET DEFAULTS | |
| # ============================================================================= | |
| # | |
| # Set up the default configuration for every build target of the given type. | |
| # The values configured here will be automatically set on the scope of the | |
| # corresponding target. Target definitions can add or remove to the settings | |
| # here as needed. | |
| # Holds all configs used for making native executables and libraries, to avoid | |
| # duplication in each target below. | |
| native_compiler_configs = [ | |
| "//build/config:my_msvs", # TODO(brettw) eraseme | |
| "//build/config/compiler:chromium_code", | |
| "//build/config/compiler:disable_annoying_warnings", | |
| "//build/config/compiler:no_rtti", | |
| "//build/config/compiler:runtime_library", | |
| ] | |
| if (is_win) { | |
| native_compiler_configs += "//build/config/win:sdk" | |
| } | |
| if (is_debug) { | |
| native_compiler_configs += "//build/config:debug" | |
| } else { | |
| native_compiler_configs += "//build/config::release" | |
| } | |
| set_defaults("executable") { | |
| configs = native_compiler_configs | |
| } | |
| set_defaults("static_library") { | |
| configs = native_compiler_configs | |
| } | |
| set_defaults("shared_library") { | |
| configs = native_compiler_configs | |
| } | |
| # ============================================================================== | |
| # TOOLCHAIN SETUP | |
| # ============================================================================== | |
| if (is_win) { | |
| set_default_toolchain("//build/config/win:32") | |
| } |