@@ -7,27 +7,31 @@ import semverMajor from "semver/functions/major"
7
7
import semverCoerce from "semver/functions/coerce"
8
8
import { setupMacOSSDK } from "../macos-sdk/macos-sdk"
9
9
import path from "path"
10
- import { warning , info , notice } from "../utils/io/io"
10
+ import { warning , info } from "../utils/io/io"
11
11
import { isGitHubCI } from "../utils/env/isci"
12
12
import { addBinExtension } from "../utils/extension/extension"
13
13
import { InstallationInfo , PackageInfo , setupBin } from "../utils/setup/setupBin"
14
14
import { extract7Zip } from "../utils/setup/extract"
15
15
16
16
interface MingwInfo {
17
- mingwVersion : string
18
- llvmVersion ?: string
19
- number : string
20
- runtime : "ucrt" | "msvcrt" // ucrt is the modern runtime and should be preferred
17
+ releaseName : string
18
+ fileSuffix : string
21
19
}
22
20
21
+ // https://github.com/brechtsanders/winlibs_mingw/releases
23
22
const GccToMingwInfo = {
24
- "12" : { mingwVersion : "10.0.0" , number : "r1" , runtime : "msvcrt" } ,
25
- "12.1.0-msvcrt" : { mingwVersion : "10.0.0" , number : "r1" , runtime : "msvcrt" } ,
26
- "11" : { mingwVersion : "10.0.0" , llvmVersion : "14.0.3" , number : "r3" , runtime : "ucrt" } ,
27
- "11.3.0-ucrt" : { mingwVersion : "10.0.0" , llvmVersion : "14.0.3" , number : "r3" , runtime : "ucrt" } ,
28
- "11.3.0-msvcrt" : { mingwVersion : "10.0.0" , llvmVersion : "14.0.3" , number : "r3" , runtime : "msvcrt" } ,
29
- "11.2.0-ucrt" : { mingwVersion : "9.0.0" , number : "r5" , runtime : "ucrt" } ,
30
- "11.2.0-msvcrt" : { mingwVersion : "9.0.0" , number : "r6" , runtime : "msvcrt" } , // TODO -w64-
23
+ "12" : { releaseName : "12.1.0-10.0.0-msvcrt-r1" , fileSuffix : "12.1.0-mingw-w64msvcrt-10.0.0-r1" } ,
24
+ "12.1.0-msvcrt" : { releaseName : "12.1.0-10.0.0-msvcrt-r1" , fileSuffix : "12.1.0-mingw-w64msvcrt-10.0.0-r1" } ,
25
+ "11" : { releaseName : "11.3.0-14.0.3-10.0.0-ucrt-r3" , fileSuffix : "11.3.0-mingw-w64ucrt-10.0.0-r3" } ,
26
+ "11.3.0-ucrt" : { releaseName : "11.3.0-14.0.3-10.0.0-ucrt-r3" , fileSuffix : "11.3.0-mingw-w64ucrt-10.0.0-r3" } ,
27
+ "11.3.0-msvcrt" : { releaseName : "11.3.0-14.0.3-10.0.0-msvcrt-r3" , fileSuffix : "11.3.0-mingw-w64msvcrt-10.0.0-r3" } ,
28
+ "11.2.0-ucrt" : { releaseName : "11.2.0-9.0.0-ucrt-r5" , fileSuffix : "11.2.0-mingw-w64ucrt-9.0.0-r5" } ,
29
+ "11.2.0-msvcrt" : { releaseName : "11.2.0-9.0.0-msvcrt-r5" , fileSuffix : "11.2.0-mingw-w64msvcrt-9.0.0-r5" } ,
30
+ "10" : { releaseName : "10.3.0-12.0.0-9.0.0-r2" , fileSuffix : "10.3.0-llvm-12.0.0-mingw-w64-9.0.0-r2" } ,
31
+ "10.3.0" : { releaseName : "10.3.0-12.0.0-9.0.0-r2" , fileSuffix : "10.3.0-llvm-12.0.0-mingw-w64-9.0.0-r2" } ,
32
+ "10.2.0" : { releaseName : "10.2.0-7.0.0-r4" , fileSuffix : "10.2.0-llvm-10.0.1-mingw-w64-7.0.0-r4" } ,
33
+ "9" : { releaseName : "9.4.0-9.0.0-r1" , fileSuffix : "9.4.0-mingw-w64-9.0.0-r1" } ,
34
+ "9.4.0" : { releaseName : "9.4.0-9.0.0-r1" , fileSuffix : "9.4.0-mingw-w64-9.0.0-r1" } ,
31
35
} as Record < string , MingwInfo | undefined >
32
36
33
37
function getGccPackageInfo ( version : string , platform : NodeJS . Platform , arch : string ) : PackageInfo {
@@ -38,13 +42,13 @@ function getGccPackageInfo(version: string, platform: NodeJS.Platform, arch: str
38
42
throw new Error ( `mingw version ${ version } is not supported` )
39
43
}
40
44
const mingwArch = arch === "ia32" ? "i686" : "x86_64"
41
- const llvmVersionString = mingwInfo . llvmVersion !== undefined ? ` ${ mingwInfo . llvmVersion } -` : ""
45
+ const exceptionModel : "seh" | "dwarf" = "seh" // SEH is native windows exception model https://github.com/brechtsanders/winlibs_mingw/issues/4#issuecomment-599296483
42
46
return {
43
47
binRelativeDir : "./bin" ,
44
48
binFileName : addBinExtension ( "g++" ) ,
45
49
extractedFolderName : "mingw64" ,
46
50
extractFunction : extract7Zip ,
47
- url : `https://github.com/brechtsanders/winlibs_mingw/releases/download/${ version } - ${ llvmVersionString } ${ mingwInfo . mingwVersion } - ${ mingwInfo . runtime } - ${ mingwInfo . number } /winlibs-${ mingwArch } -posix-seh-gcc- ${ version } -mingw-w64 ${ mingwInfo . runtime } - ${ mingwInfo . mingwVersion } - ${ mingwInfo . number } .7z` ,
51
+ url : `https://github.com/brechtsanders/winlibs_mingw/releases/download/${ mingwInfo . releaseName } /winlibs-${ mingwArch } -posix-${ exceptionModel } -gcc- ${ mingwInfo . fileSuffix } .7z` ,
48
52
}
49
53
}
50
54
default :
@@ -63,7 +67,7 @@ export async function setupGcc(version: string, setupDir: string, arch: string)
63
67
try {
64
68
installationInfo = await setupBin ( "g++" , version , getGccPackageInfo , setupDir , arch )
65
69
} catch ( err ) {
66
- notice ( `Failed to download g++ binary. ${ err } . Falling back to chocolatey.` )
70
+ info ( `Failed to download g++ binary. ${ err } . Falling back to chocolatey.` )
67
71
installationInfo = await setupChocoMingw ( version , arch )
68
72
}
69
73
break
0 commit comments