| OLD | NEW |
| 1 # Copyright (c) 2013 The Chromium Authors. All rights reserved. | 1 # Copyright (c) 2013 The Chromium Authors. All rights reserved. |
| 2 # Use of this source code is governed by a BSD-style license that can be | 2 # Use of this source code is governed by a BSD-style license that can be |
| 3 # found in the LICENSE file. | 3 # found in the LICENSE file. |
| 4 | 4 |
| 5 # ============================================================================= | 5 # ============================================================================= |
| 6 # BUILD FLAGS | 6 # BUILD FLAGS |
| 7 # ============================================================================= | 7 # ============================================================================= |
| 8 # | 8 # |
| 9 # This block lists input arguments to the build, along with their default | 9 # This block lists input arguments to the build, along with their default |
| 10 # values. GN requires listing them explicitly so it can validate input and have | 10 # values. GN requires listing them explicitly so it can validate input and have |
| (...skipping 162 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 173 | 173 |
| 174 # ============================================================================= | 174 # ============================================================================= |
| 175 # SOURCES FILTERS | 175 # SOURCES FILTERS |
| 176 # ============================================================================= | 176 # ============================================================================= |
| 177 # | 177 # |
| 178 # These patterns filter out platform-specific files when assigning to the | 178 # These patterns filter out platform-specific files when assigning to the |
| 179 # sources variable. The magic variable |sources_assignment_filter| is applied | 179 # sources variable. The magic variable |sources_assignment_filter| is applied |
| 180 # to each assignment or appending to the sources variable and matches are | 180 # to each assignment or appending to the sources variable and matches are |
| 181 # automatcally removed. | 181 # automatcally removed. |
| 182 # | 182 # |
| 183 # We define lists of filters for each platform for all builds so they can | |
| 184 # be used by individual targets if necessary (a target can always change | |
| 185 # sources_assignment_filter on itself if it needs something more specific). | |
| 186 # | |
| 187 # Note that the patterns are NOT regular expressions. Only "*" and "\b" (path | 183 # Note that the patterns are NOT regular expressions. Only "*" and "\b" (path |
| 188 # boundary = end of string or slash) are supported, and the entire string | 184 # boundary = end of string or slash) are supported, and the entire string |
| 189 # muct match the pattern (so you need "*.cc" to match all .cc files, for | 185 # muct match the pattern (so you need "*.cc" to match all .cc files, for |
| 190 # example). | 186 # example). |
| 191 | 187 |
| 192 # DO NOT ADD MORE PATTERNS TO THIS LIST, see set_sources_assignment_filter call | 188 # DO NOT ADD MORE PATTERNS TO THIS LIST, see set_sources_assignment_filter call |
| 193 # below. | 189 # below. |
| 194 windows_sources_filters = [ | 190 sources_assignment_filter = [] |
| 195 "*_win.cc", | 191 if (!is_posix) { |
| 196 "*_win.h", | 192 sources_assignment_filter += [ |
| 197 "*_win_unittest.cc", | 193 "*_posix.h", |
| 198 "*\bwin/*", | 194 "*_posix.cc", |
| 199 "*.rc", | 195 "*_posix_unittest.h", |
| 200 ] | 196 "*_posix_unittest.cc", |
| 201 mac_sources_filters = [ | 197 "*\bposix/*", |
| 202 "*_mac.h", | 198 ] |
| 203 "*_mac.cc", | 199 } |
| 204 "*_mac.mm", | 200 if (!is_win) { |
| 205 "*_mac_unittest.h", | 201 sources_assignment_filter += [ |
| 206 "*_mac_unittest.cc", | 202 "*_win.cc", |
| 207 "*_mac_unittest.mm", | 203 "*_win.h", |
| 208 "*\bmac/*", | 204 "*_win_unittest.cc", |
| 209 "*_cocoa.h", | 205 "*\bwin/*", |
| 210 "*_cocoa.cc", | 206 "*.rc", |
| 211 "*_cocoa.mm", | 207 ] |
| 212 "*_cocoa_unittest.h", | 208 } |
| 213 "*_cocoa_unittest.cc", | 209 if (!is_mac) { |
| 214 "*_cocoa_unittest.mm", | 210 sources_assignment_filter += [ |
| 215 "*\bcocoa/*", | 211 "*_mac.h", |
| 216 ] | 212 "*_mac.cc", |
| 217 ios_sources_filters = [ | 213 "*_mac.mm", |
| 218 "*_ios.h", | 214 "*_mac_unittest.h", |
| 219 "*_ios.cc", | 215 "*_mac_unittest.cc", |
| 220 "*_ios.mm", | 216 "*_mac_unittest.mm", |
| 221 "*_ios_unittest.h", | 217 "*\bmac/*", |
| 222 "*_ios_unittest.cc", | 218 "*_cocoa.h", |
| 223 "*_ios_unittest.mm", | 219 "*_cocoa.cc", |
| 224 "*\bios/*", | 220 "*_cocoa.mm", |
| 225 ] | 221 "*_cocoa_unittest.h", |
| 226 objective_c_sources_filters = [ | 222 "*_cocoa_unittest.cc", |
| 227 "*.mm", | 223 "*_cocoa_unittest.mm", |
| 228 ] | 224 "*\bcocoa/*", |
| 229 linux_sources_filters = [ | 225 ] |
| 230 "*_linux.h", | 226 } |
| 231 "*_linux.cc", | 227 if (!is_ios) { |
| 232 "*_linux_unittest.h", | 228 sources_assignment_filter += [ |
| 233 "*_linux_unittest.cc", | 229 "*_ios.h", |
| 234 "*\blinux/*", | 230 "*_ios.cc", |
| 235 ] | 231 "*_ios.mm", |
| 236 android_sources_filters = [ | 232 "*_ios_unittest.h", |
| 237 "*_android.h", | 233 "*_ios_unittest.cc", |
| 238 "*_android.cc", | 234 "*_ios_unittest.mm", |
| 239 "*_android_unittest.h", | 235 "*\bios/*", |
| 240 "*_android_unittest.cc", | 236 ] |
| 241 "*\bandroid/*", | 237 } |
| 242 ] | 238 if (!is_mac && !is_ios) { |
| 243 posix_sources_filters = [ | 239 sources_assignment_filter += [ |
| 244 "*_posix.h", | 240 "*.mm", |
| 245 "*_posix.cc", | 241 ] |
| 246 "*_posix_unittest.h", | 242 } |
| 247 "*_posix_unittest.cc", | 243 if (!is_linux) { |
| 248 "*\bposix/*", | 244 sources_assignment_filter += [ |
| 249 ] | 245 "*_linux.h", |
| 250 chromeos_sources_filters = [ | 246 "*_linux.cc", |
| 251 "*_chromeos.h", | 247 "*_linux_unittest.h", |
| 252 "*_chromeos.cc", | 248 "*_linux_unittest.cc", |
| 253 "*_chromeos_unittest.h", | 249 "*\blinux/*", |
| 254 "*_chromeos_unittest.cc", | 250 ] |
| 255 "*\bchromeos/*", | 251 } |
| 256 ] | 252 if (!is_android) { |
| 253 sources_assignment_filter += [ |
| 254 "*_android.h", |
| 255 "*_android.cc", |
| 256 "*_android_unittest.h", |
| 257 "*_android_unittest.cc", |
| 258 "*\bandroid/*", |
| 259 ] |
| 260 } |
| 261 if (!is_chromeos) { |
| 262 sources_assignment_filter += [ |
| 263 "*_chromeos.h", |
| 264 "*_chromeos.cc", |
| 265 "*_chromeos_unittest.h", |
| 266 "*_chromeos_unittest.cc", |
| 267 "*\bchromeos/*", |
| 268 ] |
| 269 } |
| 257 # DO NOT ADD MORE PATTERNS TO THIS LIST, see set_sources_assignment_filter call | 270 # DO NOT ADD MORE PATTERNS TO THIS LIST, see set_sources_assignment_filter call |
| 258 # below. | 271 # below. |
| 259 | 272 |
| 260 # Construct the full list of sources we're using for this platform. | |
| 261 sources_assignment_filter = [] | |
| 262 if (is_win) { | |
| 263 sources_assignment_filter += posix_sources_filters | |
| 264 } else { | |
| 265 sources_assignment_filter += windows_sources_filters | |
| 266 } | |
| 267 if (!is_mac) { | |
| 268 sources_assignment_filter += mac_sources_filters | |
| 269 } | |
| 270 if (!is_ios) { | |
| 271 sources_assignment_filter += ios_sources_filters | |
| 272 } | |
| 273 if (!is_mac && !is_ios) { | |
| 274 sources_assignment_filter += objective_c_sources_filters | |
| 275 } | |
| 276 if (!is_linux) { | |
| 277 sources_assignment_filter += linux_sources_filters | |
| 278 } | |
| 279 if (!is_android) { | |
| 280 sources_assignment_filter += android_sources_filters | |
| 281 } | |
| 282 if (!is_chromeos) { | |
| 283 sources_assignment_filter += chromeos_sources_filters | |
| 284 } | |
| 285 | |
| 286 # Actually save this list. | 273 # Actually save this list. |
| 287 # | 274 # |
| 288 # DO NOT ADD MORE PATTERNS TO THIS LIST. | |
| 289 # | |
| 290 # These patterns are executed for every file in the source tree of every run. | 275 # These patterns are executed for every file in the source tree of every run. |
| 291 # Therefore, adding more patterns slows down the build for everybody. We should | 276 # Therefore, adding more patterns slows down the build for everybody. We should |
| 292 # only add automatic patterns for configurations affecting hundreds of files | 277 # only add automatic patterns for configurations affecting hundreds of files |
| 293 # across many projects in the tree. | 278 # across many projects in the tree. |
| 294 # | 279 # |
| 295 # Therefore, we only add rules to this list corresponding to platforms on the | 280 # Therefore, we only add rules to this list corresponding to platforms on the |
| 296 # Chromium waterfall. This is not for non-officially-supported platforms | 281 # Chromium waterfall. This is not for non-officially-supported platforms |
| 297 # (FreeBSD, etc.) toolkits, (X11, GTK, etc.), or features. For these cases, | 282 # (FreeBSD, etc.) toolkits, (X11, GTK, etc.), or features. For these cases, |
| 298 # write a conditional in the target to remove the file(s) from the list when | 283 # write a conditional in the target to remove the file(s) from the list when |
| 299 # your platform/toolkit/feature doesn't apply. | 284 # your platform/toolkit/feature doesn't apply. |
| (...skipping 19 matching lines...) Expand all Loading... |
| 319 # TARGET DEFAULTS | 304 # TARGET DEFAULTS |
| 320 # ============================================================================= | 305 # ============================================================================= |
| 321 # | 306 # |
| 322 # Set up the default configuration for every build target of the given type. | 307 # Set up the default configuration for every build target of the given type. |
| 323 # The values configured here will be automatically set on the scope of the | 308 # The values configured here will be automatically set on the scope of the |
| 324 # corresponding target. Target definitions can add or remove to the settings | 309 # corresponding target. Target definitions can add or remove to the settings |
| 325 # here as needed. | 310 # here as needed. |
| 326 | 311 |
| 327 # Holds all configs used for making native executables and libraries, to avoid | 312 # Holds all configs used for making native executables and libraries, to avoid |
| 328 # duplication in each target below. | 313 # duplication in each target below. |
| 329 native_compiler_configs = [ | 314 _native_compiler_configs = [ |
| 330 "//build/config:feature_flags", | 315 "//build/config:feature_flags", |
| 331 | 316 |
| 332 "//build/config/compiler:compiler", | 317 "//build/config/compiler:compiler", |
| 333 "//build/config/compiler:chromium_code", | 318 "//build/config/compiler:chromium_code", |
| 334 "//build/config/compiler:default_warnings", | 319 "//build/config/compiler:default_warnings", |
| 335 "//build/config/compiler:no_rtti", | 320 "//build/config/compiler:no_rtti", |
| 336 "//build/config/compiler:runtime_library", | 321 "//build/config/compiler:runtime_library", |
| 337 ] | 322 ] |
| 338 if (is_win) { | 323 if (is_win) { |
| 339 native_compiler_configs += [ | 324 _native_compiler_configs += [ |
| 340 "//build/config/win:lean_and_mean", | 325 "//build/config/win:lean_and_mean", |
| 341 "//build/config/win:sdk", | 326 "//build/config/win:sdk", |
| 342 "//build/config/win:unicode", | 327 "//build/config/win:unicode", |
| 343 ] | 328 ] |
| 344 } else if (is_linux) { | 329 } else if (is_linux) { |
| 345 native_compiler_configs += [ "//build/config/linux:sdk", ] | 330 _native_compiler_configs += [ "//build/config/linux:sdk", ] |
| 346 } else if (is_mac) { | 331 } else if (is_mac) { |
| 347 native_compiler_configs += [ "//build/config/mac:sdk", ] | 332 _native_compiler_configs += [ "//build/config/mac:sdk", ] |
| 348 } else if (is_ios) { | 333 } else if (is_ios) { |
| 349 native_compiler_configs += [ "//build/config/ios:sdk", ] | 334 _native_compiler_configs += [ "//build/config/ios:sdk", ] |
| 350 } else if (is_android) { | 335 } else if (is_android) { |
| 351 native_compiler_configs += [ "//build/config/android:sdk", ] | 336 _native_compiler_configs += [ "//build/config/android:sdk", ] |
| 352 } | 337 } |
| 353 if (!is_win) { | 338 if (!is_win) { |
| 354 native_compiler_configs += [ "//build/config/gcc:symbol_visibility_hidden" ] | 339 _native_compiler_configs += [ "//build/config/gcc:symbol_visibility_hidden" ] |
| 355 } | 340 } |
| 356 if (is_clang) { | 341 if (is_clang) { |
| 357 native_compiler_configs += [ | 342 _native_compiler_configs += [ |
| 358 "//build/config/clang:find_bad_constructs", | 343 "//build/config/clang:find_bad_constructs", |
| 359 "//build/config/clang:extra_warnings", | 344 "//build/config/clang:extra_warnings", |
| 360 ] | 345 ] |
| 361 } | 346 } |
| 362 | 347 |
| 363 # Optimizations and debug checking. | 348 # Optimizations and debug checking. |
| 364 if (is_debug) { | 349 if (is_debug) { |
| 365 native_compiler_configs += [ "//build/config:debug" ] | 350 _native_compiler_configs += [ "//build/config:debug" ] |
| 366 default_optimization_config = "//build/config/compiler:no_optimize" | 351 _default_optimization_config = "//build/config/compiler:no_optimize" |
| 367 } else { | 352 } else { |
| 368 native_compiler_configs += [ "//build/config:release" ] | 353 _native_compiler_configs += [ "//build/config:release" ] |
| 369 default_optimization_config = "//build/config/compiler:optimize" | 354 _default_optimization_config = "//build/config/compiler:optimize" |
| 370 } | 355 } |
| 371 native_compiler_configs += [ default_optimization_config ] | 356 _native_compiler_configs += [ _default_optimization_config ] |
| 372 | 357 |
| 373 # Symbol setup. | 358 # Symbol setup. |
| 374 if (is_clang && (is_linux || is_android)) { | 359 if (is_clang && (is_linux || is_android)) { |
| 375 # Clang creates chubby debug information, which makes linking very slow. | 360 # Clang creates chubby debug information, which makes linking very slow. |
| 376 # For now, don't create debug information with clang. | 361 # For now, don't create debug information with clang. |
| 377 # See http://crbug.com/70000 | 362 # See http://crbug.com/70000 |
| 378 # TODO(brettw) This just copies GYP. Why not do this on Mac as well? | 363 # TODO(brettw) This just copies GYP. Why not do this on Mac as well? |
| 379 default_symbols_config = "//build/config/compiler:no_symbols" | 364 _default_symbols_config = "//build/config/compiler:no_symbols" |
| 380 } else if (symbol_level == 2) { | 365 } else if (symbol_level == 2) { |
| 381 default_symbols_config = "//build/config/compiler:symbols" | 366 _default_symbols_config = "//build/config/compiler:symbols" |
| 382 } else if (symbol_level == 1) { | 367 } else if (symbol_level == 1) { |
| 383 default_symbols_config = "//build/config/compiler:minimal_symbols" | 368 _default_symbols_config = "//build/config/compiler:minimal_symbols" |
| 384 } else if (symbol_level == 0) { | 369 } else if (symbol_level == 0) { |
| 385 default_symbols_config = "//build/config/compiler:no_symbols" | 370 _default_symbols_config = "//build/config/compiler:no_symbols" |
| 386 } else { | 371 } else { |
| 387 assert(false, "Bad value for symbol_level.") | 372 assert(false, "Bad value for symbol_level.") |
| 388 } | 373 } |
| 389 native_compiler_configs += [ default_symbols_config ] | 374 _native_compiler_configs += [ _default_symbols_config ] |
| 390 | 375 |
| 391 # Windows linker setup for EXEs and DLLs. | 376 # Windows linker setup for EXEs and DLLs. |
| 392 if (is_win) { | 377 if (is_win) { |
| 393 if (is_debug) { | 378 if (is_debug) { |
| 394 default_incremental_linking_config = | 379 _default_incremental_linking_config = |
| 395 "//build/config/win:incremental_linking" | 380 "//build/config/win:incremental_linking" |
| 396 } else { | 381 } else { |
| 397 default_incremental_linking_config = | 382 _default_incremental_linking_config = |
| 398 "//build/config/win:no_incremental_linking" | 383 "//build/config/win:no_incremental_linking" |
| 399 } | 384 } |
| 400 windows_linker_configs = [ | 385 _windows_linker_configs = [ |
| 401 default_incremental_linking_config, | 386 _default_incremental_linking_config, |
| 402 "//build/config/win:sdk_link", | 387 "//build/config/win:sdk_link", |
| 403 "//build/config/win:common_linker_setup", | 388 "//build/config/win:common_linker_setup", |
| 404 # Default to console-mode apps. Most of our targets are tests and such | 389 # Default to console-mode apps. Most of our targets are tests and such |
| 405 # that shouldn't use the windows subsystem. | 390 # that shouldn't use the windows subsystem. |
| 406 "//build/config/win:console", | 391 "//build/config/win:console", |
| 407 ] | 392 ] |
| 408 } | 393 } |
| 409 | 394 |
| 410 set_defaults("executable") { | 395 set_defaults("executable") { |
| 411 configs = native_compiler_configs + [ | 396 configs = _native_compiler_configs + [ |
| 412 "//build/config:default_libs", | 397 "//build/config:default_libs", |
| 413 ] | 398 ] |
| 414 if (is_win) { | 399 if (is_win) { |
| 415 configs += windows_linker_configs | 400 configs += _windows_linker_configs |
| 416 } else if (is_mac) { | 401 } else if (is_mac) { |
| 417 configs += [ | 402 configs += [ |
| 418 "//build/config/mac:mac_dynamic_flags", | 403 "//build/config/mac:mac_dynamic_flags", |
| 419 "//build/config/mac:mac_executable_flags" ] | 404 "//build/config/mac:mac_executable_flags" ] |
| 420 } else if (is_linux || is_android) { | 405 } else if (is_linux || is_android) { |
| 421 configs += [ "//build/config/gcc:executable_ldconfig" ] | 406 configs += [ "//build/config/gcc:executable_ldconfig" ] |
| 422 } | 407 } |
| 423 } | 408 } |
| 424 | 409 |
| 425 set_defaults("static_library") { | 410 set_defaults("static_library") { |
| 426 configs = native_compiler_configs | 411 configs = _native_compiler_configs |
| 427 } | 412 } |
| 428 | 413 |
| 429 set_defaults("shared_library") { | 414 set_defaults("shared_library") { |
| 430 configs = native_compiler_configs + [ | 415 configs = _native_compiler_configs + [ |
| 431 "//build/config:default_libs", | 416 "//build/config:default_libs", |
| 432 ] | 417 ] |
| 433 if (is_win) { | 418 if (is_win) { |
| 434 configs += windows_linker_configs | 419 configs += _windows_linker_configs |
| 435 } else if (is_mac) { | 420 } else if (is_mac) { |
| 436 configs += [ "//build/config/mac:mac_dynamic_flags" ] | 421 configs += [ "//build/config/mac:mac_dynamic_flags" ] |
| 437 } | 422 } |
| 438 } | 423 } |
| 439 | 424 |
| 440 set_defaults("source_set") { | 425 set_defaults("source_set") { |
| 441 configs = native_compiler_configs | 426 configs = _native_compiler_configs |
| 442 } | 427 } |
| 443 | 428 |
| 444 # ============================================================================== | 429 # ============================================================================== |
| 445 # TOOLCHAIN SETUP | 430 # TOOLCHAIN SETUP |
| 446 # ============================================================================== | 431 # ============================================================================== |
| 447 # | 432 # |
| 448 # Here we set the default toolchain, as well as the variable host_toolchain | 433 # Here we set the default toolchain, as well as the variable host_toolchain |
| 449 # which will identify the toolchain corresponding to the local system when | 434 # which will identify the toolchain corresponding to the local system when |
| 450 # doing cross-compiles. When not cross-compiling, this will be the same as the | 435 # doing cross-compiles. When not cross-compiling, this will be the same as the |
| 451 # default toolchain. | 436 # default toolchain. |
| (...skipping 18 matching lines...) Expand all Loading... |
| 470 } else if (is_linux) { | 455 } else if (is_linux) { |
| 471 host_toolchain = "//build/toolchain/linux:$build_cpu_arch" | 456 host_toolchain = "//build/toolchain/linux:$build_cpu_arch" |
| 472 set_default_toolchain("//build/toolchain/linux:$cpu_arch") | 457 set_default_toolchain("//build/toolchain/linux:$cpu_arch") |
| 473 } else if (is_mac) { | 458 } else if (is_mac) { |
| 474 host_toolchain = "//build/toolchain/mac:clang" | 459 host_toolchain = "//build/toolchain/mac:clang" |
| 475 set_default_toolchain(host_toolchain) | 460 set_default_toolchain(host_toolchain) |
| 476 } else if (is_ios) { | 461 } else if (is_ios) { |
| 477 host_toolchain = "//build/toolchain/mac:host_clang" | 462 host_toolchain = "//build/toolchain/mac:host_clang" |
| 478 set_default_toolchain("//build/toolchain/mac:clang") | 463 set_default_toolchain("//build/toolchain/mac:clang") |
| 479 } | 464 } |
| OLD | NEW |