-
-
Notifications
You must be signed in to change notification settings - Fork 2.7k
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
src/windows_sdk.cpp: port to Zig #15657
src/windows_sdk.cpp: port to Zig #15657
Conversation
I'm not sure this Might have to get the COM |
could you try:
? |
anyway, according to documentation privateregistry.bin should be there https://www.visualstudioextensibility.com/2017/07/15/about-the-new-privateregistry-bin-file-of-visual-studio-2017/ |
Ah, you're right, |
branch-build-for-windows-8_1-10.zip
Outdated
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
What is this file?
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
I asked in discord if anyone'd like to test this PR on some machine with (preferably) different configuration (such as window s8.1 and/or VS 2017/2019) and then, to whom will agree, I would've ask ask to build this branch from source (or, if they can't or don'rt want to, download this file, although I would've still highly recommend former). But it looks like no one answered yet :) maybe it is a cursed platform lol
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
I have a Windows 7 install with VS 2019 2017. Probably can't get this branch/build to run on it, but I can try manually checking if the stuff it's looking for would be found or not.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Hmm, I guess it'll be nice to have. Many thanks in advance!
Looks good on Windows 7 with Visual Studio 2017 installed. Couldn't get Zig proper to run (
// src/libc_only.zig
const std = @import("std");
const LibCInstallation = @import("libc_installation.zig").LibCInstallation;
pub fn main() !void {
var gpa = std.heap.GeneralPurposeAllocator(.{}){};
const allocator = gpa.allocator();
defer std.debug.assert(gpa.deinit() == .ok);
var libc = LibCInstallation.findNative(.{
.allocator = allocator,
.verbose = true,
}) catch |err| {
std.log.err("unable to detect native libc: {s}", .{@errorName(err)});
std.process.exit(1);
};
defer libc.deinit(allocator);
var bw = std.io.bufferedWriter(std.io.getStdOut().writer());
try libc.render(bw.writer());
try bw.flush();
} (also had to patch and was able to run it on Windows 7. Here was the result:
The full temp_log output
I also had an old Zig build ( Here's the |
Could you please share the listing of directories under |
If I understand correctly, here's the relevant portion:
Let me know if you need the full EDIT: Also, in the registry
is set to EDIT#2: Looks like zig/lib/std/SemanticVersion.zig Lines 91 to 93 in 9d4d96c
|
Latest version seems to have regressed detection on my Windows 7 install. Here are the latest results for my Windows 10 and Windows 7 installs: Windows 10
Windows 7
|
Should work now. |
Latest results: Windows 10
Windows 7
Note that the Windows 7 result is different than what it was previously / what it was in the cpp version. Before it was:
But it seems to now be using the paths for an older Visual Studio 2015 install rather than the 2017 paths. |
I ran out of space on Windows, so for now I can't test if it's still wrong. gonna clean up now |
New report: warning(Windows10Sdk.find.path10): path_maybe_with_trailing_slash = C:\Program Files (x86)\Windows Kits\10\
warning(Windows10Sdk.find.path10): path_without_trailing_slash = C:\Program Files (x86)\Windows Kits\10
warning(Windows10Sdk.find): path = C:\Program Files (x86)\Windows Kits\10
warning(Windows10Sdk.find.version10): version_without_0 = 10.0.20348
warning(Windows10Sdk.find.version10): version_with_0 = 10.0.20348.0
warning(Windows10Sdk.find): version = 10.0.20348.0
warning(ZigWindowsSDK.find): windows10sdk is null = false
warning(ZigWindowsSDK.find): windows10sdk.path = C:\Program Files (x86)\Windows Kits\10, windows10sdk.version = 10.0.20348.0
warning(ZigWindowsSDK.find): windows81sdk is null = true
warning(MsvcLibDir.findViaRegistry): visualstudio_folder_path = C:\Users\Эрик\AppData\Local\Microsoft\VisualStudio\
warning(iterateAndFilterBySemVer): prefix to check (if any) = none
warning(iterateAndFilterBySemVer): subfolder_name (possibly with prefix) = 17.0
warning(iterateAndFilterBySemVer): subfolder_name = 17.0
warning(iterateAndFilterBySemVer): subfolder_name_normalized = 17.0.0+build.0
warning(iterateAndFilterBySemVer): subfolder_name_normalized as SemVer = 17.0.0+build.0
warning(iterateAndFilterBySemVer): previous_subfolder_name_normalized = 0.0.0+build.0
warning(iterateAndFilterBySemVer): previous_subfolder_name_normalized as SemVer = 0.0.0+build.0
warning(iterateAndFilterBySemVer): subfolder_name (possibly with prefix) = 17.0_9e9cbb98
warning(iterateAndFilterBySemVer): subfolder_name = 17.0_9e9cbb98
warning(iterateAndFilterBySemVer): subfolder_name (before replacing _ with .) = 17.0_9e9cbb98
warning(iterateAndFilterBySemVer): subfolder_name (after replacing _ with .) = 17.0.9e9cbb98
warning(iterateAndFilterBySemVer): subfolder_name_normalized = 17.0.1+build.9e9cbb98
warning(iterateAndFilterBySemVer): subfolder_name_normalized as SemVer = 17.0.1+build.9e9cbb98
warning(iterateAndFilterBySemVer): previous_subfolder_name_normalized = 17.0.0+build.0
warning(iterateAndFilterBySemVer): previous_subfolder_name_normalized as SemVer = 17.0.0+build.0
warning(iterateAndFilterBySemVer): subfolder_name (possibly with prefix) = Packages
warning(iterateAndFilterBySemVer): subfolder_name = Packages
warning(iterateAndFilterBySemVer): subfolder_name_normalized = Packages.0.0+build.0
warning(iterateAndFilterBySemVer): subfolder_name_normalized as SemVer = error.InvalidVersion
warning(iterateAndFilterBySemVer): subfolder_name (possibly with prefix) = SettingsLogs
warning(iterateAndFilterBySemVer): subfolder_name = SettingsLogs
warning(iterateAndFilterBySemVer): subfolder_name_normalized = SettingsLogs.0.0+build.0
warning(iterateAndFilterBySemVer): subfolder_name_normalized as SemVer = error.InvalidVersion
warning(iterateAndFilterBySemVer): last_version = 17.0_9e9cbb98
warning(MsvcLibDir.findViaRegistry.vs_version): version = 17.0_9e9cbb98
warning(MsvcLibDir.findViaRegistry): vs_version = 17.0_9e9cbb98
warning(MsvcLibDir.findViaRegistry): privateregistry_absolute_path = C:\Users\Эрик\AppData\Local\Microsoft\VisualStudio\17.0_9e9cbb98\privateregistry.bin
warning(MsvcLibDir.findViaRegistry): loadFromPath successfully!
warning(MsvcLibDir.findViaRegistry): config_subkey = Software\Microsoft\VisualStudio\17.0_9e9cbb98_Config
warning(MsvcLibDir.findViaRegistry.source_directories): source_directories_value.len = 1542
warning(MsvcLibDir.findViaRegistry): source_directories = C:\Program Files\Microsoft Visual Studio\2022\Community\VC\Tools\MSVC\14.35.32215\include\;C:\Program Files\Microsoft Visual Studio\2022\Community\VC\Tools\MSVC\14.35.32215\include\cvt\;C:\Program Files\Microsoft Visual Studio\2022\Community\VC\Tools\MSVC\14.35.32215\include\msclr\;C:\Program Files\Microsoft Visual Studio\2022\Community\VC\Tools\MSVC\14.35.32215\include\sys\;C:\Program Files\Microsoft Visual Studio\2022\Community\VC\Tools\MSVC\14.35.32215\crt\src\;C:\Program Files\Microsoft Visual Studio\2022\Community\VC\Tools\MSVC\14.35.32215\crt\src\x64\;C:\Program Files\Microsoft Visual Studio\2022\Community\VC\Tools\MSVC\14.35.32215\crt\src\arm\;C:\Program Files\Microsoft Visual Studio\2022\Community\VC\Tools\MSVC\14.35.32215\crt\src\concrt\;C:\Program Files\Microsoft Visual Studio\2022\Community\VC\Tools\MSVC\14.35.32215\crt\src\i386\;C:\Program Files\Microsoft Visual Studio\2022\Community\VC\Tools\MSVC\14.35.32215\crt\src\linkopts\;C:\Program Files\Microsoft Visual Studio\2022\Community\VC\Tools\MSVC\14.35.32215\crt\src\stl\;C:\Program Files\Microsoft Visual Studio\2022\Community\VC\Tools\MSVC\14.35.32215\crt\src\vccorlib\;C:\Program Files\Microsoft Visual Studio\2022\Community\VC\Tools\MSVC\14.35.32215\crt\src\vcruntime\;C:\Program Files\Microsoft Visual Studio\2022\Community\VC\Tools\MSVC\14.35.32215\atlmfc\src\mfc\;C:\Program Files\Microsoft Visual Studio\2022\Community\VC\Tools\MSVC\14.35.32215\atlmfc\src\atl\;C:\Program Files\Microsoft Visual Studio\2022\Community\VC\Tools\MSVC\14.35.32215\atlmfc\include\
warning(MsvcLibDir.findViaRegistry): value of SourceDirectories in VisualStudio registry, separated:
warning(MsvcLibDir.findViaRegistry): 0: C:\Program Files\Microsoft Visual Studio\2022\Community\VC\Tools\MSVC\14.35.32215\include\
warning(MsvcLibDir.findViaRegistry): 1: C:\Program Files\Microsoft Visual Studio\2022\Community\VC\Tools\MSVC\14.35.32215\include\cvt\
warning(MsvcLibDir.findViaRegistry): 2: C:\Program Files\Microsoft Visual Studio\2022\Community\VC\Tools\MSVC\14.35.32215\include\msclr\
warning(MsvcLibDir.findViaRegistry): 3: C:\Program Files\Microsoft Visual Studio\2022\Community\VC\Tools\MSVC\14.35.32215\include\sys\
warning(MsvcLibDir.findViaRegistry): 4: C:\Program Files\Microsoft Visual Studio\2022\Community\VC\Tools\MSVC\14.35.32215\crt\src\
warning(MsvcLibDir.findViaRegistry): 5: C:\Program Files\Microsoft Visual Studio\2022\Community\VC\Tools\MSVC\14.35.32215\crt\src\x64\
warning(MsvcLibDir.findViaRegistry): 6: C:\Program Files\Microsoft Visual Studio\2022\Community\VC\Tools\MSVC\14.35.32215\crt\src\arm\
warning(MsvcLibDir.findViaRegistry): 7: C:\Program Files\Microsoft Visual Studio\2022\Community\VC\Tools\MSVC\14.35.32215\crt\src\concrt\
warning(MsvcLibDir.findViaRegistry): 8: C:\Program Files\Microsoft Visual Studio\2022\Community\VC\Tools\MSVC\14.35.32215\crt\src\i386\
warning(MsvcLibDir.findViaRegistry): 9: C:\Program Files\Microsoft Visual Studio\2022\Community\VC\Tools\MSVC\14.35.32215\crt\src\linkopts\
warning(MsvcLibDir.findViaRegistry): 10: C:\Program Files\Microsoft Visual Studio\2022\Community\VC\Tools\MSVC\14.35.32215\crt\src\stl\
warning(MsvcLibDir.findViaRegistry): 11: C:\Program Files\Microsoft Visual Studio\2022\Community\VC\Tools\MSVC\14.35.32215\crt\src\vccorlib\
warning(MsvcLibDir.findViaRegistry): 12: C:\Program Files\Microsoft Visual Studio\2022\Community\VC\Tools\MSVC\14.35.32215\crt\src\vcruntime\
warning(MsvcLibDir.findViaRegistry): 13: C:\Program Files\Microsoft Visual Studio\2022\Community\VC\Tools\MSVC\14.35.32215\atlmfc\src\mfc\
warning(MsvcLibDir.findViaRegistry): 14: C:\Program Files\Microsoft Visual Studio\2022\Community\VC\Tools\MSVC\14.35.32215\atlmfc\src\atl\
warning(MsvcLibDir.findViaRegistry): 15: C:\Program Files\Microsoft Visual Studio\2022\Community\VC\Tools\MSVC\14.35.32215\atlmfc\include\
warning(MsvcLibDir.findViaRegistry.msvc_dir): msvc_include_dir_maybe_with_trailing_slash = C:\Program Files\Microsoft Visual Studio\2022\Community\VC\Tools\MSVC\14.35.32215\include\
warning(MsvcLibDir.findViaRegistry.msvc_dir): msvc_dir_with_arch = C:\Program Files\Microsoft Visual Studio\2022\Community\VC\Tools\MSVC\14.35.32215\Lib\x64
warning(MsvcLibDir.find): full_path = C:\Program Files\Microsoft Visual Studio\2022\Community\VC\Tools\MSVC\14.35.32215\Lib\x64
warning(ZigWindowsSDK.find): msvc_lib_dir = C:\Program Files\Microsoft Visual Studio\2022\Community\VC\Tools\MSVC\14.35.32215\Lib\x64
# The directory that contains `stdlib.h`.
# On POSIX-like systems, include directories be found with: `cc -E -Wp,-v -xc /dev/null`
include_dir=C:\Program Files (x86)\Windows Kits\10\Include\10.0.20348.0\ucrt
# The system-specific include directory. May be the same as `include_dir`.
# On Windows it's the directory that includes `vcruntime.h`.
# On POSIX it's the directory that includes `sys/errno.h`.
sys_include_dir=C:\Program Files\Microsoft Visual Studio\2022\Community\VC\Tools\MSVC\14.35.32215\include
# The directory that contains `crt1.o` or `crt2.o`.
# On POSIX, can be found with `cc -print-file-name=crt1.o`.
# Not needed when targeting MacOS.
crt_dir=C:\Program Files (x86)\Windows Kits\10\Lib\10.0.20348.0\ucrt\x64
# The directory that contains `vcruntime.lib`.
# Only needed when targeting MSVC on Windows.
msvc_lib_dir=C:\Program Files\Microsoft Visual Studio\2022\Community\VC\Tools\MSVC\14.35.32215\Lib\x64
# The directory that contains `kernel32.lib`.
# Only needed when targeting MSVC on Windows.
kernel32_lib_dir=C:\Program Files (x86)\Windows Kits\10\Lib\10.0.20348.0\um\x64
# The directory that contains `crtbeginS.o` and `crtendS.o`
# Only needed when targeting Haiku.
gcc_dir= Now it should choose proper version again @squeek502 :) |
The final printed paths match the old cpp version again for my Windows 7 install. Latest results: Windows 10
Windows 7
EDIT: And here's a |
Here's the result on my work laptop with Windows 11 and Visuall Studio 2022 installed.
|
Not sure what should I get. But here is my output.
|
Seems like it. Would you like to try on master-branch build too? |
you mean with run with zig master? I tried run with some latest prebuild zig version with following output
|
hm, I think from now on I'll save all suitable folder names, sort them and traverse on sorted list (from „newest” to „oldest”), (re-)trying same |
ok, that should solve my issue. |
I'm not sure if it is fixed, I just copy-pasted folders since I don't have enough space for other versions to install on Windows partition: warning(Windows10Sdk.find.path10): path_maybe_with_trailing_slash = C:\Program Files (x86)\Windows Kits\10\
warning(Windows10Sdk.find.path10): path_without_trailing_slash = C:\Program Files (x86)\Windows Kits\10
warning(Windows10Sdk.find): path = C:\Program Files (x86)\Windows Kits\10
warning(Windows10Sdk.find.version10): version_without_0 = 10.0.20348
warning(Windows10Sdk.find.version10): version_with_0 = 10.0.20348.0
warning(Windows10Sdk.find): version = 10.0.20348.0
warning(ZigWindowsSDK.find): windows10sdk is null = false
warning(ZigWindowsSDK.find): windows10sdk.path = C:\Program Files (x86)\Windows Kits\10, windows10sdk.version = 10.0.20348.0
warning(ZigWindowsSDK.find): windows81sdk is null = true
warning(MsvcLibDir.findViaRegistry): visualstudio_folder_path = C:\Users\Эрик\AppData\Local\Microsoft\VisualStudio\
warning(iterateAndFilterBySemVer): prefix to check (if any) = none
warning(iterateAndFilterBySemVer): subfolder_name (possibly with prefix) = 16.1
warning(iterateAndFilterBySemVer): subfolder_name = 16.1
warning(iterateAndFilterBySemVer): subfolder_name_normalized = 16.1.0+build.0
warning(iterateAndFilterBySemVer): subfolder_name_normalized as SemVer = 16.1.0+build.0
warning(iterateAndFilterBySemVer): subfolder_name passed check
warning(iterateAndFilterBySemVer): subfolder_name (possibly with prefix) = 17.0
warning(iterateAndFilterBySemVer): subfolder_name = 17.0
warning(iterateAndFilterBySemVer): subfolder_name_normalized = 17.0.0+build.0
warning(iterateAndFilterBySemVer): subfolder_name_normalized as SemVer = 17.0.0+build.0
warning(iterateAndFilterBySemVer): subfolder_name passed check
warning(iterateAndFilterBySemVer): subfolder_name (possibly with prefix) = 17.0_9e9cbb98
warning(iterateAndFilterBySemVer): subfolder_name = 17.0_9e9cbb98
warning(iterateAndFilterBySemVer): subfolder_name_tmp_copy (before replacing _ with .) = 17.0_9e9cbb98
warning(iterateAndFilterBySemVer): subfolder_name_tmp_copy (after replacing _ with .) = 17.0.9e9cbb98
warning(iterateAndFilterBySemVer): subfolder_name_normalized = 17.0.1+build.9e9cbb98
warning(iterateAndFilterBySemVer): subfolder_name_normalized as SemVer = 17.0.1+build.9e9cbb98
warning(iterateAndFilterBySemVer): subfolder_name passed check
warning(iterateAndFilterBySemVer): subfolder_name (possibly with prefix) = 17.0_9e9cbb99
warning(iterateAndFilterBySemVer): subfolder_name = 17.0_9e9cbb99
warning(iterateAndFilterBySemVer): subfolder_name_tmp_copy (before replacing _ with .) = 17.0_9e9cbb99
warning(iterateAndFilterBySemVer): subfolder_name_tmp_copy (after replacing _ with .) = 17.0.9e9cbb99
warning(iterateAndFilterBySemVer): subfolder_name_normalized = 17.0.1+build.9e9cbb99
warning(iterateAndFilterBySemVer): subfolder_name_normalized as SemVer = 17.0.1+build.9e9cbb99
warning(iterateAndFilterBySemVer): subfolder_name passed check
warning(iterateAndFilterBySemVer): subfolder_name (possibly with prefix) = 17.1
warning(iterateAndFilterBySemVer): subfolder_name = 17.1
warning(iterateAndFilterBySemVer): subfolder_name_normalized = 17.1.0+build.0
warning(iterateAndFilterBySemVer): subfolder_name_normalized as SemVer = 17.1.0+build.0
warning(iterateAndFilterBySemVer): subfolder_name passed check
warning(iterateAndFilterBySemVer): subfolder_name (possibly with prefix) = 17.2
warning(iterateAndFilterBySemVer): subfolder_name = 17.2
warning(iterateAndFilterBySemVer): subfolder_name_normalized = 17.2.0+build.0
warning(iterateAndFilterBySemVer): subfolder_name_normalized as SemVer = 17.2.0+build.0
warning(iterateAndFilterBySemVer): subfolder_name passed check
warning(iterateAndFilterBySemVer): subfolder_name (possibly with prefix) = Packages
warning(iterateAndFilterBySemVer): subfolder_name = Packages
warning(iterateAndFilterBySemVer): subfolder_name_normalized = Packages.0.0+build.0
warning(iterateAndFilterBySemVer): subfolder_name_normalized as SemVer = error.InvalidVersion
warning(iterateAndFilterBySemVer): subfolder_name (possibly with prefix) = SettingsLogs
warning(iterateAndFilterBySemVer): subfolder_name = SettingsLogs
warning(iterateAndFilterBySemVer): subfolder_name_normalized = SettingsLogs.0.0+build.0
warning(iterateAndFilterBySemVer): subfolder_name_normalized as SemVer = error.InvalidVersion
warning(iterateAndFilterBySemVer): Before sorting:
warning(iterateAndFilterBySemVer): Filtered dir 0 = 16.1
warning(iterateAndFilterBySemVer): Filtered dir 1 = 17.0
warning(iterateAndFilterBySemVer): Filtered dir 2 = 17.0_9e9cbb98
warning(iterateAndFilterBySemVer): Filtered dir 3 = 17.0_9e9cbb99
warning(iterateAndFilterBySemVer): Filtered dir 4 = 17.1
warning(iterateAndFilterBySemVer): Filtered dir 5 = 17.2
warning(iterateAndFilterBySemVer): After sorting:
warning(iterateAndFilterBySemVer): Filtered dir 0 = 17.2
warning(iterateAndFilterBySemVer): Filtered dir 1 = 17.1
warning(iterateAndFilterBySemVer): Filtered dir 2 = 17.0_9e9cbb99
warning(iterateAndFilterBySemVer): Filtered dir 3 = 17.0_9e9cbb98
warning(iterateAndFilterBySemVer): Filtered dir 4 = 17.0
warning(iterateAndFilterBySemVer): Filtered dir 5 = 16.1
warning(MsvcLibDir.findViaRegistry.source_directories): vs_version = 17.2
warning(MsvcLibDir.findViaRegistry.source_directories): privateregistry_absolute_path = C:\Users\Эрик\AppData\Local\Microsoft\VisualStudio\17.2\privateregistry.bin
warning(MsvcLibDir.findViaRegistry.source_directories): loadFromPath successfully!
warning(MsvcLibDir.findViaRegistry.source_directories): config_subkey = Software\Microsoft\VisualStudio\17.2_Config
warning(MsvcLibDir.findViaRegistry.source_directories): vs_version = 17.1
warning(MsvcLibDir.findViaRegistry.source_directories): privateregistry_absolute_path = C:\Users\Эрик\AppData\Local\Microsoft\VisualStudio\17.1\privateregistry.bin
warning(MsvcLibDir.findViaRegistry.source_directories): loadFromPath successfully!
warning(MsvcLibDir.findViaRegistry.source_directories): config_subkey = Software\Microsoft\VisualStudio\17.1_Config
warning(MsvcLibDir.findViaRegistry.source_directories): vs_version = 17.0_9e9cbb99
warning(MsvcLibDir.findViaRegistry.source_directories): privateregistry_absolute_path = C:\Users\Эрик\AppData\Local\Microsoft\VisualStudio\17.0_9e9cbb99\privateregistry.bin
warning(MsvcLibDir.findViaRegistry.source_directories): loadFromPath successfully!
warning(MsvcLibDir.findViaRegistry.source_directories): config_subkey = Software\Microsoft\VisualStudio\17.0_9e9cbb99_Config
warning(MsvcLibDir.findViaRegistry.source_directories): vs_version = 17.0_9e9cbb98
warning(MsvcLibDir.findViaRegistry.source_directories): privateregistry_absolute_path = C:\Users\Эрик\AppData\Local\Microsoft\VisualStudio\17.0_9e9cbb98\privateregistry.bin
warning(MsvcLibDir.findViaRegistry.source_directories): loadFromPath successfully!
warning(MsvcLibDir.findViaRegistry.source_directories): config_subkey = Software\Microsoft\VisualStudio\17.0_9e9cbb98_Config
warning(MsvcLibDir.findViaRegistry.source_directories): Source Directories succesfully read, len = 1542
warning(MsvcLibDir.findViaRegistry): source_directories = C:\Program Files\Microsoft Visual Studio\2022\Community\VC\Tools\MSVC\14.35.32215\include\;C:\Program Files\Microsoft Visual Studio\2022\Community\VC\Tools\MSVC\14.35.32215\include\cvt\;C:\Program Files\Microsoft Visual Studio\2022\Community\VC\Tools\MSVC\14.35.32215\include\msclr\;C:\Program Files\Microsoft Visual Studio\2022\Community\VC\Tools\MSVC\14.35.32215\include\sys\;C:\Program Files\Microsoft Visual Studio\2022\Community\VC\Tools\MSVC\14.35.32215\crt\src\;C:\Program Files\Microsoft Visual Studio\2022\Community\VC\Tools\MSVC\14.35.32215\crt\src\x64\;C:\Program Files\Microsoft Visual Studio\2022\Community\VC\Tools\MSVC\14.35.32215\crt\src\arm\;C:\Program Files\Microsoft Visual Studio\2022\Community\VC\Tools\MSVC\14.35.32215\crt\src\concrt\;C:\Program Files\Microsoft Visual Studio\2022\Community\VC\Tools\MSVC\14.35.32215\crt\src\i386\;C:\Program Files\Microsoft Visual Studio\2022\Community\VC\Tools\MSVC\14.35.32215\crt\src\linkopts\;C:\Program Files\Microsoft Visual Studio\2022\Community\VC\Tools\MSVC\14.35.32215\crt\src\stl\;C:\Program Files\Microsoft Visual Studio\2022\Community\VC\Tools\MSVC\14.35.32215\crt\src\vccorlib\;C:\Program Files\Microsoft Visual Studio\2022\Community\VC\Tools\MSVC\14.35.32215\crt\src\vcruntime\;C:\Program Files\Microsoft Visual Studio\2022\Community\VC\Tools\MSVC\14.35.32215\atlmfc\src\mfc\;C:\Program Files\Microsoft Visual Studio\2022\Community\VC\Tools\MSVC\14.35.32215\atlmfc\src\atl\;C:\Program Files\Microsoft Visual Studio\2022\Community\VC\Tools\MSVC\14.35.32215\atlmfc\include\
warning(MsvcLibDir.findViaRegistry): value of SourceDirectories in VisualStudio registry, separated:
warning(MsvcLibDir.findViaRegistry): 0: C:\Program Files\Microsoft Visual Studio\2022\Community\VC\Tools\MSVC\14.35.32215\include\
warning(MsvcLibDir.findViaRegistry): 1: C:\Program Files\Microsoft Visual Studio\2022\Community\VC\Tools\MSVC\14.35.32215\include\cvt\
warning(MsvcLibDir.findViaRegistry): 2: C:\Program Files\Microsoft Visual Studio\2022\Community\VC\Tools\MSVC\14.35.32215\include\msclr\
warning(MsvcLibDir.findViaRegistry): 3: C:\Program Files\Microsoft Visual Studio\2022\Community\VC\Tools\MSVC\14.35.32215\include\sys\
warning(MsvcLibDir.findViaRegistry): 4: C:\Program Files\Microsoft Visual Studio\2022\Community\VC\Tools\MSVC\14.35.32215\crt\src\
warning(MsvcLibDir.findViaRegistry): 5: C:\Program Files\Microsoft Visual Studio\2022\Community\VC\Tools\MSVC\14.35.32215\crt\src\x64\
warning(MsvcLibDir.findViaRegistry): 6: C:\Program Files\Microsoft Visual Studio\2022\Community\VC\Tools\MSVC\14.35.32215\crt\src\arm\
warning(MsvcLibDir.findViaRegistry): 7: C:\Program Files\Microsoft Visual Studio\2022\Community\VC\Tools\MSVC\14.35.32215\crt\src\concrt\
warning(MsvcLibDir.findViaRegistry): 8: C:\Program Files\Microsoft Visual Studio\2022\Community\VC\Tools\MSVC\14.35.32215\crt\src\i386\
warning(MsvcLibDir.findViaRegistry): 9: C:\Program Files\Microsoft Visual Studio\2022\Community\VC\Tools\MSVC\14.35.32215\crt\src\linkopts\
warning(MsvcLibDir.findViaRegistry): 10: C:\Program Files\Microsoft Visual Studio\2022\Community\VC\Tools\MSVC\14.35.32215\crt\src\stl\
warning(MsvcLibDir.findViaRegistry): 11: C:\Program Files\Microsoft Visual Studio\2022\Community\VC\Tools\MSVC\14.35.32215\crt\src\vccorlib\
warning(MsvcLibDir.findViaRegistry): 12: C:\Program Files\Microsoft Visual Studio\2022\Community\VC\Tools\MSVC\14.35.32215\crt\src\vcruntime\
warning(MsvcLibDir.findViaRegistry): 13: C:\Program Files\Microsoft Visual Studio\2022\Community\VC\Tools\MSVC\14.35.32215\atlmfc\src\mfc\
warning(MsvcLibDir.findViaRegistry): 14: C:\Program Files\Microsoft Visual Studio\2022\Community\VC\Tools\MSVC\14.35.32215\atlmfc\src\atl\
warning(MsvcLibDir.findViaRegistry): 15: C:\Program Files\Microsoft Visual Studio\2022\Community\VC\Tools\MSVC\14.35.32215\atlmfc\include\
warning(MsvcLibDir.findViaRegistry.msvc_dir): msvc_include_dir_maybe_with_trailing_slash = C:\Program Files\Microsoft Visual Studio\2022\Community\VC\Tools\MSVC\14.35.32215\include\
warning(MsvcLibDir.findViaRegistry.msvc_dir): msvc_dir_with_arch = C:\Program Files\Microsoft Visual Studio\2022\Community\VC\Tools\MSVC\14.35.32215\Lib\x64
warning(MsvcLibDir.find): full_path = C:\Program Files\Microsoft Visual Studio\2022\Community\VC\Tools\MSVC\14.35.32215\Lib\x64
warning(ZigWindowsSDK.find): msvc_lib_dir = C:\Program Files\Microsoft Visual Studio\2022\Community\VC\Tools\MSVC\14.35.32215\Lib\x64
# The directory that contains `stdlib.h`.
# On POSIX-like systems, include directories be found with: `cc -E -Wp,-v -xc /dev/null`
include_dir=C:\Program Files (x86)\Windows Kits\10\Include\10.0.20348.0\ucrt
# The system-specific include directory. May be the same as `include_dir`.
# On Windows it's the directory that includes `vcruntime.h`.
# On POSIX it's the directory that includes `sys/errno.h`.
sys_include_dir=C:\Program Files\Microsoft Visual Studio\2022\Community\VC\Tools\MSVC\14.35.32215\include
# The directory that contains `crt1.o` or `crt2.o`.
# On POSIX, can be found with `cc -print-file-name=crt1.o`.
# Not needed when targeting MacOS.
crt_dir=C:\Program Files (x86)\Windows Kits\10\Lib\10.0.20348.0\ucrt\x64
# The directory that contains `vcruntime.lib`.
# Only needed when targeting MSVC on Windows.
msvc_lib_dir=C:\Program Files\Microsoft Visual Studio\2022\Community\VC\Tools\MSVC\14.35.32215\Lib\x64
# The directory that contains `kernel32.lib`.
# Only needed when targeting MSVC on Windows.
kernel32_lib_dir=C:\Program Files (x86)\Windows Kits\10\Lib\10.0.20348.0\um\x64
# The directory that contains `crtbeginS.o` and `crtendS.o`
# Only needed when targeting Haiku.
gcc_dir= |
What's left until this is no longer [WIP]? |
sgwong' re-test and someone's test with mutiple Windows 8.1 SDKs |
Also #1840 instead of introducing |
Sorry for reply, I'm stupid, I thought it was 10840 |
I don't think Windows 8.1 support needs to be a merge blocker, it is already unsupported by Microsoft. |
I can't reproduce my environment anymore. Probably I do VS update causing it to change. My VS 2022 VC folder has all the crt and atlmfc folder now. I tested your latest code and it works fine(even your previous code build by squeek502 also works). The zig master detected VS 2019 build tools but your version detected VS 2022 which is fine. I can't build zig on my windows, so I follow how squeek502 build it with your latest code from your repo, you can check whether I use the latest code or not: Here is the output from the patched libc:
Here is the zig master output:
|
Still looks good on my Windows installs. Windows 10
Windows 7
Here's an up-to-date |
Signed-off-by: Eric Joldasov <bratishkaerik@getgoogleoff.me>
Signed-off-by: Eric Joldasov <bratishkaerik@getgoogleoff.me>
Signed-off-by: Eric Joldasov <bratishkaerik@getgoogleoff.me>
Any reason this is still draft/WIP? It looks ready to me. |
I tried to rewrite it using Native API as suggested by @The-King-of-Toasters , but I was blocked half-way by
|
Go ahead and use advapi. This is the compiler, not the standard library. The compiler doesn't need to limit to ntdll. |
OK! I removed draft status. |
OK, excellent work! |
Nice, my big thanks to everyone for reviewing and testing this :) |
hi, i only have visual studio build tools installed, and before this pr, zig was able to find the installed libc. however, with this pr merged, i'm forced to install visual studio (the ide) to be able to generate the |
Can confirm the regression when only the build tools are installed. I have some experience with using COM from Zig and I think it should be possible to port the |
The C++ version of this code used this logic, and it turns out it is able to find some setups that the current registry/Vs7 methods cannot. For example, if only the "Build Tools for Visual Studio" are installed but not Visual Studio itself, then only the ISetupEnumInstances method seems to find it. Follow up to ziglang#15657
The C++ version of this code used this logic, and it turns out it is able to find some setups that the current registry/Vs7 methods cannot. For example, if only the "Build Tools for Visual Studio" are installed but not Visual Studio itself, then only the ISetupEnumInstances method seems to find it. Follow up to ziglang#15657, fixes a regression caused by moving from the C++ version to the Zig version
The C++ version of this code used this logic, and it turns out it is able to find some setups that the current registry/Vs7 methods cannot. For example, if only the "Build Tools for Visual Studio" are installed but not Visual Studio itself, then only the ISetupEnumInstances method seems to find it. Follow up to ziglang#15657, fixes a regression caused by moving from the C++ version to the Zig version
The C++ version of this code used this logic, and it turns out it is able to find some setups that the current registry/Vs7 methods cannot. For example, if only the "Build Tools for Visual Studio" are installed but not Visual Studio itself, then only the ISetupEnumInstances method seems to find it. Follow up to ziglang#15657, fixes a regression caused by moving from the C++ version to the Zig version
Supercedes #15560.
Resolves #6363.
I tried to touch other files as little as possible (since idk what core team wants to do with new zig code), so most of the errors are shrinked in the end. Works fine on my Windows 11 machine, needs more testing on other machines and Windows 8.1. Here's output of
zig.exe libc
(updated with each rebase):