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.
- package/CHANGELOG.md +66 -0
- package/build/koffi/darwin_arm64/koffi.node +0 -0
- package/build/koffi/darwin_x64/koffi.node +0 -0
- package/build/koffi/freebsd_arm64/koffi.node +0 -0
- package/build/koffi/freebsd_ia32/koffi.node +0 -0
- package/build/koffi/freebsd_x64/koffi.node +0 -0
- package/build/koffi/linux_arm64/koffi.node +0 -0
- package/build/koffi/linux_armhf/koffi.node +0 -0
- package/build/koffi/linux_ia32/koffi.node +0 -0
- package/build/koffi/linux_loong64/koffi.node +0 -0
- package/build/koffi/linux_riscv64d/koffi.node +0 -0
- package/build/koffi/linux_x64/koffi.node +0 -0
- package/build/koffi/musl_arm64/koffi.node +0 -0
- package/build/koffi/musl_x64/koffi.node +0 -0
- package/build/koffi/openbsd_ia32/koffi.node +0 -0
- package/build/koffi/openbsd_x64/koffi.node +0 -0
- package/build/koffi/win32_arm64/koffi.exp +0 -0
- package/build/koffi/win32_arm64/koffi.lib +0 -0
- package/build/koffi/win32_arm64/koffi.node +0 -0
- package/build/koffi/win32_ia32/koffi.exp +0 -0
- package/build/koffi/win32_ia32/koffi.lib +0 -0
- package/build/koffi/win32_ia32/koffi.node +0 -0
- package/build/koffi/win32_x64/koffi.exp +0 -0
- package/build/koffi/win32_x64/koffi.lib +0 -0
- package/build/koffi/win32_x64/koffi.node +0 -0
- package/index.d.ts +9 -11
- package/index.js +6 -9
- package/indirect.js +6 -9
- package/lib/native/base/base.cc +1 -6
- package/package.json +3 -3
- package/src/cnoke/assets/FindCNoke.cmake +27 -16
- package/src/cnoke/assets/toolchains.json +126 -0
- package/src/cnoke/cnoke.js +27 -33
- package/src/cnoke/src/builder.js +124 -63
- package/src/cnoke/src/tools.js +1 -5
- package/src/koffi/CMakeLists.txt +32 -21
- package/src/koffi/src/{abi/arm32.cc → abi_arm32.cc} +235 -246
- package/src/koffi/src/{abi/arm32_asm.S → abi_arm32_asm.S} +19 -15
- package/src/koffi/src/{abi/arm64.cc → abi_arm64.cc} +253 -300
- package/src/koffi/src/{abi/arm64_asm.S → abi_arm64_asm.S} +16 -10
- package/src/koffi/src/{abi/arm64_asm.asm → abi_arm64_asm.asm} +17 -10
- package/src/koffi/src/{abi/loong64_asm.S → abi_loong64_asm.S} +16 -10
- package/src/koffi/src/{abi/riscv64.cc → abi_riscv64.cc} +233 -244
- package/src/koffi/src/{abi/riscv64_asm.S → abi_riscv64_asm.S} +16 -10
- package/src/koffi/src/{abi/x64_sysv.cc → abi_x64_sysv.cc} +208 -220
- package/src/koffi/src/{abi/x64_sysv_asm.S → abi_x64_sysv_asm.S} +17 -10
- package/src/koffi/src/{abi/x64_win.cc → abi_x64_win.cc} +175 -230
- package/src/koffi/src/{abi/x64_win_asm.S → abi_x64_win_asm.S} +49 -27
- package/src/koffi/src/{abi/x64_win_asm.asm → abi_x64_win_asm.asm} +54 -27
- package/src/koffi/src/{abi/x86.cc → abi_x86.cc} +187 -252
- package/src/koffi/src/{abi/x86_asm.S → abi_x86_asm.S} +38 -21
- package/src/koffi/src/{abi/x86_asm.asm → abi_x86_asm.asm} +33 -16
- package/src/koffi/src/call.cc +475 -290
- package/src/koffi/src/call.hh +15 -18
- package/src/koffi/src/ffi.cc +195 -184
- package/src/koffi/src/ffi.hh +60 -16
- package/src/koffi/src/init.js +1 -0
- package/src/koffi/src/util.cc +113 -159
- package/src/koffi/src/util.hh +23 -74
- package/src/koffi/src/win32.cc +13 -0
- package/src/koffi/src/win32.hh +7 -0
- package/src/koffi/tools/write_trampolines.js +77 -0
- package/doc/README.md +0 -27
- package/doc/assets.ini +0 -24
- package/doc/build.sh +0 -9
- package/doc/develop.sh +0 -15
- package/doc/pages/404.md +0 -17
- package/doc/pages.ini +0 -86
- package/doc/static/highlight.js +0 -8
- package/doc/static/koffi.css +0 -11
- package/doc/static/koffi.png +0 -0
- package/doc/static/logo.webp +0 -0
- package/doc/static/perf_linux.png +0 -0
- package/doc/static/perf_windows.png +0 -0
- package/doc/static/print.css +0 -10
- package/doc/templates/code.html +0 -48
- package/doc/templates/page.html +0 -47
- package/src/koffi/cmake/raylib.cmake +0 -85
- package/src/koffi/cmake/sqlite3.cmake +0 -9
- package/src/koffi/examples/electron-builder/README.md +0 -11
- package/src/koffi/examples/electron-builder/package.json +0 -21
- package/src/koffi/examples/electron-builder/src/app.js +0 -20
- package/src/koffi/examples/electron-builder/src/index.html +0 -143
- package/src/koffi/examples/electron-builder/src/preload.js +0 -5
- package/src/koffi/examples/electron-forge/README.md +0 -25
- package/src/koffi/examples/electron-forge/forge.config.js +0 -63
- package/src/koffi/examples/electron-forge/package.json +0 -39
- package/src/koffi/examples/electron-forge/src/index.css +0 -7
- package/src/koffi/examples/electron-forge/src/index.html +0 -143
- package/src/koffi/examples/electron-forge/src/main.js +0 -52
- package/src/koffi/examples/electron-forge/src/preload.js +0 -5
- package/src/koffi/examples/electron-forge/src/renderer.js +0 -31
- package/src/koffi/examples/electron-forge/webpack.main.config.js +0 -11
- package/src/koffi/examples/electron-forge/webpack.renderer.config.js +0 -13
- package/src/koffi/examples/electron-forge/webpack.rules.js +0 -35
- package/src/koffi/examples/node-esbuild/README.md +0 -19
- package/src/koffi/examples/node-esbuild/index.js +0 -2
- package/src/koffi/examples/node-esbuild/package.json +0 -16
- package/src/koffi/examples/nwjs/README.md +0 -20
- package/src/koffi/examples/nwjs/package.json +0 -11
- package/src/koffi/examples/nwjs/src/index.html +0 -145
- package/src/koffi/examples/nwjs/src/package.json +0 -10
- package/src/koffi/examples/yao-pkg/README.md +0 -17
- package/src/koffi/examples/yao-pkg/index.js +0 -2
- package/src/koffi/examples/yao-pkg/package.json +0 -22
- package/src/koffi/src/primitives.inc +0 -39
- package/src/koffi/src/trampolines/armasm.inc +0 -32771
- package/src/koffi/src/trampolines/gnu.inc +0 -24577
- package/src/koffi/src/trampolines/masm32.inc +0 -32769
- package/src/koffi/src/trampolines/masm64.inc +0 -32769
- package/src/koffi/src/trampolines/prototypes.inc +0 -16388
- package/vendor/node-addon-api/CHANGELOG.md +0 -1272
- package/vendor/node-addon-api/CODE_OF_CONDUCT.md +0 -4
- package/vendor/node-addon-api/CONTRIBUTING.md +0 -203
- package/vendor/node-addon-api/appveyor.yml +0 -37
- package/vendor/node-addon-api/benchmark/README.md +0 -47
- package/vendor/node-addon-api/benchmark/binding.gyp +0 -25
- package/vendor/node-addon-api/benchmark/function_args.cc +0 -250
- package/vendor/node-addon-api/benchmark/function_args.js +0 -60
- package/vendor/node-addon-api/benchmark/index.js +0 -34
- package/vendor/node-addon-api/benchmark/property_descriptor.cc +0 -84
- package/vendor/node-addon-api/benchmark/property_descriptor.js +0 -38
- package/vendor/node-addon-api/common.gypi +0 -21
- package/vendor/node-addon-api/doc/README.md +0 -145
- package/vendor/node-addon-api/doc/addon.md +0 -163
- package/vendor/node-addon-api/doc/array.md +0 -81
- package/vendor/node-addon-api/doc/array_buffer.md +0 -165
- package/vendor/node-addon-api/doc/async_context.md +0 -86
- package/vendor/node-addon-api/doc/async_operations.md +0 -31
- package/vendor/node-addon-api/doc/async_worker.md +0 -428
- package/vendor/node-addon-api/doc/async_worker_variants.md +0 -578
- package/vendor/node-addon-api/doc/basic_env.md +0 -200
- package/vendor/node-addon-api/doc/bigint.md +0 -97
- package/vendor/node-addon-api/doc/boolean.md +0 -68
- package/vendor/node-addon-api/doc/buffer.md +0 -245
- package/vendor/node-addon-api/doc/callback_scope.md +0 -54
- package/vendor/node-addon-api/doc/callbackinfo.md +0 -97
- package/vendor/node-addon-api/doc/checker-tool.md +0 -32
- package/vendor/node-addon-api/doc/class_property_descriptor.md +0 -123
- package/vendor/node-addon-api/doc/cmake-js.md +0 -87
- package/vendor/node-addon-api/doc/contributing/creating_a_release.md +0 -95
- package/vendor/node-addon-api/doc/conversion-tool.md +0 -28
- package/vendor/node-addon-api/doc/dataview.md +0 -248
- package/vendor/node-addon-api/doc/date.md +0 -68
- package/vendor/node-addon-api/doc/env.md +0 -87
- package/vendor/node-addon-api/doc/error.md +0 -120
- package/vendor/node-addon-api/doc/error_handling.md +0 -266
- package/vendor/node-addon-api/doc/escapable_handle_scope.md +0 -80
- package/vendor/node-addon-api/doc/external.md +0 -79
- package/vendor/node-addon-api/doc/external_buffer.md +0 -18
- package/vendor/node-addon-api/doc/finalization.md +0 -153
- package/vendor/node-addon-api/doc/function.md +0 -402
- package/vendor/node-addon-api/doc/function_reference.md +0 -238
- package/vendor/node-addon-api/doc/generator.md +0 -13
- package/vendor/node-addon-api/doc/handle_scope.md +0 -77
- package/vendor/node-addon-api/doc/hierarchy.md +0 -95
- package/vendor/node-addon-api/doc/instance_wrap.md +0 -408
- package/vendor/node-addon-api/doc/maybe.md +0 -76
- package/vendor/node-addon-api/doc/memory_management.md +0 -27
- package/vendor/node-addon-api/doc/name.md +0 -29
- package/vendor/node-addon-api/doc/node-gyp.md +0 -82
- package/vendor/node-addon-api/doc/number.md +0 -163
- package/vendor/node-addon-api/doc/object.md +0 -411
- package/vendor/node-addon-api/doc/object_lifetime_management.md +0 -83
- package/vendor/node-addon-api/doc/object_reference.md +0 -117
- package/vendor/node-addon-api/doc/object_wrap.md +0 -604
- package/vendor/node-addon-api/doc/prebuild_tools.md +0 -16
- package/vendor/node-addon-api/doc/promises.md +0 -130
- package/vendor/node-addon-api/doc/property_descriptor.md +0 -286
- package/vendor/node-addon-api/doc/propertylvalue.md +0 -50
- package/vendor/node-addon-api/doc/range_error.md +0 -59
- package/vendor/node-addon-api/doc/reference.md +0 -113
- package/vendor/node-addon-api/doc/setup.md +0 -115
- package/vendor/node-addon-api/doc/string.md +0 -93
- package/vendor/node-addon-api/doc/symbol.md +0 -61
- package/vendor/node-addon-api/doc/syntax_error.md +0 -66
- package/vendor/node-addon-api/doc/threadsafe.md +0 -121
- package/vendor/node-addon-api/doc/threadsafe_function.md +0 -290
- package/vendor/node-addon-api/doc/type_error.md +0 -59
- package/vendor/node-addon-api/doc/type_taggable.md +0 -40
- package/vendor/node-addon-api/doc/typed_array.md +0 -78
- package/vendor/node-addon-api/doc/typed_array_of.md +0 -137
- package/vendor/node-addon-api/doc/typed_threadsafe_function.md +0 -306
- package/vendor/node-addon-api/doc/value.md +0 -368
- package/vendor/node-addon-api/doc/version_management.md +0 -43
- package/vendor/node-addon-api/eslint.config.js +0 -5
- package/vendor/node-addon-api/except.gypi +0 -25
- package/vendor/node-addon-api/index.js +0 -14
- package/vendor/node-addon-api/node_addon_api.gyp +0 -42
- package/vendor/node-addon-api/node_api.gyp +0 -9
- package/vendor/node-addon-api/noexcept.gypi +0 -26
- package/vendor/node-addon-api/nothing.c +0 -0
- package/vendor/node-addon-api/package-support.json +0 -21
- package/vendor/node-addon-api/package.json +0 -480
- package/vendor/node-addon-api/release-please-config.json +0 -15
- package/vendor/node-addon-api/test/README.md +0 -91
- package/vendor/node-addon-api/test/addon.cc +0 -44
- package/vendor/node-addon-api/test/addon.js +0 -7
- package/vendor/node-addon-api/test/addon_build/index.js +0 -49
- package/vendor/node-addon-api/test/addon_build/tpl/addon.cc +0 -18
- package/vendor/node-addon-api/test/addon_build/tpl/binding.gyp +0 -63
- package/vendor/node-addon-api/test/addon_build/tpl/index.js +0 -9
- package/vendor/node-addon-api/test/addon_build/tpl/package.json +0 -11
- package/vendor/node-addon-api/test/addon_data.cc +0 -98
- package/vendor/node-addon-api/test/addon_data.js +0 -24
- package/vendor/node-addon-api/test/array_buffer.cc +0 -243
- package/vendor/node-addon-api/test/array_buffer.js +0 -70
- package/vendor/node-addon-api/test/async_context.cc +0 -36
- package/vendor/node-addon-api/test/async_context.js +0 -122
- package/vendor/node-addon-api/test/async_progress_queue_worker.cc +0 -248
- package/vendor/node-addon-api/test/async_progress_queue_worker.js +0 -180
- package/vendor/node-addon-api/test/async_progress_worker.cc +0 -357
- package/vendor/node-addon-api/test/async_progress_worker.js +0 -200
- package/vendor/node-addon-api/test/async_worker.cc +0 -341
- package/vendor/node-addon-api/test/async_worker.js +0 -264
- package/vendor/node-addon-api/test/async_worker_nocallback.js +0 -19
- package/vendor/node-addon-api/test/async_worker_persistent.cc +0 -63
- package/vendor/node-addon-api/test/async_worker_persistent.js +0 -24
- package/vendor/node-addon-api/test/basic_types/array.cc +0 -40
- package/vendor/node-addon-api/test/basic_types/array.js +0 -34
- package/vendor/node-addon-api/test/basic_types/boolean.cc +0 -40
- package/vendor/node-addon-api/test/basic_types/boolean.js +0 -34
- package/vendor/node-addon-api/test/basic_types/number.cc +0 -105
- package/vendor/node-addon-api/test/basic_types/number.js +0 -115
- package/vendor/node-addon-api/test/basic_types/value.cc +0 -177
- package/vendor/node-addon-api/test/basic_types/value.js +0 -173
- package/vendor/node-addon-api/test/bigint.cc +0 -91
- package/vendor/node-addon-api/test/bigint.js +0 -53
- package/vendor/node-addon-api/test/binding-swallowexcept.cc +0 -12
- package/vendor/node-addon-api/test/binding.cc +0 -200
- package/vendor/node-addon-api/test/binding.gyp +0 -160
- package/vendor/node-addon-api/test/buffer.cc +0 -185
- package/vendor/node-addon-api/test/buffer.h +0 -26
- package/vendor/node-addon-api/test/buffer.js +0 -150
- package/vendor/node-addon-api/test/buffer_new_or_copy-inl.h +0 -68
- package/vendor/node-addon-api/test/buffer_no_external.cc +0 -24
- package/vendor/node-addon-api/test/callbackInfo.cc +0 -27
- package/vendor/node-addon-api/test/callbackInfo.js +0 -9
- package/vendor/node-addon-api/test/callbackscope.cc +0 -39
- package/vendor/node-addon-api/test/callbackscope.js +0 -49
- package/vendor/node-addon-api/test/child_processes/addon.js +0 -11
- package/vendor/node-addon-api/test/child_processes/addon_data.js +0 -24
- package/vendor/node-addon-api/test/child_processes/objectwrap_function.js +0 -22
- package/vendor/node-addon-api/test/child_processes/threadsafe_function_exception.js +0 -33
- package/vendor/node-addon-api/test/child_processes/typed_threadsafe_function_exception.js +0 -19
- package/vendor/node-addon-api/test/common/index.js +0 -246
- package/vendor/node-addon-api/test/common/test_helper.h +0 -71
- package/vendor/node-addon-api/test/dataview/dataview.cc +0 -48
- package/vendor/node-addon-api/test/dataview/dataview.js +0 -35
- package/vendor/node-addon-api/test/dataview/dataview_read_write.cc +0 -115
- package/vendor/node-addon-api/test/dataview/dataview_read_write.js +0 -92
- package/vendor/node-addon-api/test/date.cc +0 -45
- package/vendor/node-addon-api/test/date.js +0 -18
- package/vendor/node-addon-api/test/env_cleanup.cc +0 -100
- package/vendor/node-addon-api/test/env_cleanup.js +0 -55
- package/vendor/node-addon-api/test/env_misc.cc +0 -25
- package/vendor/node-addon-api/test/env_misc.js +0 -12
- package/vendor/node-addon-api/test/error.cc +0 -436
- package/vendor/node-addon-api/test/error.js +0 -111
- package/vendor/node-addon-api/test/error_handling_for_primitives.cc +0 -13
- package/vendor/node-addon-api/test/error_handling_for_primitives.js +0 -29
- package/vendor/node-addon-api/test/error_terminating_environment.js +0 -99
- package/vendor/node-addon-api/test/except_all.cc +0 -22
- package/vendor/node-addon-api/test/except_all.js +0 -14
- package/vendor/node-addon-api/test/exports.js +0 -19
- package/vendor/node-addon-api/test/external.cc +0 -85
- package/vendor/node-addon-api/test/external.js +0 -85
- package/vendor/node-addon-api/test/finalizer_order.cc +0 -152
- package/vendor/node-addon-api/test/finalizer_order.js +0 -98
- package/vendor/node-addon-api/test/function.cc +0 -338
- package/vendor/node-addon-api/test/function.js +0 -137
- package/vendor/node-addon-api/test/function_reference.cc +0 -204
- package/vendor/node-addon-api/test/function_reference.js +0 -157
- package/vendor/node-addon-api/test/globalObject/global_object.cc +0 -61
- package/vendor/node-addon-api/test/globalObject/global_object_delete_property.cc +0 -31
- package/vendor/node-addon-api/test/globalObject/global_object_delete_property.js +0 -58
- package/vendor/node-addon-api/test/globalObject/global_object_get_property.cc +0 -40
- package/vendor/node-addon-api/test/globalObject/global_object_get_property.js +0 -56
- package/vendor/node-addon-api/test/globalObject/global_object_has_own_property.cc +0 -28
- package/vendor/node-addon-api/test/globalObject/global_object_has_own_property.js +0 -46
- package/vendor/node-addon-api/test/globalObject/global_object_set_property.cc +0 -31
- package/vendor/node-addon-api/test/globalObject/global_object_set_property.js +0 -56
- package/vendor/node-addon-api/test/handlescope.cc +0 -86
- package/vendor/node-addon-api/test/handlescope.js +0 -16
- package/vendor/node-addon-api/test/index.js +0 -160
- package/vendor/node-addon-api/test/maybe/check.cc +0 -69
- package/vendor/node-addon-api/test/maybe/index.js +0 -50
- package/vendor/node-addon-api/test/memory_management.cc +0 -18
- package/vendor/node-addon-api/test/memory_management.js +0 -9
- package/vendor/node-addon-api/test/movable_callbacks.cc +0 -23
- package/vendor/node-addon-api/test/movable_callbacks.js +0 -21
- package/vendor/node-addon-api/test/name.cc +0 -110
- package/vendor/node-addon-api/test/name.js +0 -59
- package/vendor/node-addon-api/test/napi_child.js +0 -14
- package/vendor/node-addon-api/test/object/delete_property.cc +0 -38
- package/vendor/node-addon-api/test/object/delete_property.js +0 -41
- package/vendor/node-addon-api/test/object/finalizer.cc +0 -30
- package/vendor/node-addon-api/test/object/finalizer.js +0 -28
- package/vendor/node-addon-api/test/object/get_property.cc +0 -34
- package/vendor/node-addon-api/test/object/get_property.js +0 -40
- package/vendor/node-addon-api/test/object/has_own_property.cc +0 -34
- package/vendor/node-addon-api/test/object/has_own_property.js +0 -34
- package/vendor/node-addon-api/test/object/has_property.cc +0 -38
- package/vendor/node-addon-api/test/object/has_property.js +0 -37
- package/vendor/node-addon-api/test/object/object.cc +0 -430
- package/vendor/node-addon-api/test/object/object.js +0 -218
- package/vendor/node-addon-api/test/object/object_deprecated.cc +0 -70
- package/vendor/node-addon-api/test/object/object_deprecated.js +0 -42
- package/vendor/node-addon-api/test/object/object_freeze_seal.cc +0 -25
- package/vendor/node-addon-api/test/object/object_freeze_seal.js +0 -61
- package/vendor/node-addon-api/test/object/set_property.cc +0 -45
- package/vendor/node-addon-api/test/object/set_property.js +0 -30
- package/vendor/node-addon-api/test/object/subscript_operator.cc +0 -58
- package/vendor/node-addon-api/test/object/subscript_operator.js +0 -17
- package/vendor/node-addon-api/test/object_reference.cc +0 -417
- package/vendor/node-addon-api/test/object_reference.js +0 -262
- package/vendor/node-addon-api/test/objectwrap.cc +0 -295
- package/vendor/node-addon-api/test/objectwrap.js +0 -309
- package/vendor/node-addon-api/test/objectwrap_constructor_exception.cc +0 -26
- package/vendor/node-addon-api/test/objectwrap_constructor_exception.js +0 -18
- package/vendor/node-addon-api/test/objectwrap_function.cc +0 -43
- package/vendor/node-addon-api/test/objectwrap_function.js +0 -6
- package/vendor/node-addon-api/test/objectwrap_multiple_inheritance.cc +0 -30
- package/vendor/node-addon-api/test/objectwrap_multiple_inheritance.js +0 -13
- package/vendor/node-addon-api/test/objectwrap_removewrap.cc +0 -45
- package/vendor/node-addon-api/test/objectwrap_removewrap.js +0 -32
- package/vendor/node-addon-api/test/objectwrap_worker_thread.js +0 -20
- package/vendor/node-addon-api/test/promise.cc +0 -111
- package/vendor/node-addon-api/test/promise.js +0 -43
- package/vendor/node-addon-api/test/reference.cc +0 -78
- package/vendor/node-addon-api/test/reference.js +0 -20
- package/vendor/node-addon-api/test/require_basic_finalizers/index.js +0 -38
- package/vendor/node-addon-api/test/require_basic_finalizers/tpl/addon.cc +0 -12
- package/vendor/node-addon-api/test/require_basic_finalizers/tpl/binding.gyp +0 -48
- package/vendor/node-addon-api/test/require_basic_finalizers/tpl/index.js +0 -3
- package/vendor/node-addon-api/test/require_basic_finalizers/tpl/package.json +0 -11
- package/vendor/node-addon-api/test/run_script.cc +0 -56
- package/vendor/node-addon-api/test/run_script.js +0 -45
- package/vendor/node-addon-api/test/symbol.cc +0 -79
- package/vendor/node-addon-api/test/symbol.js +0 -66
- package/vendor/node-addon-api/test/testUtil.js +0 -54
- package/vendor/node-addon-api/test/threadsafe_function/threadsafe_function.cc +0 -230
- package/vendor/node-addon-api/test/threadsafe_function/threadsafe_function.js +0 -225
- package/vendor/node-addon-api/test/threadsafe_function/threadsafe_function_ctx.cc +0 -155
- package/vendor/node-addon-api/test/threadsafe_function/threadsafe_function_ctx.js +0 -13
- package/vendor/node-addon-api/test/threadsafe_function/threadsafe_function_exception.cc +0 -50
- package/vendor/node-addon-api/test/threadsafe_function/threadsafe_function_exception.js +0 -20
- package/vendor/node-addon-api/test/threadsafe_function/threadsafe_function_existing_tsfn.cc +0 -125
- package/vendor/node-addon-api/test/threadsafe_function/threadsafe_function_existing_tsfn.js +0 -14
- package/vendor/node-addon-api/test/threadsafe_function/threadsafe_function_ptr.cc +0 -27
- package/vendor/node-addon-api/test/threadsafe_function/threadsafe_function_ptr.js +0 -7
- package/vendor/node-addon-api/test/threadsafe_function/threadsafe_function_sum.cc +0 -240
- package/vendor/node-addon-api/test/threadsafe_function/threadsafe_function_sum.js +0 -59
- package/vendor/node-addon-api/test/threadsafe_function/threadsafe_function_unref.cc +0 -55
- package/vendor/node-addon-api/test/threadsafe_function/threadsafe_function_unref.js +0 -98
- package/vendor/node-addon-api/test/thunking_manual.cc +0 -127
- package/vendor/node-addon-api/test/thunking_manual.js +0 -16
- package/vendor/node-addon-api/test/type_taggable.cc +0 -66
- package/vendor/node-addon-api/test/type_taggable.js +0 -59
- package/vendor/node-addon-api/test/typed_threadsafe_function/typed_threadsafe_function.cc +0 -215
- package/vendor/node-addon-api/test/typed_threadsafe_function/typed_threadsafe_function.js +0 -188
- package/vendor/node-addon-api/test/typed_threadsafe_function/typed_threadsafe_function_ctx.cc +0 -120
- package/vendor/node-addon-api/test/typed_threadsafe_function/typed_threadsafe_function_ctx.js +0 -14
- package/vendor/node-addon-api/test/typed_threadsafe_function/typed_threadsafe_function_exception.cc +0 -39
- package/vendor/node-addon-api/test/typed_threadsafe_function/typed_threadsafe_function_exception.js +0 -13
- package/vendor/node-addon-api/test/typed_threadsafe_function/typed_threadsafe_function_existing_tsfn.cc +0 -127
- package/vendor/node-addon-api/test/typed_threadsafe_function/typed_threadsafe_function_existing_tsfn.js +0 -14
- package/vendor/node-addon-api/test/typed_threadsafe_function/typed_threadsafe_function_ptr.cc +0 -32
- package/vendor/node-addon-api/test/typed_threadsafe_function/typed_threadsafe_function_ptr.js +0 -8
- package/vendor/node-addon-api/test/typed_threadsafe_function/typed_threadsafe_function_sum.cc +0 -237
- package/vendor/node-addon-api/test/typed_threadsafe_function/typed_threadsafe_function_sum.js +0 -59
- package/vendor/node-addon-api/test/typed_threadsafe_function/typed_threadsafe_function_unref.cc +0 -67
- package/vendor/node-addon-api/test/typed_threadsafe_function/typed_threadsafe_function_unref.js +0 -98
- package/vendor/node-addon-api/test/typedarray-bigint.js +0 -58
- package/vendor/node-addon-api/test/typedarray.cc +0 -413
- package/vendor/node-addon-api/test/typedarray.js +0 -103
- package/vendor/node-addon-api/test/value_type_cast.cc +0 -60
- package/vendor/node-addon-api/test/value_type_cast.js +0 -106
- package/vendor/node-addon-api/test/version_management.cc +0 -28
- package/vendor/node-addon-api/test/version_management.js +0 -29
- package/vendor/node-addon-api/tools/README.md +0 -73
- package/vendor/node-addon-api/tools/check-napi.js +0 -99
- package/vendor/node-addon-api/tools/clang-format.js +0 -71
- package/vendor/node-addon-api/tools/conversion.js +0 -301
- package/vendor/node-addon-api/unit-test/README.md +0 -28
- package/vendor/node-addon-api/unit-test/binding-file-template.js +0 -39
- package/vendor/node-addon-api/unit-test/binding.gyp +0 -72
- package/vendor/node-addon-api/unit-test/exceptions.js +0 -32
- package/vendor/node-addon-api/unit-test/generate-binding-cc.js +0 -61
- package/vendor/node-addon-api/unit-test/injectTestParams.js +0 -101
- package/vendor/node-addon-api/unit-test/listOfTestModules.js +0 -88
- package/vendor/node-addon-api/unit-test/matchModules.js +0 -65
- package/vendor/node-addon-api/unit-test/setup.js +0 -13
- package/vendor/node-addon-api/unit-test/spawnTask.js +0 -26
- package/vendor/node-addon-api/unit-test/test.js +0 -30
- package/vendor/node-api-headers/CHANGELOG.md +0 -130
- package/vendor/node-api-headers/CODE_OF_CONDUCT.md +0 -4
- package/vendor/node-api-headers/CONTRIBUTING.md +0 -32
- package/vendor/node-api-headers/CREATING_A_RELEASE.md +0 -68
- package/vendor/node-api-headers/index.js +0 -17
- package/vendor/node-api-headers/lib/clang-utils.js +0 -50
- package/vendor/node-api-headers/lib/parse-utils.js +0 -92
- package/vendor/node-api-headers/package.json +0 -59
- package/vendor/node-api-headers/release-please-config.json +0 -12
- package/vendor/node-api-headers/scripts/update-headers.js +0 -246
- package/vendor/node-api-headers/scripts/write-symbols.js +0 -154
- package/vendor/node-api-headers/scripts/write-win32-def.js +0 -52
- package/vendor/node-api-headers/symbols.js +0 -257
- package/vendor/node-api-headers/test/parse-utils.js +0 -21
- /package/doc/{pages/benchmarks.md → benchmarks.md} +0 -0
- /package/doc/{pages/callbacks.md → callbacks.md} +0 -0
- /package/doc/{pages/contribute.md → contribute.md} +0 -0
- /package/doc/{pages/functions.md → functions.md} +0 -0
- /package/doc/{pages/index.md → index.md} +0 -0
- /package/doc/{pages/input.md → input.md} +0 -0
- /package/doc/{pages/migration.md → migration.md} +0 -0
- /package/doc/{pages/misc.md → misc.md} +0 -0
- /package/doc/{pages/output.md → output.md} +0 -0
- /package/doc/{pages/packaging.md → packaging.md} +0 -0
- /package/doc/{pages/platforms.md → platforms.md} +0 -0
- /package/doc/{pages/pointers.md → pointers.md} +0 -0
- /package/doc/{pages/start.md → start.md} +0 -0
- /package/doc/{pages/unions.md → unions.md} +0 -0
- /package/doc/{pages/variables.md → variables.md} +0 -0
- /package/src/koffi/src/{abi/loong64.cc → abi_loong64.cc} +0 -0
package/src/cnoke/src/builder.js
CHANGED
|
@@ -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
|
|
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
|
-
|
|
48
|
-
|
|
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}_${
|
|
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(`>>
|
|
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
|
-
|
|
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 = (
|
|
112
|
-
let
|
|
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 (
|
|
118
|
-
|
|
119
|
-
|
|
120
|
-
|
|
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
|
-
|
|
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}/${
|
|
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
|
-
|
|
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
|
-
|
|
171
|
-
|
|
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 (
|
|
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 (
|
|
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
|
|
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
|
-
|
|
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(
|
|
501
|
+
expanded = path.join(root, expanded);
|
|
502
|
+
expanded = path.normalize(expanded);
|
|
442
503
|
|
|
443
504
|
return expanded;
|
|
444
505
|
}
|
package/src/cnoke/src/tools.js
CHANGED
|
@@ -351,11 +351,7 @@ function decode_elf_header(buf) {
|
|
|
351
351
|
|
|
352
352
|
function unlink_recursive(path) {
|
|
353
353
|
try {
|
|
354
|
-
|
|
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;
|
package/src/koffi/CMakeLists.txt
CHANGED
|
@@ -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.
|
|
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/
|
|
82
|
-
file(TO_CMAKE_PATH "${CMAKE_CURRENT_BINARY_DIR}/
|
|
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}"
|
|
87
|
-
|
|
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/
|
|
102
|
+
list(APPEND KOFFI_SRC src/abi_arm64.cc "${asm_object}")
|
|
93
103
|
else()
|
|
94
|
-
list(APPEND KOFFI_SRC src/
|
|
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/
|
|
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/
|
|
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/
|
|
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/
|
|
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/
|
|
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/
|
|
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/
|
|
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/
|
|
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
|
|