lounge_lizard 0.1.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (348) hide show
  1. checksums.yaml +7 -0
  2. data/.gitignore +11 -0
  3. data/.gitmodules +3 -0
  4. data/.rspec +2 -0
  5. data/CODE_OF_CONDUCT.md +74 -0
  6. data/Gemfile +4 -0
  7. data/Guardfile +33 -0
  8. data/LICENSE.txt +21 -0
  9. data/README.md +50 -0
  10. data/Rakefile +43 -0
  11. data/bin/console +14 -0
  12. data/bin/setup +8 -0
  13. data/circle.yml +14 -0
  14. data/ext/drafter/CHANGELOG.md +278 -0
  15. data/ext/drafter/Dockerfile +17 -0
  16. data/ext/drafter/Makefile +62 -0
  17. data/ext/drafter/appveyor.yml +17 -0
  18. data/ext/drafter/bin/drafter +0 -0
  19. data/ext/drafter/build/Makefile +387 -0
  20. data/ext/drafter/build/drafter.Makefile +6 -0
  21. data/ext/drafter/build/drafter.target.mk +159 -0
  22. data/ext/drafter/build/ext/snowcrash/libmarkdownparser.target.mk +141 -0
  23. data/ext/drafter/build/ext/snowcrash/libsnowcrash.target.mk +154 -0
  24. data/ext/drafter/build/ext/snowcrash/libsundown.target.mk +149 -0
  25. data/ext/drafter/build/ext/snowcrash/perf-libsnowcrash.target.mk +147 -0
  26. data/ext/drafter/build/ext/snowcrash/snowcrash.Makefile +6 -0
  27. data/ext/drafter/build/gyp-mac-tool +606 -0
  28. data/ext/drafter/build/libdrafter.target.mk +186 -0
  29. data/ext/drafter/build/libsos.target.mk +137 -0
  30. data/ext/drafter/build/out/Release/drafter +0 -0
  31. data/ext/drafter/build/out/Release/libdrafter.dylib +0 -0
  32. data/ext/drafter/build/out/Release/libmarkdownparser.a +0 -0
  33. data/ext/drafter/build/out/Release/libsnowcrash.a +0 -0
  34. data/ext/drafter/build/out/Release/libsos.a +0 -0
  35. data/ext/drafter/build/out/Release/libsundown.a +0 -0
  36. data/ext/drafter/build/out/Release/obj.target/drafter/src/config.o +0 -0
  37. data/ext/drafter/build/out/Release/obj.target/drafter/src/main.o +0 -0
  38. data/ext/drafter/build/out/Release/obj.target/drafter/src/reporting.o +0 -0
  39. data/ext/drafter/build/out/Release/obj.target/libdrafter/src/ConversionContext.o +0 -0
  40. data/ext/drafter/build/out/Release/obj.target/libdrafter/src/NamedTypesRegistry.o +0 -0
  41. data/ext/drafter/build/out/Release/obj.target/libdrafter/src/RefractAPI.o +0 -0
  42. data/ext/drafter/build/out/Release/obj.target/libdrafter/src/RefractDataStructure.o +0 -0
  43. data/ext/drafter/build/out/Release/obj.target/libdrafter/src/RefractElementFactory.o +0 -0
  44. data/ext/drafter/build/out/Release/obj.target/libdrafter/src/RefractSourceMap.o +0 -0
  45. data/ext/drafter/build/out/Release/obj.target/libdrafter/src/Render.o +0 -0
  46. data/ext/drafter/build/out/Release/obj.target/libdrafter/src/Serialize.o +0 -0
  47. data/ext/drafter/build/out/Release/obj.target/libdrafter/src/SerializeAST.o +0 -0
  48. data/ext/drafter/build/out/Release/obj.target/libdrafter/src/SerializeResult.o +0 -0
  49. data/ext/drafter/build/out/Release/obj.target/libdrafter/src/SerializeSourcemap.o +0 -0
  50. data/ext/drafter/build/out/Release/obj.target/libdrafter/src/drafter.o +0 -0
  51. data/ext/drafter/build/out/Release/obj.target/libdrafter/src/drafter_private.o +0 -0
  52. data/ext/drafter/build/out/Release/obj.target/libdrafter/src/refract/ComparableVisitor.o +0 -0
  53. data/ext/drafter/build/out/Release/obj.target/libdrafter/src/refract/Element.o +0 -0
  54. data/ext/drafter/build/out/Release/obj.target/libdrafter/src/refract/ExpandVisitor.o +0 -0
  55. data/ext/drafter/build/out/Release/obj.target/libdrafter/src/refract/IsExpandableVisitor.o +0 -0
  56. data/ext/drafter/build/out/Release/obj.target/libdrafter/src/refract/JSONSchemaVisitor.o +0 -0
  57. data/ext/drafter/build/out/Release/obj.target/libdrafter/src/refract/PrintVisitor.o +0 -0
  58. data/ext/drafter/build/out/Release/obj.target/libdrafter/src/refract/Query.o +0 -0
  59. data/ext/drafter/build/out/Release/obj.target/libdrafter/src/refract/Registry.o +0 -0
  60. data/ext/drafter/build/out/Release/obj.target/libdrafter/src/refract/RenderJSONVisitor.o +0 -0
  61. data/ext/drafter/build/out/Release/obj.target/libdrafter/src/refract/SerializeCompactVisitor.o +0 -0
  62. data/ext/drafter/build/out/Release/obj.target/libdrafter/src/refract/SerializeVisitor.o +0 -0
  63. data/ext/drafter/build/out/Release/obj.target/libdrafter/src/refract/TypeQueryVisitor.o +0 -0
  64. data/ext/drafter/build/out/Release/obj.target/libdrafter/src/refract/VisitorUtils.o +0 -0
  65. data/ext/drafter/build/out/Release/obj.target/libmarkdownparser/ext/snowcrash/ext/markdown-parser/src/ByteBuffer.o +0 -0
  66. data/ext/drafter/build/out/Release/obj.target/libmarkdownparser/ext/snowcrash/ext/markdown-parser/src/MarkdownNode.o +0 -0
  67. data/ext/drafter/build/out/Release/obj.target/libmarkdownparser/ext/snowcrash/ext/markdown-parser/src/MarkdownParser.o +0 -0
  68. data/ext/drafter/build/out/Release/obj.target/libsnowcrash/ext/snowcrash/src/Blueprint.o +0 -0
  69. data/ext/drafter/build/out/Release/obj.target/libsnowcrash/ext/snowcrash/src/BlueprintSourcemap.o +0 -0
  70. data/ext/drafter/build/out/Release/obj.target/libsnowcrash/ext/snowcrash/src/HTTP.o +0 -0
  71. data/ext/drafter/build/out/Release/obj.target/libsnowcrash/ext/snowcrash/src/HeadersParser.o +0 -0
  72. data/ext/drafter/build/out/Release/obj.target/libsnowcrash/ext/snowcrash/src/MSON.o +0 -0
  73. data/ext/drafter/build/out/Release/obj.target/libsnowcrash/ext/snowcrash/src/MSONOneOfParser.o +0 -0
  74. data/ext/drafter/build/out/Release/obj.target/libsnowcrash/ext/snowcrash/src/MSONSourcemap.o +0 -0
  75. data/ext/drafter/build/out/Release/obj.target/libsnowcrash/ext/snowcrash/src/MSONTypeSectionParser.o +0 -0
  76. data/ext/drafter/build/out/Release/obj.target/libsnowcrash/ext/snowcrash/src/MSONValueMemberParser.o +0 -0
  77. data/ext/drafter/build/out/Release/obj.target/libsnowcrash/ext/snowcrash/src/Section.o +0 -0
  78. data/ext/drafter/build/out/Release/obj.target/libsnowcrash/ext/snowcrash/src/Signature.o +0 -0
  79. data/ext/drafter/build/out/Release/obj.target/libsnowcrash/ext/snowcrash/src/UriTemplateParser.o +0 -0
  80. data/ext/drafter/build/out/Release/obj.target/libsnowcrash/ext/snowcrash/src/posix/RegexMatch.o +0 -0
  81. data/ext/drafter/build/out/Release/obj.target/libsnowcrash/ext/snowcrash/src/snowcrash.o +0 -0
  82. data/ext/drafter/build/out/Release/obj.target/libsos/ext/sos/src/sos.o +0 -0
  83. data/ext/drafter/build/out/Release/obj.target/libsundown/ext/snowcrash/ext/markdown-parser/ext/sundown/html/houdini_href_e.o +0 -0
  84. data/ext/drafter/build/out/Release/obj.target/libsundown/ext/snowcrash/ext/markdown-parser/ext/sundown/html/houdini_html_e.o +0 -0
  85. data/ext/drafter/build/out/Release/obj.target/libsundown/ext/snowcrash/ext/markdown-parser/ext/sundown/html/html.o +0 -0
  86. data/ext/drafter/build/out/Release/obj.target/libsundown/ext/snowcrash/ext/markdown-parser/ext/sundown/html/html_smartypants.o +0 -0
  87. data/ext/drafter/build/out/Release/obj.target/libsundown/ext/snowcrash/ext/markdown-parser/ext/sundown/src/autolink.o +0 -0
  88. data/ext/drafter/build/out/Release/obj.target/libsundown/ext/snowcrash/ext/markdown-parser/ext/sundown/src/buffer.o +0 -0
  89. data/ext/drafter/build/out/Release/obj.target/libsundown/ext/snowcrash/ext/markdown-parser/ext/sundown/src/markdown.o +0 -0
  90. data/ext/drafter/build/out/Release/obj.target/libsundown/ext/snowcrash/ext/markdown-parser/ext/sundown/src/src_map.o +0 -0
  91. data/ext/drafter/build/out/Release/obj.target/libsundown/ext/snowcrash/ext/markdown-parser/ext/sundown/src/stack.o +0 -0
  92. data/ext/drafter/circle.yml +32 -0
  93. data/ext/drafter/config.gypi +10 -0
  94. data/ext/drafter/config.mk +5 -0
  95. data/ext/drafter/configure +224 -0
  96. data/ext/drafter/drafter.gyp +189 -0
  97. data/ext/drafter/drafter.xcworkspace/contents.xcworkspacedata +13 -0
  98. data/ext/drafter/ext/snowcrash/Makefile +58 -0
  99. data/ext/drafter/ext/snowcrash/appveyor.yml +7 -0
  100. data/ext/drafter/ext/snowcrash/common.gypi +165 -0
  101. data/ext/drafter/ext/snowcrash/configure +197 -0
  102. data/ext/drafter/ext/snowcrash/ext/markdown-parser/Makefile +90 -0
  103. data/ext/drafter/ext/snowcrash/ext/markdown-parser/ext/sundown/CONTRIBUTING.md +10 -0
  104. data/ext/drafter/ext/snowcrash/ext/markdown-parser/ext/sundown/Makefile +84 -0
  105. data/ext/drafter/ext/snowcrash/ext/markdown-parser/ext/sundown/Makefile.win +33 -0
  106. data/ext/drafter/ext/snowcrash/ext/markdown-parser/ext/sundown/examples/smartypants.c +72 -0
  107. data/ext/drafter/ext/snowcrash/ext/markdown-parser/ext/sundown/examples/sundown.c +80 -0
  108. data/ext/drafter/ext/snowcrash/ext/markdown-parser/ext/sundown/html/houdini.h +37 -0
  109. data/ext/drafter/ext/snowcrash/ext/markdown-parser/ext/sundown/html/houdini_href_e.c +108 -0
  110. data/ext/drafter/ext/snowcrash/ext/markdown-parser/ext/sundown/html/houdini_html_e.c +84 -0
  111. data/ext/drafter/ext/snowcrash/ext/markdown-parser/ext/sundown/html/html.c +647 -0
  112. data/ext/drafter/ext/snowcrash/ext/markdown-parser/ext/sundown/html/html.h +77 -0
  113. data/ext/drafter/ext/snowcrash/ext/markdown-parser/ext/sundown/html/html_smartypants.c +389 -0
  114. data/ext/drafter/ext/snowcrash/ext/markdown-parser/ext/sundown/html_block_names.txt +25 -0
  115. data/ext/drafter/ext/snowcrash/ext/markdown-parser/ext/sundown/src/autolink.c +297 -0
  116. data/ext/drafter/ext/snowcrash/ext/markdown-parser/ext/sundown/src/autolink.h +51 -0
  117. data/ext/drafter/ext/snowcrash/ext/markdown-parser/ext/sundown/src/buffer.c +225 -0
  118. data/ext/drafter/ext/snowcrash/ext/markdown-parser/ext/sundown/src/buffer.h +96 -0
  119. data/ext/drafter/ext/snowcrash/ext/markdown-parser/ext/sundown/src/html_blocks.h +206 -0
  120. data/ext/drafter/ext/snowcrash/ext/markdown-parser/ext/sundown/src/markdown.c +2726 -0
  121. data/ext/drafter/ext/snowcrash/ext/markdown-parser/ext/sundown/src/markdown.h +147 -0
  122. data/ext/drafter/ext/snowcrash/ext/markdown-parser/ext/sundown/src/src_map.c +204 -0
  123. data/ext/drafter/ext/snowcrash/ext/markdown-parser/ext/sundown/src/src_map.h +58 -0
  124. data/ext/drafter/ext/snowcrash/ext/markdown-parser/ext/sundown/src/stack.c +81 -0
  125. data/ext/drafter/ext/snowcrash/ext/markdown-parser/ext/sundown/src/stack.h +29 -0
  126. data/ext/drafter/ext/snowcrash/ext/markdown-parser/ext/sundown/sundown.def +20 -0
  127. data/ext/drafter/ext/snowcrash/ext/markdown-parser/msvc/markdown/markdown.vcproj +188 -0
  128. data/ext/drafter/ext/snowcrash/ext/markdown-parser/msvc/msvc.sln +38 -0
  129. data/ext/drafter/ext/snowcrash/ext/markdown-parser/msvc/sundown/sundown.vcproj +206 -0
  130. data/ext/drafter/ext/snowcrash/ext/markdown-parser/src/ByteBuffer.cc +160 -0
  131. data/ext/drafter/ext/snowcrash/ext/markdown-parser/src/ByteBuffer.h +90 -0
  132. data/ext/drafter/ext/snowcrash/ext/markdown-parser/src/MarkdownNode.cc +152 -0
  133. data/ext/drafter/ext/snowcrash/ext/markdown-parser/src/MarkdownNode.h +103 -0
  134. data/ext/drafter/ext/snowcrash/ext/markdown-parser/src/MarkdownParser.cc +388 -0
  135. data/ext/drafter/ext/snowcrash/ext/markdown-parser/src/MarkdownParser.h +106 -0
  136. data/ext/drafter/ext/snowcrash/snowcrash.gyp +196 -0
  137. data/ext/drafter/ext/snowcrash/src/ActionParser.h +560 -0
  138. data/ext/drafter/ext/snowcrash/src/AssetParser.h +123 -0
  139. data/ext/drafter/ext/snowcrash/src/AttributesParser.h +123 -0
  140. data/ext/drafter/ext/snowcrash/src/Blueprint.cc +90 -0
  141. data/ext/drafter/ext/snowcrash/src/Blueprint.h +489 -0
  142. data/ext/drafter/ext/snowcrash/src/BlueprintParser.h +845 -0
  143. data/ext/drafter/ext/snowcrash/src/BlueprintSourcemap.cc +81 -0
  144. data/ext/drafter/ext/snowcrash/src/BlueprintSourcemap.h +345 -0
  145. data/ext/drafter/ext/snowcrash/src/BlueprintUtility.h +111 -0
  146. data/ext/drafter/ext/snowcrash/src/CodeBlockUtility.h +276 -0
  147. data/ext/drafter/ext/snowcrash/src/DataStructureGroupParser.h +157 -0
  148. data/ext/drafter/ext/snowcrash/src/HTTP.cc +49 -0
  149. data/ext/drafter/ext/snowcrash/src/HTTP.h +108 -0
  150. data/ext/drafter/ext/snowcrash/src/HeadersParser.cc +117 -0
  151. data/ext/drafter/ext/snowcrash/src/HeadersParser.h +377 -0
  152. data/ext/drafter/ext/snowcrash/src/MSON.cc +272 -0
  153. data/ext/drafter/ext/snowcrash/src/MSON.h +405 -0
  154. data/ext/drafter/ext/snowcrash/src/MSONMixinParser.h +103 -0
  155. data/ext/drafter/ext/snowcrash/src/MSONNamedTypeParser.h +135 -0
  156. data/ext/drafter/ext/snowcrash/src/MSONOneOfParser.cc +132 -0
  157. data/ext/drafter/ext/snowcrash/src/MSONOneOfParser.h +80 -0
  158. data/ext/drafter/ext/snowcrash/src/MSONParameterParser.h +166 -0
  159. data/ext/drafter/ext/snowcrash/src/MSONPropertyMemberParser.h +106 -0
  160. data/ext/drafter/ext/snowcrash/src/MSONSourcemap.cc +141 -0
  161. data/ext/drafter/ext/snowcrash/src/MSONSourcemap.h +181 -0
  162. data/ext/drafter/ext/snowcrash/src/MSONTypeSectionParser.cc +209 -0
  163. data/ext/drafter/ext/snowcrash/src/MSONTypeSectionParser.h +213 -0
  164. data/ext/drafter/ext/snowcrash/src/MSONUtility.h +506 -0
  165. data/ext/drafter/ext/snowcrash/src/MSONValueMemberParser.cc +214 -0
  166. data/ext/drafter/ext/snowcrash/src/MSONValueMemberParser.h +390 -0
  167. data/ext/drafter/ext/snowcrash/src/ModelTable.h +87 -0
  168. data/ext/drafter/ext/snowcrash/src/ParameterParser.h +516 -0
  169. data/ext/drafter/ext/snowcrash/src/ParametersParser.h +222 -0
  170. data/ext/drafter/ext/snowcrash/src/PayloadParser.h +733 -0
  171. data/ext/drafter/ext/snowcrash/src/Platform.h +33 -0
  172. data/ext/drafter/ext/snowcrash/src/RegexMatch.h +32 -0
  173. data/ext/drafter/ext/snowcrash/src/RelationParser.h +87 -0
  174. data/ext/drafter/ext/snowcrash/src/ResourceGroupParser.h +297 -0
  175. data/ext/drafter/ext/snowcrash/src/ResourceParser.h +536 -0
  176. data/ext/drafter/ext/snowcrash/src/Section.cc +48 -0
  177. data/ext/drafter/ext/snowcrash/src/Section.h +60 -0
  178. data/ext/drafter/ext/snowcrash/src/SectionParser.h +246 -0
  179. data/ext/drafter/ext/snowcrash/src/SectionParserData.h +109 -0
  180. data/ext/drafter/ext/snowcrash/src/SectionProcessor.h +299 -0
  181. data/ext/drafter/ext/snowcrash/src/Signature.cc +75 -0
  182. data/ext/drafter/ext/snowcrash/src/Signature.h +103 -0
  183. data/ext/drafter/ext/snowcrash/src/SignatureSectionProcessor.h +442 -0
  184. data/ext/drafter/ext/snowcrash/src/SourceAnnotation.h +166 -0
  185. data/ext/drafter/ext/snowcrash/src/StringUtility.h +323 -0
  186. data/ext/drafter/ext/snowcrash/src/UriTemplateParser.cc +195 -0
  187. data/ext/drafter/ext/snowcrash/src/UriTemplateParser.h +240 -0
  188. data/ext/drafter/ext/snowcrash/src/ValuesParser.h +111 -0
  189. data/ext/drafter/ext/snowcrash/src/posix/RegexMatch.cc +99 -0
  190. data/ext/drafter/ext/snowcrash/src/snowcrash.cc +90 -0
  191. data/ext/drafter/ext/snowcrash/src/snowcrash.h +44 -0
  192. data/ext/drafter/ext/snowcrash/src/win/RegexMatch.cc +78 -0
  193. data/ext/drafter/ext/snowcrash/tools/gyp/AUTHORS +12 -0
  194. data/ext/drafter/ext/snowcrash/tools/gyp/DEPS +23 -0
  195. data/ext/drafter/ext/snowcrash/tools/gyp/OWNERS +1 -0
  196. data/ext/drafter/ext/snowcrash/tools/gyp/PRESUBMIT.py +137 -0
  197. data/ext/drafter/ext/snowcrash/tools/gyp/buildbot/buildbot_run.py +136 -0
  198. data/ext/drafter/ext/snowcrash/tools/gyp/buildbot/commit_queue/OWNERS +6 -0
  199. data/ext/drafter/ext/snowcrash/tools/gyp/buildbot/commit_queue/cq_config.json +15 -0
  200. data/ext/drafter/ext/snowcrash/tools/gyp/codereview.settings +10 -0
  201. data/ext/drafter/ext/snowcrash/tools/gyp/data/win/large-pdb-shim.cc +12 -0
  202. data/ext/drafter/ext/snowcrash/tools/gyp/gyp +8 -0
  203. data/ext/drafter/ext/snowcrash/tools/gyp/gyp.bat +5 -0
  204. data/ext/drafter/ext/snowcrash/tools/gyp/gyp_main.py +16 -0
  205. data/ext/drafter/ext/snowcrash/tools/gyp/pylib/gyp/MSVSNew.py +340 -0
  206. data/ext/drafter/ext/snowcrash/tools/gyp/pylib/gyp/MSVSProject.py +208 -0
  207. data/ext/drafter/ext/snowcrash/tools/gyp/pylib/gyp/MSVSSettings.py +1096 -0
  208. data/ext/drafter/ext/snowcrash/tools/gyp/pylib/gyp/MSVSToolFile.py +58 -0
  209. data/ext/drafter/ext/snowcrash/tools/gyp/pylib/gyp/MSVSUserFile.py +147 -0
  210. data/ext/drafter/ext/snowcrash/tools/gyp/pylib/gyp/MSVSUtil.py +270 -0
  211. data/ext/drafter/ext/snowcrash/tools/gyp/pylib/gyp/MSVSUtil.pyc +0 -0
  212. data/ext/drafter/ext/snowcrash/tools/gyp/pylib/gyp/MSVSVersion.py +445 -0
  213. data/ext/drafter/ext/snowcrash/tools/gyp/pylib/gyp/MSVSVersion.pyc +0 -0
  214. data/ext/drafter/ext/snowcrash/tools/gyp/pylib/gyp/__init__.py +548 -0
  215. data/ext/drafter/ext/snowcrash/tools/gyp/pylib/gyp/__init__.pyc +0 -0
  216. data/ext/drafter/ext/snowcrash/tools/gyp/pylib/gyp/common.py +608 -0
  217. data/ext/drafter/ext/snowcrash/tools/gyp/pylib/gyp/common.pyc +0 -0
  218. data/ext/drafter/ext/snowcrash/tools/gyp/pylib/gyp/easy_xml.py +157 -0
  219. data/ext/drafter/ext/snowcrash/tools/gyp/pylib/gyp/flock_tool.py +54 -0
  220. data/ext/drafter/ext/snowcrash/tools/gyp/pylib/gyp/generator/__init__.py +0 -0
  221. data/ext/drafter/ext/snowcrash/tools/gyp/pylib/gyp/generator/__init__.pyc +0 -0
  222. data/ext/drafter/ext/snowcrash/tools/gyp/pylib/gyp/generator/analyzer.py +741 -0
  223. data/ext/drafter/ext/snowcrash/tools/gyp/pylib/gyp/generator/android.py +1069 -0
  224. data/ext/drafter/ext/snowcrash/tools/gyp/pylib/gyp/generator/cmake.py +1248 -0
  225. data/ext/drafter/ext/snowcrash/tools/gyp/pylib/gyp/generator/dump_dependency_json.py +99 -0
  226. data/ext/drafter/ext/snowcrash/tools/gyp/pylib/gyp/generator/eclipse.py +425 -0
  227. data/ext/drafter/ext/snowcrash/tools/gyp/pylib/gyp/generator/gypd.py +94 -0
  228. data/ext/drafter/ext/snowcrash/tools/gyp/pylib/gyp/generator/gypsh.py +56 -0
  229. data/ext/drafter/ext/snowcrash/tools/gyp/pylib/gyp/generator/make.py +2218 -0
  230. data/ext/drafter/ext/snowcrash/tools/gyp/pylib/gyp/generator/make.pyc +0 -0
  231. data/ext/drafter/ext/snowcrash/tools/gyp/pylib/gyp/generator/msvs.py +3467 -0
  232. data/ext/drafter/ext/snowcrash/tools/gyp/pylib/gyp/generator/ninja.py +2427 -0
  233. data/ext/drafter/ext/snowcrash/tools/gyp/pylib/gyp/generator/ninja.pyc +0 -0
  234. data/ext/drafter/ext/snowcrash/tools/gyp/pylib/gyp/generator/xcode.py +1300 -0
  235. data/ext/drafter/ext/snowcrash/tools/gyp/pylib/gyp/generator/xcode.pyc +0 -0
  236. data/ext/drafter/ext/snowcrash/tools/gyp/pylib/gyp/input.py +2899 -0
  237. data/ext/drafter/ext/snowcrash/tools/gyp/pylib/gyp/input.pyc +0 -0
  238. data/ext/drafter/ext/snowcrash/tools/gyp/pylib/gyp/mac_tool.py +605 -0
  239. data/ext/drafter/ext/snowcrash/tools/gyp/pylib/gyp/msvs_emulation.py +1093 -0
  240. data/ext/drafter/ext/snowcrash/tools/gyp/pylib/gyp/msvs_emulation.pyc +0 -0
  241. data/ext/drafter/ext/snowcrash/tools/gyp/pylib/gyp/ninja_syntax.py +160 -0
  242. data/ext/drafter/ext/snowcrash/tools/gyp/pylib/gyp/ninja_syntax.pyc +0 -0
  243. data/ext/drafter/ext/snowcrash/tools/gyp/pylib/gyp/ordered_dict.py +289 -0
  244. data/ext/drafter/ext/snowcrash/tools/gyp/pylib/gyp/simple_copy.py +46 -0
  245. data/ext/drafter/ext/snowcrash/tools/gyp/pylib/gyp/simple_copy.pyc +0 -0
  246. data/ext/drafter/ext/snowcrash/tools/gyp/pylib/gyp/win_tool.py +314 -0
  247. data/ext/drafter/ext/snowcrash/tools/gyp/pylib/gyp/xcode_emulation.py +1664 -0
  248. data/ext/drafter/ext/snowcrash/tools/gyp/pylib/gyp/xcode_emulation.pyc +0 -0
  249. data/ext/drafter/ext/snowcrash/tools/gyp/pylib/gyp/xcode_ninja.py +276 -0
  250. data/ext/drafter/ext/snowcrash/tools/gyp/pylib/gyp/xcode_ninja.pyc +0 -0
  251. data/ext/drafter/ext/snowcrash/tools/gyp/pylib/gyp/xcodeproj_file.py +2927 -0
  252. data/ext/drafter/ext/snowcrash/tools/gyp/pylib/gyp/xcodeproj_file.pyc +0 -0
  253. data/ext/drafter/ext/snowcrash/tools/gyp/pylib/gyp/xml_fix.py +69 -0
  254. data/ext/drafter/ext/snowcrash/tools/gyp/pylintrc +307 -0
  255. data/ext/drafter/ext/snowcrash/tools/gyp/samples/samples +81 -0
  256. data/ext/drafter/ext/snowcrash/tools/gyp/samples/samples.bat +5 -0
  257. data/ext/drafter/ext/snowcrash/tools/gyp/setup.py +19 -0
  258. data/ext/drafter/ext/snowcrash/tools/gyp/tools/Xcode/Specifications/gyp.pbfilespec +27 -0
  259. data/ext/drafter/ext/snowcrash/tools/gyp/tools/Xcode/Specifications/gyp.xclangspec +226 -0
  260. data/ext/drafter/ext/snowcrash/tools/gyp/tools/emacs/gyp.el +275 -0
  261. data/ext/drafter/ext/snowcrash/tools/gyp/tools/graphviz.py +100 -0
  262. data/ext/drafter/ext/snowcrash/tools/gyp/tools/pretty_gyp.py +155 -0
  263. data/ext/drafter/ext/snowcrash/tools/gyp/tools/pretty_sln.py +169 -0
  264. data/ext/drafter/ext/snowcrash/tools/gyp/tools/pretty_vcproj.py +329 -0
  265. data/ext/drafter/ext/snowcrash/vcbuild.bat +139 -0
  266. data/ext/drafter/ext/sos/Makefile +62 -0
  267. data/ext/drafter/ext/sos/src/sos.cc +235 -0
  268. data/ext/drafter/ext/sos/src/sos.h +188 -0
  269. data/ext/drafter/ext/sos/src/sosJSON.h +121 -0
  270. data/ext/drafter/ext/sos/src/sosYAML.h +105 -0
  271. data/ext/drafter/src/ConversionContext.cc +39 -0
  272. data/ext/drafter/src/ConversionContext.h +34 -0
  273. data/ext/drafter/src/NamedTypesRegistry.cc +405 -0
  274. data/ext/drafter/src/NamedTypesRegistry.h +28 -0
  275. data/ext/drafter/src/NodeInfo.h +143 -0
  276. data/ext/drafter/src/RefractAPI.cc +579 -0
  277. data/ext/drafter/src/RefractAPI.h +28 -0
  278. data/ext/drafter/src/RefractDataStructure.cc +1199 -0
  279. data/ext/drafter/src/RefractDataStructure.h +26 -0
  280. data/ext/drafter/src/RefractElementFactory.cc +107 -0
  281. data/ext/drafter/src/RefractElementFactory.h +67 -0
  282. data/ext/drafter/src/RefractSourceMap.cc +29 -0
  283. data/ext/drafter/src/RefractSourceMap.h +57 -0
  284. data/ext/drafter/src/Render.cc +157 -0
  285. data/ext/drafter/src/Render.h +40 -0
  286. data/ext/drafter/src/Serialize.cc +160 -0
  287. data/ext/drafter/src/Serialize.h +289 -0
  288. data/ext/drafter/src/SerializeAST.cc +507 -0
  289. data/ext/drafter/src/SerializeAST.h +29 -0
  290. data/ext/drafter/src/SerializeResult.cc +170 -0
  291. data/ext/drafter/src/SerializeResult.h +34 -0
  292. data/ext/drafter/src/SerializeSourcemap.cc +331 -0
  293. data/ext/drafter/src/SerializeSourcemap.h +21 -0
  294. data/ext/drafter/src/Version.h +40 -0
  295. data/ext/drafter/src/config.cc +91 -0
  296. data/ext/drafter/src/config.h +38 -0
  297. data/ext/drafter/src/drafter.cc +137 -0
  298. data/ext/drafter/src/drafter.h +102 -0
  299. data/ext/drafter/src/drafter_private.cc +85 -0
  300. data/ext/drafter/src/drafter_private.h +34 -0
  301. data/ext/drafter/src/main.cc +137 -0
  302. data/ext/drafter/src/refract/AppendDecorator.h +58 -0
  303. data/ext/drafter/src/refract/Build.h +67 -0
  304. data/ext/drafter/src/refract/ComparableVisitor.cc +43 -0
  305. data/ext/drafter/src/refract/ComparableVisitor.h +62 -0
  306. data/ext/drafter/src/refract/Element.cc +409 -0
  307. data/ext/drafter/src/refract/Element.h +656 -0
  308. data/ext/drafter/src/refract/ElementFwd.h +37 -0
  309. data/ext/drafter/src/refract/ElementInserter.h +59 -0
  310. data/ext/drafter/src/refract/Exception.h +31 -0
  311. data/ext/drafter/src/refract/ExpandVisitor.cc +359 -0
  312. data/ext/drafter/src/refract/ExpandVisitor.h +58 -0
  313. data/ext/drafter/src/refract/FilterVisitor.h +52 -0
  314. data/ext/drafter/src/refract/IsExpandableVisitor.cc +140 -0
  315. data/ext/drafter/src/refract/IsExpandableVisitor.h +31 -0
  316. data/ext/drafter/src/refract/Iterate.h +160 -0
  317. data/ext/drafter/src/refract/JSONSchemaVisitor.cc +675 -0
  318. data/ext/drafter/src/refract/JSONSchemaVisitor.h +73 -0
  319. data/ext/drafter/src/refract/PrintVisitor.cc +164 -0
  320. data/ext/drafter/src/refract/PrintVisitor.h +50 -0
  321. data/ext/drafter/src/refract/Query.cc +13 -0
  322. data/ext/drafter/src/refract/Query.h +38 -0
  323. data/ext/drafter/src/refract/Registry.cc +114 -0
  324. data/ext/drafter/src/refract/Registry.h +43 -0
  325. data/ext/drafter/src/refract/RenderJSONVisitor.cc +255 -0
  326. data/ext/drafter/src/refract/RenderJSONVisitor.h +51 -0
  327. data/ext/drafter/src/refract/SerializeCompactVisitor.cc +167 -0
  328. data/ext/drafter/src/refract/SerializeCompactVisitor.h +56 -0
  329. data/ext/drafter/src/refract/SerializeVisitor.cc +214 -0
  330. data/ext/drafter/src/refract/SerializeVisitor.h +55 -0
  331. data/ext/drafter/src/refract/TypeQueryVisitor.cc +46 -0
  332. data/ext/drafter/src/refract/TypeQueryVisitor.h +110 -0
  333. data/ext/drafter/src/refract/Visitor.h +126 -0
  334. data/ext/drafter/src/refract/VisitorUtils.cc +63 -0
  335. data/ext/drafter/src/refract/VisitorUtils.h +231 -0
  336. data/ext/drafter/src/reporting.cc +263 -0
  337. data/ext/drafter/src/reporting.h +39 -0
  338. data/ext/drafter/src/stream.h +148 -0
  339. data/ext/drafter/tools/homebrew/drafter.rb +18 -0
  340. data/ext/drafter/tools/make-tarball.sh +39 -0
  341. data/ext/drafter/tools/refract-filter.py +96 -0
  342. data/ext/drafter/tools/release.sh +17 -0
  343. data/ext/drafter/vcbuild.bat +203 -0
  344. data/lib/lounge_lizard/binding.rb +29 -0
  345. data/lib/lounge_lizard/version.rb +3 -0
  346. data/lib/lounge_lizard.rb +18 -0
  347. data/lounge_lizard.gemspec +37 -0
  348. metadata +547 -0
@@ -0,0 +1,1096 @@
1
+ # Copyright (c) 2012 Google Inc. All rights reserved.
2
+ # Use of this source code is governed by a BSD-style license that can be
3
+ # found in the LICENSE file.
4
+
5
+ r"""Code to validate and convert settings of the Microsoft build tools.
6
+
7
+ This file contains code to validate and convert settings of the Microsoft
8
+ build tools. The function ConvertToMSBuildSettings(), ValidateMSVSSettings(),
9
+ and ValidateMSBuildSettings() are the entry points.
10
+
11
+ This file was created by comparing the projects created by Visual Studio 2008
12
+ and Visual Studio 2010 for all available settings through the user interface.
13
+ The MSBuild schemas were also considered. They are typically found in the
14
+ MSBuild install directory, e.g. c:\Program Files (x86)\MSBuild
15
+ """
16
+
17
+ import sys
18
+ import re
19
+
20
+ # Dictionaries of settings validators. The key is the tool name, the value is
21
+ # a dictionary mapping setting names to validation functions.
22
+ _msvs_validators = {}
23
+ _msbuild_validators = {}
24
+
25
+
26
+ # A dictionary of settings converters. The key is the tool name, the value is
27
+ # a dictionary mapping setting names to conversion functions.
28
+ _msvs_to_msbuild_converters = {}
29
+
30
+
31
+ # Tool name mapping from MSVS to MSBuild.
32
+ _msbuild_name_of_tool = {}
33
+
34
+
35
+ class _Tool(object):
36
+ """Represents a tool used by MSVS or MSBuild.
37
+
38
+ Attributes:
39
+ msvs_name: The name of the tool in MSVS.
40
+ msbuild_name: The name of the tool in MSBuild.
41
+ """
42
+
43
+ def __init__(self, msvs_name, msbuild_name):
44
+ self.msvs_name = msvs_name
45
+ self.msbuild_name = msbuild_name
46
+
47
+
48
+ def _AddTool(tool):
49
+ """Adds a tool to the four dictionaries used to process settings.
50
+
51
+ This only defines the tool. Each setting also needs to be added.
52
+
53
+ Args:
54
+ tool: The _Tool object to be added.
55
+ """
56
+ _msvs_validators[tool.msvs_name] = {}
57
+ _msbuild_validators[tool.msbuild_name] = {}
58
+ _msvs_to_msbuild_converters[tool.msvs_name] = {}
59
+ _msbuild_name_of_tool[tool.msvs_name] = tool.msbuild_name
60
+
61
+
62
+ def _GetMSBuildToolSettings(msbuild_settings, tool):
63
+ """Returns an MSBuild tool dictionary. Creates it if needed."""
64
+ return msbuild_settings.setdefault(tool.msbuild_name, {})
65
+
66
+
67
+ class _Type(object):
68
+ """Type of settings (Base class)."""
69
+
70
+ def ValidateMSVS(self, value):
71
+ """Verifies that the value is legal for MSVS.
72
+
73
+ Args:
74
+ value: the value to check for this type.
75
+
76
+ Raises:
77
+ ValueError if value is not valid for MSVS.
78
+ """
79
+
80
+ def ValidateMSBuild(self, value):
81
+ """Verifies that the value is legal for MSBuild.
82
+
83
+ Args:
84
+ value: the value to check for this type.
85
+
86
+ Raises:
87
+ ValueError if value is not valid for MSBuild.
88
+ """
89
+
90
+ def ConvertToMSBuild(self, value):
91
+ """Returns the MSBuild equivalent of the MSVS value given.
92
+
93
+ Args:
94
+ value: the MSVS value to convert.
95
+
96
+ Returns:
97
+ the MSBuild equivalent.
98
+
99
+ Raises:
100
+ ValueError if value is not valid.
101
+ """
102
+ return value
103
+
104
+
105
+ class _String(_Type):
106
+ """A setting that's just a string."""
107
+
108
+ def ValidateMSVS(self, value):
109
+ if not isinstance(value, basestring):
110
+ raise ValueError('expected string; got %r' % value)
111
+
112
+ def ValidateMSBuild(self, value):
113
+ if not isinstance(value, basestring):
114
+ raise ValueError('expected string; got %r' % value)
115
+
116
+ def ConvertToMSBuild(self, value):
117
+ # Convert the macros
118
+ return ConvertVCMacrosToMSBuild(value)
119
+
120
+
121
+ class _StringList(_Type):
122
+ """A settings that's a list of strings."""
123
+
124
+ def ValidateMSVS(self, value):
125
+ if not isinstance(value, basestring) and not isinstance(value, list):
126
+ raise ValueError('expected string list; got %r' % value)
127
+
128
+ def ValidateMSBuild(self, value):
129
+ if not isinstance(value, basestring) and not isinstance(value, list):
130
+ raise ValueError('expected string list; got %r' % value)
131
+
132
+ def ConvertToMSBuild(self, value):
133
+ # Convert the macros
134
+ if isinstance(value, list):
135
+ return [ConvertVCMacrosToMSBuild(i) for i in value]
136
+ else:
137
+ return ConvertVCMacrosToMSBuild(value)
138
+
139
+
140
+ class _Boolean(_Type):
141
+ """Boolean settings, can have the values 'false' or 'true'."""
142
+
143
+ def _Validate(self, value):
144
+ if value != 'true' and value != 'false':
145
+ raise ValueError('expected bool; got %r' % value)
146
+
147
+ def ValidateMSVS(self, value):
148
+ self._Validate(value)
149
+
150
+ def ValidateMSBuild(self, value):
151
+ self._Validate(value)
152
+
153
+ def ConvertToMSBuild(self, value):
154
+ self._Validate(value)
155
+ return value
156
+
157
+
158
+ class _Integer(_Type):
159
+ """Integer settings."""
160
+
161
+ def __init__(self, msbuild_base=10):
162
+ _Type.__init__(self)
163
+ self._msbuild_base = msbuild_base
164
+
165
+ def ValidateMSVS(self, value):
166
+ # Try to convert, this will raise ValueError if invalid.
167
+ self.ConvertToMSBuild(value)
168
+
169
+ def ValidateMSBuild(self, value):
170
+ # Try to convert, this will raise ValueError if invalid.
171
+ int(value, self._msbuild_base)
172
+
173
+ def ConvertToMSBuild(self, value):
174
+ msbuild_format = (self._msbuild_base == 10) and '%d' or '0x%04x'
175
+ return msbuild_format % int(value)
176
+
177
+
178
+ class _Enumeration(_Type):
179
+ """Type of settings that is an enumeration.
180
+
181
+ In MSVS, the values are indexes like '0', '1', and '2'.
182
+ MSBuild uses text labels that are more representative, like 'Win32'.
183
+
184
+ Constructor args:
185
+ label_list: an array of MSBuild labels that correspond to the MSVS index.
186
+ In the rare cases where MSVS has skipped an index value, None is
187
+ used in the array to indicate the unused spot.
188
+ new: an array of labels that are new to MSBuild.
189
+ """
190
+
191
+ def __init__(self, label_list, new=None):
192
+ _Type.__init__(self)
193
+ self._label_list = label_list
194
+ self._msbuild_values = set(value for value in label_list
195
+ if value is not None)
196
+ if new is not None:
197
+ self._msbuild_values.update(new)
198
+
199
+ def ValidateMSVS(self, value):
200
+ # Try to convert. It will raise an exception if not valid.
201
+ self.ConvertToMSBuild(value)
202
+
203
+ def ValidateMSBuild(self, value):
204
+ if value not in self._msbuild_values:
205
+ raise ValueError('unrecognized enumerated value %s' % value)
206
+
207
+ def ConvertToMSBuild(self, value):
208
+ index = int(value)
209
+ if index < 0 or index >= len(self._label_list):
210
+ raise ValueError('index value (%d) not in expected range [0, %d)' %
211
+ (index, len(self._label_list)))
212
+ label = self._label_list[index]
213
+ if label is None:
214
+ raise ValueError('converted value for %s not specified.' % value)
215
+ return label
216
+
217
+
218
+ # Instantiate the various generic types.
219
+ _boolean = _Boolean()
220
+ _integer = _Integer()
221
+ # For now, we don't do any special validation on these types:
222
+ _string = _String()
223
+ _file_name = _String()
224
+ _folder_name = _String()
225
+ _file_list = _StringList()
226
+ _folder_list = _StringList()
227
+ _string_list = _StringList()
228
+ # Some boolean settings went from numerical values to boolean. The
229
+ # mapping is 0: default, 1: false, 2: true.
230
+ _newly_boolean = _Enumeration(['', 'false', 'true'])
231
+
232
+
233
+ def _Same(tool, name, setting_type):
234
+ """Defines a setting that has the same name in MSVS and MSBuild.
235
+
236
+ Args:
237
+ tool: a dictionary that gives the names of the tool for MSVS and MSBuild.
238
+ name: the name of the setting.
239
+ setting_type: the type of this setting.
240
+ """
241
+ _Renamed(tool, name, name, setting_type)
242
+
243
+
244
+ def _Renamed(tool, msvs_name, msbuild_name, setting_type):
245
+ """Defines a setting for which the name has changed.
246
+
247
+ Args:
248
+ tool: a dictionary that gives the names of the tool for MSVS and MSBuild.
249
+ msvs_name: the name of the MSVS setting.
250
+ msbuild_name: the name of the MSBuild setting.
251
+ setting_type: the type of this setting.
252
+ """
253
+
254
+ def _Translate(value, msbuild_settings):
255
+ msbuild_tool_settings = _GetMSBuildToolSettings(msbuild_settings, tool)
256
+ msbuild_tool_settings[msbuild_name] = setting_type.ConvertToMSBuild(value)
257
+
258
+ _msvs_validators[tool.msvs_name][msvs_name] = setting_type.ValidateMSVS
259
+ _msbuild_validators[tool.msbuild_name][msbuild_name] = (
260
+ setting_type.ValidateMSBuild)
261
+ _msvs_to_msbuild_converters[tool.msvs_name][msvs_name] = _Translate
262
+
263
+
264
+ def _Moved(tool, settings_name, msbuild_tool_name, setting_type):
265
+ _MovedAndRenamed(tool, settings_name, msbuild_tool_name, settings_name,
266
+ setting_type)
267
+
268
+
269
+ def _MovedAndRenamed(tool, msvs_settings_name, msbuild_tool_name,
270
+ msbuild_settings_name, setting_type):
271
+ """Defines a setting that may have moved to a new section.
272
+
273
+ Args:
274
+ tool: a dictionary that gives the names of the tool for MSVS and MSBuild.
275
+ msvs_settings_name: the MSVS name of the setting.
276
+ msbuild_tool_name: the name of the MSBuild tool to place the setting under.
277
+ msbuild_settings_name: the MSBuild name of the setting.
278
+ setting_type: the type of this setting.
279
+ """
280
+
281
+ def _Translate(value, msbuild_settings):
282
+ tool_settings = msbuild_settings.setdefault(msbuild_tool_name, {})
283
+ tool_settings[msbuild_settings_name] = setting_type.ConvertToMSBuild(value)
284
+
285
+ _msvs_validators[tool.msvs_name][msvs_settings_name] = (
286
+ setting_type.ValidateMSVS)
287
+ validator = setting_type.ValidateMSBuild
288
+ _msbuild_validators[msbuild_tool_name][msbuild_settings_name] = validator
289
+ _msvs_to_msbuild_converters[tool.msvs_name][msvs_settings_name] = _Translate
290
+
291
+
292
+ def _MSVSOnly(tool, name, setting_type):
293
+ """Defines a setting that is only found in MSVS.
294
+
295
+ Args:
296
+ tool: a dictionary that gives the names of the tool for MSVS and MSBuild.
297
+ name: the name of the setting.
298
+ setting_type: the type of this setting.
299
+ """
300
+
301
+ def _Translate(unused_value, unused_msbuild_settings):
302
+ # Since this is for MSVS only settings, no translation will happen.
303
+ pass
304
+
305
+ _msvs_validators[tool.msvs_name][name] = setting_type.ValidateMSVS
306
+ _msvs_to_msbuild_converters[tool.msvs_name][name] = _Translate
307
+
308
+
309
+ def _MSBuildOnly(tool, name, setting_type):
310
+ """Defines a setting that is only found in MSBuild.
311
+
312
+ Args:
313
+ tool: a dictionary that gives the names of the tool for MSVS and MSBuild.
314
+ name: the name of the setting.
315
+ setting_type: the type of this setting.
316
+ """
317
+
318
+ def _Translate(value, msbuild_settings):
319
+ # Let msbuild-only properties get translated as-is from msvs_settings.
320
+ tool_settings = msbuild_settings.setdefault(tool.msbuild_name, {})
321
+ tool_settings[name] = value
322
+
323
+ _msbuild_validators[tool.msbuild_name][name] = setting_type.ValidateMSBuild
324
+ _msvs_to_msbuild_converters[tool.msvs_name][name] = _Translate
325
+
326
+
327
+ def _ConvertedToAdditionalOption(tool, msvs_name, flag):
328
+ """Defines a setting that's handled via a command line option in MSBuild.
329
+
330
+ Args:
331
+ tool: a dictionary that gives the names of the tool for MSVS and MSBuild.
332
+ msvs_name: the name of the MSVS setting that if 'true' becomes a flag
333
+ flag: the flag to insert at the end of the AdditionalOptions
334
+ """
335
+
336
+ def _Translate(value, msbuild_settings):
337
+ if value == 'true':
338
+ tool_settings = _GetMSBuildToolSettings(msbuild_settings, tool)
339
+ if 'AdditionalOptions' in tool_settings:
340
+ new_flags = '%s %s' % (tool_settings['AdditionalOptions'], flag)
341
+ else:
342
+ new_flags = flag
343
+ tool_settings['AdditionalOptions'] = new_flags
344
+ _msvs_validators[tool.msvs_name][msvs_name] = _boolean.ValidateMSVS
345
+ _msvs_to_msbuild_converters[tool.msvs_name][msvs_name] = _Translate
346
+
347
+
348
+ def _CustomGeneratePreprocessedFile(tool, msvs_name):
349
+ def _Translate(value, msbuild_settings):
350
+ tool_settings = _GetMSBuildToolSettings(msbuild_settings, tool)
351
+ if value == '0':
352
+ tool_settings['PreprocessToFile'] = 'false'
353
+ tool_settings['PreprocessSuppressLineNumbers'] = 'false'
354
+ elif value == '1': # /P
355
+ tool_settings['PreprocessToFile'] = 'true'
356
+ tool_settings['PreprocessSuppressLineNumbers'] = 'false'
357
+ elif value == '2': # /EP /P
358
+ tool_settings['PreprocessToFile'] = 'true'
359
+ tool_settings['PreprocessSuppressLineNumbers'] = 'true'
360
+ else:
361
+ raise ValueError('value must be one of [0, 1, 2]; got %s' % value)
362
+ # Create a bogus validator that looks for '0', '1', or '2'
363
+ msvs_validator = _Enumeration(['a', 'b', 'c']).ValidateMSVS
364
+ _msvs_validators[tool.msvs_name][msvs_name] = msvs_validator
365
+ msbuild_validator = _boolean.ValidateMSBuild
366
+ msbuild_tool_validators = _msbuild_validators[tool.msbuild_name]
367
+ msbuild_tool_validators['PreprocessToFile'] = msbuild_validator
368
+ msbuild_tool_validators['PreprocessSuppressLineNumbers'] = msbuild_validator
369
+ _msvs_to_msbuild_converters[tool.msvs_name][msvs_name] = _Translate
370
+
371
+
372
+ fix_vc_macro_slashes_regex_list = ('IntDir', 'OutDir')
373
+ fix_vc_macro_slashes_regex = re.compile(
374
+ r'(\$\((?:%s)\))(?:[\\/]+)' % "|".join(fix_vc_macro_slashes_regex_list)
375
+ )
376
+
377
+ # Regular expression to detect keys that were generated by exclusion lists
378
+ _EXCLUDED_SUFFIX_RE = re.compile('^(.*)_excluded$')
379
+
380
+
381
+ def _ValidateExclusionSetting(setting, settings, error_msg, stderr=sys.stderr):
382
+ """Verify that 'setting' is valid if it is generated from an exclusion list.
383
+
384
+ If the setting appears to be generated from an exclusion list, the root name
385
+ is checked.
386
+
387
+ Args:
388
+ setting: A string that is the setting name to validate
389
+ settings: A dictionary where the keys are valid settings
390
+ error_msg: The message to emit in the event of error
391
+ stderr: The stream receiving the error messages.
392
+ """
393
+ # This may be unrecognized because it's an exclusion list. If the
394
+ # setting name has the _excluded suffix, then check the root name.
395
+ unrecognized = True
396
+ m = re.match(_EXCLUDED_SUFFIX_RE, setting)
397
+ if m:
398
+ root_setting = m.group(1)
399
+ unrecognized = root_setting not in settings
400
+
401
+ if unrecognized:
402
+ # We don't know this setting. Give a warning.
403
+ print >> stderr, error_msg
404
+
405
+
406
+ def FixVCMacroSlashes(s):
407
+ """Replace macros which have excessive following slashes.
408
+
409
+ These macros are known to have a built-in trailing slash. Furthermore, many
410
+ scripts hiccup on processing paths with extra slashes in the middle.
411
+
412
+ This list is probably not exhaustive. Add as needed.
413
+ """
414
+ if '$' in s:
415
+ s = fix_vc_macro_slashes_regex.sub(r'\1', s)
416
+ return s
417
+
418
+
419
+ def ConvertVCMacrosToMSBuild(s):
420
+ """Convert the the MSVS macros found in the string to the MSBuild equivalent.
421
+
422
+ This list is probably not exhaustive. Add as needed.
423
+ """
424
+ if '$' in s:
425
+ replace_map = {
426
+ '$(ConfigurationName)': '$(Configuration)',
427
+ '$(InputDir)': '%(RelativeDir)',
428
+ '$(InputExt)': '%(Extension)',
429
+ '$(InputFileName)': '%(Filename)%(Extension)',
430
+ '$(InputName)': '%(Filename)',
431
+ '$(InputPath)': '%(Identity)',
432
+ '$(ParentName)': '$(ProjectFileName)',
433
+ '$(PlatformName)': '$(Platform)',
434
+ '$(SafeInputName)': '%(Filename)',
435
+ }
436
+ for old, new in replace_map.iteritems():
437
+ s = s.replace(old, new)
438
+ s = FixVCMacroSlashes(s)
439
+ return s
440
+
441
+
442
+ def ConvertToMSBuildSettings(msvs_settings, stderr=sys.stderr):
443
+ """Converts MSVS settings (VS2008 and earlier) to MSBuild settings (VS2010+).
444
+
445
+ Args:
446
+ msvs_settings: A dictionary. The key is the tool name. The values are
447
+ themselves dictionaries of settings and their values.
448
+ stderr: The stream receiving the error messages.
449
+
450
+ Returns:
451
+ A dictionary of MSBuild settings. The key is either the MSBuild tool name
452
+ or the empty string (for the global settings). The values are themselves
453
+ dictionaries of settings and their values.
454
+ """
455
+ msbuild_settings = {}
456
+ for msvs_tool_name, msvs_tool_settings in msvs_settings.iteritems():
457
+ if msvs_tool_name in _msvs_to_msbuild_converters:
458
+ msvs_tool = _msvs_to_msbuild_converters[msvs_tool_name]
459
+ for msvs_setting, msvs_value in msvs_tool_settings.iteritems():
460
+ if msvs_setting in msvs_tool:
461
+ # Invoke the translation function.
462
+ try:
463
+ msvs_tool[msvs_setting](msvs_value, msbuild_settings)
464
+ except ValueError, e:
465
+ print >> stderr, ('Warning: while converting %s/%s to MSBuild, '
466
+ '%s' % (msvs_tool_name, msvs_setting, e))
467
+ else:
468
+ _ValidateExclusionSetting(msvs_setting,
469
+ msvs_tool,
470
+ ('Warning: unrecognized setting %s/%s '
471
+ 'while converting to MSBuild.' %
472
+ (msvs_tool_name, msvs_setting)),
473
+ stderr)
474
+ else:
475
+ print >> stderr, ('Warning: unrecognized tool %s while converting to '
476
+ 'MSBuild.' % msvs_tool_name)
477
+ return msbuild_settings
478
+
479
+
480
+ def ValidateMSVSSettings(settings, stderr=sys.stderr):
481
+ """Validates that the names of the settings are valid for MSVS.
482
+
483
+ Args:
484
+ settings: A dictionary. The key is the tool name. The values are
485
+ themselves dictionaries of settings and their values.
486
+ stderr: The stream receiving the error messages.
487
+ """
488
+ _ValidateSettings(_msvs_validators, settings, stderr)
489
+
490
+
491
+ def ValidateMSBuildSettings(settings, stderr=sys.stderr):
492
+ """Validates that the names of the settings are valid for MSBuild.
493
+
494
+ Args:
495
+ settings: A dictionary. The key is the tool name. The values are
496
+ themselves dictionaries of settings and their values.
497
+ stderr: The stream receiving the error messages.
498
+ """
499
+ _ValidateSettings(_msbuild_validators, settings, stderr)
500
+
501
+
502
+ def _ValidateSettings(validators, settings, stderr):
503
+ """Validates that the settings are valid for MSBuild or MSVS.
504
+
505
+ We currently only validate the names of the settings, not their values.
506
+
507
+ Args:
508
+ validators: A dictionary of tools and their validators.
509
+ settings: A dictionary. The key is the tool name. The values are
510
+ themselves dictionaries of settings and their values.
511
+ stderr: The stream receiving the error messages.
512
+ """
513
+ for tool_name in settings:
514
+ if tool_name in validators:
515
+ tool_validators = validators[tool_name]
516
+ for setting, value in settings[tool_name].iteritems():
517
+ if setting in tool_validators:
518
+ try:
519
+ tool_validators[setting](value)
520
+ except ValueError, e:
521
+ print >> stderr, ('Warning: for %s/%s, %s' %
522
+ (tool_name, setting, e))
523
+ else:
524
+ _ValidateExclusionSetting(setting,
525
+ tool_validators,
526
+ ('Warning: unrecognized setting %s/%s' %
527
+ (tool_name, setting)),
528
+ stderr)
529
+
530
+ else:
531
+ print >> stderr, ('Warning: unrecognized tool %s' % tool_name)
532
+
533
+
534
+ # MSVS and MBuild names of the tools.
535
+ _compile = _Tool('VCCLCompilerTool', 'ClCompile')
536
+ _link = _Tool('VCLinkerTool', 'Link')
537
+ _midl = _Tool('VCMIDLTool', 'Midl')
538
+ _rc = _Tool('VCResourceCompilerTool', 'ResourceCompile')
539
+ _lib = _Tool('VCLibrarianTool', 'Lib')
540
+ _manifest = _Tool('VCManifestTool', 'Manifest')
541
+ _masm = _Tool('MASM', 'MASM')
542
+
543
+
544
+ _AddTool(_compile)
545
+ _AddTool(_link)
546
+ _AddTool(_midl)
547
+ _AddTool(_rc)
548
+ _AddTool(_lib)
549
+ _AddTool(_manifest)
550
+ _AddTool(_masm)
551
+ # Add sections only found in the MSBuild settings.
552
+ _msbuild_validators[''] = {}
553
+ _msbuild_validators['ProjectReference'] = {}
554
+ _msbuild_validators['ManifestResourceCompile'] = {}
555
+
556
+ # Descriptions of the compiler options, i.e. VCCLCompilerTool in MSVS and
557
+ # ClCompile in MSBuild.
558
+ # See "c:\Program Files (x86)\MSBuild\Microsoft.Cpp\v4.0\1033\cl.xml" for
559
+ # the schema of the MSBuild ClCompile settings.
560
+
561
+ # Options that have the same name in MSVS and MSBuild
562
+ _Same(_compile, 'AdditionalIncludeDirectories', _folder_list) # /I
563
+ _Same(_compile, 'AdditionalOptions', _string_list)
564
+ _Same(_compile, 'AdditionalUsingDirectories', _folder_list) # /AI
565
+ _Same(_compile, 'AssemblerListingLocation', _file_name) # /Fa
566
+ _Same(_compile, 'BrowseInformationFile', _file_name)
567
+ _Same(_compile, 'BufferSecurityCheck', _boolean) # /GS
568
+ _Same(_compile, 'DisableLanguageExtensions', _boolean) # /Za
569
+ _Same(_compile, 'DisableSpecificWarnings', _string_list) # /wd
570
+ _Same(_compile, 'EnableFiberSafeOptimizations', _boolean) # /GT
571
+ _Same(_compile, 'EnablePREfast', _boolean) # /analyze Visible='false'
572
+ _Same(_compile, 'ExpandAttributedSource', _boolean) # /Fx
573
+ _Same(_compile, 'FloatingPointExceptions', _boolean) # /fp:except
574
+ _Same(_compile, 'ForceConformanceInForLoopScope', _boolean) # /Zc:forScope
575
+ _Same(_compile, 'ForcedIncludeFiles', _file_list) # /FI
576
+ _Same(_compile, 'ForcedUsingFiles', _file_list) # /FU
577
+ _Same(_compile, 'GenerateXMLDocumentationFiles', _boolean) # /doc
578
+ _Same(_compile, 'IgnoreStandardIncludePath', _boolean) # /X
579
+ _Same(_compile, 'MinimalRebuild', _boolean) # /Gm
580
+ _Same(_compile, 'OmitDefaultLibName', _boolean) # /Zl
581
+ _Same(_compile, 'OmitFramePointers', _boolean) # /Oy
582
+ _Same(_compile, 'PreprocessorDefinitions', _string_list) # /D
583
+ _Same(_compile, 'ProgramDataBaseFileName', _file_name) # /Fd
584
+ _Same(_compile, 'RuntimeTypeInfo', _boolean) # /GR
585
+ _Same(_compile, 'ShowIncludes', _boolean) # /showIncludes
586
+ _Same(_compile, 'SmallerTypeCheck', _boolean) # /RTCc
587
+ _Same(_compile, 'StringPooling', _boolean) # /GF
588
+ _Same(_compile, 'SuppressStartupBanner', _boolean) # /nologo
589
+ _Same(_compile, 'TreatWChar_tAsBuiltInType', _boolean) # /Zc:wchar_t
590
+ _Same(_compile, 'UndefineAllPreprocessorDefinitions', _boolean) # /u
591
+ _Same(_compile, 'UndefinePreprocessorDefinitions', _string_list) # /U
592
+ _Same(_compile, 'UseFullPaths', _boolean) # /FC
593
+ _Same(_compile, 'WholeProgramOptimization', _boolean) # /GL
594
+ _Same(_compile, 'XMLDocumentationFileName', _file_name)
595
+
596
+ _Same(_compile, 'AssemblerOutput',
597
+ _Enumeration(['NoListing',
598
+ 'AssemblyCode', # /FA
599
+ 'All', # /FAcs
600
+ 'AssemblyAndMachineCode', # /FAc
601
+ 'AssemblyAndSourceCode'])) # /FAs
602
+ _Same(_compile, 'BasicRuntimeChecks',
603
+ _Enumeration(['Default',
604
+ 'StackFrameRuntimeCheck', # /RTCs
605
+ 'UninitializedLocalUsageCheck', # /RTCu
606
+ 'EnableFastChecks'])) # /RTC1
607
+ _Same(_compile, 'BrowseInformation',
608
+ _Enumeration(['false',
609
+ 'true', # /FR
610
+ 'true'])) # /Fr
611
+ _Same(_compile, 'CallingConvention',
612
+ _Enumeration(['Cdecl', # /Gd
613
+ 'FastCall', # /Gr
614
+ 'StdCall', # /Gz
615
+ 'VectorCall'])) # /Gv
616
+ _Same(_compile, 'CompileAs',
617
+ _Enumeration(['Default',
618
+ 'CompileAsC', # /TC
619
+ 'CompileAsCpp'])) # /TP
620
+ _Same(_compile, 'DebugInformationFormat',
621
+ _Enumeration(['', # Disabled
622
+ 'OldStyle', # /Z7
623
+ None,
624
+ 'ProgramDatabase', # /Zi
625
+ 'EditAndContinue'])) # /ZI
626
+ _Same(_compile, 'EnableEnhancedInstructionSet',
627
+ _Enumeration(['NotSet',
628
+ 'StreamingSIMDExtensions', # /arch:SSE
629
+ 'StreamingSIMDExtensions2', # /arch:SSE2
630
+ 'AdvancedVectorExtensions', # /arch:AVX (vs2012+)
631
+ 'NoExtensions', # /arch:IA32 (vs2012+)
632
+ # This one only exists in the new msbuild format.
633
+ 'AdvancedVectorExtensions2', # /arch:AVX2 (vs2013r2+)
634
+ ]))
635
+ _Same(_compile, 'ErrorReporting',
636
+ _Enumeration(['None', # /errorReport:none
637
+ 'Prompt', # /errorReport:prompt
638
+ 'Queue'], # /errorReport:queue
639
+ new=['Send'])) # /errorReport:send"
640
+ _Same(_compile, 'ExceptionHandling',
641
+ _Enumeration(['false',
642
+ 'Sync', # /EHsc
643
+ 'Async'], # /EHa
644
+ new=['SyncCThrow'])) # /EHs
645
+ _Same(_compile, 'FavorSizeOrSpeed',
646
+ _Enumeration(['Neither',
647
+ 'Speed', # /Ot
648
+ 'Size'])) # /Os
649
+ _Same(_compile, 'FloatingPointModel',
650
+ _Enumeration(['Precise', # /fp:precise
651
+ 'Strict', # /fp:strict
652
+ 'Fast'])) # /fp:fast
653
+ _Same(_compile, 'InlineFunctionExpansion',
654
+ _Enumeration(['Default',
655
+ 'OnlyExplicitInline', # /Ob1
656
+ 'AnySuitable'], # /Ob2
657
+ new=['Disabled'])) # /Ob0
658
+ _Same(_compile, 'Optimization',
659
+ _Enumeration(['Disabled', # /Od
660
+ 'MinSpace', # /O1
661
+ 'MaxSpeed', # /O2
662
+ 'Full'])) # /Ox
663
+ _Same(_compile, 'RuntimeLibrary',
664
+ _Enumeration(['MultiThreaded', # /MT
665
+ 'MultiThreadedDebug', # /MTd
666
+ 'MultiThreadedDLL', # /MD
667
+ 'MultiThreadedDebugDLL'])) # /MDd
668
+ _Same(_compile, 'StructMemberAlignment',
669
+ _Enumeration(['Default',
670
+ '1Byte', # /Zp1
671
+ '2Bytes', # /Zp2
672
+ '4Bytes', # /Zp4
673
+ '8Bytes', # /Zp8
674
+ '16Bytes'])) # /Zp16
675
+ _Same(_compile, 'WarningLevel',
676
+ _Enumeration(['TurnOffAllWarnings', # /W0
677
+ 'Level1', # /W1
678
+ 'Level2', # /W2
679
+ 'Level3', # /W3
680
+ 'Level4'], # /W4
681
+ new=['EnableAllWarnings'])) # /Wall
682
+
683
+ # Options found in MSVS that have been renamed in MSBuild.
684
+ _Renamed(_compile, 'EnableFunctionLevelLinking', 'FunctionLevelLinking',
685
+ _boolean) # /Gy
686
+ _Renamed(_compile, 'EnableIntrinsicFunctions', 'IntrinsicFunctions',
687
+ _boolean) # /Oi
688
+ _Renamed(_compile, 'KeepComments', 'PreprocessKeepComments', _boolean) # /C
689
+ _Renamed(_compile, 'ObjectFile', 'ObjectFileName', _file_name) # /Fo
690
+ _Renamed(_compile, 'OpenMP', 'OpenMPSupport', _boolean) # /openmp
691
+ _Renamed(_compile, 'PrecompiledHeaderThrough', 'PrecompiledHeaderFile',
692
+ _file_name) # Used with /Yc and /Yu
693
+ _Renamed(_compile, 'PrecompiledHeaderFile', 'PrecompiledHeaderOutputFile',
694
+ _file_name) # /Fp
695
+ _Renamed(_compile, 'UsePrecompiledHeader', 'PrecompiledHeader',
696
+ _Enumeration(['NotUsing', # VS recognized '' for this value too.
697
+ 'Create', # /Yc
698
+ 'Use'])) # /Yu
699
+ _Renamed(_compile, 'WarnAsError', 'TreatWarningAsError', _boolean) # /WX
700
+
701
+ _ConvertedToAdditionalOption(_compile, 'DefaultCharIsUnsigned', '/J')
702
+
703
+ # MSVS options not found in MSBuild.
704
+ _MSVSOnly(_compile, 'Detect64BitPortabilityProblems', _boolean)
705
+ _MSVSOnly(_compile, 'UseUnicodeResponseFiles', _boolean)
706
+
707
+ # MSBuild options not found in MSVS.
708
+ _MSBuildOnly(_compile, 'BuildingInIDE', _boolean)
709
+ _MSBuildOnly(_compile, 'CompileAsManaged',
710
+ _Enumeration([], new=['false',
711
+ 'true'])) # /clr
712
+ _MSBuildOnly(_compile, 'CreateHotpatchableImage', _boolean) # /hotpatch
713
+ _MSBuildOnly(_compile, 'MultiProcessorCompilation', _boolean) # /MP
714
+ _MSBuildOnly(_compile, 'PreprocessOutputPath', _string) # /Fi
715
+ _MSBuildOnly(_compile, 'ProcessorNumber', _integer) # the number of processors
716
+ _MSBuildOnly(_compile, 'TrackerLogDirectory', _folder_name)
717
+ _MSBuildOnly(_compile, 'TreatSpecificWarningsAsErrors', _string_list) # /we
718
+ _MSBuildOnly(_compile, 'UseUnicodeForAssemblerListing', _boolean) # /FAu
719
+
720
+ # Defines a setting that needs very customized processing
721
+ _CustomGeneratePreprocessedFile(_compile, 'GeneratePreprocessedFile')
722
+
723
+
724
+ # Directives for converting MSVS VCLinkerTool to MSBuild Link.
725
+ # See "c:\Program Files (x86)\MSBuild\Microsoft.Cpp\v4.0\1033\link.xml" for
726
+ # the schema of the MSBuild Link settings.
727
+
728
+ # Options that have the same name in MSVS and MSBuild
729
+ _Same(_link, 'AdditionalDependencies', _file_list)
730
+ _Same(_link, 'AdditionalLibraryDirectories', _folder_list) # /LIBPATH
731
+ # /MANIFESTDEPENDENCY:
732
+ _Same(_link, 'AdditionalManifestDependencies', _file_list)
733
+ _Same(_link, 'AdditionalOptions', _string_list)
734
+ _Same(_link, 'AddModuleNamesToAssembly', _file_list) # /ASSEMBLYMODULE
735
+ _Same(_link, 'AllowIsolation', _boolean) # /ALLOWISOLATION
736
+ _Same(_link, 'AssemblyLinkResource', _file_list) # /ASSEMBLYLINKRESOURCE
737
+ _Same(_link, 'BaseAddress', _string) # /BASE
738
+ _Same(_link, 'CLRUnmanagedCodeCheck', _boolean) # /CLRUNMANAGEDCODECHECK
739
+ _Same(_link, 'DelayLoadDLLs', _file_list) # /DELAYLOAD
740
+ _Same(_link, 'DelaySign', _boolean) # /DELAYSIGN
741
+ _Same(_link, 'EmbedManagedResourceFile', _file_list) # /ASSEMBLYRESOURCE
742
+ _Same(_link, 'EnableUAC', _boolean) # /MANIFESTUAC
743
+ _Same(_link, 'EntryPointSymbol', _string) # /ENTRY
744
+ _Same(_link, 'ForceSymbolReferences', _file_list) # /INCLUDE
745
+ _Same(_link, 'FunctionOrder', _file_name) # /ORDER
746
+ _Same(_link, 'GenerateDebugInformation', _boolean) # /DEBUG
747
+ _Same(_link, 'GenerateMapFile', _boolean) # /MAP
748
+ _Same(_link, 'HeapCommitSize', _string)
749
+ _Same(_link, 'HeapReserveSize', _string) # /HEAP
750
+ _Same(_link, 'IgnoreAllDefaultLibraries', _boolean) # /NODEFAULTLIB
751
+ _Same(_link, 'IgnoreEmbeddedIDL', _boolean) # /IGNOREIDL
752
+ _Same(_link, 'ImportLibrary', _file_name) # /IMPLIB
753
+ _Same(_link, 'KeyContainer', _file_name) # /KEYCONTAINER
754
+ _Same(_link, 'KeyFile', _file_name) # /KEYFILE
755
+ _Same(_link, 'ManifestFile', _file_name) # /ManifestFile
756
+ _Same(_link, 'MapExports', _boolean) # /MAPINFO:EXPORTS
757
+ _Same(_link, 'MapFileName', _file_name)
758
+ _Same(_link, 'MergedIDLBaseFileName', _file_name) # /IDLOUT
759
+ _Same(_link, 'MergeSections', _string) # /MERGE
760
+ _Same(_link, 'MidlCommandFile', _file_name) # /MIDL
761
+ _Same(_link, 'ModuleDefinitionFile', _file_name) # /DEF
762
+ _Same(_link, 'OutputFile', _file_name) # /OUT
763
+ _Same(_link, 'PerUserRedirection', _boolean)
764
+ _Same(_link, 'Profile', _boolean) # /PROFILE
765
+ _Same(_link, 'ProfileGuidedDatabase', _file_name) # /PGD
766
+ _Same(_link, 'ProgramDatabaseFile', _file_name) # /PDB
767
+ _Same(_link, 'RegisterOutput', _boolean)
768
+ _Same(_link, 'SetChecksum', _boolean) # /RELEASE
769
+ _Same(_link, 'StackCommitSize', _string)
770
+ _Same(_link, 'StackReserveSize', _string) # /STACK
771
+ _Same(_link, 'StripPrivateSymbols', _file_name) # /PDBSTRIPPED
772
+ _Same(_link, 'SupportUnloadOfDelayLoadedDLL', _boolean) # /DELAY:UNLOAD
773
+ _Same(_link, 'SuppressStartupBanner', _boolean) # /NOLOGO
774
+ _Same(_link, 'SwapRunFromCD', _boolean) # /SWAPRUN:CD
775
+ _Same(_link, 'TurnOffAssemblyGeneration', _boolean) # /NOASSEMBLY
776
+ _Same(_link, 'TypeLibraryFile', _file_name) # /TLBOUT
777
+ _Same(_link, 'TypeLibraryResourceID', _integer) # /TLBID
778
+ _Same(_link, 'UACUIAccess', _boolean) # /uiAccess='true'
779
+ _Same(_link, 'Version', _string) # /VERSION
780
+
781
+ _Same(_link, 'EnableCOMDATFolding', _newly_boolean) # /OPT:ICF
782
+ _Same(_link, 'FixedBaseAddress', _newly_boolean) # /FIXED
783
+ _Same(_link, 'LargeAddressAware', _newly_boolean) # /LARGEADDRESSAWARE
784
+ _Same(_link, 'OptimizeReferences', _newly_boolean) # /OPT:REF
785
+ _Same(_link, 'RandomizedBaseAddress', _newly_boolean) # /DYNAMICBASE
786
+ _Same(_link, 'TerminalServerAware', _newly_boolean) # /TSAWARE
787
+
788
+ _subsystem_enumeration = _Enumeration(
789
+ ['NotSet',
790
+ 'Console', # /SUBSYSTEM:CONSOLE
791
+ 'Windows', # /SUBSYSTEM:WINDOWS
792
+ 'Native', # /SUBSYSTEM:NATIVE
793
+ 'EFI Application', # /SUBSYSTEM:EFI_APPLICATION
794
+ 'EFI Boot Service Driver', # /SUBSYSTEM:EFI_BOOT_SERVICE_DRIVER
795
+ 'EFI ROM', # /SUBSYSTEM:EFI_ROM
796
+ 'EFI Runtime', # /SUBSYSTEM:EFI_RUNTIME_DRIVER
797
+ 'WindowsCE'], # /SUBSYSTEM:WINDOWSCE
798
+ new=['POSIX']) # /SUBSYSTEM:POSIX
799
+
800
+ _target_machine_enumeration = _Enumeration(
801
+ ['NotSet',
802
+ 'MachineX86', # /MACHINE:X86
803
+ None,
804
+ 'MachineARM', # /MACHINE:ARM
805
+ 'MachineEBC', # /MACHINE:EBC
806
+ 'MachineIA64', # /MACHINE:IA64
807
+ None,
808
+ 'MachineMIPS', # /MACHINE:MIPS
809
+ 'MachineMIPS16', # /MACHINE:MIPS16
810
+ 'MachineMIPSFPU', # /MACHINE:MIPSFPU
811
+ 'MachineMIPSFPU16', # /MACHINE:MIPSFPU16
812
+ None,
813
+ None,
814
+ None,
815
+ 'MachineSH4', # /MACHINE:SH4
816
+ None,
817
+ 'MachineTHUMB', # /MACHINE:THUMB
818
+ 'MachineX64']) # /MACHINE:X64
819
+
820
+ _Same(_link, 'AssemblyDebug',
821
+ _Enumeration(['',
822
+ 'true', # /ASSEMBLYDEBUG
823
+ 'false'])) # /ASSEMBLYDEBUG:DISABLE
824
+ _Same(_link, 'CLRImageType',
825
+ _Enumeration(['Default',
826
+ 'ForceIJWImage', # /CLRIMAGETYPE:IJW
827
+ 'ForcePureILImage', # /Switch="CLRIMAGETYPE:PURE
828
+ 'ForceSafeILImage'])) # /Switch="CLRIMAGETYPE:SAFE
829
+ _Same(_link, 'CLRThreadAttribute',
830
+ _Enumeration(['DefaultThreadingAttribute', # /CLRTHREADATTRIBUTE:NONE
831
+ 'MTAThreadingAttribute', # /CLRTHREADATTRIBUTE:MTA
832
+ 'STAThreadingAttribute'])) # /CLRTHREADATTRIBUTE:STA
833
+ _Same(_link, 'DataExecutionPrevention',
834
+ _Enumeration(['',
835
+ 'false', # /NXCOMPAT:NO
836
+ 'true'])) # /NXCOMPAT
837
+ _Same(_link, 'Driver',
838
+ _Enumeration(['NotSet',
839
+ 'Driver', # /Driver
840
+ 'UpOnly', # /DRIVER:UPONLY
841
+ 'WDM'])) # /DRIVER:WDM
842
+ _Same(_link, 'LinkTimeCodeGeneration',
843
+ _Enumeration(['Default',
844
+ 'UseLinkTimeCodeGeneration', # /LTCG
845
+ 'PGInstrument', # /LTCG:PGInstrument
846
+ 'PGOptimization', # /LTCG:PGOptimize
847
+ 'PGUpdate'])) # /LTCG:PGUpdate
848
+ _Same(_link, 'ShowProgress',
849
+ _Enumeration(['NotSet',
850
+ 'LinkVerbose', # /VERBOSE
851
+ 'LinkVerboseLib'], # /VERBOSE:Lib
852
+ new=['LinkVerboseICF', # /VERBOSE:ICF
853
+ 'LinkVerboseREF', # /VERBOSE:REF
854
+ 'LinkVerboseSAFESEH', # /VERBOSE:SAFESEH
855
+ 'LinkVerboseCLR'])) # /VERBOSE:CLR
856
+ _Same(_link, 'SubSystem', _subsystem_enumeration)
857
+ _Same(_link, 'TargetMachine', _target_machine_enumeration)
858
+ _Same(_link, 'UACExecutionLevel',
859
+ _Enumeration(['AsInvoker', # /level='asInvoker'
860
+ 'HighestAvailable', # /level='highestAvailable'
861
+ 'RequireAdministrator'])) # /level='requireAdministrator'
862
+ _Same(_link, 'MinimumRequiredVersion', _string)
863
+ _Same(_link, 'TreatLinkerWarningAsErrors', _boolean) # /WX
864
+
865
+
866
+ # Options found in MSVS that have been renamed in MSBuild.
867
+ _Renamed(_link, 'ErrorReporting', 'LinkErrorReporting',
868
+ _Enumeration(['NoErrorReport', # /ERRORREPORT:NONE
869
+ 'PromptImmediately', # /ERRORREPORT:PROMPT
870
+ 'QueueForNextLogin'], # /ERRORREPORT:QUEUE
871
+ new=['SendErrorReport'])) # /ERRORREPORT:SEND
872
+ _Renamed(_link, 'IgnoreDefaultLibraryNames', 'IgnoreSpecificDefaultLibraries',
873
+ _file_list) # /NODEFAULTLIB
874
+ _Renamed(_link, 'ResourceOnlyDLL', 'NoEntryPoint', _boolean) # /NOENTRY
875
+ _Renamed(_link, 'SwapRunFromNet', 'SwapRunFromNET', _boolean) # /SWAPRUN:NET
876
+
877
+ _Moved(_link, 'GenerateManifest', '', _boolean)
878
+ _Moved(_link, 'IgnoreImportLibrary', '', _boolean)
879
+ _Moved(_link, 'LinkIncremental', '', _newly_boolean)
880
+ _Moved(_link, 'LinkLibraryDependencies', 'ProjectReference', _boolean)
881
+ _Moved(_link, 'UseLibraryDependencyInputs', 'ProjectReference', _boolean)
882
+
883
+ # MSVS options not found in MSBuild.
884
+ _MSVSOnly(_link, 'OptimizeForWindows98', _newly_boolean)
885
+ _MSVSOnly(_link, 'UseUnicodeResponseFiles', _boolean)
886
+
887
+ # MSBuild options not found in MSVS.
888
+ _MSBuildOnly(_link, 'BuildingInIDE', _boolean)
889
+ _MSBuildOnly(_link, 'ImageHasSafeExceptionHandlers', _boolean) # /SAFESEH
890
+ _MSBuildOnly(_link, 'LinkDLL', _boolean) # /DLL Visible='false'
891
+ _MSBuildOnly(_link, 'LinkStatus', _boolean) # /LTCG:STATUS
892
+ _MSBuildOnly(_link, 'PreventDllBinding', _boolean) # /ALLOWBIND
893
+ _MSBuildOnly(_link, 'SupportNobindOfDelayLoadedDLL', _boolean) # /DELAY:NOBIND
894
+ _MSBuildOnly(_link, 'TrackerLogDirectory', _folder_name)
895
+ _MSBuildOnly(_link, 'MSDOSStubFileName', _file_name) # /STUB Visible='false'
896
+ _MSBuildOnly(_link, 'SectionAlignment', _integer) # /ALIGN
897
+ _MSBuildOnly(_link, 'SpecifySectionAttributes', _string) # /SECTION
898
+ _MSBuildOnly(_link, 'ForceFileOutput',
899
+ _Enumeration([], new=['Enabled', # /FORCE
900
+ # /FORCE:MULTIPLE
901
+ 'MultiplyDefinedSymbolOnly',
902
+ 'UndefinedSymbolOnly'])) # /FORCE:UNRESOLVED
903
+ _MSBuildOnly(_link, 'CreateHotPatchableImage',
904
+ _Enumeration([], new=['Enabled', # /FUNCTIONPADMIN
905
+ 'X86Image', # /FUNCTIONPADMIN:5
906
+ 'X64Image', # /FUNCTIONPADMIN:6
907
+ 'ItaniumImage'])) # /FUNCTIONPADMIN:16
908
+ _MSBuildOnly(_link, 'CLRSupportLastError',
909
+ _Enumeration([], new=['Enabled', # /CLRSupportLastError
910
+ 'Disabled', # /CLRSupportLastError:NO
911
+ # /CLRSupportLastError:SYSTEMDLL
912
+ 'SystemDlls']))
913
+
914
+
915
+ # Directives for converting VCResourceCompilerTool to ResourceCompile.
916
+ # See "c:\Program Files (x86)\MSBuild\Microsoft.Cpp\v4.0\1033\rc.xml" for
917
+ # the schema of the MSBuild ResourceCompile settings.
918
+
919
+ _Same(_rc, 'AdditionalOptions', _string_list)
920
+ _Same(_rc, 'AdditionalIncludeDirectories', _folder_list) # /I
921
+ _Same(_rc, 'Culture', _Integer(msbuild_base=16))
922
+ _Same(_rc, 'IgnoreStandardIncludePath', _boolean) # /X
923
+ _Same(_rc, 'PreprocessorDefinitions', _string_list) # /D
924
+ _Same(_rc, 'ResourceOutputFileName', _string) # /fo
925
+ _Same(_rc, 'ShowProgress', _boolean) # /v
926
+ # There is no UI in VisualStudio 2008 to set the following properties.
927
+ # However they are found in CL and other tools. Include them here for
928
+ # completeness, as they are very likely to have the same usage pattern.
929
+ _Same(_rc, 'SuppressStartupBanner', _boolean) # /nologo
930
+ _Same(_rc, 'UndefinePreprocessorDefinitions', _string_list) # /u
931
+
932
+ # MSBuild options not found in MSVS.
933
+ _MSBuildOnly(_rc, 'NullTerminateStrings', _boolean) # /n
934
+ _MSBuildOnly(_rc, 'TrackerLogDirectory', _folder_name)
935
+
936
+
937
+ # Directives for converting VCMIDLTool to Midl.
938
+ # See "c:\Program Files (x86)\MSBuild\Microsoft.Cpp\v4.0\1033\midl.xml" for
939
+ # the schema of the MSBuild Midl settings.
940
+
941
+ _Same(_midl, 'AdditionalIncludeDirectories', _folder_list) # /I
942
+ _Same(_midl, 'AdditionalOptions', _string_list)
943
+ _Same(_midl, 'CPreprocessOptions', _string) # /cpp_opt
944
+ _Same(_midl, 'ErrorCheckAllocations', _boolean) # /error allocation
945
+ _Same(_midl, 'ErrorCheckBounds', _boolean) # /error bounds_check
946
+ _Same(_midl, 'ErrorCheckEnumRange', _boolean) # /error enum
947
+ _Same(_midl, 'ErrorCheckRefPointers', _boolean) # /error ref
948
+ _Same(_midl, 'ErrorCheckStubData', _boolean) # /error stub_data
949
+ _Same(_midl, 'GenerateStublessProxies', _boolean) # /Oicf
950
+ _Same(_midl, 'GenerateTypeLibrary', _boolean)
951
+ _Same(_midl, 'HeaderFileName', _file_name) # /h
952
+ _Same(_midl, 'IgnoreStandardIncludePath', _boolean) # /no_def_idir
953
+ _Same(_midl, 'InterfaceIdentifierFileName', _file_name) # /iid
954
+ _Same(_midl, 'MkTypLibCompatible', _boolean) # /mktyplib203
955
+ _Same(_midl, 'OutputDirectory', _string) # /out
956
+ _Same(_midl, 'PreprocessorDefinitions', _string_list) # /D
957
+ _Same(_midl, 'ProxyFileName', _file_name) # /proxy
958
+ _Same(_midl, 'RedirectOutputAndErrors', _file_name) # /o
959
+ _Same(_midl, 'SuppressStartupBanner', _boolean) # /nologo
960
+ _Same(_midl, 'TypeLibraryName', _file_name) # /tlb
961
+ _Same(_midl, 'UndefinePreprocessorDefinitions', _string_list) # /U
962
+ _Same(_midl, 'WarnAsError', _boolean) # /WX
963
+
964
+ _Same(_midl, 'DefaultCharType',
965
+ _Enumeration(['Unsigned', # /char unsigned
966
+ 'Signed', # /char signed
967
+ 'Ascii'])) # /char ascii7
968
+ _Same(_midl, 'TargetEnvironment',
969
+ _Enumeration(['NotSet',
970
+ 'Win32', # /env win32
971
+ 'Itanium', # /env ia64
972
+ 'X64'])) # /env x64
973
+ _Same(_midl, 'EnableErrorChecks',
974
+ _Enumeration(['EnableCustom',
975
+ 'None', # /error none
976
+ 'All'])) # /error all
977
+ _Same(_midl, 'StructMemberAlignment',
978
+ _Enumeration(['NotSet',
979
+ '1', # Zp1
980
+ '2', # Zp2
981
+ '4', # Zp4
982
+ '8'])) # Zp8
983
+ _Same(_midl, 'WarningLevel',
984
+ _Enumeration(['0', # /W0
985
+ '1', # /W1
986
+ '2', # /W2
987
+ '3', # /W3
988
+ '4'])) # /W4
989
+
990
+ _Renamed(_midl, 'DLLDataFileName', 'DllDataFileName', _file_name) # /dlldata
991
+ _Renamed(_midl, 'ValidateParameters', 'ValidateAllParameters',
992
+ _boolean) # /robust
993
+
994
+ # MSBuild options not found in MSVS.
995
+ _MSBuildOnly(_midl, 'ApplicationConfigurationMode', _boolean) # /app_config
996
+ _MSBuildOnly(_midl, 'ClientStubFile', _file_name) # /cstub
997
+ _MSBuildOnly(_midl, 'GenerateClientFiles',
998
+ _Enumeration([], new=['Stub', # /client stub
999
+ 'None'])) # /client none
1000
+ _MSBuildOnly(_midl, 'GenerateServerFiles',
1001
+ _Enumeration([], new=['Stub', # /client stub
1002
+ 'None'])) # /client none
1003
+ _MSBuildOnly(_midl, 'LocaleID', _integer) # /lcid DECIMAL
1004
+ _MSBuildOnly(_midl, 'ServerStubFile', _file_name) # /sstub
1005
+ _MSBuildOnly(_midl, 'SuppressCompilerWarnings', _boolean) # /no_warn
1006
+ _MSBuildOnly(_midl, 'TrackerLogDirectory', _folder_name)
1007
+ _MSBuildOnly(_midl, 'TypeLibFormat',
1008
+ _Enumeration([], new=['NewFormat', # /newtlb
1009
+ 'OldFormat'])) # /oldtlb
1010
+
1011
+
1012
+ # Directives for converting VCLibrarianTool to Lib.
1013
+ # See "c:\Program Files (x86)\MSBuild\Microsoft.Cpp\v4.0\1033\lib.xml" for
1014
+ # the schema of the MSBuild Lib settings.
1015
+
1016
+ _Same(_lib, 'AdditionalDependencies', _file_list)
1017
+ _Same(_lib, 'AdditionalLibraryDirectories', _folder_list) # /LIBPATH
1018
+ _Same(_lib, 'AdditionalOptions', _string_list)
1019
+ _Same(_lib, 'ExportNamedFunctions', _string_list) # /EXPORT
1020
+ _Same(_lib, 'ForceSymbolReferences', _string) # /INCLUDE
1021
+ _Same(_lib, 'IgnoreAllDefaultLibraries', _boolean) # /NODEFAULTLIB
1022
+ _Same(_lib, 'IgnoreSpecificDefaultLibraries', _file_list) # /NODEFAULTLIB
1023
+ _Same(_lib, 'ModuleDefinitionFile', _file_name) # /DEF
1024
+ _Same(_lib, 'OutputFile', _file_name) # /OUT
1025
+ _Same(_lib, 'SuppressStartupBanner', _boolean) # /NOLOGO
1026
+ _Same(_lib, 'UseUnicodeResponseFiles', _boolean)
1027
+ _Same(_lib, 'LinkTimeCodeGeneration', _boolean) # /LTCG
1028
+ _Same(_lib, 'TargetMachine', _target_machine_enumeration)
1029
+
1030
+ # TODO(jeanluc) _link defines the same value that gets moved to
1031
+ # ProjectReference. We may want to validate that they are consistent.
1032
+ _Moved(_lib, 'LinkLibraryDependencies', 'ProjectReference', _boolean)
1033
+
1034
+ _MSBuildOnly(_lib, 'DisplayLibrary', _string) # /LIST Visible='false'
1035
+ _MSBuildOnly(_lib, 'ErrorReporting',
1036
+ _Enumeration([], new=['PromptImmediately', # /ERRORREPORT:PROMPT
1037
+ 'QueueForNextLogin', # /ERRORREPORT:QUEUE
1038
+ 'SendErrorReport', # /ERRORREPORT:SEND
1039
+ 'NoErrorReport'])) # /ERRORREPORT:NONE
1040
+ _MSBuildOnly(_lib, 'MinimumRequiredVersion', _string)
1041
+ _MSBuildOnly(_lib, 'Name', _file_name) # /NAME
1042
+ _MSBuildOnly(_lib, 'RemoveObjects', _file_list) # /REMOVE
1043
+ _MSBuildOnly(_lib, 'SubSystem', _subsystem_enumeration)
1044
+ _MSBuildOnly(_lib, 'TrackerLogDirectory', _folder_name)
1045
+ _MSBuildOnly(_lib, 'TreatLibWarningAsErrors', _boolean) # /WX
1046
+ _MSBuildOnly(_lib, 'Verbose', _boolean)
1047
+
1048
+
1049
+ # Directives for converting VCManifestTool to Mt.
1050
+ # See "c:\Program Files (x86)\MSBuild\Microsoft.Cpp\v4.0\1033\mt.xml" for
1051
+ # the schema of the MSBuild Lib settings.
1052
+
1053
+ # Options that have the same name in MSVS and MSBuild
1054
+ _Same(_manifest, 'AdditionalManifestFiles', _file_list) # /manifest
1055
+ _Same(_manifest, 'AdditionalOptions', _string_list)
1056
+ _Same(_manifest, 'AssemblyIdentity', _string) # /identity:
1057
+ _Same(_manifest, 'ComponentFileName', _file_name) # /dll
1058
+ _Same(_manifest, 'GenerateCatalogFiles', _boolean) # /makecdfs
1059
+ _Same(_manifest, 'InputResourceManifests', _string) # /inputresource
1060
+ _Same(_manifest, 'OutputManifestFile', _file_name) # /out
1061
+ _Same(_manifest, 'RegistrarScriptFile', _file_name) # /rgs
1062
+ _Same(_manifest, 'ReplacementsFile', _file_name) # /replacements
1063
+ _Same(_manifest, 'SuppressStartupBanner', _boolean) # /nologo
1064
+ _Same(_manifest, 'TypeLibraryFile', _file_name) # /tlb:
1065
+ _Same(_manifest, 'UpdateFileHashes', _boolean) # /hashupdate
1066
+ _Same(_manifest, 'UpdateFileHashesSearchPath', _file_name)
1067
+ _Same(_manifest, 'VerboseOutput', _boolean) # /verbose
1068
+
1069
+ # Options that have moved location.
1070
+ _MovedAndRenamed(_manifest, 'ManifestResourceFile',
1071
+ 'ManifestResourceCompile',
1072
+ 'ResourceOutputFileName',
1073
+ _file_name)
1074
+ _Moved(_manifest, 'EmbedManifest', '', _boolean)
1075
+
1076
+ # MSVS options not found in MSBuild.
1077
+ _MSVSOnly(_manifest, 'DependencyInformationFile', _file_name)
1078
+ _MSVSOnly(_manifest, 'UseFAT32Workaround', _boolean)
1079
+ _MSVSOnly(_manifest, 'UseUnicodeResponseFiles', _boolean)
1080
+
1081
+ # MSBuild options not found in MSVS.
1082
+ _MSBuildOnly(_manifest, 'EnableDPIAwareness', _boolean)
1083
+ _MSBuildOnly(_manifest, 'GenerateCategoryTags', _boolean) # /category
1084
+ _MSBuildOnly(_manifest, 'ManifestFromManagedAssembly',
1085
+ _file_name) # /managedassemblyname
1086
+ _MSBuildOnly(_manifest, 'OutputResourceManifests', _string) # /outputresource
1087
+ _MSBuildOnly(_manifest, 'SuppressDependencyElement', _boolean) # /nodependency
1088
+ _MSBuildOnly(_manifest, 'TrackerLogDirectory', _folder_name)
1089
+
1090
+
1091
+ # Directives for MASM.
1092
+ # See "$(VCTargetsPath)\BuildCustomizations\masm.xml" for the schema of the
1093
+ # MSBuild MASM settings.
1094
+
1095
+ # Options that have the same name in MSVS and MSBuild.
1096
+ _Same(_masm, 'UseSafeExceptionHandlers', _boolean) # /safeseh