frida 16.2.1 → 16.2.3

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.
Files changed (386) hide show
  1. package/BSDmakefile +6 -0
  2. package/Makefile +16 -0
  3. package/README.md +14 -11
  4. package/configure +18 -0
  5. package/configure.bat +22 -0
  6. package/dist/native.js +0 -8
  7. package/lib/application.ts +98 -0
  8. package/lib/authentication.ts +3 -0
  9. package/lib/build.py +50 -0
  10. package/lib/bus.ts +30 -0
  11. package/lib/cancellable.ts +33 -0
  12. package/lib/child.ts +15 -0
  13. package/lib/crash.ts +11 -0
  14. package/lib/device.ts +329 -0
  15. package/lib/device_manager.ts +69 -0
  16. package/lib/endpoint_parameters.ts +56 -0
  17. package/lib/icon.ts +15 -0
  18. package/lib/index.ts +311 -0
  19. package/lib/iostream.ts +78 -0
  20. package/lib/meson.build +53 -0
  21. package/lib/native.ts +9 -0
  22. package/lib/portal_membership.ts +10 -0
  23. package/lib/portal_service.ts +105 -0
  24. package/lib/process.ts +57 -0
  25. package/lib/relay.ts +44 -0
  26. package/lib/script.ts +352 -0
  27. package/lib/session.ts +113 -0
  28. package/lib/signals.ts +45 -0
  29. package/lib/socket_address.ts +35 -0
  30. package/lib/spawn.ts +4 -0
  31. package/lib/system_parameters.ts +78 -0
  32. package/make.bat +23 -0
  33. package/meson.build +160 -0
  34. package/meson.options +11 -0
  35. package/package.json +27 -6
  36. package/releng/deps.py +1133 -0
  37. package/releng/deps.toml +391 -0
  38. package/releng/devkit-assets/frida-core-example-unix.c +188 -0
  39. package/releng/devkit-assets/frida-core-example-windows.c +197 -0
  40. package/releng/devkit-assets/frida-core-example.sln +28 -0
  41. package/releng/devkit-assets/frida-core-example.vcxproj +157 -0
  42. package/releng/devkit-assets/frida-core-example.vcxproj.filters +27 -0
  43. package/releng/devkit-assets/frida-gum-example-unix.c +122 -0
  44. package/releng/devkit-assets/frida-gum-example-windows.c +132 -0
  45. package/releng/devkit-assets/frida-gum-example.sln +28 -0
  46. package/releng/devkit-assets/frida-gum-example.vcxproj +157 -0
  47. package/releng/devkit-assets/frida-gum-example.vcxproj.filters +27 -0
  48. package/releng/devkit-assets/frida-gumjs-example-unix.c +84 -0
  49. package/releng/devkit-assets/frida-gumjs-example-windows.c +91 -0
  50. package/releng/devkit-assets/frida-gumjs-example.sln +28 -0
  51. package/releng/devkit-assets/frida-gumjs-example.vcxproj +157 -0
  52. package/releng/devkit-assets/frida-gumjs-example.vcxproj.filters +27 -0
  53. package/releng/devkit.py +535 -0
  54. package/releng/env.py +420 -0
  55. package/releng/env_android.py +150 -0
  56. package/releng/env_apple.py +176 -0
  57. package/releng/env_generic.py +373 -0
  58. package/releng/frida_version.py +69 -0
  59. package/releng/machine_file.py +44 -0
  60. package/releng/machine_spec.py +290 -0
  61. package/releng/meson/meson.py +27 -0
  62. package/releng/meson/mesonbuild/__init__.py +0 -0
  63. package/releng/meson/mesonbuild/_pathlib.py +63 -0
  64. package/releng/meson/mesonbuild/_typing.py +69 -0
  65. package/releng/meson/mesonbuild/arglist.py +321 -0
  66. package/releng/meson/mesonbuild/ast/__init__.py +23 -0
  67. package/releng/meson/mesonbuild/ast/interpreter.py +441 -0
  68. package/releng/meson/mesonbuild/ast/introspection.py +374 -0
  69. package/releng/meson/mesonbuild/ast/postprocess.py +109 -0
  70. package/releng/meson/mesonbuild/ast/printer.py +620 -0
  71. package/releng/meson/mesonbuild/ast/visitor.py +161 -0
  72. package/releng/meson/mesonbuild/backend/__init__.py +0 -0
  73. package/releng/meson/mesonbuild/backend/backends.py +2047 -0
  74. package/releng/meson/mesonbuild/backend/ninjabackend.py +3808 -0
  75. package/releng/meson/mesonbuild/backend/nonebackend.py +26 -0
  76. package/releng/meson/mesonbuild/backend/vs2010backend.py +2078 -0
  77. package/releng/meson/mesonbuild/backend/vs2012backend.py +35 -0
  78. package/releng/meson/mesonbuild/backend/vs2013backend.py +34 -0
  79. package/releng/meson/mesonbuild/backend/vs2015backend.py +35 -0
  80. package/releng/meson/mesonbuild/backend/vs2017backend.py +59 -0
  81. package/releng/meson/mesonbuild/backend/vs2019backend.py +54 -0
  82. package/releng/meson/mesonbuild/backend/vs2022backend.py +54 -0
  83. package/releng/meson/mesonbuild/backend/xcodebackend.py +1781 -0
  84. package/releng/meson/mesonbuild/build.py +3249 -0
  85. package/releng/meson/mesonbuild/cargo/__init__.py +5 -0
  86. package/releng/meson/mesonbuild/cargo/builder.py +238 -0
  87. package/releng/meson/mesonbuild/cargo/cfg.py +274 -0
  88. package/releng/meson/mesonbuild/cargo/interpreter.py +733 -0
  89. package/releng/meson/mesonbuild/cargo/manifest.py +227 -0
  90. package/releng/meson/mesonbuild/cargo/version.py +95 -0
  91. package/releng/meson/mesonbuild/cmake/__init__.py +28 -0
  92. package/releng/meson/mesonbuild/cmake/common.py +331 -0
  93. package/releng/meson/mesonbuild/cmake/data/__init__.py +0 -0
  94. package/releng/meson/mesonbuild/cmake/data/preload.cmake +82 -0
  95. package/releng/meson/mesonbuild/cmake/executor.py +241 -0
  96. package/releng/meson/mesonbuild/cmake/fileapi.py +324 -0
  97. package/releng/meson/mesonbuild/cmake/generator.py +186 -0
  98. package/releng/meson/mesonbuild/cmake/interpreter.py +1267 -0
  99. package/releng/meson/mesonbuild/cmake/toolchain.py +248 -0
  100. package/releng/meson/mesonbuild/cmake/traceparser.py +814 -0
  101. package/releng/meson/mesonbuild/cmake/tracetargets.py +161 -0
  102. package/releng/meson/mesonbuild/compilers/__init__.py +86 -0
  103. package/releng/meson/mesonbuild/compilers/asm.py +307 -0
  104. package/releng/meson/mesonbuild/compilers/c.py +788 -0
  105. package/releng/meson/mesonbuild/compilers/c_function_attributes.py +143 -0
  106. package/releng/meson/mesonbuild/compilers/compilers.py +1388 -0
  107. package/releng/meson/mesonbuild/compilers/cpp.py +1035 -0
  108. package/releng/meson/mesonbuild/compilers/cs.py +136 -0
  109. package/releng/meson/mesonbuild/compilers/cuda.py +806 -0
  110. package/releng/meson/mesonbuild/compilers/cython.py +91 -0
  111. package/releng/meson/mesonbuild/compilers/d.py +861 -0
  112. package/releng/meson/mesonbuild/compilers/detect.py +1396 -0
  113. package/releng/meson/mesonbuild/compilers/fortran.py +523 -0
  114. package/releng/meson/mesonbuild/compilers/java.py +113 -0
  115. package/releng/meson/mesonbuild/compilers/mixins/__init__.py +0 -0
  116. package/releng/meson/mesonbuild/compilers/mixins/arm.py +167 -0
  117. package/releng/meson/mesonbuild/compilers/mixins/ccrx.py +113 -0
  118. package/releng/meson/mesonbuild/compilers/mixins/clang.py +170 -0
  119. package/releng/meson/mesonbuild/compilers/mixins/clike.py +1330 -0
  120. package/releng/meson/mesonbuild/compilers/mixins/compcert.py +117 -0
  121. package/releng/meson/mesonbuild/compilers/mixins/elbrus.py +93 -0
  122. package/releng/meson/mesonbuild/compilers/mixins/emscripten.py +89 -0
  123. package/releng/meson/mesonbuild/compilers/mixins/gnu.py +629 -0
  124. package/releng/meson/mesonbuild/compilers/mixins/intel.py +167 -0
  125. package/releng/meson/mesonbuild/compilers/mixins/islinker.py +120 -0
  126. package/releng/meson/mesonbuild/compilers/mixins/metrowerks.py +279 -0
  127. package/releng/meson/mesonbuild/compilers/mixins/pgi.py +88 -0
  128. package/releng/meson/mesonbuild/compilers/mixins/ti.py +130 -0
  129. package/releng/meson/mesonbuild/compilers/mixins/visualstudio.py +458 -0
  130. package/releng/meson/mesonbuild/compilers/mixins/xc16.py +111 -0
  131. package/releng/meson/mesonbuild/compilers/objc.py +120 -0
  132. package/releng/meson/mesonbuild/compilers/objcpp.py +102 -0
  133. package/releng/meson/mesonbuild/compilers/rust.py +230 -0
  134. package/releng/meson/mesonbuild/compilers/swift.py +131 -0
  135. package/releng/meson/mesonbuild/compilers/vala.py +121 -0
  136. package/releng/meson/mesonbuild/coredata.py +1532 -0
  137. package/releng/meson/mesonbuild/dependencies/__init__.py +252 -0
  138. package/releng/meson/mesonbuild/dependencies/base.py +663 -0
  139. package/releng/meson/mesonbuild/dependencies/boost.py +1083 -0
  140. package/releng/meson/mesonbuild/dependencies/cmake.py +656 -0
  141. package/releng/meson/mesonbuild/dependencies/coarrays.py +80 -0
  142. package/releng/meson/mesonbuild/dependencies/configtool.py +163 -0
  143. package/releng/meson/mesonbuild/dependencies/cuda.py +295 -0
  144. package/releng/meson/mesonbuild/dependencies/data/CMakeLists.txt +102 -0
  145. package/releng/meson/mesonbuild/dependencies/data/CMakeListsLLVM.txt +204 -0
  146. package/releng/meson/mesonbuild/dependencies/data/CMakePathInfo.txt +31 -0
  147. package/releng/meson/mesonbuild/dependencies/data/__init__.py +0 -0
  148. package/releng/meson/mesonbuild/dependencies/detect.py +225 -0
  149. package/releng/meson/mesonbuild/dependencies/dev.py +707 -0
  150. package/releng/meson/mesonbuild/dependencies/dub.py +424 -0
  151. package/releng/meson/mesonbuild/dependencies/factory.py +146 -0
  152. package/releng/meson/mesonbuild/dependencies/framework.py +111 -0
  153. package/releng/meson/mesonbuild/dependencies/hdf5.py +168 -0
  154. package/releng/meson/mesonbuild/dependencies/misc.py +618 -0
  155. package/releng/meson/mesonbuild/dependencies/mpi.py +231 -0
  156. package/releng/meson/mesonbuild/dependencies/pkgconfig.py +570 -0
  157. package/releng/meson/mesonbuild/dependencies/platform.py +52 -0
  158. package/releng/meson/mesonbuild/dependencies/python.py +431 -0
  159. package/releng/meson/mesonbuild/dependencies/qt.py +484 -0
  160. package/releng/meson/mesonbuild/dependencies/scalapack.py +142 -0
  161. package/releng/meson/mesonbuild/dependencies/ui.py +281 -0
  162. package/releng/meson/mesonbuild/depfile.py +82 -0
  163. package/releng/meson/mesonbuild/envconfig.py +480 -0
  164. package/releng/meson/mesonbuild/environment.py +987 -0
  165. package/releng/meson/mesonbuild/interpreter/__init__.py +47 -0
  166. package/releng/meson/mesonbuild/interpreter/compiler.py +900 -0
  167. package/releng/meson/mesonbuild/interpreter/dependencyfallbacks.py +386 -0
  168. package/releng/meson/mesonbuild/interpreter/interpreter.py +3595 -0
  169. package/releng/meson/mesonbuild/interpreter/interpreterobjects.py +1096 -0
  170. package/releng/meson/mesonbuild/interpreter/kwargs.py +479 -0
  171. package/releng/meson/mesonbuild/interpreter/mesonmain.py +487 -0
  172. package/releng/meson/mesonbuild/interpreter/primitives/__init__.py +29 -0
  173. package/releng/meson/mesonbuild/interpreter/primitives/array.py +108 -0
  174. package/releng/meson/mesonbuild/interpreter/primitives/boolean.py +52 -0
  175. package/releng/meson/mesonbuild/interpreter/primitives/dict.py +88 -0
  176. package/releng/meson/mesonbuild/interpreter/primitives/integer.py +86 -0
  177. package/releng/meson/mesonbuild/interpreter/primitives/range.py +38 -0
  178. package/releng/meson/mesonbuild/interpreter/primitives/string.py +247 -0
  179. package/releng/meson/mesonbuild/interpreter/type_checking.py +853 -0
  180. package/releng/meson/mesonbuild/interpreterbase/__init__.py +126 -0
  181. package/releng/meson/mesonbuild/interpreterbase/_unholder.py +25 -0
  182. package/releng/meson/mesonbuild/interpreterbase/baseobjects.py +174 -0
  183. package/releng/meson/mesonbuild/interpreterbase/decorators.py +806 -0
  184. package/releng/meson/mesonbuild/interpreterbase/disabler.py +35 -0
  185. package/releng/meson/mesonbuild/interpreterbase/exceptions.py +22 -0
  186. package/releng/meson/mesonbuild/interpreterbase/helpers.py +67 -0
  187. package/releng/meson/mesonbuild/interpreterbase/interpreterbase.py +665 -0
  188. package/releng/meson/mesonbuild/interpreterbase/operator.py +32 -0
  189. package/releng/meson/mesonbuild/linkers/__init__.py +20 -0
  190. package/releng/meson/mesonbuild/linkers/base.py +39 -0
  191. package/releng/meson/mesonbuild/linkers/detect.py +229 -0
  192. package/releng/meson/mesonbuild/linkers/linkers.py +1614 -0
  193. package/releng/meson/mesonbuild/mcompile.py +380 -0
  194. package/releng/meson/mesonbuild/mconf.py +368 -0
  195. package/releng/meson/mesonbuild/mdevenv.py +234 -0
  196. package/releng/meson/mesonbuild/mdist.py +376 -0
  197. package/releng/meson/mesonbuild/mesondata.py +38 -0
  198. package/releng/meson/mesonbuild/mesonlib.py +23 -0
  199. package/releng/meson/mesonbuild/mesonmain.py +289 -0
  200. package/releng/meson/mesonbuild/minit.py +204 -0
  201. package/releng/meson/mesonbuild/minstall.py +864 -0
  202. package/releng/meson/mesonbuild/mintro.py +667 -0
  203. package/releng/meson/mesonbuild/mlog.py +542 -0
  204. package/releng/meson/mesonbuild/modules/__init__.py +270 -0
  205. package/releng/meson/mesonbuild/modules/cmake.py +442 -0
  206. package/releng/meson/mesonbuild/modules/cuda.py +377 -0
  207. package/releng/meson/mesonbuild/modules/dlang.py +117 -0
  208. package/releng/meson/mesonbuild/modules/external_project.py +306 -0
  209. package/releng/meson/mesonbuild/modules/fs.py +323 -0
  210. package/releng/meson/mesonbuild/modules/gnome.py +2215 -0
  211. package/releng/meson/mesonbuild/modules/hotdoc.py +487 -0
  212. package/releng/meson/mesonbuild/modules/i18n.py +405 -0
  213. package/releng/meson/mesonbuild/modules/icestorm.py +123 -0
  214. package/releng/meson/mesonbuild/modules/java.py +112 -0
  215. package/releng/meson/mesonbuild/modules/keyval.py +65 -0
  216. package/releng/meson/mesonbuild/modules/modtest.py +33 -0
  217. package/releng/meson/mesonbuild/modules/pkgconfig.py +744 -0
  218. package/releng/meson/mesonbuild/modules/python.py +556 -0
  219. package/releng/meson/mesonbuild/modules/python3.py +85 -0
  220. package/releng/meson/mesonbuild/modules/qt.py +621 -0
  221. package/releng/meson/mesonbuild/modules/qt4.py +23 -0
  222. package/releng/meson/mesonbuild/modules/qt5.py +23 -0
  223. package/releng/meson/mesonbuild/modules/qt6.py +22 -0
  224. package/releng/meson/mesonbuild/modules/rust.py +355 -0
  225. package/releng/meson/mesonbuild/modules/simd.py +114 -0
  226. package/releng/meson/mesonbuild/modules/sourceset.py +291 -0
  227. package/releng/meson/mesonbuild/modules/wayland.py +151 -0
  228. package/releng/meson/mesonbuild/modules/windows.py +207 -0
  229. package/releng/meson/mesonbuild/mparser.py +1114 -0
  230. package/releng/meson/mesonbuild/msetup.py +365 -0
  231. package/releng/meson/mesonbuild/msubprojects.py +764 -0
  232. package/releng/meson/mesonbuild/mtest.py +2201 -0
  233. package/releng/meson/mesonbuild/munstable_coredata.py +107 -0
  234. package/releng/meson/mesonbuild/optinterpreter.py +276 -0
  235. package/releng/meson/mesonbuild/programs.py +367 -0
  236. package/releng/meson/mesonbuild/rewriter.py +1075 -0
  237. package/releng/meson/mesonbuild/scripts/__init__.py +10 -0
  238. package/releng/meson/mesonbuild/scripts/clangformat.py +55 -0
  239. package/releng/meson/mesonbuild/scripts/clangtidy.py +30 -0
  240. package/releng/meson/mesonbuild/scripts/cleantrees.py +35 -0
  241. package/releng/meson/mesonbuild/scripts/cmake_run_ctgt.py +103 -0
  242. package/releng/meson/mesonbuild/scripts/cmd_or_ps.ps1 +17 -0
  243. package/releng/meson/mesonbuild/scripts/copy.py +19 -0
  244. package/releng/meson/mesonbuild/scripts/coverage.py +214 -0
  245. package/releng/meson/mesonbuild/scripts/delwithsuffix.py +27 -0
  246. package/releng/meson/mesonbuild/scripts/depfixer.py +495 -0
  247. package/releng/meson/mesonbuild/scripts/depscan.py +198 -0
  248. package/releng/meson/mesonbuild/scripts/dirchanger.py +20 -0
  249. package/releng/meson/mesonbuild/scripts/env2mfile.py +402 -0
  250. package/releng/meson/mesonbuild/scripts/externalproject.py +106 -0
  251. package/releng/meson/mesonbuild/scripts/gettext.py +86 -0
  252. package/releng/meson/mesonbuild/scripts/gtkdochelper.py +286 -0
  253. package/releng/meson/mesonbuild/scripts/hotdochelper.py +40 -0
  254. package/releng/meson/mesonbuild/scripts/itstool.py +77 -0
  255. package/releng/meson/mesonbuild/scripts/meson_exe.py +115 -0
  256. package/releng/meson/mesonbuild/scripts/msgfmthelper.py +29 -0
  257. package/releng/meson/mesonbuild/scripts/pycompile.py +54 -0
  258. package/releng/meson/mesonbuild/scripts/python_info.py +121 -0
  259. package/releng/meson/mesonbuild/scripts/regen_checker.py +55 -0
  260. package/releng/meson/mesonbuild/scripts/run_tool.py +58 -0
  261. package/releng/meson/mesonbuild/scripts/scanbuild.py +57 -0
  262. package/releng/meson/mesonbuild/scripts/symbolextractor.py +322 -0
  263. package/releng/meson/mesonbuild/scripts/tags.py +44 -0
  264. package/releng/meson/mesonbuild/scripts/test_loaded_modules.py +14 -0
  265. package/releng/meson/mesonbuild/scripts/uninstall.py +41 -0
  266. package/releng/meson/mesonbuild/scripts/vcstagger.py +35 -0
  267. package/releng/meson/mesonbuild/scripts/yasm.py +24 -0
  268. package/releng/meson/mesonbuild/templates/__init__.py +0 -0
  269. package/releng/meson/mesonbuild/templates/cpptemplates.py +143 -0
  270. package/releng/meson/mesonbuild/templates/cstemplates.py +90 -0
  271. package/releng/meson/mesonbuild/templates/ctemplates.py +126 -0
  272. package/releng/meson/mesonbuild/templates/cudatemplates.py +143 -0
  273. package/releng/meson/mesonbuild/templates/dlangtemplates.py +109 -0
  274. package/releng/meson/mesonbuild/templates/fortrantemplates.py +101 -0
  275. package/releng/meson/mesonbuild/templates/javatemplates.py +94 -0
  276. package/releng/meson/mesonbuild/templates/mesontemplates.py +70 -0
  277. package/releng/meson/mesonbuild/templates/objcpptemplates.py +126 -0
  278. package/releng/meson/mesonbuild/templates/objctemplates.py +126 -0
  279. package/releng/meson/mesonbuild/templates/rusttemplates.py +79 -0
  280. package/releng/meson/mesonbuild/templates/samplefactory.py +41 -0
  281. package/releng/meson/mesonbuild/templates/sampleimpl.py +160 -0
  282. package/releng/meson/mesonbuild/templates/valatemplates.py +82 -0
  283. package/releng/meson/mesonbuild/utils/__init__.py +0 -0
  284. package/releng/meson/mesonbuild/utils/core.py +166 -0
  285. package/releng/meson/mesonbuild/utils/platform.py +27 -0
  286. package/releng/meson/mesonbuild/utils/posix.py +32 -0
  287. package/releng/meson/mesonbuild/utils/universal.py +2445 -0
  288. package/releng/meson/mesonbuild/utils/vsenv.py +126 -0
  289. package/releng/meson/mesonbuild/utils/win32.py +29 -0
  290. package/releng/meson/mesonbuild/wrap/__init__.py +59 -0
  291. package/releng/meson/mesonbuild/wrap/wrap.py +846 -0
  292. package/releng/meson/mesonbuild/wrap/wraptool.py +198 -0
  293. package/releng/meson-scripts/BSDmakefile +6 -0
  294. package/releng/meson-scripts/Makefile +16 -0
  295. package/releng/meson-scripts/configure +18 -0
  296. package/releng/meson-scripts/configure.bat +22 -0
  297. package/releng/meson-scripts/make.bat +23 -0
  298. package/releng/meson_configure.py +506 -0
  299. package/releng/meson_make.py +131 -0
  300. package/releng/mkdevkit.py +107 -0
  301. package/releng/mkfatmacho.py +54 -0
  302. package/releng/post-process-oabi.py +97 -0
  303. package/releng/progress.py +14 -0
  304. package/releng/sync-from-upstream.py +185 -0
  305. package/releng/tomlkit/tomlkit/__init__.py +59 -0
  306. package/releng/tomlkit/tomlkit/_compat.py +22 -0
  307. package/releng/tomlkit/tomlkit/_types.py +83 -0
  308. package/releng/tomlkit/tomlkit/_utils.py +158 -0
  309. package/releng/tomlkit/tomlkit/api.py +308 -0
  310. package/releng/tomlkit/tomlkit/container.py +875 -0
  311. package/releng/tomlkit/tomlkit/exceptions.py +227 -0
  312. package/releng/tomlkit/tomlkit/items.py +1967 -0
  313. package/releng/tomlkit/tomlkit/parser.py +1141 -0
  314. package/releng/tomlkit/tomlkit/py.typed +0 -0
  315. package/releng/tomlkit/tomlkit/source.py +180 -0
  316. package/releng/tomlkit/tomlkit/toml_char.py +52 -0
  317. package/releng/tomlkit/tomlkit/toml_document.py +7 -0
  318. package/releng/tomlkit/tomlkit/toml_file.py +58 -0
  319. package/releng/winenv.py +140 -0
  320. package/scripts/adjust-version.py +19 -0
  321. package/scripts/detect-version.py +40 -0
  322. package/scripts/fetch-abi-bits.py +343 -0
  323. package/scripts/install.js +23 -0
  324. package/scripts/package.py +15 -0
  325. package/src/addon.cc +76 -0
  326. package/src/application.cc +148 -0
  327. package/src/application.h +31 -0
  328. package/src/authentication.cc +174 -0
  329. package/src/authentication.h +24 -0
  330. package/src/bus.cc +167 -0
  331. package/src/bus.h +33 -0
  332. package/src/cancellable.cc +117 -0
  333. package/src/cancellable.h +31 -0
  334. package/src/child.cc +150 -0
  335. package/src/child.h +32 -0
  336. package/src/crash.cc +122 -0
  337. package/src/crash.h +30 -0
  338. package/src/device.cc +1302 -0
  339. package/src/device.h +55 -0
  340. package/src/device_manager.cc +362 -0
  341. package/src/device_manager.h +35 -0
  342. package/src/endpoint_parameters.cc +171 -0
  343. package/src/endpoint_parameters.h +28 -0
  344. package/src/glib_context.cc +62 -0
  345. package/src/glib_context.h +29 -0
  346. package/src/glib_object.cc +25 -0
  347. package/src/glib_object.h +37 -0
  348. package/src/iostream.cc +247 -0
  349. package/src/iostream.h +30 -0
  350. package/src/meson.build +26 -0
  351. package/src/operation.h +94 -0
  352. package/src/portal_membership.cc +100 -0
  353. package/src/portal_membership.h +26 -0
  354. package/src/portal_service.cc +401 -0
  355. package/src/portal_service.h +40 -0
  356. package/src/process.cc +135 -0
  357. package/src/process.h +30 -0
  358. package/src/relay.cc +139 -0
  359. package/src/relay.h +31 -0
  360. package/src/runtime.cc +443 -0
  361. package/src/runtime.h +64 -0
  362. package/src/script.cc +301 -0
  363. package/src/script.h +36 -0
  364. package/src/session.cc +860 -0
  365. package/src/session.h +42 -0
  366. package/src/signals.cc +334 -0
  367. package/src/signals.h +47 -0
  368. package/src/spawn.cc +95 -0
  369. package/src/spawn.h +27 -0
  370. package/src/usage_monitor.h +117 -0
  371. package/src/uv_context.cc +118 -0
  372. package/src/uv_context.h +40 -0
  373. package/src/win_delay_load_hook.cc +63 -0
  374. package/subprojects/frida-core.wrap +8 -0
  375. package/subprojects/nan.wrap +9 -0
  376. package/subprojects/packagefiles/nan.patch +13 -0
  377. package/test/data/index.ts +13 -0
  378. package/test/data/unixvictim-linux-x86 +0 -0
  379. package/test/data/unixvictim-linux-x86_64 +0 -0
  380. package/test/data/unixvictim-macos +0 -0
  381. package/test/device.ts +27 -0
  382. package/test/device_manager.ts +16 -0
  383. package/test/labrat.ts +32 -0
  384. package/test/script.ts +176 -0
  385. package/test/session.ts +73 -0
  386. package/tsconfig.json +18 -0
@@ -0,0 +1,167 @@
1
+ # SPDX-License-Identifier: Apache-2.0
2
+ # Copyright 2019 The meson development team
3
+
4
+ from __future__ import annotations
5
+
6
+ """Abstractions for the Intel Compiler families.
7
+
8
+ Intel provides both a posix/gcc-like compiler (ICC) for MacOS and Linux,
9
+ with Meson mixin IntelGnuLikeCompiler.
10
+ For Windows, the Intel msvc-like compiler (ICL) Meson mixin
11
+ is IntelVisualStudioLikeCompiler.
12
+ """
13
+
14
+ import os
15
+ import typing as T
16
+
17
+ from ... import mesonlib
18
+ from ..compilers import CompileCheckMode
19
+ from .gnu import GnuLikeCompiler
20
+ from .visualstudio import VisualStudioLikeCompiler
21
+
22
+ # XXX: avoid circular dependencies
23
+ # TODO: this belongs in a posix compiler class
24
+ # NOTE: the default Intel optimization is -O2, unlike GNU which defaults to -O0.
25
+ # this can be surprising, particularly for debug builds, so we specify the
26
+ # default as -O0.
27
+ # https://software.intel.com/en-us/cpp-compiler-developer-guide-and-reference-o
28
+ # https://software.intel.com/en-us/cpp-compiler-developer-guide-and-reference-g
29
+ # https://software.intel.com/en-us/fortran-compiler-developer-guide-and-reference-o
30
+ # https://software.intel.com/en-us/fortran-compiler-developer-guide-and-reference-g
31
+ # https://software.intel.com/en-us/fortran-compiler-developer-guide-and-reference-traceback
32
+ # https://gcc.gnu.org/onlinedocs/gcc/Optimize-Options.html
33
+
34
+
35
+ class IntelGnuLikeCompiler(GnuLikeCompiler):
36
+ """
37
+ Tested on linux for ICC 14.0.3, 15.0.6, 16.0.4, 17.0.1, 19.0
38
+ debugoptimized: -g -O2
39
+ release: -O3
40
+ minsize: -O2
41
+ """
42
+
43
+ DEBUG_ARGS: T.Dict[bool, T.List[str]] = {
44
+ False: [],
45
+ True: ['-g', '-traceback']
46
+ }
47
+
48
+ OPTIM_ARGS: T.Dict[str, T.List[str]] = {
49
+ 'plain': [],
50
+ '0': ['-O0'],
51
+ 'g': ['-O0'],
52
+ '1': ['-O1'],
53
+ '2': ['-O2'],
54
+ '3': ['-O3'],
55
+ 's': ['-Os'],
56
+ }
57
+ id = 'intel'
58
+
59
+ def __init__(self) -> None:
60
+ super().__init__()
61
+ # As of 19.0.0 ICC doesn't have sanitizer, color, or lto support.
62
+ #
63
+ # It does have IPO, which serves much the same purpose as LOT, but
64
+ # there is an unfortunate rule for using IPO (you can't control the
65
+ # name of the output file) which break assumptions meson makes
66
+ self.base_options = {mesonlib.OptionKey(o) for o in [
67
+ 'b_pch', 'b_lundef', 'b_asneeded', 'b_pgo', 'b_coverage',
68
+ 'b_ndebug', 'b_staticpic', 'b_pie']}
69
+ self.lang_header = 'none'
70
+
71
+ def get_pch_suffix(self) -> str:
72
+ return 'pchi'
73
+
74
+ def get_pch_use_args(self, pch_dir: str, header: str) -> T.List[str]:
75
+ return ['-pch', '-pch_dir', os.path.join(pch_dir), '-x',
76
+ self.lang_header, '-include', header, '-x', 'none']
77
+
78
+ def get_pch_name(self, name: str) -> str:
79
+ return os.path.basename(name) + '.' + self.get_pch_suffix()
80
+
81
+ def openmp_flags(self) -> T.List[str]:
82
+ if mesonlib.version_compare(self.version, '>=15.0.0'):
83
+ return ['-qopenmp']
84
+ else:
85
+ return ['-openmp']
86
+
87
+ def get_compiler_check_args(self, mode: CompileCheckMode) -> T.List[str]:
88
+ extra_args = [
89
+ '-diag-error', '10006', # ignoring unknown option
90
+ '-diag-error', '10148', # Option not supported
91
+ '-diag-error', '10155', # ignoring argument required
92
+ '-diag-error', '10156', # ignoring not argument allowed
93
+ '-diag-error', '10157', # Ignoring argument of the wrong type
94
+ '-diag-error', '10158', # Argument must be separate. Can be hit by trying an option like -foo-bar=foo when -foo=bar is a valid option but -foo-bar isn't
95
+ ]
96
+ return super().get_compiler_check_args(mode) + extra_args
97
+
98
+ def get_profile_generate_args(self) -> T.List[str]:
99
+ return ['-prof-gen=threadsafe']
100
+
101
+ def get_profile_use_args(self) -> T.List[str]:
102
+ return ['-prof-use']
103
+
104
+ def get_debug_args(self, is_debug: bool) -> T.List[str]:
105
+ return self.DEBUG_ARGS[is_debug]
106
+
107
+ def get_optimization_args(self, optimization_level: str) -> T.List[str]:
108
+ return self.OPTIM_ARGS[optimization_level]
109
+
110
+ def get_has_func_attribute_extra_args(self, name: str) -> T.List[str]:
111
+ return ['-diag-error', '1292']
112
+
113
+
114
+ class IntelVisualStudioLikeCompiler(VisualStudioLikeCompiler):
115
+
116
+ """Abstractions for ICL, the Intel compiler on Windows."""
117
+
118
+ DEBUG_ARGS: T.Dict[bool, T.List[str]] = {
119
+ False: [],
120
+ True: ['/Zi', '/traceback']
121
+ }
122
+
123
+ OPTIM_ARGS: T.Dict[str, T.List[str]] = {
124
+ 'plain': [],
125
+ '0': ['/Od'],
126
+ 'g': ['/Od'],
127
+ '1': ['/O1'],
128
+ '2': ['/O2'],
129
+ '3': ['/O3'],
130
+ 's': ['/Os'],
131
+ }
132
+
133
+ id = 'intel-cl'
134
+
135
+ def get_compiler_check_args(self, mode: CompileCheckMode) -> T.List[str]:
136
+ args = super().get_compiler_check_args(mode)
137
+ if mode is not CompileCheckMode.LINK:
138
+ args.extend([
139
+ '/Qdiag-error:10006', # ignoring unknown option
140
+ '/Qdiag-error:10148', # Option not supported
141
+ '/Qdiag-error:10155', # ignoring argument required
142
+ '/Qdiag-error:10156', # ignoring not argument allowed
143
+ '/Qdiag-error:10157', # Ignoring argument of the wrong type
144
+ '/Qdiag-error:10158', # Argument must be separate. Can be hit by trying an option like -foo-bar=foo when -foo=bar is a valid option but -foo-bar isn't
145
+ ])
146
+ return args
147
+
148
+ def get_toolset_version(self) -> T.Optional[str]:
149
+ # ICL provides a cl.exe that returns the version of MSVC it tries to
150
+ # emulate, so we'll get the version from that and pass it to the same
151
+ # function the real MSVC uses to calculate the toolset version.
152
+ _, _, err = mesonlib.Popen_safe(['cl.exe'])
153
+ v1, v2, *_ = mesonlib.search_version(err).split('.')
154
+ version = int(v1 + v2)
155
+ return self._calculate_toolset_version(version)
156
+
157
+ def openmp_flags(self) -> T.List[str]:
158
+ return ['/Qopenmp']
159
+
160
+ def get_debug_args(self, is_debug: bool) -> T.List[str]:
161
+ return self.DEBUG_ARGS[is_debug]
162
+
163
+ def get_optimization_args(self, optimization_level: str) -> T.List[str]:
164
+ return self.OPTIM_ARGS[optimization_level]
165
+
166
+ def get_pch_base_name(self, header: str) -> str:
167
+ return os.path.basename(header)
@@ -0,0 +1,120 @@
1
+ # SPDX-License-Identifier: Apache-2.0
2
+ # Copyright 2019 The Meson development team
3
+
4
+ from __future__ import annotations
5
+
6
+ """Mixins for compilers that *are* linkers.
7
+
8
+ While many compilers (such as gcc and clang) are used by meson to dispatch
9
+ linker commands and other (like MSVC) are not, a few (such as DMD) actually
10
+ are both the linker and compiler in one binary. This module provides mixin
11
+ classes for those cases.
12
+ """
13
+
14
+ import typing as T
15
+
16
+ from ...mesonlib import EnvironmentException, MesonException, is_windows
17
+
18
+ if T.TYPE_CHECKING:
19
+ from ...coredata import KeyedOptionDictType
20
+ from ...environment import Environment
21
+ from ...compilers.compilers import Compiler
22
+ else:
23
+ # This is a bit clever, for mypy we pretend that these mixins descend from
24
+ # Compiler, so we get all of the methods and attributes defined for us, but
25
+ # for runtime we make them descend from object (which all classes normally
26
+ # do). This gives up DRYer type checking, with no runtime impact
27
+ Compiler = object
28
+
29
+
30
+ class BasicLinkerIsCompilerMixin(Compiler):
31
+
32
+ """Provides a baseline of methods that a linker would implement.
33
+
34
+ In every case this provides a "no" or "empty" answer. If a compiler
35
+ implements any of these it needs a different mixin or to override that
36
+ functionality itself.
37
+ """
38
+
39
+ def sanitizer_link_args(self, value: str) -> T.List[str]:
40
+ return []
41
+
42
+ def get_lto_link_args(self, *, threads: int = 0, mode: str = 'default',
43
+ thinlto_cache_dir: T.Optional[str] = None) -> T.List[str]:
44
+ return []
45
+
46
+ def can_linker_accept_rsp(self) -> bool:
47
+ return is_windows()
48
+
49
+ def get_linker_exelist(self) -> T.List[str]:
50
+ return self.exelist.copy()
51
+
52
+ def get_linker_output_args(self, outputname: str) -> T.List[str]:
53
+ return []
54
+
55
+ def get_linker_always_args(self) -> T.List[str]:
56
+ return []
57
+
58
+ def get_linker_lib_prefix(self) -> str:
59
+ return ''
60
+
61
+ def get_option_link_args(self, options: 'KeyedOptionDictType') -> T.List[str]:
62
+ return []
63
+
64
+ def has_multi_link_args(self, args: T.List[str], env: 'Environment') -> T.Tuple[bool, bool]:
65
+ return False, False
66
+
67
+ def get_link_debugfile_args(self, targetfile: str) -> T.List[str]:
68
+ return []
69
+
70
+ def get_std_shared_lib_link_args(self) -> T.List[str]:
71
+ return []
72
+
73
+ def get_std_shared_module_args(self, options: 'KeyedOptionDictType') -> T.List[str]:
74
+ return self.get_std_shared_lib_link_args()
75
+
76
+ def get_link_whole_for(self, args: T.List[str]) -> T.List[str]:
77
+ raise EnvironmentException(f'Linker {self.id} does not support link_whole')
78
+
79
+ def get_allow_undefined_link_args(self) -> T.List[str]:
80
+ raise EnvironmentException(f'Linker {self.id} does not support allow undefined')
81
+
82
+ def get_pie_link_args(self) -> T.List[str]:
83
+ raise EnvironmentException(f'Linker {self.id} does not support position-independent executable')
84
+
85
+ def get_undefined_link_args(self) -> T.List[str]:
86
+ return []
87
+
88
+ def get_coverage_link_args(self) -> T.List[str]:
89
+ return []
90
+
91
+ def no_undefined_link_args(self) -> T.List[str]:
92
+ return []
93
+
94
+ def bitcode_args(self) -> T.List[str]:
95
+ raise MesonException("This linker doesn't support bitcode bundles")
96
+
97
+ def get_soname_args(self, env: 'Environment', prefix: str, shlib_name: str,
98
+ suffix: str, soversion: str,
99
+ darwin_versions: T.Tuple[str, str]) -> T.List[str]:
100
+ raise MesonException("This linker doesn't support soname args")
101
+
102
+ def build_rpath_args(self, env: 'Environment', build_dir: str, from_dir: str,
103
+ rpath_paths: T.Tuple[str, ...], build_rpath: str,
104
+ install_rpath: str) -> T.Tuple[T.List[str], T.Set[bytes]]:
105
+ return ([], set())
106
+
107
+ def get_asneeded_args(self) -> T.List[str]:
108
+ return []
109
+
110
+ def get_optimization_link_args(self, optimization_level: str) -> T.List[str]:
111
+ return []
112
+
113
+ def get_link_debugfile_name(self, targetfile: str) -> T.Optional[str]:
114
+ return None
115
+
116
+ def thread_flags(self, env: 'Environment') -> T.List[str]:
117
+ return []
118
+
119
+ def thread_link_flags(self, env: 'Environment') -> T.List[str]:
120
+ return []
@@ -0,0 +1,279 @@
1
+ # SPDX-License-Identifier: Apache-2.0
2
+ # Copyright 2012-2019 The Meson development team
3
+
4
+ from __future__ import annotations
5
+
6
+ """Representations specific to the Metrowerks/Freescale Embedded C/C++ compiler family."""
7
+
8
+ import os
9
+ import typing as T
10
+
11
+ from ...mesonlib import EnvironmentException, OptionKey
12
+
13
+ if T.TYPE_CHECKING:
14
+ from ...envconfig import MachineInfo
15
+ from ...compilers.compilers import Compiler, CompileCheckMode
16
+ else:
17
+ # This is a bit clever, for mypy we pretend that these mixins descend from
18
+ # Compiler, so we get all of the methods and attributes defined for us, but
19
+ # for runtime we make them descend from object (which all classes normally
20
+ # do). This gives up DRYer type checking, with no runtime impact
21
+ Compiler = object
22
+
23
+ mwccarm_instruction_set_args: T.Dict[str, T.List[str]] = {
24
+ 'generic': ['-proc', 'generic'],
25
+ 'v4': ['-proc', 'v4'],
26
+ 'v4t': ['-proc', 'v4t'],
27
+ 'v5t': ['-proc', 'v5t'],
28
+ 'v5te': ['-proc', 'v5te'],
29
+ 'v6': ['-proc', 'v6'],
30
+ 'arm7tdmi': ['-proc', 'arm7tdmi'],
31
+ 'arm710t': ['-proc', 'arm710t'],
32
+ 'arm720t': ['-proc', 'arm720t'],
33
+ 'arm740t': ['-proc', 'arm740t'],
34
+ 'arm7ej': ['-proc', 'arm7ej'],
35
+ 'arm9tdmi': ['-proc', 'arm9tdmi'],
36
+ 'arm920t': ['-proc', 'arm920t'],
37
+ 'arm922t': ['-proc', 'arm922t'],
38
+ 'arm940t': ['-proc', 'arm940t'],
39
+ 'arm9ej': ['-proc', 'arm9ej'],
40
+ 'arm926ej': ['-proc', 'arm926ej'],
41
+ 'arm946e': ['-proc', 'arm946e'],
42
+ 'arm966e': ['-proc', 'arm966e'],
43
+ 'arm1020e': ['-proc', 'arm1020e'],
44
+ 'arm1022e': ['-proc', 'arm1022e'],
45
+ 'arm1026ej': ['-proc', 'arm1026ej'],
46
+ 'dbmx1': ['-proc', 'dbmx1'],
47
+ 'dbmxl': ['-proc', 'dbmxl'],
48
+ 'XScale': ['-proc', 'XScale'],
49
+ 'pxa255': ['-proc', 'pxa255'],
50
+ 'pxa261': ['-proc', 'pxa261'],
51
+ 'pxa262': ['-proc', 'pxa262'],
52
+ 'pxa263': ['-proc', 'pxa263']
53
+ }
54
+
55
+ mwcceppc_instruction_set_args: T.Dict[str, T.List[str]] = {
56
+ 'generic': ['-proc', 'generic'],
57
+ '401': ['-proc', '401'],
58
+ '403': ['-proc', '403'],
59
+ '505': ['-proc', '505'],
60
+ '509': ['-proc', '509'],
61
+ '555': ['-proc', '555'],
62
+ '601': ['-proc', '601'],
63
+ '602': ['-proc', '602'],
64
+ '603': ['-proc', '603'],
65
+ '603e': ['-proc', '603e'],
66
+ '604': ['-proc', '604'],
67
+ '604e': ['-proc', '604e'],
68
+ '740': ['-proc', '740'],
69
+ '750': ['-proc', '750'],
70
+ '801': ['-proc', '801'],
71
+ '821': ['-proc', '821'],
72
+ '823': ['-proc', '823'],
73
+ '850': ['-proc', '850'],
74
+ '860': ['-proc', '860'],
75
+ '7400': ['-proc', '7400'],
76
+ '7450': ['-proc', '7450'],
77
+ '8240': ['-proc', '8240'],
78
+ '8260': ['-proc', '8260'],
79
+ 'e500': ['-proc', 'e500'],
80
+ 'gekko': ['-proc', 'gekko'],
81
+ }
82
+
83
+ mwasmarm_instruction_set_args: T.Dict[str, T.List[str]] = {
84
+ 'arm4': ['-proc', 'arm4'],
85
+ 'arm4t': ['-proc', 'arm4t'],
86
+ 'arm4xm': ['-proc', 'arm4xm'],
87
+ 'arm4txm': ['-proc', 'arm4txm'],
88
+ 'arm5': ['-proc', 'arm5'],
89
+ 'arm5T': ['-proc', 'arm5T'],
90
+ 'arm5xM': ['-proc', 'arm5xM'],
91
+ 'arm5TxM': ['-proc', 'arm5TxM'],
92
+ 'arm5TE': ['-proc', 'arm5TE'],
93
+ 'arm5TExP': ['-proc', 'arm5TExP'],
94
+ 'arm6': ['-proc', 'arm6'],
95
+ 'xscale': ['-proc', 'xscale']
96
+ }
97
+
98
+ mwasmeppc_instruction_set_args: T.Dict[str, T.List[str]] = {
99
+ '401': ['-proc', '401'],
100
+ '403': ['-proc', '403'],
101
+ '505': ['-proc', '505'],
102
+ '509': ['-proc', '509'],
103
+ '555': ['-proc', '555'],
104
+ '56X': ['-proc', '56X'],
105
+ '601': ['-proc', '601'],
106
+ '602': ['-proc', '602'],
107
+ '603': ['-proc', '603'],
108
+ '603e': ['-proc', '603e'],
109
+ '604': ['-proc', '604'],
110
+ '604e': ['-proc', '604e'],
111
+ '740': ['-proc', '740'],
112
+ '74X': ['-proc', '74X'],
113
+ '750': ['-proc', '750'],
114
+ '75X': ['-proc', '75X'],
115
+ '801': ['-proc', '801'],
116
+ '821': ['-proc', '821'],
117
+ '823': ['-proc', '823'],
118
+ '850': ['-proc', '850'],
119
+ '85X': ['-proc', '85X'],
120
+ '860': ['-proc', '860'],
121
+ '86X': ['-proc', '86X'],
122
+ '87X': ['-proc', '87X'],
123
+ '88X': ['-proc', '88X'],
124
+ '5100': ['-proc', '5100'],
125
+ '5200': ['-proc', '5200'],
126
+ '7400': ['-proc', '7400'],
127
+ '744X': ['-proc', '744X'],
128
+ '7450': ['-proc', '7450'],
129
+ '745X': ['-proc', '745X'],
130
+ '82XX': ['-proc', '82XX'],
131
+ '8240': ['-proc', '8240'],
132
+ '824X': ['-proc', '824X'],
133
+ '8260': ['-proc', '8260'],
134
+ '827X': ['-proc', '827X'],
135
+ '8280': ['-proc', '8280'],
136
+ 'e300': ['-proc', 'e300'],
137
+ 'e300c2': ['-proc', 'e300c2'],
138
+ 'e300c3': ['-proc', 'e300c3'],
139
+ 'e300c4': ['-proc', 'e300c4'],
140
+ 'e600': ['-proc', 'e600'],
141
+ '85xx': ['-proc', '85xx'],
142
+ 'e500': ['-proc', 'e500'],
143
+ 'e500v2': ['-proc', 'e500v2'],
144
+ 'Zen': ['-proc', 'Zen'],
145
+ '5565': ['-proc', '5565'],
146
+ '5674': ['-proc', '5674'],
147
+ 'gekko': ['-proc', 'gekko'],
148
+ 'generic': ['-proc', 'generic'],
149
+ }
150
+
151
+ mwcc_optimization_args: T.Dict[str, T.List[str]] = {
152
+ 'plain': [],
153
+ '0': ['-O0'],
154
+ 'g': ['-Op'],
155
+ '1': ['-O1'],
156
+ '2': ['-O2'],
157
+ '3': ['-O4,p'],
158
+ 's': ['-Os']
159
+ }
160
+
161
+ mwcc_debug_args: T.Dict[bool, T.List[str]] = {
162
+ False: [],
163
+ True: ['-g']
164
+ }
165
+
166
+
167
+ class MetrowerksCompiler(Compiler):
168
+ id = 'mwcc'
169
+
170
+ # These compilers can actually invoke the linker, but they choke on
171
+ # linker-specific flags. So it's best to invoke the linker directly
172
+ INVOKES_LINKER = False
173
+
174
+ def __init__(self) -> None:
175
+ if not self.is_cross:
176
+ raise EnvironmentException(f'{id} supports only cross-compilation.')
177
+
178
+ self.base_options = {
179
+ OptionKey(o) for o in ['b_pch', 'b_ndebug']}
180
+
181
+ default_warn_args: T.List[str] = []
182
+ self.warn_args: T.Dict[str, T.List[str]] = {
183
+ '0': ['-w', 'off'],
184
+ '1': default_warn_args,
185
+ '2': default_warn_args + ['-w', 'most'],
186
+ '3': default_warn_args + ['-w', 'all'],
187
+ 'everything': default_warn_args + ['-w', 'full']}
188
+
189
+ def depfile_for_object(self, objfile: str) -> T.Optional[str]:
190
+ # Earlier versions of these compilers do not support specifying
191
+ # a custom name for a depfile, and can only generate '<input_file>.d'
192
+ return os.path.splitext(objfile)[0] + '.' + self.get_depfile_suffix()
193
+
194
+ def get_always_args(self) -> T.List[str]:
195
+ return ['-gccinc']
196
+
197
+ def get_compiler_check_args(self, mode: CompileCheckMode) -> T.List[str]:
198
+ return []
199
+
200
+ def get_compile_only_args(self) -> T.List[str]:
201
+ return ['-c']
202
+
203
+ def get_debug_args(self, is_debug: bool) -> T.List[str]:
204
+ return mwcc_debug_args[is_debug]
205
+
206
+ def get_dependency_gen_args(self, outtarget: str, outfile: str) -> T.List[str]:
207
+ # Check comment in depfile_for_object()
208
+ return ['-gccdep', '-MD']
209
+
210
+ def get_depfile_suffix(self) -> str:
211
+ return 'd'
212
+
213
+ def get_include_args(self, path: str, is_system: bool) -> T.List[str]:
214
+ if not path:
215
+ path = '.'
216
+ return ['-I' + path]
217
+
218
+ def get_no_optimization_args(self) -> T.List[str]:
219
+ return ['-opt', 'off']
220
+
221
+ def get_no_stdinc_args(self) -> T.List[str]:
222
+ return ['-nostdinc']
223
+
224
+ def get_no_stdlib_link_args(self) -> T.List[str]:
225
+ return ['-nostdlib']
226
+
227
+ def get_optimization_args(self, optimization_level: str) -> T.List[str]:
228
+ return mwcc_optimization_args[optimization_level]
229
+
230
+ def get_output_args(self, outputname: str) -> T.List[str]:
231
+ return ['-o', outputname]
232
+
233
+ def get_pic_args(self) -> T.List[str]:
234
+ return ['-pic']
235
+
236
+ def get_preprocess_only_args(self) -> T.List[str]:
237
+ return ['-E']
238
+
239
+ def get_preprocess_to_file_args(self) -> T.List[str]:
240
+ return ['-P']
241
+
242
+ def get_pch_use_args(self, pch_dir: str, header: str) -> T.List[str]:
243
+ return ['-prefix', self.get_pch_name(header)]
244
+
245
+ def get_pch_name(self, name: str) -> str:
246
+ return os.path.basename(name) + '.' + self.get_pch_suffix()
247
+
248
+ def get_pch_suffix(self) -> str:
249
+ return 'mch'
250
+
251
+ def get_warn_args(self, level: str) -> T.List[str]:
252
+ return self.warn_args[level]
253
+
254
+ def get_werror_args(self) -> T.List[str]:
255
+ return ['-w', 'error']
256
+
257
+ @classmethod
258
+ def _unix_args_to_native(cls, args: T.List[str], info: MachineInfo) -> T.List[str]:
259
+ result: T.List[str] = []
260
+ for i in args:
261
+ if i.startswith('-D'):
262
+ i = '-D' + i[2:]
263
+ if i.startswith('-I'):
264
+ i = '-I' + i[2:]
265
+ if i.startswith('-Wl,-rpath='):
266
+ continue
267
+ elif i == '--print-search-dirs':
268
+ continue
269
+ elif i.startswith('-L'):
270
+ continue
271
+ result.append(i)
272
+ return result
273
+
274
+ def compute_parameters_with_absolute_paths(self, parameter_list: T.List[str], build_dir: str) -> T.List[str]:
275
+ for idx, i in enumerate(parameter_list):
276
+ if i[:2] == '-I':
277
+ parameter_list[idx] = i[:9] + os.path.normpath(os.path.join(build_dir, i[9:]))
278
+
279
+ return parameter_list
@@ -0,0 +1,88 @@
1
+ # SPDX-License-Identifier: Apache-2.0
2
+ # Copyright 2019 The meson development team
3
+
4
+ from __future__ import annotations
5
+
6
+ """Abstractions for the PGI family of compilers."""
7
+
8
+ import typing as T
9
+ import os
10
+ from pathlib import Path
11
+
12
+ from ..compilers import clike_debug_args, clike_optimization_args
13
+ from ...mesonlib import OptionKey
14
+
15
+ if T.TYPE_CHECKING:
16
+ from ...environment import Environment
17
+ from ...compilers.compilers import Compiler
18
+ else:
19
+ # This is a bit clever, for mypy we pretend that these mixins descend from
20
+ # Compiler, so we get all of the methods and attributes defined for us, but
21
+ # for runtime we make them descend from object (which all classes normally
22
+ # do). This gives up DRYer type checking, with no runtime impact
23
+ Compiler = object
24
+
25
+
26
+ class PGICompiler(Compiler):
27
+
28
+ id = 'pgi'
29
+
30
+ def __init__(self) -> None:
31
+ self.base_options = {OptionKey('b_pch')}
32
+
33
+ default_warn_args = ['-Minform=inform']
34
+ self.warn_args: T.Dict[str, T.List[str]] = {
35
+ '0': [],
36
+ '1': default_warn_args,
37
+ '2': default_warn_args,
38
+ '3': default_warn_args,
39
+ 'everything': default_warn_args
40
+ }
41
+
42
+ def get_module_incdir_args(self) -> T.Tuple[str]:
43
+ return ('-module', )
44
+
45
+ def gen_import_library_args(self, implibname: str) -> T.List[str]:
46
+ return []
47
+
48
+ def get_pic_args(self) -> T.List[str]:
49
+ # PGI -fPIC is Linux only.
50
+ if self.info.is_linux():
51
+ return ['-fPIC']
52
+ return []
53
+
54
+ def openmp_flags(self) -> T.List[str]:
55
+ return ['-mp']
56
+
57
+ def get_optimization_args(self, optimization_level: str) -> T.List[str]:
58
+ return clike_optimization_args[optimization_level]
59
+
60
+ def get_debug_args(self, is_debug: bool) -> T.List[str]:
61
+ return clike_debug_args[is_debug]
62
+
63
+ def compute_parameters_with_absolute_paths(self, parameter_list: T.List[str], build_dir: str) -> T.List[str]:
64
+ for idx, i in enumerate(parameter_list):
65
+ if i[:2] == '-I' or i[:2] == '-L':
66
+ parameter_list[idx] = i[:2] + os.path.normpath(os.path.join(build_dir, i[2:]))
67
+ return parameter_list
68
+
69
+ def get_always_args(self) -> T.List[str]:
70
+ return []
71
+
72
+ def get_pch_suffix(self) -> str:
73
+ # PGI defaults to .pch suffix for PCH on Linux and Windows with --pch option
74
+ return 'pch'
75
+
76
+ def get_pch_use_args(self, pch_dir: str, header: str) -> T.List[str]:
77
+ # PGI supports PCH for C++ only.
78
+ hdr = Path(pch_dir).resolve().parent / header
79
+ if self.language == 'cpp':
80
+ return ['--pch',
81
+ '--pch_dir', str(hdr.parent),
82
+ f'-I{hdr.parent}']
83
+ else:
84
+ return []
85
+
86
+ def thread_flags(self, env: 'Environment') -> T.List[str]:
87
+ # PGI cannot accept -pthread, it's already threaded
88
+ return []