Replies: 8 comments 4 replies
-
I don't think this is necessary. Instead it should be controlled by the |
Beta Was this translation helpful? Give feedback.
-
The host triplet can't indicate if it's Windows 10 on ARM64 that has x86 emulation, but not x64 emulation vs. Windows 11 on ARM64 that has both x86 and x64 emulation. |
Beta Was this translation helpful? Give feedback.
-
You select the host triplet. If you don't give the required information that is on you. Simply use |
Beta Was this translation helpful? Give feedback.
-
I think you are mis-understanding the scenario... The issue I'm concerned with is if I'm authoring a port that leverages a binary tool that is only provided as x64 native. It's not built by the port, and it's used for all target triplets. For example, in the cppwinrt port I'm authoring, at the moment the |
Beta Was this translation helpful? Give feedback.
-
That means you have a
That is lying to vcpkg. |
Beta Was this translation helpful? Give feedback.
-
In this case without the 'tools' feature, the port does nothing (i.e. the 'core' feature is a NOP). I don't believe treating it as a 'feature' works. Again, scenario here is:
At the moment, I'm already relying on the idea that a x86 only binary will run on any WINDOWS host system. |
Beta Was this translation helpful? Give feedback.
-
|
Beta Was this translation helpful? Give feedback.
-
Here's another concrete example of my concern here. The DirectX 12 Shader Model 6 HLSL compiler is provided as a 'prebuilt' binary that is x64 native only. The primary usage of this binary is at build-time to produce shader blobs. These blobs can be used by programs that are written for Windows 10 or Windows 11 on any architecture. THEREFORE, if I want to create a VCPKG port that provided access to the latest version of the compiler released and validated by the team, it would only support Windows x64 or Windows 11 on ARM64 as "HOSTS" but supports targeting any platform. In practical terms,
|
Beta Was this translation helpful? Give feedback.
-
For a port that has to use a custom Windows EXE at build or install time, the only variable that's easy to check is
VCPKG_HOST_IS_WINDOWS
. In almost all cases (except Windows Server) this would indicate that a 32-bit Win32 EXE should run on the "HOST" including Windows on ARM64 which can emulate x86.What is missing is a
VCPKG_HOST_IS_WINDOWS_X64
which would indicate that the "HOST" is either a Windows x64 native machine -or- that it's a Windows 11 on ARM64 machine which can emulate x64. This is needed to validate that a 64-bit Win32 EXE will run on the "HOST".Beta Was this translation helpful? Give feedback.
All reactions