From 025d277e55e1cb076545bbceb34b52a311be3555 Mon Sep 17 00:00:00 2001 From: Alfi Maulana Date: Mon, 20 Nov 2023 21:52:38 +0700 Subject: [PATCH] feat: pass more arguments during CMake configuration (#78) * feat: parse and pass `generator` input * feat: parse and pass `c-compiler` and `cxx-compiler` inputs * feat: parse and pass `c-flags` and `cxx-flags` inputs * feat: parse and pass `options` input * feat: parse and pass `args` input --- main/index.mjs | 25 ++++++++++++++++++++++++- src/main.mts | 31 ++++++++++++++++++++++++++++++- 2 files changed, 54 insertions(+), 2 deletions(-) diff --git a/main/index.mjs b/main/index.mjs index 4e09894..631c236 100644 --- a/main/index.mjs +++ b/main/index.mjs @@ -27243,7 +27243,30 @@ var __webpack_exports__ = {}; async function main() { const sourceDir = _actions_core__WEBPACK_IMPORTED_MODULE_0__.getInput("source-dir"); const buildDir = _actions_core__WEBPACK_IMPORTED_MODULE_0__.getInput("build-dir"); - await _actions_exec__WEBPACK_IMPORTED_MODULE_1__.exec("cmake", [sourceDir || ".", "-B", buildDir || "build"]); + const configureArgs = [sourceDir || ".", "-B", buildDir || "build"]; + const generator = _actions_core__WEBPACK_IMPORTED_MODULE_0__.getInput("generator"); + if (generator) + configureArgs.push(...["-G", generator]); + const cCompiler = _actions_core__WEBPACK_IMPORTED_MODULE_0__.getInput("c-compiler"); + if (cCompiler) + configureArgs.push("-DCMAKE_C_COMPILER=" + cCompiler); + const cxxCompiler = _actions_core__WEBPACK_IMPORTED_MODULE_0__.getInput("cxx-compiler"); + if (cxxCompiler) + configureArgs.push("-DCMAKE_CXX_COMPILER=" + cxxCompiler); + const cFlags = _actions_core__WEBPACK_IMPORTED_MODULE_0__.getMultilineInput("c-flags").join(" "); + if (cFlags) + configureArgs.push("-DCMAKE_C_FLAGS=" + cFlags); + const cxxFlags = _actions_core__WEBPACK_IMPORTED_MODULE_0__.getMultilineInput("cxx-flags").join(" "); + if (cxxFlags) + configureArgs.push("-DCMAKE_CXX_FLAGS=" + cxxFlags); + const options = _actions_core__WEBPACK_IMPORTED_MODULE_0__.getMultilineInput("options") + .flatMap((opts) => opts.split(" ")) + .map((opt) => "-D" + opt); + configureArgs.push(...options); + const args = _actions_core__WEBPACK_IMPORTED_MODULE_0__.getMultilineInput("args") + .flatMap((args) => args.split(" ")); + configureArgs.push(...args); + await _actions_exec__WEBPACK_IMPORTED_MODULE_1__.exec("cmake", configureArgs); _actions_core__WEBPACK_IMPORTED_MODULE_0__.setOutput("build-dir", buildDir || "build"); const runBuild = _actions_core__WEBPACK_IMPORTED_MODULE_0__.getBooleanInput("run-build"); const runTest = _actions_core__WEBPACK_IMPORTED_MODULE_0__.getBooleanInput("run-test"); diff --git a/src/main.mts b/src/main.mts index eb6ccab..7a9b3c5 100644 --- a/src/main.mts +++ b/src/main.mts @@ -4,7 +4,36 @@ import exec from "@actions/exec"; async function main() { const sourceDir = core.getInput("source-dir"); const buildDir = core.getInput("build-dir"); - await exec.exec("cmake", [sourceDir || ".", "-B", buildDir || "build"]); + + const configureArgs = [sourceDir || ".", "-B", buildDir || "build"]; + + const generator = core.getInput("generator"); + if (generator) configureArgs.push(...["-G", generator]); + + const cCompiler = core.getInput("c-compiler"); + if (cCompiler) configureArgs.push("-DCMAKE_C_COMPILER=" + cCompiler); + + const cxxCompiler = core.getInput("cxx-compiler"); + if (cxxCompiler) configureArgs.push("-DCMAKE_CXX_COMPILER=" + cxxCompiler); + + const cFlags = core.getMultilineInput("c-flags").join(" "); + if (cFlags) configureArgs.push("-DCMAKE_C_FLAGS=" + cFlags); + + const cxxFlags = core.getMultilineInput("cxx-flags").join(" "); + if (cxxFlags) configureArgs.push("-DCMAKE_CXX_FLAGS=" + cxxFlags); + + const options = core + .getMultilineInput("options") + .flatMap((opts) => opts.split(" ")) + .map((opt) => "-D" + opt); + configureArgs.push(...options); + + const args = core + .getMultilineInput("args") + .flatMap((args) => args.split(" ")); + configureArgs.push(...args); + + await exec.exec("cmake", configureArgs); core.setOutput("build-dir", buildDir || "build"); const runBuild = core.getBooleanInput("run-build");