Fix re-installing binary packages on next cached run by clearing the
cache entries for `vcpkg list`. Also remove the binary packages
directory after installing.
Signed-off-by: Rafael Kitover <rkitover@gmail.com>
Set the CMake cache variables for `vcpkg list` in `CACHE` instead of
`PARENT_SCOPE`, because the parent scope is now a transient function and
nothing was being cached, causing very slow run speed.
Signed-off-by: Rafael Kitover <rkitover@gmail.com>
Keep a list of already installed dependencies and use the count to
determine if any are not installed.
Signed-off-by: Rafael Kitover <rkitover@gmail.com>
Followup on 357eccc6 (build: fix checking if bin pkg host deps
installed, 2025-07-13) keep a count of already installed host deps, and
when the host deps count is equal to it rather than zero, break out of
the loop. This fixes the infinite loop and hang caused by host deps
being required but already being installed.
Signed-off-by: Rafael Kitover <rkitover@gmail.com>
Fix the check for host dependency packages being downloaded to not run
if the package is already installed.
Signed-off-by: Rafael Kitover <rkitover@gmail.com>
Don't set the compilers to `gcc` for MinGW vcpkg triplets, because it
may be CLANG64 with MinGW.
Link FAudio using the `-static` target or the normal target only.
Use `ghc::filesystem::path::c_str()` to pass paths to `std::fstream` as
there is a conversion problem with this toolchain.
Signed-off-by: Rafael Kitover <rkitover@gmail.com>
Before installing calculated host dependencies for binary packages,
check if they are already installed.
Signed-off-by: Rafael Kitover <rkitover@gmail.com>
Add CMake option VCPKG_BINARY_PACKAGES, defaulting to TRUE to download
and use binary packages for vcpkg dependencies.
Signed-off-by: Rafael Kitover <rkitover@gmail.com>
Use the `vcpkg-binpkg-prototype` `vcpkg-list` implementation and never
`vcpkg list`, because the letter sometimes shortens package names and
may be breaking the package installed check.
Signed-off-by: Rafael Kitover <rkitover@gmail.com>
Calculate and install only build dependencies for a binary package set
instead of everything from the host triplet. This way we can support
binary packages for dynamic builds as well.
Also check that the vcpkg Git clone is writable if it does not exist.
Signed-off-by: Rafael Kitover <rkitover@gmail.com>
Always use a parallel vcpkg directory instead of the Visual Studio
default vcpkg, because installing there requires elevation and doesn't
always work.
Signed-off-by: Rafael Kitover <rkitover@gmail.com>
Add the CMake option `ENABLE_OPENAL` which defaults to `ON` except for
32 bit Windows builds, because OpenAL-Soft uses `avrt.dll` which is not
available on Windows XP.
Update README.md.
Fix linking `libsamplerate` for the `x86-mingw-static` triplet which we
use for 32 bit Windows XP builds.
Make some minor fixes to SDL3 detection and SDL2 fallback.
Clean up the audio API selection code paths.
Signed-off-by: Rafael Kitover <rkitover@gmail.com>
Fix x86 32 bit build for Windows XP.
Set the `WINVER` and `_WIN32_WINNT` macros to the value for Windows XP.
Disable XAudio for these builds.
Add the missing `inet_pton()` and `inet_ntop()` functions for SFML.
Fix a FetchContent warning in the CMake as well.
Signed-off-by: Rafael Kitover <rkitover@gmail.com>
Stop trying to use debug libs for `CMAKE_BUILD_TYPE=RelWithDebInfo`,
this also fixes the current link error with SFML.
Signed-off-by: Rafael Kitover <rkitover@gmail.com>
Set `VCPKG_HOST_TRIPLET` and `VCPKG_USE_HOST_TOOLS` when using an X64
host for an ARM64 cross build in order to use the host `pkgconf` and
possibly other tools.
Signed-off-by: Rafael Kitover <rkitover@gmail.com>
Make the regular expression against VCPKG_ROOT less specific for
detecting the default Visual Studio vcpkg, for some reason it stopped
working.
Signed-off-by: Rafael Kitover <rkitover@gmail.com>
* Move CMake dependencies checkout to `cmake/Dependencies.cmake`.
* Disable most dependencies checkout from the `TRANSLATIONS_ONLY` build.
* Remove the debug/translations_only GitHub Action.
* Move toolchain-specific options to their own files.
* Clean up and modernize the use of toolchain options.
* Use modern cmake LTO support.
* Remove dead cmake code and cmake functions available in upstream cmake.
* Update README.md to remove references to removed build options.
Use cmake find_program() to find powershell.exe on Windows because
invoking `powershell` or `powershell.exe` without a path sometimes fails
for some reason. Use the standard location on Windows 11 as a hint.
Make the `pwsh` executable REQUIRED when installing vcpkg packages
on non-Windows.
Use find_program() to find the zip executable before downloading it on
Windows vcpkg builds.
Signed-off-by: Rafael Kitover <rkitover@gmail.com>
Update all URLs in the code and documentation to the new domain
visualboyadvance-m.org and also fix the date for the last release in the
CHANGELOG.md.
Signed-off-by: Rafael Kitover <rkitover@gmail.com>
On Windows, detect the host triplet for vcpkg and prepend it to the
triplet list to get the binary packages for vcpkg build dependencies
correctly.
Signed-off-by: Rafael Kitover <rkitover@gmail.com>
Fix parsing of package list from the server html, which was ignoring
brotli because it was on the same line as another package. Use a
different method to extract the links that does not rely on them being
on separate lines.
Also fix the errors from `vcpkg list` on new vcpkg clones.
Signed-off-by: Rafael Kitover <rkitover@gmail.com>
Fix the logic in the vcpkg automatic support to return on non-WIN32 if
VCPKG_TARGET_TRIPLET is not defined.
Signed-off-by: Rafael Kitover <rkitover@gmail.com>
Fix if(EXISTS var) statements to be written as if(EXISTS ${var}) because
the EXISTS operator does not accept variable references.
Signed-off-by: Rafael Kitover <rkitover@gmail.com>
Since the new default VS vcpkg does not implement list, use list from
the powershell module to check for packages that are already installed.
Signed-off-by: Rafael Kitover <rkitover@gmail.com>
Fix checking for already installed vcpkg ports in user vcpkg clones,
broken in 491f104b (build: better binpkg support for default VS vcpkg,
2023-11-30).
Checking for installed ports in the VS default vcpkg is still broken,
because it does not implement the list command.
Signed-off-by: Rafael Kitover <rkitover@gmail.com>
If the vcpkg clone exists in our preferred location, and VCPKG_ROOT has
not been passed to the build system, use it over the Visual Studio
default one, which is much more problematic.
Signed-off-by: Rafael Kitover <rkitover@gmail.com>
Check for cl.exe in the PATH to also automatically enable vcpkg support.
Ignore git errors for default VS vcpkg, as it is not in git.
Get host triplet packages (build depends currently) for static triplets,
e.g. get x64-windows packages also when getting x64-windows-static
packages. This helps with the default VS vcpkg too, as it cannot run
regular install commands for build deps.
Signed-off-by: Rafael Kitover <rkitover@gmail.com>
Make the vcpkg triplet inferring code only run on WIN32 explicitly, and
make all inferred triplets -static, not only when BUILD_SHARED_LIBS is
FALSE.
Signed-off-by: Rafael Kitover <rkitover@gmail.com>
Fix the Linux-specific date command in the cmake code, and skip the ABI
check for vcpkg, because it is failing for some reason on Linux+vcpkg.
The resulting executable works perfectly.
This should also help on mac, I will test this later.
Signed-off-by: Rafael Kitover <rkitover@gmail.com>
Fix the regex against the file listing module on the server for the
vcpkg binary package list.
Also replace all the dashes in versions with periods for comparison
purposes.
Signed-off-by: Rafael Kitover <rkitover@gmail.com>
Use the new code in the powershell module for vcpkg binary packages to
install the downloaded binary packages in dependency order with build
dependencies so that the database is not corrupted at any point in the
installation process or after.
Also remove the build binary package directory after installation, so
that all the previous packages are not reinstalled if a package is
updated on a subsequent run.
Signed-off-by: Rafael Kitover <rkitover@gmail.com>
Read the revision from the vcpkg binary package zip file names and from
`vcpkg list` and use them in version comparisons.
Also fix up the indentation a bit.
Signed-off-by: Rafael Kitover <rkitover@gmail.com>
Now that there is a task on the Windows build VM to upgrade all vcpkg
ports and generate packages, update the cmake vcpkg code to install
them.
This is a working prototype implementation, all of this will require a
significant amount of further work.
Signed-off-by: Rafael Kitover <rkitover@gmail.com>
Make some tweaks to the cmake files to support
CMAKE_BUILD_TYPE=RelWithDebInfo, release with debug information for MSVC
vcpkg builds.
Signed-off-by: Rafael Kitover <rkitover@gmail.com>
Fix vcpkg upgrades to work with the current vcpkg master.
When upgrading zlib, remove all optional deps first, because everything
depends on zlib and this can overrun the appveyor 1hr time limit.
Make SFML an optional dep too, like ffmpeg.
Reduce the vcpkg install time limit to 20 minutes, otherwise it may try
to build wxWidgets and ffmpeg and overrun the 1hr time limit.
Signed-off-by: Rafael Kitover <rkitover@gmail.com>
Add a function to check if libogg is installed but libvorbis isn't, this
means it failed to upgrade libvorbis because libogg wasn't upgraded to
the newest port revision supporting pkg-config, see:
https://github.com/microsoft/vcpkg/issues/13037
In this case, remove libogg recursively and allow the install action to
reinstall SFML and all deps.
This will also fix building link support on appveyor for the time being.
Signed-off-by: Rafael Kitover <rkitover@gmail.com>