42 Commits
Author SHA1 Message Date
Oliver Hamlet 136f3983c3 Set version and changelog for 0.29.6 2026-06-27 18:33:18 +01:00
Oliver Hamlet 520242b90c Add config for measuring code coverage using MSVC 2026
It may work for older versions of MSVC, but before 2026 it wasn't available in the Community edition.
2026-05-29 19:45:32 +01:00
Oliver Hamlet 1dac8e0396 Fix missing PDB in C++ wrapper debug packages 2026-05-28 18:27:40 +01:00
Oliver Hamlet a12fcfcef2 Set version and changelog for 0.29.5 2026-05-05 17:52:18 +01:00
Oliver Hamlet 56bafaead3 Set version and changelog for 0.29.4 2026-04-17 18:00:31 +01:00
Oliver Hamlet 7104c92bef Set version and changelog for 0.29.3 2026-04-07 18:23:11 +01:00
Oliver Hamlet d929ab9dab Set version and changelog for 0.29.2 2026-03-27 13:56:04 +00:00
Oliver Hamlet d869833742 Set version to 0.29.1 2026-03-13 18:40:53 +00:00
Oliver Hamlet 7de8bdb3a8 Set version to v0.29.0 2026-02-04 21:18:04 +00:00
Oliver Hamlet 81388873da Add bits for cross-compiling to Windows using MinGW
Some tests have been updated because UTF-8 is used as the native
path encoding with MinGW/Wine, unlike MSVC/Windows.

Some of the tests fail:

- 4 Rust tests fail because long paths are not enabled and so the
  paths used when creating symlinks and junction paths are too
  long. I've tested them with x86_64-pc-windows-gnu and
  x86_64-pc-windows-gnullvm, and both see the same behaviour. The
  tests pass when the MinGW-built executable is run on Windows, so
  this is a Wine limitation.
- 12 C++ tests fail because directory symlink creation is not
  implemented. They fail whether the MinGW-built executable is run
  in Wine or on Windows, so this is a MinGW limitation.
- 1 C++ filesystem test fails because long paths are not enabled.

The failing tests are skipped at runtime when built with MinGW,
aside from the one test for long paths being enabled, which expects
them to be disabled when built with MinGW.

If long paths are enabled, e.g. by running

wine reg add HKLM\\System\\CurrentControlSet\\Control\\Filesystem /v LongPathsEnabled /t REG_DWORD /d 1 /f

then many more tests fail because the C++ tests create long paths
when that Registry value is set, but it doesn't seem to actually
enable long path support in Wine, so various filesystem operations
fail.
2026-02-03 08:52:23 +00:00
Oliver Hamlet c6c3056d35 Move where Windows libraries are linked
To where they're actually used. The tests don't need them, and MinGW complains if they aren't linked to the first layer of the C++ wrapper.
2026-01-31 15:29:33 +00:00
Oliver Hamlet 9c59d87f23 Change name of internal CMake custom target
It shows up when using libloot as a FetchContent dependency, and it's a bit confusing to have libloot and libloot-cpp-build when the latter isn't the one that a C++ project should really depend on.

libloot-cargo may still be confusing, but at least indicates what is involved.
2026-01-17 18:08:25 +00:00
Oliver Hamlet c322e27e1e Rename CMake target from loot to libloot
On Windows using "loot" causes a name collisions with LOOT itself:

- for the MSVC project name, it clashes with LOOT's own project,
  despite the difference in case. This means that you can't build LOOT
  in Visual Studio when using FetchContent to handle the libloot
  dependency (running CMake on the CLI works though).
- for the PDB file, LOOT has LOOT.pdb and libloot has loot.pdb, which
  appear to be the same due to file paths being case-insensitive. This
  makes it more difficult to debug LOOT with the relevant debug info
  loaded.

Renaming the CMake target adds a "lib" prefix to the Visual Studio
project name and the artifact filenames:

- loot.vcxproj* -> libloot.vcxproj*
- loot.dll -> libloot.dll
- loot.lib -> libloot.lib
- loot.pdb -> libloot.pdb

The Linux build artifact filenames are unchanged, as they already had
the "lib" prefix.
2026-01-02 13:16:46 +00:00
Oliver Hamlet 10929878d9 Update version and changelog for v0.28.4 2025-12-31 19:21:17 +00:00
Oliver Hamlet 94f4dc476e Avoid MSVC warning due to -fno-lto 2025-11-07 17:35:41 +00:00
Oliver Hamlet 86ff2a665b Improve CMake system and compiler checks 2025-11-02 19:54:16 +00:00
Oliver Hamlet 54604a0ec8 Update version and changelog for v0.28.3 2025-10-22 18:19:02 +01:00
Oliver Hamlet a06078592f Append -fno-lto to CXXFLAGS
When building the first layer of the C++ wrapper, to fix undefined symbol errors when linking libloot as built by Manjaro Linux's default makepkg config.
2025-10-22 17:49:41 +01:00
Oliver Hamlet f4a0917294 Update version and changelog for v0.28.2 2025-10-03 19:23:48 +01:00
Oliver Hamlet 961642ad6e Avoid setting CMAKE_* variables globally
Instead set their target-specific equivalents.

The POSITION_INDEPENDENT_CODE property isn't set because it already defaults to ON for shared libraries.
2025-10-03 17:41:33 +01:00
Oliver Hamlet 24e3f99d9e Don't treat compiler warnings as errors by default
So that new warnings don't cause issues for library consumers.

Instead use CMake's CMAKE_COMPILE_WARNING_AS_ERROR option to treat them as errors in CI.
2025-10-03 17:39:11 +01:00
Oliver Hamlet b9a91374f9 Suppress MSVC's C4711 warning
It's raised from CXX's generated code and is just informational.
2025-09-30 21:24:42 +01:00
Oliver Hamlet d5ff75ee31 Use stricter C++ compiler flags
Enable more warnings, and treat all warnings as errors. This would have caught the incomplete switch fixed in f5f89be659.
2025-08-12 19:10:01 +01:00
Oliver Hamlet 927c708df6 Update version and changelog for v0.28.1 2025-08-11 19:24:39 +01:00
Oliver Hamlet 55bdf56227 Update version and changelog for v0.28.0 2025-08-02 16:36:20 +01:00