koffi 2.16.0-beta.1 → 2.16.0

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 (424) hide show
  1. package/CHANGELOG.md +59 -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 +20 -5
  37. package/src/koffi/src/abi_arm32.cc +232 -235
  38. package/src/koffi/src/abi_arm32_asm.S +19 -15
  39. package/src/koffi/src/abi_arm64.cc +251 -272
  40. package/src/koffi/src/abi_arm64_asm.S +16 -10
  41. package/src/koffi/src/abi_arm64_asm.asm +17 -10
  42. package/src/koffi/src/abi_loong64_asm.S +16 -10
  43. package/src/koffi/src/abi_riscv64.cc +230 -233
  44. package/src/koffi/src/abi_riscv64_asm.S +16 -10
  45. package/src/koffi/src/abi_x64_sysv.cc +205 -209
  46. package/src/koffi/src/abi_x64_sysv_asm.S +17 -10
  47. package/src/koffi/src/abi_x64_win.cc +171 -202
  48. package/src/koffi/src/abi_x64_win_asm.S +49 -27
  49. package/src/koffi/src/abi_x64_win_asm.asm +55 -28
  50. package/src/koffi/src/abi_x86.cc +183 -222
  51. package/src/koffi/src/abi_x86_asm.S +36 -21
  52. package/src/koffi/src/abi_x86_asm.asm +32 -17
  53. package/src/koffi/src/call.cc +471 -288
  54. package/src/koffi/src/call.hh +15 -18
  55. package/src/koffi/src/ffi.cc +167 -183
  56. package/src/koffi/src/ffi.hh +59 -13
  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
package/CHANGELOG.md CHANGED
@@ -5,8 +5,67 @@
5
5
 
6
6
  ## Koffi 2
7
7
 
8
+ ### Koffi 2.16
9
+
10
+ #### Koffi 2.16.0
11
+
12
+ *Released on 2026-04-14*
13
+
14
+ - Support buffers and typed arrays in `koffi.address()`
15
+ - Put x86 SEH record at the top of stack frame
16
+ - Optimize Koffi binaries produced by GCC (with `-fno-semantic-interposition`)
17
+ - Fix nonsensical addresses in Koffi call dumps (when using DUMP_CALLS=1 environement variable)
18
+
19
+ - Reduce Koffi package size even more:
20
+ * Replace table of callback trampoline pointers with simple offset computation
21
+ * Strip out unused data and functions from Koffi binaries
22
+ * Generate repeated trampoline source and macros at build time
23
+ * Remove files not needed to build from source: tests, scripts, etc.
24
+ * Maximize NPM tarball compression with Zopfli
25
+ - This reduces decompressed Koffi package size from 41.4 MB to 28.7 MB
26
+
8
27
  ### Koffi 2.15
9
28
 
29
+ #### Koffi 2.15.6
30
+
31
+ *Released on 2026-04-07*
32
+
33
+ - Fix possible exit crash after using `koffi.reset()` (regression introduced in Koffi 2.15.2)
34
+
35
+ #### Koffi 2.15.5
36
+
37
+ *Released on 2026-04-05*
38
+
39
+ - Reduce repeated trampoline code size:
40
+ * Use single set of trampolines to forward general and floating-point values
41
+ * Minimize trampoline size by jumping early to common handling code
42
+ - This reduces decompressed Koffi package size from 85.9 MB to 41.4 MB
43
+
44
+ #### Koffi 2.15.4
45
+
46
+ *Released on 2026-04-03*
47
+
48
+ - Fix ABI issue with variadic parameters that are passed on the stack on Apple ARM64 platforms
49
+ - Remove erroneous assertion from debug builds
50
+
51
+ #### Koffi 2.15.3
52
+
53
+ *Released on 2026-04-03*
54
+
55
+ - Fix *IsOnCentralStack()* assertion/crash when using callbacks in recent Node versions
56
+ - Support SetUnhandledExceptionFilter on Windows x64 and x86 ([@longhun12346](https://github.com/longhun12346))
57
+ - Fix incorrect stack alignment when relaying callbacks on 32-bit x86 platforms
58
+
59
+ #### Koffi 2.15.2
60
+
61
+ *Released on 2026-03-11*
62
+
63
+ - Fix possible deadlock or crash after a callback has been used when exiting from Node 24.14+
64
+ - Fix build problems on Android/Termux
65
+ - Fix failing indirect loading caused by missing path test
66
+ - Don't force users to set all members when using koffi.config() in TypeScript
67
+ - Use Clang to build Linux ARM64 prebuild
68
+
10
69
  #### Koffi 2.15.1
11
70
 
12
71
  *Released on 2025-01-24*
Binary file
Binary file
Binary file
Binary file
Binary file
Binary file
Binary file
Binary file
Binary file
Binary file
Binary file
Binary file
Binary file
Binary file
Binary file
Binary file
Binary file
Binary file
Binary file
Binary file
Binary file
package/index.d.ts CHANGED
@@ -145,15 +145,13 @@ export function introspect(type: TypeSpec): TypeInfo;
145
145
  export function alias(name: string, type: TypeSpec): IKoffiCType;
146
146
 
147
147
  type KoffiConfig = {
148
- sync_stack_size?: number;
149
- sync_heap_size?: number;
150
- async_stack_size?: number;
151
- async_heap_size?: number;
152
- resident_async_pools?: number;
153
- max_async_calls?: number;
154
- max_type_size?: number;
155
- fast_pointers?: boolean;
156
- fast_callbacks?: boolean;
148
+ sync_stack_size?: number
149
+ sync_heap_size?: number
150
+ async_stack_size?: number
151
+ async_heap_size?: number
152
+ resident_async_pools?: number
153
+ max_async_calls?: number
154
+ max_type_size?: number
157
155
  };
158
156
  type KoffiStats = {
159
157
  disposed: number
@@ -171,8 +169,8 @@ export function errno(value: number): number;
171
169
 
172
170
  export function reset(): void;
173
171
 
174
- export const internal: boolean;
175
- export const extension: string;
172
+ export const internal: Boolean;
173
+ export const extension: String;
176
174
 
177
175
  export const os: {
178
176
  errno: Record<string, number>
package/index.js CHANGED
@@ -345,11 +345,7 @@ var require_tools = __commonJS({
345
345
  }
346
346
  function unlink_recursive(path3) {
347
347
  try {
348
- if (fs2.rmSync != null) {
349
- fs2.rmSync(path3, { recursive: true, maxRetries: process.platform == "win32" ? 3 : 0 });
350
- } else {
351
- fs2.rmdirSync(path3, { recursive: true, maxRetries: process.platform == "win32" ? 3 : 0 });
352
- }
348
+ fs2.rmSync(path3, { recursive: true, maxRetries: process.platform == "win32" ? 3 : 0 });
353
349
  } catch (err) {
354
350
  if (err.code !== "ENOENT")
355
351
  throw err;
@@ -402,7 +398,7 @@ var require_package = __commonJS({
402
398
  "../../bin/Koffi/package/src/koffi/package.json"(exports2, module2) {
403
399
  module2.exports = {
404
400
  name: "koffi",
405
- version: "2.16.0-beta.1",
401
+ version: "2.16.0",
406
402
  description: "Fast and simple C FFI (foreign function interface) for Node.js",
407
403
  keywords: [
408
404
  "foreign",
@@ -426,15 +422,15 @@ var require_package = __commonJS({
426
422
  main: "./index.js",
427
423
  types: "./index.d.ts",
428
424
  scripts: {
429
- test: "node tools/koffi.js test",
425
+ test: "node tools/brew.js test",
430
426
  prepack: `echo 'Use "npm run package" instead' && false`,
431
427
  prepublishOnly: `echo 'Use "npm run package" instead' && false`,
432
- package: "node tools/koffi.js build"
428
+ package: "node tools/brew.js build"
433
429
  },
434
430
  license: "MIT",
435
431
  cnoke: {
436
432
  api: "../../vendor/node-api-headers",
437
- output: "../../bin/Koffi/{{ platform }}_{{ arch }}",
433
+ output: "../../bin/Koffi/{{ toolchain }}",
438
434
  node: 16,
439
435
  napi: 8,
440
436
  require: "./index.js"
@@ -477,6 +473,7 @@ var require_init = __commonJS({
477
473
  triplets.push(musl);
478
474
  }
479
475
  let filenames = roots.flatMap((root) => triplets.flatMap((triplet3) => [
476
+ `${root}/koffi/build/koffi/${triplet3}/koffi.node`,
480
477
  `${root}/build/koffi/${triplet3}/koffi.node`,
481
478
  `${root}/koffi/${triplet3}/koffi.node`,
482
479
  `${root}/node_modules/koffi/build/koffi/${triplet3}/koffi.node`,
package/indirect.js CHANGED
@@ -345,11 +345,7 @@ var require_tools = __commonJS({
345
345
  }
346
346
  function unlink_recursive(path3) {
347
347
  try {
348
- if (fs2.rmSync != null) {
349
- fs2.rmSync(path3, { recursive: true, maxRetries: process.platform == "win32" ? 3 : 0 });
350
- } else {
351
- fs2.rmdirSync(path3, { recursive: true, maxRetries: process.platform == "win32" ? 3 : 0 });
352
- }
348
+ fs2.rmSync(path3, { recursive: true, maxRetries: process.platform == "win32" ? 3 : 0 });
353
349
  } catch (err) {
354
350
  if (err.code !== "ENOENT")
355
351
  throw err;
@@ -402,7 +398,7 @@ var require_package = __commonJS({
402
398
  "../../bin/Koffi/package/src/koffi/package.json"(exports2, module2) {
403
399
  module2.exports = {
404
400
  name: "koffi",
405
- version: "2.16.0-beta.1",
401
+ version: "2.16.0",
406
402
  description: "Fast and simple C FFI (foreign function interface) for Node.js",
407
403
  keywords: [
408
404
  "foreign",
@@ -426,15 +422,15 @@ var require_package = __commonJS({
426
422
  main: "./index.js",
427
423
  types: "./index.d.ts",
428
424
  scripts: {
429
- test: "node tools/koffi.js test",
425
+ test: "node tools/brew.js test",
430
426
  prepack: `echo 'Use "npm run package" instead' && false`,
431
427
  prepublishOnly: `echo 'Use "npm run package" instead' && false`,
432
- package: "node tools/koffi.js build"
428
+ package: "node tools/brew.js build"
433
429
  },
434
430
  license: "MIT",
435
431
  cnoke: {
436
432
  api: "../../vendor/node-api-headers",
437
- output: "../../bin/Koffi/{{ platform }}_{{ arch }}",
433
+ output: "../../bin/Koffi/{{ toolchain }}",
438
434
  node: 16,
439
435
  napi: 8,
440
436
  require: "./index.js"
@@ -477,6 +473,7 @@ var require_init = __commonJS({
477
473
  triplets.push(musl);
478
474
  }
479
475
  let filenames = roots.flatMap((root) => triplets.flatMap((triplet3) => [
476
+ `${root}/koffi/build/koffi/${triplet3}/koffi.node`,
480
477
  `${root}/build/koffi/${triplet3}/koffi.node`,
481
478
  `${root}/koffi/${triplet3}/koffi.node`,
482
479
  `${root}/node_modules/koffi/build/koffi/${triplet3}/koffi.node`,
@@ -3125,12 +3125,7 @@ RenameResult RenameFile(const char *src_filename, const char *dest_filename, uns
3125
3125
  if (rename(src_filename, dest_filename) < 0)
3126
3126
  goto error;
3127
3127
  } else {
3128
- #if defined(RENAME_NOREPLACE)
3129
- if (!renameat2(AT_FDCWD, src_filename, AT_FDCWD, dest_filename, RENAME_NOREPLACE))
3130
- goto sync;
3131
- if (!IsErrnoNotSupported(errno) && errno != EINVAL)
3132
- goto error;
3133
- #elif defined(SYS_renameat2)
3128
+ #if defined(SYS_renameat2)
3134
3129
  {
3135
3130
  int dirfd = AT_FDCWD;
3136
3131
  int rflags = 1; // RENAME_NOREPLACE
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "koffi",
3
- "version": "2.16.0-beta.1",
3
+ "version": "2.16.0",
4
4
  "description": "Fast and simple C FFI (foreign function interface) for Node.js",
5
5
  "keywords": [
6
6
  "foreign",
@@ -24,12 +24,12 @@
24
24
  "main": "./index.js",
25
25
  "types": "./index.d.ts",
26
26
  "scripts": {
27
- "install": "node src/cnoke/cnoke.js -p . -d src/koffi --prebuild"
27
+ "install": "node src/cnoke/cnoke.js -P . -D src/koffi --prebuild"
28
28
  },
29
29
  "license": "MIT",
30
30
  "cnoke": {
31
31
  "api": "../../vendor/node-api-headers",
32
- "output": "build/koffi/{{ platform }}_{{ arch }}",
32
+ "output": "build/koffi/{{ toolchain }}",
33
33
  "node": 16,
34
34
  "napi": 8,
35
35
  "require": "./index.js"
@@ -8,22 +8,6 @@ else()
8
8
  set(USE_UNITY_BUILDS OFF CACHE BOOL "Use single-TU builds (aka. Unity builds)")
9
9
  endif()
10
10
 
11
- if(NODE_JS_LINK_DEF)
12
- set(NODE_JS_LINK_LIB "${CMAKE_CURRENT_BINARY_DIR}/node.lib")
13
- if (MSVC)
14
- add_custom_command(OUTPUT node.lib
15
- COMMAND ${CMAKE_AR} ${CMAKE_STATIC_LINKER_FLAGS}
16
- /def:${NODE_JS_LINK_DEF} /out:${NODE_JS_LINK_LIB}
17
- WORKING_DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR}
18
- MAIN_DEPENDENCY ${NODE_JS_LINK_DEF})
19
- else()
20
- add_custom_command(OUTPUT node.lib
21
- COMMAND ${CMAKE_DLLTOOL} -d ${NODE_JS_LINK_DEF} -l ${NODE_JS_LINK_LIB}
22
- WORKING_DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR}
23
- MAIN_DEPENDENCY ${NODE_JS_LINK_DEF})
24
- endif()
25
- endif()
26
-
27
11
  function(add_node_addon)
28
12
  cmake_parse_arguments(ARG "" "NAME" "SOURCES" ${ARGN})
29
13
  add_library(${ARG_NAME} SHARED ${ARG_SOURCES} ${NODE_JS_SOURCES})
@@ -45,6 +29,33 @@ function(target_link_node TARGET)
45
29
  endif()
46
30
  endfunction()
47
31
 
32
+ if(WIN32)
33
+ function(create_import_lib OUTPUT SRC)
34
+ if (MSVC)
35
+ add_custom_command(OUTPUT ${OUTPUT}
36
+ COMMAND ${CMAKE_AR} ${CMAKE_STATIC_LINKER_FLAGS}
37
+ /def:${SRC} /out:"${CMAKE_CURRENT_BINARY_DIR}/${OUTPUT}"
38
+ WORKING_DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR}
39
+ MAIN_DEPENDENCY ${SRC})
40
+ elseif(DEFINED NODE_JS_DLLTOOL_MACHINE)
41
+ add_custom_command(OUTPUT ${OUTPUT}
42
+ COMMAND ${CMAKE_DLLTOOL} -d ${SRC} -l "${CMAKE_CURRENT_BINARY_DIR}/${OUTPUT}" -m ${NODE_JS_DLLTOOL_MACHINE}
43
+ WORKING_DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR}
44
+ MAIN_DEPENDENCY ${SRC})
45
+ else()
46
+ add_custom_command(OUTPUT ${OUTPUT}
47
+ COMMAND ${CMAKE_DLLTOOL} -d ${SRC} -l "${CMAKE_CURRENT_BINARY_DIR}/${OUTPUT}"
48
+ WORKING_DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR}
49
+ MAIN_DEPENDENCY ${SRC})
50
+ endif()
51
+ endfunction()
52
+ endif()
53
+
54
+ if(NODE_JS_LINK_DEF)
55
+ create_import_lib(node.lib ${NODE_JS_LINK_DEF})
56
+ set(NODE_JS_LINK_LIB "${CMAKE_CURRENT_BINARY_DIR}/node.lib")
57
+ endif()
58
+
48
59
  if(USE_UNITY_BUILDS)
49
60
  function(enable_unity_build TARGET)
50
61
  cmake_parse_arguments(ARG "" "" "EXCLUDE" ${ARGN})
@@ -0,0 +1,126 @@
1
+ {
2
+ "linux_ia32": {
3
+ "system": "Linux",
4
+ "processor": "i386",
5
+ "triplet": "i686-linux-gnu",
6
+ "sysroot": "../../tools/cross/sysroots/debian_i386"
7
+ },
8
+ "linux_x64": {
9
+ "system": "Linux",
10
+ "processor": "x86_64",
11
+ "triplet": "x86_64-linux-gnu",
12
+ "sysroot": "../../tools/cross/sysroots/debian_x64"
13
+ },
14
+ "linux_armhf": {
15
+ "system": "Linux",
16
+ "processor": "arm",
17
+ "triplet": "arm-linux-gnueabihf",
18
+ "sysroot": "../../tools/cross/sysroots/debian_arm32"
19
+ },
20
+ "linux_arm64": {
21
+ "system": "Linux",
22
+ "processor": "aarch64",
23
+ "triplet": "aarch64-linux-gnu",
24
+ "sysroot": "../../tools/cross/sysroots/debian_arm64"
25
+ },
26
+ "linux_riscv64d": {
27
+ "system": "Linux",
28
+ "processor": "riscv64",
29
+ "triplet": "riscv64-linux-gnu",
30
+ "sysroot": "../../tools/cross/sysroots/debian_riscv64"
31
+ },
32
+ "linux_loong64": {
33
+ "system": "Linux",
34
+ "processor": "loongarch64",
35
+ "triplet": "loongarch64-linux-gnu",
36
+ "sysroot": "../../tools/cross/sysroots/debian_loong64"
37
+ },
38
+
39
+ "win32_ia32": {
40
+ "system": "Windows",
41
+ "processor": "X86",
42
+ "lib": "win-x86",
43
+ "flags": ["-DNODE_JS_LINK_FLAGS=/DELAYLOAD:node.exe;/SAFESEH:NO", "-A", "Win32"],
44
+
45
+ "triplet": "i386-pc-windows-msvc",
46
+ "linux": {
47
+ "sysroot": "../../tools/cross/sysroots/windows_i386",
48
+ "flags": ["-DNODE_JS_LINK_FLAGS=-Wl,/DELAYLOAD:node.exe,/SAFESEH:NO", "-DNODE_JS_DLLTOOL_MACHINE=i386"],
49
+ "variables": {
50
+ "CMAKE_DLLTOOL": "llvm-dlltool",
51
+ "CMAKE_RC_COMPILER": "llvm-rc",
52
+ "CMAKE_C_FLAGS": "-Xmicrosoft-windows-sys-root {{ sysroot }}",
53
+ "CMAKE_CXX_FLAGS": "-Xmicrosoft-windows-sys-root {{ sysroot }}",
54
+ "CMAKE_EXE_LINKER_FLAGS": "-Wl,-libpath:{{ sysroot }}/VC/Tools/MSVC/Current/lib/x86_64,-libpath:{{ sysroot }}/Kits/10/Lib/Current/ucrt/x86_64,-libpath:{{ sysroot }}/Kits/10/Lib/Current/um/x86_64 -ldelayimp",
55
+ "CMAKE_STATIC_LINKER_FLAGS": "-Wl,-libpath:{{ sysroot }}/VC/Tools/MSVC/Current/lib/x86_64,-libpath:{{ sysroot }}/Kits/10/Lib/Current/ucrt/x86_64,-libpath:{{ sysroot }}/Kits/10/Lib/Current/um/x86_64 -ldelayimp",
56
+ "CMAKE_SHARED_LINKER_FLAGS": "-Wl,-libpath:{{ sysroot }}/VC/Tools/MSVC/Current/lib/x86_64,-libpath:{{ sysroot }}/Kits/10/Lib/Current/ucrt/x86_64,-libpath:{{ sysroot }}/Kits/10/Lib/Current/um/x86_64 -ldelayimp"
57
+ }
58
+ }
59
+ },
60
+ "win32_x64": {
61
+ "system": "Windows",
62
+ "processor": "AMD64",
63
+ "lib": "win-x64",
64
+ "flags": ["-DNODE_JS_LINK_FLAGS=/DELAYLOAD:node.exe"],
65
+
66
+ "triplet": "x86_64-pc-windows-msvc",
67
+ "linux": {
68
+ "sysroot": "../../tools/cross/sysroots/windows_x64",
69
+ "flags": ["-DNODE_JS_LINK_FLAGS=-Wl,/DELAYLOAD:node.exe", "-DNODE_JS_DLLTOOL_MACHINE=i386:x86-64"],
70
+ "variables": {
71
+ "CMAKE_DLLTOOL": "llvm-dlltool",
72
+ "CMAKE_RC_COMPILER": "llvm-rc",
73
+ "CMAKE_C_FLAGS": "-Xmicrosoft-windows-sys-root {{ sysroot }}",
74
+ "CMAKE_CXX_FLAGS": "-Xmicrosoft-windows-sys-root {{ sysroot }}",
75
+ "CMAKE_EXE_LINKER_FLAGS": "-Wl,-libpath:{{ sysroot }}/VC/Tools/MSVC/Current/lib/x86_64,-libpath:{{ sysroot }}/Kits/10/Lib/Current/ucrt/x86_64,-libpath:{{ sysroot }}/Kits/10/Lib/Current/um/x86_64 -ldelayimp",
76
+ "CMAKE_STATIC_LINKER_FLAGS": "-Wl,-libpath:{{ sysroot }}/VC/Tools/MSVC/Current/lib/x86_64,-libpath:{{ sysroot }}/Kits/10/Lib/Current/ucrt/x86_64,-libpath:{{ sysroot }}/Kits/10/Lib/Current/um/x86_64 -ldelayimp",
77
+ "CMAKE_SHARED_LINKER_FLAGS": "-Wl,-libpath:{{ sysroot }}/VC/Tools/MSVC/Current/lib/x86_64,-libpath:{{ sysroot }}/Kits/10/Lib/Current/ucrt/x86_64,-libpath:{{ sysroot }}/Kits/10/Lib/Current/um/x86_64 -ldelayimp"
78
+ }
79
+ }
80
+ },
81
+ "win32_arm64": {
82
+ "system": "Windows",
83
+ "processor": "ARM64",
84
+ "lib": "win-arm64",
85
+ "flags": ["-DNODE_JS_LINK_FLAGS=/DELAYLOAD:node.exe;/SAFESEH:NO", "-A", "ARM64"],
86
+
87
+ "triplet": "aarch64-pc-windows-msvc",
88
+ "linux": {
89
+ "sysroot": "../../tools/cross/sysroots/windows_arm64",
90
+ "flags": ["-DNODE_JS_LINK_FLAGS=-Wl,/DELAYLOAD:node.exe,/SAFESEH:NO", "-DNODE_JS_DLLTOOL_MACHINE=arm64"],
91
+ "variables": {
92
+ "CMAKE_DLLTOOL": "llvm-dlltool",
93
+ "CMAKE_RC_COMPILER": "llvm-rc",
94
+ "CMAKE_C_FLAGS": "-Xmicrosoft-windows-sys-root {{ sysroot }}",
95
+ "CMAKE_CXX_FLAGS": "-Xmicrosoft-windows-sys-root {{ sysroot }}",
96
+ "CMAKE_EXE_LINKER_FLAGS": "-Wl,-libpath:{{ sysroot }}/VC/Tools/MSVC/Current/lib/aarch64,-libpath:{{ sysroot }}/Kits/10/Lib/Current/ucrt/aarch64,-libpath:{{ sysroot }}/Kits/10/Lib/Current/um/aarch64 -ldelayimp",
97
+ "CMAKE_STATIC_LINKER_FLAGS": "-Wl,-libpath:{{ sysroot }}/VC/Tools/MSVC/Current/lib/aarch64,-libpath:{{ sysroot }}/Kits/10/Lib/Current/ucrt/aarch64,-libpath:{{ sysroot }}/Kits/10/Lib/Current/um/aarch64 -ldelayimp",
98
+ "CMAKE_SHARED_LINKER_FLAGS": "-Wl,-libpath:{{ sysroot }}/VC/Tools/MSVC/Current/lib/aarch64,-libpath:{{ sysroot }}/Kits/10/Lib/Current/ucrt/aarch64,-libpath:{{ sysroot }}/Kits/10/Lib/Current/um/aarch64 -ldelayimp"
99
+ }
100
+ }
101
+ },
102
+
103
+ "darwin_x64": {
104
+ "system": "Darwin",
105
+ "processor": "x86_64",
106
+ "flags": ["-DNODE_JS_LINK_FLAGS=-undefined;dynamic_lookup", "-DCMAKE_OSX_ARCHITECTURES=x86_64"]
107
+ },
108
+ "darwin_arm64": {
109
+ "system": "Darwin",
110
+ "processor": "arm64",
111
+ "flags": ["-DNODE_JS_LINK_FLAGS=-undefined;dynamic_lookup", "-DCMAKE_OSX_ARCHITECTURES=arm64"]
112
+ },
113
+
114
+ "freebsd_x64": {
115
+ "system": "FreeBSD",
116
+ "processor": "amd64",
117
+ "triplet": "x86_64-unknown-freebsd",
118
+ "sysroot": "../../tools/cross/sysroots/freebsd_x64"
119
+ },
120
+ "freebsd_arm64": {
121
+ "system": "FreeBSD",
122
+ "processor": "arm64",
123
+ "triplet": "aarch64-unknown-freebsd",
124
+ "sysroot": "../../tools/cross/sysroots/freebsd_arm64"
125
+ }
126
+ }
@@ -53,41 +53,36 @@ async function main() {
53
53
  if (arg == '--help') {
54
54
  print_usage();
55
55
  return;
56
- } else if (arg == '-d' || arg == '--directory') {
56
+ } else if (arg == '-D' || arg == '--directory') {
57
57
  if (value == null)
58
58
  throw new Error(`Missing value for ${arg}`);
59
59
 
60
60
  config.project_dir = fs.realpathSync(value);
61
- } else if (arg == '-p' || arg == '--package') {
61
+ } else if (arg == '-P' || arg == '--package') {
62
62
  if (value == null)
63
63
  throw new Error(`Missing value for ${arg}`);
64
64
 
65
65
  config.package_dir = fs.realpathSync(value);
66
- } else if (arg == '-O' || arg == '--out') {
66
+ } else if (arg == '-O' || arg == '--output') {
67
67
  if (value == null)
68
68
  throw new Error(`Missing value for ${arg}`);
69
69
 
70
70
  config.output_directory = value;
71
- } else if ((command == 'build' || command == 'configure') && (arg == '-v' || arg == '--runtime-version')) {
71
+ } else if ((command == 'build' || command == 'configure') && arg == '--runtime') {
72
72
  if (value == null)
73
73
  throw new Error(`Missing value for ${arg}`);
74
74
  if (!value.match(/^[0-9]+\.[0-9]+\.[0-9]+$/))
75
75
  throw new Error(`Malformed runtime version '${value}'`);
76
76
 
77
77
  config.runtime_version = value;
78
- } else if ((command == 'build' || command == 'configure') && (arg == '-a' || arg == '--arch')) {
79
- if (value == null)
80
- throw new Error(`Missing value for ${arg}`);
81
-
82
- config.arch = value;
83
- } else if ((command == 'build' || command == 'configure') && (arg == '-t' || arg == '--toolset')) {
78
+ } else if ((command == 'build' || command == 'configure') && arg == '--clang') {
79
+ config.prefer_clang = true;
80
+ } else if ((command == 'build' || command == 'configure') && (arg == '-t' || arg == '--toolchain')) {
84
81
  if (value == null)
85
82
  throw new Error(`Missing value for ${arg}`);
86
83
 
87
- config.toolset = value;
88
- } else if ((command == 'build' || command == 'configure') && (arg == '-C' || arg == '--prefer-clang')) {
89
- config.prefer_clang = true;
90
- } else if ((command == 'build' || command == 'configure') && (arg == '-B' || arg == '--config')) {
84
+ config.toolchain = value;
85
+ } else if ((command == 'build' || command == 'configure') && (arg == '-c' || arg == '--config')) {
91
86
  if (value == null)
92
87
  throw new Error(`Missing value for ${arg}`);
93
88
 
@@ -100,17 +95,19 @@ async function main() {
100
95
  throw new Error(`Unknown value '${value}' for ${arg}`);
101
96
  } break;
102
97
  }
103
- } else if ((command == 'build' || command == 'configure') && (arg == '-D' || arg == '--debug')) {
98
+ } else if ((command == 'build' || command == 'configure') && arg == '--debug') {
104
99
  config.mode = 'Debug';
105
- } else if (command == 'build' && arg == '--verbose') {
106
- config.verbose = true;
100
+ } else if ((command == 'build' || command == 'configure') && arg == '--release') {
101
+ config.mode = 'Release';
107
102
  } else if (command == 'build' && arg == '--prebuild') {
108
103
  config.prebuild = true;
109
- } else if (command == 'build' && (arg == '-T' || arg == '--target')) {
104
+ } else if (command == 'build' && arg == '--target') {
110
105
  if (value == null)
111
106
  throw new Error(`Missing value for ${arg}`);
112
107
 
113
108
  config.targets = [value];
109
+ } else if (command == 'build' && (arg == '-v' || arg == '--verbose')) {
110
+ config.verbose = true;
114
111
  } else {
115
112
  if (arg[0] == '-') {
116
113
  throw new Error(`Unexpected argument '${arg}'`);
@@ -141,30 +138,27 @@ Commands:
141
138
 
142
139
  Options:
143
140
 
144
- -d, --directory <DIR> Change source directory
141
+ -D, --directory <DIR> Change source directory
145
142
  (default: current working directory)
146
- -p, --package <DIR> Change package directory
143
+ -P, --package <DIR> Change package directory
147
144
  (default: current working directory)
148
-
149
- -O, --out <DIR> Set explicit output directory
145
+ -O, --output <DIR> Set explicit output directory
150
146
  (default: ./build)
151
147
 
152
- -B, --config <CONFIG> Change build type: RelWithDebInfo, Debug, Release
148
+ -c, --config <CONFIG> Change build type: RelWithDebInfo, Debug, Release
153
149
  (default: ${cnoke.DefaultOptions.mode})
154
- -D, --debug Shortcut for --config Debug
150
+ --debug Shortcut for --config Debug
151
+ --release Shortcut for --config Release
155
152
 
156
- --prebuild Use prebuilt binary if available
157
-
158
- -a, --arch <ARCH> Change architecture and ABI
159
- (default: ${cnoke.determine_arch()})
160
- -v, --runtime-version <VERSION> Change node version
153
+ -t, --toolchain <TOOLCHAIN> Cross-compile for specific platform
154
+ --runtime <VERSION> Change node version
161
155
  (default: ${process.version})
162
- -t, --toolset <TOOLSET> Change default CMake toolset
163
- -C, --prefer-clang Use Clang instead of default CMake compiler
156
+ --clang Use Clang instead of default CMake compiler
164
157
 
165
- -T, --target <TARGET> Only build the specified target
158
+ --prebuild Use prebuilt binary if available
159
+ --target <TARGET> Only build the specified target
166
160
 
167
- --verbose Show build commands while building
161
+ -v, --verbose Show build commands while building
168
162
 
169
163
  The ARCH value is similar to process.arch, with the following differences:
170
164