This a refactoring of the CMake config file to follow best practices:
- A draco-targets.cmake is generated with install(EXPORT ...), and included in
draco-config.cmake.
- For users consuming Draco with add_subdirectory(), a draco::draco alias is provided.
- Removed find-draco.cmake-- CMake couldn't use it anyway due to the file name
not matching CMake expectations for a find script.
Note: this also removes the previous methods of hardcoding the C++ standard in
the Draco build to C++11. Instead of direct manipulation of CMAKE_CXX_STANDARD
target_compile_features() is used. External projects consuming Draco should now
be able to set the standard to a newer version.
Fix windows DLL install location and update the install test with the following
- Use cxx_std_11 compile feature instead of forcing CXX_STANDARD to C++11.
- Move install test prefix handling to test.py (was in the install test CMakeLists.txt).
- Use CMAKE_INSTALL_RPATH and add dylib location to PATH instead of copying
it only on Windows-- makes test more generic and makes install_test much
simpler.
- Fix version file name.
- Fix install path for config and version file.
- Updates the install test to correctly set prefix and allow
CMake's built-in search functionality to work properly.
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.
There is no need to perform the check if T is of type bool, since it is guaranteed to fit in all other integral types.
This avoids triggering a C4804 warning in Visual Studio, ie. `unsafe use of type 'bool' in operation`
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 a script that builds and installs Draco in shared and static configurations,
and confirms that a simple test application can compile, link and run
successfully using the CMake configuration provided by each Draco installation.
To run the test script:
cd draco/src/draco/tools/install_test
python3 test.py
By default the script runs silently using the default generator for the CMake
executable in the user's path. Verbose output is behind the usual flags (`-v`).
The CMake generator can be specified using the `-G` argument.
The script is known to work with the following generators:
- Unix Makefiles
- MSVC (Visual Studio 16 2019)
- Xcode
- Fixed omission of draco_version.h when installed in static
configurations.
- Remove DracoConfig.cmake: it was broken and we actually use
draco-config.cmake.
- Update FindDraco.cmake so it actually has a chance of working
properly. Fixed usage of find_path() and subsequent related errors.
- Correct the usage of CMakePackageConfigHelpers in installation target setup
and the config template.
- Add a CMake version file.
- Normalize the Draco variables exposed in CMake.
- draco_FOUND -> DRACO_FOUND
- DRACO_INCLUDE_DIRS, draco_INCLUDE_DIRS -> DRACO_INCLUDE_DIR
- DRACO_LIBRARIES, draco_LIBRARIES -> DRACO_LIBRARY
- DRACO_LIBRARY_DIRS, draco_LIBRARY_DIRS -> DRACO_LIBRARY_DIR
- draco_VERSION_STRING -> DRACO_VERSION
- Use full path variants of GNUInstallDirs variables to init our
install paths.
Fixes https://github.com/google/draco/issues/764
* Add install() for draco-version.cmake.
- 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.
Avoid name collisions in winsock header. Always use the DracoTimeval typedef,
but map it to LARGE_INTEGER on Windows and timeval everywhere else.
Fixes https://github.com/google/draco/issues/702