koffi 2.16.0-beta.2 → 2.16.1

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 (425) hide show
  1. package/CHANGELOG.md +66 -0
  2. package/build/koffi/darwin_arm64/koffi.node +0 -0
  3. package/build/koffi/darwin_x64/koffi.node +0 -0
  4. package/build/koffi/freebsd_arm64/koffi.node +0 -0
  5. package/build/koffi/freebsd_ia32/koffi.node +0 -0
  6. package/build/koffi/freebsd_x64/koffi.node +0 -0
  7. package/build/koffi/linux_arm64/koffi.node +0 -0
  8. package/build/koffi/linux_armhf/koffi.node +0 -0
  9. package/build/koffi/linux_ia32/koffi.node +0 -0
  10. package/build/koffi/linux_loong64/koffi.node +0 -0
  11. package/build/koffi/linux_riscv64d/koffi.node +0 -0
  12. package/build/koffi/linux_x64/koffi.node +0 -0
  13. package/build/koffi/musl_arm64/koffi.node +0 -0
  14. package/build/koffi/musl_x64/koffi.node +0 -0
  15. package/build/koffi/openbsd_ia32/koffi.node +0 -0
  16. package/build/koffi/openbsd_x64/koffi.node +0 -0
  17. package/build/koffi/win32_arm64/koffi.exp +0 -0
  18. package/build/koffi/win32_arm64/koffi.lib +0 -0
  19. package/build/koffi/win32_arm64/koffi.node +0 -0
  20. package/build/koffi/win32_ia32/koffi.exp +0 -0
  21. package/build/koffi/win32_ia32/koffi.lib +0 -0
  22. package/build/koffi/win32_ia32/koffi.node +0 -0
  23. package/build/koffi/win32_x64/koffi.exp +0 -0
  24. package/build/koffi/win32_x64/koffi.lib +0 -0
  25. package/build/koffi/win32_x64/koffi.node +0 -0
  26. package/index.d.ts +9 -11
  27. package/index.js +6 -9
  28. package/indirect.js +6 -9
  29. package/lib/native/base/base.cc +1 -6
  30. package/package.json +3 -3
  31. package/src/cnoke/assets/FindCNoke.cmake +27 -16
  32. package/src/cnoke/assets/toolchains.json +126 -0
  33. package/src/cnoke/cnoke.js +27 -33
  34. package/src/cnoke/src/builder.js +124 -63
  35. package/src/cnoke/src/tools.js +1 -5
  36. package/src/koffi/CMakeLists.txt +32 -21
  37. package/src/koffi/src/{abi/arm32.cc → abi_arm32.cc} +235 -246
  38. package/src/koffi/src/{abi/arm32_asm.S → abi_arm32_asm.S} +19 -15
  39. package/src/koffi/src/{abi/arm64.cc → abi_arm64.cc} +253 -300
  40. package/src/koffi/src/{abi/arm64_asm.S → abi_arm64_asm.S} +16 -10
  41. package/src/koffi/src/{abi/arm64_asm.asm → abi_arm64_asm.asm} +17 -10
  42. package/src/koffi/src/{abi/loong64_asm.S → abi_loong64_asm.S} +16 -10
  43. package/src/koffi/src/{abi/riscv64.cc → abi_riscv64.cc} +233 -244
  44. package/src/koffi/src/{abi/riscv64_asm.S → abi_riscv64_asm.S} +16 -10
  45. package/src/koffi/src/{abi/x64_sysv.cc → abi_x64_sysv.cc} +208 -220
  46. package/src/koffi/src/{abi/x64_sysv_asm.S → abi_x64_sysv_asm.S} +17 -10
  47. package/src/koffi/src/{abi/x64_win.cc → abi_x64_win.cc} +175 -230
  48. package/src/koffi/src/{abi/x64_win_asm.S → abi_x64_win_asm.S} +49 -27
  49. package/src/koffi/src/{abi/x64_win_asm.asm → abi_x64_win_asm.asm} +54 -27
  50. package/src/koffi/src/{abi/x86.cc → abi_x86.cc} +187 -252
  51. package/src/koffi/src/{abi/x86_asm.S → abi_x86_asm.S} +38 -21
  52. package/src/koffi/src/{abi/x86_asm.asm → abi_x86_asm.asm} +33 -16
  53. package/src/koffi/src/call.cc +475 -290
  54. package/src/koffi/src/call.hh +15 -18
  55. package/src/koffi/src/ffi.cc +195 -184
  56. package/src/koffi/src/ffi.hh +60 -16
  57. package/src/koffi/src/init.js +1 -0
  58. package/src/koffi/src/util.cc +113 -159
  59. package/src/koffi/src/util.hh +23 -74
  60. package/src/koffi/src/win32.cc +13 -0
  61. package/src/koffi/src/win32.hh +7 -0
  62. package/src/koffi/tools/write_trampolines.js +77 -0
  63. package/doc/README.md +0 -27
  64. package/doc/assets.ini +0 -24
  65. package/doc/build.sh +0 -9
  66. package/doc/develop.sh +0 -15
  67. package/doc/pages/404.md +0 -17
  68. package/doc/pages.ini +0 -86
  69. package/doc/static/highlight.js +0 -8
  70. package/doc/static/koffi.css +0 -11
  71. package/doc/static/koffi.png +0 -0
  72. package/doc/static/logo.webp +0 -0
  73. package/doc/static/perf_linux.png +0 -0
  74. package/doc/static/perf_windows.png +0 -0
  75. package/doc/static/print.css +0 -10
  76. package/doc/templates/code.html +0 -48
  77. package/doc/templates/page.html +0 -47
  78. package/src/koffi/cmake/raylib.cmake +0 -85
  79. package/src/koffi/cmake/sqlite3.cmake +0 -9
  80. package/src/koffi/examples/electron-builder/README.md +0 -11
  81. package/src/koffi/examples/electron-builder/package.json +0 -21
  82. package/src/koffi/examples/electron-builder/src/app.js +0 -20
  83. package/src/koffi/examples/electron-builder/src/index.html +0 -143
  84. package/src/koffi/examples/electron-builder/src/preload.js +0 -5
  85. package/src/koffi/examples/electron-forge/README.md +0 -25
  86. package/src/koffi/examples/electron-forge/forge.config.js +0 -63
  87. package/src/koffi/examples/electron-forge/package.json +0 -39
  88. package/src/koffi/examples/electron-forge/src/index.css +0 -7
  89. package/src/koffi/examples/electron-forge/src/index.html +0 -143
  90. package/src/koffi/examples/electron-forge/src/main.js +0 -52
  91. package/src/koffi/examples/electron-forge/src/preload.js +0 -5
  92. package/src/koffi/examples/electron-forge/src/renderer.js +0 -31
  93. package/src/koffi/examples/electron-forge/webpack.main.config.js +0 -11
  94. package/src/koffi/examples/electron-forge/webpack.renderer.config.js +0 -13
  95. package/src/koffi/examples/electron-forge/webpack.rules.js +0 -35
  96. package/src/koffi/examples/node-esbuild/README.md +0 -19
  97. package/src/koffi/examples/node-esbuild/index.js +0 -2
  98. package/src/koffi/examples/node-esbuild/package.json +0 -16
  99. package/src/koffi/examples/nwjs/README.md +0 -20
  100. package/src/koffi/examples/nwjs/package.json +0 -11
  101. package/src/koffi/examples/nwjs/src/index.html +0 -145
  102. package/src/koffi/examples/nwjs/src/package.json +0 -10
  103. package/src/koffi/examples/yao-pkg/README.md +0 -17
  104. package/src/koffi/examples/yao-pkg/index.js +0 -2
  105. package/src/koffi/examples/yao-pkg/package.json +0 -22
  106. package/src/koffi/src/primitives.inc +0 -39
  107. package/src/koffi/src/trampolines/armasm.inc +0 -32771
  108. package/src/koffi/src/trampolines/gnu.inc +0 -24577
  109. package/src/koffi/src/trampolines/masm32.inc +0 -32769
  110. package/src/koffi/src/trampolines/masm64.inc +0 -32769
  111. package/src/koffi/src/trampolines/prototypes.inc +0 -16388
  112. package/vendor/node-addon-api/CHANGELOG.md +0 -1272
  113. package/vendor/node-addon-api/CODE_OF_CONDUCT.md +0 -4
  114. package/vendor/node-addon-api/CONTRIBUTING.md +0 -203
  115. package/vendor/node-addon-api/appveyor.yml +0 -37
  116. package/vendor/node-addon-api/benchmark/README.md +0 -47
  117. package/vendor/node-addon-api/benchmark/binding.gyp +0 -25
  118. package/vendor/node-addon-api/benchmark/function_args.cc +0 -250
  119. package/vendor/node-addon-api/benchmark/function_args.js +0 -60
  120. package/vendor/node-addon-api/benchmark/index.js +0 -34
  121. package/vendor/node-addon-api/benchmark/property_descriptor.cc +0 -84
  122. package/vendor/node-addon-api/benchmark/property_descriptor.js +0 -38
  123. package/vendor/node-addon-api/common.gypi +0 -21
  124. package/vendor/node-addon-api/doc/README.md +0 -145
  125. package/vendor/node-addon-api/doc/addon.md +0 -163
  126. package/vendor/node-addon-api/doc/array.md +0 -81
  127. package/vendor/node-addon-api/doc/array_buffer.md +0 -165
  128. package/vendor/node-addon-api/doc/async_context.md +0 -86
  129. package/vendor/node-addon-api/doc/async_operations.md +0 -31
  130. package/vendor/node-addon-api/doc/async_worker.md +0 -428
  131. package/vendor/node-addon-api/doc/async_worker_variants.md +0 -578
  132. package/vendor/node-addon-api/doc/basic_env.md +0 -200
  133. package/vendor/node-addon-api/doc/bigint.md +0 -97
  134. package/vendor/node-addon-api/doc/boolean.md +0 -68
  135. package/vendor/node-addon-api/doc/buffer.md +0 -245
  136. package/vendor/node-addon-api/doc/callback_scope.md +0 -54
  137. package/vendor/node-addon-api/doc/callbackinfo.md +0 -97
  138. package/vendor/node-addon-api/doc/checker-tool.md +0 -32
  139. package/vendor/node-addon-api/doc/class_property_descriptor.md +0 -123
  140. package/vendor/node-addon-api/doc/cmake-js.md +0 -87
  141. package/vendor/node-addon-api/doc/contributing/creating_a_release.md +0 -95
  142. package/vendor/node-addon-api/doc/conversion-tool.md +0 -28
  143. package/vendor/node-addon-api/doc/dataview.md +0 -248
  144. package/vendor/node-addon-api/doc/date.md +0 -68
  145. package/vendor/node-addon-api/doc/env.md +0 -87
  146. package/vendor/node-addon-api/doc/error.md +0 -120
  147. package/vendor/node-addon-api/doc/error_handling.md +0 -266
  148. package/vendor/node-addon-api/doc/escapable_handle_scope.md +0 -80
  149. package/vendor/node-addon-api/doc/external.md +0 -79
  150. package/vendor/node-addon-api/doc/external_buffer.md +0 -18
  151. package/vendor/node-addon-api/doc/finalization.md +0 -153
  152. package/vendor/node-addon-api/doc/function.md +0 -402
  153. package/vendor/node-addon-api/doc/function_reference.md +0 -238
  154. package/vendor/node-addon-api/doc/generator.md +0 -13
  155. package/vendor/node-addon-api/doc/handle_scope.md +0 -77
  156. package/vendor/node-addon-api/doc/hierarchy.md +0 -95
  157. package/vendor/node-addon-api/doc/instance_wrap.md +0 -408
  158. package/vendor/node-addon-api/doc/maybe.md +0 -76
  159. package/vendor/node-addon-api/doc/memory_management.md +0 -27
  160. package/vendor/node-addon-api/doc/name.md +0 -29
  161. package/vendor/node-addon-api/doc/node-gyp.md +0 -82
  162. package/vendor/node-addon-api/doc/number.md +0 -163
  163. package/vendor/node-addon-api/doc/object.md +0 -411
  164. package/vendor/node-addon-api/doc/object_lifetime_management.md +0 -83
  165. package/vendor/node-addon-api/doc/object_reference.md +0 -117
  166. package/vendor/node-addon-api/doc/object_wrap.md +0 -604
  167. package/vendor/node-addon-api/doc/prebuild_tools.md +0 -16
  168. package/vendor/node-addon-api/doc/promises.md +0 -130
  169. package/vendor/node-addon-api/doc/property_descriptor.md +0 -286
  170. package/vendor/node-addon-api/doc/propertylvalue.md +0 -50
  171. package/vendor/node-addon-api/doc/range_error.md +0 -59
  172. package/vendor/node-addon-api/doc/reference.md +0 -113
  173. package/vendor/node-addon-api/doc/setup.md +0 -115
  174. package/vendor/node-addon-api/doc/string.md +0 -93
  175. package/vendor/node-addon-api/doc/symbol.md +0 -61
  176. package/vendor/node-addon-api/doc/syntax_error.md +0 -66
  177. package/vendor/node-addon-api/doc/threadsafe.md +0 -121
  178. package/vendor/node-addon-api/doc/threadsafe_function.md +0 -290
  179. package/vendor/node-addon-api/doc/type_error.md +0 -59
  180. package/vendor/node-addon-api/doc/type_taggable.md +0 -40
  181. package/vendor/node-addon-api/doc/typed_array.md +0 -78
  182. package/vendor/node-addon-api/doc/typed_array_of.md +0 -137
  183. package/vendor/node-addon-api/doc/typed_threadsafe_function.md +0 -306
  184. package/vendor/node-addon-api/doc/value.md +0 -368
  185. package/vendor/node-addon-api/doc/version_management.md +0 -43
  186. package/vendor/node-addon-api/eslint.config.js +0 -5
  187. package/vendor/node-addon-api/except.gypi +0 -25
  188. package/vendor/node-addon-api/index.js +0 -14
  189. package/vendor/node-addon-api/node_addon_api.gyp +0 -42
  190. package/vendor/node-addon-api/node_api.gyp +0 -9
  191. package/vendor/node-addon-api/noexcept.gypi +0 -26
  192. package/vendor/node-addon-api/nothing.c +0 -0
  193. package/vendor/node-addon-api/package-support.json +0 -21
  194. package/vendor/node-addon-api/package.json +0 -480
  195. package/vendor/node-addon-api/release-please-config.json +0 -15
  196. package/vendor/node-addon-api/test/README.md +0 -91
  197. package/vendor/node-addon-api/test/addon.cc +0 -44
  198. package/vendor/node-addon-api/test/addon.js +0 -7
  199. package/vendor/node-addon-api/test/addon_build/index.js +0 -49
  200. package/vendor/node-addon-api/test/addon_build/tpl/addon.cc +0 -18
  201. package/vendor/node-addon-api/test/addon_build/tpl/binding.gyp +0 -63
  202. package/vendor/node-addon-api/test/addon_build/tpl/index.js +0 -9
  203. package/vendor/node-addon-api/test/addon_build/tpl/package.json +0 -11
  204. package/vendor/node-addon-api/test/addon_data.cc +0 -98
  205. package/vendor/node-addon-api/test/addon_data.js +0 -24
  206. package/vendor/node-addon-api/test/array_buffer.cc +0 -243
  207. package/vendor/node-addon-api/test/array_buffer.js +0 -70
  208. package/vendor/node-addon-api/test/async_context.cc +0 -36
  209. package/vendor/node-addon-api/test/async_context.js +0 -122
  210. package/vendor/node-addon-api/test/async_progress_queue_worker.cc +0 -248
  211. package/vendor/node-addon-api/test/async_progress_queue_worker.js +0 -180
  212. package/vendor/node-addon-api/test/async_progress_worker.cc +0 -357
  213. package/vendor/node-addon-api/test/async_progress_worker.js +0 -200
  214. package/vendor/node-addon-api/test/async_worker.cc +0 -341
  215. package/vendor/node-addon-api/test/async_worker.js +0 -264
  216. package/vendor/node-addon-api/test/async_worker_nocallback.js +0 -19
  217. package/vendor/node-addon-api/test/async_worker_persistent.cc +0 -63
  218. package/vendor/node-addon-api/test/async_worker_persistent.js +0 -24
  219. package/vendor/node-addon-api/test/basic_types/array.cc +0 -40
  220. package/vendor/node-addon-api/test/basic_types/array.js +0 -34
  221. package/vendor/node-addon-api/test/basic_types/boolean.cc +0 -40
  222. package/vendor/node-addon-api/test/basic_types/boolean.js +0 -34
  223. package/vendor/node-addon-api/test/basic_types/number.cc +0 -105
  224. package/vendor/node-addon-api/test/basic_types/number.js +0 -115
  225. package/vendor/node-addon-api/test/basic_types/value.cc +0 -177
  226. package/vendor/node-addon-api/test/basic_types/value.js +0 -173
  227. package/vendor/node-addon-api/test/bigint.cc +0 -91
  228. package/vendor/node-addon-api/test/bigint.js +0 -53
  229. package/vendor/node-addon-api/test/binding-swallowexcept.cc +0 -12
  230. package/vendor/node-addon-api/test/binding.cc +0 -200
  231. package/vendor/node-addon-api/test/binding.gyp +0 -160
  232. package/vendor/node-addon-api/test/buffer.cc +0 -185
  233. package/vendor/node-addon-api/test/buffer.h +0 -26
  234. package/vendor/node-addon-api/test/buffer.js +0 -150
  235. package/vendor/node-addon-api/test/buffer_new_or_copy-inl.h +0 -68
  236. package/vendor/node-addon-api/test/buffer_no_external.cc +0 -24
  237. package/vendor/node-addon-api/test/callbackInfo.cc +0 -27
  238. package/vendor/node-addon-api/test/callbackInfo.js +0 -9
  239. package/vendor/node-addon-api/test/callbackscope.cc +0 -39
  240. package/vendor/node-addon-api/test/callbackscope.js +0 -49
  241. package/vendor/node-addon-api/test/child_processes/addon.js +0 -11
  242. package/vendor/node-addon-api/test/child_processes/addon_data.js +0 -24
  243. package/vendor/node-addon-api/test/child_processes/objectwrap_function.js +0 -22
  244. package/vendor/node-addon-api/test/child_processes/threadsafe_function_exception.js +0 -33
  245. package/vendor/node-addon-api/test/child_processes/typed_threadsafe_function_exception.js +0 -19
  246. package/vendor/node-addon-api/test/common/index.js +0 -246
  247. package/vendor/node-addon-api/test/common/test_helper.h +0 -71
  248. package/vendor/node-addon-api/test/dataview/dataview.cc +0 -48
  249. package/vendor/node-addon-api/test/dataview/dataview.js +0 -35
  250. package/vendor/node-addon-api/test/dataview/dataview_read_write.cc +0 -115
  251. package/vendor/node-addon-api/test/dataview/dataview_read_write.js +0 -92
  252. package/vendor/node-addon-api/test/date.cc +0 -45
  253. package/vendor/node-addon-api/test/date.js +0 -18
  254. package/vendor/node-addon-api/test/env_cleanup.cc +0 -100
  255. package/vendor/node-addon-api/test/env_cleanup.js +0 -55
  256. package/vendor/node-addon-api/test/env_misc.cc +0 -25
  257. package/vendor/node-addon-api/test/env_misc.js +0 -12
  258. package/vendor/node-addon-api/test/error.cc +0 -436
  259. package/vendor/node-addon-api/test/error.js +0 -111
  260. package/vendor/node-addon-api/test/error_handling_for_primitives.cc +0 -13
  261. package/vendor/node-addon-api/test/error_handling_for_primitives.js +0 -29
  262. package/vendor/node-addon-api/test/error_terminating_environment.js +0 -99
  263. package/vendor/node-addon-api/test/except_all.cc +0 -22
  264. package/vendor/node-addon-api/test/except_all.js +0 -14
  265. package/vendor/node-addon-api/test/exports.js +0 -19
  266. package/vendor/node-addon-api/test/external.cc +0 -85
  267. package/vendor/node-addon-api/test/external.js +0 -85
  268. package/vendor/node-addon-api/test/finalizer_order.cc +0 -152
  269. package/vendor/node-addon-api/test/finalizer_order.js +0 -98
  270. package/vendor/node-addon-api/test/function.cc +0 -338
  271. package/vendor/node-addon-api/test/function.js +0 -137
  272. package/vendor/node-addon-api/test/function_reference.cc +0 -204
  273. package/vendor/node-addon-api/test/function_reference.js +0 -157
  274. package/vendor/node-addon-api/test/globalObject/global_object.cc +0 -61
  275. package/vendor/node-addon-api/test/globalObject/global_object_delete_property.cc +0 -31
  276. package/vendor/node-addon-api/test/globalObject/global_object_delete_property.js +0 -58
  277. package/vendor/node-addon-api/test/globalObject/global_object_get_property.cc +0 -40
  278. package/vendor/node-addon-api/test/globalObject/global_object_get_property.js +0 -56
  279. package/vendor/node-addon-api/test/globalObject/global_object_has_own_property.cc +0 -28
  280. package/vendor/node-addon-api/test/globalObject/global_object_has_own_property.js +0 -46
  281. package/vendor/node-addon-api/test/globalObject/global_object_set_property.cc +0 -31
  282. package/vendor/node-addon-api/test/globalObject/global_object_set_property.js +0 -56
  283. package/vendor/node-addon-api/test/handlescope.cc +0 -86
  284. package/vendor/node-addon-api/test/handlescope.js +0 -16
  285. package/vendor/node-addon-api/test/index.js +0 -160
  286. package/vendor/node-addon-api/test/maybe/check.cc +0 -69
  287. package/vendor/node-addon-api/test/maybe/index.js +0 -50
  288. package/vendor/node-addon-api/test/memory_management.cc +0 -18
  289. package/vendor/node-addon-api/test/memory_management.js +0 -9
  290. package/vendor/node-addon-api/test/movable_callbacks.cc +0 -23
  291. package/vendor/node-addon-api/test/movable_callbacks.js +0 -21
  292. package/vendor/node-addon-api/test/name.cc +0 -110
  293. package/vendor/node-addon-api/test/name.js +0 -59
  294. package/vendor/node-addon-api/test/napi_child.js +0 -14
  295. package/vendor/node-addon-api/test/object/delete_property.cc +0 -38
  296. package/vendor/node-addon-api/test/object/delete_property.js +0 -41
  297. package/vendor/node-addon-api/test/object/finalizer.cc +0 -30
  298. package/vendor/node-addon-api/test/object/finalizer.js +0 -28
  299. package/vendor/node-addon-api/test/object/get_property.cc +0 -34
  300. package/vendor/node-addon-api/test/object/get_property.js +0 -40
  301. package/vendor/node-addon-api/test/object/has_own_property.cc +0 -34
  302. package/vendor/node-addon-api/test/object/has_own_property.js +0 -34
  303. package/vendor/node-addon-api/test/object/has_property.cc +0 -38
  304. package/vendor/node-addon-api/test/object/has_property.js +0 -37
  305. package/vendor/node-addon-api/test/object/object.cc +0 -430
  306. package/vendor/node-addon-api/test/object/object.js +0 -218
  307. package/vendor/node-addon-api/test/object/object_deprecated.cc +0 -70
  308. package/vendor/node-addon-api/test/object/object_deprecated.js +0 -42
  309. package/vendor/node-addon-api/test/object/object_freeze_seal.cc +0 -25
  310. package/vendor/node-addon-api/test/object/object_freeze_seal.js +0 -61
  311. package/vendor/node-addon-api/test/object/set_property.cc +0 -45
  312. package/vendor/node-addon-api/test/object/set_property.js +0 -30
  313. package/vendor/node-addon-api/test/object/subscript_operator.cc +0 -58
  314. package/vendor/node-addon-api/test/object/subscript_operator.js +0 -17
  315. package/vendor/node-addon-api/test/object_reference.cc +0 -417
  316. package/vendor/node-addon-api/test/object_reference.js +0 -262
  317. package/vendor/node-addon-api/test/objectwrap.cc +0 -295
  318. package/vendor/node-addon-api/test/objectwrap.js +0 -309
  319. package/vendor/node-addon-api/test/objectwrap_constructor_exception.cc +0 -26
  320. package/vendor/node-addon-api/test/objectwrap_constructor_exception.js +0 -18
  321. package/vendor/node-addon-api/test/objectwrap_function.cc +0 -43
  322. package/vendor/node-addon-api/test/objectwrap_function.js +0 -6
  323. package/vendor/node-addon-api/test/objectwrap_multiple_inheritance.cc +0 -30
  324. package/vendor/node-addon-api/test/objectwrap_multiple_inheritance.js +0 -13
  325. package/vendor/node-addon-api/test/objectwrap_removewrap.cc +0 -45
  326. package/vendor/node-addon-api/test/objectwrap_removewrap.js +0 -32
  327. package/vendor/node-addon-api/test/objectwrap_worker_thread.js +0 -20
  328. package/vendor/node-addon-api/test/promise.cc +0 -111
  329. package/vendor/node-addon-api/test/promise.js +0 -43
  330. package/vendor/node-addon-api/test/reference.cc +0 -78
  331. package/vendor/node-addon-api/test/reference.js +0 -20
  332. package/vendor/node-addon-api/test/require_basic_finalizers/index.js +0 -38
  333. package/vendor/node-addon-api/test/require_basic_finalizers/tpl/addon.cc +0 -12
  334. package/vendor/node-addon-api/test/require_basic_finalizers/tpl/binding.gyp +0 -48
  335. package/vendor/node-addon-api/test/require_basic_finalizers/tpl/index.js +0 -3
  336. package/vendor/node-addon-api/test/require_basic_finalizers/tpl/package.json +0 -11
  337. package/vendor/node-addon-api/test/run_script.cc +0 -56
  338. package/vendor/node-addon-api/test/run_script.js +0 -45
  339. package/vendor/node-addon-api/test/symbol.cc +0 -79
  340. package/vendor/node-addon-api/test/symbol.js +0 -66
  341. package/vendor/node-addon-api/test/testUtil.js +0 -54
  342. package/vendor/node-addon-api/test/threadsafe_function/threadsafe_function.cc +0 -230
  343. package/vendor/node-addon-api/test/threadsafe_function/threadsafe_function.js +0 -225
  344. package/vendor/node-addon-api/test/threadsafe_function/threadsafe_function_ctx.cc +0 -155
  345. package/vendor/node-addon-api/test/threadsafe_function/threadsafe_function_ctx.js +0 -13
  346. package/vendor/node-addon-api/test/threadsafe_function/threadsafe_function_exception.cc +0 -50
  347. package/vendor/node-addon-api/test/threadsafe_function/threadsafe_function_exception.js +0 -20
  348. package/vendor/node-addon-api/test/threadsafe_function/threadsafe_function_existing_tsfn.cc +0 -125
  349. package/vendor/node-addon-api/test/threadsafe_function/threadsafe_function_existing_tsfn.js +0 -14
  350. package/vendor/node-addon-api/test/threadsafe_function/threadsafe_function_ptr.cc +0 -27
  351. package/vendor/node-addon-api/test/threadsafe_function/threadsafe_function_ptr.js +0 -7
  352. package/vendor/node-addon-api/test/threadsafe_function/threadsafe_function_sum.cc +0 -240
  353. package/vendor/node-addon-api/test/threadsafe_function/threadsafe_function_sum.js +0 -59
  354. package/vendor/node-addon-api/test/threadsafe_function/threadsafe_function_unref.cc +0 -55
  355. package/vendor/node-addon-api/test/threadsafe_function/threadsafe_function_unref.js +0 -98
  356. package/vendor/node-addon-api/test/thunking_manual.cc +0 -127
  357. package/vendor/node-addon-api/test/thunking_manual.js +0 -16
  358. package/vendor/node-addon-api/test/type_taggable.cc +0 -66
  359. package/vendor/node-addon-api/test/type_taggable.js +0 -59
  360. package/vendor/node-addon-api/test/typed_threadsafe_function/typed_threadsafe_function.cc +0 -215
  361. package/vendor/node-addon-api/test/typed_threadsafe_function/typed_threadsafe_function.js +0 -188
  362. package/vendor/node-addon-api/test/typed_threadsafe_function/typed_threadsafe_function_ctx.cc +0 -120
  363. package/vendor/node-addon-api/test/typed_threadsafe_function/typed_threadsafe_function_ctx.js +0 -14
  364. package/vendor/node-addon-api/test/typed_threadsafe_function/typed_threadsafe_function_exception.cc +0 -39
  365. package/vendor/node-addon-api/test/typed_threadsafe_function/typed_threadsafe_function_exception.js +0 -13
  366. package/vendor/node-addon-api/test/typed_threadsafe_function/typed_threadsafe_function_existing_tsfn.cc +0 -127
  367. package/vendor/node-addon-api/test/typed_threadsafe_function/typed_threadsafe_function_existing_tsfn.js +0 -14
  368. package/vendor/node-addon-api/test/typed_threadsafe_function/typed_threadsafe_function_ptr.cc +0 -32
  369. package/vendor/node-addon-api/test/typed_threadsafe_function/typed_threadsafe_function_ptr.js +0 -8
  370. package/vendor/node-addon-api/test/typed_threadsafe_function/typed_threadsafe_function_sum.cc +0 -237
  371. package/vendor/node-addon-api/test/typed_threadsafe_function/typed_threadsafe_function_sum.js +0 -59
  372. package/vendor/node-addon-api/test/typed_threadsafe_function/typed_threadsafe_function_unref.cc +0 -67
  373. package/vendor/node-addon-api/test/typed_threadsafe_function/typed_threadsafe_function_unref.js +0 -98
  374. package/vendor/node-addon-api/test/typedarray-bigint.js +0 -58
  375. package/vendor/node-addon-api/test/typedarray.cc +0 -413
  376. package/vendor/node-addon-api/test/typedarray.js +0 -103
  377. package/vendor/node-addon-api/test/value_type_cast.cc +0 -60
  378. package/vendor/node-addon-api/test/value_type_cast.js +0 -106
  379. package/vendor/node-addon-api/test/version_management.cc +0 -28
  380. package/vendor/node-addon-api/test/version_management.js +0 -29
  381. package/vendor/node-addon-api/tools/README.md +0 -73
  382. package/vendor/node-addon-api/tools/check-napi.js +0 -99
  383. package/vendor/node-addon-api/tools/clang-format.js +0 -71
  384. package/vendor/node-addon-api/tools/conversion.js +0 -301
  385. package/vendor/node-addon-api/unit-test/README.md +0 -28
  386. package/vendor/node-addon-api/unit-test/binding-file-template.js +0 -39
  387. package/vendor/node-addon-api/unit-test/binding.gyp +0 -72
  388. package/vendor/node-addon-api/unit-test/exceptions.js +0 -32
  389. package/vendor/node-addon-api/unit-test/generate-binding-cc.js +0 -61
  390. package/vendor/node-addon-api/unit-test/injectTestParams.js +0 -101
  391. package/vendor/node-addon-api/unit-test/listOfTestModules.js +0 -88
  392. package/vendor/node-addon-api/unit-test/matchModules.js +0 -65
  393. package/vendor/node-addon-api/unit-test/setup.js +0 -13
  394. package/vendor/node-addon-api/unit-test/spawnTask.js +0 -26
  395. package/vendor/node-addon-api/unit-test/test.js +0 -30
  396. package/vendor/node-api-headers/CHANGELOG.md +0 -130
  397. package/vendor/node-api-headers/CODE_OF_CONDUCT.md +0 -4
  398. package/vendor/node-api-headers/CONTRIBUTING.md +0 -32
  399. package/vendor/node-api-headers/CREATING_A_RELEASE.md +0 -68
  400. package/vendor/node-api-headers/index.js +0 -17
  401. package/vendor/node-api-headers/lib/clang-utils.js +0 -50
  402. package/vendor/node-api-headers/lib/parse-utils.js +0 -92
  403. package/vendor/node-api-headers/package.json +0 -59
  404. package/vendor/node-api-headers/release-please-config.json +0 -12
  405. package/vendor/node-api-headers/scripts/update-headers.js +0 -246
  406. package/vendor/node-api-headers/scripts/write-symbols.js +0 -154
  407. package/vendor/node-api-headers/scripts/write-win32-def.js +0 -52
  408. package/vendor/node-api-headers/symbols.js +0 -257
  409. package/vendor/node-api-headers/test/parse-utils.js +0 -21
  410. /package/doc/{pages/benchmarks.md → benchmarks.md} +0 -0
  411. /package/doc/{pages/callbacks.md → callbacks.md} +0 -0
  412. /package/doc/{pages/contribute.md → contribute.md} +0 -0
  413. /package/doc/{pages/functions.md → functions.md} +0 -0
  414. /package/doc/{pages/index.md → index.md} +0 -0
  415. /package/doc/{pages/input.md → input.md} +0 -0
  416. /package/doc/{pages/migration.md → migration.md} +0 -0
  417. /package/doc/{pages/misc.md → misc.md} +0 -0
  418. /package/doc/{pages/output.md → output.md} +0 -0
  419. /package/doc/{pages/packaging.md → packaging.md} +0 -0
  420. /package/doc/{pages/platforms.md → platforms.md} +0 -0
  421. /package/doc/{pages/pointers.md → pointers.md} +0 -0
  422. /package/doc/{pages/start.md → start.md} +0 -0
  423. /package/doc/{pages/unions.md → unions.md} +0 -0
  424. /package/doc/{pages/variables.md → variables.md} +0 -0
  425. /package/src/koffi/src/{abi/loong64.cc → abi_loong64.cc} +0 -0
@@ -8,6 +8,7 @@ const os = require('os');
8
8
  const path = require('path');
9
9
  const { spawnSync } = require('child_process');
10
10
  const tools = require('./tools.js');
11
+ const TOOLCHAINS = require('../assets/toolchains.json');
11
12
 
12
13
  const DefaultOptions = {
13
14
  mode: 'RelWithDebInfo'
@@ -16,6 +17,8 @@ const DefaultOptions = {
16
17
  function Builder(config = {}) {
17
18
  let self = this;
18
19
 
20
+ let host = `${process.platform}_${tools.determine_arch()}`;
21
+
19
22
  let app_dir = config.app_dir;
20
23
  let project_dir = config.project_dir;
21
24
  let package_dir = config.package_dir;
@@ -32,8 +35,7 @@ function Builder(config = {}) {
32
35
  package_dir = package_dir.replace(/\\/g, '/');
33
36
 
34
37
  let runtime_version = config.runtime_version;
35
- let arch = config.arch;
36
- let toolset = config.toolset || null;
38
+ let toolchain = config.toolchain || null;
37
39
  let prefer_clang = config.prefer_clang || false;
38
40
  let mode = config.mode || DefaultOptions.mode;
39
41
  let targets = config.targets || [];
@@ -44,8 +46,9 @@ function Builder(config = {}) {
44
46
  runtime_version = process.version;
45
47
  if (runtime_version.startsWith('v'))
46
48
  runtime_version = runtime_version.substr(1);
47
- if (arch == null)
48
- arch = tools.determine_arch();
49
+
50
+ if (toolchain != null && !Object.hasOwn(TOOLCHAINS, toolchain))
51
+ throw new Error(`Unknown cross-compilation toolchain '${toolchain}'`);
49
52
 
50
53
  let options = null;
51
54
 
@@ -64,7 +67,7 @@ function Builder(config = {}) {
64
67
  }
65
68
  }
66
69
  build_dir = build_dir.replace(/\\/g, '/');
67
- work_dir = build_dir + `/v${runtime_version}_${arch}/${mode}`;
70
+ work_dir = build_dir + `/v${runtime_version}_${toolchain ?? 'native'}/${mode}`;
68
71
  output_dir = work_dir + '/Output';
69
72
 
70
73
  let cmake_bin = null;
@@ -78,7 +81,7 @@ function Builder(config = {}) {
78
81
  check_compatibility();
79
82
 
80
83
  console.log(`>> Node: ${runtime_version}`);
81
- console.log(`>> Target: ${process.platform}_${arch}`);
84
+ console.log(`>> Toolchain: ${toolchain ?? 'native'}`);
82
85
 
83
86
  // Prepare build directory
84
87
  fs.mkdirSync(build_dir, { recursive: true, mode: 0o755 });
@@ -87,6 +90,8 @@ function Builder(config = {}) {
87
90
 
88
91
  retry &= fs.existsSync(work_dir + '/CMakeCache.txt');
89
92
 
93
+ args.push(`-DNODE_JS_EXECPATH=${process.execPath}`);
94
+
90
95
  // Download or use Node headers
91
96
  if (options.api == null) {
92
97
  let destname = `${cache_dir}/node-v${runtime_version}-headers.tar.gz`;
@@ -103,77 +108,46 @@ function Builder(config = {}) {
103
108
  args.push(`-DNODE_JS_INCLUDE_DIRS=${work_dir}/headers/include/node`);
104
109
  } else {
105
110
  console.log(`>> Using local node-api headers`);
106
- args.push(`-DNODE_JS_INCLUDE_DIRS=${options.api}/include`);
111
+
112
+ let api_dir = expand_path(options.api, project_dir);
113
+ args.push(`-DNODE_JS_INCLUDE_DIRS=${api_dir}/include`);
107
114
  }
108
115
 
109
116
  args.push(`-DCMAKE_MODULE_PATH=${app_dir}/assets`);
110
117
 
111
- let win32 = (process.platform == 'win32');
112
- let msvc = (process.platform == 'win32' && process.env.MSYSTEM == null);
113
- let darwin = (process.platform == 'darwin');
118
+ let win32 = (toolchain ?? host).startsWith('win32_');
119
+ let mingw = (process.platform == 'win32' && process.env.MSYSTEM != null);
114
120
 
115
121
  // Handle Node import library on Windows
116
122
  if (win32) {
117
- if (msvc) {
118
- if (options.api == null) {
119
- let dirname;
120
- switch (arch) {
121
- case 'ia32': { dirname = 'win-x86'; } break;
122
- case 'x64': { dirname = 'win-x64'; } break;
123
- case 'arm64': { dirname = 'win-arm64'; } break;
124
-
125
- default: {
126
- throw new Error(`Unsupported architecture '${arch}' for Node on Windows`);
127
- } break;
128
- }
123
+ if (mingw) {
124
+ args.push(`-DNODE_JS_LINK_LIB=node.dll`);
125
+ } else {
126
+ let info = TOOLCHAINS[toolchain ?? host];
129
127
 
130
- let destname = `${cache_dir}/node_v${runtime_version}_${arch}.lib`;
128
+ if (options.api == null) {
129
+ let destname = `${cache_dir}/node_v${runtime_version}_${toolchain ?? host}.lib`;
131
130
 
132
131
  if (!fs.existsSync(destname)) {
133
132
  fs.mkdirSync(cache_dir, { recursive: true, mode: 0o755 });
134
133
 
135
- let url = `https://nodejs.org/dist/v${runtime_version}/${dirname}/node.lib`;
134
+ let url = `https://nodejs.org/dist/v${runtime_version}/${info.lib}/node.lib`;
136
135
  await tools.download_http(url, destname);
137
136
  }
138
137
 
139
138
  fs.copyFileSync(destname, work_dir + '/node.lib');
140
139
  args.push(`-DNODE_JS_LINK_LIB=${work_dir}/node.lib`);
141
140
  } else {
142
- args.push(`-DNODE_JS_LINK_DEF=${options.api}/def/node_api.def`);
143
- }
144
-
145
- switch (arch) {
146
- case 'ia32': {
147
- args.push('-DNODE_JS_LINK_FLAGS=/DELAYLOAD:node.exe;/SAFESEH:NO');
148
- args.push('-A', 'Win32');
149
- } break;
150
- case 'arm64': {
151
- args.push('-DNODE_JS_LINK_FLAGS=/DELAYLOAD:node.exe;/SAFESEH:NO');
152
- args.push('-A', 'ARM64');
153
- } break;
154
- case 'x64': {
155
- args.push('-DNODE_JS_LINK_FLAGS=/DELAYLOAD:node.exe');
156
- args.push('-A', 'x64');
157
- } break;
141
+ let api_dir = expand_path(options.api, project_dir);
142
+ args.push(`-DNODE_JS_LINK_DEF=${api_dir}/def/node_api.def`);
158
143
  }
159
-
160
- fs.copyFileSync(`${app_dir}/assets/win_delay_hook.c`, work_dir + '/win_delay_hook.c');
161
- args.push(`-DNODE_JS_SOURCES=${work_dir}/win_delay_hook.c`);
162
- } else {
163
- args.push(`-DNODE_JS_LINK_LIB=node.dll`);
164
144
  }
165
- }
166
-
167
- if (darwin) {
168
- args.push('-DNODE_JS_LINK_FLAGS=-undefined;dynamic_lookup');
169
145
 
170
- switch (arch) {
171
- case 'arm64': { args.push('-DCMAKE_OSX_ARCHITECTURES=arm64'); } break;
172
- case 'x64': { args.push('-DCMAKE_OSX_ARCHITECTURES=x86_64'); } break;
173
- }
146
+ fs.copyFileSync(`${app_dir}/assets/win_delay_hook.c`, work_dir + '/win_delay_hook.c');
147
+ args.push(`-DNODE_JS_SOURCES=${work_dir}/win_delay_hook.c`);
174
148
  }
175
149
 
176
- if (!msvc) {
150
+ if (process.platform != 'win32' || mingw) {
177
151
  if (spawnSync('ninja', ['--version']).status === 0) {
178
152
  args.push('-G', 'Ninja');
179
153
  } else if (process.platform == 'win32') {
@@ -186,16 +160,89 @@ function Builder(config = {}) {
186
160
  args.push('-DCMAKE_CXX_COMPILER_LAUNCHER=ccache');
187
161
  }
188
162
  }
163
+
164
+ // Handle toolchain flags and cross-compilation
165
+ {
166
+ let info = TOOLCHAINS[toolchain ?? host];
167
+
168
+ if (info != null) {
169
+ if (Object.hasOwn(info, process.platform))
170
+ info = Object.assign({}, info, info[process.platform]);
171
+
172
+ if (info.flags != null)
173
+ args.push(...info.flags);
174
+ }
175
+
176
+ if (toolchain == null && process.arch == 'ia32') {
177
+ let proc = spawnSync('uname', ['-m']);
178
+ let machine = (proc.stdout ?? '').toString('utf-8').trim();
179
+
180
+ if (machine == 'x86_64') {
181
+ // Compiler probably does not default to 32-bit... just force it
182
+ args.push('-DCMAKE_ASM_FLAGS=-m32', '-DCMAKE_C_FLAGS=-m32', '-DCMAKE_CXX_FLAGS=-m32');
183
+ }
184
+ }
185
+
186
+ if (toolchain != null && info.triplet != null) {
187
+ let values = [
188
+ ['CMAKE_SYSTEM_NAME', info.system],
189
+ ['CMAKE_SYSTEM_PROCESSOR', info.processor]
190
+ ];
191
+ let sysroot = null;
192
+
193
+ // Switch to Clang automatically if the GCC cross-compiler does not exist
194
+ if (process.platform != 'win32' && !prefer_clang) {
195
+ let binary = info.triplet + '-gcc';
196
+
197
+ if (spawnSync(binary, ['-v']).status !== 0)
198
+ prefer_clang = true;
199
+ }
200
+
201
+ if (prefer_clang) {
202
+ values.push(['CMAKE_ASM_COMPILER_TARGET', info.triplet]);
203
+ values.push(['CMAKE_C_COMPILER_TARGET', info.triplet]);
204
+ values.push(['CMAKE_CXX_COMPILER_TARGET', info.triplet]);
205
+
206
+ values.push(['CMAKE_EXE_LINKER_FLAGS', '-fuse-ld=lld']);
207
+ values.push(['CMAKE_SHARED_LINKER_FLAGS', '-fuse-ld=lld']);
208
+ values.push(['CMAKE_STATIC_LINKER_FLAGS', '-fuse-ld=lld']);
209
+ } else if (process.platform != 'win32') {
210
+ values.push(['CMAKE_ASM_COMPILER', info.triplet + '-gcc']);
211
+ values.push(['CMAKE_C_COMPILER', info.triplet + '-gcc']);
212
+ values.push(['CMAKE_CXX_COMPILER', info.triplet + '-g++']);
213
+ }
214
+
215
+ if (info.sysroot != null) {
216
+ sysroot = expand_path(info.sysroot, __dirname + '/..');
217
+ if (!fs.existsSync(sysroot))
218
+ throw new Error(`Cross-compilation sysroot '${sysroot}' does not exist`);
219
+
220
+ values.push(['CMAKE_SYSROOT', sysroot]);
221
+ }
222
+
223
+ if (info.variables != null) {
224
+ for (let key in info.variables) {
225
+ let value = expand_string(info.variables[key], { sysroot: sysroot });
226
+ values.push([key, value]);
227
+ }
228
+ }
229
+
230
+ let filename = `${work_dir}/toolchain.cmake`;
231
+ let text = values.map(pair => `set(${pair[0]} "${pair[1]}")`).join('\n');
232
+
233
+ fs.writeFileSync(filename, text);
234
+ args.push(`-DCMAKE_TOOLCHAIN_FILE=${filename}`);
235
+ }
236
+ }
237
+
189
238
  if (prefer_clang) {
190
- if (msvc) {
239
+ if (process.platform == 'win32' && !mingw) {
191
240
  args.push('-T', 'ClangCL');
192
241
  } else {
193
242
  args.push('-DCMAKE_C_COMPILER=clang');
194
243
  args.push('-DCMAKE_CXX_COMPILER=clang++');
195
244
  }
196
245
  }
197
- if (toolset != null)
198
- args.push('-T', toolset);
199
246
 
200
247
  args.push(`-DCMAKE_BUILD_TYPE=${mode}`);
201
248
  for (let type of ['ARCHIVE', 'RUNTIME', 'LIBRARY']) {
@@ -231,8 +278,9 @@ function Builder(config = {}) {
231
278
  await self.configure();
232
279
 
233
280
  // In case Make gets used
281
+ // os.cpus() returns [] on Android (no /proc/cpuinfo access), so fall back to 1
234
282
  if (process.env.MAKEFLAGS == null)
235
- process.env.MAKEFLAGS = '-j' + os.cpus().length;
283
+ process.env.MAKEFLAGS = '-j' + (os.cpus().length || 1);
236
284
 
237
285
  let args = [
238
286
  '--build', work_dir,
@@ -423,22 +471,35 @@ function Builder(config = {}) {
423
471
  return options;
424
472
  }
425
473
 
426
- function expand_path(str, root_dir) {
474
+ function expand_string(str, values = {}) {
427
475
  let expanded = str.replace(/{{ *([a-zA-Z_][a-zA-Z_0-9]*) *}}/g, (match, p1) => {
428
476
  switch (p1) {
429
477
  case 'version': {
430
478
  let options = read_cnoke_options();
431
479
  return options.version || '';
432
480
  } break;
433
- case 'platform': return process.platform;
434
- case 'arch': return arch;
435
481
 
436
- default: return match;
482
+ case 'toolchain': return toolchain ?? host;
483
+
484
+ default: {
485
+ if (Object.hasOwn(values, p1)) {
486
+ return values[p1];
487
+ } else {
488
+ return match;
489
+ }
490
+ } break;
437
491
  }
438
492
  });
439
493
 
494
+ return expanded;
495
+ }
496
+
497
+ function expand_path(str, root) {
498
+ let expanded = expand_string(str);
499
+
440
500
  if (!tools.path_is_absolute(expanded))
441
- expanded = path.join(root_dir, expanded);
501
+ expanded = path.join(root, expanded);
502
+ expanded = path.normalize(expanded);
442
503
 
443
504
  return expanded;
444
505
  }
@@ -351,11 +351,7 @@ function decode_elf_header(buf) {
351
351
 
352
352
  function unlink_recursive(path) {
353
353
  try {
354
- if (fs.rmSync != null) {
355
- fs.rmSync(path, { recursive: true, maxRetries: process.platform == 'win32' ? 3 : 0 });
356
- } else {
357
- fs.rmdirSync(path, { recursive: true, maxRetries: process.platform == 'win32' ? 3 : 0 });
358
- }
354
+ fs.rmSync(path, { recursive: true, maxRetries: process.platform == 'win32' ? 3 : 0 });
359
355
  } catch (err) {
360
356
  if (err.code !== 'ENOENT')
361
357
  throw err;
@@ -1,7 +1,7 @@
1
1
  # SPDX-License-Identifier: MIT
2
2
  # SPDX-FileCopyrightText: 2025 Niels Martignène <niels.martignene@protonmail.com>
3
3
 
4
- cmake_minimum_required(VERSION 3.6)
4
+ cmake_minimum_required(VERSION 3.10)
5
5
  cmake_policy(SET CMP0091 NEW)
6
6
 
7
7
  if(NOT NODE_JS_INCLUDE_DIRS)
@@ -54,6 +54,15 @@ set(KOFFI_VERSION ${CMAKE_MATCH_1})
54
54
 
55
55
  set_source_files_properties(src/ffi.cc PROPERTIES COMPILE_DEFINITIONS VERSION=${KOFFI_VERSION})
56
56
 
57
+ add_custom_command(OUTPUT trampolines/gnu.inc
58
+ trampolines/armasm.inc
59
+ trampolines/masm32.inc
60
+ trampolines/masm64.inc
61
+ COMMENT "Generate trampoline macros"
62
+ COMMAND "${NODE_JS_EXECPATH}"
63
+ ARGS "${CMAKE_CURRENT_SOURCE_DIR}/tools/write_trampolines.js" "${CMAKE_CURRENT_BINARY_DIR}/trampolines" 8192
64
+ DEPENDS "${CMAKE_CURRENT_SOURCE_DIR}/tools/write_trampolines.js")
65
+
57
66
  set(KOFFI_SRC
58
67
  src/call.cc
59
68
  src/ffi.cc
@@ -78,54 +87,51 @@ if(CMAKE_SIZEOF_VOID_P EQUAL 8)
78
87
 
79
88
  message(STATUS "Using ARMASM64 compiler: ${asm_compiler}")
80
89
 
81
- file(TO_CMAKE_PATH "${CMAKE_CURRENT_SOURCE_DIR}/src/abi/arm64_asm.asm" asm_source)
82
- file(TO_CMAKE_PATH "${CMAKE_CURRENT_BINARY_DIR}/arm64_asm.obj" asm_object)
90
+ file(TO_CMAKE_PATH "${CMAKE_CURRENT_SOURCE_DIR}/src/abi_arm64_asm.asm" asm_source)
91
+ file(TO_CMAKE_PATH "${CMAKE_CURRENT_BINARY_DIR}/abi_arm64_asm.obj" asm_object)
83
92
 
84
93
  add_custom_command(
85
94
  OUTPUT "${asm_object}"
86
- COMMAND "${asm_compiler}" ARGS /nologo /o "${asm_object}" "${asm_source}"
87
- DEPENDS "${asm_source}"
95
+ COMMAND "${asm_compiler}"
96
+ ARGS /nologo /i "${CMAKE_CURRENT_BINARY_DIR}/trampolines" /o "${asm_object}" "${asm_source}"
97
+ DEPENDS "${asm_source}" trampolines/armasm.inc
88
98
  COMMENT "Assembling ${asm_source}"
89
99
  )
90
100
  set_source_files_properties("${asm_object}" PROPERTIES EXTERNAL_OBJECT TRUE)
91
101
 
92
- list(APPEND KOFFI_SRC src/abi/arm64.cc "${asm_object}")
102
+ list(APPEND KOFFI_SRC src/abi_arm64.cc "${asm_object}")
93
103
  else()
94
- list(APPEND KOFFI_SRC src/abi/arm64.cc src/abi/arm64_asm.S)
104
+ list(APPEND KOFFI_SRC src/abi_arm64.cc src/abi_arm64_asm.S)
95
105
  endif()
96
106
  elseif(CMAKE_SYSTEM_PROCESSOR MATCHES "riscv")
97
- list(APPEND KOFFI_SRC src/abi/riscv64.cc src/abi/riscv64_asm.S)
107
+ list(APPEND KOFFI_SRC src/abi_riscv64.cc src/abi_riscv64_asm.S)
98
108
  elseif(CMAKE_SYSTEM_PROCESSOR MATCHES "loongarch64")
99
- list(APPEND KOFFI_SRC src/abi/riscv64.cc src/abi/loong64_asm.S)
109
+ list(APPEND KOFFI_SRC src/abi_riscv64.cc src/abi_loong64_asm.S)
100
110
  else()
101
111
  if(WIN32)
102
112
  if(MSVC)
103
- list(APPEND KOFFI_SRC src/abi/x64_win.cc src/abi/x64_win_asm.asm)
104
- set_source_files_properties(src/abi/x64_win_asm.asm PROPERTIES
105
- INCLUDE_DIRECTORIES "${CMAKE_CURRENT_SOURCE_DIR}/src/trampolines")
113
+ list(APPEND KOFFI_SRC src/abi_x64_win.cc src/abi_x64_win_asm.asm)
106
114
  else()
107
- list(APPEND KOFFI_SRC src/abi/x64_win.cc src/abi/x64_win_asm.S)
115
+ list(APPEND KOFFI_SRC src/abi_x64_win.cc src/abi_x64_win_asm.S)
108
116
  endif()
109
117
  else()
110
- list(APPEND KOFFI_SRC src/abi/x64_sysv.cc src/abi/x64_sysv_asm.S)
118
+ list(APPEND KOFFI_SRC src/abi_x64_sysv.cc src/abi_x64_sysv_asm.S)
111
119
  endif()
112
120
  endif()
113
121
  elseif(CMAKE_SIZEOF_VOID_P EQUAL 4)
114
122
  if(CMAKE_SYSTEM_PROCESSOR MATCHES "aarch|arm")
115
- list(APPEND KOFFI_SRC src/abi/arm32.cc src/abi/arm32_asm.S)
123
+ list(APPEND KOFFI_SRC src/abi_arm32.cc src/abi_arm32_asm.S)
116
124
  else()
117
125
  if(WIN32)
118
- list(APPEND KOFFI_SRC src/abi/x86.cc src/abi/x86_asm.asm)
119
- set_source_files_properties(src/abi/x86_asm.asm PROPERTIES
120
- INCLUDE_DIRECTORIES "${CMAKE_CURRENT_SOURCE_DIR}/src/trampolines")
126
+ list(APPEND KOFFI_SRC src/abi_x86.cc src/abi_x86_asm.asm)
121
127
  else()
122
- list(APPEND KOFFI_SRC src/abi/x86.cc src/abi/x86_asm.S)
128
+ list(APPEND KOFFI_SRC src/abi_x86.cc src/abi_x86_asm.S)
123
129
  endif()
124
130
  endif()
125
131
  endif()
126
132
 
127
- add_node_addon(NAME koffi SOURCES ${KOFFI_SRC})
128
- target_include_directories(koffi PRIVATE . ../.. ../../vendor/node-addon-api)
133
+ add_node_addon(NAME koffi SOURCES ${KOFFI_SRC} trampolines/gnu.inc)
134
+ target_include_directories(koffi PRIVATE . ../.. ../../vendor/node-addon-api "${CMAKE_CURRENT_BINARY_DIR}/trampolines")
129
135
 
130
136
  if(WIN32)
131
137
  set(UV_LINK_LIB "${CMAKE_CURRENT_BINARY_DIR}/uv.lib")
@@ -151,6 +157,11 @@ if(WIN32)
151
157
  target_link_libraries(koffi PRIVATE ws2_32)
152
158
  endif()
153
159
 
160
+ if(UNIX AND NOT APPLE)
161
+ target_compile_options(koffi PRIVATE -fno-semantic-interposition -fvisibility=hidden -fdata-sections -ffunction-sections)
162
+ target_link_options(koffi PRIVATE -Wl,--gc-sections)
163
+ endif()
164
+
154
165
  if(NOT MSVC OR CMAKE_C_COMPILER_ID MATCHES "[Cc]lang")
155
166
  # Restore C/C++ compiler sanity
156
167