Not really sure who is to blame, but in optimized builds from MSVC
gltf_decoder.cc appears to be getting garbage values back
from TinyGLTF when it parses the materials for
testdata/.../three_meshes_two_materials_one_no_material.gltf
Since there's no certainty about whether this is limited to this
particular file, just disable optimizations for
src/draco/io/gltf_decoder.cc in all MSVC build configurations.
This enabled CI testing of transcoder configs and includes a few minor
Windows-only bug fixes. Note that this adds flags to skip
GltfDecoderTest.ThreeMeshesOneNoMaterialMesh for Windows
MSVC CI builds. See https://github.com/google/draco/issues/826 for
details.
Windows specific updates (these do impact non-Windows builds, but
are essentially a no-op there):
- Use a local dupe of a constant to avoid DLL linkage issues on Windows
in the GLTF encoder test..
- Define DRACO_PI to avoid M_PI and entertaining include ordering
issues related to _USE_MATH_DEFINES and interactions between
<cmath> and <math.h> on Windows (fun include guards and order
related things). This is done in core/constants.h.
This replaces test.yml with ci.yml and renames the test to draco-ci.
A Github PR with this all put together exists at the following link:
https://github.com/google/draco/pull/806
An example draco-ci test summary exists at this link:
https://github.com/google/draco/actions/runs/1789061363
- Add the following test configurations in a job named
draco-tests.
test-macos-make-release-shared
test-macos-make-release-static
test-macos-xcode-release-shared
test-macos-xcode-release-static
test-ubuntu-make-release-shared
test-ubuntu-make-release-static
test-windows-msvc-release-shared
test-windows-msvc-release-static
test-windows-make-release-shared
test-windows-make-release-static
Each configuration name is intended to be self documenting.
All configurations build Draco with tests enabled, and then
run the tests.
- Add the following test configurations in a job named
draco-install-tests:
install-test-ubuntu-make
install-test-macos-make
install-test-macos-xcode
install-test-windows-make
install-test-windows-msvc
Each configuration runs test.py in verbose mode to allow for
failure diagnostics.
Some additional changes to make all this work (and improve usability):
- draco-config.cmake now defines DRACO_LIBRARY_DLL and DRACO_FOUND.
- DRACO_LIBRARY_DLL will contain the full path to the Draco DLL on systems that
produce DLL files (aka Windows).
- test.py now streams output in verbose mode
- Add the submodule.
- Update the build to use googletest sources from the submodule.
- Update the github test build checkout action to include submodules.
- Update build instructions to include the submodule update.