Nuitka-winsvc 2.7.7__cp313-cp313-win_amd64.whl

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.

Potentially problematic release.


This version of Nuitka-winsvc might be problematic. Click here for more details.

Files changed (995) hide show
  1. nuitka/Builtins.py +259 -0
  2. nuitka/BytecodeCaching.py +184 -0
  3. nuitka/Bytecodes.py +109 -0
  4. nuitka/CacheCleanup.py +54 -0
  5. nuitka/Constants.py +425 -0
  6. nuitka/Errors.py +93 -0
  7. nuitka/HardImportRegistry.py +408 -0
  8. nuitka/MainControl.py +1201 -0
  9. nuitka/ModuleRegistry.py +364 -0
  10. nuitka/OptionParsing.py +2473 -0
  11. nuitka/Options.py +2948 -0
  12. nuitka/OutputDirectories.py +201 -0
  13. nuitka/PostProcessing.py +551 -0
  14. nuitka/Progress.py +252 -0
  15. nuitka/PythonFlavors.py +426 -0
  16. nuitka/PythonOperators.py +146 -0
  17. nuitka/PythonVersions.py +513 -0
  18. nuitka/Serialization.py +291 -0
  19. nuitka/SourceCodeReferences.py +176 -0
  20. nuitka/Tracing.py +579 -0
  21. nuitka/TreeXML.py +141 -0
  22. nuitka/Variables.py +515 -0
  23. nuitka/Version.py +88 -0
  24. nuitka/__init__.py +19 -0
  25. nuitka/__main__.py +224 -0
  26. nuitka/__past__.py +217 -0
  27. nuitka/build/Backend.scons +1111 -0
  28. nuitka/build/CCompilerVersion.scons +281 -0
  29. nuitka/build/DataComposerInterface.py +116 -0
  30. nuitka/build/Offsets.scons +626 -0
  31. nuitka/build/Onefile.scons +564 -0
  32. nuitka/build/SconsCaching.py +451 -0
  33. nuitka/build/SconsCompilerSettings.py +1133 -0
  34. nuitka/build/SconsHacks.py +215 -0
  35. nuitka/build/SconsInterface.py +664 -0
  36. nuitka/build/SconsProgress.py +100 -0
  37. nuitka/build/SconsSpawn.py +436 -0
  38. nuitka/build/SconsUtils.py +939 -0
  39. nuitka/build/__init__.py +19 -0
  40. nuitka/build/include/nuitka/allocator.h +450 -0
  41. nuitka/build/include/nuitka/builtins.h +97 -0
  42. nuitka/build/include/nuitka/calling.h +123 -0
  43. nuitka/build/include/nuitka/checkers.h +39 -0
  44. nuitka/build/include/nuitka/checksum_tools.h +28 -0
  45. nuitka/build/include/nuitka/compiled_asyncgen.h +281 -0
  46. nuitka/build/include/nuitka/compiled_cell.h +64 -0
  47. nuitka/build/include/nuitka/compiled_coroutine.h +271 -0
  48. nuitka/build/include/nuitka/compiled_frame.h +502 -0
  49. nuitka/build/include/nuitka/compiled_function.h +170 -0
  50. nuitka/build/include/nuitka/compiled_generator.h +287 -0
  51. nuitka/build/include/nuitka/compiled_method.h +54 -0
  52. nuitka/build/include/nuitka/constants.h +251 -0
  53. nuitka/build/include/nuitka/constants_blob.h +34 -0
  54. nuitka/build/include/nuitka/debug_settings.h +60 -0
  55. nuitka/build/include/nuitka/environment_variables.h +30 -0
  56. nuitka/build/include/nuitka/environment_variables_system.h +51 -0
  57. nuitka/build/include/nuitka/exception_groups.h +167 -0
  58. nuitka/build/include/nuitka/exceptions.h +1458 -0
  59. nuitka/build/include/nuitka/filesystem_paths.h +117 -0
  60. nuitka/build/include/nuitka/freelists.h +92 -0
  61. nuitka/build/include/nuitka/hedley.h +1774 -0
  62. nuitka/build/include/nuitka/helper/attributes.h +90 -0
  63. nuitka/build/include/nuitka/helper/boolean.h +86 -0
  64. nuitka/build/include/nuitka/helper/bytearrays.h +34 -0
  65. nuitka/build/include/nuitka/helper/bytes.h +28 -0
  66. nuitka/build/include/nuitka/helper/calling_generated.h +132 -0
  67. nuitka/build/include/nuitka/helper/comparisons_dual_eq.h +47 -0
  68. nuitka/build/include/nuitka/helper/comparisons_dual_ge.h +39 -0
  69. nuitka/build/include/nuitka/helper/comparisons_dual_gt.h +39 -0
  70. nuitka/build/include/nuitka/helper/comparisons_dual_le.h +47 -0
  71. nuitka/build/include/nuitka/helper/comparisons_dual_lt.h +47 -0
  72. nuitka/build/include/nuitka/helper/comparisons_dual_ne.h +39 -0
  73. nuitka/build/include/nuitka/helper/comparisons_eq.h +247 -0
  74. nuitka/build/include/nuitka/helper/comparisons_ge.h +197 -0
  75. nuitka/build/include/nuitka/helper/comparisons_gt.h +197 -0
  76. nuitka/build/include/nuitka/helper/comparisons_le.h +247 -0
  77. nuitka/build/include/nuitka/helper/comparisons_lt.h +247 -0
  78. nuitka/build/include/nuitka/helper/comparisons_ne.h +197 -0
  79. nuitka/build/include/nuitka/helper/complex.h +46 -0
  80. nuitka/build/include/nuitka/helper/dictionaries.h +481 -0
  81. nuitka/build/include/nuitka/helper/floats.h +32 -0
  82. nuitka/build/include/nuitka/helper/import_hard.h +121 -0
  83. nuitka/build/include/nuitka/helper/indexes.h +47 -0
  84. nuitka/build/include/nuitka/helper/ints.h +165 -0
  85. nuitka/build/include/nuitka/helper/iterators.h +376 -0
  86. nuitka/build/include/nuitka/helper/lists.h +94 -0
  87. nuitka/build/include/nuitka/helper/lists_generated.h +36 -0
  88. nuitka/build/include/nuitka/helper/mappings.h +39 -0
  89. nuitka/build/include/nuitka/helper/operations.h +114 -0
  90. nuitka/build/include/nuitka/helper/operations_binary_add.h +240 -0
  91. nuitka/build/include/nuitka/helper/operations_binary_bitand.h +108 -0
  92. nuitka/build/include/nuitka/helper/operations_binary_bitor.h +108 -0
  93. nuitka/build/include/nuitka/helper/operations_binary_bitxor.h +108 -0
  94. nuitka/build/include/nuitka/helper/operations_binary_divmod.h +103 -0
  95. nuitka/build/include/nuitka/helper/operations_binary_dual_add.h +34 -0
  96. nuitka/build/include/nuitka/helper/operations_binary_floordiv.h +103 -0
  97. nuitka/build/include/nuitka/helper/operations_binary_lshift.h +99 -0
  98. nuitka/build/include/nuitka/helper/operations_binary_matmult.h +60 -0
  99. nuitka/build/include/nuitka/helper/operations_binary_mod.h +304 -0
  100. nuitka/build/include/nuitka/helper/operations_binary_mult.h +247 -0
  101. nuitka/build/include/nuitka/helper/operations_binary_olddiv.h +125 -0
  102. nuitka/build/include/nuitka/helper/operations_binary_pow.h +90 -0
  103. nuitka/build/include/nuitka/helper/operations_binary_rshift.h +99 -0
  104. nuitka/build/include/nuitka/helper/operations_binary_sub.h +117 -0
  105. nuitka/build/include/nuitka/helper/operations_binary_truediv.h +103 -0
  106. nuitka/build/include/nuitka/helper/operations_builtin_types.h +247 -0
  107. nuitka/build/include/nuitka/helper/operations_inplace_add.h +173 -0
  108. nuitka/build/include/nuitka/helper/operations_inplace_bitand.h +76 -0
  109. nuitka/build/include/nuitka/helper/operations_inplace_bitor.h +76 -0
  110. nuitka/build/include/nuitka/helper/operations_inplace_bitxor.h +76 -0
  111. nuitka/build/include/nuitka/helper/operations_inplace_floordiv.h +95 -0
  112. nuitka/build/include/nuitka/helper/operations_inplace_lshift.h +62 -0
  113. nuitka/build/include/nuitka/helper/operations_inplace_matmult.h +60 -0
  114. nuitka/build/include/nuitka/helper/operations_inplace_mod.h +218 -0
  115. nuitka/build/include/nuitka/helper/operations_inplace_mult.h +184 -0
  116. nuitka/build/include/nuitka/helper/operations_inplace_olddiv.h +115 -0
  117. nuitka/build/include/nuitka/helper/operations_inplace_pow.h +87 -0
  118. nuitka/build/include/nuitka/helper/operations_inplace_rshift.h +62 -0
  119. nuitka/build/include/nuitka/helper/operations_inplace_sub.h +102 -0
  120. nuitka/build/include/nuitka/helper/operations_inplace_truediv.h +95 -0
  121. nuitka/build/include/nuitka/helper/raising.h +114 -0
  122. nuitka/build/include/nuitka/helper/rangeobjects.h +66 -0
  123. nuitka/build/include/nuitka/helper/richcomparisons.h +35 -0
  124. nuitka/build/include/nuitka/helper/sequences.h +33 -0
  125. nuitka/build/include/nuitka/helper/sets.h +25 -0
  126. nuitka/build/include/nuitka/helper/slices.h +314 -0
  127. nuitka/build/include/nuitka/helper/strings.h +30 -0
  128. nuitka/build/include/nuitka/helper/subscripts.h +390 -0
  129. nuitka/build/include/nuitka/helper/tuples.h +187 -0
  130. nuitka/build/include/nuitka/helpers.h +417 -0
  131. nuitka/build/include/nuitka/importing.h +149 -0
  132. nuitka/build/include/nuitka/incbin.h +402 -0
  133. nuitka/build/include/nuitka/jit_sources.h +25 -0
  134. nuitka/build/include/nuitka/prelude.h +626 -0
  135. nuitka/build/include/nuitka/printing.h +84 -0
  136. nuitka/build/include/nuitka/python_pgo.h +57 -0
  137. nuitka/build/include/nuitka/safe_string_ops.h +57 -0
  138. nuitka/build/include/nuitka/threading.h +142 -0
  139. nuitka/build/include/nuitka/tracing.h +82 -0
  140. nuitka/build/include/nuitka/type_aliases.h +30 -0
  141. nuitka/build/include/nuitka/unfreezing.h +91 -0
  142. nuitka/build/inline_copy/appdirs/LICENSE.txt +23 -0
  143. nuitka/build/inline_copy/appdirs/appdirs.py +611 -0
  144. nuitka/build/inline_copy/atomicwrites/LICENSE +19 -0
  145. nuitka/build/inline_copy/atomicwrites/atomicwrites.py +226 -0
  146. nuitka/build/inline_copy/bin/scons.py +58 -0
  147. nuitka/build/inline_copy/clcache/clcache/LICENSE +30 -0
  148. nuitka/build/inline_copy/clcache/clcache/__init__.py +4 -0
  149. nuitka/build/inline_copy/clcache/clcache/caching.py +2008 -0
  150. nuitka/build/inline_copy/colorama/LICENSE.txt +27 -0
  151. nuitka/build/inline_copy/colorama/colorama/__init__.py +6 -0
  152. nuitka/build/inline_copy/colorama/colorama/ansi.py +102 -0
  153. nuitka/build/inline_copy/colorama/colorama/ansitowin32.py +258 -0
  154. nuitka/build/inline_copy/colorama/colorama/initialise.py +80 -0
  155. nuitka/build/inline_copy/colorama/colorama/win32.py +152 -0
  156. nuitka/build/inline_copy/colorama/colorama/winterm.py +169 -0
  157. nuitka/build/inline_copy/glob2/LICENSE +27 -0
  158. nuitka/build/inline_copy/glob2/glob2/__init__.py +5 -0
  159. nuitka/build/inline_copy/glob2/glob2/compat.py +167 -0
  160. nuitka/build/inline_copy/glob2/glob2/fnmatch.py +141 -0
  161. nuitka/build/inline_copy/glob2/glob2/impl.py +216 -0
  162. nuitka/build/inline_copy/jinja2/LICENSE.rst +28 -0
  163. nuitka/build/inline_copy/jinja2/README.rst +2 -0
  164. nuitka/build/inline_copy/jinja2/jinja2/__init__.py +72 -0
  165. nuitka/build/inline_copy/jinja2/jinja2/_compat.py +105 -0
  166. nuitka/build/inline_copy/jinja2/jinja2/_identifier.py +2 -0
  167. nuitka/build/inline_copy/jinja2/jinja2/bccache.py +361 -0
  168. nuitka/build/inline_copy/jinja2/jinja2/compiler.py +1721 -0
  169. nuitka/build/inline_copy/jinja2/jinja2/constants.py +32 -0
  170. nuitka/build/inline_copy/jinja2/jinja2/debug.py +378 -0
  171. nuitka/build/inline_copy/jinja2/jinja2/defaults.py +56 -0
  172. nuitka/build/inline_copy/jinja2/jinja2/environment.py +1276 -0
  173. nuitka/build/inline_copy/jinja2/jinja2/exceptions.py +146 -0
  174. nuitka/build/inline_copy/jinja2/jinja2/ext.py +627 -0
  175. nuitka/build/inline_copy/jinja2/jinja2/filters.py +1190 -0
  176. nuitka/build/inline_copy/jinja2/jinja2/idtracking.py +286 -0
  177. nuitka/build/inline_copy/jinja2/jinja2/lexer.py +739 -0
  178. nuitka/build/inline_copy/jinja2/jinja2/loaders.py +483 -0
  179. nuitka/build/inline_copy/jinja2/jinja2/meta.py +106 -0
  180. nuitka/build/inline_copy/jinja2/jinja2/nativetypes.py +220 -0
  181. nuitka/build/inline_copy/jinja2/jinja2/nodes.py +999 -0
  182. nuitka/build/inline_copy/jinja2/jinja2/optimizer.py +49 -0
  183. nuitka/build/inline_copy/jinja2/jinja2/parser.py +903 -0
  184. nuitka/build/inline_copy/jinja2/jinja2/runtime.py +808 -0
  185. nuitka/build/inline_copy/jinja2/jinja2/sandbox.py +488 -0
  186. nuitka/build/inline_copy/jinja2/jinja2/tests.py +174 -0
  187. nuitka/build/inline_copy/jinja2/jinja2/utils.py +642 -0
  188. nuitka/build/inline_copy/jinja2/jinja2/visitor.py +87 -0
  189. nuitka/build/inline_copy/lib/scons-4.3.0/SCons/Action.py +1475 -0
  190. nuitka/build/inline_copy/lib/scons-4.3.0/SCons/Builder.py +905 -0
  191. nuitka/build/inline_copy/lib/scons-4.3.0/SCons/CacheDir.py +314 -0
  192. nuitka/build/inline_copy/lib/scons-4.3.0/SCons/Conftest.py +805 -0
  193. nuitka/build/inline_copy/lib/scons-4.3.0/SCons/Debug.py +251 -0
  194. nuitka/build/inline_copy/lib/scons-4.3.0/SCons/Defaults.py +646 -0
  195. nuitka/build/inline_copy/lib/scons-4.3.0/SCons/Environment.py +2561 -0
  196. nuitka/build/inline_copy/lib/scons-4.3.0/SCons/EnvironmentValues.py +119 -0
  197. nuitka/build/inline_copy/lib/scons-4.3.0/SCons/Errors.py +222 -0
  198. nuitka/build/inline_copy/lib/scons-4.3.0/SCons/Executor.py +660 -0
  199. nuitka/build/inline_copy/lib/scons-4.3.0/SCons/Job.py +439 -0
  200. nuitka/build/inline_copy/lib/scons-4.3.0/SCons/Memoize.py +242 -0
  201. nuitka/build/inline_copy/lib/scons-4.3.0/SCons/Node/Alias.py +176 -0
  202. nuitka/build/inline_copy/lib/scons-4.3.0/SCons/Node/FS.py +3861 -0
  203. nuitka/build/inline_copy/lib/scons-4.3.0/SCons/Node/Python.py +195 -0
  204. nuitka/build/inline_copy/lib/scons-4.3.0/SCons/Node/__init__.py +1784 -0
  205. nuitka/build/inline_copy/lib/scons-4.3.0/SCons/PathList.py +224 -0
  206. nuitka/build/inline_copy/lib/scons-4.3.0/SCons/Platform/__init__.py +341 -0
  207. nuitka/build/inline_copy/lib/scons-4.3.0/SCons/Platform/aix.py +81 -0
  208. nuitka/build/inline_copy/lib/scons-4.3.0/SCons/Platform/cygwin.py +61 -0
  209. nuitka/build/inline_copy/lib/scons-4.3.0/SCons/Platform/darwin.py +70 -0
  210. nuitka/build/inline_copy/lib/scons-4.3.0/SCons/Platform/hpux.py +45 -0
  211. nuitka/build/inline_copy/lib/scons-4.3.0/SCons/Platform/irix.py +41 -0
  212. nuitka/build/inline_copy/lib/scons-4.3.0/SCons/Platform/mingw.py +33 -0
  213. nuitka/build/inline_copy/lib/scons-4.3.0/SCons/Platform/os2.py +55 -0
  214. nuitka/build/inline_copy/lib/scons-4.3.0/SCons/Platform/posix.py +124 -0
  215. nuitka/build/inline_copy/lib/scons-4.3.0/SCons/Platform/sunos.py +47 -0
  216. nuitka/build/inline_copy/lib/scons-4.3.0/SCons/Platform/virtualenv.py +115 -0
  217. nuitka/build/inline_copy/lib/scons-4.3.0/SCons/Platform/win32.py +429 -0
  218. nuitka/build/inline_copy/lib/scons-4.3.0/SCons/SConf.py +1119 -0
  219. nuitka/build/inline_copy/lib/scons-4.3.0/SCons/SConsign.py +453 -0
  220. nuitka/build/inline_copy/lib/scons-4.3.0/SCons/Scanner/C.py +226 -0
  221. nuitka/build/inline_copy/lib/scons-4.3.0/SCons/Scanner/Dir.py +131 -0
  222. nuitka/build/inline_copy/lib/scons-4.3.0/SCons/Scanner/Prog.py +114 -0
  223. nuitka/build/inline_copy/lib/scons-4.3.0/SCons/Scanner/RC.py +57 -0
  224. nuitka/build/inline_copy/lib/scons-4.3.0/SCons/Scanner/__init__.py +436 -0
  225. nuitka/build/inline_copy/lib/scons-4.3.0/SCons/Script/Interactive.py +372 -0
  226. nuitka/build/inline_copy/lib/scons-4.3.0/SCons/Script/Main.py +1469 -0
  227. nuitka/build/inline_copy/lib/scons-4.3.0/SCons/Script/SConsOptions.py +1071 -0
  228. nuitka/build/inline_copy/lib/scons-4.3.0/SCons/Script/SConscript.py +686 -0
  229. nuitka/build/inline_copy/lib/scons-4.3.0/SCons/Script/__init__.py +425 -0
  230. nuitka/build/inline_copy/lib/scons-4.3.0/SCons/Subst.py +979 -0
  231. nuitka/build/inline_copy/lib/scons-4.3.0/SCons/Taskmaster.py +1062 -0
  232. nuitka/build/inline_copy/lib/scons-4.3.0/SCons/Tool/386asm.py +61 -0
  233. nuitka/build/inline_copy/lib/scons-4.3.0/SCons/Tool/GettextCommon.py +429 -0
  234. nuitka/build/inline_copy/lib/scons-4.3.0/SCons/Tool/MSCommon/__init__.py +52 -0
  235. nuitka/build/inline_copy/lib/scons-4.3.0/SCons/Tool/MSCommon/arch.py +66 -0
  236. nuitka/build/inline_copy/lib/scons-4.3.0/SCons/Tool/MSCommon/common.py +371 -0
  237. nuitka/build/inline_copy/lib/scons-4.3.0/SCons/Tool/MSCommon/netframework.py +83 -0
  238. nuitka/build/inline_copy/lib/scons-4.3.0/SCons/Tool/MSCommon/sdk.py +411 -0
  239. nuitka/build/inline_copy/lib/scons-4.3.0/SCons/Tool/MSCommon/vc.py +994 -0
  240. nuitka/build/inline_copy/lib/scons-4.3.0/SCons/Tool/MSCommon/vs.py +608 -0
  241. nuitka/build/inline_copy/lib/scons-4.3.0/SCons/Tool/PharLapCommon.py +116 -0
  242. nuitka/build/inline_copy/lib/scons-4.3.0/SCons/Tool/__init__.py +882 -0
  243. nuitka/build/inline_copy/lib/scons-4.3.0/SCons/Tool/aixc++.py +43 -0
  244. nuitka/build/inline_copy/lib/scons-4.3.0/SCons/Tool/aixcc.py +74 -0
  245. nuitka/build/inline_copy/lib/scons-4.3.0/SCons/Tool/aixcxx.py +77 -0
  246. nuitka/build/inline_copy/lib/scons-4.3.0/SCons/Tool/aixlink.py +78 -0
  247. nuitka/build/inline_copy/lib/scons-4.3.0/SCons/Tool/applelink.py +209 -0
  248. nuitka/build/inline_copy/lib/scons-4.3.0/SCons/Tool/ar.py +63 -0
  249. nuitka/build/inline_copy/lib/scons-4.3.0/SCons/Tool/as.py +49 -0
  250. nuitka/build/inline_copy/lib/scons-4.3.0/SCons/Tool/asm.py +78 -0
  251. nuitka/build/inline_copy/lib/scons-4.3.0/SCons/Tool/bcc32.py +81 -0
  252. nuitka/build/inline_copy/lib/scons-4.3.0/SCons/Tool/c++.py +44 -0
  253. nuitka/build/inline_copy/lib/scons-4.3.0/SCons/Tool/cc.py +105 -0
  254. nuitka/build/inline_copy/lib/scons-4.3.0/SCons/Tool/clang.py +91 -0
  255. nuitka/build/inline_copy/lib/scons-4.3.0/SCons/Tool/clangCommon/__init__.py +18 -0
  256. nuitka/build/inline_copy/lib/scons-4.3.0/SCons/Tool/clangxx.py +99 -0
  257. nuitka/build/inline_copy/lib/scons-4.3.0/SCons/Tool/cxx.py +95 -0
  258. nuitka/build/inline_copy/lib/scons-4.3.0/SCons/Tool/cyglink.py +212 -0
  259. nuitka/build/inline_copy/lib/scons-4.3.0/SCons/Tool/default.py +50 -0
  260. nuitka/build/inline_copy/lib/scons-4.3.0/SCons/Tool/filesystem.py +98 -0
  261. nuitka/build/inline_copy/lib/scons-4.3.0/SCons/Tool/g++.py +45 -0
  262. nuitka/build/inline_copy/lib/scons-4.3.0/SCons/Tool/gas.py +56 -0
  263. nuitka/build/inline_copy/lib/scons-4.3.0/SCons/Tool/gcc.py +110 -0
  264. nuitka/build/inline_copy/lib/scons-4.3.0/SCons/Tool/gettext_tool.py +69 -0
  265. nuitka/build/inline_copy/lib/scons-4.3.0/SCons/Tool/gnulink.py +70 -0
  266. nuitka/build/inline_copy/lib/scons-4.3.0/SCons/Tool/gxx.py +78 -0
  267. nuitka/build/inline_copy/lib/scons-4.3.0/SCons/Tool/hpc++.py +45 -0
  268. nuitka/build/inline_copy/lib/scons-4.3.0/SCons/Tool/hpcc.py +53 -0
  269. nuitka/build/inline_copy/lib/scons-4.3.0/SCons/Tool/hpcxx.py +88 -0
  270. nuitka/build/inline_copy/lib/scons-4.3.0/SCons/Tool/hplink.py +72 -0
  271. nuitka/build/inline_copy/lib/scons-4.3.0/SCons/Tool/icc.py +59 -0
  272. nuitka/build/inline_copy/lib/scons-4.3.0/SCons/Tool/icl.py +52 -0
  273. nuitka/build/inline_copy/lib/scons-4.3.0/SCons/Tool/ilink.py +55 -0
  274. nuitka/build/inline_copy/lib/scons-4.3.0/SCons/Tool/ilink32.py +60 -0
  275. nuitka/build/inline_copy/lib/scons-4.3.0/SCons/Tool/install.py +510 -0
  276. nuitka/build/inline_copy/lib/scons-4.3.0/SCons/Tool/intelc.py +617 -0
  277. nuitka/build/inline_copy/lib/scons-4.3.0/SCons/Tool/link.py +72 -0
  278. nuitka/build/inline_copy/lib/scons-4.3.0/SCons/Tool/linkCommon/LoadableModule.py +131 -0
  279. nuitka/build/inline_copy/lib/scons-4.3.0/SCons/Tool/linkCommon/SharedLibrary.py +218 -0
  280. nuitka/build/inline_copy/lib/scons-4.3.0/SCons/Tool/linkCommon/__init__.py +171 -0
  281. nuitka/build/inline_copy/lib/scons-4.3.0/SCons/Tool/linkloc.py +112 -0
  282. nuitka/build/inline_copy/lib/scons-4.3.0/SCons/Tool/m4.py +63 -0
  283. nuitka/build/inline_copy/lib/scons-4.3.0/SCons/Tool/masm.py +77 -0
  284. nuitka/build/inline_copy/lib/scons-4.3.0/SCons/Tool/mingw.py +232 -0
  285. nuitka/build/inline_copy/lib/scons-4.3.0/SCons/Tool/msgfmt.py +132 -0
  286. nuitka/build/inline_copy/lib/scons-4.3.0/SCons/Tool/msginit.py +137 -0
  287. nuitka/build/inline_copy/lib/scons-4.3.0/SCons/Tool/msgmerge.py +125 -0
  288. nuitka/build/inline_copy/lib/scons-4.3.0/SCons/Tool/mslib.py +73 -0
  289. nuitka/build/inline_copy/lib/scons-4.3.0/SCons/Tool/mslink.py +339 -0
  290. nuitka/build/inline_copy/lib/scons-4.3.0/SCons/Tool/mssdk.py +50 -0
  291. nuitka/build/inline_copy/lib/scons-4.3.0/SCons/Tool/msvc.py +325 -0
  292. nuitka/build/inline_copy/lib/scons-4.3.0/SCons/Tool/msvs.py +2116 -0
  293. nuitka/build/inline_copy/lib/scons-4.3.0/SCons/Tool/mwcc.py +207 -0
  294. nuitka/build/inline_copy/lib/scons-4.3.0/SCons/Tool/mwld.py +108 -0
  295. nuitka/build/inline_copy/lib/scons-4.3.0/SCons/Tool/nasm.py +72 -0
  296. nuitka/build/inline_copy/lib/scons-4.3.0/SCons/Tool/rmic.py +139 -0
  297. nuitka/build/inline_copy/lib/scons-4.3.0/SCons/Tool/rpcgen.py +70 -0
  298. nuitka/build/inline_copy/lib/scons-4.3.0/SCons/Tool/sgiar.py +68 -0
  299. nuitka/build/inline_copy/lib/scons-4.3.0/SCons/Tool/sgic++.py +43 -0
  300. nuitka/build/inline_copy/lib/scons-4.3.0/SCons/Tool/sgicc.py +53 -0
  301. nuitka/build/inline_copy/lib/scons-4.3.0/SCons/Tool/sgicxx.py +61 -0
  302. nuitka/build/inline_copy/lib/scons-4.3.0/SCons/Tool/sgilink.py +59 -0
  303. nuitka/build/inline_copy/lib/scons-4.3.0/SCons/Tool/sunar.py +64 -0
  304. nuitka/build/inline_copy/lib/scons-4.3.0/SCons/Tool/sunc++.py +45 -0
  305. nuitka/build/inline_copy/lib/scons-4.3.0/SCons/Tool/suncc.py +58 -0
  306. nuitka/build/inline_copy/lib/scons-4.3.0/SCons/Tool/suncxx.py +153 -0
  307. nuitka/build/inline_copy/lib/scons-4.3.0/SCons/Tool/sunlink.py +79 -0
  308. nuitka/build/inline_copy/lib/scons-4.3.0/SCons/Tool/tar.py +73 -0
  309. nuitka/build/inline_copy/lib/scons-4.3.0/SCons/Tool/textfile.py +198 -0
  310. nuitka/build/inline_copy/lib/scons-4.3.0/SCons/Tool/tlib.py +53 -0
  311. nuitka/build/inline_copy/lib/scons-4.3.0/SCons/Tool/wix.py +104 -0
  312. nuitka/build/inline_copy/lib/scons-4.3.0/SCons/Tool/xgettext.py +337 -0
  313. nuitka/build/inline_copy/lib/scons-4.3.0/SCons/Tool/zip.py +120 -0
  314. nuitka/build/inline_copy/lib/scons-4.3.0/SCons/Util.py +2134 -0
  315. nuitka/build/inline_copy/lib/scons-4.3.0/SCons/Utilities/ConfigureCache.py +171 -0
  316. nuitka/build/inline_copy/lib/scons-4.3.0/SCons/Utilities/__init__.py +0 -0
  317. nuitka/build/inline_copy/lib/scons-4.3.0/SCons/Utilities/sconsign.py +494 -0
  318. nuitka/build/inline_copy/lib/scons-4.3.0/SCons/Variables/BoolVariable.py +96 -0
  319. nuitka/build/inline_copy/lib/scons-4.3.0/SCons/Variables/EnumVariable.py +110 -0
  320. nuitka/build/inline_copy/lib/scons-4.3.0/SCons/Variables/ListVariable.py +152 -0
  321. nuitka/build/inline_copy/lib/scons-4.3.0/SCons/Variables/PackageVariable.py +107 -0
  322. nuitka/build/inline_copy/lib/scons-4.3.0/SCons/Variables/PathVariable.py +158 -0
  323. nuitka/build/inline_copy/lib/scons-4.3.0/SCons/Variables/__init__.py +334 -0
  324. nuitka/build/inline_copy/lib/scons-4.3.0/SCons/Warnings.py +238 -0
  325. nuitka/build/inline_copy/lib/scons-4.3.0/SCons/__init__.py +9 -0
  326. nuitka/build/inline_copy/lib/scons-4.3.0/SCons/compat/__init__.py +104 -0
  327. nuitka/build/inline_copy/lib/scons-4.3.0/SCons/compat/_scons_dbm.py +42 -0
  328. nuitka/build/inline_copy/lib/scons-4.3.0/SCons/compat/win32.py +101 -0
  329. nuitka/build/inline_copy/lib/scons-4.3.0/SCons/cpp.py +640 -0
  330. nuitka/build/inline_copy/lib/scons-4.3.0/SCons/dblite.py +295 -0
  331. nuitka/build/inline_copy/lib/scons-4.3.0/SCons/exitfuncs.py +59 -0
  332. nuitka/build/inline_copy/markupsafe/LICENSE.rst +28 -0
  333. nuitka/build/inline_copy/markupsafe/markupsafe/__init__.py +327 -0
  334. nuitka/build/inline_copy/markupsafe/markupsafe/_compat.py +33 -0
  335. nuitka/build/inline_copy/markupsafe/markupsafe/_constants.py +264 -0
  336. nuitka/build/inline_copy/markupsafe/markupsafe/_native.py +69 -0
  337. nuitka/build/inline_copy/pefile/LICENSE.txt +21 -0
  338. nuitka/build/inline_copy/pefile/ordlookup/__init__.py +41 -0
  339. nuitka/build/inline_copy/pefile/ordlookup/oleaut32.py +400 -0
  340. nuitka/build/inline_copy/pefile/ordlookup/ws2_32.py +120 -0
  341. nuitka/build/inline_copy/pefile/pefile.py +8034 -0
  342. nuitka/build/inline_copy/pkg_resources/pkg_resources/__init__.py +3272 -0
  343. nuitka/build/inline_copy/pkg_resources/pkg_resources/py31compat.py +21 -0
  344. nuitka/build/inline_copy/python_hacl/LICENSE.txt +201 -0
  345. nuitka/build/inline_copy/python_hacl/hacl_312/Hacl_Hash_MD5.c +1430 -0
  346. nuitka/build/inline_copy/python_hacl/hacl_312/Hacl_Hash_MD5.h +66 -0
  347. nuitka/build/inline_copy/python_hacl/hacl_312/Hacl_Hash_SHA1.c +463 -0
  348. nuitka/build/inline_copy/python_hacl/hacl_312/Hacl_Hash_SHA1.h +66 -0
  349. nuitka/build/inline_copy/python_hacl/hacl_312/Hacl_Hash_SHA2.c +1273 -0
  350. nuitka/build/inline_copy/python_hacl/hacl_312/Hacl_Hash_SHA2.h +204 -0
  351. nuitka/build/inline_copy/python_hacl/hacl_312/Hacl_Hash_SHA3.c +734 -0
  352. nuitka/build/inline_copy/python_hacl/hacl_312/Hacl_Hash_SHA3.h +131 -0
  353. nuitka/build/inline_copy/python_hacl/hacl_312/Hacl_Streaming_Types.h +83 -0
  354. nuitka/build/inline_copy/python_hacl/hacl_312/include/krml/FStar_UInt128_Verified.h +346 -0
  355. nuitka/build/inline_copy/python_hacl/hacl_312/include/krml/FStar_UInt_8_16_32_64.h +107 -0
  356. nuitka/build/inline_copy/python_hacl/hacl_312/include/krml/fstar_uint128_struct_endianness.h +68 -0
  357. nuitka/build/inline_copy/python_hacl/hacl_312/include/krml/internal/target.h +293 -0
  358. nuitka/build/inline_copy/python_hacl/hacl_312/include/krml/lowstar_endianness.h +231 -0
  359. nuitka/build/inline_copy/python_hacl/hacl_312/include/krml/types.h +14 -0
  360. nuitka/build/inline_copy/python_hacl/hacl_312/internal/Hacl_Hash_MD5.h +56 -0
  361. nuitka/build/inline_copy/python_hacl/hacl_312/internal/Hacl_Hash_SHA1.h +56 -0
  362. nuitka/build/inline_copy/python_hacl/hacl_312/internal/Hacl_Hash_SHA2.h +164 -0
  363. nuitka/build/inline_copy/python_hacl/hacl_312/internal/Hacl_Hash_SHA3.h +65 -0
  364. nuitka/build/inline_copy/python_hacl/hacl_312/python_hacl_namespaces.h +89 -0
  365. nuitka/build/inline_copy/stubgen/astunparse.py +938 -0
  366. nuitka/build/inline_copy/stubgen/six.py +998 -0
  367. nuitka/build/inline_copy/stubgen/stubgen.py +484 -0
  368. nuitka/build/inline_copy/tqdm/tqdm/__init__.py +40 -0
  369. nuitka/build/inline_copy/tqdm/tqdm/_main.py +9 -0
  370. nuitka/build/inline_copy/tqdm/tqdm/_monitor.py +97 -0
  371. nuitka/build/inline_copy/tqdm/tqdm/_tqdm.py +9 -0
  372. nuitka/build/inline_copy/tqdm/tqdm/_tqdm_notebook.py +9 -0
  373. nuitka/build/inline_copy/tqdm/tqdm/_tqdm_pandas.py +24 -0
  374. nuitka/build/inline_copy/tqdm/tqdm/_utils.py +12 -0
  375. nuitka/build/inline_copy/tqdm/tqdm/auto.py +44 -0
  376. nuitka/build/inline_copy/tqdm/tqdm/autonotebook.py +28 -0
  377. nuitka/build/inline_copy/tqdm/tqdm/dask.py +46 -0
  378. nuitka/build/inline_copy/tqdm/tqdm/notebook.py +316 -0
  379. nuitka/build/inline_copy/tqdm/tqdm/std.py +1524 -0
  380. nuitka/build/inline_copy/tqdm/tqdm/tk.py +207 -0
  381. nuitka/build/inline_copy/tqdm/tqdm/utils.py +351 -0
  382. nuitka/build/inline_copy/tqdm/tqdm/version.py +2 -0
  383. nuitka/build/inline_copy/yaml/LICENSE +20 -0
  384. nuitka/build/inline_copy/yaml/yaml/__init__.py +427 -0
  385. nuitka/build/inline_copy/yaml/yaml/composer.py +139 -0
  386. nuitka/build/inline_copy/yaml/yaml/constructor.py +748 -0
  387. nuitka/build/inline_copy/yaml/yaml/cyaml.py +101 -0
  388. nuitka/build/inline_copy/yaml/yaml/dumper.py +62 -0
  389. nuitka/build/inline_copy/yaml/yaml/emitter.py +1137 -0
  390. nuitka/build/inline_copy/yaml/yaml/error.py +75 -0
  391. nuitka/build/inline_copy/yaml/yaml/events.py +86 -0
  392. nuitka/build/inline_copy/yaml/yaml/loader.py +63 -0
  393. nuitka/build/inline_copy/yaml/yaml/nodes.py +49 -0
  394. nuitka/build/inline_copy/yaml/yaml/parser.py +589 -0
  395. nuitka/build/inline_copy/yaml/yaml/reader.py +185 -0
  396. nuitka/build/inline_copy/yaml/yaml/representer.py +389 -0
  397. nuitka/build/inline_copy/yaml/yaml/resolver.py +227 -0
  398. nuitka/build/inline_copy/yaml/yaml/scanner.py +1435 -0
  399. nuitka/build/inline_copy/yaml/yaml/serializer.py +111 -0
  400. nuitka/build/inline_copy/yaml/yaml/tokens.py +104 -0
  401. nuitka/build/inline_copy/zlib/LICENSE +22 -0
  402. nuitka/build/inline_copy/zlib/crc32.c +1049 -0
  403. nuitka/build/inline_copy/zlib/crc32.h +9446 -0
  404. nuitka/build/inline_copy/zlib/zconf.h +551 -0
  405. nuitka/build/inline_copy/zlib/zlib.h +1938 -0
  406. nuitka/build/inline_copy/zlib/zutil.h +275 -0
  407. nuitka/build/inline_copy/zstd/LICENSE.txt +30 -0
  408. nuitka/build/inline_copy/zstd/common/bitstream.h +463 -0
  409. nuitka/build/inline_copy/zstd/common/compiler.h +288 -0
  410. nuitka/build/inline_copy/zstd/common/cpu.h +213 -0
  411. nuitka/build/inline_copy/zstd/common/debug.h +107 -0
  412. nuitka/build/inline_copy/zstd/common/entropy_common.c +360 -0
  413. nuitka/build/inline_copy/zstd/common/error_private.c +56 -0
  414. nuitka/build/inline_copy/zstd/common/error_private.h +80 -0
  415. nuitka/build/inline_copy/zstd/common/fse.h +715 -0
  416. nuitka/build/inline_copy/zstd/common/fse_decompress.c +393 -0
  417. nuitka/build/inline_copy/zstd/common/huf.h +361 -0
  418. nuitka/build/inline_copy/zstd/common/mem.h +426 -0
  419. nuitka/build/inline_copy/zstd/common/xxhash.c +826 -0
  420. nuitka/build/inline_copy/zstd/common/xxhash.h +285 -0
  421. nuitka/build/inline_copy/zstd/common/zstd_common.c +83 -0
  422. nuitka/build/inline_copy/zstd/common/zstd_deps.h +111 -0
  423. nuitka/build/inline_copy/zstd/common/zstd_errors.h +95 -0
  424. nuitka/build/inline_copy/zstd/common/zstd_internal.h +478 -0
  425. nuitka/build/inline_copy/zstd/decompress/huf_decompress.c +1350 -0
  426. nuitka/build/inline_copy/zstd/decompress/zstd_ddict.c +244 -0
  427. nuitka/build/inline_copy/zstd/decompress/zstd_ddict.h +44 -0
  428. nuitka/build/inline_copy/zstd/decompress/zstd_decompress.c +1930 -0
  429. nuitka/build/inline_copy/zstd/decompress/zstd_decompress_block.c +1540 -0
  430. nuitka/build/inline_copy/zstd/decompress/zstd_decompress_block.h +62 -0
  431. nuitka/build/inline_copy/zstd/decompress/zstd_decompress_internal.h +190 -0
  432. nuitka/build/inline_copy/zstd/zstd.h +2391 -0
  433. nuitka/build/static_src/CompiledAsyncgenType.c +2211 -0
  434. nuitka/build/static_src/CompiledCellType.c +300 -0
  435. nuitka/build/static_src/CompiledCodeHelpers.c +2160 -0
  436. nuitka/build/static_src/CompiledCoroutineType.c +1946 -0
  437. nuitka/build/static_src/CompiledFrameType.c +1337 -0
  438. nuitka/build/static_src/CompiledFunctionType.c +3320 -0
  439. nuitka/build/static_src/CompiledGeneratorType.c +1997 -0
  440. nuitka/build/static_src/CompiledGeneratorTypeUncompiledIntegration.c +2117 -0
  441. nuitka/build/static_src/CompiledMethodType.c +614 -0
  442. nuitka/build/static_src/GenerateHeadersMain.c +30 -0
  443. nuitka/build/static_src/HelpersAllocator.c +939 -0
  444. nuitka/build/static_src/HelpersAttributes.c +1241 -0
  445. nuitka/build/static_src/HelpersBuiltin.c +901 -0
  446. nuitka/build/static_src/HelpersBuiltinTypeMethods.c +3594 -0
  447. nuitka/build/static_src/HelpersBytes.c +107 -0
  448. nuitka/build/static_src/HelpersCalling.c +397 -0
  449. nuitka/build/static_src/HelpersCallingGenerated.c +14361 -0
  450. nuitka/build/static_src/HelpersChecksumTools.c +59 -0
  451. nuitka/build/static_src/HelpersClasses.c +91 -0
  452. nuitka/build/static_src/HelpersComparisonDualEq.c +183 -0
  453. nuitka/build/static_src/HelpersComparisonDualGe.c +121 -0
  454. nuitka/build/static_src/HelpersComparisonDualGt.c +121 -0
  455. nuitka/build/static_src/HelpersComparisonDualLe.c +183 -0
  456. nuitka/build/static_src/HelpersComparisonDualLt.c +183 -0
  457. nuitka/build/static_src/HelpersComparisonDualNe.c +121 -0
  458. nuitka/build/static_src/HelpersComparisonEq.c +12070 -0
  459. nuitka/build/static_src/HelpersComparisonEqUtils.c +169 -0
  460. nuitka/build/static_src/HelpersComparisonGe.c +11871 -0
  461. nuitka/build/static_src/HelpersComparisonGt.c +11855 -0
  462. nuitka/build/static_src/HelpersComparisonLe.c +11957 -0
  463. nuitka/build/static_src/HelpersComparisonLt.c +11941 -0
  464. nuitka/build/static_src/HelpersComparisonNe.c +11979 -0
  465. nuitka/build/static_src/HelpersConsole.c +124 -0
  466. nuitka/build/static_src/HelpersConstantsBlob.c +1487 -0
  467. nuitka/build/static_src/HelpersDeepcopy.c +636 -0
  468. nuitka/build/static_src/HelpersDictionaries.c +1739 -0
  469. nuitka/build/static_src/HelpersDictionariesGenerated.c +738 -0
  470. nuitka/build/static_src/HelpersDumpBacktraces.c +63 -0
  471. nuitka/build/static_src/HelpersEnvironmentVariables.c +65 -0
  472. nuitka/build/static_src/HelpersEnvironmentVariablesSystem.c +97 -0
  473. nuitka/build/static_src/HelpersExceptions.c +298 -0
  474. nuitka/build/static_src/HelpersFiles.c +353 -0
  475. nuitka/build/static_src/HelpersFilesystemPaths.c +1322 -0
  476. nuitka/build/static_src/HelpersFloats.c +92 -0
  477. nuitka/build/static_src/HelpersHeapStorage.c +68 -0
  478. nuitka/build/static_src/HelpersImport.c +506 -0
  479. nuitka/build/static_src/HelpersImportHard.c +526 -0
  480. nuitka/build/static_src/HelpersJitSources.c +48 -0
  481. nuitka/build/static_src/HelpersLists.c +899 -0
  482. nuitka/build/static_src/HelpersListsGenerated.c +564 -0
  483. nuitka/build/static_src/HelpersMappings.c +46 -0
  484. nuitka/build/static_src/HelpersMatching.c +192 -0
  485. nuitka/build/static_src/HelpersOperationBinaryAdd.c +6477 -0
  486. nuitka/build/static_src/HelpersOperationBinaryAddUtils.c +703 -0
  487. nuitka/build/static_src/HelpersOperationBinaryBitand.c +2738 -0
  488. nuitka/build/static_src/HelpersOperationBinaryBitor.c +2738 -0
  489. nuitka/build/static_src/HelpersOperationBinaryBitxor.c +2738 -0
  490. nuitka/build/static_src/HelpersOperationBinaryDivmod.c +2406 -0
  491. nuitka/build/static_src/HelpersOperationBinaryDivmodUtils.c +33 -0
  492. nuitka/build/static_src/HelpersOperationBinaryDualAdd.c +172 -0
  493. nuitka/build/static_src/HelpersOperationBinaryFloordiv.c +2422 -0
  494. nuitka/build/static_src/HelpersOperationBinaryInplaceAdd.c +220 -0
  495. nuitka/build/static_src/HelpersOperationBinaryLshift.c +2846 -0
  496. nuitka/build/static_src/HelpersOperationBinaryMatmult.c +453 -0
  497. nuitka/build/static_src/HelpersOperationBinaryMod.c +6549 -0
  498. nuitka/build/static_src/HelpersOperationBinaryMult.c +6438 -0
  499. nuitka/build/static_src/HelpersOperationBinaryMultUtils.c +125 -0
  500. nuitka/build/static_src/HelpersOperationBinaryOlddiv.c +2355 -0
  501. nuitka/build/static_src/HelpersOperationBinaryPow.c +2743 -0
  502. nuitka/build/static_src/HelpersOperationBinaryPowUtils.c +26 -0
  503. nuitka/build/static_src/HelpersOperationBinaryRshift.c +2706 -0
  504. nuitka/build/static_src/HelpersOperationBinarySub.c +2649 -0
  505. nuitka/build/static_src/HelpersOperationBinaryTruediv.c +2415 -0
  506. nuitka/build/static_src/HelpersOperationInplaceAdd.c +5211 -0
  507. nuitka/build/static_src/HelpersOperationInplaceAddUtils.c +144 -0
  508. nuitka/build/static_src/HelpersOperationInplaceBitand.c +1826 -0
  509. nuitka/build/static_src/HelpersOperationInplaceBitor.c +1826 -0
  510. nuitka/build/static_src/HelpersOperationInplaceBitxor.c +1826 -0
  511. nuitka/build/static_src/HelpersOperationInplaceFloordiv.c +2605 -0
  512. nuitka/build/static_src/HelpersOperationInplaceLshift.c +1594 -0
  513. nuitka/build/static_src/HelpersOperationInplaceMatmult.c +603 -0
  514. nuitka/build/static_src/HelpersOperationInplaceMod.c +4762 -0
  515. nuitka/build/static_src/HelpersOperationInplaceMult.c +4689 -0
  516. nuitka/build/static_src/HelpersOperationInplaceOlddiv.c +2553 -0
  517. nuitka/build/static_src/HelpersOperationInplacePow.c +2807 -0
  518. nuitka/build/static_src/HelpersOperationInplaceRshift.c +1534 -0
  519. nuitka/build/static_src/HelpersOperationInplaceSub.c +2894 -0
  520. nuitka/build/static_src/HelpersOperationInplaceTruediv.c +2612 -0
  521. nuitka/build/static_src/HelpersProfiling.c +104 -0
  522. nuitka/build/static_src/HelpersPythonPgo.c +113 -0
  523. nuitka/build/static_src/HelpersRaising.c +447 -0
  524. nuitka/build/static_src/HelpersSafeStrings.c +185 -0
  525. nuitka/build/static_src/HelpersSequences.c +134 -0
  526. nuitka/build/static_src/HelpersSlices.c +73 -0
  527. nuitka/build/static_src/HelpersStrings.c +998 -0
  528. nuitka/build/static_src/HelpersTuples.c +148 -0
  529. nuitka/build/static_src/HelpersTypes.c +329 -0
  530. nuitka/build/static_src/InspectPatcher.c +439 -0
  531. nuitka/build/static_src/MainProgram.c +2060 -0
  532. nuitka/build/static_src/MetaPathBasedLoader.c +2290 -0
  533. nuitka/build/static_src/MetaPathBasedLoaderImportlibMetadataDistribution.c +125 -0
  534. nuitka/build/static_src/MetaPathBasedLoaderResourceReader.c +158 -0
  535. nuitka/build/static_src/MetaPathBasedLoaderResourceReaderFiles.c +785 -0
  536. nuitka/build/static_src/OnefileBootstrap.c +1580 -0
  537. nuitka/build/static_src/OnefileSplashScreen.cpp +275 -0
  538. nuitka/code_generation/AsyncgenCodes.py +186 -0
  539. nuitka/code_generation/AttributeCodes.py +357 -0
  540. nuitka/code_generation/BinaryOperationHelperDefinitions.py +720 -0
  541. nuitka/code_generation/BranchCodes.py +67 -0
  542. nuitka/code_generation/BuiltinCodes.py +529 -0
  543. nuitka/code_generation/CallCodes.py +1186 -0
  544. nuitka/code_generation/ClassCodes.py +156 -0
  545. nuitka/code_generation/CodeGeneration.py +1078 -0
  546. nuitka/code_generation/CodeHelperSelection.py +81 -0
  547. nuitka/code_generation/CodeHelpers.py +455 -0
  548. nuitka/code_generation/CodeObjectCodes.py +165 -0
  549. nuitka/code_generation/ComparisonCodes.py +569 -0
  550. nuitka/code_generation/ComparisonHelperDefinitions.py +146 -0
  551. nuitka/code_generation/ConditionalCodes.py +236 -0
  552. nuitka/code_generation/ConstantCodes.py +243 -0
  553. nuitka/code_generation/Contexts.py +1248 -0
  554. nuitka/code_generation/CoroutineCodes.py +253 -0
  555. nuitka/code_generation/CtypesCodes.py +46 -0
  556. nuitka/code_generation/DictCodes.py +918 -0
  557. nuitka/code_generation/Emission.py +75 -0
  558. nuitka/code_generation/ErrorCodes.py +281 -0
  559. nuitka/code_generation/EvalCodes.py +444 -0
  560. nuitka/code_generation/ExceptionCodes.py +337 -0
  561. nuitka/code_generation/ExpressionCTypeSelectionHelpers.py +227 -0
  562. nuitka/code_generation/ExpressionCodes.py +61 -0
  563. nuitka/code_generation/FrameCodes.py +518 -0
  564. nuitka/code_generation/FunctionCodes.py +858 -0
  565. nuitka/code_generation/GeneratorCodes.py +218 -0
  566. nuitka/code_generation/GlobalConstants.py +249 -0
  567. nuitka/code_generation/GlobalsLocalsCodes.py +211 -0
  568. nuitka/code_generation/IdCodes.py +53 -0
  569. nuitka/code_generation/ImportCodes.py +468 -0
  570. nuitka/code_generation/Indentation.py +45 -0
  571. nuitka/code_generation/IndexCodes.py +50 -0
  572. nuitka/code_generation/InjectCCodes.py +28 -0
  573. nuitka/code_generation/IntegerCodes.py +110 -0
  574. nuitka/code_generation/IteratorCodes.py +378 -0
  575. nuitka/code_generation/JitCodes.py +44 -0
  576. nuitka/code_generation/LabelCodes.py +68 -0
  577. nuitka/code_generation/LineNumberCodes.py +91 -0
  578. nuitka/code_generation/ListCodes.py +502 -0
  579. nuitka/code_generation/LoaderCodes.py +193 -0
  580. nuitka/code_generation/LocalsDictCodes.py +359 -0
  581. nuitka/code_generation/LoopCodes.py +88 -0
  582. nuitka/code_generation/MatchCodes.py +67 -0
  583. nuitka/code_generation/ModuleCodes.py +247 -0
  584. nuitka/code_generation/Namify.py +260 -0
  585. nuitka/code_generation/NetworkxCodes.py +51 -0
  586. nuitka/code_generation/OperationCodes.py +398 -0
  587. nuitka/code_generation/PackageResourceCodes.py +986 -0
  588. nuitka/code_generation/PrintCodes.py +93 -0
  589. nuitka/code_generation/PythonAPICodes.py +215 -0
  590. nuitka/code_generation/RaisingCodes.py +481 -0
  591. nuitka/code_generation/Reports.py +115 -0
  592. nuitka/code_generation/ReturnCodes.py +143 -0
  593. nuitka/code_generation/SetCodes.py +196 -0
  594. nuitka/code_generation/SliceCodes.py +465 -0
  595. nuitka/code_generation/StringCodes.py +303 -0
  596. nuitka/code_generation/SubscriptCodes.py +263 -0
  597. nuitka/code_generation/TensorflowCodes.py +54 -0
  598. nuitka/code_generation/TryCodes.py +326 -0
  599. nuitka/code_generation/TupleCodes.py +115 -0
  600. nuitka/code_generation/TypeAliasCodes.py +120 -0
  601. nuitka/code_generation/VariableCodes.py +519 -0
  602. nuitka/code_generation/VariableDeclarations.py +279 -0
  603. nuitka/code_generation/YieldCodes.py +253 -0
  604. nuitka/code_generation/__init__.py +19 -0
  605. nuitka/code_generation/c_types/CTypeBases.py +177 -0
  606. nuitka/code_generation/c_types/CTypeBooleans.py +104 -0
  607. nuitka/code_generation/c_types/CTypeCFloats.py +57 -0
  608. nuitka/code_generation/c_types/CTypeCLongs.py +45 -0
  609. nuitka/code_generation/c_types/CTypeModuleDictVariables.py +109 -0
  610. nuitka/code_generation/c_types/CTypeNuitkaBooleans.py +150 -0
  611. nuitka/code_generation/c_types/CTypeNuitkaInts.py +200 -0
  612. nuitka/code_generation/c_types/CTypeNuitkaVoids.py +107 -0
  613. nuitka/code_generation/c_types/CTypePyObjectPointers.py +572 -0
  614. nuitka/code_generation/c_types/CTypeVoids.py +92 -0
  615. nuitka/code_generation/c_types/__init__.py +19 -0
  616. nuitka/code_generation/templates/CodeTemplatesAsyncgens.py +106 -0
  617. nuitka/code_generation/templates/CodeTemplatesConstants.py +296 -0
  618. nuitka/code_generation/templates/CodeTemplatesCoroutines.py +109 -0
  619. nuitka/code_generation/templates/CodeTemplatesExceptions.py +84 -0
  620. nuitka/code_generation/templates/CodeTemplatesFrames.py +235 -0
  621. nuitka/code_generation/templates/CodeTemplatesFunction.py +117 -0
  622. nuitka/code_generation/templates/CodeTemplatesGeneratorFunction.py +130 -0
  623. nuitka/code_generation/templates/CodeTemplatesIterators.py +40 -0
  624. nuitka/code_generation/templates/CodeTemplatesLoader.py +180 -0
  625. nuitka/code_generation/templates/CodeTemplatesModules.py +710 -0
  626. nuitka/code_generation/templates/CodeTemplatesVariables.py +388 -0
  627. nuitka/code_generation/templates/TemplateDebugWrapper.py +80 -0
  628. nuitka/code_generation/templates/__init__.py +19 -0
  629. nuitka/code_generation/templates_c/CodeTemplateCallsMethodPositional.c.j2 +321 -0
  630. nuitka/code_generation/templates_c/CodeTemplateCallsMixed.c.j2 +143 -0
  631. nuitka/code_generation/templates_c/CodeTemplateCallsPositional.c.j2 +677 -0
  632. nuitka/code_generation/templates_c/CodeTemplateCallsPositionalMethodDescr.c.j2 +165 -0
  633. nuitka/code_generation/templates_c/CodeTemplateMakeListHinted.c.j2 +38 -0
  634. nuitka/code_generation/templates_c/CodeTemplateMakeListSmall.c.j2 +41 -0
  635. nuitka/code_generation/templates_c/HelperBuiltinMethodOperation.c.j2 +53 -0
  636. nuitka/code_generation/templates_c/HelperDictionaryCopy.c.j2 +364 -0
  637. nuitka/code_generation/templates_c/HelperImportHard.c.j2 +37 -0
  638. nuitka/code_generation/templates_c/HelperLongTools.c.j2 +53 -0
  639. nuitka/code_generation/templates_c/HelperObjectTools.c.j2 +20 -0
  640. nuitka/code_generation/templates_c/HelperOperationBinary.c.j2 +148 -0
  641. nuitka/code_generation/templates_c/HelperOperationBinaryDual.c.j2 +115 -0
  642. nuitka/code_generation/templates_c/HelperOperationComparison.c.j2 +352 -0
  643. nuitka/code_generation/templates_c/HelperOperationComparisonBytes.c.j2 +115 -0
  644. nuitka/code_generation/templates_c/HelperOperationComparisonDual.c.j2 +86 -0
  645. nuitka/code_generation/templates_c/HelperOperationComparisonFloat.c.j2 +31 -0
  646. nuitka/code_generation/templates_c/HelperOperationComparisonInt.c.j2 +32 -0
  647. nuitka/code_generation/templates_c/HelperOperationComparisonList.c.j2 +112 -0
  648. nuitka/code_generation/templates_c/HelperOperationComparisonLong.c.j2 +157 -0
  649. nuitka/code_generation/templates_c/HelperOperationComparisonStr.c.j2 +115 -0
  650. nuitka/code_generation/templates_c/HelperOperationComparisonTuple.c.j2 +99 -0
  651. nuitka/code_generation/templates_c/HelperOperationComparisonUnicode.c.j2 +115 -0
  652. nuitka/code_generation/templates_c/HelperOperationInplace.c.j2 +281 -0
  653. nuitka/code_generation/templates_c/HelperSlotsBinary.c.j2 +420 -0
  654. nuitka/code_generation/templates_c/HelperSlotsBytes.c.j2 +51 -0
  655. nuitka/code_generation/templates_c/HelperSlotsCommon.c.j2 +71 -0
  656. nuitka/code_generation/templates_c/HelperSlotsFloat.c.j2 +327 -0
  657. nuitka/code_generation/templates_c/HelperSlotsInt.c.j2 +411 -0
  658. nuitka/code_generation/templates_c/HelperSlotsList.c.j2 +59 -0
  659. nuitka/code_generation/templates_c/HelperSlotsLong.c.j2 +229 -0
  660. nuitka/code_generation/templates_c/HelperSlotsSet.c.j2 +47 -0
  661. nuitka/code_generation/templates_c/HelperSlotsStr.c.j2 +55 -0
  662. nuitka/code_generation/templates_c/HelperSlotsTuple.c.j2 +58 -0
  663. nuitka/code_generation/templates_c/HelperSlotsUnicode.c.j2 +62 -0
  664. nuitka/containers/Namedtuples.py +51 -0
  665. nuitka/containers/OrderedDicts.py +191 -0
  666. nuitka/containers/OrderedSets.py +123 -0
  667. nuitka/containers/OrderedSetsFallback.py +139 -0
  668. nuitka/containers/__init__.py +19 -0
  669. nuitka/distutils/Build.py +76 -0
  670. nuitka/distutils/DistutilCommands.py +438 -0
  671. nuitka/distutils/__init__.py +19 -0
  672. nuitka/finalizations/Finalization.py +35 -0
  673. nuitka/finalizations/FinalizeMarkups.py +136 -0
  674. nuitka/finalizations/__init__.py +19 -0
  675. nuitka/freezer/DependsExe.py +257 -0
  676. nuitka/freezer/DllDependenciesCommon.py +97 -0
  677. nuitka/freezer/DllDependenciesMacOS.py +444 -0
  678. nuitka/freezer/DllDependenciesPosix.py +242 -0
  679. nuitka/freezer/DllDependenciesWin32.py +315 -0
  680. nuitka/freezer/ImportDetection.py +359 -0
  681. nuitka/freezer/IncludedDataFiles.py +689 -0
  682. nuitka/freezer/IncludedEntryPoints.py +376 -0
  683. nuitka/freezer/Onefile.py +296 -0
  684. nuitka/freezer/Standalone.py +520 -0
  685. nuitka/freezer/__init__.py +19 -0
  686. nuitka/importing/IgnoreListing.py +449 -0
  687. nuitka/importing/ImportCache.py +95 -0
  688. nuitka/importing/ImportResolving.py +186 -0
  689. nuitka/importing/Importing.py +1200 -0
  690. nuitka/importing/PreloadedPackages.py +164 -0
  691. nuitka/importing/Recursion.py +611 -0
  692. nuitka/importing/StandardLibrary.py +429 -0
  693. nuitka/importing/__init__.py +19 -0
  694. nuitka/nodes/AsyncgenNodes.py +107 -0
  695. nuitka/nodes/AttributeLookupNodes.py +124 -0
  696. nuitka/nodes/AttributeNodes.py +386 -0
  697. nuitka/nodes/AttributeNodesGenerated.py +10734 -0
  698. nuitka/nodes/BuiltinAllNodes.py +115 -0
  699. nuitka/nodes/BuiltinAnyNodes.py +124 -0
  700. nuitka/nodes/BuiltinComplexNodes.py +83 -0
  701. nuitka/nodes/BuiltinDecodingNodes.py +52 -0
  702. nuitka/nodes/BuiltinDecoratorNodes.py +85 -0
  703. nuitka/nodes/BuiltinDictNodes.py +140 -0
  704. nuitka/nodes/BuiltinFormatNodes.py +159 -0
  705. nuitka/nodes/BuiltinHashNodes.py +63 -0
  706. nuitka/nodes/BuiltinInputNodes.py +39 -0
  707. nuitka/nodes/BuiltinIntegerNodes.py +170 -0
  708. nuitka/nodes/BuiltinIteratorNodes.py +391 -0
  709. nuitka/nodes/BuiltinLenNodes.py +61 -0
  710. nuitka/nodes/BuiltinNextNodes.py +111 -0
  711. nuitka/nodes/BuiltinOpenNodes.py +148 -0
  712. nuitka/nodes/BuiltinOperationNodeBasesGenerated.py +7367 -0
  713. nuitka/nodes/BuiltinRangeNodes.py +690 -0
  714. nuitka/nodes/BuiltinRefNodes.py +314 -0
  715. nuitka/nodes/BuiltinSumNodes.py +104 -0
  716. nuitka/nodes/BuiltinTypeNodes.py +454 -0
  717. nuitka/nodes/BuiltinVarsNodes.py +44 -0
  718. nuitka/nodes/BytesNodes.py +829 -0
  719. nuitka/nodes/CallNodes.py +217 -0
  720. nuitka/nodes/Checkers.py +55 -0
  721. nuitka/nodes/ChildrenHavingMixins.py +21576 -0
  722. nuitka/nodes/ClassNodes.py +286 -0
  723. nuitka/nodes/CodeObjectSpecs.py +230 -0
  724. nuitka/nodes/ComparisonNodes.py +687 -0
  725. nuitka/nodes/ConditionalNodes.py +884 -0
  726. nuitka/nodes/ConstantRefNodes.py +1717 -0
  727. nuitka/nodes/ContainerMakingNodes.py +408 -0
  728. nuitka/nodes/ContainerOperationNodes.py +87 -0
  729. nuitka/nodes/CoroutineNodes.py +144 -0
  730. nuitka/nodes/CtypesNodes.py +51 -0
  731. nuitka/nodes/DictionaryNodes.py +1513 -0
  732. nuitka/nodes/ExceptionNodes.py +393 -0
  733. nuitka/nodes/ExecEvalNodes.py +229 -0
  734. nuitka/nodes/ExpressionBases.py +1301 -0
  735. nuitka/nodes/ExpressionBasesGenerated.py +2103 -0
  736. nuitka/nodes/ExpressionShapeMixins.py +886 -0
  737. nuitka/nodes/FrameNodes.py +413 -0
  738. nuitka/nodes/FunctionAttributeNodes.py +102 -0
  739. nuitka/nodes/FunctionNodes.py +1303 -0
  740. nuitka/nodes/FutureSpecs.py +224 -0
  741. nuitka/nodes/GeneratorNodes.py +201 -0
  742. nuitka/nodes/GlobalsLocalsNodes.py +209 -0
  743. nuitka/nodes/HardImportNodesGenerated.py +3599 -0
  744. nuitka/nodes/ImportHardNodes.py +185 -0
  745. nuitka/nodes/ImportNodes.py +1366 -0
  746. nuitka/nodes/IndicatorMixins.py +79 -0
  747. nuitka/nodes/InjectCNodes.py +51 -0
  748. nuitka/nodes/IterationHandles.py +407 -0
  749. nuitka/nodes/KeyValuePairNodes.py +378 -0
  750. nuitka/nodes/ListOperationNodes.py +525 -0
  751. nuitka/nodes/LocalsDictNodes.py +717 -0
  752. nuitka/nodes/LocalsScopes.py +505 -0
  753. nuitka/nodes/LoopNodes.py +445 -0
  754. nuitka/nodes/MatchNodes.py +60 -0
  755. nuitka/nodes/ModuleAttributeNodes.py +180 -0
  756. nuitka/nodes/ModuleNodes.py +1137 -0
  757. nuitka/nodes/NetworkxNodes.py +45 -0
  758. nuitka/nodes/NodeBases.py +890 -0
  759. nuitka/nodes/NodeMakingHelpers.py +481 -0
  760. nuitka/nodes/NodeMetaClasses.py +172 -0
  761. nuitka/nodes/OperatorNodes.py +944 -0
  762. nuitka/nodes/OperatorNodesUnary.py +403 -0
  763. nuitka/nodes/OsSysNodes.py +215 -0
  764. nuitka/nodes/OutlineNodes.py +372 -0
  765. nuitka/nodes/PackageMetadataNodes.py +982 -0
  766. nuitka/nodes/PackageResourceNodes.py +424 -0
  767. nuitka/nodes/PrintNodes.py +105 -0
  768. nuitka/nodes/ReturnNodes.py +255 -0
  769. nuitka/nodes/SideEffectNodes.py +139 -0
  770. nuitka/nodes/SliceNodes.py +386 -0
  771. nuitka/nodes/StatementBasesGenerated.py +3419 -0
  772. nuitka/nodes/StatementNodes.py +316 -0
  773. nuitka/nodes/StrNodes.py +919 -0
  774. nuitka/nodes/StringConcatenationNodes.py +103 -0
  775. nuitka/nodes/SubscriptNodes.py +245 -0
  776. nuitka/nodes/TensorflowNodes.py +38 -0
  777. nuitka/nodes/TryNodes.py +519 -0
  778. nuitka/nodes/TypeMatchNodes.py +65 -0
  779. nuitka/nodes/TypeNodes.py +390 -0
  780. nuitka/nodes/VariableAssignNodes.py +1177 -0
  781. nuitka/nodes/VariableDelNodes.py +320 -0
  782. nuitka/nodes/VariableNameNodes.py +153 -0
  783. nuitka/nodes/VariableRefNodes.py +895 -0
  784. nuitka/nodes/VariableReleaseNodes.py +153 -0
  785. nuitka/nodes/YieldNodes.py +121 -0
  786. nuitka/nodes/__init__.py +19 -0
  787. nuitka/nodes/shapes/BuiltinTypeShapes.py +4290 -0
  788. nuitka/nodes/shapes/ControlFlowDescriptions.py +199 -0
  789. nuitka/nodes/shapes/IteratorShapes.py +71 -0
  790. nuitka/nodes/shapes/ShapeMixins.py +255 -0
  791. nuitka/nodes/shapes/StandardShapes.py +1384 -0
  792. nuitka/nodes/shapes/__init__.py +19 -0
  793. nuitka/optimizations/BytecodeDemotion.py +105 -0
  794. nuitka/optimizations/FunctionInlining.py +110 -0
  795. nuitka/optimizations/Graphs.py +70 -0
  796. nuitka/optimizations/Optimization.py +363 -0
  797. nuitka/optimizations/OptimizeBuiltinCalls.py +1582 -0
  798. nuitka/optimizations/Tags.py +76 -0
  799. nuitka/optimizations/TraceCollections.py +1257 -0
  800. nuitka/optimizations/ValueTraces.py +980 -0
  801. nuitka/optimizations/__init__.py +19 -0
  802. nuitka/pgo/PGO.py +160 -0
  803. nuitka/pgo/__init__.py +19 -0
  804. nuitka/plugins/PluginBase.py +1924 -0
  805. nuitka/plugins/Plugins.py +2007 -0
  806. nuitka/plugins/YamlPluginBase.py +121 -0
  807. nuitka/plugins/__init__.py +19 -0
  808. nuitka/plugins/standard/AntiBloatPlugin.py +1024 -0
  809. nuitka/plugins/standard/ConsiderPyLintAnnotationsPlugin.py +95 -0
  810. nuitka/plugins/standard/DataFilesPlugin.py +311 -0
  811. nuitka/plugins/standard/DelvewheelPlugin.py +150 -0
  812. nuitka/plugins/standard/DillPlugin/DillPlugin.c +37 -0
  813. nuitka/plugins/standard/DillPlugin/cloudpickle-postLoad.py +67 -0
  814. nuitka/plugins/standard/DillPlugin/dill-postLoad.py +223 -0
  815. nuitka/plugins/standard/DillPlugin.py +137 -0
  816. nuitka/plugins/standard/DllFilesPlugin.py +527 -0
  817. nuitka/plugins/standard/EnumPlugin.py +64 -0
  818. nuitka/plugins/standard/EventletPlugin.py +57 -0
  819. nuitka/plugins/standard/GeventPlugin.py +64 -0
  820. nuitka/plugins/standard/GiPlugin.py +118 -0
  821. nuitka/plugins/standard/GlfwPlugin.py +138 -0
  822. nuitka/plugins/standard/ImplicitImports.py +845 -0
  823. nuitka/plugins/standard/KivyPlugin.py +141 -0
  824. nuitka/plugins/standard/MatplotlibPlugin.py +256 -0
  825. nuitka/plugins/standard/MultiprocessingPlugin.py +199 -0
  826. nuitka/plugins/standard/NumpyPlugin.py +35 -0
  827. nuitka/plugins/standard/OptionsNannyPlugin.py +158 -0
  828. nuitka/plugins/standard/PbrPlugin.py +62 -0
  829. nuitka/plugins/standard/PkgResourcesPlugin.py +162 -0
  830. nuitka/plugins/standard/PlaywrightPlugin.py +179 -0
  831. nuitka/plugins/standard/PmwPlugin.py +248 -0
  832. nuitka/plugins/standard/PySidePyQtPlugin.py +1666 -0
  833. nuitka/plugins/standard/PywebViewPlugin.py +81 -0
  834. nuitka/plugins/standard/SpacyPlugin.py +137 -0
  835. nuitka/plugins/standard/TensorflowPlugin.py +35 -0
  836. nuitka/plugins/standard/TkinterPlugin.py +416 -0
  837. nuitka/plugins/standard/TorchPlugin.py +35 -0
  838. nuitka/plugins/standard/TransformersPlugin.py +121 -0
  839. nuitka/plugins/standard/TrioPlugin.py +33 -0
  840. nuitka/plugins/standard/UpxPlugin.py +174 -0
  841. nuitka/plugins/standard/__init__.py +19 -0
  842. nuitka/plugins/standard/standard.nuitka-package.config.yml +9313 -0
  843. nuitka/plugins/standard/stdlib2.nuitka-package.config.yml +78 -0
  844. nuitka/plugins/standard/stdlib3.nuitka-package.config.yml +468 -0
  845. nuitka/reports/CompilationReportReader.py +83 -0
  846. nuitka/reports/LicenseReport.rst.j2 +41 -0
  847. nuitka/reports/Reports.py +961 -0
  848. nuitka/reports/__init__.py +19 -0
  849. nuitka/specs/BuiltinBytesOperationSpecs.py +180 -0
  850. nuitka/specs/BuiltinDictOperationSpecs.py +82 -0
  851. nuitka/specs/BuiltinListOperationSpecs.py +80 -0
  852. nuitka/specs/BuiltinParameterSpecs.py +831 -0
  853. nuitka/specs/BuiltinStrOperationSpecs.py +181 -0
  854. nuitka/specs/BuiltinTypeOperationSpecs.py +34 -0
  855. nuitka/specs/BuiltinUnicodeOperationSpecs.py +123 -0
  856. nuitka/specs/HardImportSpecs.py +236 -0
  857. nuitka/specs/ParameterSpecs.py +630 -0
  858. nuitka/specs/__init__.py +19 -0
  859. nuitka/tools/Basics.py +55 -0
  860. nuitka/tools/__init__.py +19 -0
  861. nuitka/tools/commercial/__init__.py +21 -0
  862. nuitka/tools/data_composer/DataComposer.py +593 -0
  863. nuitka/tools/data_composer/__init__.py +19 -0
  864. nuitka/tools/data_composer/__main__.py +41 -0
  865. nuitka/tools/environments/CreateEnvironment.py +69 -0
  866. nuitka/tools/environments/Virtualenv.py +158 -0
  867. nuitka/tools/environments/__init__.py +19 -0
  868. nuitka/tools/general/__init__.py +19 -0
  869. nuitka/tools/general/dll_report/__init__.py +19 -0
  870. nuitka/tools/general/dll_report/__main__.py +83 -0
  871. nuitka/tools/general/find_module/FindModuleCode.py +127 -0
  872. nuitka/tools/general/find_module/__init__.py +19 -0
  873. nuitka/tools/general/generate_header/GenerateHeader.py +73 -0
  874. nuitka/tools/general/generate_header/__init__.py +19 -0
  875. nuitka/tools/onefile_compressor/OnefileCompressor.py +390 -0
  876. nuitka/tools/onefile_compressor/__init__.py +19 -0
  877. nuitka/tools/onefile_compressor/__main__.py +41 -0
  878. nuitka/tools/podman/Podman.py +55 -0
  879. nuitka/tools/podman/__init__.py +19 -0
  880. nuitka/tools/podman/__main__.py +425 -0
  881. nuitka/tools/profiler/__init__.py +19 -0
  882. nuitka/tools/profiler/__main__.py +93 -0
  883. nuitka/tools/scanning/DisplayDistributions.py +39 -0
  884. nuitka/tools/scanning/DisplayPackageDLLs.py +151 -0
  885. nuitka/tools/scanning/DisplayPackageData.py +73 -0
  886. nuitka/tools/scanning/__init__.py +19 -0
  887. nuitka/tools/specialize/CTypeDescriptions.py +1928 -0
  888. nuitka/tools/specialize/Common.py +380 -0
  889. nuitka/tools/specialize/SpecializeC.py +1483 -0
  890. nuitka/tools/specialize/SpecializePython.py +1151 -0
  891. nuitka/tools/specialize/__init__.py +19 -0
  892. nuitka/tools/testing/Common.py +2007 -0
  893. nuitka/tools/testing/Constructs.py +53 -0
  894. nuitka/tools/testing/DocTests.py +156 -0
  895. nuitka/tools/testing/OutputComparison.py +313 -0
  896. nuitka/tools/testing/Pythons.py +34 -0
  897. nuitka/tools/testing/RuntimeTracing.py +260 -0
  898. nuitka/tools/testing/SearchModes.py +208 -0
  899. nuitka/tools/testing/Valgrind.py +103 -0
  900. nuitka/tools/testing/__init__.py +19 -0
  901. nuitka/tools/testing/check_reference_counts/__init__.py +19 -0
  902. nuitka/tools/testing/check_reference_counts/__main__.py +107 -0
  903. nuitka/tools/testing/compare_with_cpython/__init__.py +19 -0
  904. nuitka/tools/testing/compare_with_cpython/__main__.py +942 -0
  905. nuitka/tools/testing/find_sxs_modules/__init__.py +19 -0
  906. nuitka/tools/testing/find_sxs_modules/__main__.py +73 -0
  907. nuitka/tools/testing/measure_construct_performance/__init__.py +19 -0
  908. nuitka/tools/testing/measure_construct_performance/__main__.py +288 -0
  909. nuitka/tools/testing/run_nuitka_tests/__init__.py +19 -0
  910. nuitka/tools/testing/run_nuitka_tests/__main__.py +1091 -0
  911. nuitka/tools/watch/AutoStage.py +145 -0
  912. nuitka/tools/watch/Common.py +55 -0
  913. nuitka/tools/watch/Conda.py +125 -0
  914. nuitka/tools/watch/GitHub.py +113 -0
  915. nuitka/tools/watch/Pacman.py +73 -0
  916. nuitka/tools/watch/Pipenv.py +145 -0
  917. nuitka/tools/watch/__init__.py +19 -0
  918. nuitka/tools/watch/__main__.py +615 -0
  919. nuitka/tree/Building.py +1459 -0
  920. nuitka/tree/ComplexCallHelperFunctions.py +2150 -0
  921. nuitka/tree/Extractions.py +48 -0
  922. nuitka/tree/FutureSpecState.py +71 -0
  923. nuitka/tree/InternalModule.py +96 -0
  924. nuitka/tree/Operations.py +45 -0
  925. nuitka/tree/ReformulationAssertStatements.py +97 -0
  926. nuitka/tree/ReformulationAssignmentStatements.py +1260 -0
  927. nuitka/tree/ReformulationBooleanExpressions.py +97 -0
  928. nuitka/tree/ReformulationCallExpressions.py +314 -0
  929. nuitka/tree/ReformulationClasses.py +407 -0
  930. nuitka/tree/ReformulationClasses3.py +1149 -0
  931. nuitka/tree/ReformulationComparisonExpressions.py +174 -0
  932. nuitka/tree/ReformulationContractionExpressions.py +676 -0
  933. nuitka/tree/ReformulationDictionaryCreation.py +304 -0
  934. nuitka/tree/ReformulationExecStatements.py +386 -0
  935. nuitka/tree/ReformulationForLoopStatements.py +215 -0
  936. nuitka/tree/ReformulationFunctionStatements.py +931 -0
  937. nuitka/tree/ReformulationImportStatements.py +333 -0
  938. nuitka/tree/ReformulationLambdaExpressions.py +185 -0
  939. nuitka/tree/ReformulationMatchStatements.py +797 -0
  940. nuitka/tree/ReformulationMultidist.py +80 -0
  941. nuitka/tree/ReformulationNamespacePackages.py +239 -0
  942. nuitka/tree/ReformulationPrintStatements.py +127 -0
  943. nuitka/tree/ReformulationSequenceCreation.py +438 -0
  944. nuitka/tree/ReformulationSubscriptExpressions.py +123 -0
  945. nuitka/tree/ReformulationTryExceptStatements.py +418 -0
  946. nuitka/tree/ReformulationTryFinallyStatements.py +239 -0
  947. nuitka/tree/ReformulationWhileLoopStatements.py +160 -0
  948. nuitka/tree/ReformulationWithStatements.py +382 -0
  949. nuitka/tree/ReformulationYieldExpressions.py +133 -0
  950. nuitka/tree/SourceHandling.py +476 -0
  951. nuitka/tree/SyntaxErrors.py +143 -0
  952. nuitka/tree/TreeHelpers.py +720 -0
  953. nuitka/tree/VariableClosure.py +483 -0
  954. nuitka/tree/__init__.py +19 -0
  955. nuitka/utils/AppDirs.py +104 -0
  956. nuitka/utils/CStrings.py +208 -0
  957. nuitka/utils/CommandLineOptions.py +207 -0
  958. nuitka/utils/Distributions.py +728 -0
  959. nuitka/utils/Download.py +217 -0
  960. nuitka/utils/Execution.py +517 -0
  961. nuitka/utils/FileOperations.py +1587 -0
  962. nuitka/utils/Hashing.py +137 -0
  963. nuitka/utils/Images.py +79 -0
  964. nuitka/utils/Importing.py +335 -0
  965. nuitka/utils/InlineCopies.py +52 -0
  966. nuitka/utils/InstalledPythons.py +254 -0
  967. nuitka/utils/InstanceCounters.py +86 -0
  968. nuitka/utils/Jinja2.py +158 -0
  969. nuitka/utils/Json.py +40 -0
  970. nuitka/utils/MacOSApp.py +134 -0
  971. nuitka/utils/MemoryUsage.py +165 -0
  972. nuitka/utils/ModuleNames.py +317 -0
  973. nuitka/utils/PackageResources.py +44 -0
  974. nuitka/utils/ReExecute.py +152 -0
  975. nuitka/utils/Rest.py +60 -0
  976. nuitka/utils/SharedLibraries.py +1014 -0
  977. nuitka/utils/Shebang.py +113 -0
  978. nuitka/utils/Signing.py +144 -0
  979. nuitka/utils/SlotMetaClasses.py +57 -0
  980. nuitka/utils/StaticLibraries.py +260 -0
  981. nuitka/utils/ThreadedExecutor.py +87 -0
  982. nuitka/utils/Timing.py +102 -0
  983. nuitka/utils/Utils.py +483 -0
  984. nuitka/utils/WindowsFileUsage.py +337 -0
  985. nuitka/utils/WindowsResources.py +652 -0
  986. nuitka/utils/Yaml.py +247 -0
  987. nuitka/utils/__init__.py +19 -0
  988. nuitka_winsvc-2.7.7.data/scripts/nuitka-run.cmd +24 -0
  989. nuitka_winsvc-2.7.7.data/scripts/nuitka.cmd +30 -0
  990. nuitka_winsvc-2.7.7.dist-info/METADATA +115 -0
  991. nuitka_winsvc-2.7.7.dist-info/RECORD +995 -0
  992. nuitka_winsvc-2.7.7.dist-info/WHEEL +5 -0
  993. nuitka_winsvc-2.7.7.dist-info/entry_points.txt +7 -0
  994. nuitka_winsvc-2.7.7.dist-info/licenses/LICENSE.txt +202 -0
  995. nuitka_winsvc-2.7.7.dist-info/top_level.txt +1 -0
@@ -0,0 +1,994 @@
1
+ #
2
+ # MIT License
3
+ #
4
+ # Copyright The SCons Foundation
5
+ #
6
+ # Permission is hereby granted, free of charge, to any person obtaining
7
+ # a copy of this software and associated documentation files (the
8
+ # "Software"), to deal in the Software without restriction, including
9
+ # without limitation the rights to use, copy, modify, merge, publish,
10
+ # distribute, sublicense, and/or sell copies of the Software, and to
11
+ # permit persons to whom the Software is furnished to do so, subject to
12
+ # the following conditions:
13
+ #
14
+ # The above copyright notice and this permission notice shall be included
15
+ # in all copies or substantial portions of the Software.
16
+ #
17
+ # THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY
18
+ # KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE
19
+ # WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
20
+ # NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
21
+ # LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
22
+ # OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
23
+ # WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
24
+ #
25
+ """Module for Visual C/C++ detection and configuration.
26
+
27
+ # TODO:
28
+ # * gather all the information from a single vswhere call instead
29
+ # of calling repeatedly (use json format?)
30
+ # * support passing/setting location for vswhere in env.
31
+ # * supported arch for versions: for old versions of batch file without
32
+ # argument, giving bogus argument cannot be detected, so we have to hardcode
33
+ # this here
34
+ # * print warning when msvc version specified but not found
35
+ # * find out why warning do not print
36
+ # * test on 64 bits XP + VS 2005 (and VS 6 if possible)
37
+ # * SDK
38
+ # * Assembly
39
+ """
40
+
41
+ import SCons.compat
42
+ import SCons.Util
43
+
44
+ import subprocess
45
+ import os
46
+ import platform
47
+ from string import digits as string_digits
48
+ from subprocess import PIPE
49
+
50
+ import SCons.Warnings
51
+ from SCons.Tool import find_program_path
52
+
53
+ from . import common
54
+ from .common import CONFIG_CACHE, debug
55
+ from .sdk import get_installed_sdks
56
+
57
+
58
+ class VisualCException(Exception):
59
+ pass
60
+
61
+ class UnsupportedVersion(VisualCException):
62
+ pass
63
+
64
+ class MSVCUnsupportedHostArch(VisualCException):
65
+ pass
66
+
67
+ class MSVCUnsupportedTargetArch(VisualCException):
68
+ pass
69
+
70
+ class MissingConfiguration(VisualCException):
71
+ pass
72
+
73
+ class NoVersionFound(VisualCException):
74
+ pass
75
+
76
+ class BatchFileExecutionError(VisualCException):
77
+ pass
78
+
79
+ # Dict to 'canonalize' the arch
80
+ _ARCH_TO_CANONICAL = {
81
+ "amd64" : "amd64",
82
+ "emt64" : "amd64",
83
+ "i386" : "x86",
84
+ "i486" : "x86",
85
+ "i586" : "x86",
86
+ "i686" : "x86",
87
+ "ia64" : "ia64", # deprecated
88
+ "itanium" : "ia64", # deprecated
89
+ "x86" : "x86",
90
+ "x86_64" : "amd64",
91
+ "arm" : "arm",
92
+ "arm64" : "arm64",
93
+ "aarch64" : "arm64",
94
+ }
95
+
96
+ # Starting with 14.1 (aka VS2017), the tools are organized by host directory.
97
+ # subdirs for each target. They are now in .../VC/Auxuiliary/Build.
98
+ # Note 2017 Express uses Hostx86 even if it's on 64-bit Windows,
99
+ # not reflected in this table.
100
+ _HOST_TARGET_TO_CL_DIR_GREATER_THAN_14 = {
101
+ ("arm64","arm64") : ("Hostarm64","arm64"),
102
+ ("amd64","amd64") : ("Hostx64","x64"),
103
+ ("amd64","x86") : ("Hostx64","x86"),
104
+ ("amd64","arm") : ("Hostx64","arm"),
105
+ ("amd64","arm64") : ("Hostx64","arm64"),
106
+ ("x86","amd64") : ("Hostx86","x64"),
107
+ ("x86","x86") : ("Hostx86","x86"),
108
+ ("x86","arm") : ("Hostx86","arm"),
109
+ ("x86","arm64") : ("Hostx86","arm64"),
110
+ }
111
+
112
+ # before 14.1 (VS2017): the original x86 tools are in the tools dir,
113
+ # any others are in a subdir named by the host/target pair,
114
+ # or just a single word if host==target
115
+ _HOST_TARGET_TO_CL_DIR = {
116
+ ("amd64","amd64") : "amd64",
117
+ ("amd64","x86") : "amd64_x86",
118
+ ("amd64","arm") : "amd64_arm",
119
+ ("amd64","arm64") : "amd64_arm64",
120
+ ("x86","amd64") : "x86_amd64",
121
+ ("x86","x86") : "",
122
+ ("x86","arm") : "x86_arm",
123
+ ("x86","arm64") : "x86_arm64",
124
+ ("arm","arm") : "arm",
125
+ }
126
+
127
+ # 14.1 (VS2017) and later:
128
+ # Given a (host, target) tuple, return the batch file to look for.
129
+ # We can't rely on returning an arg to use for vcvarsall.bat,
130
+ # because that script will run even if given a pair that isn't installed.
131
+ # Targets that already look like a pair are pseudo targets that
132
+ # effectively mean to skip whatever the host was specified as.
133
+ _HOST_TARGET_TO_BAT_ARCH_GT14 = {
134
+ ("arm64", "arm64"): "vcvarsarm64.bat",
135
+ ("amd64", "amd64"): "vcvars64.bat",
136
+ ("amd64", "x86"): "vcvarsamd64_x86.bat",
137
+ ("amd64", "x86_amd64"): "vcvarsx86_amd64.bat",
138
+ ("amd64", "x86_x86"): "vcvars32.bat",
139
+ ("amd64", "arm"): "vcvarsamd64_arm.bat",
140
+ ("amd64", "x86_arm"): "vcvarsx86_arm.bat",
141
+ ("amd64", "arm64"): "vcvarsamd64_arm64.bat",
142
+ ("amd64", "x86_arm64"): "vcvarsx86_arm64.bat",
143
+ ("x86", "x86"): "vcvars32.bat",
144
+ ("x86", "amd64"): "vcvarsx86_amd64.bat",
145
+ ("x86", "x86_amd64"): "vcvarsx86_amd64.bat",
146
+ ("x86", "arm"): "vcvarsx86_arm.bat",
147
+ ("x86", "x86_arm"): "vcvarsx86_arm.bat",
148
+ ("x86", "arm64"): "vcvarsx86_arm64.bat",
149
+ ("x86", "x86_arm64"): "vcvarsx86_arm64.bat",
150
+ }
151
+
152
+ # before 14.1 (VS2017):
153
+ # Given a (host, target) tuple, return the argument for the bat file;
154
+ # Both host and target should be canoncalized.
155
+ # If the target already looks like a pair, return it - these are
156
+ # pseudo targets (mainly used by Express versions)
157
+ _HOST_TARGET_ARCH_TO_BAT_ARCH = {
158
+ ("x86", "x86"): "x86",
159
+ ("x86", "amd64"): "x86_amd64",
160
+ ("x86", "x86_amd64"): "x86_amd64",
161
+ ("amd64", "x86_amd64"): "x86_amd64", # This is present in (at least) VS2012 express
162
+ ("amd64", "amd64"): "amd64",
163
+ ("amd64", "x86"): "x86",
164
+ ("amd64", "x86_x86"): "x86",
165
+ ("x86", "ia64"): "x86_ia64", # gone since 14.0
166
+ ("x86", "arm"): "x86_arm", # since 14.0
167
+ ("x86", "arm64"): "x86_arm64", # since 14.1
168
+ ("amd64", "arm"): "amd64_arm", # since 14.0
169
+ ("amd64", "arm64"): "amd64_arm64", # since 14.1
170
+ ("x86", "x86_arm"): "x86_arm", # since 14.0
171
+ ("x86", "x86_arm64"): "x86_arm64", # since 14.1
172
+ ("amd64", "x86_arm"): "x86_arm", # since 14.0
173
+ ("amd64", "x86_arm64"): "x86_arm64", # since 14.1
174
+ ("arm64", "arm64"): "arm64_arm64", # since 14.3
175
+
176
+ }
177
+
178
+ _CL_EXE_NAME = 'cl.exe'
179
+
180
+ def get_msvc_version_numeric(msvc_version):
181
+ """Get the raw version numbers from a MSVC_VERSION string, so it
182
+ could be cast to float or other numeric values. For example, '14.0Exp'
183
+ would get converted to '14.0'.
184
+
185
+ Args:
186
+ msvc_version: str
187
+ string representing the version number, could contain non
188
+ digit characters
189
+
190
+ Returns:
191
+ str: the value converted to a numeric only string
192
+
193
+ """
194
+ return ''.join([x for x in msvc_version if x in string_digits + '.'])
195
+
196
+ def get_host_target(env):
197
+ host_platform = env.get('HOST_ARCH')
198
+ debug("HOST_ARCH:" + str(host_platform))
199
+ if not host_platform:
200
+ host_platform = platform.machine()
201
+
202
+ # Solaris returns i86pc for both 32 and 64 bit architectures
203
+ if host_platform == "i86pc":
204
+ if platform.architecture()[0] == "64bit":
205
+ host_platform = "amd64"
206
+ else:
207
+ host_platform = "x86"
208
+
209
+ # Retain user requested TARGET_ARCH
210
+ req_target_platform = env.get('TARGET_ARCH')
211
+ debug("TARGET_ARCH:" + str(req_target_platform))
212
+ if req_target_platform:
213
+ # If user requested a specific platform then only try that one.
214
+ target_platform = req_target_platform
215
+ else:
216
+ target_platform = host_platform
217
+
218
+ try:
219
+ host = _ARCH_TO_CANONICAL[host_platform.lower()]
220
+ except KeyError:
221
+ msg = "Unrecognized host architecture %s"
222
+ raise MSVCUnsupportedHostArch(msg % repr(host_platform))
223
+
224
+ try:
225
+ target = _ARCH_TO_CANONICAL[target_platform.lower()]
226
+ except KeyError:
227
+ all_archs = str(list(_ARCH_TO_CANONICAL.keys()))
228
+ raise MSVCUnsupportedTargetArch(
229
+ "Unrecognized target architecture %s\n\tValid architectures: %s"
230
+ % (target_platform, all_archs)
231
+ )
232
+
233
+ return (host, target, req_target_platform)
234
+
235
+ # If you update this, update SupportedVSList in Tool/MSCommon/vs.py, and the
236
+ # MSVC_VERSION documentation in Tool/msvc.xml.
237
+ _VCVER = [
238
+ "14.3",
239
+ "14.2",
240
+ "14.1", "14.1Exp",
241
+ "14.0", "14.0Exp",
242
+ "12.0", "12.0Exp",
243
+ "11.0", "11.0Exp",
244
+ "10.0", "10.0Exp",
245
+ "9.0", "9.0Exp",
246
+ "8.0", "8.0Exp",
247
+ "7.1",
248
+ "7.0",
249
+ "6.0"]
250
+
251
+ # if using vswhere, configure command line arguments to probe for installed VC editions
252
+ _VCVER_TO_VSWHERE_VER = {
253
+ '14.3': [
254
+ ["-version", "[17.0, 18.0)"], # default: Enterprise, Professional, Community (order unpredictable?)
255
+ ["-version", "[17.0, 18.0)", "-products", "Microsoft.VisualStudio.Product.BuildTools"], # BuildTools
256
+ ],
257
+ '14.2': [
258
+ ["-version", "[16.0, 17.0)"], # default: Enterprise, Professional, Community (order unpredictable?)
259
+ ["-version", "[16.0, 17.0)", "-products", "Microsoft.VisualStudio.Product.BuildTools"], # BuildTools
260
+ ],
261
+ '14.1': [
262
+ ["-version", "[15.0, 16.0)"], # default: Enterprise, Professional, Community (order unpredictable?)
263
+ ["-version", "[15.0, 16.0)", "-products", "Microsoft.VisualStudio.Product.BuildTools"], # BuildTools
264
+ ],
265
+ '14.1Exp': [
266
+ ["-version", "[15.0, 16.0)", "-products", "Microsoft.VisualStudio.Product.WDExpress"], # Express
267
+ ],
268
+ }
269
+
270
+ _VCVER_TO_PRODUCT_DIR = {
271
+ '14.3': [
272
+ (SCons.Util.HKEY_LOCAL_MACHINE, r'')], # not set by this version
273
+ '14.2': [
274
+ (SCons.Util.HKEY_LOCAL_MACHINE, r'')], # not set by this version
275
+ '14.1': [
276
+ (SCons.Util.HKEY_LOCAL_MACHINE, r'')], # not set by this version
277
+ '14.1Exp': [
278
+ (SCons.Util.HKEY_LOCAL_MACHINE, r'')], # not set by this version
279
+ '14.0': [
280
+ (SCons.Util.HKEY_LOCAL_MACHINE, r'Microsoft\VisualStudio\14.0\Setup\VC\ProductDir')],
281
+ '14.0Exp': [
282
+ (SCons.Util.HKEY_LOCAL_MACHINE, r'Microsoft\VCExpress\14.0\Setup\VC\ProductDir')],
283
+ '12.0': [
284
+ (SCons.Util.HKEY_LOCAL_MACHINE, r'Microsoft\VisualStudio\12.0\Setup\VC\ProductDir'),
285
+ ],
286
+ '12.0Exp': [
287
+ (SCons.Util.HKEY_LOCAL_MACHINE, r'Microsoft\VCExpress\12.0\Setup\VC\ProductDir'),
288
+ ],
289
+ '11.0': [
290
+ (SCons.Util.HKEY_LOCAL_MACHINE, r'Microsoft\VisualStudio\11.0\Setup\VC\ProductDir'),
291
+ ],
292
+ '11.0Exp': [
293
+ (SCons.Util.HKEY_LOCAL_MACHINE, r'Microsoft\VCExpress\11.0\Setup\VC\ProductDir'),
294
+ ],
295
+ '10.0': [
296
+ (SCons.Util.HKEY_LOCAL_MACHINE, r'Microsoft\VisualStudio\10.0\Setup\VC\ProductDir'),
297
+ ],
298
+ '10.0Exp': [
299
+ (SCons.Util.HKEY_LOCAL_MACHINE, r'Microsoft\VCExpress\10.0\Setup\VC\ProductDir'),
300
+ ],
301
+ '9.0': [
302
+ (SCons.Util.HKEY_CURRENT_USER, r'Microsoft\DevDiv\VCForPython\9.0\installdir',),
303
+ (SCons.Util.HKEY_LOCAL_MACHINE, r'Microsoft\VisualStudio\9.0\Setup\VC\ProductDir',),
304
+ ],
305
+ '9.0Exp': [
306
+ (SCons.Util.HKEY_LOCAL_MACHINE, r'Microsoft\VCExpress\9.0\Setup\VC\ProductDir'),
307
+ ],
308
+ '8.0': [
309
+ (SCons.Util.HKEY_LOCAL_MACHINE, r'Microsoft\VisualStudio\8.0\Setup\VC\ProductDir'),
310
+ ],
311
+ '8.0Exp': [
312
+ (SCons.Util.HKEY_LOCAL_MACHINE, r'Microsoft\VCExpress\8.0\Setup\VC\ProductDir'),
313
+ ],
314
+ '7.1': [
315
+ (SCons.Util.HKEY_LOCAL_MACHINE, r'Microsoft\VisualStudio\7.1\Setup\VC\ProductDir'),
316
+ ],
317
+ '7.0': [
318
+ (SCons.Util.HKEY_LOCAL_MACHINE, r'Microsoft\VisualStudio\7.0\Setup\VC\ProductDir'),
319
+ ],
320
+ '6.0': [
321
+ (SCons.Util.HKEY_LOCAL_MACHINE, r'Microsoft\VisualStudio\6.0\Setup\Microsoft Visual C++\ProductDir'),
322
+ ]
323
+ }
324
+
325
+
326
+ def msvc_version_to_maj_min(msvc_version):
327
+ msvc_version_numeric = get_msvc_version_numeric(msvc_version)
328
+
329
+ t = msvc_version_numeric.split(".")
330
+ if not len(t) == 2:
331
+ raise ValueError("Unrecognized version %s (%s)" % (msvc_version,msvc_version_numeric))
332
+ try:
333
+ maj = int(t[0])
334
+ min = int(t[1])
335
+ return maj, min
336
+ except ValueError as e:
337
+ raise ValueError("Unrecognized version %s (%s)" % (msvc_version,msvc_version_numeric))
338
+
339
+
340
+ def is_host_target_supported(host_target, msvc_version):
341
+ """Check if (host, target) pair is supported for a VC version.
342
+
343
+ Only checks whether a given version *may* support the given
344
+ (host, target) pair, not that the toolchain is actually on the machine.
345
+
346
+ Args:
347
+ host_target: canonalized host-target pair, e.g.
348
+ ("x86", "amd64") for cross compilation from 32- to 64-bit Windows.
349
+ msvc_version: Visual C++ version (major.minor), e.g. "10.0"
350
+
351
+ Returns:
352
+ True or False
353
+
354
+ """
355
+ # We assume that any Visual Studio version supports x86 as a target
356
+ if host_target[1] != "x86":
357
+ maj, min = msvc_version_to_maj_min(msvc_version)
358
+ if maj < 8:
359
+ return False
360
+ return True
361
+
362
+
363
+ VSWHERE_PATHS = [os.path.join(p,'vswhere.exe') for p in [
364
+ os.path.expandvars(r"%ProgramFiles(x86)%\Microsoft Visual Studio\Installer"),
365
+ os.path.expandvars(r"%ProgramFiles%\Microsoft Visual Studio\Installer"),
366
+ os.path.expandvars(r"%ChocolateyInstall%\bin"),
367
+ ]]
368
+
369
+ def msvc_find_vswhere():
370
+ """ Find the location of vswhere """
371
+ # For bug 3333: support default location of vswhere for both
372
+ # 64 and 32 bit windows installs.
373
+ # For bug 3542: also accommodate not being on C: drive.
374
+ # NB: this gets called from testsuite on non-Windows platforms.
375
+ # Whether that makes sense or not, don't break it for those.
376
+ vswhere_path = None
377
+ for pf in VSWHERE_PATHS:
378
+ if os.path.exists(pf):
379
+ vswhere_path = pf
380
+ break
381
+
382
+ return vswhere_path
383
+
384
+ def find_vc_pdir_vswhere(msvc_version, env=None):
385
+ """ Find the MSVC product directory using the vswhere program.
386
+
387
+ Args:
388
+ msvc_version: MSVC version to search for
389
+ env: optional to look up VSWHERE variable
390
+
391
+ Returns:
392
+ MSVC install dir or None
393
+
394
+ Raises:
395
+ UnsupportedVersion: if the version is not known by this file
396
+
397
+ """
398
+ try:
399
+ vswhere_version = _VCVER_TO_VSWHERE_VER[msvc_version]
400
+ except KeyError:
401
+ debug("Unknown version of MSVC: %s" % msvc_version)
402
+ raise UnsupportedVersion("Unknown version %s" % msvc_version)
403
+
404
+ if env is None or not env.get('VSWHERE'):
405
+ vswhere_path = msvc_find_vswhere()
406
+ else:
407
+ vswhere_path = env.subst('$VSWHERE')
408
+
409
+ if vswhere_path is None:
410
+ return None
411
+
412
+ debug('VSWHERE: %s' % vswhere_path)
413
+ for vswhere_version_args in vswhere_version:
414
+
415
+ vswhere_cmd = [vswhere_path] + vswhere_version_args + ["-property", "installationPath"]
416
+
417
+ debug("running: %s" % vswhere_cmd)
418
+
419
+ #cp = subprocess.run(vswhere_cmd, capture_output=True) # 3.7+ only
420
+ cp = subprocess.run(vswhere_cmd, stdout=PIPE, stderr=PIPE)
421
+
422
+ if cp.stdout:
423
+ # vswhere could return multiple lines, e.g. if Build Tools
424
+ # and {Community,Professional,Enterprise} are both installed.
425
+ # We could define a way to pick the one we prefer, but since
426
+ # this data is currently only used to make a check for existence,
427
+ # returning the first hit should be good enough.
428
+ lines = cp.stdout.decode("mbcs").splitlines()
429
+ return os.path.join(lines[0], 'VC')
430
+ else:
431
+ # We found vswhere, but no install info available for this version
432
+ pass
433
+
434
+ return None
435
+
436
+
437
+ def find_vc_pdir(env, msvc_version):
438
+ """Find the MSVC product directory for the given version.
439
+
440
+ Tries to look up the path using a registry key from the table
441
+ _VCVER_TO_PRODUCT_DIR; if there is no key, calls find_vc_pdir_wshere
442
+ for help instead.
443
+
444
+ Args:
445
+ msvc_version: str
446
+ msvc version (major.minor, e.g. 10.0)
447
+
448
+ Returns:
449
+ str: Path found in registry, or None
450
+
451
+ Raises:
452
+ UnsupportedVersion: if the version is not known by this file.
453
+ MissingConfiguration: found version but the directory is missing.
454
+
455
+ Both exceptions inherit from VisualCException.
456
+
457
+ """
458
+ root = 'Software\\'
459
+ try:
460
+ hkeys = _VCVER_TO_PRODUCT_DIR[msvc_version]
461
+ except KeyError:
462
+ debug("Unknown version of MSVC: %s" % msvc_version)
463
+ raise UnsupportedVersion("Unknown version %s" % msvc_version)
464
+
465
+ for hkroot, key in hkeys:
466
+ try:
467
+ comps = None
468
+ if not key:
469
+ comps = find_vc_pdir_vswhere(msvc_version, env)
470
+ if not comps:
471
+ debug('no VC found for version {}'.format(repr(msvc_version)))
472
+ raise OSError
473
+ debug('VC found: {}'.format(repr(msvc_version)))
474
+ return comps
475
+ else:
476
+ if common.is_win64():
477
+ try:
478
+ # ordinarily at win64, try Wow6432Node first.
479
+ comps = common.read_reg(root + 'Wow6432Node\\' + key, hkroot)
480
+ except OSError:
481
+ # at Microsoft Visual Studio for Python 2.7, value is not in Wow6432Node
482
+ pass
483
+ if not comps:
484
+ # not Win64, or Microsoft Visual Studio for Python 2.7
485
+ comps = common.read_reg(root + key, hkroot)
486
+ except OSError:
487
+ debug('no VC registry key {}'.format(repr(key)))
488
+ else:
489
+ debug('found VC in registry: {}'.format(comps))
490
+ if os.path.exists(comps):
491
+ return comps
492
+ else:
493
+ debug('reg says dir is {}, but it does not exist. (ignoring)'.format(comps))
494
+ raise MissingConfiguration("registry dir {} not found on the filesystem".format(comps))
495
+ return None
496
+
497
+ def find_batch_file(env,msvc_version,host_arch,target_arch):
498
+ """
499
+ Find the location of the batch script which should set up the compiler
500
+ for any TARGET_ARCH whose compilers were installed by Visual Studio/VCExpress
501
+
502
+ In newer (2017+) compilers, make use of the fact there are vcvars
503
+ scripts named with a host_target pair that calls vcvarsall.bat properly,
504
+ so use that and return an indication we don't need the argument
505
+ we would have computed to run vcvarsall.bat.
506
+ """
507
+ pdir = find_vc_pdir(env, msvc_version)
508
+ if pdir is None:
509
+ raise NoVersionFound("No version of Visual Studio found")
510
+ debug('looking in {}'.format(pdir))
511
+
512
+ # filter out e.g. "Exp" from the version name
513
+ msvc_ver_numeric = get_msvc_version_numeric(msvc_version)
514
+ use_arg = True
515
+ vernum = float(msvc_ver_numeric)
516
+ if 7 <= vernum < 8:
517
+ pdir = os.path.join(pdir, os.pardir, "Common7", "Tools")
518
+ batfilename = os.path.join(pdir, "vsvars32.bat")
519
+ elif vernum < 7:
520
+ pdir = os.path.join(pdir, "Bin")
521
+ batfilename = os.path.join(pdir, "vcvars32.bat")
522
+ elif 8 <= vernum <= 14:
523
+ batfilename = os.path.join(pdir, "vcvarsall.bat")
524
+ else: # vernum >= 14.1 VS2017 and above
525
+ batfiledir = os.path.join(pdir, "Auxiliary", "Build")
526
+ targ = _HOST_TARGET_TO_BAT_ARCH_GT14[(host_arch, target_arch)]
527
+ batfilename = os.path.join(batfiledir, targ)
528
+ use_arg = False
529
+
530
+ if not os.path.exists(batfilename):
531
+ debug("Not found: %s" % batfilename)
532
+ batfilename = None
533
+
534
+ installed_sdks = get_installed_sdks()
535
+ for _sdk in installed_sdks:
536
+ sdk_bat_file = _sdk.get_sdk_vc_script(host_arch,target_arch)
537
+ if not sdk_bat_file:
538
+ debug("batch file not found:%s" % _sdk)
539
+ else:
540
+ sdk_bat_file_path = os.path.join(pdir,sdk_bat_file)
541
+ if os.path.exists(sdk_bat_file_path):
542
+ debug('sdk_bat_file_path:%s' % sdk_bat_file_path)
543
+ return (batfilename, use_arg, sdk_bat_file_path)
544
+
545
+ return (batfilename, use_arg, None)
546
+
547
+
548
+ __INSTALLED_VCS_RUN = None
549
+ _VC_TOOLS_VERSION_FILE_PATH = ['Auxiliary', 'Build', 'Microsoft.VCToolsVersion.default.txt']
550
+ _VC_TOOLS_VERSION_FILE = os.sep.join(_VC_TOOLS_VERSION_FILE_PATH)
551
+
552
+ def _check_cl_exists_in_vc_dir(env, vc_dir, msvc_version):
553
+ """Return status of finding a cl.exe to use.
554
+
555
+ Locates cl in the vc_dir depending on TARGET_ARCH, HOST_ARCH and the
556
+ msvc version. TARGET_ARCH and HOST_ARCH can be extracted from the
557
+ passed env, unless it is None, in which case the native platform is
558
+ assumed for both host and target.
559
+
560
+ Args:
561
+ env: Environment
562
+ a construction environment, usually if this is passed its
563
+ because there is a desired TARGET_ARCH to be used when searching
564
+ for a cl.exe
565
+ vc_dir: str
566
+ the path to the VC dir in the MSVC installation
567
+ msvc_version: str
568
+ msvc version (major.minor, e.g. 10.0)
569
+
570
+ Returns:
571
+ bool:
572
+
573
+ """
574
+
575
+ # determine if there is a specific target platform we want to build for and
576
+ # use that to find a list of valid VCs, default is host platform == target platform
577
+ # and same for if no env is specified to extract target platform from
578
+ if env:
579
+ (host_platform, target_platform, req_target_platform) = get_host_target(env)
580
+ else:
581
+ host_platform = platform.machine().lower()
582
+ target_platform = host_platform
583
+
584
+ host_platform = _ARCH_TO_CANONICAL[host_platform]
585
+ target_platform = _ARCH_TO_CANONICAL[target_platform]
586
+
587
+ debug('host platform %s, target platform %s for version %s' % (host_platform, target_platform, msvc_version))
588
+
589
+ ver_num = float(get_msvc_version_numeric(msvc_version))
590
+
591
+ # make sure the cl.exe exists meaning the tool is installed
592
+ if ver_num > 14:
593
+ # 2017 and newer allowed multiple versions of the VC toolset to be
594
+ # installed at the same time. This changes the layout.
595
+ # Just get the default tool version for now
596
+ #TODO: support setting a specific minor VC version
597
+ default_toolset_file = os.path.join(vc_dir, _VC_TOOLS_VERSION_FILE)
598
+ try:
599
+ with open(default_toolset_file) as f:
600
+ vc_specific_version = f.readlines()[0].strip()
601
+ except IOError:
602
+ debug('failed to read ' + default_toolset_file)
603
+ return False
604
+ except IndexError:
605
+ debug('failed to find MSVC version in ' + default_toolset_file)
606
+ return False
607
+
608
+ host_trgt_dir = _HOST_TARGET_TO_CL_DIR_GREATER_THAN_14.get((host_platform, target_platform), None)
609
+ if host_trgt_dir is None:
610
+ debug('unsupported host/target platform combo: (%s,%s)'%(host_platform, target_platform))
611
+ return False
612
+
613
+ cl_path = os.path.join(vc_dir, 'Tools','MSVC', vc_specific_version, 'bin', host_trgt_dir[0], host_trgt_dir[1], _CL_EXE_NAME)
614
+ debug('checking for ' + _CL_EXE_NAME + ' at ' + cl_path)
615
+ if os.path.exists(cl_path):
616
+ debug('found ' + _CL_EXE_NAME + '!')
617
+ return True
618
+
619
+ elif host_platform == "amd64" and host_trgt_dir[0] == "Hostx64":
620
+ # Special case: fallback to Hostx86 if Hostx64 was tried
621
+ # and failed. This is because VS 2017 Express running on amd64
622
+ # will look to our probe like the host dir should be Hostx64,
623
+ # but Express uses Hostx86 anyway.
624
+ # We should key this off the "x86_amd64" and related pseudo
625
+ # targets, but we don't see those in this function.
626
+ host_trgt_dir = ("Hostx86", host_trgt_dir[1])
627
+ cl_path = os.path.join(vc_dir, 'Tools','MSVC', vc_specific_version, 'bin', host_trgt_dir[0], host_trgt_dir[1], _CL_EXE_NAME)
628
+ debug('checking for ' + _CL_EXE_NAME + ' at ' + cl_path)
629
+ if os.path.exists(cl_path):
630
+ debug('found ' + _CL_EXE_NAME + '!')
631
+ return True
632
+
633
+ elif 14 >= ver_num >= 8:
634
+ # Set default value to be -1 as "", which is the value for x86/x86,
635
+ # yields true when tested if not host_trgt_dir
636
+ host_trgt_dir = _HOST_TARGET_TO_CL_DIR.get((host_platform, target_platform), None)
637
+ if host_trgt_dir is None:
638
+ debug('unsupported host/target platform combo')
639
+ return False
640
+
641
+ cl_path = os.path.join(vc_dir, 'bin', host_trgt_dir, _CL_EXE_NAME)
642
+ debug('checking for ' + _CL_EXE_NAME + ' at ' + cl_path)
643
+
644
+ cl_path_exists = os.path.exists(cl_path)
645
+ if not cl_path_exists and host_platform == 'amd64':
646
+ # older versions of visual studio only had x86 binaries,
647
+ # so if the host platform is amd64, we need to check cross
648
+ # compile options (x86 binary compiles some other target on a 64 bit os)
649
+
650
+ # Set default value to be -1 as "" which is the value for x86/x86 yields true when tested
651
+ # if not host_trgt_dir
652
+ host_trgt_dir = _HOST_TARGET_TO_CL_DIR.get(('x86', target_platform), None)
653
+ if host_trgt_dir is None:
654
+ return False
655
+
656
+ cl_path = os.path.join(vc_dir, 'bin', host_trgt_dir, _CL_EXE_NAME)
657
+ debug('checking for ' + _CL_EXE_NAME + ' at ' + cl_path)
658
+ cl_path_exists = os.path.exists(cl_path)
659
+
660
+ if cl_path_exists:
661
+ debug('found ' + _CL_EXE_NAME + '!')
662
+ return True
663
+
664
+ elif 8 > ver_num >= 6:
665
+ # quick check for vc_dir/bin and vc_dir/ before walk
666
+ # need to check root as the walk only considers subdirectories
667
+ for cl_dir in ('bin', ''):
668
+ cl_path = os.path.join(vc_dir, cl_dir, _CL_EXE_NAME)
669
+ if os.path.exists(cl_path):
670
+ debug(_CL_EXE_NAME + ' found %s' % cl_path)
671
+ return True
672
+ # not in bin or root: must be in a subdirectory
673
+ for cl_root, cl_dirs, _ in os.walk(vc_dir):
674
+ for cl_dir in cl_dirs:
675
+ cl_path = os.path.join(cl_root, cl_dir, _CL_EXE_NAME)
676
+ if os.path.exists(cl_path):
677
+ debug(_CL_EXE_NAME + ' found %s' % cl_path)
678
+ return True
679
+ return False
680
+ else:
681
+ # version not support return false
682
+ debug('unsupported MSVC version: ' + str(ver_num))
683
+
684
+ return False
685
+
686
+ def get_installed_vcs(env=None):
687
+ global __INSTALLED_VCS_RUN
688
+
689
+ if __INSTALLED_VCS_RUN is not None:
690
+ return __INSTALLED_VCS_RUN
691
+
692
+ installed_versions = []
693
+
694
+ for ver in _VCVER:
695
+ debug('trying to find VC %s' % ver)
696
+ try:
697
+ VC_DIR = find_vc_pdir(env, ver)
698
+
699
+ if VC_DIR:
700
+ debug('found VC %s' % ver)
701
+ if _check_cl_exists_in_vc_dir(env, VC_DIR, ver):
702
+ installed_versions.append(ver)
703
+ else:
704
+ debug('no compiler found %s' % ver)
705
+ else:
706
+ debug('return None for ver %s' % ver)
707
+ except (MSVCUnsupportedTargetArch, MSVCUnsupportedHostArch):
708
+ # Allow this exception to propagate further as it should cause
709
+ # SCons to exit with an error code
710
+ raise
711
+ except VisualCException as e:
712
+ debug('did not find VC %s: caught exception %s' % (ver, str(e)))
713
+
714
+ __INSTALLED_VCS_RUN = installed_versions
715
+ return __INSTALLED_VCS_RUN
716
+
717
+ def reset_installed_vcs():
718
+ """Make it try again to find VC. This is just for the tests."""
719
+ global __INSTALLED_VCS_RUN
720
+ __INSTALLED_VCS_RUN = None
721
+
722
+ # Running these batch files isn't cheap: most of the time spent in
723
+ # msvs.generate() is due to vcvars*.bat. In a build that uses "tools='msvs'"
724
+ # in multiple environments, for example:
725
+ # env1 = Environment(tools='msvs')
726
+ # env2 = Environment(tools='msvs')
727
+ # we can greatly improve the speed of the second and subsequent Environment
728
+ # (or Clone) calls by memoizing the environment variables set by vcvars*.bat.
729
+ #
730
+ # Updated: by 2018, vcvarsall.bat had gotten so expensive (vs2017 era)
731
+ # it was breaking CI builds because the test suite starts scons so many
732
+ # times and the existing memo logic only helped with repeated calls
733
+ # within the same scons run. Windows builds on the CI system were split
734
+ # into chunks to get around single-build time limits.
735
+ # With VS2019 it got even slower and an optional persistent cache file
736
+ # was introduced. The cache now also stores only the parsed vars,
737
+ # not the entire output of running the batch file - saves a bit
738
+ # of time not parsing every time.
739
+
740
+ script_env_cache = None
741
+
742
+ def script_env(script, args=None):
743
+ global script_env_cache
744
+
745
+ if script_env_cache is None:
746
+ script_env_cache = common.read_script_env_cache()
747
+ cache_key = "{}--{}".format(script, args)
748
+ cache_data = script_env_cache.get(cache_key, None)
749
+ if cache_data is None:
750
+ stdout = common.get_output(script, args)
751
+
752
+ # Stupid batch files do not set return code: we take a look at the
753
+ # beginning of the output for an error message instead
754
+ olines = stdout.splitlines()
755
+ if olines[0].startswith("The specified configuration type is missing"):
756
+ raise BatchFileExecutionError("\n".join(olines[:2]))
757
+
758
+ cache_data = common.parse_output(stdout)
759
+ script_env_cache[cache_key] = cache_data
760
+ # once we updated cache, give a chance to write out if user wanted
761
+ common.write_script_env_cache(script_env_cache)
762
+
763
+ return cache_data
764
+
765
+ def get_default_version(env):
766
+ msvc_version = env.get('MSVC_VERSION')
767
+ msvs_version = env.get('MSVS_VERSION')
768
+ debug('msvc_version:%s msvs_version:%s' % (msvc_version, msvs_version))
769
+
770
+ if msvs_version and not msvc_version:
771
+ SCons.Warnings.warn(
772
+ SCons.Warnings.DeprecatedWarning,
773
+ "MSVS_VERSION is deprecated: please use MSVC_VERSION instead ")
774
+ return msvs_version
775
+ elif msvc_version and msvs_version:
776
+ if not msvc_version == msvs_version:
777
+ SCons.Warnings.warn(
778
+ SCons.Warnings.VisualVersionMismatch,
779
+ "Requested msvc version (%s) and msvs version (%s) do " \
780
+ "not match: please use MSVC_VERSION only to request a " \
781
+ "visual studio version, MSVS_VERSION is deprecated" \
782
+ % (msvc_version, msvs_version))
783
+ return msvs_version
784
+
785
+ if not msvc_version:
786
+ installed_vcs = get_installed_vcs(env)
787
+ debug('installed_vcs:%s' % installed_vcs)
788
+ if not installed_vcs:
789
+ #msg = 'No installed VCs'
790
+ #debug('msv %s' % repr(msg))
791
+ #SCons.Warnings.warn(SCons.Warnings.VisualCMissingWarning, msg)
792
+ debug('No installed VCs')
793
+ return None
794
+ msvc_version = installed_vcs[0]
795
+ debug('using default installed MSVC version %s' % repr(msvc_version))
796
+ else:
797
+ debug('using specified MSVC version %s' % repr(msvc_version))
798
+
799
+ return msvc_version
800
+
801
+ def msvc_setup_env_once(env):
802
+ try:
803
+ has_run = env["MSVC_SETUP_RUN"]
804
+ except KeyError:
805
+ has_run = False
806
+
807
+ if not has_run:
808
+ msvc_setup_env(env)
809
+ env["MSVC_SETUP_RUN"] = True
810
+
811
+ def msvc_find_valid_batch_script(env, version):
812
+ """Find and execute appropriate batch script to set up build env.
813
+
814
+ The MSVC build environment depends heavily on having the shell
815
+ environment set. SCons does not inherit that, and does not count
816
+ on that being set up correctly anyway, so it tries to find the right
817
+ MSVC batch script, or the right arguments to the generic batch script
818
+ vcvarsall.bat, and run that, so we have a valid environment to build in.
819
+ There are dragons here: the batch scripts don't fail (see comments
820
+ elsewhere), they just leave you with a bad setup, so try hard to
821
+ get it right.
822
+ """
823
+
824
+ # Find the host, target, and if present the requested target:
825
+ platforms = get_host_target(env)
826
+ debug("host_platform %s, target_platform %s req_target_platform %s" % platforms)
827
+ host_platform, target_platform, req_target_platform = platforms
828
+
829
+ # Most combinations of host + target are straightforward.
830
+ # While all MSVC / Visual Studio tools are pysically 32-bit, they
831
+ # make it look like there are 64-bit tools if the host is 64-bit,
832
+ # so you can invoke the environment batch script to set up to build,
833
+ # say, amd64 host -> x86 target. Express versions are an exception:
834
+ # they always look 32-bit, so the batch scripts with 64-bit
835
+ # host parts are absent. We try to fix that up in a couple of ways.
836
+ # One is here: we make a table of "targets" to try, with the extra
837
+ # targets being tags that tell us to try a different "host" instead
838
+ # of the deduced host.
839
+ try_target_archs = [target_platform]
840
+ if req_target_platform in ('amd64', 'x86_64'):
841
+ try_target_archs.append('x86_amd64')
842
+ elif req_target_platform in ('x86',):
843
+ try_target_archs.append('x86_x86')
844
+ elif req_target_platform in ('arm',):
845
+ try_target_archs.append('x86_arm')
846
+ elif req_target_platform in ('arm64',):
847
+ try_target_archs.append('x86_arm64')
848
+ elif not req_target_platform:
849
+ if target_platform in ('amd64', 'x86_64'):
850
+ try_target_archs.append('x86_amd64')
851
+ # If the user hasn't specifically requested a TARGET_ARCH,
852
+ # and the TARGET_ARCH is amd64 then also try 32 bits
853
+ # if there are no viable 64 bit tools installed
854
+ try_target_archs.append('x86')
855
+
856
+ debug("host_platform: %s, try_target_archs: %s"%(host_platform, try_target_archs))
857
+
858
+ d = None
859
+ for tp in try_target_archs:
860
+ # Set to current arch.
861
+ env['TARGET_ARCH'] = tp
862
+
863
+ debug("trying target_platform:%s" % tp)
864
+ host_target = (host_platform, tp)
865
+ if not is_host_target_supported(host_target, version):
866
+ warn_msg = "host, target = %s not supported for MSVC version %s" % \
867
+ (host_target, version)
868
+ SCons.Warnings.warn(SCons.Warnings.VisualCMissingWarning, warn_msg)
869
+ arg = _HOST_TARGET_ARCH_TO_BAT_ARCH[host_target]
870
+
871
+ # Try to locate a batch file for this host/target platform combo
872
+ try:
873
+ (vc_script, use_arg, sdk_script) = find_batch_file(env, version, host_platform, tp)
874
+ debug('vc_script:%s sdk_script:%s'%(vc_script,sdk_script))
875
+ except VisualCException as e:
876
+ msg = str(e)
877
+ debug('Caught exception while looking for batch file (%s)' % msg)
878
+ warn_msg = "VC version %s not installed. " + \
879
+ "C/C++ compilers are most likely not set correctly.\n" + \
880
+ " Installed versions are: %s"
881
+ warn_msg = warn_msg % (version, get_installed_vcs(env))
882
+ SCons.Warnings.warn(SCons.Warnings.VisualCMissingWarning, warn_msg)
883
+ continue
884
+
885
+ # Try to use the located batch file for this host/target platform combo
886
+ debug('use_script 2 %s, args:%s' % (repr(vc_script), arg))
887
+ found = None
888
+ if vc_script:
889
+ if not use_arg:
890
+ arg = '' # bat file will supply platform type
891
+ # Get just version numbers
892
+ maj, min = msvc_version_to_maj_min(version)
893
+ # VS2015+
894
+ if maj >= 14:
895
+ if env.get('MSVC_UWP_APP') == '1':
896
+ # Initialize environment variables with store/UWP paths
897
+ arg = (arg + ' store').lstrip()
898
+
899
+ try:
900
+ d = script_env(vc_script, args=arg)
901
+ found = vc_script
902
+ except BatchFileExecutionError as e:
903
+ debug('use_script 3: failed running VC script %s: %s: Error:%s'%(repr(vc_script),arg,e))
904
+ vc_script=None
905
+ continue
906
+ if not vc_script and sdk_script:
907
+ debug('use_script 4: trying sdk script: %s' % sdk_script)
908
+ try:
909
+ d = script_env(sdk_script)
910
+ found = sdk_script
911
+ except BatchFileExecutionError as e:
912
+ debug('use_script 5: failed running SDK script %s: Error:%s'%(repr(sdk_script), e))
913
+ continue
914
+ elif not vc_script and not sdk_script:
915
+ debug('use_script 6: Neither VC script nor SDK script found')
916
+ continue
917
+
918
+ debug("Found a working script/target: %s/%s"%(repr(found),arg))
919
+ break # We've found a working target_platform, so stop looking
920
+
921
+ # If we cannot find a viable installed compiler, reset the TARGET_ARCH
922
+ # To it's initial value
923
+ if not d:
924
+ env['TARGET_ARCH']=req_target_platform
925
+
926
+ return d
927
+
928
+
929
+ def msvc_setup_env(env):
930
+ debug('called')
931
+ version = get_default_version(env)
932
+ if version is None:
933
+ warn_msg = "No version of Visual Studio compiler found - C/C++ " \
934
+ "compilers most likely not set correctly"
935
+
936
+ # Nuitka: Useless warning for us.
937
+ # SCons.Warnings.warn(SCons.Warnings.VisualCMissingWarning, warn_msg)
938
+ return None
939
+
940
+ # XXX: we set-up both MSVS version for backward
941
+ # compatibility with the msvs tool
942
+ env['MSVC_VERSION'] = version
943
+ env['MSVS_VERSION'] = version
944
+ env['MSVS'] = {}
945
+
946
+
947
+ use_script = env.get('MSVC_USE_SCRIPT', True)
948
+ if SCons.Util.is_String(use_script):
949
+ debug('use_script 1 %s' % repr(use_script))
950
+ d = script_env(use_script)
951
+ elif use_script:
952
+ d = msvc_find_valid_batch_script(env,version)
953
+ debug('use_script 2 %s' % d)
954
+ if not d:
955
+ return d
956
+ else:
957
+ debug('MSVC_USE_SCRIPT set to False')
958
+ warn_msg = "MSVC_USE_SCRIPT set to False, assuming environment " \
959
+ "set correctly."
960
+ # Nuitka: We use this on purpose.
961
+ # SCons.Warnings.warn(SCons.Warnings.VisualCMissingWarning, warn_msg)
962
+ return None
963
+
964
+ for k, v in d.items():
965
+ # Nuitka: Make the Windows SDK version visible in environment.
966
+ if k == "WindowsSDKVersion":
967
+ # Always just a single version if any.
968
+ if len(v) == 1:
969
+ env["WindowsSDKVersion"] = v[0].rstrip('\\')
970
+ elif len(v) == 0:
971
+ env["WindowsSDKVersion"] = None
972
+ else:
973
+ assert False, v
974
+
975
+ continue
976
+
977
+ env.PrependENVPath(k, v, delete_existing=True)
978
+ debug("env['ENV']['%s'] = %s" % (k, env['ENV'][k]))
979
+
980
+ # final check to issue a warning if the compiler is not present
981
+ if not find_program_path(env, 'cl'):
982
+ debug("did not find " + _CL_EXE_NAME)
983
+ if CONFIG_CACHE:
984
+ propose = "SCONS_CACHE_MSVC_CONFIG caching enabled, remove cache file {} if out of date.".format(CONFIG_CACHE)
985
+ else:
986
+ propose = "It may need to be installed separately with Visual Studio."
987
+ warn_msg = "Could not find MSVC compiler 'cl'. {}".format(propose)
988
+ SCons.Warnings.warn(SCons.Warnings.VisualCMissingWarning, warn_msg)
989
+
990
+ def msvc_exists(env=None, version=None):
991
+ vcs = get_installed_vcs(env)
992
+ if version is None:
993
+ return len(vcs) > 0
994
+ return version in vcs