koffi 2.15.0 → 2.16.0-beta.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 +7 -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.node +0 -0
- package/build/koffi/win32_ia32/koffi.node +0 -0
- package/build/koffi/win32_x64/koffi.node +0 -0
- package/doc/pages/index.md +4 -2
- package/doc/pages/misc.md +2 -0
- package/doc/templates/code.html +1 -2
- package/doc/templates/page.html +1 -2
- package/index.d.ts +11 -9
- package/index.js +9 -9
- package/indirect.js +9 -9
- package/lib/native/base/base.cc +79 -44
- package/lib/native/base/base.hh +31 -33
- package/package.json +2 -2
- package/src/cnoke/assets/FindCNoke.cmake +16 -10
- package/src/cnoke/assets/win_delay_hook.c +4 -0
- package/src/cnoke/src/builder.js +49 -46
- package/src/koffi/CMakeLists.txt +18 -8
- package/src/koffi/src/abi_arm32.cc +222 -219
- package/src/koffi/src/abi_arm32_asm.S +1 -29
- package/src/koffi/src/abi_arm64.cc +257 -235
- package/src/koffi/src/abi_arm64_asm.S +1 -32
- package/src/koffi/src/abi_arm64_asm.asm +1 -23
- package/src/koffi/src/abi_loong64_asm.S +1 -25
- package/src/koffi/src/abi_riscv64.cc +220 -217
- package/src/koffi/src/abi_riscv64_asm.S +1 -25
- package/src/koffi/src/abi_x64_sysv.cc +196 -192
- package/src/koffi/src/abi_x64_sysv_asm.S +1 -31
- package/src/koffi/src/abi_x64_win.cc +188 -172
- package/src/koffi/src/abi_x64_win_asm.S +144 -0
- package/src/koffi/src/abi_x64_win_asm.asm +1 -21
- package/src/koffi/src/abi_x86.cc +224 -189
- package/src/koffi/src/abi_x86_asm.S +6 -25
- package/src/koffi/src/abi_x86_asm.asm +9 -22
- package/src/koffi/src/call.cc +246 -428
- package/src/koffi/src/call.hh +9 -8
- package/src/koffi/src/ffi.cc +142 -88
- package/src/koffi/src/ffi.hh +13 -59
- package/src/koffi/src/primitives.inc +39 -0
- package/src/koffi/src/trampolines/armasm.inc +0 -32770
- package/src/koffi/src/trampolines/gnu.inc +0 -24578
- package/src/koffi/src/trampolines/masm32.inc +0 -32770
- package/src/koffi/src/trampolines/masm64.inc +0 -32770
- package/src/koffi/src/trampolines/prototypes.inc +16385 -16385
- package/src/koffi/src/util.cc +155 -112
- package/src/koffi/src/util.hh +77 -40
- package/vendor/node-api-headers/CHANGELOG.md +22 -0
- package/vendor/node-api-headers/README.md +6 -17
- package/vendor/node-api-headers/include/js_native_api.h +3 -13
- package/vendor/node-api-headers/include/js_native_api_types.h +15 -0
- package/vendor/node-api-headers/include/node_api.h +0 -4
- package/vendor/node-api-headers/include/node_api_types.h +6 -0
- package/vendor/node-api-headers/package.json +1 -1
- package/vendor/node-api-headers/scripts/update-headers.js +6 -0
|
@@ -9,12 +9,19 @@ else()
|
|
|
9
9
|
endif()
|
|
10
10
|
|
|
11
11
|
if(NODE_JS_LINK_DEF)
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
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()
|
|
18
25
|
endif()
|
|
19
26
|
|
|
20
27
|
function(add_node_addon)
|
|
@@ -26,10 +33,10 @@ endfunction()
|
|
|
26
33
|
|
|
27
34
|
function(target_link_node TARGET)
|
|
28
35
|
target_include_directories(${TARGET} PRIVATE ${NODE_JS_INCLUDE_DIRS})
|
|
36
|
+
if(NODE_JS_LINK_DEF)
|
|
37
|
+
target_sources(${TARGET} PRIVATE node.lib)
|
|
38
|
+
endif()
|
|
29
39
|
if(NODE_JS_LINK_LIB)
|
|
30
|
-
if(TARGET node.lib)
|
|
31
|
-
add_dependencies(${TARGET} node.lib)
|
|
32
|
-
endif()
|
|
33
40
|
target_link_libraries(${TARGET} PRIVATE ${NODE_JS_LINK_LIB})
|
|
34
41
|
endif()
|
|
35
42
|
target_compile_options(${TARGET} PRIVATE ${NODE_JS_COMPILE_FLAGS})
|
|
@@ -100,7 +107,6 @@ else()
|
|
|
100
107
|
endif()
|
|
101
108
|
|
|
102
109
|
if(CMAKE_CXX_COMPILER_ID STREQUAL "Clang" OR CMAKE_CXX_COMPILER_ID STREQUAL "GNU")
|
|
103
|
-
message(STATUS ${CMAKE_SYSTEM_PROCESSOR})
|
|
104
110
|
if(CMAKE_SYSTEM_PROCESSOR MATCHES "(amd64|x86_64)")
|
|
105
111
|
foreach(lang C CXX)
|
|
106
112
|
set(CMAKE_${lang}_FLAGS_RELEASE "${CMAKE_${lang}_FLAGS_RELEASE} -mpopcnt -msse4.1 -msse4.2 -mssse3 -mcx16")
|
package/src/cnoke/src/builder.js
CHANGED
|
@@ -106,44 +106,41 @@ function Builder(config = {}) {
|
|
|
106
106
|
args.push(`-DNODE_JS_INCLUDE_DIRS=${options.api}/include`);
|
|
107
107
|
}
|
|
108
108
|
|
|
109
|
-
|
|
110
|
-
if (process.platform == 'win32') {
|
|
111
|
-
if (options.api == null) {
|
|
112
|
-
let dirname;
|
|
113
|
-
switch (arch) {
|
|
114
|
-
case 'ia32': { dirname = 'win-x86'; } break;
|
|
115
|
-
case 'x64': { dirname = 'win-x64'; } break;
|
|
116
|
-
case 'arm64': { dirname = 'win-arm64'; } break;
|
|
117
|
-
|
|
118
|
-
default: {
|
|
119
|
-
throw new Error(`Unsupported architecture '${arch}' for Node on Windows`);
|
|
120
|
-
} break;
|
|
121
|
-
}
|
|
122
|
-
|
|
123
|
-
let destname = `${cache_dir}/node_v${runtime_version}_${arch}.lib`;
|
|
124
|
-
|
|
125
|
-
if (!fs.existsSync(destname)) {
|
|
126
|
-
fs.mkdirSync(cache_dir, { recursive: true, mode: 0o755 });
|
|
109
|
+
args.push(`-DCMAKE_MODULE_PATH=${app_dir}/assets`);
|
|
127
110
|
|
|
128
|
-
|
|
129
|
-
|
|
130
|
-
|
|
111
|
+
let win32 = (process.platform == 'win32');
|
|
112
|
+
let msvc = (process.platform == 'win32' && process.env.MSYSTEM == null);
|
|
113
|
+
let darwin = (process.platform == 'darwin');
|
|
114
|
+
|
|
115
|
+
// Handle Node import library on Windows
|
|
116
|
+
if (win32) {
|
|
117
|
+
if (msvc) {
|
|
118
|
+
if (options.api == null) {
|
|
119
|
+
let dirname;
|
|
120
|
+
switch (arch) {
|
|
121
|
+
case 'ia32': { dirname = 'win-x86'; } break;
|
|
122
|
+
case 'x64': { dirname = 'win-x64'; } break;
|
|
123
|
+
case 'arm64': { dirname = 'win-arm64'; } break;
|
|
124
|
+
|
|
125
|
+
default: {
|
|
126
|
+
throw new Error(`Unsupported architecture '${arch}' for Node on Windows`);
|
|
127
|
+
} break;
|
|
128
|
+
}
|
|
131
129
|
|
|
132
|
-
|
|
133
|
-
} else {
|
|
134
|
-
args.push(`-DNODE_JS_LINK_DEF=${options.api}/def/node_api.def`);
|
|
135
|
-
}
|
|
136
|
-
}
|
|
130
|
+
let destname = `${cache_dir}/node_v${runtime_version}_${arch}.lib`;
|
|
137
131
|
|
|
138
|
-
|
|
132
|
+
if (!fs.existsSync(destname)) {
|
|
133
|
+
fs.mkdirSync(cache_dir, { recursive: true, mode: 0o755 });
|
|
139
134
|
|
|
140
|
-
|
|
141
|
-
|
|
142
|
-
|
|
143
|
-
fs.copyFileSync(`${app_dir}/assets/win_delay_hook.c`, work_dir + '/win_delay_hook.c');
|
|
135
|
+
let url = `https://nodejs.org/dist/v${runtime_version}/${dirname}/node.lib`;
|
|
136
|
+
await tools.download_http(url, destname);
|
|
137
|
+
}
|
|
144
138
|
|
|
145
|
-
|
|
146
|
-
|
|
139
|
+
fs.copyFileSync(destname, work_dir + '/node.lib');
|
|
140
|
+
args.push(`-DNODE_JS_LINK_LIB=${work_dir}/node.lib`);
|
|
141
|
+
} else {
|
|
142
|
+
args.push(`-DNODE_JS_LINK_DEF=${options.api}/def/node_api.def`);
|
|
143
|
+
}
|
|
147
144
|
|
|
148
145
|
switch (arch) {
|
|
149
146
|
case 'ia32': {
|
|
@@ -159,22 +156,29 @@ function Builder(config = {}) {
|
|
|
159
156
|
args.push('-A', 'x64');
|
|
160
157
|
} break;
|
|
161
158
|
}
|
|
162
|
-
} break;
|
|
163
159
|
|
|
164
|
-
|
|
165
|
-
args.push(
|
|
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
|
+
}
|
|
165
|
+
}
|
|
166
|
+
|
|
167
|
+
if (darwin) {
|
|
168
|
+
args.push('-DNODE_JS_LINK_FLAGS=-undefined;dynamic_lookup');
|
|
166
169
|
|
|
167
|
-
|
|
168
|
-
|
|
169
|
-
|
|
170
|
-
|
|
171
|
-
} break;
|
|
170
|
+
switch (arch) {
|
|
171
|
+
case 'arm64': { args.push('-DCMAKE_OSX_ARCHITECTURES=arm64'); } break;
|
|
172
|
+
case 'x64': { args.push('-DCMAKE_OSX_ARCHITECTURES=x86_64'); } break;
|
|
173
|
+
}
|
|
172
174
|
}
|
|
173
175
|
|
|
174
|
-
if (
|
|
175
|
-
|
|
176
|
-
if (spawnSync('ninja', ['--version']).status === 0)
|
|
176
|
+
if (!msvc) {
|
|
177
|
+
if (spawnSync('ninja', ['--version']).status === 0) {
|
|
177
178
|
args.push('-G', 'Ninja');
|
|
179
|
+
} else if (process.platform == 'win32') {
|
|
180
|
+
args.push('-G', 'MinGW Makefiles');
|
|
181
|
+
}
|
|
178
182
|
|
|
179
183
|
// Use CCache if available
|
|
180
184
|
if (spawnSync('ccache', ['--version']).status === 0) {
|
|
@@ -182,9 +186,8 @@ function Builder(config = {}) {
|
|
|
182
186
|
args.push('-DCMAKE_CXX_COMPILER_LAUNCHER=ccache');
|
|
183
187
|
}
|
|
184
188
|
}
|
|
185
|
-
|
|
186
189
|
if (prefer_clang) {
|
|
187
|
-
if (
|
|
190
|
+
if (msvc) {
|
|
188
191
|
args.push('-T', 'ClangCL');
|
|
189
192
|
} else {
|
|
190
193
|
args.push('-DCMAKE_C_COMPILER=clang');
|
package/src/koffi/CMakeLists.txt
CHANGED
|
@@ -99,7 +99,11 @@ if(CMAKE_SIZEOF_VOID_P EQUAL 8)
|
|
|
99
99
|
list(APPEND KOFFI_SRC src/abi_riscv64.cc src/abi_loong64_asm.S)
|
|
100
100
|
else()
|
|
101
101
|
if(WIN32)
|
|
102
|
-
|
|
102
|
+
if(MSVC)
|
|
103
|
+
list(APPEND KOFFI_SRC src/abi_x64_win.cc src/abi_x64_win_asm.asm)
|
|
104
|
+
else()
|
|
105
|
+
list(APPEND KOFFI_SRC src/abi_x64_win.cc src/abi_x64_win_asm.S)
|
|
106
|
+
endif()
|
|
103
107
|
else()
|
|
104
108
|
list(APPEND KOFFI_SRC src/abi_x64_sysv.cc src/abi_x64_sysv_asm.S)
|
|
105
109
|
endif()
|
|
@@ -121,13 +125,19 @@ target_include_directories(koffi PRIVATE . ../.. ../../vendor/node-addon-api)
|
|
|
121
125
|
|
|
122
126
|
if(WIN32)
|
|
123
127
|
set(UV_LINK_LIB "${CMAKE_CURRENT_BINARY_DIR}/uv.lib")
|
|
124
|
-
|
|
125
|
-
|
|
126
|
-
|
|
127
|
-
|
|
128
|
-
|
|
129
|
-
|
|
130
|
-
|
|
128
|
+
if(MSVC)
|
|
129
|
+
add_custom_command(OUTPUT uv.lib
|
|
130
|
+
COMMAND ${CMAKE_AR} ${CMAKE_STATIC_LINKER_FLAGS}
|
|
131
|
+
/def:src/uv.def /out:${UV_LINK_LIB}
|
|
132
|
+
WORKING_DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR}
|
|
133
|
+
MAIN_DEPENDENCY src/uv.def)
|
|
134
|
+
else()
|
|
135
|
+
add_custom_command(OUTPUT uv.lib
|
|
136
|
+
COMMAND ${CMAKE_DLLTOOL} -d src/uv.def -l ${UV_LINK_LIB}
|
|
137
|
+
WORKING_DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR}
|
|
138
|
+
MAIN_DEPENDENCY src/uv.def)
|
|
139
|
+
endif()
|
|
140
|
+
target_sources(koffi PRIVATE uv.lib)
|
|
131
141
|
target_link_libraries(koffi PRIVATE ${UV_LINK_LIB})
|
|
132
142
|
endif()
|
|
133
143
|
|