From 45397a879155ebc06f14fd80d65dfc3b3b0ea0de Mon Sep 17 00:00:00 2001 From: Dief Bell Date: Tue, 19 Nov 2024 12:44:01 +0000 Subject: [PATCH 1/7] Fixed some bugs with getting VS generator from `cmake -G` --- src/argumentBuilder.ts | 6 +++++- src/lib.ts | 2 +- src/util.ts | 22 +++++++++++++--------- 3 files changed, 19 insertions(+), 11 deletions(-) diff --git a/src/argumentBuilder.ts b/src/argumentBuilder.ts index bf10fa7..83959aa 100644 --- a/src/argumentBuilder.ts +++ b/src/argumentBuilder.ts @@ -20,7 +20,11 @@ export class ArgumentBuilder { const defines = await this.buildDefines(); baseCommand += ` ${ defines.map(d => `-D${d[0]}="${d[1]}"`).join(" ")}`; if (this.options.generatorToUse !== 'native') { - baseCommand += ` -G"${this.options.generatorToUse}"`; + let generatorString = ` -G"${this.options.generatorToUse}"`; + if(!generatorString.match(/^Visual\s+Studio\s+\d+\s+\d+(?!.*\s(Win64|x86)$).*/)) { + generatorString += ` -A ${this.config.arch}`; + } + baseCommand += generatorString; } console.log(baseCommand) return baseCommand; diff --git a/src/lib.ts b/src/lib.ts index 3dc56fc..9100786 100644 --- a/src/lib.ts +++ b/src/lib.ts @@ -212,7 +212,7 @@ export async function defaultBuildOptions(configs: BuildOptions, buildmode: Buil let ninja: string | null; let make: string | null; if (configs.generatorToUse === undefined) { - console.log('no generator specified, checking ninja'); + console.log('no generator specified in package.json, checking ninja'); ninja = await ninjaP; if (!ninja) { console.log('ninja not found, checking make'); diff --git a/src/util.ts b/src/util.ts index 399ae11..aae095b 100644 --- a/src/util.ts +++ b/src/util.ts @@ -19,23 +19,27 @@ export const GET_CMAKE_VS_GENERATOR = async (cmake: string, arch: string): Promi // Some descriptions are multi-line continue; } - genParts[0] = genParts[0].trim(); + genParts[0] = genParts[0].replace(/^(\* )/, "").trim(); // eslint-disable-next-line optimize-regex/optimize-regex - if (genParts[0].match(/Visual\s+Studio\s+\d+\s+\d+\s+\[arch\]/)) { + if (genParts[0].match(/Visual\s+Studio\s+\d+\s+\d+(\s+\[arch\])?/)) { console.log('Found generator: ', genParts[0]); // The first entry is usually the latest entry useVSGen = genParts[0]; break; } } - if (arch === 'x64') { - useVSGen = useVSGen.replace('[arch]', 'Win64').trim(); - } else if (arch === 'x86') { - useVSGen = useVSGen.replace('[arch]', '').trim(); - } else { - console.error('Failed to find valid VS gen, using native. Good Luck.'); - return 'native'; + + const useSwitch = !useVSGen.match(/.*\[arch\]/); + if(!useSwitch) { + if (arch === 'x64') { + useVSGen = useVSGen.replace('[arch]', 'Win64').trim(); + } else if (arch === 'x86') { + useVSGen = useVSGen.replace('[arch]', '').trim(); + } else { + console.error('Failed to find valid VS gen, using native. Good Luck.'); + return 'native'; + } } return useVSGen; } From e7e2f72ae91d69ae9b00331708cc72a829ca01a0 Mon Sep 17 00:00:00 2001 From: Dief Bell Date: Tue, 19 Nov 2024 12:44:10 +0000 Subject: [PATCH 2/7] Bumped version number --- package.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/package.json b/package.json index fe3f23a..32c38ea 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "@aminya/cmake-ts", - "version": "0.3.0-aminya.7", + "version": "0.4.0-aminya.1", "description": "cmake-js rewrite in typescript to support advanced build configurations", "main": "build/lib.js", "bin": "build/main.js", From cd860a9763898dabb4e85da6c89f4f93dbc4773b Mon Sep 17 00:00:00 2001 From: Dief Bell Date: Tue, 19 Nov 2024 12:50:56 +0000 Subject: [PATCH 3/7] Won't add `-A arch` argument to non-Visual Studio generators --- src/argumentBuilder.ts | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/src/argumentBuilder.ts b/src/argumentBuilder.ts index 83959aa..af04c73 100644 --- a/src/argumentBuilder.ts +++ b/src/argumentBuilder.ts @@ -21,7 +21,11 @@ export class ArgumentBuilder { baseCommand += ` ${ defines.map(d => `-D${d[0]}="${d[1]}"`).join(" ")}`; if (this.options.generatorToUse !== 'native') { let generatorString = ` -G"${this.options.generatorToUse}"`; - if(!generatorString.match(/^Visual\s+Studio\s+\d+\s+\d+(?!.*\s(Win64|x86)$).*/)) { + if(!generatorString.match( + /Visual\s+Studio\s+\d+\s+\d+.*/) && + !generatorString.includes("Win64") && + !generatorString.includes("x86") + ) { generatorString += ` -A ${this.config.arch}`; } baseCommand += generatorString; From 3b8eeb0400520ba64bea4449bac79d3a4ae72848 Mon Sep 17 00:00:00 2001 From: Dief Bell Date: Tue, 19 Nov 2024 13:05:07 +0000 Subject: [PATCH 4/7] Fixed condition I promise this time --- src/argumentBuilder.ts | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/argumentBuilder.ts b/src/argumentBuilder.ts index af04c73..7e7da2f 100644 --- a/src/argumentBuilder.ts +++ b/src/argumentBuilder.ts @@ -21,8 +21,8 @@ export class ArgumentBuilder { baseCommand += ` ${ defines.map(d => `-D${d[0]}="${d[1]}"`).join(" ")}`; if (this.options.generatorToUse !== 'native') { let generatorString = ` -G"${this.options.generatorToUse}"`; - if(!generatorString.match( - /Visual\s+Studio\s+\d+\s+\d+.*/) && + if( + generatorString.match(/Visual\s+Studio\s+\d+\s+\d+.*/) && !generatorString.includes("Win64") && !generatorString.includes("x86") ) { From c144d182925d51164d62be4ddb9fc130eed35857 Mon Sep 17 00:00:00 2001 From: Dief Bell Date: Tue, 19 Nov 2024 13:28:56 +0000 Subject: [PATCH 5/7] Haven't broken older x86 builds I hope --- src/argumentBuilder.ts | 7 ++----- src/util.ts | 19 ++++++++++--------- 2 files changed, 12 insertions(+), 14 deletions(-) diff --git a/src/argumentBuilder.ts b/src/argumentBuilder.ts index 7e7da2f..88de654 100644 --- a/src/argumentBuilder.ts +++ b/src/argumentBuilder.ts @@ -21,11 +21,8 @@ export class ArgumentBuilder { baseCommand += ` ${ defines.map(d => `-D${d[0]}="${d[1]}"`).join(" ")}`; if (this.options.generatorToUse !== 'native') { let generatorString = ` -G"${this.options.generatorToUse}"`; - if( - generatorString.match(/Visual\s+Studio\s+\d+\s+\d+.*/) && - !generatorString.includes("Win64") && - !generatorString.includes("x86") - ) { + if(generatorString.match(/Visual\s+Studio\s+\d+\s+\d+\s-A/)) { + generatorString = generatorString.replace(/\s-A/, ''); generatorString += ` -A ${this.config.arch}`; } baseCommand += generatorString; diff --git a/src/util.ts b/src/util.ts index aae095b..a63aa85 100644 --- a/src/util.ts +++ b/src/util.ts @@ -3,6 +3,12 @@ import splitargs from 'splitargs2'; import { PathLike, stat as rawStat, StatOptions, Stats } from 'fs-extra'; export const GET_CMAKE_VS_GENERATOR = async (cmake: string, arch: string): Promise => { + const archString = arch === 'x64' ? 'Win64' : arch === "x86" ? '' : null; + if(archString === null) { + console.error('Failed to find valid VS gen, using native. Good Luck.'); + return 'native'; + } + const generators = await EXEC_CAPTURE(`"${cmake}" -G`); const hasCR = generators.includes('\r\n'); const output = hasCR ? generators.split('\r\n') : generators.split('\n'); @@ -31,15 +37,10 @@ export const GET_CMAKE_VS_GENERATOR = async (cmake: string, arch: string): Promi } const useSwitch = !useVSGen.match(/.*\[arch\]/); - if(!useSwitch) { - if (arch === 'x64') { - useVSGen = useVSGen.replace('[arch]', 'Win64').trim(); - } else if (arch === 'x86') { - useVSGen = useVSGen.replace('[arch]', '').trim(); - } else { - console.error('Failed to find valid VS gen, using native. Good Luck.'); - return 'native'; - } + if(useSwitch) { + useVSGen += " -A" // essentially using this as a flag + } else { + useVSGen = useVSGen.replace('[arch]', archString).trim(); } return useVSGen; } From 1e73ff0bf84ceab747dde118feaba8d59b84ad52 Mon Sep 17 00:00:00 2001 From: Dief Bell Date: Tue, 19 Nov 2024 14:37:13 +0000 Subject: [PATCH 6/7] Changed to new Electron libs mirror --- src/urlRegistry.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/urlRegistry.ts b/src/urlRegistry.ts index fc77ec5..6b83850 100644 --- a/src/urlRegistry.ts +++ b/src/urlRegistry.ts @@ -5,7 +5,7 @@ import os from 'os'; const NODE_MIRROR = process.env.NVM_NODEJS_ORG_MIRROR || "https://nodejs.org/dist"; const IOJS_MIRROR = process.env.NVM_IOJS_ORG_MIRROR || "https://iojs.org/dist"; -const ELECTRON_MIRROR = process.env.ELECTRON_MIRROR || "https://atom.io/download/atom-shell"; +const ELECTRON_MIRROR = process.env.ELECTRON_MIRROR || "https://artifacts.electronjs.org/headers/dist"; export const HOME_DIRECTORY = process.env[(os.platform() === "win32") ? "USERPROFILE" : "HOME"] as string; From 30e0213319ecb16a9b25271e763a173ef1455937 Mon Sep 17 00:00:00 2001 From: Dief Bell Date: Tue, 19 Nov 2024 14:37:29 +0000 Subject: [PATCH 7/7] Bumped version number --- package.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/package.json b/package.json index 32c38ea..156105c 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "@aminya/cmake-ts", - "version": "0.4.0-aminya.1", + "version": "0.4.1-aminya.1", "description": "cmake-js rewrite in typescript to support advanced build configurations", "main": "build/lib.js", "bin": "build/main.js",