tree 5954eea0d4b07944af1d29263f20d83e87914389
parent 2b3be5179e18975b4f12a9ecdf91ea08f3bb9f4b
author Mark Mentovai <mark@chromium.org> 1503926378 -0400
committer Mark Mentovai <mark@chromium.org> 1503936425 +0000

Update GYP to 324dd166b7c0b39d513026fa52d6280ac6d56770

This picks up 3½ years of changes, but 4ff48eb18307 is really what’s
needed to un-break “gclient sync” in Breakpad.

e16906f6a2db android: Add support for multiarch builds
d49e6fec9631 Adds xcode-ninja flavor for Xcode wrapper projects
a336035b6d4e Avoid duplicating non-configuration settings when merging
             configurations
4e05c3342e09 Revert "Fix None target type with Ninja build."
d4779eb1916a Use context manager to manage OS environment in tests
5a8a04430afd Add MASM settings support to msvs_settings
9a184eea4849 Make test/cxxflags use a user define instead of
             __OPTIMIZE__
56a70c5641bb gyp: use all processors instead of hard-coded 8
5fd7ce16426b gyp: 1% faster by optimizing IsPathSections
bf9a0ad1a214 gyp: fix O(n^2) in dependency calculations
1cd602be60dd gyp: use a set() in DeepDependencies for less O(n^2)
dc866c743496 gyp: cache conditional ASTs for 3 CPU seconds (5%) gain
aec8079bd717 Remove the default setting for clcompile_cmd in msvs-ninja
1fa63533989a win: disable two flaky tests on gyp-win32
b5dd37303a71 Show ASM output file instead of input file, just like CC
             and CXX. R=scottmg@chromium.org
8929839ae384 gyp: avoid copying items that will be deleted
6d8eda691886 gyp: isinstance -> type for another 1-5% save
9f14141afe73 gyp performance: Another fixed O(n^2) in dependency calcs
f983231492d1 Test handling of empty RULE_INPUT_DIRNAME and fix this on
             android
09af1810a11f 1-5% faster gyp: Use a simpler deepcopy
4e6d425104c2 gyp: Optimize IsStrCanonicalNumber for common case
fc1e3d52ccc5 android: only emit multilib variables for target builds
152521d7f307 Revert "gyp: use all processors instead of hard-coded 8."
c2f33dbfd5b1 Append src path to compiler path retrieved from build
             configuration
11b270c9c7d5 Make the command cache use the directory name as part of
             the cache key
03c3c47fb42e Add xcode_ninja_target_pattern to xcode-ninja generator
63de31e166cc Silence pylint for the imported OrderedSet class
6e8e8eb49ad1 Prefer MSVS 2013 over MSVS 2010
147a8aebd6cc Remove pylintrc and enable pylint checks for the Xcode
             generator
54538a15d434 android: set GYP_VAR_PREFIX as a local variable in
             actions/rules
1a622e23d0c3 ninja/mac: Update libtool noise filter for Xcode 5
9acbe0c6f78a Don't exclude sources for 'none' targets
3efe68d8cf67 Fix link step when specifying CLANG_CXX_LIBRARY
a981c9389d12 ninja win: filter 64 bit idl processing, and confirm in
             test
dbcdbde823d2 Fix for some rules not being run if their trigger is also
             an action dependency
482fd5de5c82 Use relative path/dir msbuild variables to map $(InputDir)
             and $(InputPath)
fb36c3fe0124 msvs: Revert r1920 and add a test for excluded idl
11e243c9fd62 Fix msvs-ninja OutputDirectory path
0ff4e1aa1964 android: Handle inputs with spaces inside make functions
41f4de6e6db4 gyp: use all processors instead of hard-coded 8
23d664144f92 Fix msvs-ninja clean build command / target
3917682a16d5 Add option for link concurrency
018065bdc1a6 Add unittest for 'AR' in 'make_global_settings'
0c9a7aa9446f Override the user's language settings during tests
e97dbe88f23b ninja win: Remove obsolete comment, and make sure cc/cxx
             are always overridden
f6d25e9ca24a Use context manager to manage OS environment in tests
f9242383d34e Teach Ninja generator about 'AR' in 'make_global_settings'
5a0658e560c0 First crack at adding a GYP_GENERATOR for determining
             various things
133926d7f47e Add unittest for 'LD' in 'make_global_settings'
822a998ac082 Remove unused parameters from test code
466a82eba30e Revise unittest for 'LD' in 'make_global_settings'
e35391e5b016 Revise unittest for 'AR' in 'make_global_settings'
4d45bd7473c8 Teach Ninja generator about 'LD'/'LD.host' specified in
             'make_global_settings_ld'
8746d8100e41 Teach Ninja generator about 'AR.host' specified in
             'make_global_settings'
dacdd3802559 [gyp][Android] Implement
             TestGypAndroid.run_built_executable
63a1f78eb0ec ninja: Pass .so files outside of --start-group/--end-group
c5c01bbc72f4 msvs: ensure that failing actions make the build fail with
             multiple actions
796b58cddb84 Makes analyzer strip off a leading path separator
1c4be478a439 Introduce '--no-duplicate-basename-check' option to disable
             the check of duplicate basenames
867a23f4b596 Xcode: Add xcdatamodeld = wrapper.xcdatamodeld in
             extension_map
d1e5ccaf05ba Fixes two bugs in analyzer
80e01de623ed Fixes bug in path handling of analyzer
b886dac6179e Add test files for
             https://codereview.chromium.org/406523005/
39fd3e8ea1c8 ninja/win: Put common msvs_system_include_dirs into
             %INCLUDE%
f536bafefff9 This CL adds support for extension in GYP
a48744759a8a ninja: Add support for 'ninja_use_console' in actions/rules
b95cbeb2b4a5 Changes analyzer to search for targets
cb818ae005d8 Enable custom suffixes for Mac bundles
39bb8956231c Avoid infinite recursion with identity variables
ac2684beed6e Updates analyzer to output to a file
cd5d655d509f Guard against configurations without 'xcode_settings'
6bd80e4bba1e Pull in relevant targets when using xcode-ninja
93303ec2a58c Currently I've special cased gyp* file modifications higher
             in the stack. By that I mean if a gyp* file has been
             modified I don't run analyze and assume everything has
             changed. This change adds support for modification to gyp*
             files. If a gyp* file has changed it assumes all targets in
             the file are modified. Similarly if an included file has
             been modified all targets in the file that did the include
             are considered modified. Lastly, if one of the modified
             files is specified on the command line via -I the I early
             out and assume everything needs to be recompiled
474e6f6c6772 Style changes for analyzer __ -> _ and lots of single
             newlines to double newlines
ed274e3ea588 Provide a way to suppress implicit MIDL generation rules
             for actions
8432ec2cc86f Removes old way to specify files to look for
ce177a087448 Makes the analyzer output the set of targets needing a
             build
b38e5f2f93fa ninja win: don't expect pdb to be generated when
             GenerateDebugInformation: false
07465a390fff android: Make buildbot able to use a custom manifest
fa401a9913d3 Makes analyzer output names of all executable target types
43a3b907eb20 android: Support host multilib builds
02717b7ddda2 Support for custom NM/readelf binaries in your toolchain
6760f5b1a485 Makes matching of build files work when absolute
1ff523f4eccd Changes the ninja generator to output phony targets for
             uninteresting targets
94b57d39a88c Changes ninja generator to only output empty names if not
             already output
80a221d3ac20 Fix indentation for emacs and add missing keyword
911f177ec4ce android: Don't emit useless info into generated makefiles
46282cedf40f android: Add a way to override build system variables
ce6c5076aa98 Don't return unfound VS version, raise instead
0eedec84850c Don't run windows tests on other platforms
c5aaab5e438b Adds swift file support to xcode generation
397b1c684b0b I need this change to create Windows 8.1/Windows Phone 8.1
             projects that compile modules that can be consumed by
             Windows Store Applications (WinRT)
d77f8ea48f8c Revert r1978 and r1979
825a7599122b Revert "I need this change to create Windows 8.1/Windows
             Phone 8.1 projects that compile modules that can be
             consumed by Windows Store Applications (WinRT)."
0f464a10fcfd ninja win: Add support for 'CallingConvention'
f79c48344324 Added msvs_enable_winrt to enable creating Windows Store
             compatible projects for .dlls that are consumed by WinRT
             applications
05c509393b3f Add support for MIDL include directories
55e3f25dfe2a ninja: Don't rerun actions/rules based on where gyp was
             invoked
2be082cb9513 Add Ninja support for MSVS $(TargetExt), $(TargetFileName)
             and $(TargetPath) macros
9e65902d3601 gypd: update with required default variables
9202573e476f android: Build against NDK prebuilts, not system libraries
a61e86088492 Add (partial) support for assets catalog
a79c3560865f Simplify and optimize FindCycles
540e4b1e665a Stop checking for duplicate basenames
b13d8f243da1 Moves warning about invalid targets into 'invalid_targets'
             in result
a83e5acab1a8 Add indentation offset guess for gyp emacs mode
723d919ae70c Switch to 2013 now that it's what's on the bots
f491c0b3aae9 msvs: Fix rule dependencies for VS2013
487c0b6ae8b4 Set ZERO_AR_DATE=1 when running libtool
cb9f256d75f5 ninja win: Don't return unfound VS version, raise instead
9c58d52d6b6c Fix dependency broken on mac when building FAT binaries
f1c42f73e4cc Revert r1998, it breaks iOS builds
addc5ea33ab3 win: Use the _winreg module for registry access
0131edea33bb ninja win: Add msvs emulation for FloatingPointModel
fb8a7bd65062 Add support for "else if" in gyp conditions
66b3c809f3d9 Mechanical changes to cleanup pylint presubmit checks
acf3295fe144 Add back support for /Gv now that gyp-win64 has VS2013
4621f4d44814 Initialize struct flock for AIX with O_LARGEFILE used by
             Python
0a381c067483 ninja/win: Let link-wrapper convert /s to \s in the linker
             command
fe00999dfaee android: don't try to handle suppress_wildcard
fa59ed0b9a01 Fixed Gyp Xcode generator for libraries with identical
             names
d75685990507 Cache data for included files in the multiprocess load
             codepath
ce7a555f1c58 win: Add support for VS2015
201a8c83eb33 Add support for iOS WatchKit apps in GYP
32ca1cd8e010 Add support for generating an Eclipse .classpath file
8c31354f5e0c Fix mixed line endings warning
4f4c7cb5a63e Add TestGypXcodeNinja to run tests against the xcode-ninja
             generator
f1dc682b70a6 Fix: xcode-ninja should generate Xcode workspace into
             generator_output
cdf037c1edc0 Fix: xcode-ninja should copy the product extension to the
             wrapper project
82b08049cc0b Set ZERO_AR_DATE=1 when running libtool
8b69f7d23df5 Add support for generating an Eclipse .classpath file (bug
             fix)
789a019a8320 Don't serialize linking for the make generator by default
194ec65a55ed Revert 2011 'Fixed Gyp Xcode generator for libraries with
             identical names.'
91a89564da3d Add 'depfile' option to actions
3dde7bfb50a6 don't assume bash is installed
28384e55a5c8 msvs/ninja win: Fix support for
             ImageHasSafeExceptionHandlers
adb7d24b9fc1 Revert "msvs/ninja win: Fix support for
             ImageHasSafeExceptionHandlers"
b28bd7ddd143 win: 'EnableEnhancedInstructionSet': '5' now enables
             /arch:AVX2
104e21ecf6f2 mac: Followup to ZERO_AR_DATE, touch the -o archive, rather
             than expecting only one
4d7c139b1820 win: Add NoImportLibrary flag for ninja generator
67000714d51e Reland "msvs/ninja win: Fix support for
             ImageHasSafeExceptionHandlers"
16f9f4566f5d msvs: Prefer x64 toolset if we are running on 64-bit
6194e32f7fcb Make msvs-ninja work for target-arch=x64
34640080d08a ninja/posix: Introduce support for arflags variable
7cd601835636 Updating gyp repo for git, preparing for cq
dd831fd86e7a Fix script url
a5bd08f28629 Adds the ability for 'copies' in Xcode project files to
             specify the 'Code Sign on Copy' option
002ebe4420a3 Fixed version of https://codereview.chromium.org/748793002
50ab31edc847 Fix typo in ternary operator
4a9b712d5cb4 Fix gyp analyzer generator on mac
d9823985797f Convert plist and strings to binary for iOS
28c00336a403 Bump Xcode compatibility version from 45 (Xcode 2.4-3.1) to
             46 (Xcode 3.2)
2cd9d0633c96 [ninja-xcode] Include action inputs in hybrid builds
d174d75bf69c Export generator flavor to gyp scripts
2b44e5987d5a Add missing identity variables to gypd generator
e1c8fcf74b68 Assert when source is an absolute path
c5859a298166 Migrate GYP docs over from the wiki
69dfb493a22f LLVM_LTO support for make / ninja
2889664b9fa8 Address scottmg comments from
             https://codereview.chromium.org/1003273007/
2a5511bd901f Improve generated Makefile rules for rules several outputs
2f66a3f94953 Whitespace change to test the new GYP waterfalls
3601f26003c6 Make dump_dependency_json.py write <| list files to the
             output directory rather than the source tree
8866260996c0 win: prefer amd64_x86 compiler on >= 2013, not just 2013
0bb67471bca0 Slightly better docs for git instead of svn
f34b9aa7c9d6 Remove the Android generator
9f594095c5b1 Added msvs_application_type_revision for winrt compilation
c0cf1f22eb42 Revert "Stop checking for duplicate basenames"
4dd5d3c614fb Update shared_library test after c0cf1f22eb
29e94a3285ee Avoid lint presubmit error in dump_dependency_json
08429da7955a Update cmake generator to handle Skia Android build
aa537916dcb5 msvs: Make sure stdout/stderr from rule commands get logged
fdc7b812f99e Makes analyzer always output static_libraries that have
             changed
79de4031069f Fix gyp->make translation of rules with several outputs
9b2b25aececd Correct braces in input format reference doc
b4781fc38236 MSVS: Normalize paths against gyp directory
127b311bf61d Adds some debugging output to analyzer
fdcd8bc10c93 More debugging for analyzer
acfc10d29072 Revert "MSVS: Normalize paths against gyp directory."
5122240c5e5c Fix support for iOS today extensions on latest Xcode beta
ae276266d580 Make DependencyGraph.DeepDependencies() depth-first
25ed9ac4ac2a Do not remote duplicate entries from ldflags when
             generating ninja files as it changes behavior
6ee91ad86598 Reduce DefaultConcurrentLinks from phys/4GB to phys/5GB
658f3a81995b Disable currently failing gyp tests on win to make the bots
             green
479dacf7be5f Disable GYP tests currently failing on the Mac bot
36d99ff23099 Disable test/win/gyptest-link-defrelink.py
d6adc48df899 Fix the default tryserver lists in PRESUBMIT.py
81c2e5ff92af Added msvs_target_platform_version and
             msvs_target_platform_minversion for winrt compilation
010fb9d696e7 msvs_emulation: Add support for StackReserveSize and
             StackCommitSize
edccc7bad7da Analyzer didn't match correctly targets that defined path
             to inputs with '.' relative path values. So let normalize
             path before matching
bae26e800c7f Inject pylib first in the path. This ensures that test load
             the version of pylib in this repo, not elsewhere on the
             system
008cf1c04393 Improve error messages when <!(commands) fail
121d89dfcd4f Make RelativePath use abspath rather than realpath for the
             'path' variable. This allows gyp to work correctly in
             symlink-heavy environments. Basically, this is because gyp
             paths need to be in a consistent tree, so we need to
             compute a path to the target within the *stated* tree, even
             if it is not the real underlying path to the target. The
             'relative_path' variable does need to be resolved using
             realpath, since gyp or the underlying build system might cd
             to it before looking for the 'path' target
2b17e0b26a93 Fix paths with different seperators being compared in the
             analyzer on Windows
5d01a8cda53b Revert "Make RelativePath use abspath rather than realpath
             for the 'path' variable."
1f374df95de1 Make sure GYP supports compiling managed code
cf3170e30578 Update gyp LINK_COMMANDS_AIX to support both 32-bit and
             64-bit files. * cmd_alink: Add -X32_64 option. *
             cmd_alink_thin: Add -X32_64 option
01528c724483 Fallback to '.tbd' for system missing '.dylib'
7904ce96fd01 Make the ninja generator handle symlinked paths correctly
741b7f1d257b Add support for a CPPFLAGS_host environment variable, and
             update the cflags test to verify it
265f495cc3a3 Fix infinite loop on empty variable name
c3d861c8bca4 ninja win: Suppress noisy messages from link.exe when LTCG
             is enabled
8f3918d7408f Promote documents in md-pages branch
b3cef028a51a AIX's cp command does not support -af which is the default,
             so use -RPf which achives something similar
427a0406159c Adding framework path mapping for 'copies' action in gyp
             files
3f21260b4340 Change analyzer to search for build_targets from supplied
             targets
e2e928bacd07 Add support for Xcode LastUpgradeCheck project attributes,
             allowing suppression of Xcode project configuration
             warnings
68f268008844 Add support for kernel-extensions in GYP
ae2d73840216 Set optional LastSwiftUpdateCheck to Xcode project
             attributes
f2c3cfc3b1df win: Fix missing loadable_module dependency in ULDI mode
2c1e6cced235 Revert of e2e928bacd07fead99a18cb08d64cb24e131d3e5
0f5bae131e58 Change CMAKE_SOURCE_DIR to CMAKE_CURRENT_LIST_DIR
2dd620e10329 Attempt again to upstream Xcode project version warning
             suppression, from 1416453003 and 1430573009, and rolled
             back in 1423583004
f54bd199e717 Adds back lookup of 'all' targets
70fa8bbeb292 Changes semantics of analyzer
33b351b2eda8 Fix bug in analyze were empty invalid_targets was
             incorrectly written
e1133480da78 Changes analyzer to include test_targets in compile_targets
f06a5a0e46ce Remove deprecated code path from analyzer.py
567d084f2cb1 Add support for NetBSD (OS = netbsd)
c385ad654b30 Copy files with `cp -pPRf` on OpenBSD
f4d65e35719c Generate response files out of the source tree with xcode &
             xcode-ninja
e2313c02ad7b Fix CalculateGeneratorInputInfo for "xcode-ninja" generator
6fb8bd829f0c Derive default for ar_host from ar
70ee80e82bac Error checking to clarify SYSTEMROOT errors
863d9a4f4119 Make ninja work with XCTests for iOS
b85ad3e578da ninja: Correctly handle copies steps in sourceless
             shared_library targets
b362bbfbc877 mac: Extend libtool filter to also match fat builds
2b086540aeed Peter Kasting <pkasting@chromium.org>
4ff48eb18307 Switch the dependencies to their Git mirror
54b7dfc03f74 mac ninja&make: Use xcrun instead of xcodebuild where
             possible
9e2ceaef5352 GYP: Make GYP build deterministic
6f83895e9622 Stop copying deprecated ResourceRules.plist
aa0301be5a24 Allow converting resource plists to binary
87ac4d0e63fc Add limited support for Mac to CMake generator
7ab6f482e87a [iOS] Preserve global symbols when calling strip (-x) on
             today extensions
32cb1709adc3 Add timestamp=none to codesign flags
57190fa27868 [iOS] Update today_extension link flags
18ce4ecf6cf2 [iOS] Set --auto-activate-custom-fonts for ibtool compile
a230124f3834 Avoid gyp_chromium failures when vcvarsall.bat was run
66bbdf4c6b45 Revert "[iOS] Set --auto-activate-custom-fonts for ibtool
             compile."
5170bfd38fe7 [Mac/iOS] Add custom fonts, target device and minimum
             deployment target to _CopyXIBFile
51383232066a Update Xcode emulation extra plist items
7d29c3de1f5e Revert "Update Xcode emulation extra plist items."
b25bbc1f942d Re-land update Xcode emulation extra plist items for Xcode
             7.2
2f9ffdc96135 Support sdk_version of None
ed163ce233f7 Don't recompute environment for mac bundles unnecessarily
0cd47bf6960e Make login.keychain and 'Provisioning Profiles' symlinks
d84fed246cd4 Fix tests with Xcode 7
1950f6761bdf Xcode-ninja: Add excluded files to the project
             sources_for_indexing.xcodeproj
61259d585ce9 ninja/win: Use qualified paths for precompiled headers
5874a3cf9bac Adjust pretty_gyp to align comments with the appropriate
             braces
fbcb317c7513 ninja: Add target_rpath generator flag
133eaf70b372 Add support for iOS Frameworks with header maps
8e8c3178d9d2 Detect and warn on missing vcvarsall.bat
28340b46df65 Support DEVELOPER_DIR in gyp-ninja for mac
3fa0c6038873 [GN] Use hard-link if possible when copying to bundle
697933c2e3b3 Fix mac_tool.py copy-bundle-resource errors
4ec6c4e3a94b [iOS/OS X] Copy file instead of hard-linking them
f9ac7a9ba1c4 gyp-win-tool: Let LinkWrapper only transmogrify / when the
             host platform is Windows
34d3fba9d167 gyp-win-tool: Fix regression from my last change
6ea68631cdab gyp-win-tool: Don't use shell=True on non-Windows hosts
db72e9fcf55b Fix header map nextPowerOf2 method
4cf07e8d6167 [ios-ninja] Support xctests in devices in release
e24c83726b72 Adds support for a new target spec: 'mac_xcuitest_bundle'.
             This allows us to create UI testing bundles
02b145a1a4f4 Enabling /ZW (CompileAsWinRT) option for msvs
bce1c7793010 ninja/mac: Add horrible workaround for horrible Xcode 7.3
             ld bug
c61b0b35c839 [gyp-ninja] Set simulator and device SDKROOT for iOS
35eafcd93951 Ignore more Xcode stderr logging information
bac4680ec9a5 Only call CopyStringsFile if convert_to_binary is False
e7079f0e0e14 Fix :rfc1034identifier when the value contains underscore
1f989f652a30 Complete PBXCopyFilesBuildPhase TODO in xcodeproj_file.py
93cc6e2c23e4 Make the ninja backend transitively check for C++ sources
             to use the C++ compiler for linking
702ac58e4772 Add new target type called windows_driver. * Modify GYP to
             set the PlatformToolset, the DriverType and the
             TargetVersion * Add msvs_target_version configuration
5dc5a5b1718e fix common "NameError"s
920ee58c3d31 Hash intermediate file name to avoid ENAMETOOLONG
ef2f29a7311b msvs: Allow target platform version without WinRT
940a15ee3f1c Update shared library extension on AIX to .a
9733aa652da4 Set up a CQ for gyp
a7055b3989c1 Make Gerrit the default code review system for gyp
aae1e3efb507 CQ config: add gerrit CQAbility verifier
95da7665b1a3 [win-test] loosen win-driver-target-type test
eb296f67da07 [win] Add support for MS VS2017 (via Registry)
19495aa28282 Update test/no-cpp/gyptest-no-cpp
a94b02ec68fb Disable a bunch of tests on Mac
ae76d9198630 Clean up gyptest.py
b62d04ff85e6 win,ninja: ninja generator better on windows
8dc77241251e Disable flaky test/copies/gyptest-all under msvs
e8850240a433 Fix MSVC++ 32-on-32 builds after b62d04ff85e6
ffd524cefaad win ninja/make: Always use a native compiler executable
             with MSVS 2017
a478c1ab51ea win: mkdir even when copying directory
d61a9397e668 mac_tool.py: Handle non-zero ibtool return code
4801a5331ae6 gyp: update xml string encoding conversion
324dd166b7c0 gyp: show descriptive Windows SDK detection error
Change-Id: I7b9e9bf9098469e94e657aa46ff7f6f7001a60df
Reviewed-on: https://chromium-review.googlesource.com/638090
Reviewed-by: Mike Frysinger <vapier@chromium.org>
