frida 16.2.1 → 16.2.2

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,109 @@
1
+ # SPDX-License-Identifier: Apache-2.0
2
+ # Copyright 2019 The Meson development team
3
+
4
+ from __future__ import annotations
5
+
6
+ from mesonbuild.templates.sampleimpl import FileImpl
7
+
8
+ import typing as T
9
+
10
+
11
+ hello_d_template = '''module main;
12
+ import std.stdio;
13
+
14
+ enum PROJECT_NAME = "{project_name}";
15
+
16
+ int main(string[] args) {{
17
+ if (args.length != 1){{
18
+ writefln("%s takes no arguments.\\n", args[0]);
19
+ return 1;
20
+ }}
21
+ writefln("This is project %s.\\n", PROJECT_NAME);
22
+ return 0;
23
+ }}
24
+ '''
25
+
26
+ hello_d_meson_template = '''project('{project_name}', 'd',
27
+ version : '{version}',
28
+ default_options: ['warning_level=3'])
29
+
30
+ exe = executable('{exe_name}', '{source_name}',
31
+ install : true)
32
+
33
+ test('basic', exe)
34
+ '''
35
+
36
+ lib_d_template = '''module {module_file};
37
+
38
+ /* This function will not be exported and is not
39
+ * directly callable by users of this library.
40
+ */
41
+ int internal_function() {{
42
+ return 0;
43
+ }}
44
+
45
+ int {function_name}() {{
46
+ return internal_function();
47
+ }}
48
+ '''
49
+
50
+ lib_d_test_template = '''module {module_file}_test;
51
+ import std.stdio;
52
+ import {module_file};
53
+
54
+
55
+ int main(string[] args) {{
56
+ if (args.length != 1){{
57
+ writefln("%s takes no arguments.\\n", args[0]);
58
+ return 1;
59
+ }}
60
+ return {function_name}();
61
+ }}
62
+ '''
63
+
64
+ lib_d_meson_template = '''project('{project_name}', 'd',
65
+ version : '{version}',
66
+ default_options : ['warning_level=3'])
67
+
68
+ stlib = static_library('{lib_name}', '{source_file}',
69
+ install : true,
70
+ gnu_symbol_visibility : 'hidden',
71
+ )
72
+
73
+ test_exe = executable('{test_exe_name}', '{test_source_file}',
74
+ link_with : stlib)
75
+ test('{test_name}', test_exe)
76
+
77
+ # Make this library usable as a Meson subproject.
78
+ {ltoken}_dep = declare_dependency(
79
+ include_directories: include_directories('.'),
80
+ link_with : stlib)
81
+
82
+ # Make this library usable from the Dlang
83
+ # build system.
84
+ dlang_mod = import('dlang')
85
+ if find_program('dub', required: false).found()
86
+ dlang_mod.generate_dub_file(meson.project_name().to_lower(), meson.source_root(),
87
+ name : meson.project_name(),
88
+ license: meson.project_license(),
89
+ sourceFiles : '{source_file}',
90
+ description : 'Meson sample project.',
91
+ version : '{version}',
92
+ )
93
+ endif
94
+ '''
95
+
96
+
97
+ class DlangProject(FileImpl):
98
+
99
+ source_ext = 'd'
100
+ exe_template = hello_d_template
101
+ exe_meson_template = hello_d_meson_template
102
+ lib_template = lib_d_template
103
+ lib_test_template = lib_d_test_template
104
+ lib_meson_template = lib_d_meson_template
105
+
106
+ def lib_kwargs(self) -> T.Dict[str, str]:
107
+ kwargs = super().lib_kwargs()
108
+ kwargs['module_file'] = self.lowercase_token
109
+ return kwargs
@@ -0,0 +1,101 @@
1
+ # SPDX-License-Identifier: Apache-2.0
2
+ # Copyright 2019 The Meson development team
3
+
4
+ from __future__ import annotations
5
+
6
+ from mesonbuild.templates.sampleimpl import FileImpl
7
+
8
+ lib_fortran_template = '''
9
+ ! This procedure will not be exported and is not
10
+ ! directly callable by users of this library.
11
+
12
+ module modfoo
13
+
14
+ implicit none
15
+ private
16
+ public :: {function_name}
17
+
18
+ contains
19
+
20
+ integer function internal_function()
21
+ internal_function = 0
22
+ end function internal_function
23
+
24
+ integer function {function_name}()
25
+ {function_name} = internal_function()
26
+ end function {function_name}
27
+
28
+ end module modfoo
29
+ '''
30
+
31
+ lib_fortran_test_template = '''
32
+ use modfoo
33
+
34
+ print *,{function_name}()
35
+
36
+ end program
37
+ '''
38
+
39
+ lib_fortran_meson_template = '''project('{project_name}', 'fortran',
40
+ version : '{version}',
41
+ default_options : ['warning_level=3'])
42
+
43
+ # These arguments are only used to build the shared library
44
+ # not the executables that use the library.
45
+ lib_args = ['-DBUILDING_{utoken}']
46
+
47
+ shlib = shared_library('{lib_name}', '{source_file}',
48
+ install : true,
49
+ fortran_args : lib_args,
50
+ gnu_symbol_visibility : 'hidden',
51
+ )
52
+
53
+ test_exe = executable('{test_exe_name}', '{test_source_file}',
54
+ link_with : shlib)
55
+ test('{test_name}', test_exe)
56
+
57
+ # Make this library usable as a Meson subproject.
58
+ {ltoken}_dep = declare_dependency(
59
+ include_directories: include_directories('.'),
60
+ link_with : shlib)
61
+
62
+ pkg_mod = import('pkgconfig')
63
+ pkg_mod.generate(
64
+ name : '{project_name}',
65
+ filebase : '{ltoken}',
66
+ description : 'Meson sample project.',
67
+ subdirs : '{header_dir}',
68
+ libraries : shlib,
69
+ version : '{version}',
70
+ )
71
+ '''
72
+
73
+ hello_fortran_template = '''
74
+ implicit none
75
+
76
+ character(len=*), parameter :: PROJECT_NAME = "{project_name}"
77
+
78
+ print *,"This is project ", PROJECT_NAME
79
+
80
+ end program
81
+ '''
82
+
83
+ hello_fortran_meson_template = '''project('{project_name}', 'fortran',
84
+ version : '{version}',
85
+ default_options : ['warning_level=3'])
86
+
87
+ exe = executable('{exe_name}', '{source_name}',
88
+ install : true)
89
+
90
+ test('basic', exe)
91
+ '''
92
+
93
+
94
+ class FortranProject(FileImpl):
95
+
96
+ source_ext = 'f90'
97
+ exe_template = hello_fortran_template
98
+ exe_meson_template = hello_fortran_meson_template
99
+ lib_template = lib_fortran_template
100
+ lib_meson_template = lib_fortran_meson_template
101
+ lib_test_template = lib_fortran_test_template
@@ -0,0 +1,94 @@
1
+ # SPDX-License-Identifier: Apache-2.0
2
+ # Copyright 2019 The Meson development team
3
+
4
+ from __future__ import annotations
5
+
6
+ from mesonbuild.templates.sampleimpl import ClassImpl
7
+
8
+
9
+ hello_java_template = '''
10
+
11
+ public class {class_name} {{
12
+ final static String PROJECT_NAME = "{project_name}";
13
+
14
+ public static void main (String args[]) {{
15
+ if(args.length != 0) {{
16
+ System.out.println(args + " takes no arguments.");
17
+ System.exit(0);
18
+ }}
19
+ System.out.println("This is project " + PROJECT_NAME + ".");
20
+ System.exit(0);
21
+ }}
22
+ }}
23
+
24
+ '''
25
+
26
+ hello_java_meson_template = '''project('{project_name}', 'java',
27
+ version : '{version}',
28
+ default_options : ['warning_level=3'])
29
+
30
+ exe = jar('{exe_name}', '{source_name}',
31
+ main_class : '{exe_name}',
32
+ install : true)
33
+
34
+ test('basic', exe)
35
+ '''
36
+
37
+ lib_java_template = '''
38
+
39
+ public class {class_name} {{
40
+ final static int number = 6;
41
+
42
+ public final int get_number() {{
43
+ return number;
44
+ }}
45
+ }}
46
+
47
+ '''
48
+
49
+ lib_java_test_template = '''
50
+
51
+ public class {class_test} {{
52
+ public static void main (String args[]) {{
53
+ if(args.length != 0) {{
54
+ System.out.println(args + " takes no arguments.");
55
+ System.exit(1);
56
+ }}
57
+
58
+ {class_name} c = new {class_name}();
59
+ Boolean result = true;
60
+ System.exit(result.compareTo(c.get_number() != 6));
61
+ }}
62
+ }}
63
+
64
+ '''
65
+
66
+ lib_java_meson_template = '''project('{project_name}', 'java',
67
+ version : '{version}',
68
+ default_options : ['warning_level=3'])
69
+
70
+ jarlib = jar('{class_name}', '{source_file}',
71
+ main_class : '{class_name}',
72
+ install : true,
73
+ )
74
+
75
+ test_jar = jar('{class_test}', '{test_source_file}',
76
+ main_class : '{class_test}',
77
+ link_with : jarlib)
78
+ test('{test_name}', test_jar)
79
+
80
+ # Make this library usable as a Meson subproject.
81
+ {ltoken}_dep = declare_dependency(
82
+ include_directories: include_directories('.'),
83
+ link_with : jarlib)
84
+ '''
85
+
86
+
87
+ class JavaProject(ClassImpl):
88
+
89
+ source_ext = 'java'
90
+ exe_template = hello_java_template
91
+ exe_meson_template = hello_java_meson_template
92
+ lib_template = lib_java_template
93
+ lib_test_template = lib_java_test_template
94
+ lib_meson_template = lib_java_meson_template
@@ -0,0 +1,70 @@
1
+ # SPDX-License-Identifier: Apache-2.0
2
+ # Copyright 2019 The Meson development team
3
+
4
+ from __future__ import annotations
5
+
6
+ import typing as T
7
+
8
+ if T.TYPE_CHECKING:
9
+ from ..minit import Arguments
10
+
11
+ meson_executable_template = '''project('{project_name}', {language},
12
+ version : '{version}',
13
+ default_options : [{default_options}])
14
+
15
+ executable('{executable}',
16
+ {sourcespec},{depspec}
17
+ install : true)
18
+ '''
19
+
20
+
21
+ meson_jar_template = '''project('{project_name}', '{language}',
22
+ version : '{version}',
23
+ default_options : [{default_options}])
24
+
25
+ jar('{executable}',
26
+ {sourcespec},{depspec}
27
+ main_class: '{main_class}',
28
+ install : true)
29
+ '''
30
+
31
+
32
+ def create_meson_build(options: Arguments) -> None:
33
+ if options.type != 'executable':
34
+ raise SystemExit('\nGenerating a meson.build file from existing sources is\n'
35
+ 'supported only for project type "executable".\n'
36
+ 'Run meson init in an empty directory to create a sample project.')
37
+ default_options = ['warning_level=3']
38
+ if options.language == 'cpp':
39
+ # This shows how to set this very common option.
40
+ default_options += ['cpp_std=c++14']
41
+ # If we get a meson.build autoformatter one day, this code could
42
+ # be simplified quite a bit.
43
+ formatted_default_options = ', '.join(f"'{x}'" for x in default_options)
44
+ sourcespec = ',\n '.join(f"'{x}'" for x in options.srcfiles)
45
+ depspec = ''
46
+ if options.deps:
47
+ depspec = '\n dependencies : [\n '
48
+ depspec += ',\n '.join(f"dependency('{x}')"
49
+ for x in options.deps.split(','))
50
+ depspec += '],'
51
+ if options.language != 'java':
52
+ language = f"'{options.language}'" if options.language != 'vala' else ['c', 'vala']
53
+ content = meson_executable_template.format(project_name=options.name,
54
+ language=language,
55
+ version=options.version,
56
+ executable=options.executable,
57
+ sourcespec=sourcespec,
58
+ depspec=depspec,
59
+ default_options=formatted_default_options)
60
+ else:
61
+ content = meson_jar_template.format(project_name=options.name,
62
+ language=options.language,
63
+ version=options.version,
64
+ executable=options.executable,
65
+ main_class=options.name,
66
+ sourcespec=sourcespec,
67
+ depspec=depspec,
68
+ default_options=formatted_default_options)
69
+ open('meson.build', 'w', encoding='utf-8').write(content)
70
+ print('Generated meson.build file:\n\n' + content)
@@ -0,0 +1,126 @@
1
+ # SPDX-License-Identifier: Apache-2.0
2
+ # Copyright 2019 The Meson development team
3
+
4
+ from __future__ import annotations
5
+
6
+ from mesonbuild.templates.sampleimpl import FileHeaderImpl
7
+
8
+
9
+ lib_h_template = '''#pragma once
10
+ #if defined _WIN32 || defined __CYGWIN__
11
+ #ifdef BUILDING_{utoken}
12
+ #define {utoken}_PUBLIC __declspec(dllexport)
13
+ #else
14
+ #define {utoken}_PUBLIC __declspec(dllimport)
15
+ #endif
16
+ #else
17
+ #ifdef BUILDING_{utoken}
18
+ #define {utoken}_PUBLIC __attribute__ ((visibility ("default")))
19
+ #else
20
+ #define {utoken}_PUBLIC
21
+ #endif
22
+ #endif
23
+
24
+ int {utoken}_PUBLIC {function_name}();
25
+
26
+ '''
27
+
28
+ lib_objcpp_template = '''#import <{header_file}>
29
+
30
+ /* This function will not be exported and is not
31
+ * directly callable by users of this library.
32
+ */
33
+ int internal_function() {{
34
+ return 0;
35
+ }}
36
+
37
+ int {function_name}() {{
38
+ return internal_function();
39
+ }}
40
+ '''
41
+
42
+ lib_objcpp_test_template = '''#import <{header_file}>
43
+ #import <iostream>
44
+
45
+ int main(int argc, char **argv) {{
46
+ if(argc != 1) {{
47
+ std::cout << argv[0] << " takes no arguments." << std::endl;
48
+ return 1;
49
+ }}
50
+ return {function_name}();
51
+ }}
52
+ '''
53
+
54
+ lib_objcpp_meson_template = '''project('{project_name}', 'objcpp',
55
+ version : '{version}',
56
+ default_options : ['warning_level=3'])
57
+
58
+ # These arguments are only used to build the shared library
59
+ # not the executables that use the library.
60
+ lib_args = ['-DBUILDING_{utoken}']
61
+
62
+ shlib = shared_library('{lib_name}', '{source_file}',
63
+ install : true,
64
+ objcpp_args : lib_args,
65
+ gnu_symbol_visibility : 'hidden',
66
+ )
67
+
68
+ test_exe = executable('{test_exe_name}', '{test_source_file}',
69
+ link_with : shlib)
70
+ test('{test_name}', test_exe)
71
+
72
+ # Make this library usable as a Meson subproject.
73
+ {ltoken}_dep = declare_dependency(
74
+ include_directories: include_directories('.'),
75
+ link_with : shlib)
76
+
77
+ # Make this library usable from the system's
78
+ # package manager.
79
+ install_headers('{header_file}', subdir : '{header_dir}')
80
+
81
+ pkg_mod = import('pkgconfig')
82
+ pkg_mod.generate(
83
+ name : '{project_name}',
84
+ filebase : '{ltoken}',
85
+ description : 'Meson sample project.',
86
+ subdirs : '{header_dir}',
87
+ libraries : shlib,
88
+ version : '{version}',
89
+ )
90
+ '''
91
+
92
+ hello_objcpp_template = '''#import <iostream>
93
+
94
+ #define PROJECT_NAME "{project_name}"
95
+
96
+ int main(int argc, char **argv) {{
97
+ if(argc != 1) {{
98
+ std::cout << argv[0] << " takes no arguments." << std::endl;
99
+ return 1;
100
+ }}
101
+ std::cout << "This is project " << PROJECT_NAME << "." << std::endl;
102
+ return 0;
103
+ }}
104
+ '''
105
+
106
+ hello_objcpp_meson_template = '''project('{project_name}', 'objcpp',
107
+ version : '{version}',
108
+ default_options : ['warning_level=3'])
109
+
110
+ exe = executable('{exe_name}', '{source_name}',
111
+ install : true)
112
+
113
+ test('basic', exe)
114
+ '''
115
+
116
+
117
+ class ObjCppProject(FileHeaderImpl):
118
+
119
+ source_ext = 'mm'
120
+ header_ext = 'h'
121
+ exe_template = hello_objcpp_template
122
+ exe_meson_template = hello_objcpp_meson_template
123
+ lib_template = lib_objcpp_template
124
+ lib_header_template = lib_h_template
125
+ lib_test_template = lib_objcpp_test_template
126
+ lib_meson_template = lib_objcpp_meson_template
@@ -0,0 +1,126 @@
1
+ # SPDX-License-Identifier: Apache-2.0
2
+ # Copyright 2019 The Meson development team
3
+
4
+ from __future__ import annotations
5
+
6
+ from mesonbuild.templates.sampleimpl import FileHeaderImpl
7
+
8
+
9
+ lib_h_template = '''#pragma once
10
+ #if defined _WIN32 || defined __CYGWIN__
11
+ #ifdef BUILDING_{utoken}
12
+ #define {utoken}_PUBLIC __declspec(dllexport)
13
+ #else
14
+ #define {utoken}_PUBLIC __declspec(dllimport)
15
+ #endif
16
+ #else
17
+ #ifdef BUILDING_{utoken}
18
+ #define {utoken}_PUBLIC __attribute__ ((visibility ("default")))
19
+ #else
20
+ #define {utoken}_PUBLIC
21
+ #endif
22
+ #endif
23
+
24
+ int {utoken}_PUBLIC {function_name}();
25
+
26
+ '''
27
+
28
+ lib_objc_template = '''#import <{header_file}>
29
+
30
+ /* This function will not be exported and is not
31
+ * directly callable by users of this library.
32
+ */
33
+ int internal_function() {{
34
+ return 0;
35
+ }}
36
+
37
+ int {function_name}() {{
38
+ return internal_function();
39
+ }}
40
+ '''
41
+
42
+ lib_objc_test_template = '''#import <{header_file}>
43
+ #import <stdio.h>
44
+
45
+ int main(int argc, char **argv) {{
46
+ if(argc != 1) {{
47
+ printf("%s takes no arguments.\\n", argv[0]);
48
+ return 1;
49
+ }}
50
+ return {function_name}();
51
+ }}
52
+ '''
53
+
54
+ lib_objc_meson_template = '''project('{project_name}', 'objc',
55
+ version : '{version}',
56
+ default_options : ['warning_level=3'])
57
+
58
+ # These arguments are only used to build the shared library
59
+ # not the executables that use the library.
60
+ lib_args = ['-DBUILDING_{utoken}']
61
+
62
+ shlib = shared_library('{lib_name}', '{source_file}',
63
+ install : true,
64
+ objc_args : lib_args,
65
+ gnu_symbol_visibility : 'hidden',
66
+ )
67
+
68
+ test_exe = executable('{test_exe_name}', '{test_source_file}',
69
+ link_with : shlib)
70
+ test('{test_name}', test_exe)
71
+
72
+ # Make this library usable as a Meson subproject.
73
+ {ltoken}_dep = declare_dependency(
74
+ include_directories: include_directories('.'),
75
+ link_with : shlib)
76
+
77
+ # Make this library usable from the system's
78
+ # package manager.
79
+ install_headers('{header_file}', subdir : '{header_dir}')
80
+
81
+ pkg_mod = import('pkgconfig')
82
+ pkg_mod.generate(
83
+ name : '{project_name}',
84
+ filebase : '{ltoken}',
85
+ description : 'Meson sample project.',
86
+ subdirs : '{header_dir}',
87
+ libraries : shlib,
88
+ version : '{version}',
89
+ )
90
+ '''
91
+
92
+ hello_objc_template = '''#import <stdio.h>
93
+
94
+ #define PROJECT_NAME "{project_name}"
95
+
96
+ int main(int argc, char **argv) {{
97
+ if(argc != 1) {{
98
+ printf("%s takes no arguments.\\n", argv[0]);
99
+ return 1;
100
+ }}
101
+ printf("This is project %s.\\n", PROJECT_NAME);
102
+ return 0;
103
+ }}
104
+ '''
105
+
106
+ hello_objc_meson_template = '''project('{project_name}', 'objc',
107
+ version : '{version}',
108
+ default_options : ['warning_level=3'])
109
+
110
+ exe = executable('{exe_name}', '{source_name}',
111
+ install : true)
112
+
113
+ test('basic', exe)
114
+ '''
115
+
116
+
117
+ class ObjCProject(FileHeaderImpl):
118
+
119
+ source_ext = 'm'
120
+ header_ext = 'h'
121
+ exe_template = hello_objc_template
122
+ exe_meson_template = hello_objc_meson_template
123
+ lib_template = lib_objc_template
124
+ lib_header_template = lib_h_template
125
+ lib_test_template = lib_objc_test_template
126
+ lib_meson_template = lib_objc_meson_template
@@ -0,0 +1,79 @@
1
+ # SPDX-License-Identifier: Apache-2.0
2
+ # Copyright 2019 The Meson development team
3
+
4
+ from __future__ import annotations
5
+
6
+ import typing as T
7
+
8
+ from mesonbuild.templates.sampleimpl import FileImpl
9
+
10
+
11
+ lib_rust_template = '''#![crate_name = "{crate_file}"]
12
+
13
+ /* This function will not be exported and is not
14
+ * directly callable by users of this library.
15
+ */
16
+ fn internal_function() -> i32 {{
17
+ return 0;
18
+ }}
19
+
20
+ pub fn {function_name}() -> i32 {{
21
+ return internal_function();
22
+ }}
23
+ '''
24
+
25
+ lib_rust_test_template = '''extern crate {crate_file};
26
+
27
+ fn main() {{
28
+ println!("printing: {{}}", {crate_file}::{function_name}());
29
+ }}
30
+ '''
31
+
32
+
33
+ lib_rust_meson_template = '''project('{project_name}', 'rust',
34
+ version : '{version}',
35
+ default_options : ['warning_level=3'])
36
+
37
+ shlib = static_library('{lib_name}', '{source_file}', install : true)
38
+
39
+ test_exe = executable('{test_exe_name}', '{test_source_file}',
40
+ link_with : shlib)
41
+ test('{test_name}', test_exe)
42
+
43
+ # Make this library usable as a Meson subproject.
44
+ {ltoken}_dep = declare_dependency(
45
+ include_directories: include_directories('.'),
46
+ link_with : shlib)
47
+ '''
48
+
49
+ hello_rust_template = '''
50
+ fn main() {{
51
+ let project_name = "{project_name}";
52
+ println!("This is project {{}}.\\n", project_name);
53
+ }}
54
+ '''
55
+
56
+ hello_rust_meson_template = '''project('{project_name}', 'rust',
57
+ version : '{version}',
58
+ default_options : ['warning_level=3'])
59
+
60
+ exe = executable('{exe_name}', '{source_name}',
61
+ install : true)
62
+
63
+ test('basic', exe)
64
+ '''
65
+
66
+
67
+ class RustProject(FileImpl):
68
+
69
+ source_ext = 'rs'
70
+ exe_template = hello_rust_template
71
+ exe_meson_template = hello_rust_meson_template
72
+ lib_template = lib_rust_template
73
+ lib_test_template = lib_rust_test_template
74
+ lib_meson_template = lib_rust_meson_template
75
+
76
+ def lib_kwargs(self) -> T.Dict[str, str]:
77
+ kwargs = super().lib_kwargs()
78
+ kwargs['crate_file'] = self.lowercase_token
79
+ return kwargs