From 4ee46dc4cdecdac0df5f9c717a63c36876ad2c32 Mon Sep 17 00:00:00 2001 From: Leonid Pospelov Date: Fri, 17 Mar 2023 22:50:26 +0600 Subject: [PATCH] add .def file gen --- .github/workflows/sync-headers.yml | 1 + package.json | 4 +-- scripts/write-win32-def.js | 43 ++++++++++++++++++++++++++++++ 3 files changed, 46 insertions(+), 2 deletions(-) create mode 100644 scripts/write-win32-def.js diff --git a/.github/workflows/sync-headers.yml b/.github/workflows/sync-headers.yml index 5a9459f..e8683c9 100644 --- a/.github/workflows/sync-headers.yml +++ b/.github/workflows/sync-headers.yml @@ -26,6 +26,7 @@ jobs: VERSION=${COMMIT_MESSAGE##* } echo $COMMIT_MESSAGE npm run --silent write-symbols + npm run --silent write-win32-def CHANGED_FILES=$(git diff --name-only) BRANCH_NAME="update-headers/${VERSION}" if [ -z "$CHANGED_FILES" ]; then diff --git a/package.json b/package.json index 61d6b12..772a91a 100644 --- a/package.json +++ b/package.json @@ -47,9 +47,9 @@ }, "scripts": { "update-headers": "node --no-warnings scripts/update-headers.js", - "write-symbols": "node --no-warnings scripts/write-symbols.js" + "write-symbols": "node --no-warnings scripts/write-symbols.js", + "write-win32-def": "node --no-warnings scripts/write-win32-def.js" }, "version": "0.0.4", "support": true } - diff --git a/scripts/write-win32-def.js b/scripts/write-win32-def.js new file mode 100644 index 0000000..5a8bc54 --- /dev/null +++ b/scripts/write-win32-def.js @@ -0,0 +1,43 @@ +'use strict'; + +const { resolve: resolvePath } = require('path'); +const { writeFile } = require('fs/promises'); +const { symbols } = require('..'); + +function getNodeApiDef() { + const symbolsSet = new Set(); + for (const ver of Object.values(symbols)) { + for (const sym of ver.node_api_symbols) { + symbolsSet.add(sym); + } + for (const sym of ver.js_native_api_symbols) { + symbolsSet.add(sym); + } + } + return 'NAME NODE.EXE\nEXPORTS\n' + Array.from(symbolsSet).join('\n'); +} + +function getJsNativeApiDef() { + const symbolsSet = new Set(); + for (const ver of Object.values(symbols)) { + for (const sym of ver.js_native_api_symbols) { + symbolsSet.add(sym); + } + } + return 'NAME NODE.EXE\nEXPORTS\n' + Array.from(symbolsSet).join('\n'); +} + +async function main() { + const nodeApiDefPath = resolvePath(__dirname, '../node_api.def'); + console.log(`Writing Windows .def file to ${nodeApiDefPath}`); + await writeFile(nodeApiDefPath, getNodeApiDef()); + + const jsNativeApiDefPath = resolvePath(__dirname, '../js_native_api.def'); + console.log(`Writing Windows .def file to ${jsNativeApiDefPath}`); + await writeFile(jsNativeApiDefPath, getJsNativeApiDef()); +} + +main().catch(e => { + console.error(e); + process.exitCode = 1; +});