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,1133 @@
1
+ # Copyright 2025, Kay Hayen, mailto:kay.hayen@gmail.com find license text at end of file
2
+
3
+
4
+ """ This contains the tuning of the compilers towards defined goals.
5
+
6
+ """
7
+
8
+ import os
9
+ import re
10
+
11
+ from nuitka.Tracing import scons_details_logger, scons_logger
12
+ from nuitka.utils.Download import getCachedDownloadedMinGW64
13
+ from nuitka.utils.FileOperations import (
14
+ getReportPath,
15
+ openTextFile,
16
+ putTextFileContents,
17
+ )
18
+ from nuitka.utils.Utils import (
19
+ isAIX,
20
+ isFedoraBasedLinux,
21
+ isMacOS,
22
+ isPosixWindows,
23
+ isWin32Windows,
24
+ )
25
+
26
+ from .SconsHacks import myDetectVersion
27
+ from .SconsUtils import (
28
+ addBinaryBlobSection,
29
+ addToPATH,
30
+ createEnvironment,
31
+ decideArchMismatch,
32
+ getExecutablePath,
33
+ getLinkerArch,
34
+ getMsvcVersion,
35
+ getMsvcVersionString,
36
+ isClangName,
37
+ isGccName,
38
+ isZigName,
39
+ raiseNoCompilerFoundErrorExit,
40
+ setEnvironmentVariable,
41
+ )
42
+
43
+ # spell-checker: ignore LIBPATH,CPPDEFINES,CPPPATH,CXXVERSION,CCFLAGS,LINKFLAGS,CXXFLAGS
44
+ # spell-checker: ignore -flto,-fpartial-inlining,-freorder-functions,-defsym,-fprofile
45
+ # spell-checker: ignore -fwrapv,-Wunused,fcompare,-ftrack,-fvisibility,-municode,
46
+ # spell-checker: ignore -feliminate,noexecstack,implib
47
+ # spell-checker: ignore LTCG,GENPROFILE,USEPROFILE,CGTHREADS
48
+
49
+
50
+ def _detectWindowsSDK(env):
51
+ # Caching
52
+ if hasattr(env, "windows_sdk_version"):
53
+ return env.windows_sdk_version
54
+
55
+ # Check if there is a Windows SDK installed.
56
+ if "WindowsSDKVersion" not in env:
57
+ if "WindowsSDKVersion" in os.environ:
58
+ windows_sdk_version = os.environ["WindowsSDKVersion"].rstrip("\\")
59
+ else:
60
+ windows_sdk_version = None
61
+ else:
62
+ windows_sdk_version = env["WindowsSDKVersion"]
63
+
64
+ if windows_sdk_version:
65
+ scons_details_logger.info("Using Windows SDK '%s'." % windows_sdk_version)
66
+
67
+ env.windows_sdk_version = tuple(int(x) for x in windows_sdk_version.split("."))
68
+ else:
69
+ scons_logger.warning(
70
+ """\
71
+ Windows SDK must be installed in Visual Studio for it to \
72
+ be usable with Nuitka. Use the Visual Studio installer for \
73
+ adding it."""
74
+ )
75
+
76
+ env.windows_sdk_version = None
77
+
78
+ return env.windows_sdk_version
79
+
80
+
81
+ _windows_sdk_c11_mode_min_version = (10, 0, 19041, 0)
82
+
83
+
84
+ def _enableC11Settings(env):
85
+ """Decide if C11 mode can be used and enable the C compile flags for it.
86
+
87
+ Args:
88
+ env - scons environment with compiler information
89
+
90
+ Returns:
91
+ bool - c11_mode flag
92
+ """
93
+
94
+ # Lots of cases to deal with, pylint: disable=too-many-branches
95
+
96
+ if "force-c11-mode" in env.experimental_flags:
97
+ c11_mode = True
98
+ elif "force-cpp-mode" in env.experimental_flags:
99
+ c11_mode = False
100
+ elif env.clangcl_mode:
101
+ c11_mode = True
102
+ elif (
103
+ env.msvc_mode
104
+ and env.windows_sdk_version >= _windows_sdk_c11_mode_min_version
105
+ and getMsvcVersion(env) >= (14, 3)
106
+ ):
107
+ c11_mode = True
108
+ elif env.clang_mode:
109
+ c11_mode = True
110
+
111
+ # For now, zig doesn't support C11 mode in the form needed by Nuitka
112
+ if isZigName(env.the_cc_name):
113
+ c11_mode = False
114
+ elif env.gcc_mode and env.gcc_version >= (5,):
115
+ c11_mode = True
116
+ else:
117
+ c11_mode = False
118
+
119
+ if c11_mode:
120
+ if env.gcc_mode:
121
+ env.Append(CFLAGS=["-std=c11"])
122
+ elif env.msvc_mode:
123
+ env.Append(CFLAGS=["/std:c11"])
124
+
125
+ if env.msvc_mode and c11_mode:
126
+ # Windows SDK shows this even in non-debug mode in C11 mode.
127
+ env.Append(CCFLAGS=["/wd5105", "/wd4391"])
128
+
129
+ if not c11_mode:
130
+ env.Append(CPPDEFINES=["_NUITKA_NON_C11_MODE"])
131
+
132
+ scons_details_logger.info("Using C11 mode: %s" % c11_mode)
133
+
134
+ env.c11_mode = c11_mode
135
+
136
+
137
+ def _enableLtoSettings(
138
+ env,
139
+ lto_mode,
140
+ pgo_mode,
141
+ job_count,
142
+ ):
143
+ # This is driven by branches on purpose and pylint: disable=too-many-branches,too-many-statements
144
+
145
+ orig_lto_mode = lto_mode
146
+
147
+ if lto_mode == "no":
148
+ lto_mode = False
149
+ reason = "disabled"
150
+ elif lto_mode == "yes":
151
+ lto_mode = True
152
+ reason = "enabled"
153
+ elif pgo_mode in ("use", "generate"):
154
+ lto_mode = True
155
+ reason = "PGO implies LTO"
156
+ elif env.msvc_mode and getMsvcVersion(env) >= (14,):
157
+ lto_mode = True
158
+ reason = "known to be supported"
159
+ elif env.nuitka_python:
160
+ lto_mode = True
161
+ reason = "known to be supported (Nuitka-Python)"
162
+ elif env.fedora_python:
163
+ lto_mode = True
164
+ reason = "known to be supported (Fedora Python)"
165
+ elif env.arch_python:
166
+ lto_mode = True
167
+ reason = "known to be supported (Arch Python)"
168
+ elif (
169
+ env.debian_python
170
+ and env.gcc_mode
171
+ and not env.clang_mode
172
+ and env.gcc_version >= (6,)
173
+ ):
174
+ lto_mode = True
175
+ reason = "known to be supported (Debian)"
176
+ elif env.gcc_mode and "gnu-cc" in env.the_cc_name and env.anaconda_python:
177
+ lto_mode = False
178
+ reason = "known to be not supported (CondaCC)"
179
+ elif isMacOS() and env.gcc_mode and env.clang_mode:
180
+ if env.debugger_mode:
181
+ lto_mode = False
182
+ reason = "must be disabled to see line numbers (macOS clang)"
183
+ else:
184
+ lto_mode = True
185
+ reason = "known to be supported (macOS clang)"
186
+ elif env.mingw_mode and env.clang_mode:
187
+ lto_mode = False
188
+ reason = "known to not be supported (new MinGW64 Clang)"
189
+ elif env.gcc_mode and env.mingw_mode and env.gcc_version >= (11, 2):
190
+ lto_mode = True
191
+ reason = "known to be supported (new MinGW64)"
192
+ else:
193
+ lto_mode = False
194
+ reason = "not known to be supported"
195
+
196
+ # Do not default to LTO for large compilations, unless asked for it.
197
+ compiled_module_count_threshold = 250
198
+ if (
199
+ orig_lto_mode == "auto"
200
+ and lto_mode
201
+ and env.compiled_module_count > compiled_module_count_threshold
202
+ and not env.nuitka_python
203
+ ):
204
+ lto_mode = False
205
+ reason = (
206
+ "might to be too slow %s (>= %d threshold), force it with '--lto=yes'"
207
+ % (
208
+ env.compiled_module_count,
209
+ compiled_module_count_threshold,
210
+ )
211
+ )
212
+
213
+ if lto_mode and env.gcc_mode and not env.clang_mode and env.gcc_version < (4, 6):
214
+ scons_logger.warning(
215
+ """\
216
+ The gcc compiler %s (version %s) doesn't have the sufficient \
217
+ version for lto mode (>= 4.6). Disabled."""
218
+ % (env["CXX"], env["CXXVERSION"])
219
+ )
220
+
221
+ lto_mode = False
222
+ reason = "gcc 4.6 is doesn't have good enough LTO support"
223
+
224
+ if (
225
+ lto_mode
226
+ and env.gcc_mode
227
+ and not env.clang_mode
228
+ and not isWin32Windows()
229
+ and not isMacOS()
230
+ and getExecutablePath("make", env=env) is None
231
+ ):
232
+ scons_logger.warning(
233
+ """\
234
+ The gcc compiler for LTO mode requires 'make' to be installed \
235
+ for parallel linking to be used, compilation might be a lot \
236
+ slower without it.
237
+ """
238
+ )
239
+
240
+ if env.gcc_mode and lto_mode:
241
+ if env.clang_mode:
242
+ env.Append(CCFLAGS=["-flto"])
243
+ env.Append(LINKFLAGS=["-flto"])
244
+ else:
245
+ env.Append(CCFLAGS=["-flto=%d" % job_count])
246
+ env.Append(LINKFLAGS=["-flto=%d" % job_count])
247
+
248
+ env.Append(CCFLAGS=["-fuse-linker-plugin", "-fno-fat-lto-objects"])
249
+ env.Append(LINKFLAGS=["-fuse-linker-plugin"])
250
+
251
+ # Need to tell the linker these things are OK.
252
+ env.Append(LINKFLAGS=["-fpartial-inlining", "-freorder-functions"])
253
+
254
+ if env.mingw_mode and "MAKE" not in os.environ:
255
+ setEnvironmentVariable(env, "MAKE", "mingw32-make.exe")
256
+
257
+ # Tell compiler to use link time optimization for MSVC
258
+ if env.msvc_mode and lto_mode:
259
+ env.Append(CCFLAGS=["/GL"])
260
+
261
+ if not env.clangcl_mode:
262
+ env.Append(LINKFLAGS=["/LTCG"])
263
+
264
+ if getMsvcVersion(env) >= (14, 3):
265
+ env.Append(LINKFLAGS=["/CGTHREADS:%d" % job_count])
266
+
267
+ if orig_lto_mode == "auto":
268
+ scons_details_logger.info(
269
+ "LTO mode auto was resolved to mode: '%s' (%s)."
270
+ % ("yes" if lto_mode else "no", reason)
271
+ )
272
+
273
+ env.lto_mode = lto_mode
274
+ env.orig_lto_mode = orig_lto_mode
275
+ env.pgo_mode = pgo_mode
276
+
277
+ # PGO configuration
278
+ _enablePgoSettings(env)
279
+
280
+
281
+ _python311_min_msvc_version = (14, 3)
282
+
283
+
284
+ def checkWindowsCompilerFound(
285
+ env, target_arch, clang_mode, msvc_version, assume_yes_for_downloads, download_ok
286
+ ):
287
+ """Remove compiler of wrong arch or too old gcc and replace with downloaded winlibs gcc."""
288
+ # Many cases to deal with, pylint: disable=too-many-branches,too-many-statements
289
+
290
+ if os.name == "nt":
291
+ # On Windows, in case MSVC was not found and not previously forced, use the
292
+ # winlibs MinGW64 as a download, and use it as a fallback.
293
+ compiler_path = getExecutablePath(env["CC"], env=env)
294
+
295
+ scons_details_logger.info(
296
+ "Checking usability of binary '%s' from environment '%s'."
297
+ % (compiler_path, env["CC"])
298
+ )
299
+
300
+ # On MSYS2, cannot use the POSIX compiler, drop that even before we check arches, since that
301
+ # will of course still match.
302
+ if env.msys2_mingw_python and compiler_path.endswith("/usr/bin/gcc.exe"):
303
+ compiler_path = None
304
+
305
+ if compiler_path is not None:
306
+ the_cc_name = os.path.basename(compiler_path)
307
+
308
+ # The MSVC can only be used with an Windows SDK installed, and for 3.11 we need it
309
+ # to be a least a minimum version.
310
+ if (
311
+ not isGccName(the_cc_name)
312
+ and not isClangName(the_cc_name)
313
+ and (
314
+ _detectWindowsSDK(env) is None
315
+ or (
316
+ env.python_version is not None
317
+ and env.python_version >= (3, 11)
318
+ and _detectWindowsSDK(env) < _windows_sdk_c11_mode_min_version
319
+ )
320
+ )
321
+ ):
322
+ # This will trigger using it to use our own gcc in branch below.
323
+ compiler_path = None
324
+ env["CC"] = None
325
+
326
+ if compiler_path is not None:
327
+ the_cc_name = os.path.basename(compiler_path)
328
+
329
+ if clang_mode and not isClangName(the_cc_name):
330
+ # This will trigger using it to use our own clang in branch below.
331
+ compiler_path = None
332
+ env["CC"] = None
333
+
334
+ # Drop wrong arch compiler, most often found by scans. There might be wrong gcc or cl on the PATH.
335
+ if compiler_path is not None:
336
+ the_cc_name = os.path.basename(compiler_path)
337
+
338
+ decision, linker_arch, compiler_arch = decideArchMismatch(
339
+ target_arch=target_arch,
340
+ the_cc_name=the_cc_name,
341
+ compiler_path=compiler_path,
342
+ )
343
+
344
+ if decision:
345
+ scons_logger.info(
346
+ """\
347
+ Mismatch between Python binary ('%s' -> '%s') and \
348
+ C compiler ('%s' -> '%s') arches, that compiler is ignored!"""
349
+ % (
350
+ os.environ["NUITKA_PYTHON_EXE_PATH"],
351
+ linker_arch,
352
+ compiler_path,
353
+ compiler_arch,
354
+ )
355
+ )
356
+
357
+ # This will trigger using it to use our own gcc in branch below.
358
+ compiler_path = None
359
+ env["CC"] = None
360
+
361
+ if compiler_path is not None and msvc_version is not None:
362
+ if msvc_version == "latest":
363
+ scons_logger.info(
364
+ "MSVC version resolved to %s." % getMsvcVersionString(env)
365
+ )
366
+ # Requested a specific MSVC version, check if that worked.
367
+ elif msvc_version != getMsvcVersionString(env):
368
+ scons_logger.info(
369
+ "Failed to find requested MSVC version ('%s' != '%s')."
370
+ % (msvc_version, getMsvcVersionString(env))
371
+ )
372
+
373
+ # This will trigger error exit in branch below.
374
+ compiler_path = None
375
+ env["CC"] = None
376
+
377
+ # For Python3.11
378
+ if compiler_path is not None:
379
+ the_cc_name = os.path.basename(compiler_path)
380
+
381
+ # The MSVC can only be used with an Windows SDK installed, and for 3.11 we need it
382
+ # to be a least a minimum version.
383
+ if (
384
+ # This is actually OK to use like this, pylint: disable=bad-chained-comparison
385
+ not isGccName(the_cc_name)
386
+ and None is not env.python_version >= (3, 11)
387
+ and getMsvcVersion(env) < _python311_min_msvc_version
388
+ ):
389
+ scons_logger.info(
390
+ """\
391
+ For Python version %s MSVC %s or later is required, not %s which is too old."""
392
+ % (
393
+ ".".join(str(d) for d in env.python_version),
394
+ ".".join(str(d) for d in _python311_min_msvc_version),
395
+ getMsvcVersionString(env),
396
+ )
397
+ )
398
+
399
+ # This will trigger error exit in branch below.
400
+ compiler_path = None
401
+ env["CC"] = None
402
+
403
+ if compiler_path is not None:
404
+ the_cc_name = os.path.basename(compiler_path)
405
+
406
+ if isGccName(the_cc_name):
407
+ if "force-accept-windows-gcc" not in env.experimental_flags:
408
+ scons_logger.info(
409
+ "Non downloaded winlibs-gcc '%s' is being ignored, Nuitka is very dependent on the precise one."
410
+ % (compiler_path,)
411
+ )
412
+
413
+ # This also will trigger using it to use our own gcc in branch below.
414
+ compiler_path = None
415
+ env["CC"] = None
416
+
417
+ if compiler_path is None and msvc_version is None:
418
+ scons_details_logger.info(
419
+ "No usable C compiler, attempt fallback to winlibs gcc or clang."
420
+ )
421
+
422
+ # This will download "gcc.exe" (and "clang.exe") when all others have been
423
+ # rejected and MSVC is not enforced.
424
+ compiler_path = getCachedDownloadedMinGW64(
425
+ target_arch=target_arch,
426
+ assume_yes_for_downloads=assume_yes_for_downloads,
427
+ download_ok=download_ok,
428
+ )
429
+
430
+ if compiler_path is not None:
431
+ addToPATH(env, os.path.dirname(compiler_path), prefix=True)
432
+
433
+ env = createEnvironment(
434
+ mingw_mode=True,
435
+ msvc_version=None,
436
+ target_arch=target_arch,
437
+ experimental=env.experimental_flags,
438
+ no_deployment=env.no_deployment_flags,
439
+ debug_modes=env.debug_modes_flags,
440
+ )
441
+
442
+ if clang_mode:
443
+ env["CC"] = os.path.join(
444
+ os.path.dirname(compiler_path), "clang.exe"
445
+ )
446
+
447
+ if env["CC"] is None:
448
+ raiseNoCompilerFoundErrorExit()
449
+
450
+ return env
451
+
452
+
453
+ def decideConstantsBlobResourceMode(env):
454
+ if "NUITKA_RESOURCE_MODE" in os.environ:
455
+ resource_mode = os.environ["NUITKA_RESOURCE_MODE"]
456
+ reason = "user provided"
457
+ elif isWin32Windows():
458
+ resource_mode = "win_resource"
459
+ reason = "default for Windows"
460
+ elif isPosixWindows():
461
+ resource_mode = "linker"
462
+ reason = "default MSYS2 Posix"
463
+ elif isMacOS():
464
+ resource_mode = "mac_section"
465
+ reason = "default for macOS"
466
+ elif env.gcc_mode and env.clang_mode and env.clang_version >= (19,):
467
+ resource_mode = "c23_embed"
468
+ reason = "default for newer clang"
469
+ elif env.gcc_mode and not env.clang_mode and env.gcc_version >= (15,):
470
+ resource_mode = "c23_embed"
471
+ reason = "default for newer gcc"
472
+ elif isAIX():
473
+ resource_mode = "code"
474
+ reason = "AIX is not compatible with incbin"
475
+ elif env.lto_mode and env.gcc_mode and not env.clang_mode:
476
+ if env.module_mode:
477
+ resource_mode = "code"
478
+ else:
479
+ resource_mode = "linker"
480
+
481
+ reason = "default for lto gcc with '--lto' and bugs for incbin"
482
+ else:
483
+ # All is done already, this is for most platforms.
484
+ resource_mode = "incbin"
485
+ reason = "default"
486
+
487
+ return resource_mode, reason
488
+
489
+
490
+ def addConstantBlobFile(env, blob_filename, resource_desc, target_arch):
491
+ resource_mode, reason = resource_desc
492
+
493
+ assert blob_filename.endswith(".bin"), blob_filename
494
+
495
+ scons_details_logger.info(
496
+ "Using resource mode: '%s' (%s)." % (resource_mode, reason)
497
+ )
498
+
499
+ if resource_mode == "win_resource":
500
+ # On Windows constants can be accessed as a resource by Nuitka at run time afterwards.
501
+ env.Append(CPPDEFINES=["_NUITKA_CONSTANTS_FROM_RESOURCE"])
502
+ elif resource_mode == "mac_section":
503
+ env.Append(CPPDEFINES=["_NUITKA_CONSTANTS_FROM_MACOS_SECTION"])
504
+
505
+ addBinaryBlobSection(
506
+ env=env,
507
+ blob_filename=blob_filename,
508
+ section_name=os.path.basename(blob_filename)[:-4].lstrip("_"),
509
+ )
510
+ elif resource_mode == "incbin":
511
+ env.Append(CPPDEFINES=["_NUITKA_CONSTANTS_FROM_INCBIN"])
512
+
513
+ constants_generated_filename = os.path.join(
514
+ env.source_dir, "__constants_data.c"
515
+ )
516
+
517
+ putTextFileContents(
518
+ constants_generated_filename,
519
+ contents=r"""
520
+ #define INCBIN_PREFIX
521
+ #define INCBIN_STYLE INCBIN_STYLE_SNAKE
522
+ #define INCBIN_LOCAL
523
+ #ifdef _NUITKA_EXPERIMENTAL_WRITEABLE_CONSTANTS
524
+ #define INCBIN_OUTPUT_SECTION ".data"
525
+ #endif
526
+
527
+ #include "nuitka/incbin.h"
528
+
529
+ INCBIN(constant_bin, "%(blob_filename)s");
530
+
531
+ unsigned char const *getConstantsBlobData(void) {
532
+ return constant_bin_data;
533
+ }
534
+ """
535
+ % {"blob_filename": blob_filename},
536
+ )
537
+
538
+ elif resource_mode == "linker":
539
+ # Indicate "linker" resource mode.
540
+ env.Append(CPPDEFINES=["_NUITKA_CONSTANTS_FROM_LINKER"])
541
+
542
+ # For MinGW the symbol name to be used is more low level.
543
+ constant_bin_link_name = "constant_bin_data"
544
+ if env.mingw_mode:
545
+ constant_bin_link_name = "_" + constant_bin_link_name
546
+
547
+ env.Append(
548
+ LINKFLAGS=[
549
+ "-Wl,-b",
550
+ "-Wl,binary",
551
+ "-Wl,%s" % blob_filename,
552
+ "-Wl,-b",
553
+ "-Wl,%s"
554
+ % getLinkerArch(
555
+ target_arch=target_arch,
556
+ mingw_mode=env.mingw_mode or isPosixWindows(),
557
+ ),
558
+ "-Wl,-defsym",
559
+ "-Wl,%s=_binary_%s___constants_bin_start"
560
+ % (
561
+ constant_bin_link_name,
562
+ "".join(re.sub("[^a-zA-Z0-9_]", "_", c) for c in env.source_dir),
563
+ ),
564
+ ]
565
+ )
566
+ elif resource_mode in ("code", "c23_embed"):
567
+ # Indicate "code" resource mode.
568
+ env.Append(CPPDEFINES=["_NUITKA_CONSTANTS_FROM_CODE"])
569
+
570
+ constants_generated_filename = os.path.join(
571
+ env.source_dir, "__constants_data.c"
572
+ )
573
+
574
+ def writeConstantsDataSource():
575
+ with openTextFile(constants_generated_filename, "w") as output:
576
+ if not env.c11_mode:
577
+ output.write('extern "C" {')
578
+
579
+ output.write(
580
+ """
581
+ // Constant data for the program.
582
+ #ifdef __cplusplus
583
+ extern "C"
584
+ #endif
585
+ #if !defined(_NUITKA_EXPERIMENTAL_WRITEABLE_CONSTANTS)
586
+ const
587
+ #endif
588
+ unsigned char constant_bin_data[] =\n{\n
589
+ """
590
+ )
591
+
592
+ if resource_mode == "code":
593
+ with open(blob_filename, "rb") as f:
594
+ content = f.read()
595
+ for count, stream_byte in enumerate(content):
596
+ if count % 16 == 0:
597
+ if count > 0:
598
+ output.write("\n")
599
+
600
+ output.write(" ")
601
+
602
+ if str is bytes:
603
+ stream_byte = ord(stream_byte)
604
+
605
+ output.write(" 0x%02x," % stream_byte)
606
+ else:
607
+ output.write('#embed "%s"\n' % blob_filename)
608
+
609
+ output.write("\n};\n")
610
+
611
+ if not env.c11_mode:
612
+ output.write("}")
613
+
614
+ writeConstantsDataSource()
615
+ else:
616
+ scons_logger.sysexit(
617
+ "Error, illegal resource mode '%s' specified" % resource_mode
618
+ )
619
+
620
+
621
+ def enableWindowsStackSize(env, target_arch):
622
+ # Stack size 4MB or 8MB, we might need more than the default 1MB.
623
+ if target_arch == "x86_64":
624
+ stack_size = 1024 * 1204 * 8
625
+ else:
626
+ stack_size = 1024 * 1204 * 4
627
+
628
+ if env.msvc_mode:
629
+ env.Append(LINKFLAGS=["/STACK:%d" % stack_size])
630
+
631
+ if env.mingw_mode:
632
+ env.Append(LINKFLAGS=["-Wl,--stack,%d" % stack_size])
633
+
634
+
635
+ def setupCCompiler(env, lto_mode, pgo_mode, job_count, onefile_compile):
636
+ # This is driven by many branches on purpose and has a lot of things
637
+ # to deal with for LTO checks and flags, pylint: disable=too-many-branches,too-many-statements
638
+
639
+ # Enable LTO for compiler.
640
+ _enableLtoSettings(
641
+ env=env,
642
+ lto_mode=lto_mode,
643
+ pgo_mode=pgo_mode,
644
+ job_count=job_count,
645
+ )
646
+
647
+ _enableC11Settings(env)
648
+
649
+ if env.gcc_mode:
650
+ # Support for gcc and clang, restricting visibility as much as possible.
651
+ env.Append(CCFLAGS=["-fvisibility=hidden"])
652
+
653
+ if not env.c11_mode:
654
+ env.Append(CXXFLAGS=["-fvisibility-inlines-hidden"])
655
+
656
+ if isWin32Windows() and hasattr(env, "source_dir"):
657
+ # On Windows, exporting to DLL need to be controlled.
658
+ env.Append(LINKFLAGS=["-Wl,--exclude-all-symbols"])
659
+
660
+ # Make sure we handle import library on our own and put it into the
661
+ # build directory.
662
+ env.Append(
663
+ LINKFLAGS=[
664
+ "-Wl,--out-implib,%s" % os.path.join(env.source_dir, "import.lib")
665
+ ]
666
+ )
667
+
668
+ # Make it clear how to handle integer overflows, namely by wrapping around
669
+ # to negative values.
670
+ env.Append(CCFLAGS=["-fwrapv"])
671
+
672
+ if not env.low_memory:
673
+ # Avoid IO for compilation as much as possible, this should make the
674
+ # compilation more memory hungry, but also faster.
675
+ env.Append(CCFLAGS="-pipe")
676
+
677
+ # gcc compiler cf_protection option
678
+ if env.cf_protection != "auto":
679
+ env.Append(CCFLAGS=["-fcf-protection=%s" % env.cf_protection])
680
+
681
+ # Support for clang.
682
+ if "clang" in env.the_cc_name:
683
+ env.Append(CCFLAGS=["-w"])
684
+ env.Append(CPPDEFINES=["_XOPEN_SOURCE"])
685
+
686
+ # Don't export anything by default, this should create smaller executables.
687
+ env.Append(CCFLAGS=["-fvisibility=hidden", "-fvisibility-inlines-hidden"])
688
+
689
+ if (
690
+ env.debug_mode
691
+ and "debug_c_warnings" in env.debug_modes_flags
692
+ and not env.debugger_mode
693
+ ):
694
+ # Allow gcc/clang/MSVC to point out all kinds of inconsistency to us by
695
+ # raising an error.
696
+ if env.gcc_mode:
697
+ env.Append(
698
+ CCFLAGS=[
699
+ "-Wall",
700
+ "-Werror", # spell-checker: ignore Werror
701
+ ]
702
+ )
703
+
704
+ if env.clang_mode or env.gcc_version >= (4, 6):
705
+ env.Append(CCFLAGS=["-Wunused-but-set-variable"])
706
+
707
+ if env.msvc_mode:
708
+ env.Append(CCFLAGS=["/WX"])
709
+ else:
710
+ if env.gcc_mode:
711
+ if env.clang_mode or env.gcc_version >= (4, 6):
712
+ env.Append(CCFLAGS=["-Wno-unused-but-set-variable"])
713
+
714
+ # Support for macOS standalone to run on older OS versions.
715
+ if isMacOS():
716
+ setEnvironmentVariable(env, "MACOSX_DEPLOYMENT_TARGET", env.macos_min_version)
717
+
718
+ target_flag = "--target=%s-apple-macos%s" % (
719
+ env.macos_target_arch,
720
+ env.macos_min_version,
721
+ )
722
+
723
+ env.Append(CCFLAGS=[target_flag])
724
+ env.Append(LINKFLAGS=[target_flag])
725
+
726
+ # The MinGW64 and ClangCL do not default for API level properly, so
727
+ # help it.
728
+ env.Append(CPPDEFINES=["_WIN32_WINNT=0x0601"])
729
+
730
+ # Unicode entry points for programs.
731
+ if env.mingw_mode:
732
+ env.Append(LINKFLAGS=["-municode"])
733
+
734
+ # Detect the gcc version
735
+ if env.gcc_version is None and env.gcc_mode and not env.clang_mode:
736
+ env.gcc_version = myDetectVersion(env, env.the_compiler)
737
+
738
+ # Older g++ complains about aliasing with Py_True and Py_False, but we don't
739
+ # care.
740
+ if env.gcc_mode and not env.clang_mode and env.gcc_version < (4, 5):
741
+ env.Append(CCFLAGS=["-fno-strict-aliasing"])
742
+
743
+ # For gcc 4.6 or higher, there this new interesting function.
744
+ if env.gcc_mode and not env.clang_mode and env.gcc_version >= (4, 6):
745
+ env.Append(CCFLAGS=["-fpartial-inlining"])
746
+
747
+ # Save some memory for gcc by not tracing macro code locations at all.
748
+ if (
749
+ not env.debug_mode
750
+ and env.gcc_mode
751
+ and not env.clang_mode
752
+ and env.gcc_version >= (5,)
753
+ ):
754
+ env.Append(CCFLAGS=["-ftrack-macro-expansion=0"])
755
+
756
+ # We don't care about deprecations.
757
+ if env.gcc_mode and not env.clang_mode:
758
+ env.Append(CCFLAGS=["-Wno-deprecated-declarations"])
759
+
760
+ # The var-tracking does not scale, disable it. Should we really need it, we
761
+ # can enable it. TODO: Does this cause a performance loss?
762
+ if env.gcc_mode and not env.clang_mode:
763
+ env.Append(CCFLAGS=["-fno-var-tracking"])
764
+
765
+ # For large files, these can issue warnings about disabling
766
+ # itself, while we do not need it really.
767
+ if env.gcc_mode and not env.clang_mode and env.gcc_version >= (6,):
768
+ env.Append(CCFLAGS=["-Wno-misleading-indentation"])
769
+
770
+ # Disable output of notes, e.g. on struct alignment layout changes for
771
+ # some arches, we don't care.
772
+ if env.gcc_mode and not env.clang_mode:
773
+ env.Append(CCFLAGS=["-fcompare-debug-second"])
774
+
775
+ # Prevent using LTO when told not to use it, causes errors with some
776
+ # static link libraries.
777
+ if (
778
+ env.gcc_mode
779
+ and not env.clang_mode
780
+ and env.static_libpython
781
+ and not env.lto_mode
782
+ ):
783
+ env.Append(CCFLAGS=["-fno-lto"])
784
+ env.Append(LINKFLAGS=["-fno-lto"])
785
+
786
+ # Set optimization level for gcc and clang in LTO mode
787
+ if env.gcc_mode and env.lto_mode:
788
+ if env.debug_mode:
789
+ env.Append(LINKFLAGS=["-Og"])
790
+ else:
791
+ # For LTO with static libpython combined, there are crashes with Python core
792
+ # being inlined, so we must refrain from that. On Windows there is no such
793
+ # thing, and Nuitka-Python is not affected.
794
+ env.Append(
795
+ LINKFLAGS=[
796
+ (
797
+ "-O3"
798
+ if env.nuitka_python
799
+ or os.name == "nt"
800
+ or not env.static_libpython
801
+ else "-O2"
802
+ )
803
+ ]
804
+ )
805
+
806
+ # When debugging, optimize less than when optimizing, when not remove
807
+ # assertions.
808
+ if env.debug_mode:
809
+ if env.clang_mode or (env.gcc_mode and env.gcc_version >= (4, 8)):
810
+ env.Append(CCFLAGS=["-Og"])
811
+ elif env.gcc_mode:
812
+ env.Append(CCFLAGS=["-O1"])
813
+ elif env.msvc_mode:
814
+ env.Append(CCFLAGS=["-O2"])
815
+ else:
816
+ if env.gcc_mode:
817
+ env.Append(
818
+ CCFLAGS=[
819
+ (
820
+ "-O3"
821
+ if env.nuitka_python
822
+ or os.name == "nt"
823
+ or not env.static_libpython
824
+ else "-O2"
825
+ )
826
+ ]
827
+ )
828
+ elif env.msvc_mode:
829
+ env.Append(
830
+ CCFLAGS=[
831
+ "/Ox", # Enable most speed optimization
832
+ "/GF", # Eliminate duplicate strings.
833
+ "/Gy", # Function level object storage, to allow removing unused ones
834
+ ]
835
+ )
836
+
837
+ env.Append(CPPDEFINES=["__NUITKA_NO_ASSERT__"])
838
+
839
+ _enableDebugSystemSettings(env, job_count=job_count)
840
+
841
+ if env.gcc_mode and not env.noelf_mode:
842
+ env.Append(LINKFLAGS=["-z", "noexecstack"])
843
+
844
+ # For MinGW64 we need to tell the subsystem to target as well as to
845
+ # automatically import everything used.
846
+ if env.mingw_mode:
847
+ if not env.clang_mode:
848
+ env.Append(LINKFLAGS=["-Wl,--enable-auto-import"])
849
+
850
+ # Even if console is forced, for Win32 it means to specify Windows
851
+ # subsystem, we can still attach or create.
852
+ if env.console_mode in ("attach", "disable"):
853
+ if env.mingw_mode:
854
+ env.Append(LINKFLAGS=["-Wl,--subsystem,windows"])
855
+ env.Append(CPPDEFINES=["_NUITKA_WINMAIN_ENTRY_POINT"])
856
+ elif env.msvc_mode:
857
+ env.Append(LINKFLAGS=["/SUBSYSTEM:windows"])
858
+ env.Append(CPPDEFINES=["_NUITKA_WINMAIN_ENTRY_POINT"])
859
+
860
+ if env.console_mode == "attach" and os.name == "nt":
861
+ env.Append(CPPDEFINES=["_NUITKA_ATTACH_CONSOLE_WINDOW"])
862
+
863
+ if env.console_mode == "hide" and os.name == "nt":
864
+ env.Append(CPPDEFINES=["_NUITKA_HIDE_CONSOLE_WINDOW"])
865
+ env.Append(LIBS=["User32"])
866
+
867
+ # Avoid dependency on MinGW libraries, spell-checker: ignore libgcc
868
+ if env.mingw_mode and not env.clang_mode:
869
+ env.Append(LINKFLAGS=["-static-libgcc"])
870
+
871
+ # MinGW64 for 64 bits needs this due to CPython bugs.
872
+ if env.mingw_mode and env.target_arch == "x86_64" and env.python_version < (3, 12):
873
+ env.Append(CPPDEFINES=["MS_WIN64"])
874
+
875
+ if env.msvc_mode:
876
+ # For shell API usage to lookup app folders we need this.
877
+ env.Append(LIBS=["Shell32", "Advapi32"])
878
+
879
+ # Make sure to find MSVC "link" in the right spot and to not use the
880
+ # "link" of e.g. Git.
881
+ addToPATH(
882
+ env=env,
883
+ dirname=os.path.dirname(getExecutablePath(env.the_compiler, env=env)),
884
+ prefix=True,
885
+ )
886
+
887
+ # Since Fedora 36, the system Python will not link otherwise.
888
+ if isFedoraBasedLinux():
889
+ env.Append(CCFLAGS=["-fPIC"])
890
+
891
+ # We use zlib for crc32 functionality
892
+ zlib_inline_copy_dir = os.path.join(env.nuitka_src, "inline_copy", "zlib")
893
+ if os.path.exists(os.path.join(zlib_inline_copy_dir, "crc32.c")):
894
+ env.Append(
895
+ CPPPATH=[
896
+ zlib_inline_copy_dir,
897
+ ],
898
+ )
899
+ else:
900
+ # TODO: Should only happen for official Debian packages, and there we
901
+ # can use the zlib static linking maybe, but for onefile it's not easy
902
+ # to get it, so just use slow checksum for now.
903
+ if onefile_compile:
904
+ env.Append(CPPDEFINES=["_NUITKA_USE_OWN_CRC32"])
905
+ else:
906
+ env.Append(CPPDEFINES=["_NUITKA_USE_SYSTEM_CRC32"])
907
+ env.Append(LIBS="z")
908
+
909
+
910
+ def _enablePgoSettings(env):
911
+ if env.pgo_mode == "no":
912
+ env.progressbar_name = "Backend"
913
+ elif env.pgo_mode == "python":
914
+ env.progressbar_name = "Python Profile"
915
+ env.Append(CPPDEFINES=["_NUITKA_PGO_PYTHON"])
916
+ elif env.pgo_mode == "generate":
917
+ env.progressbar_name = "Profile"
918
+ env.Append(CPPDEFINES=["_NUITKA_PGO_GENERATE"])
919
+
920
+ if env.gcc_mode:
921
+ env.Append(CCFLAGS=["-fprofile-generate"])
922
+ env.Append(LINKFLAGS=["-fprofile-generate"])
923
+ elif env.msvc_mode:
924
+ env.Append(CCFLAGS=["/GL"])
925
+ env.Append(LINKFLAGS=["/GENPROFILE:EXACT"])
926
+ if not env.clangcl_mode:
927
+ env.Append(LINKFLAGS=["/LTCG"])
928
+
929
+ else:
930
+ scons_logger.sysexit(
931
+ "Error, PGO not supported for '%s' compiler." % env.the_cc_name
932
+ )
933
+ elif env.pgo_mode == "use":
934
+ env.progressbar_name = "Backend"
935
+
936
+ env.Append(CPPDEFINES=["_NUITKA_PGO_USE"])
937
+
938
+ if env.gcc_mode:
939
+ env.Append(CCFLAGS=["-fprofile-use"])
940
+ env.Append(LINKFLAGS=["-fprofile-use"])
941
+ elif env.msvc_mode:
942
+ env.Append(CCFLAGS=["/GL"])
943
+ env.Append(
944
+ LINKFLAGS=[
945
+ "/USEPROFILE",
946
+ ]
947
+ )
948
+ else:
949
+ scons_logger.sysexit(
950
+ "Error, PGO not supported for '%s' compiler." % env.the_cc_name
951
+ )
952
+ else:
953
+ assert False, env.pgo_mode
954
+
955
+
956
+ def _enableDebugSystemSettings(env, job_count):
957
+ if env.unstripped_mode:
958
+ # Use debug format, so we get good tracebacks from it.
959
+ if env.gcc_mode:
960
+ env.Append(LINKFLAGS=["-g"])
961
+ env.Append(CCFLAGS=["-g"])
962
+
963
+ if not env.clang_mode:
964
+ env.Append(CCFLAGS=["-feliminate-unused-debug-types"])
965
+ elif env.msvc_mode:
966
+ env.Append(CCFLAGS=["/Z7"])
967
+
968
+ # Higher MSVC versions need this for parallel compilation
969
+ if job_count > 1 and getMsvcVersion(env) >= (11,):
970
+ env.Append(CCFLAGS=["/FS"])
971
+
972
+ env.Append(LINKFLAGS=["/DEBUG"])
973
+ else:
974
+ if env.gcc_mode:
975
+ if isMacOS():
976
+ env.Append(LINKFLAGS=["-Wno-deprecated-declarations"])
977
+ elif not env.clang_mode:
978
+ env.Append(LINKFLAGS=["-s"])
979
+
980
+
981
+ def switchFromGccToGpp(env):
982
+ if not env.gcc_mode or env.clang_mode:
983
+ env.gcc_version = None
984
+ return
985
+
986
+ the_compiler = getExecutablePath(env.the_compiler, env)
987
+
988
+ if the_compiler is None:
989
+ return
990
+
991
+ env.gcc_version = myDetectVersion(env, the_compiler)
992
+
993
+ if env.gcc_version is None:
994
+ scons_logger.sysexit(
995
+ """\
996
+ Error, failed to detect gcc version of backend compiler '%s'.
997
+ """
998
+ % env.the_compiler
999
+ )
1000
+
1001
+ if "++" in env.the_cc_name:
1002
+ scons_logger.sysexit(
1003
+ """\
1004
+ Error, compiler %s is apparently a C++ compiler, specify a C compiler instead.
1005
+ """
1006
+ % env.the_cc_name
1007
+ )
1008
+
1009
+ # Enforce the minimum version, selecting a potentially existing g++-4.5
1010
+ # binary if it's not high enough. This is esp. useful under Debian which
1011
+ # allows all compiler to exist next to each other and where g++ might not be
1012
+ # good enough, but g++-4.5 would be.
1013
+ if env.gcc_version < (4, 4):
1014
+ scons_logger.sysexit(
1015
+ """\
1016
+ The gcc compiler %s (version %s) doesn't have the sufficient \
1017
+ version (>= 4.4)."""
1018
+ % (env.the_compiler, env.gcc_version)
1019
+ )
1020
+
1021
+ # CondaCC or newer.
1022
+ if env.mingw_mode and env.gcc_version < (5, 3):
1023
+ scons_logger.sysexit(
1024
+ """\
1025
+ The MinGW64 compiler %s (version %s) doesn't have the sufficient \
1026
+ version (>= 5.3)."""
1027
+ % (env.the_compiler, env.gcc_version)
1028
+ )
1029
+
1030
+ if env.gcc_version < (5,):
1031
+ if env.python_version < (3, 11):
1032
+ scons_logger.info(
1033
+ "The provided gcc is too old, switching to its g++ instead.",
1034
+ mnemonic="too-old-gcc",
1035
+ )
1036
+
1037
+ # Switch to g++ from gcc then if possible, when C11 mode is false.
1038
+ the_gpp_compiler = os.path.join(
1039
+ os.path.dirname(env.the_compiler),
1040
+ os.path.basename(env.the_compiler).replace("gcc", "g++"),
1041
+ )
1042
+
1043
+ if getExecutablePath(the_gpp_compiler, env=env):
1044
+ env.the_compiler = the_gpp_compiler
1045
+ env.the_cc_name = env.the_cc_name.replace("gcc", "g++")
1046
+ else:
1047
+ scons_logger.sysexit(
1048
+ "Error, your gcc is too old for C11 support, and no related g++ to workaround that is found."
1049
+ )
1050
+ else:
1051
+ scons_logger.sysexit(
1052
+ "Error, your gcc is too old for C11 support, install a newer one.",
1053
+ mnemonic="too-old-gcc",
1054
+ )
1055
+
1056
+
1057
+ def reportCCompiler(env, context, output_func):
1058
+ cc_output = env.the_cc_name
1059
+
1060
+ if env.the_cc_name == "cl":
1061
+ cc_output = "%s %s" % (env.the_cc_name, getMsvcVersionString(env))
1062
+ elif isGccName(env.the_cc_name):
1063
+ if env.gcc_version is None:
1064
+ env.gcc_version = myDetectVersion(env, env.the_compiler)
1065
+
1066
+ cc_output = "%s %s" % (
1067
+ env.the_cc_name,
1068
+ ".".join(str(d) for d in env.gcc_version),
1069
+ )
1070
+ elif isClangName(env.the_cc_name):
1071
+ env.clang_version = myDetectVersion(env, env.the_cc_name)
1072
+
1073
+ cc_output = "%s %s" % (
1074
+ env.the_cc_name,
1075
+ (
1076
+ ".".join(str(d) for d in env.clang_version)
1077
+ if env.clang_version is not None
1078
+ else "not found"
1079
+ ),
1080
+ )
1081
+ else:
1082
+ cc_output = env.the_cc_name
1083
+
1084
+ output_func(
1085
+ "%s C compiler: %s (%s)."
1086
+ % (context, getReportPath(env.the_compiler), cc_output)
1087
+ )
1088
+
1089
+
1090
+ def importEnvironmentVariableSettings(env):
1091
+ """Import typical environment variables that compilation should use."""
1092
+ # spell-checker: ignore cppflags,cflags,ccflags,cxxflags,ldflags
1093
+
1094
+ # Outside compiler settings are respected.
1095
+ if "CPPFLAGS" in os.environ:
1096
+ scons_logger.info(
1097
+ "Scons: Inherited CPPFLAGS='%s' variable." % os.environ["CPPFLAGS"]
1098
+ )
1099
+ env.Append(CPPFLAGS=os.environ["CPPFLAGS"].split())
1100
+ if "CFLAGS" in os.environ:
1101
+ scons_logger.info("Inherited CFLAGS='%s' variable." % os.environ["CFLAGS"])
1102
+ env.Append(CCFLAGS=os.environ["CFLAGS"].split())
1103
+ if "CCFLAGS" in os.environ:
1104
+ scons_logger.info("Inherited CCFLAGS='%s' variable." % os.environ["CCFLAGS"])
1105
+ env.Append(CCFLAGS=os.environ["CCFLAGS"].split())
1106
+ if "CXXFLAGS" in os.environ:
1107
+ scons_logger.info(
1108
+ "Scons: Inherited CXXFLAGS='%s' variable." % os.environ["CXXFLAGS"]
1109
+ )
1110
+ env.Append(CXXFLAGS=os.environ["CXXFLAGS"].split())
1111
+
1112
+ # Outside linker flags are respected.
1113
+ if "LDFLAGS" in os.environ:
1114
+ scons_logger.info(
1115
+ "Scons: Inherited LDFLAGS='%s' variable." % os.environ["LDFLAGS"]
1116
+ )
1117
+ env.Append(LINKFLAGS=os.environ["LDFLAGS"].split())
1118
+
1119
+
1120
+ # Part of "Nuitka", an optimizing Python compiler that is compatible and
1121
+ # integrates with CPython, but also works on its own.
1122
+ #
1123
+ # Licensed under the Apache License, Version 2.0 (the "License");
1124
+ # you may not use this file except in compliance with the License.
1125
+ # You may obtain a copy of the License at
1126
+ #
1127
+ # http://www.apache.org/licenses/LICENSE-2.0
1128
+ #
1129
+ # Unless required by applicable law or agreed to in writing, software
1130
+ # distributed under the License is distributed on an "AS IS" BASIS,
1131
+ # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
1132
+ # See the License for the specific language governing permissions and
1133
+ # limitations under the License.