diff --git a/ets2panda/driver/build_system/package.json b/ets2panda/driver/build_system/package.json index 1b1672985c5ee87c3d819fe2b995767e6daef159..25d9739b0eaa45f4627317044b3a46fda92549a7 100644 --- a/ets2panda/driver/build_system/package.json +++ b/ets2panda/driver/build_system/package.json @@ -68,7 +68,8 @@ "rimraf": "6.0.1", "ts-node": "^10.9.2", "ts-jest": "^29.1.1", - "typescript": "^5.0.0" + "typescript": "^5.0.0", + "ffi-napi": "^4.0.3" }, "babel": { "presets": [ diff --git a/ets2panda/driver/build_system/src/entry.ts b/ets2panda/driver/build_system/src/entry.ts index b590749038c8953a587b3c389edfca42c9c08019..33551e686f2929aaf297021053bd1fca534308f6 100644 --- a/ets2panda/driver/build_system/src/entry.ts +++ b/ets2panda/driver/build_system/src/entry.ts @@ -65,3 +65,23 @@ function main(): void { if (require.main === module) { main(); } + +function transformLib(soPath: string, dynamicAbcPath: string, staticAbcPath: string): void { + try { + const ffi = require('ffi-napi'); + + const dllObj = ffi.Library(soPath, { + 'Transform': ['int', ['string']], + 'TransformHybrid': ['int', ['string', 'string']] + }); + + let result: number = dllObj.Transform(dynamicAbcPath); + console.info(`Transform result: ${result}`); + result = dllObj.TransformHybrid(dynamicAbcPath, staticAbcPath); + console.info(`TransformHybrid result: ${result}`); + } catch (e) { + console.error('transformLib error: ', e); + } +} + +exports.transformLib = transformLib; \ No newline at end of file