Created Notes on gyp (markdown) authored by Krzysztof Kowalczyk's avatar Krzysztof Kowalczyk
We're trying to rewrite nmake-based build system for Sumatra in [gyp](https://github.com/sumatrapdfreader/sumatrapdf/tree/master/gyp). Gyp is a meta-build system that generates project files (Visual Studio, XCode, makefiles) based on gyp description, which is json-like.
Gyp is not well documented, what I know comes from reverse-engineering by looking at .gyp files from other projects, found with [github code search](https://github.com/search?utf8=%E2%9C%93&q=variables+extension%3Agyp&type=Code&ref=searchresults)
This is a summary of what keys can be used in what context:
```
Configuration settings:
defines
msbuild_toolset : v120_xp, v120
msvs_settings*
target_defaults
configurations - dict of configurations,that map name to configuration settins
targets
target_name
type : executable, shared_library, static_library
variables
include_dirs
sources
defines
dependencies
direct_dependent_settings
include_dirs
link_settings
libraries
msvs_disabled_warnings : [4996, 4800]
msvs_settings
VCCLCompilerTool
InlineFunctionExpansion
EnableIntrinsicFunctions
EnableFunctionLevelLinking
FavorSizeOrSpeed : 1 - speed,
OmitFramePointers : true, false
Optimization : 0 - none, 2 - max speed
StringPooling : true, false
WholeProgramOptimization : true, false
RuntimeLibrary : 0 - /MT, 1 - /MTd
VCLinkerTool
SubSystem : 1 - Console, 2 - Windows
EnableCOMDATFolding : 2 - /opt:icf
OptimizeReferences : 2 - /opt:ref
LinkTimeCodeGeneration : 1 - UseLinkTimeCodeGeneration
LinkIncremental : 1 - disable
```