-
-
Notifications
You must be signed in to change notification settings - Fork 611
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
SCons : When building using MSys2/clang64 SCons thinks it is cross-compiling due to picking up env: $MINGW_PREFIX #1672
Labels
Milestone
Comments
enetheru
added a commit
to enetheru/godot-cpp
that referenced
this issue
Jan 23, 2025
As described in issue godotengine#1672 msys2 environments don't use a mingw prefix for their compiler binaries. this patch detects MSYSTEM environment variable detects compilers directly
enetheru
added a commit
to enetheru/godot-cpp
that referenced
this issue
Jan 23, 2025
As described in issue godotengine#1672 msys2 environments don't use a mingw prefix for their compiler binaries. this patch detects MSYSTEM environment variable detects compilers directly
enetheru
added a commit
to enetheru/godot-cpp
that referenced
this issue
Jan 30, 2025
As described in issue godotengine#1672 msys2 environments don't use a mingw prefix for their compiler binaries. this patch detects MSYSTEM environment variable detects compilers directly
enetheru
added a commit
to enetheru/godot-cpp
that referenced
this issue
Feb 2, 2025
As described in issue godotengine#1672 msys2 environments don't use a mingw prefix for their compiler binaries. this patch detects MSYSTEM environment variable detects compilers directly
enetheru
added a commit
to enetheru/godot-cpp
that referenced
this issue
Feb 3, 2025
As described in issue godotengine#1672 msys2 environments don't use a mingw prefix for their compiler binaries. this patch detects MSYSTEM environment variable detects compilers directly
enetheru
added a commit
to enetheru/godot-cpp
that referenced
this issue
Feb 4, 2025
As described in issue godotengine#1672 msys2 environments don't use a mingw prefix for their compiler binaries. this patch detects MSYSTEM environment variable detects compilers directly
enetheru
added a commit
to enetheru/godot-cpp
that referenced
this issue
Feb 8, 2025
As described in issue godotengine#1672 msys2 environments don't use a mingw prefix for their compiler binaries. this patch detects MSYSTEM environment variable detects compilers directly
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
godot-cpp version
27ffd8c
System information
Windows 11, Msys2/clang64
Issue description
Compiling for Windows on Windows using the MSys2/clang64 environment shell.
Using compile command:
scons verbose=yes use_mingw=yes use_llvm=yes
SCons fails to archive the obj files using
C:/msys64/clang64/bin/x86_64-w64-mingw32-ar.exe
and supplies the following message:The missing file is
C:/msys64/clang64/bin/x86_64-w64-mingw32-ar.exe
The reason this is, is because for all MSys2 environments
$MINGW_PREFIX
is set to the root path of their subshell. And SCons picks up that environment variable as the default tomingw_prefix
. When it comes to selecting the compiler, it chooses the cross compiling path. Except there is a misnomer here, all of these environments are for compiling native windows, there is no cross compiling. SCons then adds a bunch of architecture triplet information and tries to use the resultant binary.Its a miracle that it works for ucrt64, or others, and if those prefixed binaries weren't by happenstance to be in the
$PATH
then it would fail.The prefixed binaries:
C:\Msys2\$MINGW_PREFIX\bin\x86_64.w64.mingw32.<program>.exe
are there for some, as yet unknown to me, convenience. Since the environments are native windows, and the prefix is for the host system, they aren't cross compilers at all, and can be ignored entirely, al of the actually useful binaries have no prefix as this isnt a cross compiler.The way I've come to understand MSys environments is that you choose the subshell for the type of Windows build you want to make, and or the libraries you want to link to. Cross compiling is another kettle of fish layered ontop of this.
Msys Environments Table
Now, I'm not overly familiar with SCons, but I've been testing locally and here's what I have so far.
MSys environments conveniently define
$MSYSTEM
when one of the subshells are being used.By using the
$MINGW_PREFIX
environment variable on the condition that$MSYSTEM
is empty, I don't get the cross compile selection. And I can copy theuse_llvm
section from Linux to generate for clang.I get a successful build, I haven't checked if any of the options are correct or what is missing tho.
AFAICT this also doesn't interfere with choosing a mingw_prefix for doing some actual cross compiling, but I am not yet upto testing that.
Cheers,
Samuel.
Steps to reproduce
try to compile godot-cpp using MSys2 / clang64 environment.
Build Command:
scons verbose=yes use_mingw=yes use_llvm=yes
Minimal reproduction project
the godot-cpp source code. or test
The text was updated successfully, but these errors were encountered: