From 7af790da542ab1a2fed65531ce05e5edb97b504c Mon Sep 17 00:00:00 2001 From: Harrm Date: Thu, 28 Jan 2021 17:08:29 +0300 Subject: [PATCH 01/10] Merge with cpp-pm hunter --- .github/FUNDING.yml | 2 - .github/ISSUE_TEMPLATE.md | 2 +- .github/ISSUE_TEMPLATE/discussion.md | 2 +- .github/PULL_REQUEST_TEMPLATE.md | 25 +- .github/workflows/ci-docs.yml | 35 ++ .github/workflows/ci.yml | 134 +++++ .github/workflows/ci/build.cmd | 48 ++ .github/workflows/ci/build.sh | 33 ++ .github/workflows/ci/matrix.json | 22 + .github/workflows/set_matrix.py | 59 +++ .github/workflows/set_status.py | 18 + .travis.yml | 62 --- README.rst | 12 +- cmake/configs/default.cmake | 113 +++-- cmake/modules/hunter_finalize.cmake | 2 +- cmake/modules/hunter_get_boost_libs.cmake | 3 +- cmake/modules/hunter_setup_msvc.cmake | 58 ++- cmake/projects/Assimp/hunter.cmake | 26 +- cmake/projects/Boost/ci/matrix.json | 269 ++++++++++ cmake/projects/Boost/container/hunter.cmake | 22 + cmake/projects/Boost/generate.sh | 1 + cmake/projects/Boost/hunter.cmake | 45 +- .../Boost/schemes/url_sha1_boost.cmake.in | 6 +- .../schemes/url_sha1_boost_library.cmake.in | 70 ++- .../Boost/scripts/patched_boostrap.bat.in | 7 +- cmake/projects/Eigen/hunter.cmake | 33 ++ cmake/projects/Expat/hunter.cmake | 49 +- cmake/projects/IlmBase/hunter.cmake | 11 + cmake/projects/KhronosDataFormat/hunter.cmake | 35 ++ cmake/projects/OpenEXR/hunter.cmake | 11 + cmake/projects/OpenSSL/hunter.cmake | 45 ++ .../schemes/url_sha1_openssl_macos.cmake.in | 4 +- .../schemes/url_sha1_openssl_windows.cmake.in | 6 +- ...url_sha1_openssl_windows_1_1_plus.cmake.in | 6 +- cmake/projects/Opus/hunter.cmake | 26 + cmake/projects/Protobuf/hunter.cmake | 23 + cmake/projects/RapidJSON/hunter.cmake | 16 + cmake/projects/SPIRV-Headers/hunter.cmake | 44 ++ cmake/projects/SPIRV-Tools/hunter.cmake | 11 + .../VulkanMemoryAllocator/hunter.cmake | 11 + cmake/projects/abseil/hunter.cmake | 43 ++ cmake/projects/apg/hunter.cmake | 25 + cmake/projects/asio/hunter.cmake | 11 + cmake/projects/astc-encoder/hunter.cmake | 63 +++ cmake/projects/basis_universal/hunter.cmake | 33 ++ .../botan/schemes/url_sha1_botan_win.cmake.in | 26 +- cmake/projects/ceres-solver/hunter.cmake | 12 + cmake/projects/cgltf/hunter.cmake | 33 ++ cmake/projects/cpp-statsd-client/hunter.cmake | 24 + cmake/projects/crc32c/hunter.cmake | 6 + cmake/projects/etc2comp/hunter.cmake | 31 ++ cmake/projects/fast_obj/hunter.cmake | 33 ++ cmake/projects/filament/ci/build.sh | 4 + cmake/projects/filament/ci/matrix.json | 5 + cmake/projects/filament/hunter.cmake | 37 ++ cmake/projects/flatbuffers/hunter.cmake | 34 ++ cmake/projects/fmt/hunter.cmake | 11 + cmake/projects/foo/hunter.cmake | 4 +- cmake/projects/freetype-gl/ci/build.sh | 4 + cmake/projects/freetype-gl/ci/matrix.json | 16 + cmake/projects/freetype-gl/hunter.cmake | 32 ++ cmake/projects/freetype/hunter.cmake | 11 + cmake/projects/gRPC/hunter.cmake | 27 +- cmake/projects/gl4es/hunter.cmake | 22 + cmake/projects/glm/hunter.cmake | 11 + cmake/projects/glslang/hunter.cmake | 11 + cmake/projects/glu/hunter.cmake | 11 + cmake/projects/intx/hunter.cmake | 33 ++ cmake/projects/jpeg-compressor/hunter.cmake | 24 + cmake/projects/jsmn/hunter.cmake | 24 + cmake/projects/libarchive/hunter.cmake | 38 ++ cmake/projects/libigl/hunter.cmake | 11 + .../url_sha1_libsodium_msbuild.cmake.in | 11 +- cmake/projects/libusb/hunter.cmake | 16 +- cmake/projects/lz4/hunter.cmake | 26 + cmake/projects/meshoptimizer/hunter.cmake | 43 ++ cmake/projects/miniz/hunter.cmake | 33 ++ cmake/projects/nlohmann_json/hunter.cmake | 28 ++ cmake/projects/occt/ci/build.sh | 20 + cmake/projects/occt/hunter.cmake | 33 ++ cmake/projects/opusfile/hunter.cmake | 28 ++ cmake/projects/pugixml/hunter.cmake | 6 +- cmake/projects/pybind11/hunter.cmake | 36 ++ cmake/projects/quickjs/hunter.cmake | 11 + cmake/projects/range-v3/hunter.cmake | 11 + cmake/projects/re2/hunter.cmake | 22 +- cmake/projects/s3/hunter.cmake | 11 + cmake/projects/smol-v/hunter.cmake | 24 + cmake/projects/spdlog/hunter.cmake | 11 + cmake/projects/spirv-cross/hunter.cmake | 11 + cmake/projects/termcolor/hunter.cmake | 11 + cmake/projects/theora/hunter.cmake | 20 + cmake/projects/tinyexr/hunter.cmake | 35 ++ cmake/projects/tinygltf/hunter.cmake | 33 ++ cmake/projects/tinyobjloader/hunter.cmake | 24 + cmake/projects/tsl_hat_trie/hunter.cmake | 4 +- cmake/projects/tsl_robin_map/hunter.cmake | 24 + cmake/projects/utf8/hunter.cmake | 20 + cmake/projects/xatlas/hunter.cmake | 24 + cmake/projects/yaml-cpp/hunter.cmake | 11 + cmake/projects/zlog/hunter.cmake | 21 + cmake/projects/zstd/hunter.cmake | 12 +- cmake/schemes/url_sha1_make_only.cmake.in | 51 ++ docs/contributing.rst | 2 +- docs/creating-new.rst | 1 + docs/creating-new/create/cmake.rst | 464 +----------------- docs/creating-new/images/branches.png | Bin 93738 -> 0 bytes docs/creating-new/images/pr-change-branch.png | Bin 35919 -> 0 bytes .../creating-new/images/pr-update-version.png | Bin 26997 -> 0 bytes docs/creating-new/images/pr-with-tests.png | Bin 32292 -> 0 bytes .../images/pull-request-testing.png | Bin 24709 -> 0 bytes docs/creating-new/images/pull-request.png | Bin 32520 -> 0 bytes docs/creating-new/images/upload.png | Bin 30829 -> 0 bytes docs/creating-new/test.rst | 29 ++ docs/creating-new/test/ci.rst | 174 +++++++ docs/creating-new/test/local.rst | 119 +++++ docs/creating-new/update.rst | 75 +-- docs/creating-new/yed/branches.graphml | 194 ++------ .../yed/pr-update-version.graphml | 120 ++--- .../yed/pull-request-testing.graphml | 110 +---- docs/creating-new/yed/pull-request.graphml | 150 ++---- .../faq/why-binaries-from-server-not-used.rst | 16 +- docs/faq/why-hunter-is-slow.rst | 2 +- docs/overview/binaries.rst | 12 +- docs/packages/graphics.rst | 2 + docs/packages/pkg/ArrayFire.rst | 2 +- docs/packages/pkg/Boost.rst | 25 +- docs/packages/pkg/Expat.rst | 2 +- docs/packages/pkg/GTest.rst | 8 +- docs/packages/pkg/KhronosDataFormat.rst | 21 + docs/packages/pkg/Opus.rst | 20 + docs/packages/pkg/RapidJSON.rst | 18 + docs/packages/pkg/ZeroMQ.rst | 2 +- docs/packages/pkg/abseil.rst | 20 + docs/packages/pkg/apg.rst | 21 + docs/packages/pkg/astc-encoder.rst | 22 + docs/packages/pkg/basis_universal.rst | 23 + docs/packages/pkg/cgltf.rst | 21 + docs/packages/pkg/cpp-statsd-client.rst | 23 + docs/packages/pkg/crc32c.rst | 10 +- docs/packages/pkg/etc2comp.rst | 21 + docs/packages/pkg/fast_obj.rst | 21 + docs/packages/pkg/filament.rst | 21 + docs/packages/pkg/fmt.rst | 2 +- docs/packages/pkg/foo.rst | 4 +- docs/packages/pkg/freetype-gl.rst | 22 + docs/packages/pkg/jpeg-compressor.rst | 22 + docs/packages/pkg/jsmn.rst | 21 + docs/packages/pkg/libarchive.rst | 21 + docs/packages/pkg/libusb.rst | 8 + docs/packages/pkg/libuv.rst | 2 +- docs/packages/pkg/meshoptimizer.rst | 21 + docs/packages/pkg/miniz.rst | 20 + docs/packages/pkg/occt.rst | 31 ++ docs/packages/pkg/opusfile.rst | 21 + docs/packages/pkg/smol-v.rst | 22 + docs/packages/pkg/theora.rst | 21 + docs/packages/pkg/tinyexr.rst | 21 + docs/packages/pkg/tinygltf.rst | 21 + docs/packages/pkg/tinyobjloader.rst | 20 + docs/packages/pkg/tsl_hat_trie.rst | 23 + docs/packages/pkg/tsl_robin_map.rst | 22 + docs/packages/pkg/tvm.rst | 2 +- docs/packages/pkg/xatlas.rst | 21 + docs/packages/pkg/zlog.rst | 19 + .../errors/error.external.build.failed.rst | 6 +- .../user-modules/hunter_upload_password.rst | 6 +- docs/reference/user-variables.rst | 4 +- examples/Boost-chrono-1-64/CMakeLists.txt | 8 +- examples/Boost-chrono-1-64/config.cmake | 3 + .../CMakeLists.txt | 5 +- examples/Boost-container/CMakeLists.txt | 17 + examples/Boost-container/boo.cpp | 15 + examples/Boost-container/config.cmake | 4 + examples/Boost-filesystem-1-64/CMakeLists.txt | 8 +- examples/Boost-filesystem-1-64/config.cmake | 3 + .../CMakeLists.txt | 5 +- examples/Boost-iostreams-1-64/CMakeLists.txt | 5 +- .../CMakeLists.txt | 5 +- .../Boost-log-useBoostConfig/CMakeLists.txt | 5 +- examples/Boost-system-1-66/CMakeLists.txt | 6 +- examples/Boost-thread-1-64/CMakeLists.txt | 8 +- examples/Boost-thread-1-64/config.cmake | 3 + examples/Boost-useBoostConfig/CMakeLists.txt | 5 +- examples/Expat/CMakeLists.txt | 7 +- examples/KhronosDataFormat/CMakeLists.txt | 18 + examples/KhronosDataFormat/boo.cpp | 6 + examples/Opus/CMakeLists.txt | 15 + examples/Opus/main.cpp | 6 + examples/SPIRV-Tools/CMakeLists.txt | 1 + examples/SPIRV-Tools/config.cmake | 2 + examples/abseil/CMakeLists.txt | 18 + examples/abseil/boo.cpp | 23 + examples/apg/CMakeLists.txt | 29 ++ examples/apg/boo.cpp | 7 + examples/astc-encoder/CMakeLists.txt | 18 + examples/astc-encoder/boo.cpp | 6 + examples/basis_universal/CMakeLists.txt | 18 + examples/basis_universal/boo.cpp | 5 + examples/cgltf/CMakeLists.txt | 18 + examples/cgltf/boo.cpp | 13 + examples/cpp-statsd-client/CMakeLists.txt | 22 + examples/cpp-statsd-client/boo.cpp | 26 + examples/crc32c/CMakeLists.txt | 9 +- examples/etc2comp/CMakeLists.txt | 18 + examples/etc2comp/boo.cpp | 6 + examples/fast_obj/CMakeLists.txt | 18 + examples/fast_obj/boo.cpp | 7 + examples/filament/CMakeLists.txt | 20 + examples/filament/config.cmake | 14 + examples/filament/main.cpp | 5 + examples/foo/CMakeLists.txt | 2 +- examples/freetype-gl/CMakeLists.txt | 15 + examples/freetype-gl/main.cpp | 8 + examples/glslang/CMakeLists.txt | 1 + examples/glslang/config.cmake | 2 + examples/jpeg-compressor/CMakeLists.txt | 18 + examples/jpeg-compressor/boo.cpp | 7 + examples/jsmn/CMakeLists.txt | 18 + examples/jsmn/boo.cpp | 6 + examples/libarchive/CMakeLists.txt | 18 + examples/libarchive/boo.cpp | 27 + examples/libigl/CMakeLists.txt | 2 +- examples/lz4/CMakeLists.txt | 4 +- examples/meshoptimizer/CMakeLists.txt | 26 + examples/meshoptimizer/boo.cpp | 6 + examples/miniz/CMakeLists.txt | 18 + examples/miniz/boo.cpp | 5 + examples/occt/CMakeLists.txt | 23 + examples/occt/boo.cpp | 16 + examples/opusfile/CMakeLists.txt | 19 + examples/opusfile/main.cpp | 4 + examples/re2/CMakeLists.txt | 7 +- examples/smol-v/CMakeLists.txt | 18 + examples/smol-v/boo.cpp | 5 + examples/theora/CMakeLists.txt | 18 + examples/theora/main.cpp | 6 + examples/tinyexr/CMakeLists.txt | 18 + examples/tinyexr/boo.cpp | 5 + examples/tinygltf/CMakeLists.txt | 18 + examples/tinygltf/boo.cpp | 7 + examples/tinyobjloader/CMakeLists.txt | 18 + examples/tinyobjloader/boo.cpp | 7 + examples/tsl_hat_trie/CMakeLists.txt | 18 + examples/tsl_hat_trie/boo.cpp | 5 + examples/tsl_robin_map/CMakeLists.txt | 18 + examples/tsl_robin_map/boo.cpp | 5 + examples/utf8/CMakeLists.txt | 4 +- examples/utf8/boo.cpp | 2 +- examples/xatlas/CMakeLists.txt | 18 + examples/xatlas/boo.cpp | 8 + examples/yaml-cpp/CMakeLists.txt | 3 +- examples/zlog/CMakeLists.txt | 18 + examples/zlog/boo.c | 4 + jenkins.py | 11 +- maintenance/create_package.sh | 35 ++ maintenance/fork_repo.sh | 15 + maintenance/upload-password-template.cmake | 4 +- scripts/find_python.cmake | 12 +- scripts/link-all.cmake | 17 +- .../CMakeLists.txt | 6 +- .../CMakeLists.txt | 6 +- tests/hunter_setup_msvc/CMakeLists.txt | 56 ++- 263 files changed, 4696 insertions(+), 1363 deletions(-) delete mode 100644 .github/FUNDING.yml create mode 100644 .github/workflows/ci-docs.yml create mode 100644 .github/workflows/ci.yml create mode 100644 .github/workflows/ci/build.cmd create mode 100644 .github/workflows/ci/build.sh create mode 100644 .github/workflows/ci/matrix.json create mode 100644 .github/workflows/set_matrix.py create mode 100644 .github/workflows/set_status.py delete mode 100644 .travis.yml create mode 100644 cmake/projects/Boost/ci/matrix.json create mode 100644 cmake/projects/Boost/container/hunter.cmake create mode 100644 cmake/projects/KhronosDataFormat/hunter.cmake create mode 100644 cmake/projects/Opus/hunter.cmake create mode 100644 cmake/projects/abseil/hunter.cmake create mode 100644 cmake/projects/apg/hunter.cmake create mode 100644 cmake/projects/astc-encoder/hunter.cmake create mode 100644 cmake/projects/basis_universal/hunter.cmake create mode 100644 cmake/projects/cgltf/hunter.cmake create mode 100644 cmake/projects/cpp-statsd-client/hunter.cmake create mode 100644 cmake/projects/etc2comp/hunter.cmake create mode 100644 cmake/projects/fast_obj/hunter.cmake create mode 100644 cmake/projects/filament/ci/build.sh create mode 100644 cmake/projects/filament/ci/matrix.json create mode 100644 cmake/projects/filament/hunter.cmake create mode 100644 cmake/projects/freetype-gl/ci/build.sh create mode 100644 cmake/projects/freetype-gl/ci/matrix.json create mode 100644 cmake/projects/freetype-gl/hunter.cmake create mode 100644 cmake/projects/jpeg-compressor/hunter.cmake create mode 100644 cmake/projects/jsmn/hunter.cmake create mode 100644 cmake/projects/libarchive/hunter.cmake create mode 100644 cmake/projects/meshoptimizer/hunter.cmake create mode 100644 cmake/projects/miniz/hunter.cmake create mode 100644 cmake/projects/occt/ci/build.sh create mode 100644 cmake/projects/occt/hunter.cmake create mode 100644 cmake/projects/opusfile/hunter.cmake create mode 100644 cmake/projects/smol-v/hunter.cmake create mode 100644 cmake/projects/theora/hunter.cmake create mode 100644 cmake/projects/tinyexr/hunter.cmake create mode 100644 cmake/projects/tinygltf/hunter.cmake create mode 100644 cmake/projects/tinyobjloader/hunter.cmake create mode 100644 cmake/projects/tsl_robin_map/hunter.cmake create mode 100644 cmake/projects/xatlas/hunter.cmake create mode 100644 cmake/projects/zlog/hunter.cmake create mode 100644 cmake/schemes/url_sha1_make_only.cmake.in delete mode 100644 docs/creating-new/images/branches.png delete mode 100644 docs/creating-new/images/pr-change-branch.png delete mode 100644 docs/creating-new/images/pr-update-version.png delete mode 100644 docs/creating-new/images/pr-with-tests.png delete mode 100644 docs/creating-new/images/pull-request-testing.png delete mode 100644 docs/creating-new/images/pull-request.png delete mode 100644 docs/creating-new/images/upload.png create mode 100644 docs/creating-new/test.rst create mode 100644 docs/creating-new/test/ci.rst create mode 100644 docs/creating-new/test/local.rst create mode 100644 docs/packages/pkg/KhronosDataFormat.rst create mode 100644 docs/packages/pkg/Opus.rst create mode 100644 docs/packages/pkg/abseil.rst create mode 100644 docs/packages/pkg/apg.rst create mode 100644 docs/packages/pkg/astc-encoder.rst create mode 100644 docs/packages/pkg/basis_universal.rst create mode 100644 docs/packages/pkg/cgltf.rst create mode 100644 docs/packages/pkg/cpp-statsd-client.rst create mode 100644 docs/packages/pkg/etc2comp.rst create mode 100644 docs/packages/pkg/fast_obj.rst create mode 100644 docs/packages/pkg/filament.rst create mode 100644 docs/packages/pkg/freetype-gl.rst create mode 100644 docs/packages/pkg/jpeg-compressor.rst create mode 100644 docs/packages/pkg/jsmn.rst create mode 100644 docs/packages/pkg/libarchive.rst create mode 100644 docs/packages/pkg/meshoptimizer.rst create mode 100644 docs/packages/pkg/miniz.rst create mode 100644 docs/packages/pkg/occt.rst create mode 100644 docs/packages/pkg/opusfile.rst create mode 100644 docs/packages/pkg/smol-v.rst create mode 100644 docs/packages/pkg/theora.rst create mode 100644 docs/packages/pkg/tinyexr.rst create mode 100644 docs/packages/pkg/tinygltf.rst create mode 100644 docs/packages/pkg/tinyobjloader.rst create mode 100644 docs/packages/pkg/tsl_hat_trie.rst create mode 100644 docs/packages/pkg/tsl_robin_map.rst create mode 100644 docs/packages/pkg/xatlas.rst create mode 100644 docs/packages/pkg/zlog.rst create mode 100644 examples/Boost-chrono-1-64/config.cmake create mode 100644 examples/Boost-container/CMakeLists.txt create mode 100644 examples/Boost-container/boo.cpp create mode 100644 examples/Boost-container/config.cmake create mode 100644 examples/Boost-filesystem-1-64/config.cmake create mode 100644 examples/Boost-thread-1-64/config.cmake create mode 100644 examples/KhronosDataFormat/CMakeLists.txt create mode 100644 examples/KhronosDataFormat/boo.cpp create mode 100644 examples/Opus/CMakeLists.txt create mode 100644 examples/Opus/main.cpp create mode 100644 examples/SPIRV-Tools/config.cmake create mode 100644 examples/abseil/CMakeLists.txt create mode 100644 examples/abseil/boo.cpp create mode 100644 examples/apg/CMakeLists.txt create mode 100644 examples/apg/boo.cpp create mode 100644 examples/astc-encoder/CMakeLists.txt create mode 100644 examples/astc-encoder/boo.cpp create mode 100644 examples/basis_universal/CMakeLists.txt create mode 100644 examples/basis_universal/boo.cpp create mode 100644 examples/cgltf/CMakeLists.txt create mode 100644 examples/cgltf/boo.cpp create mode 100644 examples/cpp-statsd-client/CMakeLists.txt create mode 100644 examples/cpp-statsd-client/boo.cpp create mode 100644 examples/etc2comp/CMakeLists.txt create mode 100644 examples/etc2comp/boo.cpp create mode 100644 examples/fast_obj/CMakeLists.txt create mode 100644 examples/fast_obj/boo.cpp create mode 100644 examples/filament/CMakeLists.txt create mode 100644 examples/filament/config.cmake create mode 100644 examples/filament/main.cpp create mode 100644 examples/freetype-gl/CMakeLists.txt create mode 100644 examples/freetype-gl/main.cpp create mode 100644 examples/glslang/config.cmake create mode 100644 examples/jpeg-compressor/CMakeLists.txt create mode 100644 examples/jpeg-compressor/boo.cpp create mode 100644 examples/jsmn/CMakeLists.txt create mode 100644 examples/jsmn/boo.cpp create mode 100644 examples/libarchive/CMakeLists.txt create mode 100644 examples/libarchive/boo.cpp create mode 100644 examples/meshoptimizer/CMakeLists.txt create mode 100644 examples/meshoptimizer/boo.cpp create mode 100644 examples/miniz/CMakeLists.txt create mode 100644 examples/miniz/boo.cpp create mode 100644 examples/occt/CMakeLists.txt create mode 100644 examples/occt/boo.cpp create mode 100644 examples/opusfile/CMakeLists.txt create mode 100644 examples/opusfile/main.cpp create mode 100644 examples/smol-v/CMakeLists.txt create mode 100644 examples/smol-v/boo.cpp create mode 100644 examples/theora/CMakeLists.txt create mode 100644 examples/theora/main.cpp create mode 100644 examples/tinyexr/CMakeLists.txt create mode 100644 examples/tinyexr/boo.cpp create mode 100644 examples/tinygltf/CMakeLists.txt create mode 100644 examples/tinygltf/boo.cpp create mode 100644 examples/tinyobjloader/CMakeLists.txt create mode 100644 examples/tinyobjloader/boo.cpp create mode 100644 examples/tsl_hat_trie/CMakeLists.txt create mode 100644 examples/tsl_hat_trie/boo.cpp create mode 100644 examples/tsl_robin_map/CMakeLists.txt create mode 100644 examples/tsl_robin_map/boo.cpp create mode 100644 examples/xatlas/CMakeLists.txt create mode 100644 examples/xatlas/boo.cpp create mode 100644 examples/zlog/CMakeLists.txt create mode 100644 examples/zlog/boo.c create mode 100644 maintenance/create_package.sh create mode 100644 maintenance/fork_repo.sh diff --git a/.github/FUNDING.yml b/.github/FUNDING.yml deleted file mode 100644 index ba5410e9ce..0000000000 --- a/.github/FUNDING.yml +++ /dev/null @@ -1,2 +0,0 @@ -patreon: ruslo -custom: https://www.paypal.com/cgi-bin/webscr?cmd=_s-xclick&hosted_button_id=UN8PDZZ3Q7VVL diff --git a/.github/ISSUE_TEMPLATE.md b/.github/ISSUE_TEMPLATE.md index 1f6d947bee..a47c070cb0 100644 --- a/.github/ISSUE_TEMPLATE.md +++ b/.github/ISSUE_TEMPLATE.md @@ -1,4 +1,4 @@ - + * I've read [Brief overview section](https://hunter.readthedocs.io/en/latest/overview.html) and do understand basic concepts. **[Yes|No]** * I've read [F.A.Q. section](https://hunter.readthedocs.io/en/latest/faq.html) and haven't found an answer to my question. **[Yes|No]** diff --git a/.github/ISSUE_TEMPLATE/discussion.md b/.github/ISSUE_TEMPLATE/discussion.md index 0062ec40ca..62eff0bf5d 100644 --- a/.github/ISSUE_TEMPLATE/discussion.md +++ b/.github/ISSUE_TEMPLATE/discussion.md @@ -7,7 +7,7 @@ assignees: '' --- - + * I've read [Brief overview section](https://hunter.readthedocs.io/en/latest/overview.html) and do understand basic concepts. **[Yes|No]** * I've read [F.A.Q. section](https://hunter.readthedocs.io/en/latest/faq.html) and haven't found an answer to my question. **[Yes|No]** diff --git a/.github/PULL_REQUEST_TEMPLATE.md b/.github/PULL_REQUEST_TEMPLATE.md index a46393ca19..5c1d8c91ee 100644 --- a/.github/PULL_REQUEST_TEMPLATE.md +++ b/.github/PULL_REQUEST_TEMPLATE.md @@ -4,15 +4,6 @@ * I've followed [this guide](https://hunter.readthedocs.io/en/latest/creating-new/create/cmake.html) step by step carefully. **[Yes|No]** -* I've tested this package remotely and have excluded all broken builds. - Here is the links to the Travis/AppVeyor with status "All passed": - - * https://ci.appveyor.com/project//hunter/build/ - * https://travis-ci.org//hunter/builds/ - -* I have submitted CI configs to https://github.com/cpp-pm/hunter-testing targeting `pkg.template` branch, - see this merged pull request https://github.com/cpp-pm/hunter-testing/pull/ - * My change will resolve this "New package" request: https://github.com/cpp-pm/hunter/issues/ @@ -25,15 +16,15 @@ * I've followed [this guide](https://hunter.readthedocs.io/en/latest/creating-new/update.html) step by step carefully. **[Yes|No]** -* I've tested this package remotely and have excluded all broken builds. - Here is the links to the Travis/AppVeyor with status "All passed": - - * https://ci.appveyor.com/project//hunter/build/ - * https://travis-ci.org//hunter/builds/ + +* This update will break a few toolchains. + - Toolchain 1 + - Toolchain 2 - -* This update will break few old toolchains. - They are excluded in this pull request: https://github.com/cpp-pm/hunter-testing/pull/ + +* This update will fix a few toolchains. + - Toolchain 1 + - Toolchain 2 --- diff --git a/.github/workflows/ci-docs.yml b/.github/workflows/ci-docs.yml new file mode 100644 index 0000000000..3ebe540528 --- /dev/null +++ b/.github/workflows/ci-docs.yml @@ -0,0 +1,35 @@ +name: CI-docs +on: + push: + branches: ['master', 'github_actions_ci'] + paths: ['docs/**', 'examples/**'] + pull_request: + branches: ['master', 'github_actions_ci'] + paths: ['docs/**', 'examples/**'] + +jobs: + + docs: + runs-on: ubuntu-latest + + steps: + + - name: Git checkout with submodules + uses: actions/checkout@v2 + with: + submodules: true + + - name: Set up Python + uses: actions/setup-python@v2 + with: + python-version: 3.8 + + - name: Install dependencies + run: | + python -m pip install --upgrade pip + pip install virtualenv + + - name: Run test script + run: | + cd docs + ./jenkins.sh \ No newline at end of file diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml new file mode 100644 index 0000000000..e0462ffe4c --- /dev/null +++ b/.github/workflows/ci.yml @@ -0,0 +1,134 @@ +name: CI +on: + push: + paths: [ 'cmake/projects/**' ] + pull_request: + paths: [ 'cmake/projects/**' ] + workflow_dispatch: + inputs: + project: + description: 'Project name' + required: true + +jobs: + + set_matrix: + runs-on: ubuntu-latest + outputs: + matrix: ${{ steps.set-matrix.outputs.matrix }} + + steps: + + - name: Git checkout + uses: actions/checkout@v2 + + - name: Manual dispatch, get project name from input + if: github.event_name == 'workflow_dispatch' + run: | + echo '["cmake/projects/${{ github.event.inputs.project }}/hunter.cmake"]' > ${HOME}/files.json + + - name: Get changed files and save them to ${HOME}/files.json + if: github.event_name != 'workflow_dispatch' + id: files + uses: lots0logs/gh-action-get-changed-files@2.1.4 + with: + token: ${{ secrets.GITHUB_TOKEN }} + + - name: Set matrix for subsequent build + id: set-matrix + run: | + MATRIX=`python .github/workflows/set_matrix.py` + if [ "${MATRIX}" ]; then + echo "::set-output name=matrix::${MATRIX}" + else + exit 1 + fi + + build: + name: ${{ matrix.example }} ${{ matrix.toolchain }} ${{ matrix.os }} + needs: set_matrix + runs-on: ${{ matrix.os }} + strategy: + fail-fast: false + matrix: ${{ fromJson(needs.set_matrix.outputs.matrix) }} + + env: + TOOLCHAIN: ${{ matrix.toolchain }} + PROJECT_DIR: examples/${{ matrix.example }} + GITHUB_USER_PASSWORD: ${{ secrets.CPP_PM_BOT_TOKEN }} + + steps: + + - name: Git checkout with submodules + uses: actions/checkout@v2 + with: + submodules: true + + - name: Set up Python + uses: actions/setup-python@v2 + with: + python-version: ${{ matrix.python }} + + - name: Set up Python environment variable (Unix) + if: runner.os != 'Windows' + run: echo "HUNTER_PYTHON_LOCATION=$pythonLocation" >> $GITHUB_ENV + + - name: Set up Python environment variable (Windows) + if: runner.os == 'Windows' + run: echo "HUNTER_PYTHON_LOCATION=$env:pythonLocation" | Out-File -Append -FilePath $env:GITHUB_ENV -Encoding utf8 + + - name: Extract branch name + shell: bash + run: echo "##[set-output name=branch;]${GITHUB_REF#refs/heads/}" + id: extract_branch + + - name: Upgrade pip + run: | + python -m pip install --upgrade pip + + - name: Build on Unix + if: runner.os != 'Windows' + env: + BRANCH_NAME: ${{ steps.extract_branch.outputs.branch }} + run: | + bash ${{ matrix.script }} + + - name: Build on Windows + if: runner.os == 'Windows' + env: + BRANCH_NAME: ${{ steps.extract_branch.outputs.branch }} + run: | + ${{ matrix.script }} + + set_status: + needs: [ set_matrix, build ] + if: always() && needs.set_matrix.result == 'success' && github.event_name != 'pull_request' + runs-on: ubuntu-latest + + steps: + + - name: Git checkout + uses: actions/checkout@v2 + + - name: Get job status via GitHub API + uses: octokit/request-action@v2.x + id: get_job_data + with: + route: GET /repos/${{ github.repository }}/actions/runs/${{ github.run_id }}/jobs + env: + GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} + + - name: Parse job status + run: | + mkdir job_data + echo '${{ steps.get_job_data.outputs.data }}' > job_data.json + python .github/workflows/set_status.py + + - name: Deploy job status to GitHub Pages + uses: peaceiris/actions-gh-pages@v3.7.0-8 + with: + github_token: ${{ secrets.GITHUB_TOKEN }} + publish_dir: job_data + destination_dir: _data/projects + keep_files: true + enable_jekyll: true diff --git a/.github/workflows/ci/build.cmd b/.github/workflows/ci/build.cmd new file mode 100644 index 0000000000..3d204a7799 --- /dev/null +++ b/.github/workflows/ci/build.cmd @@ -0,0 +1,48 @@ +:: Install Python package 'requests' +pip install requests gitpython + +:: Install latest Polly toolchains and scripts +C:\msys64\usr\bin\wget.exe https://github.com/cpp-pm/polly/archive/master.zip +7z x master.zip +set POLLY_ROOT=%cd%\polly-master + +:: Install dependencies (CMake, Ninja) +python %POLLY_ROOT%\bin\install-ci-dependencies.py + +:: Tune locations +set PATH=%cd%\_ci\cmake\bin;%PATH% +set PATH=%cd%\_ci\ninja;%PATH% + +:: Remove entry with sh.exe from PATH to fix error with MinGW toolchain +:: (For MinGW make to work correctly sh.exe must NOT be in your path) +:: * http://stackoverflow.com/a/3870338/2288008 +set PATH=%PATH:C:\Program Files\Git\bin;=% +set PATH=%PATH:C:\Program Files\Git\usr\bin;=% + +:: Save git.exe in HUNTER_GIT_EXECUTABLE for upload +:: * https://docs.hunter.sh/en/latest/reference/user-variables.html#hunter-git-executable +:: Variable will be used in CMake so it's okay to use Unix style '/' +set HUNTER_GIT_EXECUTABLE=C:/Program Files/Git/bin/git.exe + +set MINGW_PATH=C:\ProgramData\chocolatey\bin + +:: MSYS2 location +set MSYS_PATH=C:\msys64\usr\bin + +:: Visual Studio 15 2017: Mimic behavior of older versions +set VS150COMNTOOLS=C:\Program Files (x86)\Microsoft Visual Studio\2017\Enterprise\Common7\Tools + +:: Visual Studio 16 2019: Mimic behavior of older versions +set VS160COMNTOOLS=C:\Program Files (x86)\Microsoft Visual Studio\2019\Enterprise\Common7\Tools + +:: To fix "path too long" error +if not "%TOOLCHAIN:vs-=%"=="%TOOLCHAIN%" set HUNTER_BINARY_DIR=C:\__BIN + +:: Add msbuild to PATH (for vs-14 toolchain, GitHub windows-2016 runner doesn't have VS 2015) +if "%TOOLCHAIN:~0,5%"=="vs-14" set PATH=C:\Program Files (x86)\Microsoft Visual Studio\2017\Enterprise\MSBuild\15.0\Bin;%PATH% + +if "%BRANCH_NAME%" == "master" ( + python jenkins.py --upload +) else ( + python jenkins.py +) diff --git a/.github/workflows/ci/build.sh b/.github/workflows/ci/build.sh new file mode 100644 index 0000000000..24af6e129e --- /dev/null +++ b/.github/workflows/ci/build.sh @@ -0,0 +1,33 @@ +# Install Python package 'requests' +pip install requests gitpython + +# Install latest Polly toolchains and scripts +wget https://github.com/cpp-pm/polly/archive/master.zip +unzip master.zip +POLLY_ROOT="`pwd`/polly-master" +export PATH="${POLLY_ROOT}/bin:${PATH}" + +# Install dependencies (CMake, Android NDK) +install-ci-dependencies.py --prune-archives + +# Tune locations +export PATH="`pwd`/_ci/cmake/bin:${PATH}" + +# Installed if toolchain is Android (otherwise directory doesn't exist) +export ANDROID_NDK_r10e="`pwd`/_ci/android-ndk-r10e" +export ANDROID_NDK_r11c="`pwd`/_ci/android-ndk-r11c" +export ANDROID_NDK_r15c="`pwd`/_ci/android-ndk-r15c" +export ANDROID_NDK_r16b="`pwd`/_ci/android-ndk-r16b" +export ANDROID_NDK_r17="`pwd`/_ci/android-ndk-r17" + +# Use Xcode 11.3.1 instead of default 11.6 (for ios-13-2 toolchain, no iOS 13.2 SDK in Xcode 11.6) +if [[ "$TOOLCHAIN" =~ "ios-nocodesign-13-2" ]]; then + export DEVELOPER_DIR="/Applications/Xcode_11.3.1.app/Contents/Developer" +fi + +# Run build script +if [[ "$BRANCH_NAME" == "master" ]]; then + python jenkins.py --upload +else + python jenkins.py +fi diff --git a/.github/workflows/ci/matrix.json b/.github/workflows/ci/matrix.json new file mode 100644 index 0000000000..d1b09d174a --- /dev/null +++ b/.github/workflows/ci/matrix.json @@ -0,0 +1,22 @@ +[ +{ "example": "foo", "toolchain": "clang-cxx17", "os": "ubuntu-16.04", "python": "3.8", "script": "build.sh" }, +{ "example": "foo", "toolchain": "gcc-7-cxx17", "os": "ubuntu-16.04", "python": "3.8", "script": "build.sh" }, +{ "example": "foo", "toolchain": "gcc-8-cxx17-fpic", "os": "ubuntu-18.04", "python": "3.8", "script": "build.sh" }, +{ "example": "foo", "toolchain": "gcc-9-cxx17-fpic", "os": "ubuntu-20.04", "python": "3.8", "script": "build.sh" }, +{ "example": "foo", "toolchain": "android-ndk-r17-api-24-arm64-v8a-clang-libcxx14", "os": "ubuntu-16.04", "python": "3.8", "script": "build.sh" }, +{ "example": "foo", "toolchain": "analyze-cxx17", "os": "ubuntu-16.04", "python": "3.8", "script": "build.sh" }, +{ "example": "foo", "toolchain": "sanitize-address-cxx17", "os": "ubuntu-16.04", "python": "3.8", "script": "build.sh" }, +{ "example": "foo", "toolchain": "sanitize-leak-cxx17", "os": "ubuntu-16.04", "python": "3.8", "script": "build.sh" }, +{ "example": "foo", "toolchain": "sanitize-thread-cxx17", "os": "ubuntu-16.04", "python": "3.8", "script": "build.sh" }, +{ "example": "foo", "toolchain": "osx-10-13-make-cxx14", "os": "macos-10.15", "python": "3.8", "script": "build.sh" }, +{ "example": "foo", "toolchain": "osx-10-13-cxx14", "os": "macos-10.15", "python": "3.8", "script": "build.sh" }, +{ "example": "foo", "toolchain": "osx-10-15-dep-10-10-cxx17", "os": "macos-10.15", "python": "3.8", "script": "build.sh" }, +{ "example": "foo", "toolchain": "ios-nocodesign-13-2-dep-9-3", "os": "macos-10.15", "python": "3.8", "script": "build.sh" }, +{ "example": "foo", "toolchain": "ninja-vs-15-2017-win64-cxx17", "os": "windows-2016", "python": "3.8", "script": "build.cmd" }, +{ "example": "foo", "toolchain": "nmake-vs-15-2017-win64-cxx17", "os": "windows-2016", "python": "3.8", "script": "build.cmd" }, +{ "example": "foo", "toolchain": "vs-16-2019-win64-cxx17", "os": "windows-2019", "python": "3.8", "script": "build.cmd" }, +{ "example": "foo", "toolchain": "vs-15-2017-win64-cxx17", "os": "windows-2016", "python": "3.8", "script": "build.cmd" }, +{ "example": "foo", "toolchain": "vs-14-2015-sdk-8-1", "os": "windows-2016", "python": "3.8", "script": "build.cmd" }, +{ "example": "foo", "toolchain": "mingw-cxx17", "os": "windows-2016", "python": "3.8", "script": "build.cmd" }, +{ "example": "foo", "toolchain": "msys-cxx17", "os": "windows-2016", "python": "3.8", "script": "build.cmd" } +] diff --git a/.github/workflows/set_matrix.py b/.github/workflows/set_matrix.py new file mode 100644 index 0000000000..b750b49fe4 --- /dev/null +++ b/.github/workflows/set_matrix.py @@ -0,0 +1,59 @@ +import os +import sys +import json +import re + +# simple helper to allow single-line-comments with `//` in json files +# https://stackoverflow.com/a/57814048 +def json_from_file_ignore_comments(filePath): + contents = "" + with open(filePath, "r") as fh: + for line in fh: + cleanedLine = line.split("//", 1)[0] + if len(cleanedLine) > 0 and line.endswith("\n") and "\n" not in cleanedLine: + cleanedLine += "\n" + contents += cleanedLine + json_data = json.loads(contents) + return json_data + +try: + with open(os.environ.get('HOME') + '/files.json') as json_files: + files = json.load(json_files) +except IOError: + sys.exit('Can\'t read changed files from files.json') + +projects = set() + +p = re.compile('cmake/projects/([^/]+)') +for file in files: + if p.match(file): + project = p.match(file).group(1) + if os.path.isdir('cmake/projects/' + project): + projects.add(project) + +if projects: + dafault_dir = '.github/workflows/ci/' + + default_matrix = json_from_file_ignore_comments(dafault_dir + 'matrix.json') + + include = [] + for project in projects: + project_dir = 'cmake/projects/' + project + '/ci/'; + + matrix_override = project_dir + 'matrix.json'; + if os.path.isfile(matrix_override): + project_matrix = json_from_file_ignore_comments(matrix_override) + else: + project_matrix = [ dict(leg, example = project) for leg in default_matrix ] + + for leg in project_matrix: + if (os.path.isfile(project_dir + leg['script'])): + leg['script'] = project_dir + leg['script'] + else: + leg['script'] = dafault_dir + leg['script'] + + include += project_matrix + + print(json.dumps({'include': include})) +else: + sys.exit('No projects found') \ No newline at end of file diff --git a/.github/workflows/set_status.py b/.github/workflows/set_status.py new file mode 100644 index 0000000000..97c0dc7353 --- /dev/null +++ b/.github/workflows/set_status.py @@ -0,0 +1,18 @@ +import sys +import json + +try: + with open('job_data.json') as json_data: + job_data = json.load(json_data) +except IOError: + sys.exit('Can\'t read job status from job_data.json') + +projects = dict() + +for job in job_data['jobs'][1:-1]: + project = job['name'].split(" ")[0] + projects.setdefault(project, []).append(job) + +for project, jobs in projects.items(): + with open('job_data/' + project + '.json', 'w') as file: + json.dump(sorted(jobs, key = lambda i: i['name']), file, indent=4) \ No newline at end of file diff --git a/.travis.yml b/.travis.yml deleted file mode 100644 index 2a2120b54b..0000000000 --- a/.travis.yml +++ /dev/null @@ -1,62 +0,0 @@ -# OSX/Linux (https://github.com/travis-ci-tester/toolchain-table) - -language: - - minimal - -os: - - linux - -# Container-based infrastructure (Linux) -# * https://docs.travis-ci.com/user/migrating-from-legacy/#How-can-I-use-container-based-infrastructure%3F -sudo: - - false - -# Install packages differs for container-based infrastructure -# * https://docs.travis-ci.com/user/migrating-from-legacy/#How-do-I-install-APT-sources-and-packages%3F -addons: - apt: - packages: - - python3-pip - - enchant # for documentation - -dist: - - trusty - -env: - - TOOLCHAIN=generate-documentation-test - -install: - # Info about OS - - uname -a - - # Install Python 3 - - if [[ "`uname`" == "Darwin" ]]; then travis_retry brew install python3; fi - - # Install Python package 'requests' - # 'easy_install3' is not installed by 'brew install python3' on OS X 10.9 Maverick - - if [[ "`uname`" == "Darwin" ]]; then pip3 install requests; fi - - if [[ "`uname`" == "Linux" ]]; then travis_retry pip3 install --user requests; fi - - # Install latest Polly toolchains and scripts - - wget https://github.com/cpp-pm/polly/archive/master.zip - - unzip master.zip - - POLLY_ROOT="`pwd`/polly-master" - - export PATH="${POLLY_ROOT}/bin:${PATH}" - - # Install dependencies (CMake, Android NDK) - - install-ci-dependencies.py - - # Tune locations - - export PATH="`pwd`/_ci/cmake/bin:${PATH}" - - # Installed if toolchain is Android (otherwise directory doesn't exist) - - export ANDROID_NDK_r10e="`pwd`/_ci/android-ndk-r10e" - - export ANDROID_NDK_r11c="`pwd`/_ci/android-ndk-r11c" - -script: - - cd docs - - ./jenkins.sh - -branches: - only: - - master diff --git a/README.rst b/README.rst index 92f56fef93..cf6e9cc240 100644 --- a/README.rst +++ b/README.rst @@ -1,7 +1,7 @@ Hunter ====== -|gitter| |rtfd| |travis| |appveyor| |license| +|gitter| |rtfd| |license| CMake driven cross-platform package manager for C/C++. Linux, Windows, macOS, iOS, Android, Raspberry Pi, etc. @@ -13,7 +13,7 @@ Linux, Windows, macOS, iOS, Android, Raspberry Pi, etc. * Reporting issues: https://github.com/cpp-pm/hunter/issues/new * Contributing guide: https://hunter.readthedocs.io/en/latest/contributing.html * Contacts: https://hunter.readthedocs.io/en/latest/contacts.html -* `Per package testing table `_ +* `Per package testing table `_ .. |gitter| image:: https://badges.gitter.im/cpp-pm/community.svg :target: https://gitter.im/cpp-pm/community @@ -23,14 +23,6 @@ Linux, Windows, macOS, iOS, Android, Raspberry Pi, etc. :target: http://hunter.readthedocs.io/en/latest/?badge=latest :alt: Documentation status -.. |travis| image:: https://img.shields.io/travis/cpp-pm/hunter-testing/pkg.gtest.svg?style=flat&logo=travis&label=Linux%20OSX%20Android%20iOS - :target: https://travis-ci.com/cpp-pm/hunter-testing/builds - :alt: Travis CI - -.. |appveyor| image:: https://img.shields.io/appveyor/ci/rbsheth/hunter-testing/pkg.gtest.svg?style=flat&logo=appveyor&label=Windows - :target: https://ci.appveyor.com/project/rbsheth/hunter-testing/history - :alt: AppVeyor CI - .. |license| image:: https://img.shields.io/github/license/cpp-pm/hunter.svg :target: https://github.com/cpp-pm/hunter/blob/master/LICENSE :alt: LICENSE diff --git a/cmake/configs/default.cmake b/cmake/configs/default.cmake index fa676dea33..70c56e8afc 100644 --- a/cmake/configs/default.cmake +++ b/cmake/configs/default.cmake @@ -1,4 +1,4 @@ -# Copyright (c) 2013-2018, Ruslan Baratov +# Copyright (c) 2013-2020, Ruslan Baratov, Rahul Sheth # All rights reserved. # Do not place header guards here @@ -27,7 +27,7 @@ hunter_default_version(Android-SDK-Tools VERSION 25.2.5) hunter_default_version(Android-Support-Repository VERSION 47) hunter_default_version(AngelScript VERSION 2.30-p0) hunter_default_version(ArrayFire VERSION 3.3.1-p0) -hunter_default_version(Assimp VERSION 5.0.0-07779a7a) +hunter_default_version(Assimp VERSION 5.0.1-dbd99bf) hunter_default_version(Async++ VERSION 0.0.3-hunter) hunter_default_version(Avahi VERSION 0.6.31) hunter_default_version(BZip2 VERSION 1.0.8-p0) @@ -37,7 +37,7 @@ if(MINGW) # https://github.com/boostorg/build/issues/301 hunter_default_version(Boost VERSION 1.64.0) else() - hunter_default_version(Boost VERSION 1.72.0-p1) + hunter_default_version(Boost VERSION 1.75.0) endif() hunter_default_version(Boost.DI VERSION 1.1.0) @@ -57,9 +57,9 @@ hunter_default_version(CppNetlib VERSION 0.10.1-hunter-3) hunter_default_version(CppNetlibUri VERSION 1.0.5-hunter) hunter_default_version(CreateLaunchers VERSION 0.2.1) hunter_default_version(CsvParserCPlusPlus VERSION 1.0.1) -hunter_default_version(Eigen VERSION 3.3.7) +hunter_default_version(Eigen VERSION 3.3.9) hunter_default_version(EnumGroup VERSION 0.0.1) -hunter_default_version(Expat VERSION 2.1.1) +hunter_default_version(Expat VERSION 2.2.9-p0) hunter_default_version(FLAC VERSION 1.3.3-p0) hunter_default_version(FP16 VERSION 0.0.0-febbb1c-p0) hunter_default_version(FakeIt VERSION 2.0.3) @@ -79,10 +79,11 @@ hunter_default_version(HastyNoise VERSION 0.8.3) hunter_default_version(ICU VERSION 63.1-p5) hunter_default_version(IF97 VERSION 2.1.2) hunter_default_version(Igloo VERSION 1.1.1-hunter) -hunter_default_version(IlmBase VERSION 2.4.0-p1) +hunter_default_version(IlmBase VERSION 2.5.1-p0) hunter_default_version(Immer VERSION 0.6.2-cf44615) hunter_default_version(Jpeg VERSION 9c-p0) hunter_default_version(JsonSpirit VERSION 0.0.4-hunter) +hunter_default_version(KhronosDataFormat VERSION 1.3.1-1f8c852-p1) hunter_default_version(LAPACK VERSION 3.7.1) hunter_default_version(LLVM VERSION 6.0.1-p0) # Clang hunter_default_version(LLVMCompilerRT VERSION 6.0.1) # Clang @@ -108,16 +109,17 @@ hunter_default_version(OpenCL VERSION 2.1-p3) hunter_default_version(OpenCL-cpp VERSION 2.0.10-p0) hunter_default_version(OpenCV VERSION 4.1.1-p0) hunter_default_version(OpenCV-Extra VERSION 4.1.1) -hunter_default_version(OpenEXR VERSION 2.4.0-p1) +hunter_default_version(OpenEXR VERSION 2.5.1-p0) hunter_default_version(OpenNMTTokenizer VERSION 1.11.0-p1) -hunter_default_version(OpenSSL VERSION 1.1.1d) +hunter_default_version(OpenSSL VERSION 1.1.1i) hunter_default_version(OpenSceneGraph VERSION 3.6.3-p0) +hunter_default_version(Opus VERSION 1.3.1) hunter_default_version(PNG VERSION 1.6.26-p6) hunter_default_version(PROJ4 VERSION 5.0.0) hunter_default_version(PhysUnits VERSION 1.1.0-p0) hunter_default_version(PocoCpp VERSION 1.10.1-p0) hunter_default_version(PostgreSQL VERSION 10.0.0) -hunter_default_version(Protobuf VERSION 3.11.2-p0) +hunter_default_version(Protobuf VERSION 3.14.0-4a09d77-p0) string(COMPARE EQUAL "${CMAKE_SYSTEM_NAME}" "Linux" _is_linux) if(_is_linux OR MINGW) @@ -135,7 +137,7 @@ hunter_default_version(QtCMakeExtra VERSION 1.0.34) hunter_default_version(QtPropertyEditor VERSION 2.1.3-p0) hunter_default_version(QtQmlManager VERSION 1.0.0) hunter_default_version(Qwt VERSION 6.1-p3) -hunter_default_version(RapidJSON VERSION 1.1.0-66eb606-p0) +hunter_default_version(RapidJSON VERSION 1.1.0-ce81bc9-p1) hunter_default_version(RapidXML VERSION 1.13) hunter_default_version(RedisClient VERSION 0.6.1-p1) hunter_default_version(SDL2 VERSION 2.0.7-p3) @@ -143,9 +145,8 @@ hunter_default_version(SDL_image VERSION 2.0.1-p1) hunter_default_version(SDL_mixer VERSION 2.0.2-p0) hunter_default_version(SDL_ttf VERSION 2.0.14-p0) hunter_default_version(SFML VERSION 2.5.1-p0) -hunter_default_version(SPIRV-Headers VERSION 1.5.1) -hunter_default_version(SPIRV-Tools VERSION 2019.4-p0) -hunter_default_version(SQLiteModernCpp VERSION 0.0.0) +hunter_default_version(SPIRV-Headers VERSION 1.5.4.raytracing.fixed) +hunter_default_version(SPIRV-Tools VERSION 2020.1-p0) hunter_default_version(SimpleSignal VERSION 0.0.0-79c3f68-p1) hunter_default_version(Snappy VERSION 1.1.7) hunter_default_version(Sober VERSION 0.1.3) @@ -156,7 +157,7 @@ hunter_default_version(TIFF VERSION 4.0.2-p5) hunter_default_version(Tesseract VERSION 3.05.01-hunter-3) hunter_default_version(Urho3D VERSION 1.7-p15) hunter_default_version(Vulkan-Headers VERSION 1.2.133-p0) -hunter_default_version(VulkanMemoryAllocator VERSION 2.1.0-p0) +hunter_default_version(VulkanMemoryAllocator VERSION 2.3.0-p0) hunter_default_version(WDC VERSION 1.1.5) hunter_default_version(WTL VERSION 9.1.5321) hunter_default_version(Washer VERSION 0.1.2) @@ -169,7 +170,7 @@ hunter_default_version(ZMQPP VERSION 4.2.0-p0) hunter_default_version(ZeroMQ VERSION 4.2.3-p1) hunter_default_version(Zug VERSION 0.0.1-be20cae) -hunter_default_version(absl VERSION 20200225.2) +hunter_default_version(abseil VERSION 20200923.2) hunter_default_version(acf VERSION 0.1.14) hunter_default_version(actionlib VERSION 1.11.13-p0) hunter_default_version(aes VERSION 0.0.1-p1) @@ -188,11 +189,14 @@ hunter_default_version(android_sdk_platform_tools_packer VERSION 1.0.0) hunter_default_version(android_sdk_tools_packer VERSION 1.0.3) hunter_default_version(android_support_repository_packer VERSION 1.0.0) hunter_default_version(angles VERSION 1.9.11-p0) +hunter_default_version(apg VERSION 0.0.0-b322f7a-p0) hunter_default_version(arabica VERSION 0.0.0-a202766-p0) -hunter_default_version(asio VERSION 1.12.2-8d6df7b-p1) +hunter_default_version(asio VERSION 1.17.0-p0) +hunter_default_version(astc-encoder VERSION 2.0-ab16aaa-p0) hunter_default_version(autobahn-cpp VERSION 0.2.0) hunter_default_version(autoutils VERSION 0.3.0) hunter_default_version(aws-c-common VERSION 0.2.1-p0) +hunter_default_version(basis_universal VERSION 1.12-f80f8dd-p2) hunter_default_version(benchmark VERSION 1.5.0) hunter_default_version(bento4 VERSION 1.5.1-628-e6ee435-p0) hunter_default_version(binaryen VERSION 1.38.28-p1) @@ -207,7 +211,8 @@ hunter_default_version(catkin VERSION 0.7.17-p0) hunter_default_version(cctz VERSION 2.2.0) hunter_default_version(ccv VERSION 0.7-p6) hunter_default_version(cereal VERSION 1.2.2-p0) -hunter_default_version(ceres-solver VERSION 1.14.0-p1) +hunter_default_version(ceres-solver VERSION 2.0.0-p0) +hunter_default_version(cgltf VERSION 1.7-dc6b5f1-p0) hunter_default_version(check_ci_tag VERSION 1.0.0) hunter_default_version(chromium_zlib VERSION 0.0.0-f87c2b10efb4-p0) hunter_default_version(civetweb VERSION 1.11-p0) @@ -216,6 +221,7 @@ hunter_default_version(class_loader VERSION 0.4.1-p0) hunter_default_version(cmcstl2 VERSION 0.0.0-bee0705e99) hunter_default_version(convertutf VERSION 1.0.1) hunter_default_version(corrade VERSION 2019.10) +hunter_default_version(cpp-statsd-client VERSION 1.0.1-42f02b4-p0) hunter_default_version(cpp_redis VERSION 3.5.0-h1) hunter_default_version(cppast VERSION 0.0.0-b155d6a-p0) hunter_default_version(cppcodec VERSION 0.2-p0) @@ -224,7 +230,7 @@ hunter_default_version(cpr VERSION 1.3.0) hunter_default_version(cpuinfo VERSION 0.0.0-d5e37ad-p0) hunter_default_version(crashpad VERSION v0.0.1-p0) hunter_default_version(crashup VERSION 0.0.2) -hunter_default_version(crc32c VERSION 1.0.5) +hunter_default_version(crc32c VERSION 1.1.1) hunter_default_version(cryptopp VERSION 8.2.0-p0) hunter_default_version(ctti VERSION 0.0.2) hunter_default_version(cub VERSION 1.8.0-p0) @@ -255,35 +261,39 @@ hunter_default_version(eigen3-nnls VERSION 1.0.1) hunter_default_version(enet VERSION 1.3.13-p1) hunter_default_version(entityx VERSION 1.3.0-p1) hunter_default_version(eos VERSION 0.12.1) +hunter_default_version(etc2comp VERSION 0.0.0-9cd0f9c-p0) hunter_default_version(ethash VERSION 0.5.0) hunter_default_version(farmhash VERSION 1.1) +hunter_default_version(fast_obj VERSION 1.0-p0) hunter_default_version(ffmpeg VERSION n4.1-dev-45499e557c-p7) hunter_default_version(fft2d VERSION 1.0.0-p0) +hunter_default_version(filament VERSION 1.9.8) hunter_default_version(fixesproto VERSION 5.0) -hunter_default_version(flatbuffers VERSION 1.8.0-p1) +hunter_default_version(flatbuffers VERSION 1.12.0) hunter_default_version(flex VERSION 2.6.4) -hunter_default_version(fmt VERSION 6.1.2) +hunter_default_version(fmt VERSION 7.1.2) hunter_default_version(folly VERSION 2018.10.22.00-p4) -hunter_default_version(freetype VERSION 2.9.1-p1) +hunter_default_version(freetype VERSION 2.9.1-p3) +hunter_default_version(freetype-gl VERSION 0.0.0-1a8c007-p0) hunter_default_version(frugally-deep VERSION 0.2.2-p0) -hunter_default_version(gRPC VERSION 1.29.1.1) +hunter_default_version(gRPC VERSION 1.34.0-p0) hunter_default_version(gauze VERSION 0.7.1) hunter_default_version(gemmlowp VERSION 1.0.0) hunter_default_version(geos VERSION 3.4.2) hunter_default_version(getopt VERSION 1.0.0-p0) hunter_default_version(gflags VERSION 2.2.1) hunter_default_version(giflib VERSION 5.1.4-p1) -hunter_default_version(gl4es VERSION 1.1.2-p0) +hunter_default_version(gl4es VERSION 1.1.4-p1) hunter_default_version(glbinding VERSION 3.1.0-p0) hunter_default_version(glew VERSION 2.0.0-p1) hunter_default_version(glfw VERSION 3.3.0-f9923e9-p0) hunter_default_version(glib VERSION 2.54.0) -hunter_default_version(glm VERSION 0.9.9.5) +hunter_default_version(glm VERSION 0.9.9.8) hunter_default_version(globjects VERSION 1.1.0-p0) hunter_default_version(glog VERSION 0.4.0) hunter_default_version(glproto VERSION 1.4.17) -hunter_default_version(glslang VERSION 7.12.3352-p1) -hunter_default_version(glu VERSION 9.0.1-p0) +hunter_default_version(glslang VERSION 8.13.3743-9eef54b2-p0) +hunter_default_version(glu VERSION 9.0.1-p1) hunter_default_version(gst_plugins_bad VERSION 1.10.4) hunter_default_version(gst_plugins_base VERSION 1.10.4) hunter_default_version(gst_plugins_good VERSION 1.10.4) @@ -307,7 +317,7 @@ hunter_default_version(inja VERSION 0.1.1) hunter_default_version(inputproto VERSION 2.3) hunter_default_version(intltool VERSION 0.51.0) hunter_default_version(intsizeof VERSION 2.0.2) -hunter_default_version(intx VERSION 0.2.0) +hunter_default_version(intx VERSION 0.5.0) hunter_default_version(ios_sim VERSION 3.1.1) hunter_default_version(ippicv VERSION 20151201) hunter_default_version(iroha-ed25519 VERSION 2.0.0) @@ -316,6 +326,8 @@ hunter_default_version(jaegertracing VERSION 0.4.1) hunter_default_version(jansson VERSION 2.11.0) hunter_default_version(jasper VERSION 2.0.14-p3) hunter_default_version(jo_jpeg VERSION 0.0.1) +hunter_default_version(jpeg-compressor VERSION 0.0.0-aeb7d3b-p0) +hunter_default_version(jsmn VERSION 1.1.0-053d3cd-p0) if(MSVC_VERSION LESS 1600) # for VS10 - version without support C++11 @@ -331,13 +343,14 @@ hunter_default_version(kbproto VERSION 1.0.7) hunter_default_version(lcms VERSION 2.9-p0) hunter_default_version(lehrfempp VERSION 0.7.21) hunter_default_version(leveldb VERSION 1.22) +hunter_default_version(libarchive VERSION 3.4.3) hunter_default_version(libbacktrace VERSION 1.0.0-ca0de051) hunter_default_version(libcpuid VERSION 0.4.0) hunter_default_version(libdaemon VERSION 0.14) hunter_default_version(libdill VERSION 1.6) hunter_default_version(libevhtp VERSION 1.2.16-p4) hunter_default_version(libffi VERSION 3.2.1) -hunter_default_version(libigl VERSION 2.0.0-e33f534-p1) +hunter_default_version(libigl VERSION 2.2.0) hunter_default_version(libjpeg-turbo VERSION 2.0.3-p0) hunter_default_version(libjson-rpc-cpp VERSION 0.7.0-p3) hunter_default_version(libmill VERSION 1.18) @@ -348,7 +361,7 @@ hunter_default_version(librtmp VERSION 2.4.0-p0) hunter_default_version(libscrypt VERSION 1.21-p1) hunter_default_version(libsodium VERSION 1.0.16-p0) hunter_default_version(libunibreak VERSION 4.0) -hunter_default_version(libusb VERSION 1.0.22) +hunter_default_version(libusb VERSION 1.0.23) hunter_default_version(libuv VERSION 1.24.0-p1) hunter_default_version(libxdg-basedir VERSION 1.2.0) hunter_default_version(libxml2 VERSION 2.9.7-p0) @@ -357,11 +370,13 @@ hunter_default_version(libzip VERSION 1.5.2-d68a667-p0) hunter_default_version(lmdb VERSION 0.9.21-p2) hunter_default_version(lmdbxx VERSION 0.9.14.0) hunter_default_version(log4cplus VERSION 1.2.0-p0) -hunter_default_version(lz4 VERSION 1.8.0-p2) +hunter_default_version(lz4 VERSION 1.9.2-p0) hunter_default_version(lzma VERSION 5.2.3-p4) hunter_default_version(magnum VERSION 2019.01) hunter_default_version(md5 VERSION 1.6) +hunter_default_version(meshoptimizer VERSION 0.14-a507623-p0) hunter_default_version(mini_chromium VERSION 0.0.1-p2) +hunter_default_version(miniz VERSION 2.1.0-5ebed82-p0) hunter_default_version(minizip VERSION 1.0.1-p3) hunter_default_version(mkl VERSION 20190502) hunter_default_version(mkldnn VERSION 0.19-p0) @@ -378,9 +393,10 @@ hunter_default_version(nanosvg VERSION 0.0.0-2b08dee-p0) hunter_default_version(ncnn VERSION 20180314-p2) hunter_default_version(ncursesw VERSION 6.1) hunter_default_version(nlohmann_fifo_map VERSION 0.0.0-0dfbf5d-p1) -hunter_default_version(nlohmann_json VERSION 3.7.0) +hunter_default_version(nlohmann_json VERSION 3.8.0) hunter_default_version(nng VERSION 1.1.1) hunter_default_version(nsync VERSION 1.14-p1) +hunter_default_version(occt VERSION 7.4.0-p0) hunter_default_version(odb VERSION 2.4.0) hunter_default_version(odb-boost VERSION 2.4.0) hunter_default_version(odb-compiler VERSION 2.4.0) @@ -392,6 +408,7 @@ hunter_default_version(oniguruma VERSION 6.8.1-p0) hunter_default_version(onmt VERSION 0.4.1-p2) hunter_default_version(openddlparser VERSION 0.1.0-p2) hunter_default_version(opentracing-cpp VERSION 1.6.0) +hunter_default_version(opusfile VERSION 0.12-p0) hunter_default_version(pcg VERSION 0.0.0-p1) hunter_default_version(pciaccess VERSION 0.13.4) hunter_default_version(pcre2 VERSION 10.13-p0) @@ -428,10 +445,10 @@ hunter_default_version(presentproto VERSION 1.0) hunter_default_version(prometheus-cpp VERSION 0.6.0-p2) hunter_default_version(protobuf-c VERSION 1.3.0-p1) hunter_default_version(pthread-stubs VERSION 0.4) -hunter_default_version(pugixml VERSION 1.8.1) -hunter_default_version(pybind11 VERSION 2.2.4) +hunter_default_version(pugixml VERSION 1.10-p0) +hunter_default_version(pybind11 VERSION 2.5.0) hunter_default_version(qhull VERSION 7.2.0-p1) -hunter_default_version(quickjs VERSION 2019-07-21-p0) +hunter_default_version(quickjs VERSION 2020-04-12-p0) hunter_default_version(rabbitmq-c VERSION 0.10.0) hunter_default_version(rabit VERSION 0.0.0-p2) hunter_default_version(randrproto VERSION 1.3.2) @@ -441,13 +458,13 @@ if(MSVC) if(MSVC_VERSION LESS 1916) hunter_default_version(range-v3 VERSION vcpkg5-p) else() - hunter_default_version(range-v3 VERSION 0.5.0) + hunter_default_version(range-v3 VERSION 0.11.0) endif() else() - hunter_default_version(range-v3 VERSION 0.5.0) + hunter_default_version(range-v3 VERSION 0.11.0) endif() -hunter_default_version(re2 VERSION 2017.11.01-p0) +hunter_default_version(re2 VERSION 2020.08.01) hunter_default_version(readline VERSION 6.3) hunter_default_version(recastnavigation VERSION 1.4-p0) hunter_default_version(renderproto VERSION 0.11.1) @@ -470,7 +487,7 @@ hunter_default_version(ros_std_msgs VERSION 0.5.12-p0) hunter_default_version(rosconsole VERSION 1.13.10-p0) hunter_default_version(roscpp_core VERSION 0.6.12-p0) hunter_default_version(rospack VERSION 2.5.3-p0) -hunter_default_version(s3 VERSION 0.0.0-287e4be-p1) +hunter_default_version(s3 VERSION 4.1.0-287e4be-p0) hunter_default_version(scelta VERSION 0.1.0-a0f4f70-p0) hunter_default_version(schnorrkel_crust VERSION 0.3.0) hunter_default_version(sds VERSION 2.0.0) @@ -479,6 +496,7 @@ hunter_default_version(shaderc VERSION 2019.0-p1) hunter_default_version(shaka_player_embedded VERSION 0.1.0-beta-p1) hunter_default_version(sleef VERSION 3.3.1-p1) hunter_default_version(sm VERSION 1.2.3) +hunter_default_version(smol-v VERSION 0.0.0-4b52c16-p0) hunter_default_version(soil VERSION 1.0.4) hunter_default_version(sources_for_android_sdk_packer VERSION 1.0.0) hunter_default_version(sparsehash VERSION 2.0.2) @@ -487,10 +505,10 @@ if(MSVC_VERSION LESS 1800) # for VS12 - version without support C++11 hunter_default_version(spdlog VERSION 1.0.0-p0) else() - hunter_default_version(spdlog VERSION 1.4.2-p0) + hunter_default_version(spdlog VERSION 1.8.0-p1) endif() -hunter_default_version(spirv-cross VERSION 20190906) +hunter_default_version(spirv-cross VERSION 20200917) hunter_default_version(sqlite3 VERSION 3.30.1-p0) hunter_default_version(sse2neon VERSION 1.0.0-p0) hunter_default_version(stanhull VERSION 0.0.1) @@ -503,13 +521,17 @@ hunter_default_version(szip VERSION 2.1.0-p1) hunter_default_version(tacopie VERSION 3.2.0-h1) hunter_default_version(taocpp-json VERSION 1.0.0-beta.11-e0895587) hunter_default_version(tcl VERSION core8.6.8) -hunter_default_version(termcolor VERSION 1.0.0) +hunter_default_version(termcolor VERSION 1.0.1) hunter_default_version(tf VERSION 1.12.0-p0) hunter_default_version(tf2 VERSION 0.6.5-p0) +hunter_default_version(theora VERSION 1.1.1-p0) hunter_default_version(thread-pool-cpp VERSION 1.1.0) hunter_default_version(thrift VERSION 0.12.0-p0) hunter_default_version(tiny-process-library VERSION 2.0.2-p0) hunter_default_version(tinydir VERSION 1.2-p0) +hunter_default_version(tinyexr VERSION 1.0.0-297e645-p1) +hunter_default_version(tinygltf VERSION 2.5.0-p0) +hunter_default_version(tinyobjloader VERSION 2.0.0-rc6-bec38e3) hunter_default_version(tinyrefl VERSION 0.4.1-p0) hunter_default_version(tinyxml2 VERSION 6.2.0-p1) hunter_default_version(tmxparser VERSION 2.1.0-ab4125b-p1) @@ -517,10 +539,11 @@ hunter_default_version(toluapp VERSION 1.0.93-p1) hunter_default_version(tomcrypt VERSION 1.18.2-p1) hunter_default_version(tommath VERSION 1.0.1-p0) hunter_default_version(tsl_hat_trie VERSION 1.0.0) +hunter_default_version(tsl_robin_map VERSION 0.6.3-dc2023b) hunter_default_version(tvm VERSION 0.5-a4bc50e-p0) hunter_default_version(type_safe VERSION 0.2.1-p2) hunter_default_version(units VERSION 2.3.1) -hunter_default_version(utf8 VERSION 2.3.4-p1) +hunter_default_version(utf8 VERSION 3.1.1) hunter_default_version(util_linux VERSION 2.30.1) hunter_default_version(uuid VERSION 1.0.3) hunter_default_version(v8 VERSION 7.4.98-p3) @@ -532,6 +555,7 @@ hunter_default_version(wxWidgets VERSION 3.0.2) hunter_default_version(wyrm VERSION 0.1.0) hunter_default_version(x11 VERSION 1.6.7) hunter_default_version(x264 VERSION snapshot-20190513-2245) +hunter_default_version(xatlas VERSION 0.0.0-4077f0e-p0) hunter_default_version(xau VERSION 1.0.9) hunter_default_version(xcb VERSION 1.13) hunter_default_version(xcb-proto VERSION 1.13) @@ -553,10 +577,11 @@ hunter_default_version(xshmfence VERSION 1.3) hunter_default_version(xtrans VERSION 1.4.0) hunter_default_version(xxf86vm VERSION 1.1.2) hunter_default_version(xxhash VERSION 0.6.5-p0) -hunter_default_version(yaml-cpp VERSION 0.6.2-0f9a586-p1) +hunter_default_version(yaml-cpp VERSION 0.6.3) hunter_default_version(zip VERSION 0.1.15) +hunter_default_version(zlog VERSION 1.2.14) hunter_default_version(zookeeper VERSION 3.4.9-p2) -hunter_default_version(zstd VERSION 1.4.5-d73e2fb-p0) +hunter_default_version(zstd VERSION 1.4.5) if(ANDROID) string(COMPARE EQUAL "${CMAKE_SYSTEM_VERSION}" "" _is_empty) diff --git a/cmake/modules/hunter_finalize.cmake b/cmake/modules/hunter_finalize.cmake index 766d5bfaa5..d0dfe22cce 100644 --- a/cmake/modules/hunter_finalize.cmake +++ b/cmake/modules/hunter_finalize.cmake @@ -22,7 +22,7 @@ macro(hunter_finalize) string(COMPARE EQUAL "${HUNTER_CACHE_SERVERS}" "" _is_empty) if(_is_empty) hunter_status_debug("Using default cache server") - set(HUNTER_CACHE_SERVERS "https://github.com/ingenue/hunter-cache") + set(HUNTER_CACHE_SERVERS "https://github.com/cpp-pm/hunter-cache") endif() hunter_status_debug("List of cache servers:") diff --git a/cmake/modules/hunter_get_boost_libs.cmake b/cmake/modules/hunter_get_boost_libs.cmake index 716583e4af..821c8eddf0 100644 --- a/cmake/modules/hunter_get_boost_libs.cmake +++ b/cmake/modules/hunter_get_boost_libs.cmake @@ -70,6 +70,7 @@ function(hunter_get_boost_libs) hunter_append_component(${common_args} COMPONENT math SINCE 1.23.0) hunter_append_component(${common_args} COMPONENT metaparse SINCE 1.61.0 UNTIL 1.66.0) hunter_append_component(${common_args} COMPONENT mpi SINCE 1.35.0) + hunter_append_component(${common_args} COMPONENT nowide SINCE 1.74.0) hunter_append_component(${common_args} COMPONENT program_options SINCE 1.32.0) hunter_append_component(${common_args} COMPONENT python SINCE 1.19.0) hunter_append_component(${common_args} COMPONENT random SINCE 1.15.0) @@ -78,7 +79,7 @@ function(hunter_get_boost_libs) hunter_append_component(${common_args} COMPONENT signals SINCE 1.29.0 UNTIL 1.69.0) hunter_append_component(${common_args} COMPONENT stacktrace SINCE 1.65.0) hunter_append_component(${common_args} COMPONENT system SINCE 1.35.0) - hunter_append_component(${common_args} COMPONENT test SINCE 1.21.0) + hunter_append_component(${common_args} COMPONENT test SINCE 1.21.0 UNTIL 1.74.0) hunter_append_component(${common_args} COMPONENT thread SINCE 1.25.0) hunter_append_component(${common_args} COMPONENT timer SINCE 1.9.0) hunter_append_component(${common_args} COMPONENT type_erasure SINCE 1.60.0) diff --git a/cmake/modules/hunter_setup_msvc.cmake b/cmake/modules/hunter_setup_msvc.cmake index 78b498e7a9..55e8781b0b 100644 --- a/cmake/modules/hunter_setup_msvc.cmake +++ b/cmake/modules/hunter_setup_msvc.cmake @@ -17,14 +17,32 @@ include(hunter_status_debug) # Command Prompt. See section "Vcvarsall.bat argument": # - http://msdn.microsoft.com/en-us/library/x4d2c09s.aspx # - http://msdn.microsoft.com/library/x4d2c09s%28v=vs.110%29.aspx +# First part it host toolset, second is target platform, if they are +# the same it is condensed to one part. Chosen based on cmake default +# behaviour. See cmake docs: +# - https://cmake.org/cmake/help/latest/generator/Visual%20Studio%2015%202017.html#toolset-selection +# - https://cmake.org/cmake/help/latest/generator/Visual%20Studio%2016%202019.html#toolset-selection # CMake generator -> HUNTER_MSVC_ARCH example: -# Visual Studio 12 2013 -> x86 -# Visual Studio 12 2013 Win64 -> amd64 -# Visual Studio 12 2013 ARM -> x86_arm +# -G "Visual Studio 12 2013" -> x86 +# -G "Visual Studio 16 2019" -> x86/x64 depending on host platform +# -G "Visual Studio 12 2013" -A x64 -> x86_amd64 +# -G "Visual Studio 12 2013" -A x64 -T "host=x64" -> amd64 +# -G "Visual Studio 15 2017" -A ARM64 -> x86_arm64 +# -G "Visual Studio 15 2017" -A ARM64 -T "host=x64" -> amd64_arm64 +# Note: These last ones are a deprecated style from cmake < v3.1 +# -G "Visual Studio 12 2013 Win64" -> x86_amd64 +# -G "Visual Studio 12 2013 ARM" -> x86_arm # CMake's MSVC_CXX_ARCHITECTURE_ID: # X86 -> x86 -# x64 -> amd64 +# x64 -> x86_amd64 +# x64 (with x64 toolset selected) -> amd64 # ARMV7 -> x86_arm +# ARM64 -> x86_arm64 +# * HUNTER_MSVC_ARCH_HOST - architecture specifier for running on host +# Used for building tools which are needed for building, e.g. Boost's +# b2 build tool. +# * HUNTER_MSVC_ARCH_TARGET - architecture specifier for target. Cannot +# be used directly, but can be useful for querying target architecture. # * HUNTER_MSVC_VCVARSALL - full path to the 'vcvarsall.bat' script # This function should work with all generators that provide MSVC compiler: @@ -90,20 +108,46 @@ macro(hunter_setup_msvc) string(COMPARE EQUAL "${_architecture_id}" "X86" _is_x86) string(COMPARE EQUAL "${_architecture_id}" "x64" _is_x64) string(COMPARE EQUAL "${_architecture_id}" "ARMV7" _is_arm) + string(COMPARE EQUAL "${_architecture_id}" "ARM64" _is_arm64) if(_is_x86) - set(HUNTER_MSVC_ARCH "x86") + set(HUNTER_MSVC_ARCH_TARGET "x86") elseif(_is_x64) - set(HUNTER_MSVC_ARCH "amd64") + set(HUNTER_MSVC_ARCH_TARGET "amd64") elseif(_is_arm) - set(HUNTER_MSVC_ARCH "x86_arm") + set(HUNTER_MSVC_ARCH_TARGET "arm") + elseif(_is_arm64) + set(HUNTER_MSVC_ARCH_TARGET "arm64") else() hunter_internal_error( "Unexpected MSVC_*_ARCHITECTURE_ID: '${_architecture_id}'" ) endif() + # These strings do not match the MSVC_*_ARCHITECTURE_ID ones (empty string indicates original x86 default) + string(COMPARE EQUAL "${CMAKE_VS_PLATFORM_TOOLSET_HOST_ARCHITECTURE}" "" _host_is_default_x86) + string(COMPARE EQUAL "${CMAKE_VS_PLATFORM_TOOLSET_HOST_ARCHITECTURE}" "x86" _host_is_x86) + string(COMPARE EQUAL "${CMAKE_VS_PLATFORM_TOOLSET_HOST_ARCHITECTURE}" "x64" _host_is_x64) + + if(_host_is_x86 OR _host_is_default_x86) + set(HUNTER_MSVC_ARCH_HOST "x86") + elseif(_host_is_x64) + set(HUNTER_MSVC_ARCH_HOST "amd64") + else() + hunter_internal_error( + "Unexpected CMAKE_VS_PLATFORM_TOOLSET_HOST_ARCHITECTURE: '${CMAKE_VS_PLATFORM_TOOLSET_HOST_ARCHITECTURE}'" + ) + endif() + + if(HUNTER_MSVC_ARCH_HOST STREQUAL HUNTER_MSVC_ARCH_TARGET) + set(HUNTER_MSVC_ARCH "${HUNTER_MSVC_ARCH_HOST}") + else() + set(HUNTER_MSVC_ARCH "${HUNTER_MSVC_ARCH_HOST}_${HUNTER_MSVC_ARCH_TARGET}") + endif() + hunter_status_debug("HUNTER_MSVC_ARCH: ${HUNTER_MSVC_ARCH}") + hunter_status_debug("HUNTER_MSVC_ARCH_HOST: ${HUNTER_MSVC_ARCH_HOST}") + hunter_status_debug("HUNTER_MSVC_ARCH_TARGET: ${HUNTER_MSVC_ARCH_TARGET}") set(_hunter_vcvarsall_env "${HUNTER_MSVC_VERSION}0") set(_hunter_vcvarsall_env "VS${_hunter_vcvarsall_env}COMNTOOLS") diff --git a/cmake/projects/Assimp/hunter.cmake b/cmake/projects/Assimp/hunter.cmake index b6e894f9d0..adf1baffed 100644 --- a/cmake/projects/Assimp/hunter.cmake +++ b/cmake/projects/Assimp/hunter.cmake @@ -53,15 +53,39 @@ hunter_add_version( eb8cf84437f6cd4e8efbda5839655e1e1c347c27 ) +hunter_add_version( + PACKAGE_NAME + Assimp + VERSION + 5.0.1-575ce61 + URL + "https://github.com/assimp/assimp/archive/575ce6136d4941a45c6ba894947d0e79fe032aff.tar.gz" + SHA1 + 1c25da96497aede9070c2db4479c22e9dae8567f +) + +hunter_add_version( + PACKAGE_NAME + Assimp + VERSION + 5.0.1-dbd99bf + URL + "https://github.com/assimp/assimp/archive/dbd99bf700f140090e9fc495ff1175d0e619323a.tar.gz" + SHA1 + 7181e77744e8b495b5caf08f72a990797207745c +) + hunter_cmake_args( Assimp CMAKE_ARGS + BUILD_SHARED_LIBS=OFF ASSIMP_BUILD_ASSIMP_TOOLS=OFF ASSIMP_BUILD_SAMPLES=OFF ASSIMP_BUILD_TESTS=OFF ASSIMP_ENABLE_BOOST_WORKAROUND=OFF ASSIMP_INSTALL_PDB=OFF - IGNORE_GIT_HASH=ON + ASSIMP_IGNORE_GIT_HASH=ON + ASSIMP_HUNTER_ENABLED=ON ) hunter_pick_scheme(DEFAULT url_sha1_cmake) diff --git a/cmake/projects/Boost/ci/matrix.json b/cmake/projects/Boost/ci/matrix.json new file mode 100644 index 0000000000..f8d02eb70f --- /dev/null +++ b/cmake/projects/Boost/ci/matrix.json @@ -0,0 +1,269 @@ +[ +{ "example": "Boost", "toolchain": "clang-cxx17", "os": "ubuntu-16.04", "python": "3.8", "script": "build.sh" }, +{ "example": "Boost", "toolchain": "gcc-7-cxx17", "os": "ubuntu-16.04", "python": "3.8", "script": "build.sh" }, +{ "example": "Boost", "toolchain": "gcc-8-cxx17-fpic", "os": "ubuntu-18.04", "python": "3.8", "script": "build.sh" }, +{ "example": "Boost", "toolchain": "gcc-9-cxx17-fpic", "os": "ubuntu-20.04", "python": "3.8", "script": "build.sh" }, +{ "example": "Boost", "toolchain": "android-ndk-r17-api-24-arm64-v8a-clang-libcxx14", "os": "ubuntu-16.04", "python": "3.8", "script": "build.sh" }, +{ "example": "Boost", "toolchain": "analyze-cxx17", "os": "ubuntu-16.04", "python": "3.8", "script": "build.sh" }, +{ "example": "Boost", "toolchain": "sanitize-address-cxx17", "os": "ubuntu-16.04", "python": "3.8", "script": "build.sh" }, +{ "example": "Boost", "toolchain": "sanitize-leak-cxx17", "os": "ubuntu-16.04", "python": "3.8", "script": "build.sh" }, +{ "example": "Boost", "toolchain": "sanitize-thread-cxx17", "os": "ubuntu-16.04", "python": "3.8", "script": "build.sh" }, +{ "example": "Boost", "toolchain": "osx-10-13-make-cxx14", "os": "macos-10.15", "python": "3.8", "script": "build.sh" }, +{ "example": "Boost", "toolchain": "osx-10-13-cxx14", "os": "macos-10.15", "python": "3.8", "script": "build.sh" }, +{ "example": "Boost", "toolchain": "osx-10-15-dep-10-10-cxx17", "os": "macos-10.15", "python": "3.8", "script": "build.sh" }, +{ "example": "Boost", "toolchain": "ios-nocodesign-13-2-dep-9-3", "os": "macos-10.15", "python": "3.8", "script": "build.sh" }, +{ "example": "Boost", "toolchain": "ninja-vs-15-2017-win64-cxx17", "os": "windows-2016", "python": "3.8", "script": "build.cmd" }, +{ "example": "Boost", "toolchain": "nmake-vs-15-2017-win64-cxx17", "os": "windows-2016", "python": "3.8", "script": "build.cmd" }, +{ "example": "Boost", "toolchain": "vs-16-2019-win64-cxx17", "os": "windows-2019", "python": "3.8", "script": "build.cmd" }, +{ "example": "Boost", "toolchain": "vs-15-2017-win64-cxx17", "os": "windows-2016", "python": "3.8", "script": "build.cmd" }, +{ "example": "Boost", "toolchain": "vs-14-2015-sdk-8-1", "os": "windows-2016", "python": "3.8", "script": "build.cmd" }, +{ "example": "Boost", "toolchain": "mingw-cxx17", "os": "windows-2016", "python": "3.8", "script": "build.cmd" }, +{ "example": "Boost", "toolchain": "msys-cxx17", "os": "windows-2016", "python": "3.8", "script": "build.cmd" }, + +{ "example": "Boost-useBoostConfig", "toolchain": "clang-cxx17", "os": "ubuntu-16.04", "python": "3.8", "script": "build.sh" }, +{ "example": "Boost-useBoostConfig", "toolchain": "gcc-7-cxx17", "os": "ubuntu-16.04", "python": "3.8", "script": "build.sh" }, +{ "example": "Boost-useBoostConfig", "toolchain": "gcc-8-cxx17-fpic", "os": "ubuntu-18.04", "python": "3.8", "script": "build.sh" }, +{ "example": "Boost-useBoostConfig", "toolchain": "gcc-9-cxx17-fpic", "os": "ubuntu-20.04", "python": "3.8", "script": "build.sh" }, +{ "example": "Boost-useBoostConfig", "toolchain": "android-ndk-r17-api-24-arm64-v8a-clang-libcxx14", "os": "ubuntu-16.04", "python": "3.8", "script": "build.sh" }, +{ "example": "Boost-useBoostConfig", "toolchain": "analyze-cxx17", "os": "ubuntu-16.04", "python": "3.8", "script": "build.sh" }, +{ "example": "Boost-useBoostConfig", "toolchain": "sanitize-address-cxx17", "os": "ubuntu-16.04", "python": "3.8", "script": "build.sh" }, +{ "example": "Boost-useBoostConfig", "toolchain": "sanitize-leak-cxx17", "os": "ubuntu-16.04", "python": "3.8", "script": "build.sh" }, +{ "example": "Boost-useBoostConfig", "toolchain": "sanitize-thread-cxx17", "os": "ubuntu-16.04", "python": "3.8", "script": "build.sh" }, +{ "example": "Boost-useBoostConfig", "toolchain": "osx-10-13-make-cxx14", "os": "macos-10.15", "python": "3.8", "script": "build.sh" }, +{ "example": "Boost-useBoostConfig", "toolchain": "osx-10-13-cxx14", "os": "macos-10.15", "python": "3.8", "script": "build.sh" }, +{ "example": "Boost-useBoostConfig", "toolchain": "osx-10-15-dep-10-10-cxx17", "os": "macos-10.15", "python": "3.8", "script": "build.sh" }, +{ "example": "Boost-useBoostConfig", "toolchain": "ios-nocodesign-13-2-dep-9-3", "os": "macos-10.15", "python": "3.8", "script": "build.sh" }, +{ "example": "Boost-useBoostConfig", "toolchain": "ninja-vs-15-2017-win64-cxx17", "os": "windows-2016", "python": "3.8", "script": "build.cmd" }, +{ "example": "Boost-useBoostConfig", "toolchain": "nmake-vs-15-2017-win64-cxx17", "os": "windows-2016", "python": "3.8", "script": "build.cmd" }, +{ "example": "Boost-useBoostConfig", "toolchain": "vs-16-2019-win64-cxx17", "os": "windows-2019", "python": "3.8", "script": "build.cmd" }, +{ "example": "Boost-useBoostConfig", "toolchain": "vs-15-2017-win64-cxx17", "os": "windows-2016", "python": "3.8", "script": "build.cmd" }, +{ "example": "Boost-useBoostConfig", "toolchain": "vs-14-2015-sdk-8-1", "os": "windows-2016", "python": "3.8", "script": "build.cmd" }, +{ "example": "Boost-useBoostConfig", "toolchain": "mingw-cxx17", "os": "windows-2016", "python": "3.8", "script": "build.cmd" }, +{ "example": "Boost-useBoostConfig", "toolchain": "msys-cxx17", "os": "windows-2016", "python": "3.8", "script": "build.cmd" }, + +{ "example": "Boost-chrono-useBoostConfig", "toolchain": "clang-cxx17", "os": "ubuntu-16.04", "python": "3.8", "script": "build.sh" }, +{ "example": "Boost-chrono-useBoostConfig", "toolchain": "gcc-7-cxx17", "os": "ubuntu-16.04", "python": "3.8", "script": "build.sh" }, +{ "example": "Boost-chrono-useBoostConfig", "toolchain": "gcc-8-cxx17-fpic", "os": "ubuntu-18.04", "python": "3.8", "script": "build.sh" }, +{ "example": "Boost-chrono-useBoostConfig", "toolchain": "gcc-9-cxx17-fpic", "os": "ubuntu-20.04", "python": "3.8", "script": "build.sh" }, +{ "example": "Boost-chrono-useBoostConfig", "toolchain": "android-ndk-r17-api-24-arm64-v8a-clang-libcxx14", "os": "ubuntu-16.04", "python": "3.8", "script": "build.sh" }, +{ "example": "Boost-chrono-useBoostConfig", "toolchain": "osx-10-13-make-cxx14", "os": "macos-10.15", "python": "3.8", "script": "build.sh" }, +{ "example": "Boost-chrono-useBoostConfig", "toolchain": "osx-10-13-cxx14", "os": "macos-10.15", "python": "3.8", "script": "build.sh" }, +{ "example": "Boost-chrono-useBoostConfig", "toolchain": "osx-10-15-dep-10-10-cxx17", "os": "macos-10.15", "python": "3.8", "script": "build.sh" }, +{ "example": "Boost-chrono-useBoostConfig", "toolchain": "ios-nocodesign-13-2-dep-9-3", "os": "macos-10.15", "python": "3.8", "script": "build.sh" }, +{ "example": "Boost-chrono-useBoostConfig", "toolchain": "ninja-vs-15-2017-win64-cxx17", "os": "windows-2016", "python": "3.8", "script": "build.cmd" }, +{ "example": "Boost-chrono-useBoostConfig", "toolchain": "nmake-vs-15-2017-win64-cxx17", "os": "windows-2016", "python": "3.8", "script": "build.cmd" }, +{ "example": "Boost-chrono-useBoostConfig", "toolchain": "vs-16-2019-win64-cxx17", "os": "windows-2019", "python": "3.8", "script": "build.cmd" }, +{ "example": "Boost-chrono-useBoostConfig", "toolchain": "vs-15-2017-win64-cxx17", "os": "windows-2016", "python": "3.8", "script": "build.cmd" }, +{ "example": "Boost-chrono-useBoostConfig", "toolchain": "vs-14-2015-sdk-8-1", "os": "windows-2016", "python": "3.8", "script": "build.cmd" }, +{ "example": "Boost-chrono-useBoostConfig", "toolchain": "mingw-cxx17", "os": "windows-2016", "python": "3.8", "script": "build.cmd" }, +{ "example": "Boost-chrono-useBoostConfig", "toolchain": "msys-cxx17", "os": "windows-2016", "python": "3.8", "script": "build.cmd" }, + +{ "example": "Boost-container", "toolchain": "clang-cxx17", "os": "ubuntu-16.04", "python": "3.8", "script": "build.sh" }, +{ "example": "Boost-container", "toolchain": "gcc-7-cxx17", "os": "ubuntu-16.04", "python": "3.8", "script": "build.sh" }, +{ "example": "Boost-container", "toolchain": "gcc-8-cxx17-fpic", "os": "ubuntu-18.04", "python": "3.8", "script": "build.sh" }, +{ "example": "Boost-container", "toolchain": "gcc-9-cxx17-fpic", "os": "ubuntu-20.04", "python": "3.8", "script": "build.sh" }, +{ "example": "Boost-container", "toolchain": "android-ndk-r17-api-24-arm64-v8a-clang-libcxx14", "os": "ubuntu-16.04", "python": "3.8", "script": "build.sh" }, +{ "example": "Boost-container", "toolchain": "osx-10-13-make-cxx14", "os": "macos-10.15", "python": "3.8", "script": "build.sh" }, +{ "example": "Boost-container", "toolchain": "osx-10-13-cxx14", "os": "macos-10.15", "python": "3.8", "script": "build.sh" }, +{ "example": "Boost-container", "toolchain": "osx-10-15-dep-10-10-cxx17", "os": "macos-10.15", "python": "3.8", "script": "build.sh" }, +{ "example": "Boost-container", "toolchain": "ios-nocodesign-13-2-dep-9-3", "os": "macos-10.15", "python": "3.8", "script": "build.sh" }, +{ "example": "Boost-container", "toolchain": "ninja-vs-15-2017-win64-cxx17", "os": "windows-2016", "python": "3.8", "script": "build.cmd" }, +{ "example": "Boost-container", "toolchain": "nmake-vs-15-2017-win64-cxx17", "os": "windows-2016", "python": "3.8", "script": "build.cmd" }, +{ "example": "Boost-container", "toolchain": "vs-16-2019-win64-cxx17", "os": "windows-2019", "python": "3.8", "script": "build.cmd" }, +{ "example": "Boost-container", "toolchain": "vs-15-2017-win64-cxx17", "os": "windows-2016", "python": "3.8", "script": "build.cmd" }, +{ "example": "Boost-container", "toolchain": "vs-14-2015-sdk-8-1", "os": "windows-2016", "python": "3.8", "script": "build.cmd" }, +{ "example": "Boost-container", "toolchain": "mingw-cxx17", "os": "windows-2016", "python": "3.8", "script": "build.cmd" }, +{ "example": "Boost-container", "toolchain": "msys-cxx17", "os": "windows-2016", "python": "3.8", "script": "build.cmd" }, + +{ "example": "Boost-contract", "toolchain": "clang-cxx17", "os": "ubuntu-16.04", "python": "3.8", "script": "build.sh" }, +{ "example": "Boost-contract", "toolchain": "gcc-7-cxx17", "os": "ubuntu-16.04", "python": "3.8", "script": "build.sh" }, +{ "example": "Boost-contract", "toolchain": "gcc-8-cxx17-fpic", "os": "ubuntu-18.04", "python": "3.8", "script": "build.sh" }, +{ "example": "Boost-contract", "toolchain": "gcc-9-cxx17-fpic", "os": "ubuntu-20.04", "python": "3.8", "script": "build.sh" }, +{ "example": "Boost-contract", "toolchain": "android-ndk-r17-api-24-arm64-v8a-clang-libcxx14", "os": "ubuntu-16.04", "python": "3.8", "script": "build.sh" }, +{ "example": "Boost-contract", "toolchain": "osx-10-13-make-cxx14", "os": "macos-10.15", "python": "3.8", "script": "build.sh" }, +{ "example": "Boost-contract", "toolchain": "osx-10-13-cxx14", "os": "macos-10.15", "python": "3.8", "script": "build.sh" }, +{ "example": "Boost-contract", "toolchain": "osx-10-15-dep-10-10-cxx17", "os": "macos-10.15", "python": "3.8", "script": "build.sh" }, +{ "example": "Boost-contract", "toolchain": "ios-nocodesign-13-2-dep-9-3", "os": "macos-10.15", "python": "3.8", "script": "build.sh" }, +{ "example": "Boost-contract", "toolchain": "ninja-vs-15-2017-win64-cxx17", "os": "windows-2016", "python": "3.8", "script": "build.cmd" }, +{ "example": "Boost-contract", "toolchain": "nmake-vs-15-2017-win64-cxx17", "os": "windows-2016", "python": "3.8", "script": "build.cmd" }, +{ "example": "Boost-contract", "toolchain": "vs-16-2019-win64-cxx17", "os": "windows-2019", "python": "3.8", "script": "build.cmd" }, +{ "example": "Boost-contract", "toolchain": "vs-15-2017-win64-cxx17", "os": "windows-2016", "python": "3.8", "script": "build.cmd" }, +{ "example": "Boost-contract", "toolchain": "vs-14-2015-sdk-8-1", "os": "windows-2016", "python": "3.8", "script": "build.cmd" }, +{ "example": "Boost-contract", "toolchain": "mingw-cxx17", "os": "windows-2016", "python": "3.8", "script": "build.cmd" }, +{ "example": "Boost-contract", "toolchain": "msys-cxx17", "os": "windows-2016", "python": "3.8", "script": "build.cmd" }, + +{ "example": "Boost-fiber", "toolchain": "clang-cxx17", "os": "ubuntu-16.04", "python": "3.8", "script": "build.sh" }, +{ "example": "Boost-fiber", "toolchain": "gcc-7-cxx17", "os": "ubuntu-16.04", "python": "3.8", "script": "build.sh" }, +{ "example": "Boost-fiber", "toolchain": "gcc-8-cxx17-fpic", "os": "ubuntu-18.04", "python": "3.8", "script": "build.sh" }, +{ "example": "Boost-fiber", "toolchain": "gcc-9-cxx17-fpic", "os": "ubuntu-20.04", "python": "3.8", "script": "build.sh" }, +{ "example": "Boost-fiber", "toolchain": "android-ndk-r17-api-24-arm64-v8a-clang-libcxx14", "os": "ubuntu-16.04", "python": "3.8", "script": "build.sh" }, +{ "example": "Boost-fiber", "toolchain": "osx-10-13-make-cxx14", "os": "macos-10.15", "python": "3.8", "script": "build.sh" }, +{ "example": "Boost-fiber", "toolchain": "osx-10-13-cxx14", "os": "macos-10.15", "python": "3.8", "script": "build.sh" }, +{ "example": "Boost-fiber", "toolchain": "osx-10-15-dep-10-10-cxx17", "os": "macos-10.15", "python": "3.8", "script": "build.sh" }, +{ "example": "Boost-fiber", "toolchain": "ios-nocodesign-13-2-dep-9-3", "os": "macos-10.15", "python": "3.8", "script": "build.sh" }, +{ "example": "Boost-fiber", "toolchain": "ninja-vs-15-2017-win64-cxx17", "os": "windows-2016", "python": "3.8", "script": "build.cmd" }, +{ "example": "Boost-fiber", "toolchain": "nmake-vs-15-2017-win64-cxx17", "os": "windows-2016", "python": "3.8", "script": "build.cmd" }, +{ "example": "Boost-fiber", "toolchain": "vs-16-2019-win64-cxx17", "os": "windows-2019", "python": "3.8", "script": "build.cmd" }, +{ "example": "Boost-fiber", "toolchain": "vs-15-2017-win64-cxx17", "os": "windows-2016", "python": "3.8", "script": "build.cmd" }, +{ "example": "Boost-fiber", "toolchain": "vs-14-2015-sdk-8-1", "os": "windows-2016", "python": "3.8", "script": "build.cmd" }, +{ "example": "Boost-fiber", "toolchain": "mingw-cxx17", "os": "windows-2016", "python": "3.8", "script": "build.cmd" }, +{ "example": "Boost-fiber", "toolchain": "msys-cxx17", "os": "windows-2016", "python": "3.8", "script": "build.cmd" }, + +{ "example": "Boost-filesystem-useBoostConfig", "toolchain": "clang-cxx17", "os": "ubuntu-16.04", "python": "3.8", "script": "build.sh" }, +{ "example": "Boost-filesystem-useBoostConfig", "toolchain": "gcc-7-cxx17", "os": "ubuntu-16.04", "python": "3.8", "script": "build.sh" }, +{ "example": "Boost-filesystem-useBoostConfig", "toolchain": "gcc-8-cxx17-fpic", "os": "ubuntu-18.04", "python": "3.8", "script": "build.sh" }, +{ "example": "Boost-filesystem-useBoostConfig", "toolchain": "gcc-9-cxx17-fpic", "os": "ubuntu-20.04", "python": "3.8", "script": "build.sh" }, +{ "example": "Boost-filesystem-useBoostConfig", "toolchain": "android-ndk-r17-api-24-arm64-v8a-clang-libcxx14", "os": "ubuntu-16.04", "python": "3.8", "script": "build.sh" }, +{ "example": "Boost-filesystem-useBoostConfig", "toolchain": "osx-10-13-make-cxx14", "os": "macos-10.15", "python": "3.8", "script": "build.sh" }, +{ "example": "Boost-filesystem-useBoostConfig", "toolchain": "osx-10-13-cxx14", "os": "macos-10.15", "python": "3.8", "script": "build.sh" }, +{ "example": "Boost-filesystem-useBoostConfig", "toolchain": "osx-10-15-dep-10-10-cxx17", "os": "macos-10.15", "python": "3.8", "script": "build.sh" }, +{ "example": "Boost-filesystem-useBoostConfig", "toolchain": "ios-nocodesign-13-2-dep-9-3", "os": "macos-10.15", "python": "3.8", "script": "build.sh" }, +{ "example": "Boost-filesystem-useBoostConfig", "toolchain": "ninja-vs-15-2017-win64-cxx17", "os": "windows-2016", "python": "3.8", "script": "build.cmd" }, +{ "example": "Boost-filesystem-useBoostConfig", "toolchain": "nmake-vs-15-2017-win64-cxx17", "os": "windows-2016", "python": "3.8", "script": "build.cmd" }, +{ "example": "Boost-filesystem-useBoostConfig", "toolchain": "vs-16-2019-win64-cxx17", "os": "windows-2019", "python": "3.8", "script": "build.cmd" }, +{ "example": "Boost-filesystem-useBoostConfig", "toolchain": "vs-15-2017-win64-cxx17", "os": "windows-2016", "python": "3.8", "script": "build.cmd" }, +{ "example": "Boost-filesystem-useBoostConfig", "toolchain": "vs-14-2015-sdk-8-1", "os": "windows-2016", "python": "3.8", "script": "build.cmd" }, +{ "example": "Boost-filesystem-useBoostConfig", "toolchain": "mingw-cxx17", "os": "windows-2016", "python": "3.8", "script": "build.cmd" }, +{ "example": "Boost-filesystem-useBoostConfig", "toolchain": "msys-cxx17", "os": "windows-2016", "python": "3.8", "script": "build.cmd" }, + +{ "example": "Boost-log-useBoostConfig", "toolchain": "clang-cxx17", "os": "ubuntu-16.04", "python": "3.8", "script": "build.sh" }, +{ "example": "Boost-log-useBoostConfig", "toolchain": "gcc-7-cxx17", "os": "ubuntu-16.04", "python": "3.8", "script": "build.sh" }, +{ "example": "Boost-log-useBoostConfig", "toolchain": "gcc-8-cxx17-fpic", "os": "ubuntu-18.04", "python": "3.8", "script": "build.sh" }, +{ "example": "Boost-log-useBoostConfig", "toolchain": "gcc-9-cxx17-fpic", "os": "ubuntu-20.04", "python": "3.8", "script": "build.sh" }, +{ "example": "Boost-log-useBoostConfig", "toolchain": "android-ndk-r17-api-24-arm64-v8a-clang-libcxx14", "os": "ubuntu-16.04", "python": "3.8", "script": "build.sh" }, +{ "example": "Boost-log-useBoostConfig", "toolchain": "analyze-cxx17", "os": "ubuntu-16.04", "python": "3.8", "script": "build.sh" }, +{ "example": "Boost-log-useBoostConfig", "toolchain": "sanitize-address-cxx17", "os": "ubuntu-16.04", "python": "3.8", "script": "build.sh" }, +{ "example": "Boost-log-useBoostConfig", "toolchain": "sanitize-leak-cxx17", "os": "ubuntu-16.04", "python": "3.8", "script": "build.sh" }, +{ "example": "Boost-log-useBoostConfig", "toolchain": "sanitize-thread-cxx17", "os": "ubuntu-16.04", "python": "3.8", "script": "build.sh" }, +{ "example": "Boost-log-useBoostConfig", "toolchain": "osx-10-13-make-cxx14", "os": "macos-10.15", "python": "3.8", "script": "build.sh" }, +{ "example": "Boost-log-useBoostConfig", "toolchain": "osx-10-13-cxx14", "os": "macos-10.15", "python": "3.8", "script": "build.sh" }, +{ "example": "Boost-log-useBoostConfig", "toolchain": "osx-10-15-dep-10-10-cxx17", "os": "macos-10.15", "python": "3.8", "script": "build.sh" }, +{ "example": "Boost-log-useBoostConfig", "toolchain": "ios-nocodesign-13-2-dep-9-3", "os": "macos-10.15", "python": "3.8", "script": "build.sh" }, +{ "example": "Boost-log-useBoostConfig", "toolchain": "ninja-vs-15-2017-win64-cxx17", "os": "windows-2016", "python": "3.8", "script": "build.cmd" }, +{ "example": "Boost-log-useBoostConfig", "toolchain": "nmake-vs-15-2017-win64-cxx17", "os": "windows-2016", "python": "3.8", "script": "build.cmd" }, +{ "example": "Boost-log-useBoostConfig", "toolchain": "vs-16-2019-win64-cxx17", "os": "windows-2019", "python": "3.8", "script": "build.cmd" }, +{ "example": "Boost-log-useBoostConfig", "toolchain": "vs-15-2017-win64-cxx17", "os": "windows-2016", "python": "3.8", "script": "build.cmd" }, +{ "example": "Boost-log-useBoostConfig", "toolchain": "vs-14-2015-sdk-8-1", "os": "windows-2016", "python": "3.8", "script": "build.cmd" }, +{ "example": "Boost-log-useBoostConfig", "toolchain": "mingw-cxx17", "os": "windows-2016", "python": "3.8", "script": "build.cmd" }, +{ "example": "Boost-log-useBoostConfig", "toolchain": "msys-cxx17", "os": "windows-2016", "python": "3.8", "script": "build.cmd" }, + +{ "example": "Boost-math", "toolchain": "clang-cxx17", "os": "ubuntu-16.04", "python": "3.8", "script": "build.sh" }, +{ "example": "Boost-math", "toolchain": "gcc-7-cxx17", "os": "ubuntu-16.04", "python": "3.8", "script": "build.sh" }, +{ "example": "Boost-math", "toolchain": "gcc-8-cxx17-fpic", "os": "ubuntu-18.04", "python": "3.8", "script": "build.sh" }, +{ "example": "Boost-math", "toolchain": "gcc-9-cxx17-fpic", "os": "ubuntu-20.04", "python": "3.8", "script": "build.sh" }, +{ "example": "Boost-math", "toolchain": "android-ndk-r17-api-24-arm64-v8a-clang-libcxx14", "os": "ubuntu-16.04", "python": "3.8", "script": "build.sh" }, +{ "example": "Boost-math", "toolchain": "osx-10-13-make-cxx14", "os": "macos-10.15", "python": "3.8", "script": "build.sh" }, +{ "example": "Boost-math", "toolchain": "osx-10-13-cxx14", "os": "macos-10.15", "python": "3.8", "script": "build.sh" }, +{ "example": "Boost-math", "toolchain": "osx-10-15-dep-10-10-cxx17", "os": "macos-10.15", "python": "3.8", "script": "build.sh" }, +{ "example": "Boost-math", "toolchain": "ios-nocodesign-13-2-dep-9-3", "os": "macos-10.15", "python": "3.8", "script": "build.sh" }, +{ "example": "Boost-math", "toolchain": "ninja-vs-15-2017-win64-cxx17", "os": "windows-2016", "python": "3.8", "script": "build.cmd" }, +{ "example": "Boost-math", "toolchain": "nmake-vs-15-2017-win64-cxx17", "os": "windows-2016", "python": "3.8", "script": "build.cmd" }, +{ "example": "Boost-math", "toolchain": "vs-16-2019-win64-cxx17", "os": "windows-2019", "python": "3.8", "script": "build.cmd" }, +{ "example": "Boost-math", "toolchain": "vs-15-2017-win64-cxx17", "os": "windows-2016", "python": "3.8", "script": "build.cmd" }, +{ "example": "Boost-math", "toolchain": "vs-14-2015-sdk-8-1", "os": "windows-2016", "python": "3.8", "script": "build.cmd" }, +{ "example": "Boost-math", "toolchain": "mingw-cxx17", "os": "windows-2016", "python": "3.8", "script": "build.cmd" }, +{ "example": "Boost-math", "toolchain": "msys-cxx17", "os": "windows-2016", "python": "3.8", "script": "build.cmd" }, + +{ "example": "Boost-process", "toolchain": "clang-cxx17", "os": "ubuntu-16.04", "python": "3.8", "script": "build.sh" }, +{ "example": "Boost-process", "toolchain": "gcc-7-cxx17", "os": "ubuntu-16.04", "python": "3.8", "script": "build.sh" }, +{ "example": "Boost-process", "toolchain": "gcc-8-cxx17-fpic", "os": "ubuntu-18.04", "python": "3.8", "script": "build.sh" }, +{ "example": "Boost-process", "toolchain": "gcc-9-cxx17-fpic", "os": "ubuntu-20.04", "python": "3.8", "script": "build.sh" }, +{ "example": "Boost-process", "toolchain": "android-ndk-r17-api-24-arm64-v8a-clang-libcxx14", "os": "ubuntu-16.04", "python": "3.8", "script": "build.sh" }, +{ "example": "Boost-process", "toolchain": "osx-10-13-make-cxx14", "os": "macos-10.15", "python": "3.8", "script": "build.sh" }, +{ "example": "Boost-process", "toolchain": "osx-10-13-cxx14", "os": "macos-10.15", "python": "3.8", "script": "build.sh" }, +{ "example": "Boost-process", "toolchain": "osx-10-15-dep-10-10-cxx17", "os": "macos-10.15", "python": "3.8", "script": "build.sh" }, +{ "example": "Boost-process", "toolchain": "ios-nocodesign-13-2-dep-9-3", "os": "macos-10.15", "python": "3.8", "script": "build.sh" }, +{ "example": "Boost-process", "toolchain": "ninja-vs-15-2017-win64-cxx17", "os": "windows-2016", "python": "3.8", "script": "build.cmd" }, +{ "example": "Boost-process", "toolchain": "nmake-vs-15-2017-win64-cxx17", "os": "windows-2016", "python": "3.8", "script": "build.cmd" }, +{ "example": "Boost-process", "toolchain": "vs-16-2019-win64-cxx17", "os": "windows-2019", "python": "3.8", "script": "build.cmd" }, +{ "example": "Boost-process", "toolchain": "vs-15-2017-win64-cxx17", "os": "windows-2016", "python": "3.8", "script": "build.cmd" }, +{ "example": "Boost-process", "toolchain": "vs-14-2015-sdk-8-1", "os": "windows-2016", "python": "3.8", "script": "build.cmd" }, +{ "example": "Boost-process", "toolchain": "mingw-cxx17", "os": "windows-2016", "python": "3.8", "script": "build.cmd" }, +{ "example": "Boost-process", "toolchain": "msys-cxx17", "os": "windows-2016", "python": "3.8", "script": "build.cmd" }, + +{ "example": "Boost-program-options", "toolchain": "clang-cxx17", "os": "ubuntu-16.04", "python": "3.8", "script": "build.sh" }, +{ "example": "Boost-program-options", "toolchain": "gcc-7-cxx17", "os": "ubuntu-16.04", "python": "3.8", "script": "build.sh" }, +{ "example": "Boost-program-options", "toolchain": "gcc-8-cxx17-fpic", "os": "ubuntu-18.04", "python": "3.8", "script": "build.sh" }, +{ "example": "Boost-program-options", "toolchain": "gcc-9-cxx17-fpic", "os": "ubuntu-20.04", "python": "3.8", "script": "build.sh" }, +{ "example": "Boost-program-options", "toolchain": "android-ndk-r17-api-24-arm64-v8a-clang-libcxx14", "os": "ubuntu-16.04", "python": "3.8", "script": "build.sh" }, +{ "example": "Boost-program-options", "toolchain": "osx-10-13-make-cxx14", "os": "macos-10.15", "python": "3.8", "script": "build.sh" }, +{ "example": "Boost-program-options", "toolchain": "osx-10-13-cxx14", "os": "macos-10.15", "python": "3.8", "script": "build.sh" }, +{ "example": "Boost-program-options", "toolchain": "osx-10-15-dep-10-10-cxx17", "os": "macos-10.15", "python": "3.8", "script": "build.sh" }, +{ "example": "Boost-program-options", "toolchain": "ios-nocodesign-13-2-dep-9-3", "os": "macos-10.15", "python": "3.8", "script": "build.sh" }, +{ "example": "Boost-program-options", "toolchain": "ninja-vs-15-2017-win64-cxx17", "os": "windows-2016", "python": "3.8", "script": "build.cmd" }, +{ "example": "Boost-program-options", "toolchain": "nmake-vs-15-2017-win64-cxx17", "os": "windows-2016", "python": "3.8", "script": "build.cmd" }, +{ "example": "Boost-program-options", "toolchain": "vs-16-2019-win64-cxx17", "os": "windows-2019", "python": "3.8", "script": "build.cmd" }, +{ "example": "Boost-program-options", "toolchain": "vs-15-2017-win64-cxx17", "os": "windows-2016", "python": "3.8", "script": "build.cmd" }, +{ "example": "Boost-program-options", "toolchain": "vs-14-2015-sdk-8-1", "os": "windows-2016", "python": "3.8", "script": "build.cmd" }, +{ "example": "Boost-program-options", "toolchain": "mingw-cxx17", "os": "windows-2016", "python": "3.8", "script": "build.cmd" }, +{ "example": "Boost-program-options", "toolchain": "msys-cxx17", "os": "windows-2016", "python": "3.8", "script": "build.cmd" }, + +{ "example": "Boost-random", "toolchain": "clang-cxx17", "os": "ubuntu-16.04", "python": "3.8", "script": "build.sh" }, +{ "example": "Boost-random", "toolchain": "gcc-7-cxx17", "os": "ubuntu-16.04", "python": "3.8", "script": "build.sh" }, +{ "example": "Boost-random", "toolchain": "gcc-8-cxx17-fpic", "os": "ubuntu-18.04", "python": "3.8", "script": "build.sh" }, +{ "example": "Boost-random", "toolchain": "gcc-9-cxx17-fpic", "os": "ubuntu-20.04", "python": "3.8", "script": "build.sh" }, +{ "example": "Boost-random", "toolchain": "android-ndk-r17-api-24-arm64-v8a-clang-libcxx14", "os": "ubuntu-16.04", "python": "3.8", "script": "build.sh" }, +{ "example": "Boost-random", "toolchain": "osx-10-13-make-cxx14", "os": "macos-10.15", "python": "3.8", "script": "build.sh" }, +{ "example": "Boost-random", "toolchain": "osx-10-13-cxx14", "os": "macos-10.15", "python": "3.8", "script": "build.sh" }, +{ "example": "Boost-random", "toolchain": "osx-10-15-dep-10-10-cxx17", "os": "macos-10.15", "python": "3.8", "script": "build.sh" }, +{ "example": "Boost-random", "toolchain": "ios-nocodesign-13-2-dep-9-3", "os": "macos-10.15", "python": "3.8", "script": "build.sh" }, +{ "example": "Boost-random", "toolchain": "ninja-vs-15-2017-win64-cxx17", "os": "windows-2016", "python": "3.8", "script": "build.cmd" }, +{ "example": "Boost-random", "toolchain": "nmake-vs-15-2017-win64-cxx17", "os": "windows-2016", "python": "3.8", "script": "build.cmd" }, +{ "example": "Boost-random", "toolchain": "vs-16-2019-win64-cxx17", "os": "windows-2019", "python": "3.8", "script": "build.cmd" }, +{ "example": "Boost-random", "toolchain": "vs-15-2017-win64-cxx17", "os": "windows-2016", "python": "3.8", "script": "build.cmd" }, +{ "example": "Boost-random", "toolchain": "vs-14-2015-sdk-8-1", "os": "windows-2016", "python": "3.8", "script": "build.cmd" }, +{ "example": "Boost-random", "toolchain": "mingw-cxx17", "os": "windows-2016", "python": "3.8", "script": "build.cmd" }, +{ "example": "Boost-random", "toolchain": "msys-cxx17", "os": "windows-2016", "python": "3.8", "script": "build.cmd" }, + +{ "example": "Boost-serialization", "toolchain": "clang-cxx17", "os": "ubuntu-16.04", "python": "3.8", "script": "build.sh" }, +{ "example": "Boost-serialization", "toolchain": "gcc-7-cxx17", "os": "ubuntu-16.04", "python": "3.8", "script": "build.sh" }, +{ "example": "Boost-serialization", "toolchain": "gcc-8-cxx17-fpic", "os": "ubuntu-18.04", "python": "3.8", "script": "build.sh" }, +{ "example": "Boost-serialization", "toolchain": "gcc-9-cxx17-fpic", "os": "ubuntu-20.04", "python": "3.8", "script": "build.sh" }, +{ "example": "Boost-serialization", "toolchain": "android-ndk-r17-api-24-arm64-v8a-clang-libcxx14", "os": "ubuntu-16.04", "python": "3.8", "script": "build.sh" }, +{ "example": "Boost-serialization", "toolchain": "osx-10-13-make-cxx14", "os": "macos-10.15", "python": "3.8", "script": "build.sh" }, +{ "example": "Boost-serialization", "toolchain": "osx-10-13-cxx14", "os": "macos-10.15", "python": "3.8", "script": "build.sh" }, +{ "example": "Boost-serialization", "toolchain": "osx-10-15-dep-10-10-cxx17", "os": "macos-10.15", "python": "3.8", "script": "build.sh" }, +{ "example": "Boost-serialization", "toolchain": "ios-nocodesign-13-2-dep-9-3", "os": "macos-10.15", "python": "3.8", "script": "build.sh" }, +{ "example": "Boost-serialization", "toolchain": "ninja-vs-15-2017-win64-cxx17", "os": "windows-2016", "python": "3.8", "script": "build.cmd" }, +{ "example": "Boost-serialization", "toolchain": "nmake-vs-15-2017-win64-cxx17", "os": "windows-2016", "python": "3.8", "script": "build.cmd" }, +{ "example": "Boost-serialization", "toolchain": "vs-16-2019-win64-cxx17", "os": "windows-2019", "python": "3.8", "script": "build.cmd" }, +{ "example": "Boost-serialization", "toolchain": "vs-15-2017-win64-cxx17", "os": "windows-2016", "python": "3.8", "script": "build.cmd" }, +{ "example": "Boost-serialization", "toolchain": "vs-14-2015-sdk-8-1", "os": "windows-2016", "python": "3.8", "script": "build.cmd" }, +{ "example": "Boost-serialization", "toolchain": "mingw-cxx17", "os": "windows-2016", "python": "3.8", "script": "build.cmd" }, +{ "example": "Boost-serialization", "toolchain": "msys-cxx17", "os": "windows-2016", "python": "3.8", "script": "build.cmd" }, + +{ "example": "Boost-stacktrace", "toolchain": "clang-cxx17", "os": "ubuntu-16.04", "python": "3.8", "script": "build.sh" }, +{ "example": "Boost-stacktrace", "toolchain": "gcc-7-cxx17", "os": "ubuntu-16.04", "python": "3.8", "script": "build.sh" }, +{ "example": "Boost-stacktrace", "toolchain": "gcc-8-cxx17-fpic", "os": "ubuntu-18.04", "python": "3.8", "script": "build.sh" }, +{ "example": "Boost-stacktrace", "toolchain": "gcc-9-cxx17-fpic", "os": "ubuntu-20.04", "python": "3.8", "script": "build.sh" }, +{ "example": "Boost-stacktrace", "toolchain": "android-ndk-r17-api-24-arm64-v8a-clang-libcxx14", "os": "ubuntu-16.04", "python": "3.8", "script": "build.sh" }, +{ "example": "Boost-stacktrace", "toolchain": "osx-10-13-make-cxx14", "os": "macos-10.15", "python": "3.8", "script": "build.sh" }, +{ "example": "Boost-stacktrace", "toolchain": "osx-10-13-cxx14", "os": "macos-10.15", "python": "3.8", "script": "build.sh" }, +{ "example": "Boost-stacktrace", "toolchain": "osx-10-15-dep-10-10-cxx17", "os": "macos-10.15", "python": "3.8", "script": "build.sh" }, +{ "example": "Boost-stacktrace", "toolchain": "ios-nocodesign-13-2-dep-9-3", "os": "macos-10.15", "python": "3.8", "script": "build.sh" }, +{ "example": "Boost-stacktrace", "toolchain": "ninja-vs-15-2017-win64-cxx17", "os": "windows-2016", "python": "3.8", "script": "build.cmd" }, +{ "example": "Boost-stacktrace", "toolchain": "nmake-vs-15-2017-win64-cxx17", "os": "windows-2016", "python": "3.8", "script": "build.cmd" }, +{ "example": "Boost-stacktrace", "toolchain": "vs-16-2019-win64-cxx17", "os": "windows-2019", "python": "3.8", "script": "build.cmd" }, +{ "example": "Boost-stacktrace", "toolchain": "vs-15-2017-win64-cxx17", "os": "windows-2016", "python": "3.8", "script": "build.cmd" }, +{ "example": "Boost-stacktrace", "toolchain": "vs-14-2015-sdk-8-1", "os": "windows-2016", "python": "3.8", "script": "build.cmd" }, +{ "example": "Boost-stacktrace", "toolchain": "mingw-cxx17", "os": "windows-2016", "python": "3.8", "script": "build.cmd" }, +{ "example": "Boost-stacktrace", "toolchain": "msys-cxx17", "os": "windows-2016", "python": "3.8", "script": "build.cmd" }, + +{ "example": "Boost-thread", "toolchain": "clang-cxx17", "os": "ubuntu-16.04", "python": "3.8", "script": "build.sh" }, +{ "example": "Boost-thread", "toolchain": "gcc-7-cxx17", "os": "ubuntu-16.04", "python": "3.8", "script": "build.sh" }, +{ "example": "Boost-thread", "toolchain": "gcc-8-cxx17-fpic", "os": "ubuntu-18.04", "python": "3.8", "script": "build.sh" }, +{ "example": "Boost-thread", "toolchain": "gcc-9-cxx17-fpic", "os": "ubuntu-20.04", "python": "3.8", "script": "build.sh" }, +{ "example": "Boost-thread", "toolchain": "android-ndk-r17-api-24-arm64-v8a-clang-libcxx14", "os": "ubuntu-16.04", "python": "3.8", "script": "build.sh" }, +{ "example": "Boost-thread", "toolchain": "osx-10-13-make-cxx14", "os": "macos-10.15", "python": "3.8", "script": "build.sh" }, +{ "example": "Boost-thread", "toolchain": "osx-10-13-cxx14", "os": "macos-10.15", "python": "3.8", "script": "build.sh" }, +{ "example": "Boost-thread", "toolchain": "osx-10-15-dep-10-10-cxx17", "os": "macos-10.15", "python": "3.8", "script": "build.sh" }, +{ "example": "Boost-thread", "toolchain": "ios-nocodesign-13-2-dep-9-3", "os": "macos-10.15", "python": "3.8", "script": "build.sh" }, +{ "example": "Boost-thread", "toolchain": "ninja-vs-15-2017-win64-cxx17", "os": "windows-2016", "python": "3.8", "script": "build.cmd" }, +{ "example": "Boost-thread", "toolchain": "nmake-vs-15-2017-win64-cxx17", "os": "windows-2016", "python": "3.8", "script": "build.cmd" }, +{ "example": "Boost-thread", "toolchain": "vs-16-2019-win64-cxx17", "os": "windows-2019", "python": "3.8", "script": "build.cmd" }, +{ "example": "Boost-thread", "toolchain": "vs-15-2017-win64-cxx17", "os": "windows-2016", "python": "3.8", "script": "build.cmd" }, +{ "example": "Boost-thread", "toolchain": "vs-14-2015-sdk-8-1", "os": "windows-2016", "python": "3.8", "script": "build.cmd" }, +{ "example": "Boost-thread", "toolchain": "mingw-cxx17", "os": "windows-2016", "python": "3.8", "script": "build.cmd" }, +{ "example": "Boost-thread", "toolchain": "msys-cxx17", "os": "windows-2016", "python": "3.8", "script": "build.cmd" } + +] \ No newline at end of file diff --git a/cmake/projects/Boost/container/hunter.cmake b/cmake/projects/Boost/container/hunter.cmake new file mode 100644 index 0000000000..5af09f13bb --- /dev/null +++ b/cmake/projects/Boost/container/hunter.cmake @@ -0,0 +1,22 @@ +# Copyright (c) 2013, Ruslan Baratov +# All rights reserved. + +# !!! DO NOT PLACE HEADER GUARDS HERE !!! + +include(hunter_download) +include(hunter_pick_scheme) + +hunter_pick_scheme( + DEFAULT + url_sha1_boost_library + IPHONEOS + url_sha1_boost_ios_library +) + +hunter_download( + PACKAGE_NAME + Boost + PACKAGE_COMPONENT + container + PACKAGE_INTERNAL_DEPS_ID "48" +) diff --git a/cmake/projects/Boost/generate.sh b/cmake/projects/Boost/generate.sh index 7ed68e6b30..3d32a82486 100755 --- a/cmake/projects/Boost/generate.sh +++ b/cmake/projects/Boost/generate.sh @@ -7,6 +7,7 @@ BOOST_LIBS=" atomic chrono context + container coroutine contract date_time diff --git a/cmake/projects/Boost/hunter.cmake b/cmake/projects/Boost/hunter.cmake index 7791ad6458..92ddeeaf65 100644 --- a/cmake/projects/Boost/hunter.cmake +++ b/cmake/projects/Boost/hunter.cmake @@ -181,6 +181,27 @@ hunter_add_version( 04f570acbe0beb762e588ad3de292d0328a79c64 ) +hunter_add_version( + PACKAGE_NAME + Boost + VERSION + "1.74.0-p0" + URL + "https://github.com/cpp-pm/boost/archive/v1.74.0-p0.tar.gz" + SHA1 + c7ba15bb52950ac1b1912e0794ad77f66a343a17 +) + +hunter_add_version( + PACKAGE_NAME + Boost + VERSION + "1.75.0" + URL + "${_hunter_boost_base_url}/1.75.0/source/boost_1_75_0.tar.bz2" + SHA1 + 6109efd3bdd8b9220d7d85b5e125f7f28721b9a9 +) # up until 1.63 sourcefourge was used set(_hunter_boost_base_url "https://downloads.sourceforge.net/project/boost/boost/") hunter_add_version( @@ -441,25 +462,25 @@ hunter_pick_scheme(DEFAULT url_sha1_boost) hunter_cacheable(Boost) hunter_download(PACKAGE_NAME Boost PACKAGE_INTERNAL_DEPS_ID "48") - +# This settings Boost_USE_STATIC_LIBS and Boost_USE_STATIC_RUNTIME are needed to configure via find_package(Boost ....) for BoostConfig from boost if(NOT HUNTER_Boost_VERSION VERSION_LESS 1.72.0) hunter_get_cmake_args(PACKAGE Boost OUT boost_cmake_args) string(FIND "${boost_cmake_args}" "BUILD_SHARED_LIBS=ON" boost_shared) string(FIND "${boost_cmake_args}" "USE_CONFIG_FROM_BOOST=ON" use_boost_config) string(FIND "${boost_cmake_args}" "BOOST_BUILD_DYNAMIC_VSRUNTIME=NO" boost_static_runtime) if(use_boost_config GREATER -1) - if(boost_shared LESS 0) - option(Boost_USE_STATIC_LIBS "Use of the static libraries" ON) - else() - option(Boost_USE_STATIC_LIBS "Use of the static libraries" OFF) - endif() - - if(MSVC) - if(boost_static_runtime LESS 0) - option(Boost_USE_STATIC_RUNTIME "Use libraries linked statically to the C++ runtime" OFF) + if(boost_shared LESS 0) + option(Boost_USE_STATIC_LIBS "Use of the static libraries" ON) else() - option(Boost_USE_STATIC_RUNTIME "Use libraries linked statically to the C++ runtime" ON) + option(Boost_USE_STATIC_LIBS "Use of the static libraries" OFF) + endif() + + if(MSVC) + if(boost_static_runtime LESS 0) + option(Boost_USE_STATIC_RUNTIME "Use libraries linked statically to the C++ runtime" OFF) + else() + option(Boost_USE_STATIC_RUNTIME "Use libraries linked statically to the C++ runtime" ON) + endif() endif() - endif() endif() endif() diff --git a/cmake/projects/Boost/schemes/url_sha1_boost.cmake.in b/cmake/projects/Boost/schemes/url_sha1_boost.cmake.in index 9d9cab6e4d..8fc0095ff5 100644 --- a/cmake/projects/Boost/schemes/url_sha1_boost.cmake.in +++ b/cmake/projects/Boost/schemes/url_sha1_boost.cmake.in @@ -53,11 +53,15 @@ if(CMAKE_HOST_WIN32) set(install_cmd "b2") if("@MSVC@") set(HUNTER_MSVC_VCVARSALL "@HUNTER_MSVC_VCVARSALL@") - set(HUNTER_MSVC_ARCH "@HUNTER_MSVC_ARCH@") + set(HUNTER_MSVC_ARCH_HOST "@HUNTER_MSVC_ARCH_HOST@") set(HUNTER_PACKAGE_SOURCE_DIR "@HUNTER_PACKAGE_SOURCE_DIR@") configure_file("@HUNTER_PACKAGE_SCRIPT_DIR@/patched_boostrap.bat.in" "@HUNTER_PACKAGE_DOWNLOAD_DIR@/patched_boostrap.bat") set(patch_cmd "@CMAKE_COMMAND@" -E copy "@HUNTER_PACKAGE_DOWNLOAD_DIR@/patched_boostrap.bat" "@HUNTER_PACKAGE_SOURCE_DIR@/patched_boostrap.bat") set(bootstrap_cmd "patched_boostrap.bat") + elseif("@MSYS@") + set(install_cmd "./b2") + set(patch_cmd "@CMAKE_COMMAND@" -E echo "Dummy patch command") + set(bootstrap_cmd "./bootstrap.sh") else() set(patch_cmd "@CMAKE_COMMAND@" -E echo "Dummy patch command") set(bootstrap_cmd "bootstrap.bat") diff --git a/cmake/projects/Boost/schemes/url_sha1_boost_library.cmake.in b/cmake/projects/Boost/schemes/url_sha1_boost_library.cmake.in index a950038bd3..fd4baa58c1 100644 --- a/cmake/projects/Boost/schemes/url_sha1_boost_library.cmake.in +++ b/cmake/projects/Boost/schemes/url_sha1_boost_library.cmake.in @@ -217,7 +217,7 @@ if(has_toolset_version) set(toolset_full_name ${toolset_name}-${toolset_version}) endif() -set(boost_user_jam "@HUNTER_PACKAGE_BUILD_DIR@/boost.user.jam") +set(boost_user_jam "@HUNTER_PACKAGE_BUILD_DIR@/boost-user.jam") # TODO file(TO_NATIVE_PATH "${boost_user_jam}" boost_user_jam_native_path) # Escape --user-config=C:\projects\hunter-tdmm2\_testing\Hunter\_Base\5398c9d\30f4075\2d24521\Build\Boost\__filesystem\Build\boost.user.jam # Error -> Invalid character escape '\p'. @@ -231,6 +231,7 @@ set( toolset=${toolset_full_name} "--user-config=${boost_user_jam}" --with-@HUNTER_PACKAGE_COMPONENT@ + --abbreviate-paths ) if (@HUNTER_Boost_VERSION@ VERSION_GREATER_EQUAL 1.72.0 AND NOT USE_CONFIG_FROM_BOOST) @@ -252,27 +253,28 @@ hunter_boost_component_b2_args( b2_component_opts ) -string(REPLACE " " ";" cxx_flags_list "${CMAKE_CXX_FLAGS}") - +# For Configuration boost-user.jam see https://boostorg.github.io/build/manual/develop/index.html#bbv2.overview.configuration file( WRITE ${boost_user_jam} - "using ${toolset_name}\n" - " : ${toolset_version}\n" -) + "using ${toolset_name} : ${toolset_version} : \"${boost_compiler}\" : ") if(MSVC) - # For Visual Studio C++ flags must not be set in compiler section. - # Section should be used. - # * https://github.com/ruslo/hunter/issues/179 - file(APPEND ${boost_user_jam} " : \"${boost_compiler}\"\n") + # See 'boost_compiler' section + + # Note: Flags should be quoted: + # - https://github.com/boostorg/build/issues/426#issuecomment-482564740 + string(REPLACE " " ";" cxx_flags_list "${CMAKE_CXX_FLAGS}") + foreach(cxx_flag ${cxx_flags_list}) + file( + APPEND + ${boost_user_jam} + " \"${cxx_flag}\"\n" + ) + endforeach() else() - # For Android C++ flags must be part of the compiler section: - # * https://github.com/ruslo/hunter/issues/174 - # For 'sanitize-address' toolchain flags must be part of the compiler section: - # * https://github.com/ruslo/hunter/issues/269 file( - APPEND ${boost_user_jam} " : \"${boost_compiler}\" ${CMAKE_CXX_FLAGS}\n" + APPEND ${boost_user_jam} " \"${CMAKE_CXX_FLAGS}\" \"${CMAKE_C_FLAGS}\" " ) endif() @@ -288,26 +290,10 @@ if(use_cmake_archiver) file( APPEND ${boost_user_jam} - " : \"${CMAKE_AR}\"\n" - " \"${CMAKE_RANLIB}\"\n" + " \"${CMAKE_AR}\" \"${CMAKE_RANLIB}\" " ) endif() -if(MSVC) - # See 'boost_compiler' section - - # Note: Flags should be quoted: - # - https://github.com/boostorg/build/issues/426#issuecomment-482564740 - - foreach(cxx_flag ${cxx_flags_list}) - file( - APPEND - ${boost_user_jam} - " \"${cxx_flag}\"\n" - ) - endforeach() -endif() - file( APPEND ${boost_user_jam} @@ -407,13 +393,19 @@ if("@ANDROID@") list(APPEND build_opts "address-model=64") endif() elseif("@MSVC@") - string(COMPARE EQUAL "@HUNTER_MSVC_ARCH@" "x86" is_x86) - string(COMPARE EQUAL "@HUNTER_MSVC_ARCH@" "amd64" is_x64) - if(is_x86) + string(COMPARE EQUAL "@HUNTER_MSVC_ARCH_TARGET@" "x86" is_x86) + string(COMPARE EQUAL "@HUNTER_MSVC_ARCH_TARGET@" "amd64" is_x64) + string(COMPARE EQUAL "@HUNTER_MSVC_ARCH_TARGET@" "arm" is_arm) + string(COMPARE EQUAL "@HUNTER_MSVC_ARCH_TARGET@" "arm64" is_arm64) + if(is_x86 OR is_arm) list(APPEND build_opts "address-model=32") - elseif(is_x64) + elseif(is_x64 OR is_arm64) list(APPEND build_opts "address-model=64") endif() + + if (is_arm OR is_arm64) + list(APPEND build_opts "architecture=arm") + endif() endif() string(COMPARE NOTEQUAL "@HUNTER_JOBS_OPTION@" "" have_jobs) @@ -433,11 +425,15 @@ if(CMAKE_HOST_WIN32) set(b2_cmd "b2") if("@MSVC@") set(HUNTER_MSVC_VCVARSALL "@HUNTER_MSVC_VCVARSALL@") - set(HUNTER_MSVC_ARCH "@HUNTER_MSVC_ARCH@") + set(HUNTER_MSVC_ARCH_HOST "@HUNTER_MSVC_ARCH_HOST@") set(HUNTER_PACKAGE_SOURCE_DIR "@HUNTER_PACKAGE_SOURCE_DIR@") configure_file("@HUNTER_PACKAGE_SCRIPT_DIR@/patched_boostrap.bat.in" "@HUNTER_PACKAGE_DOWNLOAD_DIR@/patched_boostrap.bat") set(patch_cmd "@CMAKE_COMMAND@" -E copy "@HUNTER_PACKAGE_DOWNLOAD_DIR@/patched_boostrap.bat" "@HUNTER_PACKAGE_SOURCE_DIR@/patched_boostrap.bat") set(bootstrap_cmd "patched_boostrap.bat") + elseif("@MSYS@") + set(b2_cmd "./b2") + set(patch_cmd "@CMAKE_COMMAND@" -E echo "Dummy patch command") + set(bootstrap_cmd "./bootstrap.sh") else() set(patch_cmd "@CMAKE_COMMAND@" -E echo "Dummy patch command") set(bootstrap_cmd "bootstrap.bat") diff --git a/cmake/projects/Boost/scripts/patched_boostrap.bat.in b/cmake/projects/Boost/scripts/patched_boostrap.bat.in index 6af80ac938..f52168e794 100644 --- a/cmake/projects/Boost/scripts/patched_boostrap.bat.in +++ b/cmake/projects/Boost/scripts/patched_boostrap.bat.in @@ -1,6 +1,9 @@ -call "@HUNTER_MSVC_VCVARSALL@" @HUNTER_MSVC_ARCH@ +@ECHO ON +call "@HUNTER_MSVC_VCVARSALL@" @HUNTER_MSVC_ARCH_HOST@ REM The /d flag is required because vcvarsall.bat changes the current drive REM If the hunter cache is located on a different drive to vcvarsall.bat the REM cd command will fail. https://technet.microsoft.com/en-gb/library/bb490875.aspx +@ECHO ON cd /d @HUNTER_PACKAGE_SOURCE_DIR@ -bootstrap.bat +@ECHO ON +call bootstrap.bat diff --git a/cmake/projects/Eigen/hunter.cmake b/cmake/projects/Eigen/hunter.cmake index 6260018b68..a779b3e5ba 100644 --- a/cmake/projects/Eigen/hunter.cmake +++ b/cmake/projects/Eigen/hunter.cmake @@ -13,6 +13,39 @@ include(hunter_cacheable) hunter_cacheable(Eigen) # List of versions here... +hunter_add_version( + PACKAGE_NAME + Eigen + VERSION + "3.3.9" + URL + "https://gitlab.com/libeigen/eigen/-/archive/3.3.9/eigen-3.3.9.tar.gz" + SHA1 + 6a5a43a327b3aaeb7e74dc32bf1d7011cf6f149c +) + +hunter_add_version( + PACKAGE_NAME + Eigen + VERSION + "3.3.8" + URL + "https://gitlab.com/libeigen/eigen/-/archive/3.3.8/eigen-3.3.8.tar.gz" + SHA1 + aba0afb30cfbc4a4b0ce03fb2ee658ff7f674301 +) + +hunter_add_version( + PACKAGE_NAME + Eigen + VERSION + "3.3.8-b11f817" + URL + "https://gitlab.com/libeigen/eigen/-/archive/b11f817bcff04276f3024d6780f56a137968b81a/eigen-b11f817bcff04276f3024d6780f56a137968b81a.tar.gz" + SHA1 + 2b57944e2d36cc210d142f1b8aa8f1d1d491b655 +) + hunter_add_version( PACKAGE_NAME Eigen diff --git a/cmake/projects/Expat/hunter.cmake b/cmake/projects/Expat/hunter.cmake index df9b8eba69..7d3b1e2e59 100644 --- a/cmake/projects/Expat/hunter.cmake +++ b/cmake/projects/Expat/hunter.cmake @@ -8,6 +8,7 @@ include(hunter_cacheable) include(hunter_cmake_args) include(hunter_download) include(hunter_pick_scheme) +include(hunter_source_subdir) hunter_add_version( PACKAGE_NAME @@ -31,15 +32,49 @@ hunter_add_version( 6b7669be7bc36814c0a7a62cf17342d0a708a51a ) -hunter_cmake_args( - Expat - CMAKE_ARGS - BUILD_tools=OFF - BUILD_examples=OFF - BUILD_tests=OFF - BUILD_shared=OFF +hunter_add_version( + PACKAGE_NAME + Expat + VERSION + 2.2.9-p0 + URL + "https://github.com/cpp-pm/libexpat/archive/v2.2.9-p0.tar.gz" + SHA1 + 73c4c258dff36a68dda2f3c39a413ac602bfb47e ) +if(NOT HUNTER_Expat_VERSION VERSION_LESS 2.2.9) + hunter_cmake_args( + Expat + CMAKE_ARGS + EXPAT_BUILD_TOOLS=OFF + EXPAT_BUILD_EXAMPLES=OFF + EXPAT_BUILD_TESTS=OFF + EXPAT_SHARED_LIBS=OFF + ) + + hunter_get_cmake_args(PACKAGE Expat OUT expat_cmake_args) + string(FIND "${expat_cmake_args}" "BUILD_SHARED_LIBS=ON" expat_shared) + + if (expat_shared) + option(EXPAT_SHARED_LIBS "build a shared expat library" ON) + endif() + + hunter_source_subdir( + Expat + SOURCE_SUBDIR "expat" + ) +else() + hunter_cmake_args( + Expat + CMAKE_ARGS + BUILD_tools=OFF + BUILD_examples=OFF + BUILD_tests=OFF + BUILD_shared=OFF + ) +endif() + hunter_pick_scheme(DEFAULT url_sha1_cmake) hunter_cacheable(Expat) hunter_download(PACKAGE_NAME Expat) diff --git a/cmake/projects/IlmBase/hunter.cmake b/cmake/projects/IlmBase/hunter.cmake index 4cbf947b60..29e371686e 100644 --- a/cmake/projects/IlmBase/hunter.cmake +++ b/cmake/projects/IlmBase/hunter.cmake @@ -32,6 +32,17 @@ hunter_add_version( 844f501f28b59caa3bcdf093dacae7a067429694 ) +hunter_add_version( + PACKAGE_NAME + IlmBase + VERSION + 2.5.1-p0 + URL + "https://github.com/cpp-pm/openexr/archive/v2.5.1-p0.tar.gz" + SHA1 + 9a04f614f5fe7f3c916f0af59438c25cc9d59016 +) + hunter_cmake_args( IlmBase CMAKE_ARGS diff --git a/cmake/projects/KhronosDataFormat/hunter.cmake b/cmake/projects/KhronosDataFormat/hunter.cmake new file mode 100644 index 0000000000..16ac82b1a2 --- /dev/null +++ b/cmake/projects/KhronosDataFormat/hunter.cmake @@ -0,0 +1,35 @@ +# Copyright (c) 2016-2020, Rahul Sheth, Ruslan Baratov +# All rights reserved. + +# !!! DO NOT PLACE HEADER GUARDS HERE !!! + +include(hunter_add_version) +include(hunter_cacheable) +include(hunter_download) +include(hunter_pick_scheme) + +hunter_add_version( + PACKAGE_NAME + KhronosDataFormat + VERSION + 1.3.1-1f8c852-p0 + URL + "https://github.com/cpp-pm/DataFormat/archive/v1.3.1-1f8c852-p0.tar.gz" + SHA1 + ff706838e09646cd9bfa3930ccaf6d6d86e01dc6 +) + +hunter_add_version( + PACKAGE_NAME + KhronosDataFormat + VERSION + 1.3.1-1f8c852-p1 + URL + "https://github.com/cpp-pm/DataFormat/archive/v1.3.1-1f8c852-p1.tar.gz" + SHA1 + 41dd36ba55bd5c4defbd6fea5e0cffd9c81d62a5 +) + +hunter_pick_scheme(DEFAULT url_sha1_cmake) +hunter_cacheable(KhronosDataFormat) +hunter_download(PACKAGE_NAME KhronosDataFormat) diff --git a/cmake/projects/OpenEXR/hunter.cmake b/cmake/projects/OpenEXR/hunter.cmake index 15cb8b952f..9b296bd3b4 100644 --- a/cmake/projects/OpenEXR/hunter.cmake +++ b/cmake/projects/OpenEXR/hunter.cmake @@ -21,6 +21,17 @@ hunter_add_version( 844f501f28b59caa3bcdf093dacae7a067429694 ) +hunter_add_version( + PACKAGE_NAME + OpenEXR + VERSION + 2.5.1-p0 + URL + "https://github.com/cpp-pm/openexr/archive/v2.5.1-p0.tar.gz" + SHA1 + 9a04f614f5fe7f3c916f0af59438c25cc9d59016 +) + hunter_cmake_args( OpenEXR CMAKE_ARGS diff --git a/cmake/projects/OpenSSL/hunter.cmake b/cmake/projects/OpenSSL/hunter.cmake index 9966a3729c..880ce7fc1f 100755 --- a/cmake/projects/OpenSSL/hunter.cmake +++ b/cmake/projects/OpenSSL/hunter.cmake @@ -65,6 +65,51 @@ hunter_add_version( df0ee4811c87c209ebadb4e6b203d1e560d00f9a ) +hunter_add_version( + PACKAGE_NAME + OpenSSL + VERSION + "1.1.1g" + URL + "https://github.com/openssl/openssl/archive/OpenSSL_1_1_1g.tar.gz" + SHA1 + 33324ff957edaae8ae575817b456320378da46ff +) + +# NB: Only use this version if you need arm64 support before official release! +hunter_add_version( + PACKAGE_NAME + OpenSSL + VERSION + "1.1.1g-p0" + URL + "https://github.com/cpp-pm/openssl/archive/v1.1.1g-p0.tar.gz" + SHA1 + fb3bc6467d37f7536f5ff7a1ea25552cee899275 +) + +hunter_add_version( + PACKAGE_NAME + OpenSSL + VERSION + "1.1.1h" + URL + "https://github.com/openssl/openssl/archive/OpenSSL_1_1_1h.tar.gz" + SHA1 + e581875cc63a29a2e9ae6924f5e65fd79dd3fc2e +) + +hunter_add_version( + PACKAGE_NAME + OpenSSL + VERSION + "1.1.1i" + URL + "https://github.com/openssl/openssl/archive/OpenSSL_1_1_1i.tar.gz" + SHA1 + b1fcae20e23561f3ad02c61c80ba10d8790e3034 +) + hunter_add_version( PACKAGE_NAME OpenSSL diff --git a/cmake/projects/OpenSSL/schemes/url_sha1_openssl_macos.cmake.in b/cmake/projects/OpenSSL/schemes/url_sha1_openssl_macos.cmake.in index 2f79aa2e44..1c4510740b 100644 --- a/cmake/projects/OpenSSL/schemes/url_sha1_openssl_macos.cmake.in +++ b/cmake/projects/OpenSSL/schemes/url_sha1_openssl_macos.cmake.in @@ -31,7 +31,7 @@ hunter_assert_not_empty_string("@HUNTER_GLOBAL_SCRIPT_DIR@") hunter_assert_not_empty_string("@HUNTER_TLS_VERIFY@") # Supported macOS architectures: -# i386, x86_64, ppc, ppc64 +# i386, x86_64, ppc, ppc64, arm64 set(configure_command "./Configure") set(configure_architectures @CMAKE_OSX_ARCHITECTURES@) @@ -168,6 +168,8 @@ foreach(arch ${configure_architectures}) set(configure_arch "darwin-i386-cc") elseif("${arch}" STREQUAL "ppc") set(configure_arch "darwin-ppc-cc") + elseif("${arch}" STREQUAL "arm64") + set(configure_arch "darwin64-arm64-cc") else() hunter_user_error("Could not find the macOS architecture ${arch}. Please update the CMAKE_OSX_ARCHITECTURES option in your toolchain.") endif() diff --git a/cmake/projects/OpenSSL/schemes/url_sha1_openssl_windows.cmake.in b/cmake/projects/OpenSSL/schemes/url_sha1_openssl_windows.cmake.in index ce5526bc17..51c6757c3e 100644 --- a/cmake/projects/OpenSSL/schemes/url_sha1_openssl_windows.cmake.in +++ b/cmake/projects/OpenSSL/schemes/url_sha1_openssl_windows.cmake.in @@ -28,6 +28,7 @@ hunter_assert_not_empty_string("@HUNTER_PACKAGE_DOWNLOAD_DIR@") hunter_assert_not_empty_string("@HUNTER_PACKAGE_SOURCE_DIR@") hunter_assert_not_empty_string("@HUNTER_PACKAGE_INSTALL_PREFIX@") hunter_assert_not_empty_string("@HUNTER_MSVC_ARCH@") +hunter_assert_not_empty_string("@HUNTER_MSVC_ARCH_TARGET@") hunter_assert_not_empty_string("@HUNTER_MSVC_VCVARSALL@") hunter_assert_not_empty_string("@HUNTER_PACKAGE_LICENSE_DIR@") hunter_assert_not_empty_string("@HUNTER_GLOBAL_SCRIPT_DIR@") @@ -59,8 +60,9 @@ if(NOT "${PERL_VERSION}" EQUAL 0) ) endif() -string(COMPARE EQUAL "@HUNTER_MSVC_ARCH@" "amd64" is_amd64) -if(is_amd64) +string(COMPARE EQUAL "@HUNTER_MSVC_ARCH_TARGET@" "amd64" is_amd64) +string(COMPARE EQUAL "@HUNTER_MSVC_ARCH_TARGET@" "arm64" is_arm64) +if(is_amd64 OR is_arm64) set(arch "VC-WIN64A") set(do_ms do_win64a.bat) else() diff --git a/cmake/projects/OpenSSL/schemes/url_sha1_openssl_windows_1_1_plus.cmake.in b/cmake/projects/OpenSSL/schemes/url_sha1_openssl_windows_1_1_plus.cmake.in index 7de0864483..2c18c75a91 100644 --- a/cmake/projects/OpenSSL/schemes/url_sha1_openssl_windows_1_1_plus.cmake.in +++ b/cmake/projects/OpenSSL/schemes/url_sha1_openssl_windows_1_1_plus.cmake.in @@ -28,6 +28,7 @@ hunter_assert_not_empty_string("@HUNTER_PACKAGE_DOWNLOAD_DIR@") hunter_assert_not_empty_string("@HUNTER_PACKAGE_SOURCE_DIR@") hunter_assert_not_empty_string("@HUNTER_PACKAGE_INSTALL_PREFIX@") hunter_assert_not_empty_string("@HUNTER_MSVC_ARCH@") +hunter_assert_not_empty_string("@HUNTER_MSVC_ARCH_TARGET@") hunter_assert_not_empty_string("@HUNTER_MSVC_VCVARSALL@") hunter_assert_not_empty_string("@HUNTER_PACKAGE_LICENSE_DIR@") hunter_assert_not_empty_string("@HUNTER_GLOBAL_SCRIPT_DIR@") @@ -59,8 +60,9 @@ if(NOT "${PERL_VERSION}" EQUAL 0) ) endif() -string(COMPARE EQUAL "@HUNTER_MSVC_ARCH@" "amd64" is_amd64) -if(is_amd64) +string(COMPARE EQUAL "@HUNTER_MSVC_ARCH_TARGET@" "amd64" is_amd64) +string(COMPARE EQUAL "@HUNTER_MSVC_ARCH_TARGET@" "arm64" is_arm64) +if(is_amd64 OR is_arm64) set(arch "VC-WIN64A") else() set(arch "VC-WIN32") diff --git a/cmake/projects/Opus/hunter.cmake b/cmake/projects/Opus/hunter.cmake new file mode 100644 index 0000000000..4739cb3ea0 --- /dev/null +++ b/cmake/projects/Opus/hunter.cmake @@ -0,0 +1,26 @@ +include(hunter_add_version) +include(hunter_cacheable) +include(hunter_cmake_args) +include(hunter_download) +include(hunter_pick_scheme) + +hunter_add_version( + PACKAGE_NAME + Opus + VERSION + 1.3.1 + URL + "https://github.com/xiph/opus/archive/v1.3.1.tar.gz" + SHA1 + 9d58962b734ab265ad1154e9a3fe21103b198baa +) + +hunter_cmake_args( + Opus + CMAKE_ARGS + OPUS_INSTALL_PKG_CONFIG_MODULE=OFF +) + +hunter_pick_scheme(DEFAULT url_sha1_cmake) +hunter_cacheable(Opus) +hunter_download(PACKAGE_NAME Opus) diff --git a/cmake/projects/Protobuf/hunter.cmake b/cmake/projects/Protobuf/hunter.cmake index 5ac0b700ef..3c4b9a8bea 100644 --- a/cmake/projects/Protobuf/hunter.cmake +++ b/cmake/projects/Protobuf/hunter.cmake @@ -149,6 +149,28 @@ hunter_add_version( 490beb456fb6934bd4d9f6012c601f6724c2f757 ) +hunter_add_version( + PACKAGE_NAME + Protobuf + VERSION + "3.12.4-p1" + URL + "https://github.com/cpp-pm/protobuf/archive/v3.12.4-p1.tar.gz" + SHA1 + 01b62322e6d9d3271261882bbc7c1719f7179d9d +) + +hunter_add_version( + PACKAGE_NAME + Protobuf + VERSION + "3.14.0-4a09d77-p0" + URL + "https://github.com/cpp-pm/protobuf/archive/v3.14.0-4a09d77-p0.tar.gz" + SHA1 + 3553ff3bfd7d0c4c1413b1552064b3dca6fa213e +) + string( COMPARE EQUAL "${CMAKE_SYSTEM_NAME}" "WindowsStore" _hunter_windows_store ) @@ -187,3 +209,4 @@ endif() hunter_pick_scheme(DEFAULT url_sha1_cmake) hunter_cacheable(Protobuf) hunter_download(PACKAGE_NAME Protobuf) + diff --git a/cmake/projects/RapidJSON/hunter.cmake b/cmake/projects/RapidJSON/hunter.cmake index 0913ab8629..291fbbce95 100644 --- a/cmake/projects/RapidJSON/hunter.cmake +++ b/cmake/projects/RapidJSON/hunter.cmake @@ -9,6 +9,17 @@ include(hunter_cmake_args) include(hunter_download) include(hunter_pick_scheme) +hunter_add_version( + PACKAGE_NAME + RapidJSON + VERSION + "1.1.0-ce81bc9-p1" + URL + "https://github.com/cpp-pm/rapidjson/archive/v1.1.0-ce81bc9-p1.tar.gz" + SHA1 + 2fb99e1c64dcd6702a56efb1bea9341c67c1d6e3 +) + hunter_add_version( PACKAGE_NAME RapidJSON @@ -97,12 +108,17 @@ hunter_add_version( 3cae7f5043e2bfbeb83c033b90a1a9fb69fd2371 ) +# C++ versions should be passed in by the toolchain. +# Since this is a header-only library, the RAPIDJSON_BUILD_CXX11 setting is irrelevant. hunter_cmake_args( RapidJSON CMAKE_ARGS RAPIDJSON_BUILD_DOC=OFF RAPIDJSON_BUILD_EXAMPLES=OFF RAPIDJSON_BUILD_TESTS=OFF + RAPIDJSON_BUILD_CXX11=OFF + RAPIDJSON_HAS_STDSTRING=ON + RAPIDJSON_NOMEMBERITERATORCLASS=ON ) hunter_pick_scheme(DEFAULT url_sha1_cmake) diff --git a/cmake/projects/SPIRV-Headers/hunter.cmake b/cmake/projects/SPIRV-Headers/hunter.cmake index b7427a12d4..669a069939 100644 --- a/cmake/projects/SPIRV-Headers/hunter.cmake +++ b/cmake/projects/SPIRV-Headers/hunter.cmake @@ -21,6 +21,50 @@ hunter_add_version( 77018bfe6cb1eceaf824e401dbd206660a25bf66 ) +hunter_add_version( + PACKAGE_NAME + SPIRV-Headers + VERSION + 1.5.1.corrected + URL + https://github.com/KhronosGroup/SPIRV-Headers/archive/1.5.1.corrected.tar.gz + SHA1 + e7911f27a13c61e9d8c13fe7b0df5f1a883e972e +) + +hunter_add_version( + PACKAGE_NAME + SPIRV-Headers + VERSION + 1.5.3.reservations1 + URL + https://github.com/KhronosGroup/SPIRV-Headers/archive/1.5.3.reservations1.tar.gz + SHA1 + e1666e3cf71e0eb8c75a1786e9f430f6d7670f42 +) + +hunter_add_version( + PACKAGE_NAME + SPIRV-Headers + VERSION + 1.5.4 + URL + https://github.com/KhronosGroup/SPIRV-Headers/archive/1.5.4.tar.gz + SHA1 + 24e517cc55339b847ccb7d3b1d59f73b7df775a1 +) + +hunter_add_version( + PACKAGE_NAME + SPIRV-Headers + VERSION + 1.5.4.raytracing.fixed + URL + https://github.com/KhronosGroup/SPIRV-Headers/archive/1.5.4.raytracing.fixed.tar.gz + SHA1 + 49657f53dd391ab9dad0cb1ce47001d673a2c7ab +) + hunter_cmake_args( SPIRV-Tools CMAKE_ARGS diff --git a/cmake/projects/SPIRV-Tools/hunter.cmake b/cmake/projects/SPIRV-Tools/hunter.cmake index 722ca1acfc..c95cb2466b 100644 --- a/cmake/projects/SPIRV-Tools/hunter.cmake +++ b/cmake/projects/SPIRV-Tools/hunter.cmake @@ -21,6 +21,17 @@ hunter_add_version( c6ea3b64476403c613e138beb12b6c5f96c0c8a6 ) +hunter_add_version( + PACKAGE_NAME + SPIRV-Tools + VERSION + 2020.1-p0 + URL + https://github.com/cpp-pm/SPIRV-Tools/archive/v2020.1-p0.tar.gz + SHA1 + 695e9abf892fe939fbe61398a06b6f177cd43e77 +) + hunter_cmake_args( SPIRV-Tools CMAKE_ARGS diff --git a/cmake/projects/VulkanMemoryAllocator/hunter.cmake b/cmake/projects/VulkanMemoryAllocator/hunter.cmake index 102fd0269a..86f2d38580 100644 --- a/cmake/projects/VulkanMemoryAllocator/hunter.cmake +++ b/cmake/projects/VulkanMemoryAllocator/hunter.cmake @@ -8,6 +8,17 @@ include(hunter_cacheable) include(hunter_download) include(hunter_pick_scheme) +hunter_add_version( + PACKAGE_NAME + VulkanMemoryAllocator + VERSION + 2.3.0-p0 + URL + "https://github.com/cpp-pm/VulkanMemoryAllocator/archive/v2.3.0-p0.tar.gz" + SHA1 + 85d9987582a4cebe5bf7c29bcebd0c844a7b1848 +) + hunter_add_version( PACKAGE_NAME VulkanMemoryAllocator diff --git a/cmake/projects/abseil/hunter.cmake b/cmake/projects/abseil/hunter.cmake new file mode 100644 index 0000000000..7eb8f1cf59 --- /dev/null +++ b/cmake/projects/abseil/hunter.cmake @@ -0,0 +1,43 @@ +# Copyright (c) 2016-2020, Rahul Sheth, Ruslan Baratov +# All rights reserved. + +# !!! DO NOT PLACE HEADER GUARDS HERE !!! + +include(hunter_add_version) +include(hunter_cacheable) +include(hunter_cmake_args) +include(hunter_download) +include(hunter_pick_scheme) + +hunter_add_version( + PACKAGE_NAME + abseil + VERSION + 20200225.2 + URL + "https://github.com/abseil/abseil-cpp/archive/20200225.2.tar.gz" + SHA1 + f8207455be29fa9b0fc80393f63df49a85212084 +) + +hunter_add_version( + PACKAGE_NAME + abseil + VERSION + 20200923.2 + URL + "https://github.com/abseil/abseil-cpp/archive/20200923.2.tar.gz" + SHA1 + 1dd3f0a937c3678437646d26ca6784bd6a9b2b26 +) + +hunter_cmake_args( + abseil + CMAKE_ARGS + ABSL_ENABLE_INSTALL=ON + ABSL_RUN_TESTS=OFF +) + +hunter_pick_scheme(DEFAULT url_sha1_cmake) +hunter_cacheable(abseil) +hunter_download(PACKAGE_NAME abseil) diff --git a/cmake/projects/apg/hunter.cmake b/cmake/projects/apg/hunter.cmake new file mode 100644 index 0000000000..f7d2970295 --- /dev/null +++ b/cmake/projects/apg/hunter.cmake @@ -0,0 +1,25 @@ +# Copyright (c) 2016-2020, Rahul Sheth, Ruslan Baratov +# All rights reserved. + +# !!! DO NOT PLACE HEADER GUARDS HERE !!! + +include(hunter_add_version) +include(hunter_cacheable) +include(hunter_download) +include(hunter_pick_scheme) + +hunter_add_version( + PACKAGE_NAME + apg + VERSION + 0.0.0-b322f7a-p0 + URL + "https://github.com/cpp-pm/apg/archive/v0.0.0-b322f7a-p0.tar.gz" + SHA1 + 2ce4fa26b0548561b10d537e1477c711493e434d +) + +hunter_pick_scheme(DEFAULT url_sha1_cmake) +hunter_cacheable(apg) +hunter_download(PACKAGE_NAME apg) + diff --git a/cmake/projects/asio/hunter.cmake b/cmake/projects/asio/hunter.cmake index 3c649b7728..cecd7f172e 100644 --- a/cmake/projects/asio/hunter.cmake +++ b/cmake/projects/asio/hunter.cmake @@ -19,6 +19,17 @@ hunter_add_version( 35f9abb8abaac541f168e7cc547a256b2ca6e2dd ) +hunter_add_version( + PACKAGE_NAME + asio + VERSION + 1.17.0-p0 + URL + "https://github.com/cpp-pm/asio/archive/v1.17.0-p0.tar.gz" + SHA1 + 21239ee00b2f765db4d3f2dcd9ee953c1650c3f1 +) + hunter_pick_scheme(DEFAULT url_sha1_cmake) hunter_cacheable(asio) hunter_download(PACKAGE_NAME asio) diff --git a/cmake/projects/astc-encoder/hunter.cmake b/cmake/projects/astc-encoder/hunter.cmake new file mode 100644 index 0000000000..7c06aaa048 --- /dev/null +++ b/cmake/projects/astc-encoder/hunter.cmake @@ -0,0 +1,63 @@ +# Copyright (c) 2016-2020, Rahul Sheth, Ruslan Baratov +# All rights reserved. + +# !!! DO NOT PLACE HEADER GUARDS HERE !!! + +include(hunter_add_version) +include(hunter_cacheable) +include(hunter_download) +include(hunter_pick_scheme) +include(hunter_cmake_args) + +hunter_add_version( + PACKAGE_NAME + astc-encoder + VERSION + 2.0-ab16aaa-p0 + URL + "https://github.com/cpp-pm/astc-encoder/archive/v2.0-ab16aaa-p0.tar.gz" + SHA1 + 027d46d8c190cbfc3c7ab0b78a7773e534f9deec +) + +hunter_add_version( + PACKAGE_NAME + astc-encoder + VERSION + 1.3-a47b80f-p0 + URL + "https://github.com/cpp-pm/astc-encoder/archive/v1.3-a47b80f-p0.tar.gz" + SHA1 + 6a181bffbacec7a6c2ee99a0c9bdb9da3de09c95 +) + +hunter_add_version( + PACKAGE_NAME + astc-encoder + VERSION + 1.3-a47b80f-p1 + URL + "https://github.com/cpp-pm/astc-encoder/archive/v1.3-a47b80f-p1.tar.gz" + SHA1 + c01b9663ffd6e6a80cca985d24c4e77fcbaa65e7 +) + +if(ANDROID OR IOS) + hunter_cmake_args( + astc-encoder + CMAKE_ARGS + VEC=neon + BUILD_APPS=OFF + ) +else() + hunter_cmake_args( + astc-encoder + CMAKE_ARGS + VEC=sse2 + BUILD_APPS=OFF + ) +endif() + +hunter_pick_scheme(DEFAULT url_sha1_cmake) +hunter_cacheable(astc-encoder) +hunter_download(PACKAGE_NAME astc-encoder) diff --git a/cmake/projects/basis_universal/hunter.cmake b/cmake/projects/basis_universal/hunter.cmake new file mode 100644 index 0000000000..b2a7d110f8 --- /dev/null +++ b/cmake/projects/basis_universal/hunter.cmake @@ -0,0 +1,33 @@ +# Copyright (c) 2016-2020, Rahul Sheth, Ruslan Baratov +# All rights reserved. + +# !!! DO NOT PLACE HEADER GUARDS HERE !!! + +include(hunter_add_version) +include(hunter_cacheable) +include(hunter_download) +include(hunter_pick_scheme) +include(hunter_cmake_args) + +hunter_add_version( + PACKAGE_NAME + basis_universal + VERSION + 1.12-f80f8dd-p2 + URL + "https://github.com/cpp-pm/basis_universal/archive/v1.12-f80f8dd-p2.tar.gz" + SHA1 + e2ec4b09138a18b5f4c475fdcff39175b2077c05 +) + +if(ANDROID OR IOS OR _hunter_windows_store) + hunter_cmake_args( + basis_universal + CMAKE_ARGS + BASISU_BUILD_TOOL=OFF + ) +endif() + +hunter_pick_scheme(DEFAULT url_sha1_cmake) +hunter_cacheable(basis_universal) +hunter_download(PACKAGE_NAME basis_universal) diff --git a/cmake/projects/botan/schemes/url_sha1_botan_win.cmake.in b/cmake/projects/botan/schemes/url_sha1_botan_win.cmake.in index b27a180c19..c0dcc0493b 100644 --- a/cmake/projects/botan/schemes/url_sha1_botan_win.cmake.in +++ b/cmake/projects/botan/schemes/url_sha1_botan_win.cmake.in @@ -28,6 +28,7 @@ hunter_assert_not_empty_string("@HUNTER_PACKAGE_SOURCE_DIR@") hunter_assert_not_empty_string("@HUNTER_PACKAGE_INSTALL_PREFIX@") # TODO These properties are not set in msys-cxx17 build #hunter_assert_not_empty_string("@HUNTER_MSVC_ARCH@") +#hunter_assert_not_empty_string("@HUNTER_MSVC_ARCH_TARGET@") #hunter_assert_not_empty_string("@HUNTER_MSVC_VCVARSALL@") hunter_assert_not_empty_string("@HUNTER_INSTALL_PREFIX@") hunter_assert_not_empty_string("@HUNTER_TLS_VERIFY@") @@ -77,13 +78,13 @@ hunter_get_build_flags( hunter_setup_msvc() # Usage: configure.py [options] -# +# # Options: # --version show program's version number and exit # -h, --help show this help message and exit # --verbose Show debug messages # --quiet Show only warnings and errors -# +# # Target options: # --cpu=CPU set the target CPU architecture # --os=OS set the target operating system @@ -116,7 +117,7 @@ hunter_setup_msvc() # --disable-altivec disable AltiVec intrinsics # --disable-neon disable NEON intrinsics # --disable-armv8crypto disable ARMv8Crypto intrinsics -# +# # Build options: # --with-debug-info include debug symbols # --with-sanitizers enable ASan/UBSan checks @@ -148,14 +149,14 @@ hunter_setup_msvc() # --unsafe-fuzzer-mode Disable essential checks for testing # --build-fuzzers=TYPE Build fuzzers (afl, libfuzzer, klee, test) # --with-fuzzer-lib=LIB additionally link in LIB -# +# # Documentation Options: # --without-documentation Skip building/installing documentation # --with-sphinx Use Sphinx # --with-pdf Use Sphinx to generate PDF doc # --with-rst2man Use rst2man to generate man page # --with-doxygen Use Doxygen -# +# # Module selection: # --module-policy=POL module policy file (see src/build- # data/policy) @@ -171,7 +172,7 @@ hunter_setup_msvc() # --with-sqlite3 use sqlite3 # --with-zlib use zlib # --with-tpm use tpm -# +# # Installation options: # --program-suffix=SUFFIX append string to program names # --library-suffix=SUFFIX append string to library names @@ -181,7 +182,7 @@ hunter_setup_msvc() # --libdir=DIR set the library install dir # --mandir=DIR set the install dir for man pages # --includedir=DIR set the include file install dir -# +# # Informational: # --list-modules list available modules and exit # --list-os-features list available OS features and exit @@ -214,7 +215,8 @@ if(ENABLE_MODULES) list(APPEND configure_opts --enable-modules=${ENABLE_MODULES}) endif() -if("${HUNTER_MSVC_ARCH}" STREQUAL "amd64") +# TODO: Support MSVC ARM / ARM64 here +if("${HUNTER_MSVC_ARCH_TARGET}" STREQUAL "amd64") list(APPEND configure_opts --cpu=x64) else() list(APPEND configure_opts --cpu=x86) @@ -235,10 +237,10 @@ if(NOT "${ar}" STREQUAL "") endif() # MSVS="2015" PLATFORM="x86_amd64" TARGET="shared" -#.\configure.py -#--prefix=c:\users\appveyor\appdata\local\temp\1\botan-install -#--cc=msvc -#--os=windows +#.\configure.py +#--prefix=c:\users\appveyor\appdata\local\temp\1\botan-install +#--cc=msvc +#--os=windows #--cpu=x64 or --cpu=x86 #--cc-bin=sccache cl --no-store-vc-rev diff --git a/cmake/projects/ceres-solver/hunter.cmake b/cmake/projects/ceres-solver/hunter.cmake index fabeb4781a..6271e7518d 100644 --- a/cmake/projects/ceres-solver/hunter.cmake +++ b/cmake/projects/ceres-solver/hunter.cmake @@ -68,6 +68,18 @@ hunter_add_version( SHA1 fb63a3f1ee8c39a6eda1c3e1611aeb3789015fdf ) + +hunter_add_version( + PACKAGE_NAME + ceres-solver + VERSION + "2.0.0-p0" + URL + "https://github.com/cpp-pm/ceres-solver/archive/v2.0.0-p0.tar.gz" + SHA1 + 868f7b45b127d4eb2777ce889e0d273bd11f5f73 +) + hunter_cmake_args(ceres-solver CMAKE_ARGS # explicitly remove dependency on gflags (only needed for tests) GFLAGS=OFF diff --git a/cmake/projects/cgltf/hunter.cmake b/cmake/projects/cgltf/hunter.cmake new file mode 100644 index 0000000000..46e52e649b --- /dev/null +++ b/cmake/projects/cgltf/hunter.cmake @@ -0,0 +1,33 @@ +# Copyright (c) 2016-2020, Rahul Sheth, Ruslan Baratov +# All rights reserved. + +# !!! DO NOT PLACE HEADER GUARDS HERE !!! + +include(hunter_add_version) +include(hunter_cacheable) +include(hunter_download) +include(hunter_pick_scheme) +include(hunter_cmake_args) + +hunter_add_version( + PACKAGE_NAME + cgltf + VERSION + 1.7-dc6b5f1-p0 + URL + "https://github.com/cpp-pm/cgltf/archive/v1.7-dc6b5f1-p0.tar.gz" + SHA1 + 77210426575c8e08791fb8b5d4ef145dd67b3eb9 +) + +hunter_cmake_args( + cgltf + CMAKE_ARGS + BUILD_AS_LIBRARY=ON + BUILD_SHARED_LIBS=OFF + BUILD_TESTS=OFF +) + +hunter_pick_scheme(DEFAULT url_sha1_cmake) +hunter_cacheable(cgltf) +hunter_download(PACKAGE_NAME cgltf) diff --git a/cmake/projects/cpp-statsd-client/hunter.cmake b/cmake/projects/cpp-statsd-client/hunter.cmake new file mode 100644 index 0000000000..1165439318 --- /dev/null +++ b/cmake/projects/cpp-statsd-client/hunter.cmake @@ -0,0 +1,24 @@ +# Copyright (c) 2016-2020, Rahul Sheth, Ruslan Baratov +# All rights reserved. + +# !!! DO NOT PLACE HEADER GUARDS HERE !!! + +include(hunter_add_version) +include(hunter_cacheable) +include(hunter_download) +include(hunter_pick_scheme) + +hunter_add_version( + PACKAGE_NAME + cpp-statsd-client + VERSION + 1.0.1-42f02b4-p0 + URL + "https://github.com/cpp-pm/cpp-statsd-client/archive/v1.0.1-42f02b4-p0.tar.gz" + SHA1 + a94f56a498defe4836f7bf605351924eb9c8e683 +) + +hunter_pick_scheme(DEFAULT url_sha1_cmake) +hunter_cacheable(cpp-statsd-client) +hunter_download(PACKAGE_NAME cpp-statsd-client) diff --git a/cmake/projects/crc32c/hunter.cmake b/cmake/projects/crc32c/hunter.cmake index 9237ca9e47..1cf7dfe198 100644 --- a/cmake/projects/crc32c/hunter.cmake +++ b/cmake/projects/crc32c/hunter.cmake @@ -12,6 +12,12 @@ hunter_add_version( URL "https://github.com/hunter-packages/crc32c/archive/hunter-1.0.5.tar.gz" SHA1 "dc7fa8cb877b9cb12a4e22e553087fdd6ce28cce") +hunter_add_version( + PACKAGE_NAME crc32c + VERSION "1.1.1" + URL "https://github.com/google/crc32c/archive/1.1.1.tar.gz" + SHA1 "46f18ed84a12c49c42dc77fff54491a9f8b9dce8") + hunter_cmake_args(crc32c CMAKE_ARGS CRC32C_BUILD_TESTS=OFF CRC32C_BUILD_BENCHMARKS=OFF diff --git a/cmake/projects/etc2comp/hunter.cmake b/cmake/projects/etc2comp/hunter.cmake new file mode 100644 index 0000000000..1c3d721b99 --- /dev/null +++ b/cmake/projects/etc2comp/hunter.cmake @@ -0,0 +1,31 @@ +# Copyright (c) 2016-2020, Rahul Sheth, Ruslan Baratov +# All rights reserved. + +# !!! DO NOT PLACE HEADER GUARDS HERE !!! + +include(hunter_add_version) +include(hunter_cacheable) +include(hunter_download) +include(hunter_pick_scheme) +include(hunter_cmake_args) + +hunter_add_version( + PACKAGE_NAME + etc2comp + VERSION + 0.0.0-9cd0f9c-p0 + URL + "https://github.com/cpp-pm/etc2comp/archive/v0.0.0-9cd0f9c-p0.tar.gz" + SHA1 + 7ca3956f45a6a07ac8e0a204b293e84f8413d0d8 +) + +hunter_cmake_args( + etc2comp + CMAKE_ARGS + BUILD_TOOL=OFF +) + +hunter_pick_scheme(DEFAULT url_sha1_cmake) +hunter_cacheable(etc2comp) +hunter_download(PACKAGE_NAME etc2comp) diff --git a/cmake/projects/fast_obj/hunter.cmake b/cmake/projects/fast_obj/hunter.cmake new file mode 100644 index 0000000000..677a90e8db --- /dev/null +++ b/cmake/projects/fast_obj/hunter.cmake @@ -0,0 +1,33 @@ +# Copyright (c) 2016-2020, Rahul Sheth, Ruslan Baratov +# All rights reserved. + +# !!! DO NOT PLACE HEADER GUARDS HERE !!! + +include(hunter_add_version) +include(hunter_cacheable) +include(hunter_download) +include(hunter_pick_scheme) +include(hunter_cmake_args) + +hunter_add_version( + PACKAGE_NAME + fast_obj + VERSION + 1.0-p0 + URL + "https://github.com/cpp-pm/fast_obj/archive/v1.0-p0.tar.gz" + SHA1 + 1dc4c7dd587231496cddb7471d86d9d6c2b5e3d1 +) + +hunter_cmake_args( + fast_obj + CMAKE_ARGS + BUILD_AS_LIBRARY=ON + BUILD_SHARED_LIBS=OFF + BUILD_TESTS=OFF +) + +hunter_pick_scheme(DEFAULT url_sha1_cmake) +hunter_cacheable(fast_obj) +hunter_download(PACKAGE_NAME fast_obj) diff --git a/cmake/projects/filament/ci/build.sh b/cmake/projects/filament/ci/build.sh new file mode 100644 index 0000000000..0ea8a11abc --- /dev/null +++ b/cmake/projects/filament/ci/build.sh @@ -0,0 +1,4 @@ +# Install packages +sudo apt-get install -y libgl1-mesa-dev + +bash .github/workflows/ci/build.sh diff --git a/cmake/projects/filament/ci/matrix.json b/cmake/projects/filament/ci/matrix.json new file mode 100644 index 0000000000..b0541094e5 --- /dev/null +++ b/cmake/projects/filament/ci/matrix.json @@ -0,0 +1,5 @@ +[ + { "example": "filament", "toolchain": "clang-libcxx17-fpic", "os": "ubuntu-20.04", "python": "3.8", "script": "build.sh" }, + { "example": "filament", "toolchain": "osx-10-15-cxx17", "os": "macos-10.15", "python": "3.8", "script": "build.sh" }, + { "example": "filament", "toolchain": "vs-16-2019-win64-cxx17", "os": "windows-2019", "python": "3.8", "script": "build.cmd" } +] diff --git a/cmake/projects/filament/hunter.cmake b/cmake/projects/filament/hunter.cmake new file mode 100644 index 0000000000..43d95b3fb0 --- /dev/null +++ b/cmake/projects/filament/hunter.cmake @@ -0,0 +1,37 @@ +# Copyright (c) 2016-2020, Rahul Sheth, Ruslan Baratov +# All rights reserved. + +# !!! DO NOT PLACE HEADER GUARDS HERE !!! + +include(hunter_add_version) +include(hunter_cacheable) +include(hunter_cmake_args) +include(hunter_download) +include(hunter_pick_scheme) + +hunter_add_version( + PACKAGE_NAME + filament + VERSION + 1.9.8 + URL + "https://github.com/cpp-pm/filament/archive/v1.9.8-p0.tar.gz" + SHA1 + 7ef097692ea5cd68ba34dc48c73fff96b4f98b54 +) + +hunter_cmake_args( + filament + CMAKE_ARGS + FILAMENT_ENABLE_JAVA=OFF + FILAMENT_SUPPORTS_VULKAN=OFF + FILAMENT_BUILD_FILAMAT=OFF + FILAMENT_SKIP_SAMPLES=ON + FILAMENT_ENABLE_MATDBG=OFF + USE_STATIC_LIBCXX=OFF + USE_STATIC_CRT=OFF +) + +hunter_pick_scheme(DEFAULT url_sha1_cmake) +hunter_cacheable(filament) +hunter_download(PACKAGE_NAME filament) diff --git a/cmake/projects/flatbuffers/hunter.cmake b/cmake/projects/flatbuffers/hunter.cmake index 069dde41a9..26cee7ab8c 100644 --- a/cmake/projects/flatbuffers/hunter.cmake +++ b/cmake/projects/flatbuffers/hunter.cmake @@ -31,13 +31,47 @@ hunter_add_version( 7f596e79368bc0d3080d22708bcc7625cc03a1d1 ) +hunter_add_version( + PACKAGE_NAME + flatbuffers + VERSION + 1.10.0 + URL + "https://github.com/google/flatbuffers/archive/v1.10.0.tar.gz" + SHA1 + 93b922687fe19cff6221e0d35a00879d668b45ab +) + +hunter_add_version( + PACKAGE_NAME + flatbuffers + VERSION + 1.12.0 + URL + "https://github.com/google/flatbuffers/archive/v1.12.0.tar.gz" + SHA1 + 8c047d1d843a29072702ee09ec7ecbce00636433 +) + +if(ANDROID OR IOS) hunter_cmake_args( flatbuffers CMAKE_ARGS FLATBUFFERS_BUILD_FLATC=OFF + FLATBUFFERS_STATIC_FLATC=OFF + FLATBUFFERS_BUILD_FLATHASH=OFF + FLATBUFFERS_BUILD_TESTS=OFF +) +else() +hunter_cmake_args( + flatbuffers + CMAKE_ARGS + FLATBUFFERS_BUILD_FLATC=ON + FLATBUFFERS_STATIC_FLATC=OFF FLATBUFFERS_BUILD_FLATHASH=OFF FLATBUFFERS_BUILD_TESTS=OFF ) +endif() hunter_pick_scheme(DEFAULT url_sha1_cmake) hunter_cacheable(flatbuffers) diff --git a/cmake/projects/fmt/hunter.cmake b/cmake/projects/fmt/hunter.cmake index c46ded91cf..99a3ec6e31 100644 --- a/cmake/projects/fmt/hunter.cmake +++ b/cmake/projects/fmt/hunter.cmake @@ -107,6 +107,17 @@ hunter_add_version( dc59b27d461f1af12daf73f3e00d18bf1e9eed78 ) +hunter_add_version( + PACKAGE_NAME + fmt + VERSION + "7.1.2" + URL + "https://github.com/fmtlib/fmt/archive/7.1.2.tar.gz" + SHA1 + 59bea0bd88e72ac2769c57d584b0cbed956038cf +) + hunter_cmake_args( fmt CMAKE_ARGS diff --git a/cmake/projects/foo/hunter.cmake b/cmake/projects/foo/hunter.cmake index 478a1557a1..915c31c60e 100644 --- a/cmake/projects/foo/hunter.cmake +++ b/cmake/projects/foo/hunter.cmake @@ -1,4 +1,4 @@ -# Copyright (c) 2016-2019, Ruslan Baratov +# Copyright (c) 2016-2020, Rahul Sheth, Ruslan Baratov # All rights reserved. # !!! DO NOT PLACE HEADER GUARDS HERE !!! @@ -14,7 +14,7 @@ hunter_add_version( VERSION 1.0.0 URL - "https://github.com/hunter-packages/foo/archive/v1.0.0.tar.gz" + "https://github.com/cpp-pm/foo/archive/v1.0.0.tar.gz" SHA1 1111111111111111111111111111111111111111 ) diff --git a/cmake/projects/freetype-gl/ci/build.sh b/cmake/projects/freetype-gl/ci/build.sh new file mode 100644 index 0000000000..0ea8a11abc --- /dev/null +++ b/cmake/projects/freetype-gl/ci/build.sh @@ -0,0 +1,4 @@ +# Install packages +sudo apt-get install -y libgl1-mesa-dev + +bash .github/workflows/ci/build.sh diff --git a/cmake/projects/freetype-gl/ci/matrix.json b/cmake/projects/freetype-gl/ci/matrix.json new file mode 100644 index 0000000000..b42717ef57 --- /dev/null +++ b/cmake/projects/freetype-gl/ci/matrix.json @@ -0,0 +1,16 @@ +[ + { "example": "freetype-gl", "toolchain": "clang-cxx17", "os": "ubuntu-16.04", "python": "3.8", "script": "build.sh" }, + { "example": "freetype-gl", "toolchain": "gcc-7-cxx17", "os": "ubuntu-16.04", "python": "3.8", "script": "build.sh" }, + { "example": "freetype-gl", "toolchain": "gcc-8-cxx17-fpic", "os": "ubuntu-18.04", "python": "3.8", "script": "build.sh" }, + { "example": "freetype-gl", "toolchain": "gcc-9-cxx17-fpic", "os": "ubuntu-20.04", "python": "3.8", "script": "build.sh" }, + { "example": "freetype-gl", "toolchain": "sanitize-address-cxx17", "os": "ubuntu-16.04", "python": "3.8", "script": "build.sh" }, + { "example": "freetype-gl", "toolchain": "sanitize-leak-cxx17", "os": "ubuntu-16.04", "python": "3.8", "script": "build.sh" }, + { "example": "freetype-gl", "toolchain": "sanitize-thread-cxx17", "os": "ubuntu-16.04", "python": "3.8", "script": "build.sh" }, + { "example": "freetype-gl", "toolchain": "ninja-vs-15-2017-win64-cxx17", "os": "windows-2016", "python": "3.8", "script": "build.cmd" }, + { "example": "freetype-gl", "toolchain": "nmake-vs-15-2017-win64-cxx17", "os": "windows-2016", "python": "3.8", "script": "build.cmd" }, + { "example": "freetype-gl", "toolchain": "vs-16-2019-win64-cxx17", "os": "windows-2019", "python": "3.8", "script": "build.cmd" }, + { "example": "freetype-gl", "toolchain": "vs-15-2017-win64-cxx17", "os": "windows-2016", "python": "3.8", "script": "build.cmd" }, + { "example": "freetype-gl", "toolchain": "vs-14-2015-sdk-8-1", "os": "windows-2016", "python": "3.8", "script": "build.cmd" }, + { "example": "freetype-gl", "toolchain": "mingw-cxx17", "os": "windows-2016", "python": "3.8", "script": "build.cmd" }, + { "example": "freetype-gl", "toolchain": "msys-cxx17", "os": "windows-2016", "python": "3.8", "script": "build.cmd" } +] diff --git a/cmake/projects/freetype-gl/hunter.cmake b/cmake/projects/freetype-gl/hunter.cmake new file mode 100644 index 0000000000..8f2817e07e --- /dev/null +++ b/cmake/projects/freetype-gl/hunter.cmake @@ -0,0 +1,32 @@ +# !!! DO NOT PLACE HEADER GUARDS HERE !!! + +include(hunter_add_version) +include(hunter_cacheable) +include(hunter_cmake_args) +include(hunter_download) +include(hunter_pick_scheme) + +hunter_add_version( + PACKAGE_NAME + freetype-gl + VERSION + "0.0.0-1a8c007-p0" #project has no releases so using 0.0.0-commit-patch + URL + "https://github.com/cpp-pm/freetype-gl/archive/v0.0.0-1a8c007-p0.tar.gz" + SHA1 + 923b6a4fad097beefa6aa6c759e7fa4010bf9214 +) + +hunter_cmake_args( + freetype-gl + CMAKE_ARGS + freetype-gl_USE_HUNTER=ON + freetype-gl_BUILD_DEMOS=OFF + freetype-gl_BUILD_TESTS=OFF + freetype-gl_BUILD_APIDOC=OFF + freetype-gl_BUILD_MAKEFONT=OFF +) + +hunter_pick_scheme(DEFAULT url_sha1_cmake) +hunter_cacheable(freetype-gl) +hunter_download(PACKAGE_NAME freetype-gl) diff --git a/cmake/projects/freetype/hunter.cmake b/cmake/projects/freetype/hunter.cmake index 35f680d178..a14c9510ea 100644 --- a/cmake/projects/freetype/hunter.cmake +++ b/cmake/projects/freetype/hunter.cmake @@ -8,6 +8,17 @@ include(hunter_cmake_args) include(hunter_download) include(hunter_pick_scheme) +hunter_add_version( + PACKAGE_NAME + freetype + VERSION + "2.9.1-p3" + URL + "https://github.com/cpp-pm/freetype/archive/v2.9.1-p3.tar.gz" + SHA1 + 310198f66076d88da89428b6db04fc4fd8d19419 +) + hunter_add_version( PACKAGE_NAME freetype diff --git a/cmake/projects/gRPC/hunter.cmake b/cmake/projects/gRPC/hunter.cmake index 071b7f6d4f..4c6885e325 100644 --- a/cmake/projects/gRPC/hunter.cmake +++ b/cmake/projects/gRPC/hunter.cmake @@ -2,6 +2,7 @@ include(hunter_add_version) include(hunter_cacheable) +include(hunter_cmake_args) include(hunter_download) include(hunter_pick_scheme) @@ -37,15 +38,29 @@ hunter_add_version( hunter_add_version( PACKAGE_NAME gRPC - VERSION "1.29.1" - URL "https://github.com/soramitsu/libp2p-grpc/archive/hunter-1.29.1.tar.gz" - SHA1 "28eee0d55849fcd42e9408525558aacbd7d27c1d") + VERSION "1.31.0-p0" + URL "https://github.com/cpp-pm/grpc/archive/v1.31.0-p0.tar.gz" + SHA1 "017f1bbb1df948422b4e4894f1fcdaf7c120bc6e") hunter_add_version( PACKAGE_NAME gRPC - VERSION "1.29.1.1" - URL "https://github.com/soramitsu/libp2p-grpc/archive/b0245d9c20e10c4581d70e6565fd988058fe6ebd.tar.gz" - SHA1 "85c002b2c8d4d4209475a61bd321368d384188f8") + VERSION "1.34.0-p0" + URL "https://github.com/cpp-pm/grpc/archive/v1.34.0-p0.tar.gz" + SHA1 "437f34aaf0ae699fc95cfddef16eabb9e2e8ed04") + +hunter_cmake_args( + gRPC + CMAKE_ARGS + gRPC_ZLIB_PROVIDER=package + gRPC_CARES_PROVIDER=package + gRPC_RE2_PROVIDER=package + gRPC_SSL_PROVIDER=package + gRPC_PROTOBUF_PROVIDER=package + gRPC_PROTOBUF_PACKAGE_TYPE=CONFIG + gRPC_GFLAGS_PROVIDER=package + gRPC_BENCHMARK_PROVIDER=package + gRPC_ABSL_PROVIDER=package +) hunter_pick_scheme(DEFAULT url_sha1_cmake) hunter_cacheable(gRPC) diff --git a/cmake/projects/gl4es/hunter.cmake b/cmake/projects/gl4es/hunter.cmake index b37425d14f..6b01204d55 100644 --- a/cmake/projects/gl4es/hunter.cmake +++ b/cmake/projects/gl4es/hunter.cmake @@ -4,6 +4,28 @@ include(hunter_download) include(hunter_cmake_args) include(hunter_pick_scheme) +hunter_add_version( + PACKAGE_NAME + gl4es + VERSION + 1.1.4-p1 + URL + "https://github.com/cpp-pm/gl4es/archive/v1.1.4-p1.tar.gz" + SHA1 + 5a3f0c3c966962171ff9c694a13b4a704654593c +) + +hunter_add_version( + PACKAGE_NAME + gl4es + VERSION + 1.1.4-p0 + URL + "https://github.com/cpp-pm/gl4es/archive/1.1.4-p0.tar.gz" + SHA1 + fcb75a97d261bf7910a5bbfbd60a95a36a216295 +) + hunter_add_version( PACKAGE_NAME gl4es diff --git a/cmake/projects/glm/hunter.cmake b/cmake/projects/glm/hunter.cmake index 529fbc7be2..a1a50240db 100644 --- a/cmake/projects/glm/hunter.cmake +++ b/cmake/projects/glm/hunter.cmake @@ -73,6 +73,17 @@ hunter_add_version( 86ac27949abbd6654a74c3530ec4fe900768fb84 ) +hunter_add_version( + PACKAGE_NAME + glm + VERSION + "0.9.9.8" + URL + "https://github.com/cpp-pm/glm/archive/v0.9.9.8-p0.tar.gz" + SHA1 + 1a910ec1df1c5992f8d7c562850dd094584f1a25 +) + include(GNUInstallDirs) # glm use custom bundled GNUInstallDirs module so we have to diff --git a/cmake/projects/glslang/hunter.cmake b/cmake/projects/glslang/hunter.cmake index 3403d8386d..9209a7fde1 100644 --- a/cmake/projects/glslang/hunter.cmake +++ b/cmake/projects/glslang/hunter.cmake @@ -31,6 +31,17 @@ hunter_add_version( 44d6157e5bf6005f1f611bcea323488e6268d9c9 ) +hunter_add_version( + PACKAGE_NAME + glslang + VERSION + 8.13.3743-9eef54b2-p0 + URL + "https://github.com/cpp-pm/glslang/archive/v8.13.3743-9eef54b2-p0.tar.gz" + SHA1 + fb8593f4671116d318909394d2fba3774f027ca0 +) + if(IOS OR ANDROID) hunter_cmake_args( glslang diff --git a/cmake/projects/glu/hunter.cmake b/cmake/projects/glu/hunter.cmake index 6b213a318d..cc5f54f16b 100644 --- a/cmake/projects/glu/hunter.cmake +++ b/cmake/projects/glu/hunter.cmake @@ -4,6 +4,17 @@ include(hunter_cmake_args) include(hunter_download) include(hunter_pick_scheme) +hunter_add_version( + PACKAGE_NAME + glu + VERSION + 9.0.1-p1 + URL + "https://github.com/cpp-pm/glu/archive/v9.0.1-p1.tar.gz" + SHA1 + eff93afef33dfc1acd158017f59e37d45ee1a9fc +) + hunter_add_version( PACKAGE_NAME glu diff --git a/cmake/projects/intx/hunter.cmake b/cmake/projects/intx/hunter.cmake index f1e4543b35..5e038ceec4 100644 --- a/cmake/projects/intx/hunter.cmake +++ b/cmake/projects/intx/hunter.cmake @@ -30,6 +30,39 @@ hunter_add_version( 50c4d8ec601114755be9fd5bf5b288ee4eeacd54 ) +hunter_add_version( + PACKAGE_NAME + intx + VERSION + 0.3.0 + URL + https://github.com/chfast/intx/archive/v0.3.0.tar.gz + SHA1 + a8caffec14acbfead56edce78f360611aa4d252f +) + +hunter_add_version( + PACKAGE_NAME + intx + VERSION + 0.4.0 + URL + https://github.com/chfast/intx/archive/v0.4.0.tar.gz + SHA1 + 8a2a0b0efa64899db972166a9b3568a6984c61bc +) + +hunter_add_version( + PACKAGE_NAME + intx + VERSION + 0.5.0 + URL + https://github.com/chfast/intx/archive/v0.5.0.tar.gz + SHA1 + 7f917cfe9046278d348a5cf36c20f9847d351807 +) + hunter_cmake_args( intx CMAKE_ARGS diff --git a/cmake/projects/jpeg-compressor/hunter.cmake b/cmake/projects/jpeg-compressor/hunter.cmake new file mode 100644 index 0000000000..01e89df350 --- /dev/null +++ b/cmake/projects/jpeg-compressor/hunter.cmake @@ -0,0 +1,24 @@ +# Copyright (c) 2016-2020, Rahul Sheth, Ruslan Baratov +# All rights reserved. + +# !!! DO NOT PLACE HEADER GUARDS HERE !!! + +include(hunter_add_version) +include(hunter_cacheable) +include(hunter_download) +include(hunter_pick_scheme) + +hunter_add_version( + PACKAGE_NAME + jpeg-compressor + VERSION + 0.0.0-aeb7d3b-p0 + URL + "https://github.com/cpp-pm/jpeg-compressor/archive/v0.0.0-aeb7d3b-p0.tar.gz" + SHA1 + e7ae7f3d3cf9ebfacd2af0c2b9efbd976dcc9823 +) + +hunter_pick_scheme(DEFAULT url_sha1_cmake) +hunter_cacheable(jpeg-compressor) +hunter_download(PACKAGE_NAME jpeg-compressor) diff --git a/cmake/projects/jsmn/hunter.cmake b/cmake/projects/jsmn/hunter.cmake new file mode 100644 index 0000000000..cf92428cc8 --- /dev/null +++ b/cmake/projects/jsmn/hunter.cmake @@ -0,0 +1,24 @@ +# Copyright (c) 2016-2020, Rahul Sheth, Ruslan Baratov +# All rights reserved. + +# !!! DO NOT PLACE HEADER GUARDS HERE !!! + +include(hunter_add_version) +include(hunter_cacheable) +include(hunter_download) +include(hunter_pick_scheme) + +hunter_add_version( + PACKAGE_NAME + jsmn + VERSION + 1.1.0-053d3cd-p0 + URL + "https://github.com/cpp-pm/jsmn/archive/v1.1.0-053d3cd-p0.tar.gz" + SHA1 + 5a3b097e59975df1e0d1d5e3c27833c8869fbe09 +) + +hunter_pick_scheme(DEFAULT url_sha1_cmake) +hunter_cacheable(jsmn) +hunter_download(PACKAGE_NAME jsmn) diff --git a/cmake/projects/libarchive/hunter.cmake b/cmake/projects/libarchive/hunter.cmake new file mode 100644 index 0000000000..d171843db9 --- /dev/null +++ b/cmake/projects/libarchive/hunter.cmake @@ -0,0 +1,38 @@ +# !!! DO NOT PLACE HEADER GUARDS HERE !!! + +include(hunter_add_version) +include(hunter_configuration_types) +include(hunter_pick_scheme) +include(hunter_download) +include(hunter_cacheable) +include(hunter_cmake_args) + +hunter_add_version( + PACKAGE_NAME + libarchive + VERSION + "3.4.3" + URL + "https://libarchive.org/downloads/libarchive-3.4.3.tar.gz" + SHA1 + 6528f38fa03a44bfcf58435ec8512ffea2851c99 +) + +hunter_configuration_types(libarchive CONFIGURATION_TYPES Release) +hunter_pick_scheme(DEFAULT url_sha1_autotools) + +hunter_cmake_args( + libarchive + CMAKE_ARGS + PKGCONFIG_EXPORT_TARGETS=libarchive + EXTRA_FLAGS=--without-iconv +) + +hunter_cacheable(libarchive) +hunter_download( + PACKAGE_NAME libarchive + PACKAGE_INTERNAL_DEPS_ID "1" + PACKAGE_UNRELOCATABLE_TEXT_FILES + "lib/libarchive.la" + "lib/pkgconfig/libarchive.pc" +) diff --git a/cmake/projects/libigl/hunter.cmake b/cmake/projects/libigl/hunter.cmake index 2bde5209e8..cfbe616c54 100644 --- a/cmake/projects/libigl/hunter.cmake +++ b/cmake/projects/libigl/hunter.cmake @@ -11,6 +11,17 @@ include(hunter_pick_scheme) # Tags v1.3.3 and v2.0.0 are the same: # - https://github.com/hunter-packages/libigl/pull/1#issuecomment-495176368 +hunter_add_version( + PACKAGE_NAME + libigl + VERSION + 2.2.0 + URL + "https://github.com/libigl/libigl/archive/v2.2.0.tar.gz" + SHA1 + 3d20919a8783eba741dab3100e9e55fb75615be5 +) + hunter_add_version( PACKAGE_NAME libigl diff --git a/cmake/projects/libsodium/schemes/url_sha1_libsodium_msbuild.cmake.in b/cmake/projects/libsodium/schemes/url_sha1_libsodium_msbuild.cmake.in index cbc0301581..33bb067a2e 100644 --- a/cmake/projects/libsodium/schemes/url_sha1_libsodium_msbuild.cmake.in +++ b/cmake/projects/libsodium/schemes/url_sha1_libsodium_msbuild.cmake.in @@ -16,6 +16,7 @@ hunter_assert_not_empty_string("@HUNTER_EP_NAME@") hunter_assert_not_empty_string("@HUNTER_INSTALL_PREFIX@") hunter_assert_not_empty_string("@HUNTER_libsodium_VERSION@") hunter_assert_not_empty_string("@HUNTER_MSVC_ARCH@") +hunter_assert_not_empty_string("@HUNTER_MSVC_ARCH_TARGET@") hunter_assert_not_empty_string("@HUNTER_MSVC_VCVARSALL@") hunter_assert_not_empty_string("@HUNTER_PACKAGE_URL@") hunter_assert_not_empty_string("@HUNTER_PACKAGE_SHA1@") @@ -55,13 +56,19 @@ else() endif() # Check MSVC Architechture -string(COMPARE EQUAL "@HUNTER_MSVC_ARCH@" "x86" _is_arch_x86) -string(COMPARE EQUAL "@HUNTER_MSVC_ARCH@" "amd64" _is_arch_x64) +string(COMPARE EQUAL "@HUNTER_MSVC_ARCH_TARGET@" "x86" _is_arch_x86) +string(COMPARE EQUAL "@HUNTER_MSVC_ARCH_TARGET@" "amd64" _is_arch_x64) +string(COMPARE EQUAL "@HUNTER_MSVC_ARCH_TARGET@" "arm" _is_arch_arm) +string(COMPARE EQUAL "@HUNTER_MSVC_ARCH_TARGET@" "arm64" _is_arch_arm64) if(_is_arch_x86) set(msvc_arch "Win32") elseif(_is_arch_x64) set(msvc_arch "x64") +elseif(_is_arch_arm) + set(msvc_arch "ARM") +elseif(_is_arch_arm64) + set(msvc_arch "ARM64") else() hunter_user_error("Architechture supplied is not supported.") endif() diff --git a/cmake/projects/libusb/hunter.cmake b/cmake/projects/libusb/hunter.cmake index f312afb5fe..3ccbccf20c 100644 --- a/cmake/projects/libusb/hunter.cmake +++ b/cmake/projects/libusb/hunter.cmake @@ -21,14 +21,26 @@ hunter_add_version( cdb45a2d679e2ccbc3a8193f843e3f0c7187f74c ) +hunter_add_version( + PACKAGE_NAME + libusb + VERSION + 1.0.23 + URL + "https://github.com/libusb/libusb/archive/v1.0.23.tar.gz" + SHA1 + c8ebcc7d0a14f910151b3066326d8ba126894b88 +) + hunter_cmake_args( libusb - CMAKE_ARGS + CMAKE_ARGS + BOOTSTRAP=./bootstrap.sh PKGCONFIG_EXPORT_TARGETS=libusb-1.0 ) hunter_configuration_types(libusb CONFIGURATION_TYPES Release) -hunter_pick_scheme(DEFAULT url_sha1_autogen_autotools) +hunter_pick_scheme(DEFAULT url_sha1_autotools) hunter_cacheable(libusb) hunter_download(PACKAGE_NAME libusb PACKAGE_INTERNAL_DEPS_ID "2" diff --git a/cmake/projects/lz4/hunter.cmake b/cmake/projects/lz4/hunter.cmake index 5a7467c724..53927dc82c 100644 --- a/cmake/projects/lz4/hunter.cmake +++ b/cmake/projects/lz4/hunter.cmake @@ -5,8 +5,10 @@ include(hunter_add_version) include(hunter_cacheable) +include(hunter_cmake_args) include(hunter_download) include(hunter_pick_scheme) +include(hunter_source_subdir) hunter_add_version( PACKAGE_NAME @@ -30,6 +32,30 @@ hunter_add_version( e96abaedd5d8a5a61c21316c8bb173b1954c7c6b ) +hunter_add_version( + PACKAGE_NAME + lz4 + VERSION + 1.9.2-p0 + URL + "https://github.com/cpp-pm/lz4/archive/v1.9.2-p0.tar.gz" + SHA1 + 0fc022c98ecd741bc5dda3cafeebfc9290b82983 +) + +if(NOT HUNTER_lz4_VERSION VERSION_LESS 1.9.2) + hunter_cmake_args( + lz4 + CMAKE_ARGS + LZ4_INSTALL_BINARIES=OFF + ) + + hunter_source_subdir( + lz4 + SOURCE_SUBDIR "contrib/cmake_unofficial" + ) +endif() + hunter_pick_scheme(DEFAULT url_sha1_cmake) hunter_cacheable(lz4) hunter_download(PACKAGE_NAME lz4) diff --git a/cmake/projects/meshoptimizer/hunter.cmake b/cmake/projects/meshoptimizer/hunter.cmake new file mode 100644 index 0000000000..ce71466dc7 --- /dev/null +++ b/cmake/projects/meshoptimizer/hunter.cmake @@ -0,0 +1,43 @@ +# Copyright (c) 2016-2020, Rahul Sheth, Ruslan Baratov +# All rights reserved. + +# !!! DO NOT PLACE HEADER GUARDS HERE !!! + +include(hunter_add_version) +include(hunter_cacheable) +include(hunter_download) +include(hunter_pick_scheme) +include(hunter_cmake_args) + +hunter_add_version( + PACKAGE_NAME + meshoptimizer + VERSION + 0.14-a507623-p0 + URL + "https://github.com/cpp-pm/meshoptimizer/archive/v0.14-a507623-p0.tar.gz" + SHA1 + d8e23cf64352a62a85ff10c7b4a0638231643a24 +) + +if(ANDROID OR IOS) + hunter_cmake_args( + meshoptimizer + CMAKE_ARGS + MESHOPT_BUILD_DEMO=OFF + MESHOPT_BUILD_GLTFPACK=OFF + MESHOPT_BUILD_SHARED_LIBS=OFF + ) +else() + hunter_cmake_args( + meshoptimizer + CMAKE_ARGS + MESHOPT_BUILD_DEMO=OFF + MESHOPT_BUILD_GLTFPACK=ON + MESHOPT_BUILD_SHARED_LIBS=OFF + ) +endif() + +hunter_pick_scheme(DEFAULT url_sha1_cmake) +hunter_cacheable(meshoptimizer) +hunter_download(PACKAGE_NAME meshoptimizer) diff --git a/cmake/projects/miniz/hunter.cmake b/cmake/projects/miniz/hunter.cmake new file mode 100644 index 0000000000..0cac23ae52 --- /dev/null +++ b/cmake/projects/miniz/hunter.cmake @@ -0,0 +1,33 @@ +# Copyright (c) 2016-2020, Rahul Sheth, Ruslan Baratov +# All rights reserved. + +# !!! DO NOT PLACE HEADER GUARDS HERE !!! + +include(hunter_add_version) +include(hunter_cacheable) +include(hunter_download) +include(hunter_pick_scheme) +include(hunter_cmake_args) + +hunter_add_version( + PACKAGE_NAME + miniz + VERSION + 2.1.0-5ebed82-p0 + URL + "https://github.com/richgel999/miniz/archive/5ebed8288278fc0ff75d5f93ba95afc0416afe02.tar.gz" + SHA1 + cabba521a61b9af353e197e74c1fa00307f33241 +) + +hunter_cmake_args( + miniz + CMAKE_ARGS + AMALGAMATE_SOURCES=ON + BUILD_EXAMPLES=OFF + BUILD_SHARED_LIBS=OFF +) + +hunter_pick_scheme(DEFAULT url_sha1_cmake) +hunter_cacheable(miniz) +hunter_download(PACKAGE_NAME miniz) diff --git a/cmake/projects/nlohmann_json/hunter.cmake b/cmake/projects/nlohmann_json/hunter.cmake index b4ef1d0136..cd3d531f60 100644 --- a/cmake/projects/nlohmann_json/hunter.cmake +++ b/cmake/projects/nlohmann_json/hunter.cmake @@ -127,6 +127,34 @@ hunter_add_version( SHA1 d40e66b98392d0cfbd348de029b7822ab5b74e25 ) +hunter_add_version( + PACKAGE_NAME nlohmann_json + VERSION "3.7.1" + URL "https://github.com/nlohmann/json/archive/v3.7.1.tar.gz" + SHA1 a9c7ed5d9a3a514636cec6287a8aebd89502a5f0 +) + +hunter_add_version( + PACKAGE_NAME nlohmann_json + VERSION "3.7.2" + URL "https://github.com/nlohmann/json/archive/v3.7.2.tar.gz" + SHA1 2909fb5aa4cd9766eb8a49fdf911116c5c65d68b +) + +hunter_add_version( + PACKAGE_NAME nlohmann_json + VERSION "3.7.3" + URL "https://github.com/nlohmann/json/archive/v3.7.3.tar.gz" + SHA1 2edc54d0cec46549c3bf9983541813f1b64bd26c +) + +hunter_add_version( + PACKAGE_NAME nlohmann_json + VERSION "3.8.0" + URL "https://github.com/nlohmann/json/archive/v3.8.0.tar.gz" + SHA1 70a16819777672d3771a2754eccee95e4249b3b4 +) + hunter_cmake_args(nlohmann_json CMAKE_ARGS JSON_BuildTests=OFF) hunter_pick_scheme(DEFAULT url_sha1_cmake) diff --git a/cmake/projects/occt/ci/build.sh b/cmake/projects/occt/ci/build.sh new file mode 100644 index 0000000000..3440f03de6 --- /dev/null +++ b/cmake/projects/occt/ci/build.sh @@ -0,0 +1,20 @@ +# Install additional dependencies: + +if [ "$(uname)" == "Darwin" ]; then + # OSX + : +elif [ "$(expr substr $(uname -s) 1 5)" == "Linux" ]; then + # GNU/Linux + sudo apt-get update + sudo apt-get install mesa-common-dev libgl1-mesa-dev libxmu-dev libxi-dev +elif [ "$(expr substr $(uname -s) 1 10)" == "MINGW32_NT" ]; then + # Windows x32 + : +elif [ "$(expr substr $(uname -s) 1 10)" == "MINGW64_NT" ]; then + # Windows x64 + : +fi + + +# Run normal build script: +source ./.github/workflows/ci/build.sh diff --git a/cmake/projects/occt/hunter.cmake b/cmake/projects/occt/hunter.cmake new file mode 100644 index 0000000000..a2bb1fafa1 --- /dev/null +++ b/cmake/projects/occt/hunter.cmake @@ -0,0 +1,33 @@ +# Copyright (c) 2016-2020, Rahul Sheth, Ruslan Baratov +# All rights reserved. + +# !!! DO NOT PLACE HEADER GUARDS HERE !!! + +include(hunter_add_version) +include(hunter_cacheable) +include(hunter_download) +include(hunter_pick_scheme) +include(hunter_cmake_args) + +hunter_add_version( + PACKAGE_NAME + occt + VERSION + 7.4.0-p0 + URL + "https://github.com/cpp-pm/OCCT/archive/v7.4.0-p0.tar.gz" + SHA1 + 537bb3eeaff198b1733e49e857c19429bf2f7781 +) + +hunter_cmake_args( + occt + CMAKE_ARGS + BUILD_MODULE_Draw=Off + BUILD_DOC_Overview=Off +) + + +hunter_pick_scheme(DEFAULT url_sha1_cmake) +hunter_cacheable(occt) +hunter_download(PACKAGE_NAME occt) diff --git a/cmake/projects/opusfile/hunter.cmake b/cmake/projects/opusfile/hunter.cmake new file mode 100644 index 0000000000..9b4ef32ed2 --- /dev/null +++ b/cmake/projects/opusfile/hunter.cmake @@ -0,0 +1,28 @@ +include(hunter_add_version) +include(hunter_cacheable) +include(hunter_cmake_args) +include(hunter_download) +include(hunter_pick_scheme) + +hunter_add_version( + PACKAGE_NAME + opusfile + VERSION + 0.12-p0 + URL + "https://github.com/cpp-pm/opusfile/archive/v0.12-p0.tar.gz" + SHA1 + 877447616c34b6dd7753ee1a883c713ca2f56773 +) + +if(WIN32 OR MINGW OR MSYS) + hunter_cmake_args( + opusfile + CMAKE_ARGS + BUILD_OPUSURL=OFF + ) +endif() + +hunter_pick_scheme(DEFAULT url_sha1_cmake) +hunter_cacheable(opusfile) +hunter_download(PACKAGE_NAME opusfile) diff --git a/cmake/projects/pugixml/hunter.cmake b/cmake/projects/pugixml/hunter.cmake index 913d04a49b..6908821f3a 100644 --- a/cmake/projects/pugixml/hunter.cmake +++ b/cmake/projects/pugixml/hunter.cmake @@ -8,9 +8,9 @@ include(hunter_pick_scheme) hunter_add_version( PACKAGE_NAME pugixml - VERSION "1.8.1" - URL "https://github.com/rusdevops/pugixml/archive/v1.8.1-hunter.tar.gz" - SHA1 005b1c8830e6f81f559d0b72f9f7ff320895847f + VERSION "1.10-p0" + URL "https://github.com/cpp-pm/pugixml/archive/v1.10-p0.tar.gz" + SHA1 a007db95cbb6b49cb8d2d247e60a82912c435484 ) hunter_pick_scheme(DEFAULT url_sha1_cmake) diff --git a/cmake/projects/pybind11/hunter.cmake b/cmake/projects/pybind11/hunter.cmake index adb1f11a47..5d203510cc 100644 --- a/cmake/projects/pybind11/hunter.cmake +++ b/cmake/projects/pybind11/hunter.cmake @@ -18,6 +18,42 @@ hunter_add_version( URL "https://github.com/pybind/pybind11/archive/v2.2.4.tar.gz" SHA1 "488971990bbd3828311356faaa30f4b0d7575dad") +hunter_add_version( + PACKAGE_NAME pybind11 + VERSION "2.3.0" + URL "https://github.com/pybind/pybind11/archive/v2.3.0.tar.gz" + SHA1 "98b9ccfb793806f9046f94421ce360598ab42bc3") + +hunter_add_version( + PACKAGE_NAME pybind11 + VERSION "2.4.0" + URL "https://github.com/pybind/pybind11/archive/v2.4.0.tar.gz" + SHA1 "22c1bff0b451f2faa21374e03515276649c9d749") + +hunter_add_version( + PACKAGE_NAME pybind11 + VERSION "2.4.1" + URL "https://github.com/pybind/pybind11/archive/v2.4.1.tar.gz" + SHA1 "41903d9fad671ae62218e1d87e2ce6cd508f7c8a") + +hunter_add_version( + PACKAGE_NAME pybind11 + VERSION "2.4.2" + URL "https://github.com/pybind/pybind11/archive/v2.4.2.tar.gz" + SHA1 "b9ea5cb8bdf96f9765914036dcbfe266c240eb6a") + +hunter_add_version( + PACKAGE_NAME pybind11 + VERSION "2.4.3" + URL "https://github.com/pybind/pybind11/archive/v2.4.3.tar.gz" + SHA1 "75d0184c1720bad96bbcbef0e25ccee92f21523b") + +hunter_add_version( + PACKAGE_NAME pybind11 + VERSION "2.5.0" + URL "https://github.com/pybind/pybind11/archive/v2.5.0.tar.gz" + SHA1 "8caf0bde85813f9eac55e516d4afcb925806aa5e") + hunter_cmake_args(pybind11 CMAKE_ARGS PYBIND11_TEST=OFF) hunter_pick_scheme(DEFAULT url_sha1_cmake) diff --git a/cmake/projects/quickjs/hunter.cmake b/cmake/projects/quickjs/hunter.cmake index 239d0df2c5..8ceaf326b5 100644 --- a/cmake/projects/quickjs/hunter.cmake +++ b/cmake/projects/quickjs/hunter.cmake @@ -19,6 +19,17 @@ hunter_add_version( def3915206ca673831601adf4efbe0f8264806e5 ) +hunter_add_version( + PACKAGE_NAME + quickjs + VERSION + 2020-04-12-p0 + URL + "https://github.com/cpp-pm/quickjs/archive/v2020-04-12-p0.tar.gz" + SHA1 + e5d3e7fc980b66a958962e94247f9a8b1df0a1c0 +) + hunter_pick_scheme(DEFAULT url_sha1_cmake) hunter_cacheable(quickjs) hunter_download(PACKAGE_NAME quickjs) diff --git a/cmake/projects/range-v3/hunter.cmake b/cmake/projects/range-v3/hunter.cmake index 4515cd3b92..a18934bf23 100644 --- a/cmake/projects/range-v3/hunter.cmake +++ b/cmake/projects/range-v3/hunter.cmake @@ -53,6 +53,17 @@ hunter_add_version( 5c0eac44a710f85cae6dc11aa7577ec90f30c5a8 ) +hunter_add_version( + PACKAGE_NAME + range-v3 + VERSION + 0.11.0 + URL + "https://github.com/ericniebler/range-v3/archive/0.11.0.tar.gz" + SHA1 + a49d6d541057d8601d70b5771567eb89832b50bf +) + hunter_cmake_args( range-v3 CMAKE_ARGS diff --git a/cmake/projects/re2/hunter.cmake b/cmake/projects/re2/hunter.cmake index 9b7b0b7fe6..5580a559e5 100644 --- a/cmake/projects/re2/hunter.cmake +++ b/cmake/projects/re2/hunter.cmake @@ -1,5 +1,4 @@ -# Copyright (c) 2016-2017, Ruslan Baratov -# Copyright (c) 2017, David Hirvonen +# Copyright (c) 2016-2020, Ruslan Baratov, David Hirvonen, Rahul Sheth # All rights reserved. # !!! DO NOT PLACE HEADER GUARDS HERE !!! @@ -19,7 +18,24 @@ hunter_add_version( https://github.com/hunter-packages/re2/archive/2017.11.01-p0.tar.gz SHA1 78ed8b27fe1499a30281f3763bb282ea47636b1a - ) +) + +hunter_add_version( + PACKAGE_NAME + re2 + VERSION + 2020.08.01 + URL + https://github.com/google/re2/archive/2020-08-01.tar.gz + SHA1 + ac4796e631461c27cd05629097a6931c1d5b13a4 +) + +hunter_cmake_args( + re2 + CMAKE_ARGS + RE2_BUILD_TESTING=OFF +) hunter_pick_scheme(DEFAULT url_sha1_cmake) hunter_cacheable(re2) diff --git a/cmake/projects/s3/hunter.cmake b/cmake/projects/s3/hunter.cmake index 0efd7b2a0a..90295aa356 100644 --- a/cmake/projects/s3/hunter.cmake +++ b/cmake/projects/s3/hunter.cmake @@ -8,6 +8,17 @@ include(hunter_cacheable) include(hunter_download) include(hunter_pick_scheme) +hunter_add_version( + PACKAGE_NAME + s3 + VERSION + 4.1.0-287e4be-p0 + URL + "https://github.com/cpp-pm/libs3/archive/v4.1.0-287e4be-p0.tar.gz" + SHA1 + e79af37884e619141f94e9a102218d824f851e95 +) + hunter_add_version( PACKAGE_NAME s3 diff --git a/cmake/projects/smol-v/hunter.cmake b/cmake/projects/smol-v/hunter.cmake new file mode 100644 index 0000000000..4edc3b7f6b --- /dev/null +++ b/cmake/projects/smol-v/hunter.cmake @@ -0,0 +1,24 @@ +# Copyright (c) 2016-2020, Rahul Sheth, Ruslan Baratov +# All rights reserved. + +# !!! DO NOT PLACE HEADER GUARDS HERE !!! + +include(hunter_add_version) +include(hunter_cacheable) +include(hunter_download) +include(hunter_pick_scheme) + +hunter_add_version( + PACKAGE_NAME + smol-v + VERSION + 0.0.0-4b52c16-p0 + URL + "https://github.com/cpp-pm/smol-v/archive/v0.0.0-4b52c16-p0.tar.gz" + SHA1 + e5c2a74d2dc169d3c8a727b752a74e983b22d6a6 +) + +hunter_pick_scheme(DEFAULT url_sha1_cmake) +hunter_cacheable(smol-v) +hunter_download(PACKAGE_NAME smol-v) diff --git a/cmake/projects/spdlog/hunter.cmake b/cmake/projects/spdlog/hunter.cmake index a9178f2fd2..e95d36baa7 100644 --- a/cmake/projects/spdlog/hunter.cmake +++ b/cmake/projects/spdlog/hunter.cmake @@ -119,6 +119,17 @@ hunter_add_version( 5dd633311d1aec79404d6694b452745b80f1a7d1 ) +hunter_add_version( + PACKAGE_NAME + spdlog + VERSION + "1.8.0-p1" + URL + "https://github.com/cpp-pm/spdlog/archive/v1.8.0-p1.tar.gz" + SHA1 + 3bfb2352482e6190c377f121b1f760dad767b58d +) + hunter_cmake_args( spdlog CMAKE_ARGS diff --git a/cmake/projects/spirv-cross/hunter.cmake b/cmake/projects/spirv-cross/hunter.cmake index 5467adbe1c..8fadc2b576 100644 --- a/cmake/projects/spirv-cross/hunter.cmake +++ b/cmake/projects/spirv-cross/hunter.cmake @@ -30,6 +30,17 @@ hunter_add_version( 766604e35bf4243916d403310922a0b9d930f43b ) +hunter_add_version( + PACKAGE_NAME + spirv-cross + VERSION + 20200917 + URL + "https://github.com/KhronosGroup/SPIRV-Cross/archive/2020-09-17.tar.gz" + SHA1 + 76df6c9378950ed805f372ee9bed7b55a3a8d9c6 +) + hunter_pick_scheme(DEFAULT url_sha1_cmake) hunter_cacheable(spirv-cross) hunter_download(PACKAGE_NAME spirv-cross) diff --git a/cmake/projects/termcolor/hunter.cmake b/cmake/projects/termcolor/hunter.cmake index 345d115000..3919b5d33c 100644 --- a/cmake/projects/termcolor/hunter.cmake +++ b/cmake/projects/termcolor/hunter.cmake @@ -19,6 +19,17 @@ hunter_add_version( 3ecab2daf39f118bff2244f51760dfd32ab7a3d1 ) +hunter_add_version( + PACKAGE_NAME + termcolor + VERSION + "1.0.1" + URL + "https://github.com/ikalnytskyi/termcolor/archive/v1.0.1.tar.gz" + SHA1 + c49b9d07c3240ba624e6471a5e461ecaa2fc7dc2 +) + hunter_cmake_args(termcolor CMAKE_ARGS ENABLE_TESTING=OFF) hunter_pick_scheme(DEFAULT url_sha1_cmake) diff --git a/cmake/projects/theora/hunter.cmake b/cmake/projects/theora/hunter.cmake new file mode 100644 index 0000000000..e8836cf285 --- /dev/null +++ b/cmake/projects/theora/hunter.cmake @@ -0,0 +1,20 @@ +include(hunter_add_version) +include(hunter_cacheable) +include(hunter_cmake_args) +include(hunter_download) +include(hunter_pick_scheme) + +hunter_add_version( + PACKAGE_NAME + theora + VERSION + 1.1.1-p0 + URL + "https://github.com/cpp-pm/theora/archive/v1.1.1-p0.tar.gz" + SHA1 + ccccca94bb200c272a552a4ebf83327eee43245a +) + +hunter_pick_scheme(DEFAULT url_sha1_cmake) +hunter_cacheable(theora) +hunter_download(PACKAGE_NAME theora) diff --git a/cmake/projects/tinyexr/hunter.cmake b/cmake/projects/tinyexr/hunter.cmake new file mode 100644 index 0000000000..6049423a16 --- /dev/null +++ b/cmake/projects/tinyexr/hunter.cmake @@ -0,0 +1,35 @@ +# Copyright (c) 2016-2020, Rahul Sheth, Ruslan Baratov +# All rights reserved. + +# !!! DO NOT PLACE HEADER GUARDS HERE !!! + +include(hunter_add_version) +include(hunter_cacheable) +include(hunter_download) +include(hunter_pick_scheme) + +hunter_add_version( + PACKAGE_NAME + tinyexr + VERSION + 1.0.0-297e645-p0 + URL + "https://github.com/cpp-pm/tinyexr/archive/v1.0.0-297e645-p0.tar.gz" + SHA1 + 7d17e84ddd7ba48b11ab27104bcb92222bb2ef9f +) + +hunter_add_version( + PACKAGE_NAME + tinyexr + VERSION + 1.0.0-297e645-p1 + URL + "https://github.com/cpp-pm/tinyexr/archive/v1.0.0-297e645-p1.tar.gz" + SHA1 + d977a698aadc7f48a9e6f7b1a798ae58ef85428a +) + +hunter_pick_scheme(DEFAULT url_sha1_cmake) +hunter_cacheable(tinyexr) +hunter_download(PACKAGE_NAME tinyexr) diff --git a/cmake/projects/tinygltf/hunter.cmake b/cmake/projects/tinygltf/hunter.cmake new file mode 100644 index 0000000000..d3a3a3135b --- /dev/null +++ b/cmake/projects/tinygltf/hunter.cmake @@ -0,0 +1,33 @@ +# Copyright (c) 2014-2015, Ruslan Baratov +# All rights reserved. + +# !!! DO NOT PLACE HEADER GUARDS HERE !!! + +include(hunter_add_version) +include(hunter_cacheable) +include(hunter_cmake_args) +include(hunter_download) +include(hunter_pick_scheme) + +hunter_add_version( + PACKAGE_NAME + tinygltf + VERSION + "2.5.0-p0" + URL + "https://github.com/cpp-pm/tinygltf/archive/v2.5.0-p0.tar.gz" + SHA1 + "dd8e139e1f2f03dcfe9eab2aedff25fa5c6297c6" +) + +hunter_cmake_args( + tinygltf + CMAKE_ARGS + TINYGLTF_BUILD_LOADER_EXAMPLE=OFF + TINYGLTF_BUILD_GL_EXAMPLES=OFF + TINYGLTF_BUILD_VALIDATOR_EXAMPLE=OFF +) + +hunter_pick_scheme(DEFAULT url_sha1_cmake) +hunter_cacheable(tinygltf) +hunter_download(PACKAGE_NAME tinygltf) diff --git a/cmake/projects/tinyobjloader/hunter.cmake b/cmake/projects/tinyobjloader/hunter.cmake new file mode 100644 index 0000000000..7ae3be2e88 --- /dev/null +++ b/cmake/projects/tinyobjloader/hunter.cmake @@ -0,0 +1,24 @@ +# Copyright (c) 2020, Rahul Sheth +# All rights reserved. + +# !!! DO NOT PLACE HEADER GUARDS HERE !!! + +include(hunter_add_version) +include(hunter_cacheable) +include(hunter_download) +include(hunter_pick_scheme) + +hunter_add_version( + PACKAGE_NAME + tinyobjloader + VERSION + 2.0.0-rc6-bec38e3 + URL + "https://github.com/tinyobjloader/tinyobjloader/archive/bec38e3bbfe56e6cf218d30375d3990ffbd9e362.tar.gz" + SHA1 + bd8ff0ae60d5d6f84656dcbcdea9ffc0dd1b0603 +) + +hunter_pick_scheme(DEFAULT url_sha1_cmake) +hunter_cacheable(tinyobjloader) +hunter_download(PACKAGE_NAME tinyobjloader) diff --git a/cmake/projects/tsl_hat_trie/hunter.cmake b/cmake/projects/tsl_hat_trie/hunter.cmake index d7712d3481..d6eeaa5821 100644 --- a/cmake/projects/tsl_hat_trie/hunter.cmake +++ b/cmake/projects/tsl_hat_trie/hunter.cmake @@ -1,5 +1,5 @@ -# Copyright (c) 2016-2017, Ruslan Baratov -# Copyright (c) 2020, Soramitsu Co., Ltd. +# Copyright (c) 2016-2020, Rahul Sheth, Ruslan Baratov +# Copyright (c) 2021, Soramitsu Co., Ltd. # All rights reserved. # SPDX-License-Identifier: Apache-2.0 diff --git a/cmake/projects/tsl_robin_map/hunter.cmake b/cmake/projects/tsl_robin_map/hunter.cmake new file mode 100644 index 0000000000..d2df0ebc7b --- /dev/null +++ b/cmake/projects/tsl_robin_map/hunter.cmake @@ -0,0 +1,24 @@ +# Copyright (c) 2016-2020, Rahul Sheth, Ruslan Baratov +# All rights reserved. + +# !!! DO NOT PLACE HEADER GUARDS HERE !!! + +include(hunter_add_version) +include(hunter_cacheable) +include(hunter_download) +include(hunter_pick_scheme) + +hunter_add_version( + PACKAGE_NAME + tsl_robin_map + VERSION + 0.6.3-dc2023b + URL + "https://github.com/Tessil/robin-map/archive/dc2023b02e35e51b386fbd7ab524b0f56d491965.tar.gz" + SHA1 + f17356667cd0e7200eea58dcaf9c410176223199 +) + +hunter_pick_scheme(DEFAULT url_sha1_cmake) +hunter_cacheable(tsl_robin_map) +hunter_download(PACKAGE_NAME tsl_robin_map) diff --git a/cmake/projects/utf8/hunter.cmake b/cmake/projects/utf8/hunter.cmake index 3d06c4837a..cbd1923d2d 100644 --- a/cmake/projects/utf8/hunter.cmake +++ b/cmake/projects/utf8/hunter.cmake @@ -5,6 +5,7 @@ include(hunter_add_version) include(hunter_cacheable) +include(hunter_cmake_args) include(hunter_download) include(hunter_pick_scheme) @@ -30,6 +31,25 @@ hunter_add_version( 73116d453d4fb2ab4b46159095baeeb319f1ae28 ) +hunter_add_version( + PACKAGE_NAME + utf8 + VERSION + 3.1.1 + URL + "https://github.com/nemtrif/utfcpp/archive/v3.1.1.tar.gz" + SHA1 + 9f49d2ff2cdb7d3b9ad74bea3289ebabbb6c45d9 +) + +hunter_cmake_args( + utf8 + CMAKE_ARGS + UTF8_TESTS=OFF + UTF8_INSTALL=ON + UTF8_SAMPLES=OFF +) + hunter_pick_scheme(DEFAULT url_sha1_cmake) hunter_cacheable(utf8) hunter_download(PACKAGE_NAME utf8) diff --git a/cmake/projects/xatlas/hunter.cmake b/cmake/projects/xatlas/hunter.cmake new file mode 100644 index 0000000000..67f529dc1e --- /dev/null +++ b/cmake/projects/xatlas/hunter.cmake @@ -0,0 +1,24 @@ +# Copyright (c) 2016-2020, Rahul Sheth, Ruslan Baratov +# All rights reserved. + +# !!! DO NOT PLACE HEADER GUARDS HERE !!! + +include(hunter_add_version) +include(hunter_cacheable) +include(hunter_download) +include(hunter_pick_scheme) + +hunter_add_version( + PACKAGE_NAME + xatlas + VERSION + 0.0.0-4077f0e-p0 + URL + "https://github.com/cpp-pm/xatlas/archive/v0.0.0-4077f0e-p0.tar.gz" + SHA1 + c4352e9b256ad13d9f18cdf098cf7e7e536c89f7 +) + +hunter_pick_scheme(DEFAULT url_sha1_cmake) +hunter_cacheable(xatlas) +hunter_download(PACKAGE_NAME xatlas) diff --git a/cmake/projects/yaml-cpp/hunter.cmake b/cmake/projects/yaml-cpp/hunter.cmake index ea11578c37..b161068052 100644 --- a/cmake/projects/yaml-cpp/hunter.cmake +++ b/cmake/projects/yaml-cpp/hunter.cmake @@ -61,6 +61,17 @@ hunter_add_version( 956c2b5fbf5aa0eb8ef5ef890c0328b3aa357a13 ) +hunter_add_version( + PACKAGE_NAME + yaml-cpp + VERSION + "0.6.3" + URL + "https://github.com/jbeder/yaml-cpp/archive/yaml-cpp-0.6.3.zip" + SHA1 + f1025e31d9e182d455431c9e09d82cf35769484e + ) + hunter_cmake_args( yaml-cpp CMAKE_ARGS diff --git a/cmake/projects/zlog/hunter.cmake b/cmake/projects/zlog/hunter.cmake new file mode 100644 index 0000000000..b11193552b --- /dev/null +++ b/cmake/projects/zlog/hunter.cmake @@ -0,0 +1,21 @@ +# !!! DO NOT PLACE HEADER GUARDS HERE !!! + +include(hunter_add_version) +include(hunter_cacheable) +include(hunter_download) +include(hunter_pick_scheme) + +hunter_add_version( + PACKAGE_NAME + zlog + VERSION + "1.2.14" + URL + "https://github.com/HardySimpson/zlog/archive/1.2.14.tar.gz" + SHA1 + 94e5e7f431093036e1529dcadf11c2d779954886 +) + +hunter_pick_scheme(DEFAULT url_sha1_make_only) +hunter_cacheable(zlog) +hunter_download(PACKAGE_NAME zlog) diff --git a/cmake/projects/zstd/hunter.cmake b/cmake/projects/zstd/hunter.cmake index e9af78eecd..41bde7bf66 100644 --- a/cmake/projects/zstd/hunter.cmake +++ b/cmake/projects/zstd/hunter.cmake @@ -21,6 +21,17 @@ hunter_add_version( e770f4ff39ca7b40790e2fe61339cc84b63c0a8d ) +hunter_add_version( + PACKAGE_NAME + zstd + VERSION + 1.4.5 + URL + "https://github.com/facebook/zstd/releases/download/v1.4.5/zstd-1.4.5.tar.gz" + SHA1 + 8059ef26c3d7dffa4d6dad64511c0675e46c0da6 +) + hunter_source_subdir(zstd SOURCE_SUBDIR "build/cmake") hunter_cmake_args(zstd CMAKE_ARGS @@ -30,4 +41,3 @@ hunter_cmake_args(zstd CMAKE_ARGS hunter_pick_scheme(DEFAULT url_sha1_cmake) hunter_cacheable(zstd) hunter_download(PACKAGE_NAME zstd) - diff --git a/cmake/schemes/url_sha1_make_only.cmake.in b/cmake/schemes/url_sha1_make_only.cmake.in new file mode 100644 index 0000000000..ec504ee9cb --- /dev/null +++ b/cmake/schemes/url_sha1_make_only.cmake.in @@ -0,0 +1,51 @@ +# This is configuration file, variable @SOME_VARIABLE_NAME@ will be substituted during configure_file command +cmake_minimum_required(VERSION 3.0) + +# If such variables like `CMAKE_CXX_FLAGS` or `CMAKE_CXX_COMPILER` not used by scheme +# setting `LANGUAGES` to `NONE` will speed-up build a little bit. If you have any problems/glitches +# use regular `project(Hunter)` command +project(Hunter LANGUAGES NONE) + + +include(ExternalProject) # ExternalProject_Add + +# some Hunter modules will be used +list(APPEND CMAKE_MODULE_PATH "@HUNTER_SELF@/cmake/modules") + +include(hunter_status_debug) +include(hunter_assert_not_empty_string) + +# print this message if HUNTER_STATUS_DEBUG option is ON +hunter_status_debug("Scheme: url_sha1_make_only") + +# Check variables is not empty +hunter_assert_not_empty_string("@HUNTER_SELF@") +hunter_assert_not_empty_string("@HUNTER_EP_NAME@") +hunter_assert_not_empty_string("@HUNTER_PACKAGE_URL@") +hunter_assert_not_empty_string("@HUNTER_PACKAGE_SHA1@") +hunter_assert_not_empty_string("@HUNTER_PACKAGE_DOWNLOAD_DIR@") +hunter_assert_not_empty_string("@HUNTER_PACKAGE_SOURCE_DIR@") +hunter_assert_not_empty_string("@HUNTER_INSTALL_PREFIX@") + + +ExternalProject_Add( + @HUNTER_EP_NAME@ # Name of the external project. Actually not used set for beautify logging messages + URL + @HUNTER_PACKAGE_URL@ # URL of the package to download + URL_HASH + SHA1=@HUNTER_PACKAGE_SHA1@ # SHA1 hash + DOWNLOAD_DIR + "@HUNTER_PACKAGE_DOWNLOAD_DIR@" # Archive destination location + SOURCE_DIR + "@HUNTER_PACKAGE_SOURCE_DIR@" # Unpack directory + INSTALL_DIR + "@HUNTER_INSTALL_PREFIX@" # not used actually (see install command) + CONFIGURE_COMMAND + "" + BUILD_COMMAND + make PREFIX="@HUNTER_INSTALL_PREFIX@" + BUILD_IN_SOURCE + 1 + INSTALL_COMMAND + make PREFIX="@HUNTER_INSTALL_PREFIX@" install +) diff --git a/docs/contributing.rst b/docs/contributing.rst index 5b125cadc3..6df5d7bb55 100644 --- a/docs/contributing.rst +++ b/docs/contributing.rst @@ -33,7 +33,7 @@ When contributing please follow the style guides: Before adding or updating a package in Hunter, the package is tested. Tests are done to check if the source can be downloaded, built and linked. Head over to our - `repository for per package CI testing contribution `__ + `repository for per package CI testing contribution `__ to see more. .. note:: diff --git a/docs/creating-new.rst b/docs/creating-new.rst index ad3aa68282..e46f958e05 100644 --- a/docs/creating-new.rst +++ b/docs/creating-new.rst @@ -11,4 +11,5 @@ Creating new package /creating-new/create /creating-new/update + /creating-new/test /creating-new/patch diff --git a/docs/creating-new/create/cmake.rst b/docs/creating-new/create/cmake.rst index 6bfd19a0f0..5d8e4f9753 100644 --- a/docs/creating-new/create/cmake.rst +++ b/docs/creating-new/create/cmake.rst @@ -16,19 +16,19 @@ Examples of such packages: * https://github.com/google/flatbuffers * See `flatbuffers/hunter.cmake `__ - * Testing table: `AppVeyor `__, `Travis `__ + * Testing table: `AppVeyor `__, `Travis `__ * :ref:`pkg.rocksdb` * https://github.com/facebook/rocksdb * See `rocksdb/hunter.cmake `__ - * Testing table: `Travis `__ + * Testing table: `Travis `__ * :ref:`pkg.nlohmann_json` * https://github.com/nlohmann/json * See `nlohmann_json/hunter.cmake `__ - * Testing table: `AppVeyor `__, `Travis `__ + * Testing table: `AppVeyor `__, `Travis `__ Default behavior ================ @@ -229,12 +229,6 @@ In Hunter sources: * ``examples/hunter_box_1`` directory with example for testing * ``docs/packages/pkg/hunter_box_1.rst`` documentation for package -Git branches (will be covered in details later): - -* ``pkg.hunter_box_1`` branch for testing -* ``upload.hunter_box_1`` branch for uploading -* ``pr.hunter_box_1`` work-in-progress branch for adding/updating package - Fork Hunter =========== @@ -448,56 +442,6 @@ If you want to have two tags add another line with ``single``: Since you don't know the pull request number a priori leave it as ``N`` for now. You can update it later. -To locally check if the documentation is still building you can run: - -.. code-block:: none - - [hunter]> cd docs - [hunter/docs]> source ./jenkins.sh - (_venv) [hunter/docs]> ./make.sh - -If the documentation contains spelling errors or unrecognized names, the -documentation test build will fail and report the unrecognized strings. Fix -any spelling errors and test the build again. Any remaining errors can be -fixed by adding all correct but unrecognized names, string, or terms to the -``spelling`` header at the top of the document entry -``docs/packages/pkg/bar-baz.rst``. In this example, -``bar-baz`` would be a package name that is not in the dictionary. - -.. code-block:: none - :emphasize-lines: 1-4 - - .. spelling:: - - bar - baz - - .. index:: - single: unsorted ; bar-baz - - .. _pkg.bar-baz: - -Add entries for each term until the test build completes successfully. - -Common mistake -============== - -Please do not forget to substitute ``===``. - -Good: - -.. code-block:: none - - hunter_box_1 - ============ - -Bad: - -.. code-block:: none - - hunter_box_1 - === - Commit ====== @@ -516,380 +460,13 @@ Now save all changes by doing a commit: [hunter]> git commit -m "Add 'hunter_box_1' package" -.. _testing locally: - -Testing locally -=============== - -This step is optional since we will run tests on the CI server. However it's the -fastest way to check that everything is ready and working correctly. - -Script ``jenkins.py`` will package a temporary Hunter archive based on current -state and build the specified example. This script uses -`Polly `__ toolchains. - -Check you have Python 3 installed, clone Polly, add its ``bin`` folder to -``PATH`` environment variable, go back to Hunter repository and run test. - -On Linux: - -.. code-block:: none - - > which python3 - /usr/bin/python3 - - > git clone https://github.com/cpp-pm/polly - > cd polly - [polly]> export PATH="`pwd`/bin:$PATH" - - > cd hunter - [hunter]> which polly.py - /.../bin/polly.py - - [hunter]> polly.py --help - Python version: 3.5 - usage: polly.py [-h] - ... - - [hunter]> TOOLCHAIN=gcc PROJECT_DIR=examples/hunter_box_1 ./jenkins.py - -On Windows: - -.. code-block:: none - - > git clone https://github.com/cpp-pm/polly - > cd polly - [polly]> set PATH=%CD%\bin;%PATH% - - > cd hunter - [hunter]> where polly.py - C:\...\bin\polly.py - - [hunter]> polly.py --help - Python version: 3.5 - usage: polly.py [-h] - ... - - [hunter]> set TOOLCHAIN=vs-12-2013 - [hunter]> set PROJECT_DIR=examples\hunter_box_1 - [hunter]> .\jenkins.py - -.. admonition:: Stackoverflow - - * `How to execute Python scripts in Windows? `__ - -.. _ci testing: - -CI testing -========== - -Now let's run tests on continuous integration servers with various toolchains -and platforms. Hunter uses `AppVeyor `__ to test for -Windows (Visual Studio, NMake, Ninja, MinGW, MSYS) and -`Travis `__ to test -for Linux (GCC, Clang, Android, Clang Analyzer, Sanitize Address, Sanitize Leak) -and for macOS (Clang + Makefile, Xcode, iOS). - -Register your Hunter fork: - -* `AppVeyor: Getting started `__ -* `Travis: Getting started `__ - -Branch master -============= - -To understand what should be done next you need to understand the structure -of branches. - -* Name: ``master`` -* Repository: https://github.com/ruslo/hunter -* Testing: Documentation on Linux - -In branch ``master`` there is only the ``.travis.yml`` file which will only check -if the documentation is building: - -* https://github.com/cpp-pm/hunter/blob/ea9de264d6c1b05484bdc16a9967c3cb8cca9048/.travis.yml#L57-L59 - -When you open a pull request to ``ruslo/hunter`` this test will automatically run. - -Branch pkg.template -=================== - -* Name: ``pkg.template`` -* Repository: https://github.com/ingenue/hunter -* Testing: *Nothing* - -In branch ``pkg.template`` of the repository ``ingenue/hunter`` there are -the **template** files ``.travis.yml`` and ``appveyor.yml``: - -* https://github.com/ingenue/hunter/blob/pkg.template/.travis.yml -* https://github.com/ingenue/hunter/blob/pkg.template/appveyor.yml - -All changes from ``master`` will go to ``pkg.template``. The only differences -between ``master`` and ``pkg.template`` are the files ``.travis.yml``/``appveyor.yml``. - -Branch pkg. -================= - -Branch for testing package ````. - -* Name: ``pkg.`` -* Repository: https://github.com/ingenue/hunter -* Testing: Package ```` on Windows/Linux/macOS hosts - -Real testing happens in ``pkg.`` branch of ``ingenue/hunter`` repository. -E.g. branch ``pkg.gtest``: - -* https://github.com/ingenue/hunter/tree/pkg.gtest -* AppVeyor https://ci.appveyor.com/project/ingenue/hunter/build/1.0.2352 -* Travis https://travis-ci.org/ingenue/hunter/builds/274507515 - -All changes from ``pkg.template`` will go to ``pkg.`` branch on updates. -The only differences between ``pkg.template`` and ``pkg.`` are -the files ``travis.yml``/``appveyor.yml``. - -Branch upload. -==================== - -Branch for uploads. - -* Name: ``upload.`` -* Repository: https://github.com/ingenue/hunter -* Testing: Upload archives with binaries to cache-server - -After successful tests on ``pkg.`` the branch ``upload.`` will do -uploads. E.g. branch ``upload.gtest``: - -* https://github.com/ingenue/hunter/tree/upload.gtest -* https://ci.appveyor.com/project/ingenue/hunter/build/1.0.2287 -* https://travis-ci.org/ingenue/hunter/builds/270324624 - -All changes from ``pkg.`` will go to ``upload.`` branch on updates. -The only difference between ``upload.`` and ``pkg.`` is -the build command: ``jenkins.py`` vs. ``jenkins.py --upload``. - -Branches structure -================== - -Here is an image showing the structure of the branches: - -.. image:: /creating-new/images/branches.png - :align: center - :alt: Branches - -Fetch CI configs -================ - -Since we are adding a new package we have to create new CI configs for it. -Fetch the branch ``pkg.template`` and substitute all ``foo`` strings with -``hunter_box_1``: - -.. code-block:: none - - [hunter]> git remote add ci https://github.com/ingenue/hunter - [hunter]> git fetch ci - [hunter]> git checkout pkg.template - [hunter]> git checkout -b pr.pkg.hunter_box_1 - - [hunter]> sed -i 's,foo,hunter_box_1,g' .travis.yml - [hunter]> sed -i 's,foo,hunter_box_1,g' appveyor.yml - - [hunter]> git add .travis.yml appveyor.yml - [hunter]> git commit -m "Test 'hunter_box_1' package" - -Run remote tests -================ - -Currently we have two new branches: - -* ``pr.hunter_box_1`` contains new package -* ``pr.pkg.hunter_box_1`` contains configs for testing - -.. code-block:: none - - [hunter]> git branch -vv - master - pkg.template - pr.hunter_box_1 9f60453 Add 'hunter_box_1' package - * pr.pkg.hunter_box_1 4a7626d Test 'hunter_box_1' package - -To run tests we need to merge both changes into ``test.hunter_box_1`` -and push ``test.hunter_box_1`` branch to remote: - -.. code-block:: none - - [hunter]> git checkout pr.hunter_box_1 - [hunter]> git checkout -b test.hunter_box_1 - [hunter]> git merge pr.pkg.hunter_box_1 - [hunter]> git push -u origin test.hunter_box_1 - -Example: - -* https://travis-ci.org/hunterbox/hunter/builds/276514711 - -.. image:: /creating-new/images/pull-request.png - :align: center - :alt: Pull request - -Fix AppVeyor path too long error -================================ - -If you see error - -.. code-block:: none - - -- The C compiler identification is unknown - -- The CXX compiler identification is unknown - -or - -.. code-block:: none - - ...: error MSB3491: Could not write lines to file "...". - The specified path, file name, or both are too long. The fully qualified file - name must be less than 260 characters, and the directory name must be less than - 248 characters - -on Windows build, adding :ref:`HUNTER_BINARY_DIR ` -environment variable should help: - -.. code-block:: yaml - :emphasize-lines: 4 - - - TOOLCHAIN: "vs-15-2017-win64-cxx17" - PROJECT_DIR: examples\SuiteSparse - APPVEYOR_BUILD_WORKER_IMAGE: Visual Studio 2017 - HUNTER_BINARY_DIR: C:\__BIN - -Example: - -* https://github.com/ingenue/hunter/blob/05bd9cdbd03a5772302c65abb9119722b9b8e08c/appveyor.yml#L21-L24 - -Fix Travis log too long error -============================= - -If you see error - -.. code-block:: none - - The job exceeded the maximum log length, and has been terminated. - -Adding ``VERBOSE=0`` environment variable should help: - -.. code-block:: yaml - :emphasize-lines: 5 - - - os: linux - env: > - TOOLCHAIN=android-ndk-r17-api-24-arm64-v8a-clang-libcxx14 - PROJECT_DIR=examples/OpenCV - VERBOSE=0 - -Example: - -* https://github.com/ingenue/hunter/blob/92cb26bd0bc5eeb14525f56b3a068fb072e2e5a1/.travis.yml#L55-L59 - -Workaround for GCC internal error -================================= - -Travis machines have 32 logical cores and Hunter will use all of them by default -(e.g. build with ``make -j32``). Because of this system may run out of memory -and GCC may get killed: - -.. code-block:: none - - g++-7: internal compiler error: Killed (program cc1plus) - -As a workaround you can limit number of jobs explicitly by adding -the :ref:`HUNTER_JOBS_NUMBER ` environment variable: - -.. code-block:: yaml - :emphasize-lines: 5 - - - os: linux - env: > - TOOLCHAIN=gcc-7-cxx17 - PROJECT_DIR=examples/mkldnn - HUNTER_JOBS_NUMBER=4 - -Example: - -* https://github.com/ingenue/hunter/blob/c1e12ba21940b8418d1e3d596b653ad3bf588e11/.travis.yml#L41-L45 - -.. admonition:: Stackoverflow - - * https://stackoverflow.com/a/35011967 - -Excluding tests -=============== - -If all tests passed you can skip this section. - -If some toolchains are working and some toolchains failed it means the project -has platform-specific problems. Note that you don't have to have all -toolchains working and there is **no need to fix all issues you see**. -If at least *something* is working then you can exclude broken -toolchains and you or somebody else can apply fixes later. - -Please follow these guidelines when disabling toolchains: - -- **Do not remove** toolchains from ``.travis.yml``/``appveyor.yml`` configs. - Comment it out instead to simplify enabling it back. -- Do not change the order of toolchains since it will affect ``git merge``. -- Leave the link to broken job: - -.. literalinclude:: ci/.travis-NEW.yml - :diff: ci/.travis-OLD.yml - -If no working toolchain is left for ``.travis.yml`` or ``appveyor.yml`` then -comment out everything and add ``TOOLCHAIN=dummy`` test (see -`example `__). - -Go to branch ``pr.pkg.hunter_box_1`` with CI configs and commit this change -there: - -.. code-block:: none - - [hunter]> git checkout pr.pkg.hunter_box_1 - [hunter]> git add .travis.yml - [hunter]> git commit -m 'Exclude broken' - -Go to testing branch ``test.hunter_box_1``, merge updated CI configs and run -new CI tests by pushing commits to remote: - -.. code-block:: none - - [hunter]> git checkout test.hunter_box_1 - [hunter]> git merge pr.pkg.hunter_box_1 - [hunter]> git push - -Pull requests (tests) -===================== - -First push ``pr.pkg.hunter_box_1`` with CI configs: - -.. code-block:: none - - [hunter]> git checkout pr.pkg.hunter_box_1 - [hunter]> git push -u origin pr.pkg.hunter_box_1 - -Open pull request to ``ingenue/hunter`` repository, to ``pkg.template`` -branch: - -.. image:: /creating-new/images/pr-with-tests.png - :align: center - :alt: Pull request with tests - -I will create ``pkg.hunter_box_1`` and change branch before merging: - -.. image:: /creating-new/images/pr-change-branch.png - :align: center - :alt: Change branch +.. include:: ../test.rst + :end-before: toctree Pull requests ============= -After CI configs merged you can open pull request with package itself: +After CI testing is done you can open a pull request with package: .. code-block:: none @@ -923,45 +500,28 @@ tested automatically: :align: center :alt: Package testing -Branch ``pkg.hunter_box_1.pr-N`` will be created from ``pkg.hunter_box_1`` -to test package: +Release +======= -.. image:: /creating-new/images/pull-request-testing.png - :align: center - :alt: Change branch - -Upload -====== - -After all tests pass the pull request will be merged and upload run. When upload -finished new release will be created: - -.. image:: /creating-new/images/upload.png - :align: center - :alt: Upload +After all tests pass the pull request will be merged. +New release will be created: You can use new ``URL``/``SHA1``: .. image:: /creating-new/images/release.png :align: center - :alt: Upload + :alt: Release Clean ===== -At this moment all branches can be removed: +At this moment working branch can be removed: .. code-block:: none [hunter]> git checkout master - [hunter]> git push origin :pr.hunter_box_1 - [hunter]> git push origin :pr.pkg.hunter_box_1 - [hunter]> git push origin :test.hunter_box_1 - [hunter]> git branch -D pr.hunter_box_1 - [hunter]> git branch -D pr.pkg.hunter_box_1 - [hunter]> git branch -D test.hunter_box_1 Badge ===== diff --git a/docs/creating-new/images/branches.png b/docs/creating-new/images/branches.png deleted file mode 100644 index 3ee14b802e0da1930bfd6abd5b1347ec311dc5d2..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 93738 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 diff --git a/docs/creating-new/images/pr-update-version.png b/docs/creating-new/images/pr-update-version.png deleted file mode 100644 index 36a4fad8744be405ec14eb1b957321327c175a97..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 26997 zcmcG$by$>dyZ1|qfPi$jNOww#bW3-NARq!NF-V8Bgro>acZ1Z>AVW(d(hMLCLnE;- z^!KcHt-YUhyz6-P-hb%8Fmum!Uvb9g{GJo`R9yiFivkM?2?<9@QC15H2{{k^`*s%v zJX5h=kBfw4C$1zbt>ZDXorYmRG0;Khgjm_4joF>t6M*%J#vYe(Y4frKiL6b-h4*uaoi2esp{Wq^{-iN*0 z=V@I$kiiibr7-3V&#EDVG}rk`4o_6Z1*1Kf755%fX@?##2{}lS)l8k!!o~5H?QnYY%O6#P zsltIK`1ttC?E3mstlD{AMJ^O6Wm0e9=onT0)oEc!`%5>B(BxO$N`xWv6s}u( z$i|nh7Y7pw(-vM`19-m1i0+iAH>Seu((|pKTdG7Gb{F2Y1Yh;S`XOg<{K;UK&N>UK zJn!Ys940BTS~DX8{z^H6{LG;ROJ3DQZh=R44)dw53U7wElT4<0cNY<6KP3srwVU-u z%hbe9q|Qw{6;x3T_IA=E?C%C;vW)MTxosw2MJQZ0-Zv<@^Groo)z5UU(X}U%9M$4@ zW2~pG4Jnz>Jc>fFZ*-I(X!A!ka|;d@+snpA*R9Dcxd_8*8%y4&cyGidBordaGV}98 zp34*UPEC;>R_cMt^6M`%ZJI1MH-EZ!v@vF&s;^%s6N20M9;fr62UZOY#1A_UnL@QQ zw3l%&^-XG*!c*1Wu7P5>mB_$@IUt;pzc`#d&ZjxTagZL!qp!f7C5&^Y@Cs9xw&k?-$ zBfEYXm6Q*a4bH;uYy%;``MaIkx_M8P*8$-K#`RCUf*d&_Luv#pk(l7kH`l*42(trF z(osqkX!v?MoX-z6!n6tS)#W{ke6AR!xdH_UoE&3aZ-i4A*k3$^^Q z^U3!i>~Wr|opRx;c)?~JJ?O8Di%WmUfkC}}`}P66y{SFV(#PJOEt1Tp1<}XeM)k1e zY#DptW+Ojilc*O4Q@mfQ1NV=1O(%`a34)q7xgEf!Xy9R6R6nTlNYfU$qM>ow1#RR6 zS|tSxi0x)PT_nglgZF_;f9*2^`ODzkSv@UwV)sGL89YK3Xhj6Gn3{oKVuoht zbfheU24!rW?J&)NA=IO?iFuq*kt$p={p3p)K_6|q8jyHKB&=&L8kSCO^DGaVk8y@h>NHVoO8kh-l;BL&8qI- zWm1)}k07YvvJVc!qAMT%@S}~&p4|-x^JOcwd8Al9Rc`x&%(&7@?&;H~W@hQNwSqPb zhs3L@8Ishr)KpYY6|JloDhyhEyx+VzthOC)Y-srL^XIbwSaBLG)%EpG>#0{nm|f2` z^IVg$65R1bf-RI$(dZ!}Yj*+N!H>XBa+=wm>B}}TsSz?fOqy8LFWqX2Yp&&bezzex z&~XP#JmeAVO|H7CCa;LLTz9x@u2dndUy%zO*&Znori6h@#X?_hT=z<=%-+t9HGz_{0H+5^DEzx zHY?WfA|-hH2GvJX&DF2>q9$zfCzCD-pHWj7aL8#2hKYw~u`onuv4q32S;83*Ea6%9 zoQP|V(T@ZKhY)2mXI}9FqX2RIo@iPrpQB$RogsMGSXhXR!Y_)+VdWKmp-$_zMYEerLlVhM#m{l+g5IFCxIAv z2n6E(f|m2)z2>_WGAg7LG{@P4GnS0~}p3)0#FZRFVOK}*pehglR!{KXd z;nNmPigqjrv~3@Wn!Qrwy&3_#qo0l+w@YR8FV`1KB;U+? zH}6n7{;o4WIYiXd)RdHPu-0enV}{J&HqE^|J>76Z9yL@?u4;EVEyQl|$vnuc8}pV~ zF_kEDn%U*Eo3WKIRr5UF-TL(_IVB~`4SzB^iXqnpCLc2mmZ@>O}$!(iG7OWaK?RyeKQCXW0g=OV55)I+ZK$p?rj82G2T|AU*v~^(1G?Eet#%b=d+)X$#=Bd-hGP4CYx+{~ zdn$VuLw??TKd@B&kc3kBRXjyE*0e;}+fep%pH6XQZKmT*Wr=IzJ5SQsmecx27K|u1 zu04FxR3^ik4HevNX=h`17&y{phCbjtGM-v{`M&%2MtdVMp5D!Vo6SL>F7}(G!G6zNg}*-Ib7vy`sv`{j6RIFFZ$ItIDU13SBOnJ0fT<*3p z+C4OcE2MaI7I9gQLT&C^6yV|=>7IJ=hk?+Vb6&*Z9wLV=Xw41YU_htU_cww%^Ta1+zbLUZ^z60V% zM%@m|-fVLKHiR^ZysWAlb#H&2Hr8|biC=mPGMC@G)7{+s{Pnf9q9+nd+aw$Y`+e-? z_Zf`XYP4RIIgc&{u}vQ2`oMux-ik^T{kkqp1rs&3KKQWRC+QbYLgJ)yQU=aL>}bdG zkG1KWvo>5-PLBC340cjDS6WijU6Q?sSxCmZ_m$l|X|}iItLdtxYyQ^muCCC!gD);? zFW!HR)(?6=CoB2x>6zH02-1^*Wq)^i-@~%{?n7=_vv70SzH)`Rh3_LSuCD0Ee0+TO zub#h`giW`2ztfWWc|5AZ4I%*?R=PHQ{}1J&_R$;Hs0&xaMTQ|&L%YMGVPJ$B=LP6m zMh4LH29>onA8w9x-T5T`LmQ3$>dl6hXwCA;%*@Pv&%(k&o*F;VsC1J2n&^z99Vv_U z)q>`d5cBwE7r(p*P}h|dI$tZXFPbuXaj`}Y`V zfuQ}*ubk@M=%Ov-kW*<) zwN;l-qS0H>UD~R^StgYzQ@ok=U~pai_hui<_3E& zaK5=SQ9QM4dvSR<%&w<+bA2V|z8e{aj!p7~N?UtuCJG9|+;X#K3LKh(kb9)oPlG)- zWobfx7S+!C*Ni=nGI|M&Lst~5)i?^tUNyA*I#n3sc2{*>+N~g%qX#p-*E@a;?7<5T z3Zi?bp`wyKGWNLCu=-nfH~K>rr8i_GG^I{29yEEk&SsOuYAA5RIn3zyygK5VJL7Qf zMGbv^L`Y4Y_W83((TL3Ng&ZY9oK{b%%Y7La3`w>~MniuBi)WR)zecioch=V4+ueT} zB`cqzlEgJpvvP8=RgQsy(bL_H$yX3JUxWjhj%#kdsvzI%j|NN2EYBI#O_)ux{4L%# znIXV`F0k zDfhRxg{ZYsGc#(*;>~f{B)-N_hIvTH!^{Eh)=Mq2=79lKBy~w49`9e@>2c~j;=V;u z>RZBrTMh{ciLk3>bUNE#V%dkqGE#UPh6e_Af+T{FfZ)4LK^#gEA!N_@tiA3X$d2*Pu?4!X$Be>;HT>+glXp*Y?T^AqmODj!zAx zckEaD5*Vr}AX`_wV-=4A_*ZydJ=&vAC#+*f|RetRhG_J8E)s zpI7Qy(D2@j=BlvVw^82S7Tbd|wxsdfewfC0L5rvT$Tk{7FJp1!e6qLDTCR*$pbjUm zbF4nN5aP9`f2E3lyJ|##eq?!}Y)V6^ z4c256h>8)Fq0uk=$HvAY(sRAXXQsP$UR$t|aOWj=v%eefSSR1xcmMU-{cvsY>gr04 zz;Bj>v=!PEbXuYX55r+%Vxqr+flymXsa;hBci`psFUWbw=&CC4xq25yNfdT)s@&Y& zd+PdPL%zbxvldKI#d!SnZlZ+eS@bY?(8WE^SCdv_LoSfy<(dnknVzy0CD()}B_&<5 zRfJD7R_giq_$bGAu}!nsbXZc0x!vPJGi>;!r1Ms_NKxcB_+x>*l~ooS>zA3BkZJqr z`jN7rz}yc;p_JM>RJHd>_OdSzva!CknC~ww{_fmr)*9~YM9mi$6{QHl!_b#3VZ|Bw zQEjUt|A4@ZoxQlNt?hjjg(+UEeu`#99LX^MgAKd|<9a{o`|z)@S5?*3xnD?ktBR_P zD))F^EkEn|K%Kz2H`~y$ASuMli%$!dIS&nTM$&{dS@ZG-0j;#sxuepQI7zaYdzpa3 zKKA_mu_SKuZ%1HT>q^f@lJoO$il@~m7lv{Au{7?*8ZEDY-0A?ow>IvXmMh}qL{9=; zhZ#}fm{aqwCDnBKm-Q3QTYR?v%A>u29-Z+KO?mSZTtS~p4`~^}ThojIH^otx?cIL} zJi@`j0YaL4_POrfmr&nWHf5~8Z-e-I_`&n~R+V8s4*kJH1q?W)}wLds>be|#Jj8v1mkMQb8sn#5rM=iWUM zZnJyqOf(L`{n+tyx>E(++VjB=u6D^kV3SF6%kRd>D>0It;Z-Sam?bcjPpdM)Q162H zKPX<#nvIv2*Q!!0_Ou;?)?&yX6$3tk+Ml?V>mjq9 zzgD!;1g1I(D>Qr#vMHPH@>9qmK!}yRHijlYEu%@+^YbLzo{Gz}zG}^gUMn!i&~|jj z3;CAc(TO)mh!|*4NC>Hl8H*ZaiyyG~?)!_<8|lRU(8+HPTi>C@i`wIJNZI4(juxPM zFmud1<#RDsf1EjwgE{>C>UhkEH_@i5b8jq5rWDSCbxBmo9@3-@JLl z#N{+oW2b9>q}&Wem&TpKX5f>{!Lpo`R4cGWIXO92*{^k?urW)rv!5v|hi8p=eOYJzDY(L{rVn=61OqrB zh95G{04E4SZt6P@W!qCu=J{o@^ zygf*-)CiOREKd#)Ac3P4bVrt1d7_87W4OaeaJ;$)aWC@=Q4;n`BRd%KpIlyHwQ8#`ZRc z{7a{~#)MCw`tXf+;vT1~l9V}F5K$#$m1$z{?Zo+k?91x zQva|Xr%L?Xcmj^@erI94Sf6`B?9BM<%dpY#AG+IB0*Xb6;ku7;Cc%vO#vi@FOBkS@lb zd=Xl)H#s>e^85Pwn&GB+@;5@(AiLS|XW`sMWJYe1U(p{6!Y*ZhFyBdE;UVfIbhF#E zx0ul#rSEm|L=l%UGF-hO>Kl`a|8HbHbXmP1k zY{qrt#pJAH!OdHr%(OX`k?L^kV$r(W?s3I( z8Fa+|B06Y%>3Mb<4mJ|WUXnyeY_aI0N2bl5f-EeGZxM+zRN)m}$9`wz5}q|>Wn2ry zMa`SD4b?3zl9zM9-7N(H9`$`DVe9!P*KwLjnE6-7pLwL!w_t-Jb z??~<9wtjV9dV+_ChkrEcprh<rWQFimHHoG;12agVhWLE5E9kH{e*K1WAU8Gh{a;b$E}%Jd=dHu0lAMK8v) z>NKSGUjY;4dwCEd4kK?hBdh;22 zB!vfimDkI5+gCrT&zay_9*@O1gGbOdo(RQ=K+m}3>q&>`GyUuNUymw$=ptl$EoMQ&E&&9@uwWW4ZZJAl* z(@1&z*zvwW!7K>$2L}gTkKb}Wyq8?@X4$%R<3{PiX{vipNRIE?K@apQ4c^t85q;70IGcmD&cqocBu+y_h}`hbz5 zcH4%=MxVn$VbnYKzE4bWlF;bs>2Yy!IlK8$$2}bh3#_f+dSdQ6-;2SlC+)TT3Hi6h zg9eqeX-07<;AV=S>!20-u z^a1$$$2}7n55-F40ZZJq72|{ckgRMOQ)sps%S2)Npdy4TfLKJvD}uDfM)G5PZeV24 zTm+_M;Ts%BnhqI|Vq)+H!U|QHapiPr5%4jL5&wW>pEIaz*3eU*SZ&k7H>Cz11-XPF zSw)nPVaIxP>RQ_kot-e1_ZYgrV|ubRc*Sp_FBuJ}3Emb1;kN}s@B^q2f*)>wd-e&i zV1{U3wcBTVlJjm~`fnc;H1FX7b{r~x3y;Ay!4H5WGeqB_b!PxkOJm4!`F*m}`Bql8D~BOX(wl-GI3{9ZN;0xgbX8T= zr#C5bSh%>~E`fQZ^*KYP{3Piun%GVi5B0ga03J3QB~{qzPEG}}Ty4P9;yBnFSJyPY z=U9odb3CSHe?Iycg`QhXj577bctLD%a4_)FdFU`S1hlz1Rltt##dkU$0B#gKJw1=N zrf3E2i4uF_lwZpe@mY1<<%sV7r#ATRWIGH6IS+W7ESAR@6~)GNTwjBkfaQN?VS(hq zT9m*5&r}9k&>}@&PlvR$bdkOvj1f^liVFc1caWs}p8T*yfdET7HZnraXB|q`BjR%@ z(qdX`Pn>sP{s^Hw$iCFNkFSS2W@l&D;fo9z{3OWE!qV0Q)&NC*F)7Q4^~wB4W{onF zh5(9=cFUzSG4~>~Khtg|0;lgMTx=8Ip^styhBfbfYFhaKDI}U%BfU#tS_c{KFAK_Y zXXtR`5(0$9!6J-kqDTjxo0sSI>$~(l2k6O+L-N^j1h-B(Qmg`8Q;?OCG8KgOaZC7w zgw=01M%kXwRCTn5Uo`MsfpXSec)K;Vq!-znudn99AAu553>ZHR1c{_x8!;bi)dd1S zT1hT5=-Cnf`T04kv{|naCY+u=VIkatH@sV*uS=j$rx`_-CRSl0$Hc@0#Qh=tS~(x@ zMk_?q_yQE3f3iipL~b-5_!2Qn?5cDFY3U=_RHnvb{AsvAqXAl#AY zz2-R~(P~k`eG*jR3Ee-7T%_UR;sSGwpx5Y7Bc|6#2=4ywUoV61rs3M9V^<1H+o)$0 zwU}PIyW&9+SM+>~cN4&SY}gp+==4cl2(U~Aqs-3zy6nLG)tK$>?jm4f9{Y6Bn85bb z8Ukp_$HU{dwS=4*DqbYi-`*}wSI+jT=hkG7asbpX>^M_n*6fLii78G2Oy0!ntMl~? z;8It>!@op~^^mcJ(1r+5#`I?OE*Vzf3M}khYu+!DR?yE ze#alFXz>`q$c*Taw&Y)U_(n+Yh`j~blaa z!pO!X@KEBx!z5x05%Tz6nsDW|jcXn#rOi}qWJ zHO)_Kh5Gt$H}vuffvKQaOdFdIytpIJr7-uzDIa@2xa-pKAYH}`z5qMqzWC`rV5+h3 zeRA@ae?iJT^qV$GkrKNSs_iG(`1z~f<4{g!)<~DPT-YaZnQm`ykB*L7?7NJ%OD7|AdCYjLN_zr z*$tb7BgV{I)h_M3a%Mw^5^1XlN1HxZ53msvqGtG1p4$14{;QtZwx$Y(`NH%GW!NFM z#`$r6?C5| z|2|X7xF$IyExi{p=rOd+I%vPjnJ(o)8vB|Py6-ffmEn1G*81z$3+s9S2kv^y+2NL9 zSj)VB{~j(^stHg|c2<^_mX^gS;_y&69~c(hjP9SS&{ppd^(m)^p!hIsTPqB&n%N4k zHo}CoR1uBgrU6dyYM~|V(BID?-!%nCS^7ur}Jh}PD3YdOhzJ!G z742N9Bv^Kl)0Y#4)LOu6l9Wg^x=T*-7~o9Ua8OKG>E~`GlIP~=c!67`nCW; zqVaBZdz*@ehRa)r8v)X{52GKb9%%&%my3vq%t9gj^z`)X?AY=k8W8AM&OE0UvKqhB zGsjdlQ{~j79X}D^E@|0YO#S)dWQUT7C}wl z0-PzR(jyKI$c0~hPF^T6takkQbxBKB^b**fXXKD~BDOXx(oY~=g~K2C z9BAd_Cd+e`Ls^u-1`$CZQb}Mk2|5ePg~Wl7t^rV!xdNFR)AAzpa7gU=q%ucX%8PJN z!H#rbfAl)1rRCaOt`527;2Y(>nx&;B0RjnIwddP621Y`jZUuOHc(@h{Ba@sG2U6tP zP?~X7N43ph$I)tkQvYmtTzJB#=|n?zd;*n34t(0&(`$YC`T2PfSe9+}z-%JeahMR1 zmDNUSjca=T^PdOsYNNd@srY-S1QZk$w6xp{nT)f!jg3+9bQ*7?=*TMww@v#=>+M#d8{)x6!%vc5o(=wmOzLMWGMu_5|O67Gh@way!o z15!hrdS9415FtyWdk6y|m0$lMc9i}(J%2)#(f%&f9gRyzLt{85=Dvv?f{_fR7GY=V z%CPr6Q^qQV)A*|*th%O#2(vu(Ga6qXHn`_7jOw-~aHpg{BZ}nH5k^Y-&7K&%7W%RI z#nWlGrZMQ2Rj+eh=&#XNuUF03lI$&Ru)`L=4}th3J8c*SV|fn+6iAOB5mRExz{Hdb z3VF%2_wUoum%H!HCx2sNGY>UT#W$=_Nd6{iW%RZUlZ=%W3+y(UOI$t&;@JEb>_v2Y zfWK*-_c`bi!^Wnjde%@-QJ+~^0Ye`cBkTn)z%h195G#&iVJxmSZ2B=fYw{Yx6npE$ zl_{FlVbBVw-;$A#-@F_CZ2cR+pE@ zw_1m(@D z%DTyBw#zQT7dCMEqfKtf{KaU`3bW6}Mt-iFMMR6Z$!iec77w`UzK*u|62J20d4FR4 zTD!RjovKAk{IiaP`lcooIr?m(Ax%w9pvob6*77CaKt3QgE6Zl^6Z#O?3`VYS)*s;n zaOr98Gedt@UUSXTA{0oeQEgRarKLGdZW!!iuQhO|!dY5u=P@bJ?n5l4@v*TU*I!#( zl=%3Xn}Fv&`iJMPb5_-F=h}@3-sxv-eH?fP2MIq$GhsA_ED^e{uB5rNw1f!EVN*WW z>nnb}V-d`mo}NwZmxv#BmY3 zo^+K7G%8=lnVvm+hK(HoDAX5C5WKM-ZxcdvqA>q(R%qv6&N?19F$A!f0rYTvIO2EA z-dvMDf>kB<=d!Zjy60Z=sTtay_Lgqlt2t0`09vb+ffRoIG86yykZu)K)q$a*HU6*h zHmhG@qW{54ZSB5Nr6_;CzWK?4H8rYE)f zAd#7znhI$Z11T0bS68>Zw7aJ#KR>_N>HxSxqbM^_d;DM26Jk;hrUOI6EXdrr-Z>M5 zxpzG`1le+1xbfuiQoo_>d!C$}$ji&uzjQvZKuPqc8gUkU@g2$TfQzhWLie6+@VY$`V#WI`(4msa&v=nSK{a$It|~?B`-8+DyaM9sw8=Nc|CdZ zqzlJT+2=?>*$LU?mSuuNd~(o3>%Ki53me1A45N_rsxK|wIX_&F9ax5%gPOG39Jsmr z>dT}&XL{DkGVhM6s;c7R;ugPt5^@l7Z?EzTeLzghcZk(2yk6`SJ3N#jb+g%FpoY%PRth&&@PF- zSTGHcs2W$32hPC;_=_@_JlOR?izL!*l<{kr>*%)30s=&TSYyN4nMaNB{sU!EM}K-Q9DU0$MI|C~LcOO(B;^ zgT(5h79ocp4A}O{-N7El$*ChazTXat4DW|uySiSjr8?cYNA{(-n07AVR9Hz?9(a;u++i+E^AOgp$SIF9O z+nwF0m;agNeE{K40DyGXEHBysq;vFlj|dMZkkTN$PzBx;D760Oc+V(IrL56Y_|Tx}}?sp}f$`L8CbtO0)zhF1HbHn7MQli&imR?qp!^Q3-nSA$d3&rJ?6oD+~GqGf&oWf9GnHa2T`QkQ;A`5GA? zy1P`pBA!3Z1FGg0fC8Id!^6@fyw02}`9MDcH8nM-IS3BLa%a-TAzC9t4?#gL7(`)m zaNSZgbP7RxYfH<_;^GK9WImT;&v)-YCS(2mi!>dh9{>*etv*+p+47bUjzaM*SephNL&#orIP*>S|(SM4B3{m5wO55ojQryno;N4!UQ$ zl*YFUUW5u+yqo7wtlIe|thf%~p2uxK5+v(;bFk8LQ2ML5!&f(EDq8_hbsEUFEuSi3 zB4p8Xn24Faf&@4@(3LkWG4bK^LKMhe>rIQnJxVPXTid};uAqFbT4GT7giT>H8l3Yx z$mmoO;^Ia0NzAuv2O{?e_+uLB;;}J7#dYej{{i$E8pJ%03fN$TQ>_M?j}YOUg?Ax} z{9EGOm06D`0GZVJ@uN^Xzi$s{?B3;Gq0I8)V6&Dk|N0gB2;@>lRI0a(RwphhO3m8Z zx_3V`EX=U+t(_p9hRLYn>>swLIJC9D)S1laxd4b2o!UyPIHHZuI-5n=6+W0D)rtZG zi9GEZ$G_m75{&(gN8NZD@oy$kb|B7SEXgpSL6gmkJR%p23=O42fOu2_*x*9_a+)&h z*e49)G!mX@xI(XH$+)s9VnQ5=F_IKa-PKsQ4O*-t8~X#=D&x zWzsSxWPA`Z#qxu23jYSA?w``r&2V6-Q${r}{KF)@FYazDlVRcDbSH3p#{cpi%=XF7 zPv3)XQeqjP?XUIw&{q5!j*fwWDlpx6sY*qwsVi*{T5%8z8j%GSD8J$xSzX`0<-zz_ zRa;Ap%{Y@oK4=djMc>qWsaH3`aqpGC} zmFkz9J$Zr>edpFUnfP9x=O-jg)Vr*ti|Ha8dz~fgaQ@>uH^%4kY8X6ib zXi4snqyP3ex`mB=(>t%-HpYfK3Tk^5R`RAD=UqDnd&C~>%D?@jzn@l3iYk0v<+Loo z-Z|;`A6okJ#dg$ssosMF9xdQ4(NQX11<4=Pk&U;=-2`EuNu6&`~Yh|q5lA^bnORyw2=96yZP5Ql}~(6sSs#;@iw&th|3ObABoND_a8nK z7jFRu`QJ#kcYrrRG6!)Hr0Fdn92D9!JsKBBb;+$So*TUUrVW><_1I9p!-bMj=W+Ir z!#IfG3knJVubFPXy!4tVyiMP258NK@ zIW1(49jAun8bMnzxYGOWwNZ)ahV>I)&SZX!iW&s1M%voi$bxbkoHiiS(?w9c+bXRC z<#uKtgTzs^l+;v!O0YIr?e;Le(zf2cN zBVpu4Bvp%iwD;D z4I32pikxl%oVe8*$OW(2E=CAkoaZ6yX?zY$iCwA!a>&TYTa%^5@E@SEcQ=w|=o$b- z%cH&l$G;rTtGc!_Y%3QjcH(^zYwlx*Y~ENfCXgQ3`y=u%XJLw*}Wf` z^K){L@|b=j(4@h5pipS|1v_n>{RGybOZy6A2}S|49@_6NwtCnB{$Vt=*d6`2)KqrS z86slz!+>a@IEx8Sperk2Q8GaKBllI&BNNwhVb9gOCyC!9TM|sI${J@N2Py4>C@CvH z@h2xIHzz-r`Mhk(^Z86Aa18v#gM2#Wqb@sl^$>1QD-t}|o70H);LWYA zh$EcP-l3ty0JC}(*XOmlxaN1MLQ^^rk$?l6o8OdY{X|;uSiw2VtEk|?g!rN7-8$4* z%;aUp*BWwitp2faSr15%I9C8mXW5RDG?$%^6-@ktcIq5kr^%B>_gkugGB+KF6 z`6n`#v&BF>xO4@OK4L=7^dt$zU6#=#8QAr8;t2pxQ+}~AnhQHZ_l(y!AciNHqKDMdL;G3V4RM~!Hef-*X1f{O9`prA$N zkF@Rg3lcQ8fLcBTmztm-G~&uVNe6~h(PIw&AV$;d_VdJ((dRkMTcFcsI)aG!Ddon^ z39(S*rf_l7?p<+)=%R;k&|vn+eZ<^F&-la7gX^yzmc1An=F)dU+$2Rr$acIyRLTpl z1ql38Y=|`uAuB5@s4IQD^z%c)gaDKIO@K@D{7IKpI4nS-L*N8|EDKe=O;JhnI}~!b z=pJKO94anntceZ*Mb3|X`ewyNkJEuhO^B3?jEs;_2ChjF1YKfOaGb7EF|AusGAtdO z8C+XiQ#P5eu^R*IN{AS9HG2RMqGz6<6}HcX?gCm79vvM`rXKsAJ0@Uh1?Ykws()sY zSMSybneO2dIiM}V}V!46QNzE|3&7f&}lKCW|Q!~p5Z>s~C$GSWpyv>jP? zz8_iD{1gh!csUiBDx%iA;~~A;K&@dQUj98Nx<}*kXiOs)cRS7-QV+jvkxkhug447= zX6=y%QUaI3PSJK`OO(T0D#Eg^xj9odEMk)X7u2wmlrKefp-s_~{zU@~UsE1k@$rA* zhOx=X2CutFl0Iir&+J=FK$h+iDvOeIqPo_H;m4zr({aS{Zr*!%l;@7{g- z)|}?k6_Cp5jQ-N4BUM*a^y?-(twL_n^*kVDB)w-;>sWRt*t_QI*Ka>gPfw#GBZ*Eg z4qC*O8PV>ouB~-=)(G$Dobi*cwo;c{>ur&HO^uHq{oZRmJvx##BLp2kG&LM2N9dot zO)x>}yHp)ZHJJx_4VRR@1cShMqY_Qolut@y7kS2-)er0(8_!alAOpE)TS#Lgv+^Yz7bOH(9VCcl=J z=mX3=qm&Ex`U6Kg^D2>`>CMf}v9b7ElqTZIe$VL?1WbUPeN6GQ)sQcq zp`ab2O-n-ZK3?w}+X|SCi?=}C?6xzbmL^IZRYBJE_yxn`sS?BDe5Z=j?|a1c)J`FX z`1`NEMUsPZEhusU*M~1`&3ZmU%i4_Y9E(hkHv`;N53TQP({S9 z1gpRoaR|gOt^%&^yR*_FVdia%#<7K;bd;5`6fxc~r<*42jr8~RDJv@n{Is7b`7w*$ zkHQeALsh^3Z%LzK3aGhvtGFZxAW-VR&_HPtdvaeNuBnyK+`qpF?0pvKlrPu%#P*q* zo16RdLlLny+%+!H)-l-vg@U>@Tdy_fWPa=F8as@_tNdEkqJMT4>L@lgDCWby;s&jF zAQoZ{WD{ubfo}Hy3*@L927);t!WMq}>pM{AufD=Q!20DU0@}!KMT)ukrHc60hP>sPKywxO7Tw@h-<$>hLfdb z;U_~A~rPETIZ>9=z0J)$CHK2bKI2Qo96S&p< zG&W68ALG-c45I(=rAms$NOjrE;kI1fZa&xBE!KwA? zE9ilI_*X_)R@>L#UtL*gH&e3#wwLA6zn&HaN+PfXAc6&C>|a*}=M_Ykf;>FVZf<2h zZ+dQ3enl5RosJ=?o+@Y`QZk|Q&5lr!yFtK0D+@`C>QyyUQkzlnYjjF2fZ>A!zE$QKZD{eMJI^v z!=(^VBK4 zCHyF3Gz=A`)hQM#{y>HZ3o=>XG3MMjn|{WDcL1Ox=%qG`El5=wRdc`BKT zni{|v`{&PdE2I1VxuZK_mRS7!{EoE$j9j($W%8eiiGMQDVu|&K@a7hL#r-=rHZEr7 z{25Wz_S@yybP5ypoD9fk{k!CP4-e!ulAD6DN$syGC2l9NC%LR1Oev5c4h#;~u12N* zT^xPc<&YkbU4r2_97wSI(VSib;59NaK`rG2N=6+KG)cG57IzbL5`Fvj4RF!bk=uzi zE1kfW{PW>ZQpLY>J&#TQcWird_#uBra{A3@bM0OJWx!x*)(-E8p z{dPCnH-N7!NaQlbdJ}RZ;Qr^YgN)oFC&CN3N)^v?O z6Im|QQv);(V1bwRfCz_7>z~)A#l%?r*-eYf%TN9s59kcl7zQ4V*9f?a+x^OIrP|Zg zb&o>e7x-ctdF6hx+iHMWX_Ot9{J#@Xe$sOUKEG>>$Qg2v`gQ>)W|D`7hOR+NZB$g$ zxxnB1hp1+VLkKETK{~f5ZFzeU#}6BTfk~>}E-sXmA@9~d{W$==fA_(}S~BjvdqLHd zVs0F_n>r>ak^6VbxbCO8Nuq_d)m6L2!jb840NC+|Ry%^Rfv4|T$fHAq+X11fYxofm z!s@itfE+KIg(=%|x-Xgc8CwG}9$qwXKm|$e1t-8-PxyFno7D3>?~BK0lrJ%=1$*Ej z@*8lt;ZEB3A-QallJkRurJzV?6a)nz{a?9#|jysP-zy$uCF>j zH^%axkynbgbfB<|&CF1kw+|VY-z$*Tz?WClycl_6 z(wHqDRaH~dIEi zm<|UucoIs@2cQ@FCtvB^>sV>*aUkF*@`-%WP%2`R)kP zgPm|<_6N?PWd%S|3qsdb04w(;lUWCDyCHd+eXcxJeUB&fpEHyLgqd7XSJxBAV)6(f z>zEs?qV{r07<>(ol_=o2%9?V6pv%I0qk=^t{W3O1&>=A^Fy`~;d*DleJUu)LUW1|h zU(KC&Fx=n2|0RTwAfhGFL!vICMsy)+l;~s;CDB(1YxNqU_iiP+=q-rVi51bi=p_h( z)q=%6^7(x4%;(paT?$2ZFx2(Yg%4pGP=?=CUzlW)f) zu)jlrE8c=(bOjUL7lG>(DpVUWw^m&@tH*eO_H2yZx5bg&wgkNhj)P^UCY>vY4k~U+ z1S2ec<=*JcH1MJ%hIk^taTPDgmqU-o9@r{>%ZRd1p;*S~`SUdJP7**tyze`dk1-)hjb(|6Ax`PW7h-Jd z9x%HD*2$(W5IwT7zzkLvyP3o}ni!OV6NiCvf_j6o;Yc*=!_bg)ultgck_9mz!!{G# z%$3BiUiOxfB%%IDO-8nJ_cQ9l15B4TB+a=wg2!`EWj;Gtm0{->zRH~Wyf@I{ z3adoGosMd(Oe$3j!^Oq*FY7^Jq6@5B_q|nLPEFHxuxEfXeVdHm&dx5d{*sPtK9KCy zW$5uvm`xsmT?YV+h9^0sjT{_!^_ZdgT@TUzMn=v)~f*?w<@9bK6w$k;F5k-38sKN$4Z7=k535X_ccepgVGb{ z=nJ0d5Z~aA8jA!RVFFU^B6f&=(G86By+vHge7h@n#yVXmzgCwN( zPH=^QO3Q3+KX+YyeK&LIqt2ZIYFR-aF%yN5HE_0nY`}ucC|GE_8v2mMZ!bb=AS8W1re-^_v^1*^+k4gi3hkHM{*o& zH(xGrF1J87K7c6D@8D&S%9&_zhf8o6UQ=KVls7SXpPHKLVVe(znjA7T`2ekx=F1w# zuGJQ*`}oCo8gyJUz7`Vyq*?nJwtC+C6($*b^c=)_yg=jH$cTQykjVbX(VXu#>O%mk zJCO(1#bZqq;zOqj|8GtV%|DzNOU7v0;BlPWpw%NcA_kC1By}5=tEVIi!po=ByN8QZN|Hv|yYbaWCZru3j3J*}-WZ)`z@ zu_sMr2p9}*olH3mW#5-K2J{$jf5*qg|7;f&WXO_!MDd+%(h$U zyej$;Z=Wj7TZy$ z5LhXP^Fa(4aW(_UMb2FIA31Xc6@%^KR>^G=Z|Q+U|IA;;oyJS2&FGU<7wqUn(aHC% zJ#hU81T~!B{cIuQ`6|I7I{K>*atfZACEBNdT%4YPiW;t>8W+0Px^yG5q2g&?M>TuO zCxg@J{2;+vYuD{?Dzdwg`)!DZPpzcq(OFYbmZSxpQMBiFQ1wtymF=YE5atM6S3s{s z;nj@^pdauYvBgA0kfeAPpOxoO>---YQo&EiCZswxkg|`SD_d%knPkrLMhWi_gb-PSMLq;abv=PpTf?7=$O|hY zCd}#d<2^0)4}3c&PN>}`v3btB-bMNkML}IJM**ltg;`Qyl(88tninse>=4asAlN4k zdmiyQa9WjM3lF1IP&4m$U4 z+DamC5EYRF71uJ~@p=lM)rbp#>)VccsEyg8N@!#Ek+c2ku~o72 zS-IDQ9|#!jq_mmB?k0he{n<3=>Hx`haMemz;+i+XOdYgA16}`J4Uq>_!(SAUsVVOw_XDLc1*s|d7=)Ghfr?UrGx*$G3Qc)LC zIP_K^V@Qr_OW`;kH;{d^qv1BSiv_m4fj0+I<$92uw?Tx^wcOEp$zYJ;X+p+j)Z2&< zac}CK*bN*Di8MT`oIgG<<`We3JU=~bI{wKCHrYbmQb!M+!cI=V$FQFQu)1@-4^8eQ z2tT;eMQYw_p1q0Q+5544=g7!Dh!+6kAoz^$F@w47Y@>L=hfR>|PmDVFlk6v_GhWU# zqO0!QYxZua$FA!idiLcaGGvtuEqCG~3>b4D6|Tw^hu%C~MiIM-q%J*PbLJMp9~3JJI+S(!9LRp7I@)Hdw_BSKpgl?Z|yd#x=G z@HCktqbA~#~UpX=Mv)*r%&6)ybZAFD)&PpBMFAfVU*|@cH(l^`n1CuP>etB zX@3TpnZ>2O$DwdBchY(bf zf^Od&)*PJEX2K9bX6jE5i;a_ixId}ZxMoc*lRz<-TR%9v_yo2(nnyc0nsJ_w@J$#84C@N!DSjKxL09dQM1VY$u$tY8-0)F z)*XO_#b2`n3V6X2(oJtb-sJH1wHq(Hq>v6`7cQ?a9Z(TSV<*G*oNoKPHz3*?DWoRi z+9y66$r>~E76)wu(9(~Rj^FzfamQ?OX2xrB{4j&2nytbWz?+Z;s7#H}JmK76jnEEE z78R+B=b6b0S9VpIYn`Opw`sm#>xU{$ND;y(qy?e?s`M%nDMT`SW?AWi&0f0)L2}eA zc9A|;(1*CLkSB<}z=ZuFDT(h?-o%vqt^s{QduG9^G%Y>7t*tF5@~7MkNX=ZUuZ*BA zXi3$jrKPo>K_vshJU%|>4>TzJ_P%dyPiE@{<)IyrS3-3`hkfr$++WWa$7j7`()n%5 zPSdGI)vu%byDj4PkOURX8N^sgu3aO4(KDs9&PAUx3m}Ac4pWfWN>`4T)n|_Sn}T&k zI*hPte@!s?UvP&0KWS6Unf8L9Z}TgT7KZa;3Dl8ALbNkgiaafE1A*}Nd=V8%72T&}*kat|CdS6-T%n-nV{>C!yGjmDPy z!2^wW3Uxd5V_QM{VYc2=lY%TNHJHjDm=FrGxGNOi{V-dm!F*m;ACICdP3pkKOr4rKd^kQnzUzr=`Zp8l8C2h{ppE)6foX1; z7`UC7e5Np0XWLeh{X>dIp_-q7=pY`Aa)Z9k?E! z0*VmY-vk&wH!%hMq-+DdXp$<;TRG%(Re zU$3$={^iOR5+Y30nQKwICt5VsdiR9^3TZ08+-IUcS8?2#o7?fBm^>Akv0z%4svJA&Oa+3g9(wlyW zM#xq@0(W2~P`h6>RP~nC@5}7BB5`U5PCnZM2IOlXcPzLn@jla{I1mPw z<8Vtqk*ypdMg@%7rT1dswg%UGIX-G@Gm@$>2-)iO)QZ{S2f2d%{+#{-DkWYGfJL9c z;Pd&x@}I3Gr%EGK?1U6EM%-sC`kOOUsPbj+4Nt_v?du22R?HZ$3Mjw*g226+#VheE zE@Cfs0D4Y>UUFwhO)~ybnexH%d<+;i^({&YW8Cp@b7%>G(AF+Ux{gN>K=>`uQKj}K z91bsF)6#n=FDFL~B$KcsKcwkx!Y3giz?`Pyjsm-1VT9N{Lk&N%t0z|^IZNdK(M>5x zZWLqWdGu%!EhV`e33be(%0b~(vE@MDf6bR`obJa8`iB`}hbAWU!^USmJ97#O#xsAK zeCWXx+qFj=mQC%Ku+CIzLsVf<8YL?(?)g0E8NT}evmyPTY$EPL>aXIeHav$n)wQ2M zz9?VdiPDc?hr*)CXQ1qGd1;{$#V4(5bqC|~AuTP<>-4!$EtAv4};o`>0$q7K28f?GOUfLFC~0opP+(g^ja2aF=vC;PK$_-qSn8%&v$a%b&YF*z?DjAVUarb=_Z z?|Iz03o1sx_|-NPpdvxkc4lZu)0!mIc{%uRR8e8kz&PER~yOJcW3H-8>Do=YOep4UPT&o|RORnm3oIu(Nj zUnW!0;c-LFrhgniN%#^VpnYyxFI&v7(^KZuUGZtsIn{7XgO*9#W`uZX;d1=1E0#4b zo&&@h>ys6q;_l)uSxAv_F6)fRi7G9*_! zc&paCL;pO>W;nacXzNT;%>Kw|7>}E&nS#~M{P>&4kNu%^=#r3}8$2?&;!`6)-f?uQ zVePHmanNtehjqHINwM!309`>}KUvTXemkCNted%iv0saEw7a(#DdKcLk(iqFiVXg1 zmT!V~lLCX|fM|N=CWZtY<5tG9<^q_N6`@PlUOx{WOq}DbAoGA`TKvzGRlbajA&FJ) z%a2?~GdcE^x9x$acM)S2u=jBB^T*x_Hc!}9y@f~h z=+Pry))TxiMLkM{kDVQ;Fb|t8rckaN!uFD@^{8D(7rNq>)H+pwL{W{ZWL#mW6cYa; zFQ`1vn+XRi07&L(3wudPo%FMNZZ>^aS-Ck<>%D8aDYKM-rU!u(fBa}|Z4C_14TVR`EyDx2M32yY^!!!I*1pjl1t&Z@cLFo^0Mj8h%D}@%cstO znRT!mfD@)YhKj@`8@$K$Lo?+Q?oVSTj&^@gQc!^NtJ$%;-h|pMp;e@Rx9362C|JX= z&qup;SDNU4xS$e{MRt84{`?B)%zyyPlF`w3;qKJu(Fx}eZ;(u9nJK%fyWn|LNtO8| zlR;#fW1szgx7#{lWpDpOU_Rf$5ekL=hAeQzyfrE3HH!R|%dm(4bD%CQjh5?s?2RVV zi3My`y-iJt*GV!1R(PusX$KdUNUqo#5Y?I9S-ws9x|w9la|um${f^Fpm)+c*jYYBS zZ8ex3JyFX1l}7h5aeB48Wo=>` zVxMFB~xC!}5`)A7l*AJE8N=BsYd_WlU1`dy9m@9d>HW#=X z0l5+yxFdrUoHYX2z^uiOUx6 znJI;A{c?Qlh7vC4#1G#R_ddh2UDjpy<9ogUN8OR8Qr!W_4)X_K@i%^Y(UX;%`!+vA z&6iHFAhMA3;8O0{cu>5l*_JZ+eq^sgb_E{|hKpkGBazKK%|Yc0Bk$%maFm=f*i3$1 zY#Kpf&Ao!F8h9no@H9v@zZA|>DDo;AIynE9GyY!oV_2HH; z+ZHibc4csf-PzWN-v!14O$|v&YO9?CKkT@$H0=-fay1H9o60v5lp7^ax9j|E8b8ga z5D57*Q*30TrI4`WIZ>Yl4i^2-6l(>)qCPS0M%|@ET*6m>bDt$SNT4HH_|ECpY%f9L z$OFZg`;>^h?zFE^@_|-=1~~F;bm`EAcWYEuq`r~icz5^k=Bv(z-cO~XrC6CS9Evae zQ7FnEDH%RgGJdG?LzmVlf(`oc*P~B@=9&^%*zwTo`ND~AUsh0KVx=`HC*FML z$Q*x4XM--eE0IHDM`e+u*1a1fJ>&Z{cXB-tx5>AGROH+vtEpwoWe;AxBlW&Cv6NHm zed5I-j&28*&r{M9$0V5tFeeiKHs94TEud7A?D1C;%pmx6vLfdN*^5E8NN2v z8ih7IWM3ImR$*?JI7f`xVz)gjOYMliXxNJk8XpyWKjAzP9gTv@JuOX2p;<_0nEkor z(bIMMl5t7gBYn3}E|<@OB*0bqwt={d|C;|Y^=5xLeD;md%tCgbfL>bCxK2#=YZcqn z&>kwBfSL8pz7zW6fZcAMhg($<66L2ymo*)vX&QNttbfWa|H3od|gs{BsCwu!uh!~1rXlA%s=vKE;6+y;!Sh1*;ik6OI<}Z_cPhYQTzVgxhfP^&I?w% z2NR<5$A5ph!Wo-S*cVwJ-g-9Zub<}Ew9WbGMG}eI`9=|Rqn}**ijF>XH0VcP>(>rN zy~u+@FkGz)TI?&{eFdlK?BhF1XBITa`q=3Eu@XZKEdwP{tcqklC~BQ#<0cNifrcCgeCV$=Jm?%WXC4R`;=4MS2Cv>VP-94B;{5!+h`gG zE^jC?6=G?_Bx2@SF4@iTpi+K+|Eeb*oll-Y^I*?9NDiXE+c)-nYrs>VUwrw~%&scg z@q@{VIE!M6`BKA(d5KYpig5)_-0(x#$E%(xp*>GN)*WTRUJ9FEW0pr=Ve4nAr=>#p zM+%zj`pY5HwLaj8Z`yScdkc_L+s^9+@%K<+p3lgL*XRc1Tr!8ljfG<3S*&8Bsip8l z8Nz{aXLI4nIw5i2^ga#C^lHQ+^M z3=1K`Y*4d?bjLAIw6$1YF(yFluYW8|YB4N|=vWrTn;4e=#ee;q&m>|#W%#w3$VgdU TSpxo?5{{yrs%(jjiQj(!X(#}U diff --git a/docs/creating-new/images/pr-with-tests.png b/docs/creating-new/images/pr-with-tests.png deleted file mode 100644 index ac7e9213eb6b203e9e11f10c6cc137aeab309ef8..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 32292 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 RK-czYsq3qisy=@4KLGYB-wyx) diff --git a/docs/creating-new/images/pull-request-testing.png b/docs/creating-new/images/pull-request-testing.png deleted file mode 100644 index 6e6e9455a4c7be7765e8a88cd7d4f7cd1800fe65..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 24709 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
  • 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 F{}&HU=%@ey diff --git a/docs/creating-new/images/pull-request.png b/docs/creating-new/images/pull-request.png deleted file mode 100644 index f7998e3c148ae47d7f359c22a2d06a32a206ff0a..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 32520 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 E3s-BD_5c6? diff --git a/docs/creating-new/images/upload.png b/docs/creating-new/images/upload.png deleted file mode 100644 index e964d12666a6a2fb3ef481f75c01503d20672668..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 30829 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 for :ref:`continuous integration testing `. +You can also test :ref:`package building ` and :ref:`documentation ` locally, however this is optional. + +Testing will be performed automatically on pull request. +To perform testing on push to yours Hunter fork, ensure that GitHub Actions are enabled for your repository - +`Managing GitHub Actions `__. + +Package build testing will be performed for multiple platforms (different toolchains). +If some toolchains are working and some toolchains failed it means the project has platform-specific problems. +Note that you don't have to have all toolchains working and there is **no need to fix all issues you see**. +If **at least documentation test is passing** and *some toolchain tests are working* +you can make a pull request and you or somebody else can apply fixes later. + +If you're sure that testing is failing due to system specific requirements and +NOT due to package dependencies or platform specific code errors, +or your package contains components and needs to perform some special tests with different examples - +you can :ref:`modify default build matrix and scripts `. + +.. toctree:: + :maxdepth: 1 + + /creating-new/test/ci + /creating-new/test/local diff --git a/docs/creating-new/test/ci.rst b/docs/creating-new/test/ci.rst new file mode 100644 index 0000000000..9b5ad595ab --- /dev/null +++ b/docs/creating-new/test/ci.rst @@ -0,0 +1,174 @@ +.. Copyright (c) 2020, Dmitry Rodin +.. All rights reserved. + +.. spelling:: + + workflow + json + +.. _ci testing: + +CI testing +---------- + +Refer to `GitHub Actions Documentation `__ +for better understanding of Hunter CI testing. + +Two types of tests are performed, and appropriate `workflows `__ run: + +1) **Documentation testing.** + +* This workflow will run if any file in ``docs`` or ``examples`` directory has been changed. +* This is done to ensure that documentation is building correctly. + +2) **Package build testing with various toolchains.** + +* This workflow will run if any file in ``cmake/projects`` directory has been changed. +* Default toolchains for tests are: + + * Windows: Visual Studio, NMake, Ninja, MinGW, MSYS + * Linux: GCC, Clang, Android, Clang Analyzer, Sanitize Address, Sanitize Leak + * macOS: Clang + Makefile, Xcode, iOS + +.. _override default tests: + +Override default tests +====================== + +GitHub Actions `workflow files `__ are located in ``.github/workflows``: + +.. warning:: + **Please don't modify these files.** Review them to understand test steps. + +* ``ci-docs.yml`` - workflow file for testing documentation + + * Checks if files in ``docs`` or ``examples`` directories have been changed + * If that's the case, runs :ref:`documentation testing ` on GitHub Ubuntu runner + +* ``ci.yml`` - workflow file for package build testing + + * Checks which files in ``cmake/projects`` directory have been changed + * Sets up `build matrix`_ accordingly + * Runs builds on `GitHub-hosted runners `__ + * Uploads jobs status to GitHub Pages - `Pakages status `__ + +* ``set_matrix.py`` - script to perform build strategy matrix manipulation + + * Checks if package has overridden build matrix + * If not, substitutes **example** property of the default matrix with project's name + * Checks if package has a build script override and sets build script accordingly + * Merges build matrices if multiple projects are tested + +* ``set_status.py`` - script to perform manipulations with `job's status .json `__ + + * Splits job's .json if multiple projects were tested in one workflow run + * Sorts by toolchain alphabetically + +Default package build strategy matrix and scripts are located in ``.github/workflows/ci``: + +.. warning:: + **Please don't modify these files.** Instead create a ``ci`` subdirectory in your package directory + and copy files, that you need to change, there. + +* ``matrix.json`` - *include* part of `GitHub Actions build strategy matrix `__ +* ``build.sh`` - build script for \*nix systems +* ``build.cmd`` - build script for Windows + +Build matrix +^^^^^^^^^^^^ + +.. warning:: + Don't copy and modify the default matrix if your package doesn't have components and you only need to change build scrips. + This will lead to you project testing toolchains diverge from default ones in the future. + +.. literalinclude:: ../../../.github/workflows/ci/matrix.json + :language: JSON + +Each line defines parameters for a job that will run on `GitHub-hosted runner `__: + +* **example** - subdirectory name in the ``examples`` directory. + You need to change the default value ``foo`` to your project's (or project component's) example directory name +* **toolchain** - `Polly `__ toolchain +* **os** - `Supported GitHub-hosted runner `__. + Set this according to toolchain. +* **python** - Python version installed on the runner. + Change this if your project uses Python scripts (that require specific Python version) for testing. +* **script** - Build script executed on the runner. + The path of the script is relative to directory where ``matrix.json`` is located. + If the script with defined name was not found in this path, default path ``.github/workflows/ci`` will be used. + +**Example matrix override:** + +A part of ``cmake/projects/Boost/ci/matrix.json``: + +.. code-block:: json + + [ + { "example": "Boost", "toolchain": "clang-cxx17", "os": "ubuntu-16.04", "python": "3.8", "script": "build.sh" }, + { "example": "Boost-python", "toolchain": "gcc-7-cxx17", "os": "ubuntu-16.04", "python": "3.5", "script": "build.sh" }, + { "example": "Boost-python-numpy", "toolchain": "gcc-7-cxx17", "os": "ubuntu-16.04", "python": "3.5", "script": "build-add-virtualenv.sh" }, + { "example": "Boost", "toolchain": "vs-15-2017-win64-cxx17", "os": "windows-2016", "python": "3.8", "script": "build.cmd" }, + { "example": "Boost-python", "toolchain": "vs-14-2015-win64-sdk-8-1", "os": "windows-2016", "python": "3.5", "script": "build.cmd" }, + { "example": "Boost-python-numpy", "toolchain": "vs-14-2015-win64-sdk-8-1", "os": "windows-2016", "python": "3.5", "script": "build-add-virtualenv.cmd" } + ] + +Build scripts +^^^^^^^^^^^^^ + +Scripts are executed in the Hunter's root directory. + +`Software installed on GitHub-hosted runners `__ + +Environment variables: + +* **TOOLCHAIN** - build matrix's **toolchain** parameter +* **PROJECT_DIR** - **example** parameter + +Default build script for Ubuntu and macOS runners is ``.github/workflows/ci/build.sh`` (bash script) + +.. literalinclude:: ../../../.github/workflows/ci/build.sh + :language: BASH + +Default build script for Windows runner - ``.github/workflows/ci/build.cmd`` (batch file) is similar. + +* installs `Polly `__ and all necessary dependencies +* defines default environment variables +* runs ``jenkins.py`` script to :ref:`test building of a project `. + +.. warning:: + If you don't need to alter Polly installation or predefined environment variables, + don't copy and modify default script. Instead call the default script from your custom script, + see example. + +**Examples of override build scripts:** + +.. note:: + Set ``matrix.json`` job parameter according to the script name - f.e. **"script": "build-ubuntu.sh"** + +for Ubuntu runner ``cmake/projects//ci/build-ubuntu.sh``: + +.. code-block:: bash + + export HUNTER_JOBS_NUMBER=1 + pip install virtualenv + sudo apt-get install libgl1-mesa-dev + + bash .github/workflows/ci/build.sh + +for macOS ``cmake/projects//ci/build-macos.sh`` + +.. code-block:: bash + + export HUNTER_JOBS_NUMBER=1 + pip install virtualenv + + bash .github/workflows/ci/build.sh + +for Windows ``cmake/projects//ci/build.cmd``: + +.. code-block:: batch + + set HUNTER_JOBS_NUMBER=1 + pip install virtualenv + + .github/workflows/ci/build.cmd diff --git a/docs/creating-new/test/local.rst b/docs/creating-new/test/local.rst new file mode 100644 index 0000000000..4f41757b82 --- /dev/null +++ b/docs/creating-new/test/local.rst @@ -0,0 +1,119 @@ +.. Copyright (c) 2016, Ruslan Baratov +.. All rights reserved. + +.. _testing locally: + +Testing locally +--------------- + +This step is optional since we will run tests on the CI server. However it's the +fastest way to check that everything is ready and working correctly. + +Script ``jenkins.py`` will package a temporary Hunter archive based on current +state and build the specified example. This script uses +`Polly `__ toolchains. + +Check you have Python 3 installed, clone Polly, add its ``bin`` folder to +``PATH`` environment variable, go back to Hunter repository and run test. + +On Linux: + +.. code-block:: none + + > which python3 + /usr/bin/python3 + + > git clone https://github.com/cpp-pm/polly + > cd polly + [polly]> export PATH="`pwd`/bin:$PATH" + + > cd hunter + [hunter]> which polly.py + /.../bin/polly.py + + [hunter]> polly.py --help + Python version: 3.5 + usage: polly.py [-h] + ... + + [hunter]> TOOLCHAIN=gcc PROJECT_DIR=examples/hunter_box_1 ./jenkins.py + +On Windows: + +.. code-block:: none + + > git clone https://github.com/cpp-pm/polly + > cd polly + [polly]> set PATH=%CD%\bin;%PATH% + + > cd hunter + [hunter]> where polly.py + C:\...\bin\polly.py + + [hunter]> polly.py --help + Python version: 3.5 + usage: polly.py [-h] + ... + + [hunter]> set TOOLCHAIN=vs-12-2013 + [hunter]> set PROJECT_DIR=examples\hunter_box_1 + [hunter]> .\jenkins.py + +.. admonition:: Stackoverflow + + * `How to execute Python scripts in Windows? `__ + +.. _testing documentation locally: + +Testing documentation locally +============================= + +To locally check if the documentation is still building you can run: + +.. code-block:: none + + [hunter]> cd docs + [hunter/docs]> source ./jenkins.sh + (_venv) [hunter/docs]> ./make.sh + +If the documentation contains spelling errors or unrecognized names, the +documentation test build will fail and report the unrecognized strings. Fix +any spelling errors and test the build again. Any remaining errors can be +fixed by adding all correct but unrecognized names, string, or terms to the +``spelling`` header at the top of the document entry +``docs/packages/pkg/bar-baz.rst``. In this example, +``bar-baz`` would be a package name that is not in the dictionary. + +.. code-block:: none + :emphasize-lines: 1-4 + + .. spelling:: + + bar + baz + + .. index:: + single: unsorted ; bar-baz + + .. _pkg.bar-baz: + +Add entries for each term until the test build completes successfully. + +Common mistake +^^^^^^^^^^^^^^ + +Please do not forget to substitute ``===``. + +Good: + +.. code-block:: none + + hunter_box_1 + ============ + +Bad: + +.. code-block:: none + + hunter_box_1 + === diff --git a/docs/creating-new/update.rst b/docs/creating-new/update.rst index 8721449606..678b455f30 100644 --- a/docs/creating-new/update.rst +++ b/docs/creating-new/update.rst @@ -52,82 +52,13 @@ Commit changes: [hunter]> git add cmake/configs/default.cmake [hunter]> git commit -m "Update 'hunter_box_1' to v1.0.1" -Testing -======= - -.. note:: - - Check :ref:`Create package: CI testing ` page for registering - services and branches/remotes description. - -Fetch latest CI configs, you may need to run ``git pull`` if you have -``pkg.hunter_box_1`` locally: - -.. code-block:: none - - [hunter]> git fetch ci - [hunter]> git checkout pkg.hunter_box_1 - [hunter]> git pull - -If the package has not been updated in some time, the CI toolchains -may have fallen out of date. It is preferable to keep the CI -configuration in sync with the working defaults from ``pkg.template`` -to make sure the package will build with recent compilers and to help -ensure cache hits for any required Hunter managed dependencies. - -.. code-block:: none - - [hunter]> git checkout pkg.template - [hunter]> git pull - [hunter]> git checkout pkg.hunter_box_1 - [hunter]> git merge pkg.template - -Create temporary branch ``test.hunter_box_1`` for testing basing on -``pkg.hunter_box_1``: - -.. code-block:: none - - [hunter]> git checkout -b test.hunter_box_1 - -Merge it with ``hunter_box_1`` package updates: - -.. code-block:: none - - [hunter]> git merge pr.hunter_box_1 - -Push changes to your Hunter fork remote to start tests: - -.. code-block:: none - - [hunter]> git push -u origin test.hunter_box_1 - -.. image:: /creating-new/images/pr-update-version.png - :align: center - :alt: Branches - -Add toolchains -============== - -If new version of package fix some build: - -* Add new version to ``master`` -* Tests against **old** set of toolchains -* New version merged to master -* Send pull request to ``pkg.hunter_box_1`` to enable **new** toolchains - -Remove toolchains -================= - -If new version broke some toolchain: - -* Disable toolchains in ``pkg.hunter_box_1`` -* Add new version to ``master`` -* Tests against **new** set of toolchains without broken +.. include:: test.rst + :end-before: toctree Submit the pull request to Hunter ================================= -Once the tests are passing, and all required toolchain modifications have been applied to the ``ci`` fork in ``pkg.hunter_box_1`` via pull requests (see above), the original package update in ``pr.hunter_box_1`` should then be pushed to your Hunter fork (``origin`` in above discussions): +Once tests are passing, the package update in ``pr.hunter_box_1`` should be pushed to your Hunter fork: .. code-block:: none diff --git a/docs/creating-new/yed/branches.graphml b/docs/creating-new/yed/branches.graphml index 331084a829..18ae385315 100644 --- a/docs/creating-new/yed/branches.graphml +++ b/docs/creating-new/yed/branches.graphml @@ -1,6 +1,6 @@ - + @@ -13,20 +13,14 @@ - + - master - - - - - - + master @@ -39,13 +33,7 @@ - pkg.template - - - - - - + pkg.template @@ -58,13 +46,7 @@ - pkg.<name> - - - - - - + pkg.<name> @@ -77,13 +59,7 @@ - upload.<name> - - - - - - + upload.<name> @@ -96,7 +72,7 @@ - Documentation + Documentation @@ -130,17 +106,11 @@ - + - ruslo/hunter - - - - - - - + cpp-pm/hunter + @@ -148,7 +118,7 @@ - + @@ -156,7 +126,7 @@ - + @@ -176,13 +146,7 @@ - .travis.yml - - - - - - + .travis.yml @@ -219,13 +183,7 @@ - Test 'examples/foo' - - - - - - + Test 'examples/foo' @@ -262,13 +220,7 @@ - .travis.yml/appveyor.yml - - - - - - + .travis.yml/appveyor.yml @@ -305,13 +257,7 @@ - Test 'examples/<name>' - - - - - - + Test 'examples/<name>' @@ -348,13 +294,7 @@ - .travis.yml/appveyor.yml - - - - - - + .travis.yml/appveyor.yml @@ -391,13 +331,7 @@ - Upload '<name>' - - - - - - + Upload '<name>' @@ -434,13 +368,7 @@ - .travis.yml/appveyor.yml - - - - - - + .travis.yml/appveyor.yml @@ -474,17 +402,11 @@ - + - ingenue/hunter - - - - - - - + cpp-pm/hunter-testing + @@ -492,7 +414,7 @@ - + @@ -500,7 +422,7 @@ - + @@ -517,17 +439,11 @@ - + - ingenue/hunter - - - - - - - + cpp-pm/hunter-testing + @@ -535,7 +451,7 @@ - + @@ -543,7 +459,7 @@ - + @@ -560,17 +476,11 @@ - + - ingenue/hunter - - - - - - - + cpp-pm/hunter-testing + @@ -578,7 +488,7 @@ - + @@ -586,7 +496,7 @@ - + @@ -638,14 +548,7 @@ - - - - - - - - + @@ -656,14 +559,7 @@ - - - - - - - - + @@ -674,14 +570,7 @@ - - - - - - - - + @@ -692,14 +581,7 @@ - - - - - - - - + diff --git a/docs/creating-new/yed/pr-update-version.graphml b/docs/creating-new/yed/pr-update-version.graphml index e99e76877c..8aad561c60 100644 --- a/docs/creating-new/yed/pr-update-version.graphml +++ b/docs/creating-new/yed/pr-update-version.graphml @@ -1,6 +1,6 @@ - + @@ -13,20 +13,14 @@ - + - master - - - - - - + master @@ -39,13 +33,7 @@ - pkg.template - - - - - - + pkg.template @@ -58,13 +46,7 @@ - pkg.hunter_box_1 - - - - - - + pkg.hunter_box_1 @@ -74,17 +56,11 @@ - + - ruslo/hunter - - - - - - - + cpp-pm/hunter + @@ -92,7 +68,7 @@ - + @@ -100,7 +76,7 @@ - + @@ -117,17 +93,11 @@ - + - ingenue/hunter - - - - - - - + cpp-pm/hunter-testing + @@ -135,7 +105,7 @@ - + @@ -143,7 +113,7 @@ - + @@ -160,17 +130,11 @@ - + - ingenue/hunter - - - - - - - + cpp-pm/hunter-testing + @@ -178,7 +142,7 @@ - + @@ -186,7 +150,7 @@ - + @@ -206,13 +170,7 @@ - upload.hunter_box_1 - - - - - - + upload.hunter_box_1 @@ -222,17 +180,11 @@ - + - ingenue/hunter - - - - - - - + cpp-pm/hunter-testing + @@ -240,7 +192,7 @@ - + @@ -248,7 +200,7 @@ - + @@ -268,13 +220,7 @@ - pr.hunter_box_1 - - - - - - + pr.hunter_box_1 @@ -287,13 +233,7 @@ - test.hunter_box_1 - - - - - - + test.hunter_box_1 @@ -323,7 +263,6 @@ - @@ -334,7 +273,6 @@ - @@ -345,7 +283,6 @@ - @@ -356,7 +293,6 @@ - diff --git a/docs/creating-new/yed/pull-request-testing.graphml b/docs/creating-new/yed/pull-request-testing.graphml index 006bfe830b..d47681aab8 100644 --- a/docs/creating-new/yed/pull-request-testing.graphml +++ b/docs/creating-new/yed/pull-request-testing.graphml @@ -1,6 +1,6 @@ - + @@ -13,20 +13,14 @@ - + - master - - - - - - + master @@ -39,13 +33,7 @@ - pkg.template - - - - - - + pkg.template @@ -58,13 +46,7 @@ - pkg.hunter_box_1 - - - - - - + pkg.hunter_box_1 @@ -74,17 +56,11 @@ - + - ruslo/hunter - - - - - - - + cpp-pm/hunter + @@ -92,7 +68,7 @@ - + @@ -100,7 +76,7 @@ - + @@ -117,17 +93,11 @@ - + - ingenue/hunter - - - - - - - + cpp-pm/hunter-testing + @@ -135,7 +105,7 @@ - + @@ -143,7 +113,7 @@ - + @@ -160,17 +130,11 @@ - + - ingenue/hunter - - - - - - - + cpp-pm/hunter-testing + @@ -178,7 +142,7 @@ - + @@ -186,7 +150,7 @@ - + @@ -206,13 +170,7 @@ - pr.hunter_box_1 - - - - - - + pr.hunter_box_1 @@ -225,13 +183,7 @@ - pkg.hunter_box_1.pr-N - - - - - - + pkg.hunter_box_1.pr-N @@ -241,17 +193,11 @@ - + - ingenue/hunter - - - - - - - + cpp-pm/hunter-testing + @@ -259,7 +205,7 @@ - + @@ -267,7 +213,7 @@ - + @@ -314,7 +260,6 @@ - @@ -325,7 +270,6 @@ - diff --git a/docs/creating-new/yed/pull-request.graphml b/docs/creating-new/yed/pull-request.graphml index 6a38275c4c..03cabd6be1 100644 --- a/docs/creating-new/yed/pull-request.graphml +++ b/docs/creating-new/yed/pull-request.graphml @@ -1,6 +1,6 @@ - + @@ -13,20 +13,14 @@ - + - master - - - - - - + master @@ -39,13 +33,7 @@ - pkg.template - - - - - - + pkg.template @@ -58,13 +46,7 @@ - pkg.<name> - - - - - - + pkg.<name> @@ -77,13 +59,7 @@ - upload.<name> - - - - - - + upload.<name> @@ -93,17 +69,11 @@ - + - ruslo/hunter - - - - - - - + cpp-pm/hunter + @@ -111,7 +81,7 @@ - + @@ -119,7 +89,7 @@ - + @@ -136,17 +106,11 @@ - + - ingenue/hunter - - - - - - - + cpp-pm/hunter-testing + @@ -154,7 +118,7 @@ - + @@ -162,7 +126,7 @@ - + @@ -179,17 +143,11 @@ - + - ingenue/hunter - - - - - - - + cpp-pm/hunter-testing + @@ -197,7 +155,7 @@ - + @@ -205,7 +163,7 @@ - + @@ -222,17 +180,11 @@ - + - ingenue/hunter - - - - - - - + cpp-pm/hunter-testing + @@ -240,7 +192,7 @@ - + @@ -248,7 +200,7 @@ - + @@ -268,13 +220,7 @@ - pr.hunter_box_1 - - - - - - + pr.hunter_box_1 @@ -287,13 +233,7 @@ - pr.pkg.hunter_box_1 - - - - - - + pr.pkg.hunter_box_1 @@ -306,13 +246,7 @@ - test.hunter_box_1 - - - - - - + test.hunter_box_1 @@ -320,21 +254,15 @@ - + - Temporary branch. + Temporary branch. No pull request with -this change. - - - - - - +this change. @@ -371,7 +299,6 @@ this change. - @@ -382,7 +309,6 @@ this change. - @@ -393,7 +319,6 @@ this change. - @@ -404,7 +329,6 @@ this change. - @@ -415,20 +339,12 @@ this change. - - - - - - - - - + diff --git a/docs/faq/why-binaries-from-server-not-used.rst b/docs/faq/why-binaries-from-server-not-used.rst index 1f4f5cffa1..f4ee83121b 100644 --- a/docs/faq/why-binaries-from-server-not-used.rst +++ b/docs/faq/why-binaries-from-server-not-used.rst @@ -16,7 +16,7 @@ you will see ``Cache miss`` message and package will be build locally: :emphasize-lines: 5 -- [hunter *** DEBUG *** ...] Downloading file (try #1 of 10): - -- [hunter *** DEBUG *** ...] https://raw.githubusercontent.com/ingenue/hunter-cache/master/aa85dd8/GTest/1.8.0-hunter-p2/93148cb/da39a3e/a49b0e5/356a192/basic-deps.DONE + -- [hunter *** DEBUG *** ...] https://raw.githubusercontent.com/cpp-pm/hunter-cache/master/aa85dd8/GTest/1.8.0-hunter-p2/93148cb/da39a3e/a49b0e5/356a192/basic-deps.DONE -- [hunter *** DEBUG *** ...] -> /.../_Base/Cache/meta/aa85dd8/GTest/1.8.0-hunter-p2/93148cb/da39a3e/a49b0e5/356a192/basic-deps.DONE -- [hunter *** DEBUG *** ...] File not found -- [hunter *** DEBUG *** ...] Cache miss (no basic dependencies info found: /.../_Base/Cache/meta/aa85dd8/GTest/1.8.0-hunter-p2/93148cb/da39a3e/a49b0e5/356a192/basic-deps.DONE) @@ -74,7 +74,7 @@ List of servers used (`HUNTER_CACHE_SERVERS /.../_Base/Cache/meta/2695528/GTest/1.8.0-hunter-p2/93148cb/da39a3e/a49b0e5/356a192/basic-deps.info -- [hunter *** DEBUG *** ...] File not found -- [hunter *** DEBUG *** ...] Cache miss (no basic dependencies info found: /.../_Base/Cache/meta/2695528/GTest/1.8.0-hunter-p2/93148cb/da39a3e/a49b0e5/356a192/basic-deps.DONE) @@ -93,7 +93,7 @@ Meta information found on server (cache hit): :emphasize-lines: 4 -- [hunter *** DEBUG *** ...] Try to download file (try #0 of 3): - -- [hunter *** DEBUG *** ...] https://raw.githubusercontent.com/ingenue/hunter-cache/master/2695528/GTest/1.8.0-hunter-p2/93148cb/da39a3e/a49b0e5/356a192/da39a3e/cache.sha1 + -- [hunter *** DEBUG *** ...] https://raw.githubusercontent.com/cpp-pm/hunter-cache/master/2695528/GTest/1.8.0-hunter-p2/93148cb/da39a3e/a49b0e5/356a192/da39a3e/cache.sha1 -- [hunter *** DEBUG *** ...] -> /.../_Base/Cache/meta/2695528/GTest/1.8.0-hunter-p2/93148cb/da39a3e/a49b0e5/356a192/da39a3e/cache.sha1 -- [hunter] Cache HIT: GTest -- [hunter] Cache info: /.../_Base/Cache/meta/2695528/GTest/1.8.0-hunter-p2/93148cb/da39a3e/a49b0e5/356a192/da39a3e/cache.sha1 @@ -104,7 +104,7 @@ Downloading archive with binaries: :emphasize-lines: 2, 5 -- [hunter *** DEBUG *** ...] Try to download file (try #0 of 3): - -- [hunter *** DEBUG *** ...] https://github.com/ingenue/hunter-cache/releases/download/cache/da62fc35901e07d30db7a1c19b7358855978e11f.tar.bz2 + -- [hunter *** DEBUG *** ...] https://github.com/cpp-pm/hunter-cache/releases/download/cache/da62fc35901e07d30db7a1c19b7358855978e11f.tar.bz2 -- [hunter *** DEBUG *** ...] -> /.../_Base/Cache/raw/da62fc35901e07d30db7a1c19b7358855978e11f.tar.bz2 -- [hunter *** DEBUG *** ...] Unpacking: -- [hunter *** DEBUG *** ...] /.../_Base/Cache/raw/da62fc35901e07d30db7a1c19b7358855978e11f.tar.bz2 @@ -123,14 +123,14 @@ investigate problem: .. code-block:: shell - > git clone https://github.com/ingenue/hunter-cache + > git clone https://github.com/cpp-pm/hunter-cache Information about missing cache entry: .. code-block:: none -- [hunter *** DEBUG *** ...] Downloading file (try #1 of 10): - -- [hunter *** DEBUG *** ...] https://raw.githubusercontent.com/ingenue/hunter-cache/master/aa85dd8/GTest/1.8.0-hunter-p2/93148cb/da39a3e/a49b0e5/356a192/basic-deps.DONE + -- [hunter *** DEBUG *** ...] https://raw.githubusercontent.com/cpp-pm/hunter-cache/master/aa85dd8/GTest/1.8.0-hunter-p2/93148cb/da39a3e/a49b0e5/356a192/basic-deps.DONE First ``aa85dd8`` id is about toolchain. You can find the path to toolchain info in logs: @@ -151,7 +151,7 @@ You can see that there is no ``aa85dd8`` entry in cache: > ls hunter-cache/aa85dd8 ls: cannot access 'hunter-cache/aa85dd8': No such file or directory -However in `Travis build log `__ +However in `Travis build log `__ ``toolchain-id`` is ``8928885``: .. code-block:: shell diff --git a/docs/faq/why-hunter-is-slow.rst b/docs/faq/why-hunter-is-slow.rst index c062f79df8..889828c4e5 100644 --- a/docs/faq/why-hunter-is-slow.rst +++ b/docs/faq/why-hunter-is-slow.rst @@ -51,7 +51,7 @@ reduce the size from 70.7 MB to 17.7 MB, the unpack time dropped to 8 seconds. As usual downloading from cache is the best option, e.g. Boost.system Release + Debug archive has 154 KB size: -* https://github.com/ingenue/hunter-cache/releases/download/cache-234d975/234d9755a85b09bcd2f266d2620707ccd514020e.tar.bz2 +* https://github.com/cpp-pm/hunter-cache/releases/download/cache-234d975/234d9755a85b09bcd2f266d2620707ccd514020e.tar.bz2 .. _id calculation: diff --git a/docs/overview/binaries.rst b/docs/overview/binaries.rst index 1e8cdd5f8a..fc4ac5d2d0 100644 --- a/docs/overview/binaries.rst +++ b/docs/overview/binaries.rst @@ -25,18 +25,18 @@ Details ======= The default server with cached binaries is -`ingenue/hunter-cache `__. -Archives are saved as GitHub `release assets `__ -and each is associated with a git `tag `__. +`cpp-pm/hunter-cache `__. +Archives are saved as GitHub `release assets `__ +and each is associated with a git `tag `__. Available packages can be queried using an ``upload.*`` HTTP query from the GitHub branches URL: -* `ingenue/hunter@upload. `__ +* `cpp-pm/hunter@upload. `__ Note that some toolchains may not work for specific packages. Check the status in the Travis CI job details. For example, Qt is broken for the iOS armv7s architecture, so we have to use the ``ios-*-wo-armv7s`` toolchains: -* https://travis-ci.org/ingenue/hunter/builds/140158080 +* https://travis-ci.org/cpp-pm/hunter/builds/140158080 Binaries/headers are stored in archives and archives are the result of packing the ``CMAKE_INSTALL_PREFIX`` directory produced by the @@ -48,7 +48,7 @@ functionality but is extended for non-CMake packages too. > mkdir temp-dir > cd temp-dir - [temp-dir]> wget https://github.com/ingenue/hunter-cache/releases/download/cache/aaee852f00aa3a2a884281e8920315a77fb14465.tar.bz2 + [temp-dir]> wget https://github.com/cpp-pm/hunter-cache/releases/download/cache/aaee852f00aa3a2a884281e8920315a77fb14465.tar.bz2 [temp-dir]> tar xf aaee852f00aa3a2a884281e8920315a77fb14465.tar.bz2 [temp-dir]> ls include/gtest/gtest.h include/gtest/gtest.h diff --git a/docs/packages/graphics.rst b/docs/packages/graphics.rst index aa2263c0e1..d9b3fa32da 100644 --- a/docs/packages/graphics.rst +++ b/docs/packages/graphics.rst @@ -1,6 +1,7 @@ .. spelling:: freetype + opengl shaders Graphics 2D/3D @@ -9,6 +10,7 @@ Graphics 2D/3D - :ref:`pkg.aglet` - Tiny cross platform (headless) OpenGL context creation - :ref:`pkg.Assimp` - portable Open Source library to import various well-known 3D model formats in a uniform manner - :ref:`pkg.freetype` - render freetype fonts + - :ref:`pkg.freetype-gl` - render freetype fonts in opengl - :ref:`pkg.glew` - The OpenGL Extension Wrangler Library - :ref:`pkg.imgui` - Immediate-mode, bloat-free graphical user interface library for C++ - :ref:`pkg.mojoshader` - MojoShader is a library to work with Direct3D shaders on alternate 3D APIs and non-Windows platforms diff --git a/docs/packages/pkg/ArrayFire.rst b/docs/packages/pkg/ArrayFire.rst index b2d4222fbd..bff39179af 100644 --- a/docs/packages/pkg/ArrayFire.rst +++ b/docs/packages/pkg/ArrayFire.rst @@ -16,7 +16,7 @@ ArrayFire - `Official `__ - `Hunterized `__ - `Example `__ -- `Testing `__ +- `Testing `__ - Available since |hunter| .. code-block:: cmake diff --git a/docs/packages/pkg/Boost.rst b/docs/packages/pkg/Boost.rst index b1c637acd6..4bdd2b8415 100644 --- a/docs/packages/pkg/Boost.rst +++ b/docs/packages/pkg/Boost.rst @@ -14,6 +14,12 @@ Boost - `Example `__ +Since boost 1.70 you should use for header only libraries as target: + +.. code-block:: cmake + + target_link_libraries(... Boost::headers) + .. code-block:: cmake # Boost components (see list below) @@ -88,13 +94,18 @@ config file (``boost/config/user.hpp``): #define BOOST_MPL_CFG_NO_PREPROCESSED_HEADERS #define BOOST_MPL_LIMIT_LIST_SIZE 3 - - Option ``USE_CONFIG_FROM_BOOST=ON`` use the package configuration file provided - by the boost project. - Since boost version 1.70.0, the boost project provide a well maintained package - configuration file for use with find_package's config mode. - See the difference between following example: - - `Boost-log `__ - - `Boost-log-usingBoostConfig `__ +- Option ``USE_CONFIG_FROM_BOOST=ON`` use the package configuration file provided + by the boost project. + + Since boost version 1.70.0, the boost project provide a well maintained package + configuration file for use with find_package's config mode. As minimum required CMake + version you need 3.3. + + See the difference between following example: + + - `Boost-log `__ + + - `Boost-log-usingBoostConfig `__ Python diff --git a/docs/packages/pkg/Expat.rst b/docs/packages/pkg/Expat.rst index 902e9c7eaa..f874d9317b 100644 --- a/docs/packages/pkg/Expat.rst +++ b/docs/packages/pkg/Expat.rst @@ -25,4 +25,4 @@ Expat CI -- -- https://github.com/ingenue/hunter/tree/pkg.expat +- https://github.com/cpp-pm/hunter-testing/tree/pkg.expat diff --git a/docs/packages/pkg/GTest.rst b/docs/packages/pkg/GTest.rst index 75dc15385c..0e0f402e07 100644 --- a/docs/packages/pkg/GTest.rst +++ b/docs/packages/pkg/GTest.rst @@ -24,7 +24,7 @@ GTest hunter_add_package(GTest) find_package(GTest CONFIG REQUIRED) - target_link_libraries(foo GTest::main) # GTest::gtest will be linked automatically + target_link_libraries(foo GTest::gtest_main) # GTest::gtest will be linked automatically target_link_libraries(boo GTest::gtest) Bugs @@ -54,7 +54,7 @@ available in these cases. .. code-block:: cmake hunter_add_package(GTest) - find_package(GMock CONFIG REQUIRED) + find_package(GTest CONFIG REQUIRED) - # GMock::gmock and GTest::main will be linked automatically - target_link_libraries(foo GMock::main) + # GMock::gmock and GTest::gtest will be linked automatically + target_link_libraries(foo GTest::gmock_main) diff --git a/docs/packages/pkg/KhronosDataFormat.rst b/docs/packages/pkg/KhronosDataFormat.rst new file mode 100644 index 0000000000..94c76b4f71 --- /dev/null +++ b/docs/packages/pkg/KhronosDataFormat.rst @@ -0,0 +1,21 @@ +.. spelling:: + + KhronosDataFormat + +.. index:: + single: graphics ; KhronosDataFormat + +.. _pkg.KhronosDataFormat: + +KhronosDataFormat +====================== + +- `Official `__ +- `Hunterized `__ +- `Example `__ +- Added by `Rahul Sheth `__ (`pr-280 `__) + +.. literalinclude:: /../examples/KhronosDataFormat/CMakeLists.txt + :language: cmake + :start-after: # DOCUMENTATION_START { + :end-before: # DOCUMENTATION_END } diff --git a/docs/packages/pkg/Opus.rst b/docs/packages/pkg/Opus.rst new file mode 100644 index 0000000000..e95f656696 --- /dev/null +++ b/docs/packages/pkg/Opus.rst @@ -0,0 +1,20 @@ +.. spelling:: + + Opus + +.. index:: + single: media ; Opus + +.. _pkg.Opus: + +Opus +==== + +- `Official `__ +- `Example `__ +- Added by `drodin `__ (`pr-245 `__) + +.. literalinclude:: /../examples/Opus/CMakeLists.txt + :language: cmake + :start-after: # DOCUMENTATION_START { + :end-before: # DOCUMENTATION_END } diff --git a/docs/packages/pkg/RapidJSON.rst b/docs/packages/pkg/RapidJSON.rst index a33c12a868..13172e78ef 100644 --- a/docs/packages/pkg/RapidJSON.rst +++ b/docs/packages/pkg/RapidJSON.rst @@ -19,3 +19,21 @@ RapidJSON hunter_add_package(RapidJSON) find_package(RapidJSON CONFIG REQUIRED) target_link_libraries(... RapidJSON::rapidjson) + +Macros +------ + +RapidJSON defines a few macros to configure the library. If different libraries use different +settings, undefined behavior can occur. We set up the defines to be exported when set, and we +set the ``RAPIDJSON_HAS_STDSTRING=1`` and ``RAPIDJSON_NOMEMBERITERATORCLASS`` by default. These +can be overridden with a `custom config `__ + +.. code-block:: cmake + + hunter_config( + RapidJSON + VERSION ${HUNTER_RapidJSON_VERSION} + CMAKE_ARGS + RAPIDJSON_HAS_STDSTRING=OFF + RAPIDJSON_NOMEMBERITERATORCLASS=OFF + ) diff --git a/docs/packages/pkg/ZeroMQ.rst b/docs/packages/pkg/ZeroMQ.rst index a58cc161d8..ffdacde7b7 100644 --- a/docs/packages/pkg/ZeroMQ.rst +++ b/docs/packages/pkg/ZeroMQ.rst @@ -19,7 +19,7 @@ ZeroMQ - Added by `Antal Tátrai `__ (`pr-334 `__) - `Testing - branch `__ + branch `__ .. code-block:: cmake diff --git a/docs/packages/pkg/abseil.rst b/docs/packages/pkg/abseil.rst new file mode 100644 index 0000000000..bea00a4d1c --- /dev/null +++ b/docs/packages/pkg/abseil.rst @@ -0,0 +1,20 @@ +.. spelling:: + + abseil + +.. index:: + single: unsorted ; abseil + +.. _pkg.abseil: + +abseil +====== + +- `Official `__ +- `Example `__ +- Added by `Rahul Sheth `__ (`pr-242 `__) + +.. literalinclude:: /../examples/abseil/CMakeLists.txt + :language: cmake + :start-after: # DOCUMENTATION_START { + :end-before: # DOCUMENTATION_END } diff --git a/docs/packages/pkg/apg.rst b/docs/packages/pkg/apg.rst new file mode 100644 index 0000000000..23877cd9db --- /dev/null +++ b/docs/packages/pkg/apg.rst @@ -0,0 +1,21 @@ +.. spelling:: + + apg + +.. index:: + single: unsorted ; apg + +.. _pkg.apg: + +apg +=== + +- `Official `__ +- `Hunterized `__ +- `Example `__ +- Added by `Rahul Sheth `__ (`pr-268 `__) + +.. literalinclude:: /../examples/apg/CMakeLists.txt + :language: cmake + :start-after: # DOCUMENTATION_START { + :end-before: # DOCUMENTATION_END } diff --git a/docs/packages/pkg/astc-encoder.rst b/docs/packages/pkg/astc-encoder.rst new file mode 100644 index 0000000000..16825eef7c --- /dev/null +++ b/docs/packages/pkg/astc-encoder.rst @@ -0,0 +1,22 @@ +.. spelling:: + + astc + encoder + +.. index:: + single: graphics ; astc-encoder + +.. _pkg.astc-encoder: + +astc-encoder +============ + +- `Official `__ +- `Hunterized `__ +- `Example `__ +- Added by `Rahul Sheth `__ (`pr-286 `__) + +.. literalinclude:: /../examples/astc-encoder/CMakeLists.txt + :language: cmake + :start-after: # DOCUMENTATION_START { + :end-before: # DOCUMENTATION_END } diff --git a/docs/packages/pkg/basis_universal.rst b/docs/packages/pkg/basis_universal.rst new file mode 100644 index 0000000000..4efed085f2 --- /dev/null +++ b/docs/packages/pkg/basis_universal.rst @@ -0,0 +1,23 @@ +.. spelling:: + + basis + universal + basis_universal + +.. index:: + single: graphics ; basis_universal + +.. _pkg.basis_universal: + +basis_universal +=============== + +- `Official `__ +- `Hunterized `__ +- `Example `__ +- Added by `Rahul Sheth `__ (`pr-273 `__) + +.. literalinclude:: /../examples/basis_universal/CMakeLists.txt + :language: cmake + :start-after: # DOCUMENTATION_START { + :end-before: # DOCUMENTATION_END } diff --git a/docs/packages/pkg/cgltf.rst b/docs/packages/pkg/cgltf.rst new file mode 100644 index 0000000000..7fa5c65763 --- /dev/null +++ b/docs/packages/pkg/cgltf.rst @@ -0,0 +1,21 @@ +.. spelling:: + + cgltf + +.. index:: + single: unsorted ; cgltf + +.. _pkg.cgltf: + +cgltf +===== + +- `Official `__ +- `Hunterized `__ +- `Example `__ +- Added by `Rahul Sheth `__ (`pr-275 `__) + +.. literalinclude:: /../examples/cgltf/CMakeLists.txt + :language: cmake + :start-after: # DOCUMENTATION_START { + :end-before: # DOCUMENTATION_END } diff --git a/docs/packages/pkg/cpp-statsd-client.rst b/docs/packages/pkg/cpp-statsd-client.rst new file mode 100644 index 0000000000..218543f3df --- /dev/null +++ b/docs/packages/pkg/cpp-statsd-client.rst @@ -0,0 +1,23 @@ +.. spelling:: + + cpp + statsd + client + +.. index:: + single: networking ; cpp-statsd-client + +.. _pkg.cpp-statsd-client: + +cpp-statsd-client +================= + +- `Official `__ +- `Hunterized `__ +- `Example `__ +- Added by `Rahul Sheth `__ (`pr-291 `__) + +.. literalinclude:: /../examples/cpp-statsd-client/CMakeLists.txt + :language: cmake + :start-after: # DOCUMENTATION_START { + :end-before: # DOCUMENTATION_END } diff --git a/docs/packages/pkg/crc32c.rst b/docs/packages/pkg/crc32c.rst index 88f9379385..6e1e9679a7 100644 --- a/docs/packages/pkg/crc32c.rst +++ b/docs/packages/pkg/crc32c.rst @@ -11,12 +11,10 @@ crc32c ====== - `Official `__ -- `Hunterized `__ - `Example `__ - Added by `Isaac Hier `__ (`pr-1243 `__) -.. code-block:: cmake - - hunter_add_package(crc32c) - find_package(crc32c CONFIG REQUIRED) - target_link_libraries(... crc32c::crc32c) +.. literalinclude:: /../examples/crc32c/CMakeLists.txt + :language: cmake + :start-after: # DOCUMENTATION_START { + :end-before: # DOCUMENTATION_END } diff --git a/docs/packages/pkg/etc2comp.rst b/docs/packages/pkg/etc2comp.rst new file mode 100644 index 0000000000..cb5f40d2ed --- /dev/null +++ b/docs/packages/pkg/etc2comp.rst @@ -0,0 +1,21 @@ +.. spelling:: + + etc2comp + +.. index:: + single: graphics ; etc2comp + +.. _pkg.etc2comp: + +etc2comp +======== + +- `Official `__ +- `Hunterized `__ +- `Example `__ +- Added by `Rahul Sheth `__ (`pr-284 `__) + +.. literalinclude:: /../examples/etc2comp/CMakeLists.txt + :language: cmake + :start-after: # DOCUMENTATION_START { + :end-before: # DOCUMENTATION_END } diff --git a/docs/packages/pkg/fast_obj.rst b/docs/packages/pkg/fast_obj.rst new file mode 100644 index 0000000000..2455c883ec --- /dev/null +++ b/docs/packages/pkg/fast_obj.rst @@ -0,0 +1,21 @@ +.. spelling:: + + fast_obj + +.. index:: + single: graphics ; fast_obj + +.. _pkg.fast_obj: + +fast_obj +======== + +- `Official `__ +- `Hunterized `__ +- `Example `__ +- Added by `Rahul Sheth `__ (`pr-274 `__) + +.. literalinclude:: /../examples/fast_obj/CMakeLists.txt + :language: cmake + :start-after: # DOCUMENTATION_START { + :end-before: # DOCUMENTATION_END } diff --git a/docs/packages/pkg/filament.rst b/docs/packages/pkg/filament.rst new file mode 100644 index 0000000000..eb97eef5b1 --- /dev/null +++ b/docs/packages/pkg/filament.rst @@ -0,0 +1,21 @@ +.. spelling:: + + filament + +.. index:: graphics ; filament + +.. _pkg.filament: + +filament +======== + +- https://google.github.io/filament/Filament.html +- `Official GitHub repo `__ +- `Hunterized `__ +- `Example `__ + +.. code-block:: cmake + + hunter_add_package(filament) + find_package(filament CONFIG REQUIRED) + target_link_libraries(... filament::filament) diff --git a/docs/packages/pkg/fmt.rst b/docs/packages/pkg/fmt.rst index d524c0c1e6..d41c0ad453 100644 --- a/docs/packages/pkg/fmt.rst +++ b/docs/packages/pkg/fmt.rst @@ -19,7 +19,7 @@ fmt - Added by `Dmitry Panteleev `__ (`pr-413 `__) - `Testing - branch `__ + branch `__ .. code-block:: cmake diff --git a/docs/packages/pkg/foo.rst b/docs/packages/pkg/foo.rst index 2dba515d01..073570cbd7 100644 --- a/docs/packages/pkg/foo.rst +++ b/docs/packages/pkg/foo.rst @@ -11,9 +11,9 @@ foo === - `Official `__ -- `Hunterized `__ +- `Hunterized `__ - `Example `__ -- Added by `foo_developer `__ (`pr-N `__) +- Added by `foo_developer `__ (`pr-N `__) .. literalinclude:: /../examples/foo/CMakeLists.txt :language: cmake diff --git a/docs/packages/pkg/freetype-gl.rst b/docs/packages/pkg/freetype-gl.rst new file mode 100644 index 0000000000..670f2f3577 --- /dev/null +++ b/docs/packages/pkg/freetype-gl.rst @@ -0,0 +1,22 @@ +.. spelling:: + + freetype + freetype-gl + gl + +.. index:: graphics ; freetype-gl + +.. _pkg.freetype-gl: + +freetype-gl +=========== + +- `Official `__ +- `Hunterized `__ +- `Example `__ + (`pr-249 `__) + +.. literalinclude:: /../examples/freetype-gl/CMakeLists.txt + :language: cmake + :start-after: # DOCUMENTATION_START { + :end-before: # DOCUMENTATION_END } diff --git a/docs/packages/pkg/jpeg-compressor.rst b/docs/packages/pkg/jpeg-compressor.rst new file mode 100644 index 0000000000..406ee75ba8 --- /dev/null +++ b/docs/packages/pkg/jpeg-compressor.rst @@ -0,0 +1,22 @@ +.. spelling:: + + jpeg + compressor + +.. index:: + single: media ; jpeg-compressor + +.. _pkg.jpeg-compressor: + +jpeg-compressor +=============== + +- `Official `__ +- `Hunterized `__ +- `Example `__ +- Added by `Rahul Sheth `__ (`pr-269 `__) + +.. literalinclude:: /../examples/jpeg-compressor/CMakeLists.txt + :language: cmake + :start-after: # DOCUMENTATION_START { + :end-before: # DOCUMENTATION_END } diff --git a/docs/packages/pkg/jsmn.rst b/docs/packages/pkg/jsmn.rst new file mode 100644 index 0000000000..ac71d822bd --- /dev/null +++ b/docs/packages/pkg/jsmn.rst @@ -0,0 +1,21 @@ +.. spelling:: + + jsmn + +.. index:: + single: json ; jsmn + +.. _pkg.jsmn: + +jsmn +==== + +- `Official `__ +- `Hunterized `__ +- `Example `__ +- Added by `Rahul Sheth `__ (`pr-279 `__) + +.. literalinclude:: /../examples/jsmn/CMakeLists.txt + :language: cmake + :start-after: # DOCUMENTATION_START { + :end-before: # DOCUMENTATION_END } diff --git a/docs/packages/pkg/libarchive.rst b/docs/packages/pkg/libarchive.rst new file mode 100644 index 0000000000..26359aa1a2 --- /dev/null +++ b/docs/packages/pkg/libarchive.rst @@ -0,0 +1,21 @@ +.. spelling:: + + cpp + libarchive + +.. index:: + single: compression ; libarchive + +.. _pkg.libarchive: + +libarchive +========== + +- `Official `__ +- `Example `__ +- Added by `Timothy Stack `__ (`pr-293 `__) + +.. literalinclude:: /../examples/libarchive/CMakeLists.txt + :language: cmake + :start-after: # DOCUMENTATION_START { + :end-before: # DOCUMENTATION_END } diff --git a/docs/packages/pkg/libusb.rst b/docs/packages/pkg/libusb.rst index 6f29ce704d..f1db310758 100644 --- a/docs/packages/pkg/libusb.rst +++ b/docs/packages/pkg/libusb.rst @@ -1,6 +1,7 @@ .. spelling:: libusb + udev .. index:: single: development ; libusb @@ -28,3 +29,10 @@ Pitfalls .. code:: sudo apt-get install libudev-dev + +- Or configure without udev support + +.. code:: + + # Hunter configuration file, for example 'cmake/Hunter/config.cmake' + hunter_config(libusb VERSION [version] CMAKE_ARGS EXTRA_FLAGS=--disable-udev) \ No newline at end of file diff --git a/docs/packages/pkg/libuv.rst b/docs/packages/pkg/libuv.rst index d5118e5572..3650cb0160 100644 --- a/docs/packages/pkg/libuv.rst +++ b/docs/packages/pkg/libuv.rst @@ -12,7 +12,7 @@ libuv ===== - `Official `__ -- `Testing branch `__ +- `Testing branch `__ - `Example CMakeLists.txt `__ - `Example C diff --git a/docs/packages/pkg/meshoptimizer.rst b/docs/packages/pkg/meshoptimizer.rst new file mode 100644 index 0000000000..7a6560b450 --- /dev/null +++ b/docs/packages/pkg/meshoptimizer.rst @@ -0,0 +1,21 @@ +.. spelling:: + + meshoptimizer + +.. index:: + single: graphics ; meshoptimizer + +.. _pkg.meshoptimizer: + +meshoptimizer +============= + +- `Official `__ +- `Hunterized `__ +- `Example `__ +- Added by `Rahul Sheth `__ (`pr-283 `__) + +.. literalinclude:: /../examples/meshoptimizer/CMakeLists.txt + :language: cmake + :start-after: # DOCUMENTATION_START { + :end-before: # DOCUMENTATION_END } diff --git a/docs/packages/pkg/miniz.rst b/docs/packages/pkg/miniz.rst new file mode 100644 index 0000000000..10f117016e --- /dev/null +++ b/docs/packages/pkg/miniz.rst @@ -0,0 +1,20 @@ +.. spelling:: + + miniz + +.. index:: + single: compression ; miniz + +.. _pkg.miniz: + +miniz +===== + +- `Official `__ +- `Example `__ +- Added by `Rahul Sheth `__ (`pr-271 `__) + +.. literalinclude:: /../examples/miniz/CMakeLists.txt + :language: cmake + :start-after: # DOCUMENTATION_START { + :end-before: # DOCUMENTATION_END } diff --git a/docs/packages/pkg/occt.rst b/docs/packages/pkg/occt.rst new file mode 100644 index 0000000000..fa37366bd8 --- /dev/null +++ b/docs/packages/pkg/occt.rst @@ -0,0 +1,31 @@ +.. spelling:: + + occt + +.. index:: + single: math ; occt + +.. _pkg.occt: + +occt +==== +OpenCascade Community Technology + +- `Official `__ +- `Hunterized `__ +- `Example `__ +- Added by `craffael `__ (`pr-295 `__) + +.. literalinclude:: /../examples/occt/CMakeLists.txt + :language: cmake + :start-after: # DOCUMENTATION_START { + :end-before: # DOCUMENTATION_END } + +.. note:: + + * OpenCascade consists of a number of modules. This Hunterized version supports all modules except + the `Draw Test Harness `__. + * To build shared versions of occt (recommended), please use :ref:`HUNTER_BUILD_SHARED_LIBS=ON ` + or build with :ref:`toolchain with PIC `. + * On Ubuntu, make sure that you have installed the following system packages: :code:`mesa-common-dev`, :code:`libgl1-mesa-dev`, :code:`libxmu-dev`, :code:`libxi-dev` + diff --git a/docs/packages/pkg/opusfile.rst b/docs/packages/pkg/opusfile.rst new file mode 100644 index 0000000000..32d1c7405d --- /dev/null +++ b/docs/packages/pkg/opusfile.rst @@ -0,0 +1,21 @@ +.. spelling:: + + opusfile + +.. index:: + single: media ; opusfile + +.. _pkg.opusfile: + +opusfile +======== + +- `Official `__ +- `Hunterized `__ +- `Example `__ +- Added by `drodin `__ (`pr-246 `__) + +.. literalinclude:: /../examples/opusfile/CMakeLists.txt + :language: cmake + :start-after: # DOCUMENTATION_START { + :end-before: # DOCUMENTATION_END } diff --git a/docs/packages/pkg/smol-v.rst b/docs/packages/pkg/smol-v.rst new file mode 100644 index 0000000000..d2f05ba8bf --- /dev/null +++ b/docs/packages/pkg/smol-v.rst @@ -0,0 +1,22 @@ +.. spelling:: + + smol + v + +.. index:: + single: graphics ; smol-v + +.. _pkg.smol-v: + +smol-v +====== + +- `Official `__ +- `Hunterized `__ +- `Example `__ +- Added by `Rahul Sheth `__ (`pr-281 `__) + +.. literalinclude:: /../examples/smol-v/CMakeLists.txt + :language: cmake + :start-after: # DOCUMENTATION_START { + :end-before: # DOCUMENTATION_END } diff --git a/docs/packages/pkg/theora.rst b/docs/packages/pkg/theora.rst new file mode 100644 index 0000000000..3b5149e90e --- /dev/null +++ b/docs/packages/pkg/theora.rst @@ -0,0 +1,21 @@ +.. spelling:: + + theora + +.. index:: + single: media ; theora + +.. _pkg.theora: + +theora +====== + +- `Official `__ +- `Hunterized `__ +- `Example `__ +- Added by `drodin `__ (`pr-239 `__) + +.. literalinclude:: /../examples/theora/CMakeLists.txt + :language: cmake + :start-after: # DOCUMENTATION_START { + :end-before: # DOCUMENTATION_END } diff --git a/docs/packages/pkg/tinyexr.rst b/docs/packages/pkg/tinyexr.rst new file mode 100644 index 0000000000..53f48e05e8 --- /dev/null +++ b/docs/packages/pkg/tinyexr.rst @@ -0,0 +1,21 @@ +.. spelling:: + + tinyexr + +.. index:: + single: media ; tinyexr + +.. _pkg.tinyexr: + +tinyexr +======= + +- `Official `__ +- `Hunterized `__ +- `Example `__ +- Added by `Rahul Sheth `__ (`pr-278 `__) + +.. literalinclude:: /../examples/tinyexr/CMakeLists.txt + :language: cmake + :start-after: # DOCUMENTATION_START { + :end-before: # DOCUMENTATION_END } diff --git a/docs/packages/pkg/tinygltf.rst b/docs/packages/pkg/tinygltf.rst new file mode 100644 index 0000000000..5e0eefd0e2 --- /dev/null +++ b/docs/packages/pkg/tinygltf.rst @@ -0,0 +1,21 @@ +.. spelling:: + + tinygltf + +.. index:: + single: graphics ; tinygltf + +.. _pkg.tinygltf: + +tinygltf +======== + +- `Official `__ +- `Hunterized `__ +- `Example `__ +- Added by `Rahul Sheth `__ (`pr-308 `__) + +.. literalinclude:: /../examples/tinygltf/CMakeLists.txt + :language: cmake + :start-after: # DOCUMENTATION_START { + :end-before: # DOCUMENTATION_END } diff --git a/docs/packages/pkg/tinyobjloader.rst b/docs/packages/pkg/tinyobjloader.rst new file mode 100644 index 0000000000..82a02b01bc --- /dev/null +++ b/docs/packages/pkg/tinyobjloader.rst @@ -0,0 +1,20 @@ +.. spelling:: + + tinyobjloader + +.. index:: + single: unsorted ; tinyobjloader + +.. _pkg.tinyobjloader: + +tinyobjloader +============= + +- `Official `__ +- `Example `__ +- Added by `Rahul Sheth `__ (`pr-226 `__) + +.. literalinclude:: /../examples/tinyobjloader/CMakeLists.txt + :language: cmake + :start-after: # DOCUMENTATION_START { + :end-before: # DOCUMENTATION_END } diff --git a/docs/packages/pkg/tsl_hat_trie.rst b/docs/packages/pkg/tsl_hat_trie.rst new file mode 100644 index 0000000000..b8ea8a13a9 --- /dev/null +++ b/docs/packages/pkg/tsl_hat_trie.rst @@ -0,0 +1,23 @@ +.. spelling:: + + tsl + hat + trie + +.. index:: + single: data-structures ; tsl_hat_trie + +.. _pkg.tsl_hat_trie: + +tsl_hat_trie +============ + +- `Official `__ +- `Hunterized `__ +- `Example `__ +- Added by `Rahul Sheth `__ (`pr-276 `__) + +.. literalinclude:: /../examples/tsl_hat_trie/CMakeLists.txt + :language: cmake + :start-after: # DOCUMENTATION_START { + :end-before: # DOCUMENTATION_END } diff --git a/docs/packages/pkg/tsl_robin_map.rst b/docs/packages/pkg/tsl_robin_map.rst new file mode 100644 index 0000000000..dd8e1bbe68 --- /dev/null +++ b/docs/packages/pkg/tsl_robin_map.rst @@ -0,0 +1,22 @@ +.. spelling:: + + tsl + robin + map + +.. index:: + single: data-structures ; tsl_robin_map + +.. _pkg.tsl_robin_map: + +tsl_robin_map +============= + +- `Official `__ +- `Example `__ +- Added by `Rahul Sheth `__ (`pr-277 `__) + +.. literalinclude:: /../examples/tsl_robin_map/CMakeLists.txt + :language: cmake + :start-after: # DOCUMENTATION_START { + :end-before: # DOCUMENTATION_END } diff --git a/docs/packages/pkg/tvm.rst b/docs/packages/pkg/tvm.rst index 9a7e9fe43e..8001158c35 100644 --- a/docs/packages/pkg/tvm.rst +++ b/docs/packages/pkg/tvm.rst @@ -32,7 +32,7 @@ build issue, the next workaround should be applied: By default CUDA used on Linux. Example of the ``travis.yml`` configuration: -- https://github.com/ingenue/hunter/blob/81c936a1e04df8f46b84c7eb22b931da5dcf4d7c/.travis.yml#L155-L163 +- https://github.com/cpp-pm/hunter-testing/blob/81c936a1e04df8f46b84c7eb22b931da5dcf4d7c/.travis.yml#L155-L163 On Android, iOS and Windows only ``tvm::tvm_runtime`` will be built. diff --git a/docs/packages/pkg/xatlas.rst b/docs/packages/pkg/xatlas.rst new file mode 100644 index 0000000000..877bd9e134 --- /dev/null +++ b/docs/packages/pkg/xatlas.rst @@ -0,0 +1,21 @@ +.. spelling:: + + xatlas + +.. index:: + single: unsorted ; xatlas + +.. _pkg.xatlas: + +xatlas +====== + +- `Official `__ +- `Hunterized `__ +- `Example `__ +- Added by `Rahul Sheth `__ (`pr-233 `__) + +.. literalinclude:: /../examples/xatlas/CMakeLists.txt + :language: cmake + :start-after: # DOCUMENTATION_START { + :end-before: # DOCUMENTATION_END } diff --git a/docs/packages/pkg/zlog.rst b/docs/packages/pkg/zlog.rst new file mode 100644 index 0000000000..3e4a4a114d --- /dev/null +++ b/docs/packages/pkg/zlog.rst @@ -0,0 +1,19 @@ +.. spelling:: + + zlog + +.. index:: Logging ; zlog + +.. _pkg.zlog: + +zlog +==== + +- `Official `__ +- `Example `__ +- Added by `je-vv `__ (`pr-N `__) + +.. literalinclude:: /../examples/zlog/CMakeLists.txt + :language: cmake + :start-after: # DOCUMENTATION_START { + :end-before: # DOCUMENTATION_END } diff --git a/docs/reference/errors/error.external.build.failed.rst b/docs/reference/errors/error.external.build.failed.rst index e66b515b37..91bd6d831d 100644 --- a/docs/reference/errors/error.external.build.failed.rst +++ b/docs/reference/errors/error.external.build.failed.rst @@ -25,17 +25,17 @@ What to do :ref:`HUNTER_STATUS_DEBUG=ON ` to see a lot of info about build - Take a look at - `pkg.NAME `_ + `pkg.NAME `_ CI testing table. If similar toolchain is excluded (or not present at all) then the problem is known, hence **there is no need to report bug if you're not planning to fix it yourself**. For example if you check the OpenSSL testing: - - https://github.com/ingenue/hunter/tree/pkg.openssl + - https://github.com/cpp-pm/hunter-testing/tree/pkg.openssl You can see that toolchain ``nmake-vs-12-2013-win64`` is excluded already: - - https://github.com/ingenue/hunter/blob/2bdb775aa312e1634c545aa772f09730f61e2e7b/appveyor.yml#L17-L20 + - https://github.com/cpp-pm/hunter-testing/blob/2bdb775aa312e1634c545aa772f09730f61e2e7b/appveyor.yml#L17-L20 So there is no need to report "OpenSSL is not working with NMake" issue. diff --git a/docs/reference/user-modules/hunter_upload_password.rst b/docs/reference/user-modules/hunter_upload_password.rst index e18f8e9b92..b34b0c11bc 100644 --- a/docs/reference/user-modules/hunter_upload_password.rst +++ b/docs/reference/user-modules/hunter_upload_password.rst @@ -11,7 +11,7 @@ This module helps to set uploading parameters for If you want to use GitHub repository ``https://github.com/forexample/hunter-cache`` -as a cache server and do uploads using bot ``ingenue`` this can be expressed by +as a cache server and do uploads using bot ``cpp-pm-bot`` this can be expressed by code: .. code-block:: cmake @@ -21,7 +21,7 @@ code: hunter_upload_password( REPO_OWNER "forexample" REPO "hunter-cache" - USERNAME "ingenue" + USERNAME "cpp-pm-bot" PASSWORD "very-secured-github-token-here" ) @@ -35,6 +35,6 @@ E.g. you can read password from environment variable: hunter_upload_password( REPO_OWNER "forexample" REPO "hunter-cache" - USERNAME "ingenue" + USERNAME "cpp-pm-bot" PASSWORD "$ENV{GITHUB_USER_PASSWORD}" ) diff --git a/docs/reference/user-variables.rst b/docs/reference/user-variables.rst index 6d19d60261..415c2129ea 100644 --- a/docs/reference/user-variables.rst +++ b/docs/reference/user-variables.rst @@ -200,14 +200,14 @@ Using two servers: set( HUNTER_CACHE_SERVERS - "https://github.com/elucideye/hunter-cache;https://github.com/ingenue/hunter-cache" + "https://github.com/elucideye/hunter-cache;https://github.com/cpp-pm/hunter-cache" CACHE STRING "Hunter cache servers" ) HunterGate(URL "..." SHA1 "...") -* Default: https://github.com/ingenue/hunter-cache +* Default: https://github.com/cpp-pm/hunter-cache .. seealso:: diff --git a/examples/Boost-chrono-1-64/CMakeLists.txt b/examples/Boost-chrono-1-64/CMakeLists.txt index 9b5a8dadd5..3b4ecb717e 100644 --- a/examples/Boost-chrono-1-64/CMakeLists.txt +++ b/examples/Boost-chrono-1-64/CMakeLists.txt @@ -1,13 +1,13 @@ -# Copyright (c) 2013, Ruslan Baratov -# All rights reserved. - cmake_minimum_required(VERSION 3.0) +set(Boost_DEBUG ON CACHE BOOLEAN "") +set(TESTING_CONFIG_OPT FILEPATH ${CMAKE_CURRENT_LIST_DIR}/config.cmake) + # Emulate HunterGate: # * https://github.com/hunter-packages/gate include("../common.cmake") -project(download-boost) +project(Boost-chrono-1_64_0) hunter_add_package(Boost COMPONENTS system chrono) find_package(Boost CONFIG REQUIRED system chrono) diff --git a/examples/Boost-chrono-1-64/config.cmake b/examples/Boost-chrono-1-64/config.cmake new file mode 100644 index 0000000000..fb6a2c8bcd --- /dev/null +++ b/examples/Boost-chrono-1-64/config.cmake @@ -0,0 +1,3 @@ +hunter_config(Boost + VERSION 1.64.0 +) diff --git a/examples/Boost-chrono-useBoostConfig/CMakeLists.txt b/examples/Boost-chrono-useBoostConfig/CMakeLists.txt index 6ba8ec001b..87c2aca3c6 100644 --- a/examples/Boost-chrono-useBoostConfig/CMakeLists.txt +++ b/examples/Boost-chrono-useBoostConfig/CMakeLists.txt @@ -1,7 +1,4 @@ -# Copyright (c) 2013, Ruslan Baratov -# All rights reserved. - -cmake_minimum_required(VERSION 3.0) +cmake_minimum_required(VERSION 3.3) set(Boost_DEBUG ON CACHE BOOLEAN "") set(TESTING_CONFIG_OPT FILEPATH ${CMAKE_CURRENT_LIST_DIR}/config.cmake) diff --git a/examples/Boost-container/CMakeLists.txt b/examples/Boost-container/CMakeLists.txt new file mode 100644 index 0000000000..ca0e67a7b9 --- /dev/null +++ b/examples/Boost-container/CMakeLists.txt @@ -0,0 +1,17 @@ +cmake_minimum_required(VERSION 3.3) + +set(Boost_DEBUG ON CACHE BOOLEAN "") + +# Emulate HunterGate: +# * https://github.com/cpp-pm/gate +include("../common.cmake") + +project(download-boost) + +# DOCUMENTATION_START { +hunter_add_package(Boost COMPONENTS container) +find_package(Boost CONFIG REQUIRED container) + +add_executable(boo boo.cpp) +target_link_libraries(boo PUBLIC Boost::container) +# DOCUMENTATION_END } diff --git a/examples/Boost-container/boo.cpp b/examples/Boost-container/boo.cpp new file mode 100644 index 0000000000..dcd843d5c2 --- /dev/null +++ b/examples/Boost-container/boo.cpp @@ -0,0 +1,15 @@ +#include + +using namespace boost::container; + +struct animal +{ + vector children; +}; + +int main() +{ + animal parent, child1, child2; + parent.children.push_back(child1); + parent.children.push_back(child2); +} diff --git a/examples/Boost-container/config.cmake b/examples/Boost-container/config.cmake new file mode 100644 index 0000000000..9daa4a1d95 --- /dev/null +++ b/examples/Boost-container/config.cmake @@ -0,0 +1,4 @@ +hunter_config(Boost + VERSION ${HUNTER_Boost_VERSION} + CMAKE_ARGS USE_CONFIG_FROM_BOOST=ON +) diff --git a/examples/Boost-filesystem-1-64/CMakeLists.txt b/examples/Boost-filesystem-1-64/CMakeLists.txt index 6339e56979..1873c49de8 100644 --- a/examples/Boost-filesystem-1-64/CMakeLists.txt +++ b/examples/Boost-filesystem-1-64/CMakeLists.txt @@ -1,13 +1,13 @@ -# Copyright (c) 2013-2015, Ruslan Baratov -# All rights reserved. - cmake_minimum_required(VERSION 3.0) +set(Boost_DEBUG ON CACHE BOOLEAN "") +set(TESTING_CONFIG_OPT FILEPATH ${CMAKE_CURRENT_LIST_DIR}/config.cmake) + # Emulate HunterGate: # * https://github.com/hunter-packages/gate include("../common.cmake") -project(download-boost) +project(Boost-filesystem-1_64_0) # download boost hunter_add_package(Boost COMPONENTS system filesystem) diff --git a/examples/Boost-filesystem-1-64/config.cmake b/examples/Boost-filesystem-1-64/config.cmake new file mode 100644 index 0000000000..fb6a2c8bcd --- /dev/null +++ b/examples/Boost-filesystem-1-64/config.cmake @@ -0,0 +1,3 @@ +hunter_config(Boost + VERSION 1.64.0 +) diff --git a/examples/Boost-filesystem-useBoostConfig/CMakeLists.txt b/examples/Boost-filesystem-useBoostConfig/CMakeLists.txt index 9bb5b74ced..64aa830821 100644 --- a/examples/Boost-filesystem-useBoostConfig/CMakeLists.txt +++ b/examples/Boost-filesystem-useBoostConfig/CMakeLists.txt @@ -1,7 +1,4 @@ -# Copyright (c) 2013-2015, Ruslan Baratov -# All rights reserved. - -cmake_minimum_required(VERSION 3.0) +cmake_minimum_required(VERSION 3.3) set(Boost_DEBUG ON CACHE BOOLEAN "") set(TESTING_CONFIG_OPT FILEPATH ${CMAKE_CURRENT_LIST_DIR}/config.cmake) diff --git a/examples/Boost-iostreams-1-64/CMakeLists.txt b/examples/Boost-iostreams-1-64/CMakeLists.txt index 7490229875..ab19a5cf42 100644 --- a/examples/Boost-iostreams-1-64/CMakeLists.txt +++ b/examples/Boost-iostreams-1-64/CMakeLists.txt @@ -1,6 +1,3 @@ -# Copyright (c) 2013, Ruslan Baratov -# All rights reserved. - cmake_minimum_required(VERSION 3.0) set(TESTING_CONFIG_OPT FILEPATH ${CMAKE_CURRENT_LIST_DIR}/config.cmake) @@ -9,7 +6,7 @@ set(TESTING_CONFIG_OPT FILEPATH ${CMAKE_CURRENT_LIST_DIR}/config.cmake) # * https://github.com/hunter-packages/gate include("../common.cmake") -project(download-boost) +project(Boost-iostreams-1_64_0) hunter_add_package(Boost COMPONENTS iostreams serialization) find_package(Boost CONFIG REQUIRED iostreams serialization) diff --git a/examples/Boost-iostreams-useBoostConfig/CMakeLists.txt b/examples/Boost-iostreams-useBoostConfig/CMakeLists.txt index f817e0c1ee..c22bd0b55c 100644 --- a/examples/Boost-iostreams-useBoostConfig/CMakeLists.txt +++ b/examples/Boost-iostreams-useBoostConfig/CMakeLists.txt @@ -1,7 +1,4 @@ -# Copyright (c) 2015, Aaditya Kalsi -# All rights reserved. - -cmake_minimum_required(VERSION 3.0) +cmake_minimum_required(VERSION 3.3) set(Boost_DEBUG ON CACHE BOOLEAN "") set(TESTING_CONFIG_OPT FILEPATH ${CMAKE_CURRENT_LIST_DIR}/config.cmake) diff --git a/examples/Boost-log-useBoostConfig/CMakeLists.txt b/examples/Boost-log-useBoostConfig/CMakeLists.txt index 82bfb43ee5..b749788e5e 100644 --- a/examples/Boost-log-useBoostConfig/CMakeLists.txt +++ b/examples/Boost-log-useBoostConfig/CMakeLists.txt @@ -1,7 +1,4 @@ -# Copyright (c) 2013-2017, Ruslan Baratov -# All rights reserved. - -cmake_minimum_required(VERSION 3.0) +cmake_minimum_required(VERSION 3.3) set(Boost_DEBUG ON CACHE BOOLEAN "") set(TESTING_CONFIG_OPT FILEPATH ${CMAKE_CURRENT_LIST_DIR}/config.cmake) diff --git a/examples/Boost-system-1-66/CMakeLists.txt b/examples/Boost-system-1-66/CMakeLists.txt index dfb9c11ef6..7f9fc322ce 100644 --- a/examples/Boost-system-1-66/CMakeLists.txt +++ b/examples/Boost-system-1-66/CMakeLists.txt @@ -1,17 +1,13 @@ -# Copyright (c) 2013, Ruslan Baratov -# All rights reserved. - cmake_minimum_required(VERSION 3.0) set(Boost_DEBUG ON CACHE BOOLEAN "") - set(TESTING_CONFIG_OPT FILEPATH ${CMAKE_CURRENT_LIST_DIR}/config.cmake) # Emulate HunterGate: # * https://github.com/hunter-packages/gate include("../common.cmake") -project(download-boost) +project(Boost-system-1_66) hunter_add_package(Boost COMPONENTS system) find_package(Boost CONFIG REQUIRED system) diff --git a/examples/Boost-thread-1-64/CMakeLists.txt b/examples/Boost-thread-1-64/CMakeLists.txt index cdb4d19a80..38d4106de3 100644 --- a/examples/Boost-thread-1-64/CMakeLists.txt +++ b/examples/Boost-thread-1-64/CMakeLists.txt @@ -1,13 +1,13 @@ -# Copyright (c) 2013, Ruslan Baratov -# All rights reserved. - cmake_minimum_required(VERSION 3.0) +set(Boost_DEBUG ON CACHE BOOLEAN "") +set(TESTING_CONFIG_OPT FILEPATH ${CMAKE_CURRENT_LIST_DIR}/config.cmake) + # Emulate HunterGate: # * https://github.com/hunter-packages/gate include("../common.cmake") -project(download-boost) +project(Boost-thread-1_64_0) hunter_add_package(Boost COMPONENTS system thread) find_package(Boost CONFIG REQUIRED system thread) diff --git a/examples/Boost-thread-1-64/config.cmake b/examples/Boost-thread-1-64/config.cmake new file mode 100644 index 0000000000..fb6a2c8bcd --- /dev/null +++ b/examples/Boost-thread-1-64/config.cmake @@ -0,0 +1,3 @@ +hunter_config(Boost + VERSION 1.64.0 +) diff --git a/examples/Boost-useBoostConfig/CMakeLists.txt b/examples/Boost-useBoostConfig/CMakeLists.txt index b261ad51d3..e391fd6bb6 100644 --- a/examples/Boost-useBoostConfig/CMakeLists.txt +++ b/examples/Boost-useBoostConfig/CMakeLists.txt @@ -1,7 +1,4 @@ -# Copyright (c) 2013, Ruslan Baratov -# All rights reserved. - -cmake_minimum_required(VERSION 3.0) +cmake_minimum_required(VERSION 3.3) set(Boost_DEBUG ON CACHE BOOLEAN "") set(TESTING_CONFIG_OPT FILEPATH ${CMAKE_CURRENT_LIST_DIR}/config.cmake) diff --git a/examples/Expat/CMakeLists.txt b/examples/Expat/CMakeLists.txt index f23b854a5b..02a8e993d2 100644 --- a/examples/Expat/CMakeLists.txt +++ b/examples/Expat/CMakeLists.txt @@ -15,7 +15,12 @@ hunter_add_package(Expat) find_package(EXPAT CONFIG REQUIRED) add_executable(outline outline.c) -target_link_libraries(outline PRIVATE EXPAT::expat) +# Older versions may need EXPAT::expat +if (WIN32 AND NOT MINGW) + target_link_libraries(outline PRIVATE expat::libexpat) +else() + target_link_libraries(outline PRIVATE expat::expat) +endif() find_package(EXPAT MODULE REQUIRED) diff --git a/examples/KhronosDataFormat/CMakeLists.txt b/examples/KhronosDataFormat/CMakeLists.txt new file mode 100644 index 0000000000..a0d9a00b53 --- /dev/null +++ b/examples/KhronosDataFormat/CMakeLists.txt @@ -0,0 +1,18 @@ +# Copyright (c) 2016-2020, Rahul Sheth, Ruslan Baratov +# All rights reserved. + +cmake_minimum_required(VERSION 3.2) + +# Emulate HunterGate: +# * https://github.com/hunter-packages/gate +include("../common.cmake") + +project(download-KhronosDataFormat) + +# DOCUMENTATION_START { +hunter_add_package(KhronosDataFormat) +find_package(KhronosDataFormat CONFIG REQUIRED) + +add_executable(boo boo.cpp) +target_link_libraries(boo PUBLIC Khronos::KhronosDataFormat) +# DOCUMENTATION_END } diff --git a/examples/KhronosDataFormat/boo.cpp b/examples/KhronosDataFormat/boo.cpp new file mode 100644 index 0000000000..b6b945bc8b --- /dev/null +++ b/examples/KhronosDataFormat/boo.cpp @@ -0,0 +1,6 @@ +#include + +int main() { + khr_df_flags_e alpha = KHR_DF_FLAG_ALPHA_STRAIGHT; + return 0; +} diff --git a/examples/Opus/CMakeLists.txt b/examples/Opus/CMakeLists.txt new file mode 100644 index 0000000000..749e4fad58 --- /dev/null +++ b/examples/Opus/CMakeLists.txt @@ -0,0 +1,15 @@ +cmake_minimum_required(VERSION 3.2) + +# Emulate HunterGate: +# * https://github.com/hunter-packages/gate +include("../common.cmake") + +project(download-Opus) + +# DOCUMENTATION_START { +hunter_add_package(Opus) +find_package(Opus CONFIG REQUIRED) + +add_executable(main main.cpp) +target_link_libraries(main PUBLIC Opus::opus) +# DOCUMENTATION_END } diff --git a/examples/Opus/main.cpp b/examples/Opus/main.cpp new file mode 100644 index 0000000000..9f22ade6d2 --- /dev/null +++ b/examples/Opus/main.cpp @@ -0,0 +1,6 @@ +#include + +int main() { + const char *version = opus_get_version_string(); + return 0; +} diff --git a/examples/SPIRV-Tools/CMakeLists.txt b/examples/SPIRV-Tools/CMakeLists.txt index c85ddca68d..fb42c623df 100644 --- a/examples/SPIRV-Tools/CMakeLists.txt +++ b/examples/SPIRV-Tools/CMakeLists.txt @@ -5,6 +5,7 @@ cmake_minimum_required(VERSION 3.2) # Emulate HunterGate: # * https://github.com/hunter-packages/gate +set(TESTING_CONFIG_OPT FILEPATH ${CMAKE_CURRENT_LIST_DIR}/config.cmake) include("../common.cmake") project(download-SPIRV-Tools) diff --git a/examples/SPIRV-Tools/config.cmake b/examples/SPIRV-Tools/config.cmake new file mode 100644 index 0000000000..8f1ced3395 --- /dev/null +++ b/examples/SPIRV-Tools/config.cmake @@ -0,0 +1,2 @@ +hunter_config(SPIRV-Headers VERSION 1.5.1.corrected) + diff --git a/examples/abseil/CMakeLists.txt b/examples/abseil/CMakeLists.txt new file mode 100644 index 0000000000..405dad7460 --- /dev/null +++ b/examples/abseil/CMakeLists.txt @@ -0,0 +1,18 @@ +# Copyright (c) 2016-2020, Rahul Sheth, Ruslan Baratov +# All rights reserved. + +cmake_minimum_required(VERSION 3.2) + +# Emulate HunterGate: +# * https://github.com/hunter-packages/gate +include("../common.cmake") + +project(download-abseil) + +# DOCUMENTATION_START { +hunter_add_package(abseil) +find_package(absl CONFIG REQUIRED) + +add_executable(boo boo.cpp) +target_link_libraries(boo PUBLIC absl::strings) +# DOCUMENTATION_END } diff --git a/examples/abseil/boo.cpp b/examples/abseil/boo.cpp new file mode 100644 index 0000000000..deab589ddf --- /dev/null +++ b/examples/abseil/boo.cpp @@ -0,0 +1,23 @@ +// +// Copyright 2019 The Abseil Authors. +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// https://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. + +#include +#include + +int main(int argc, char** argv) { + for (int i = 0; i < argc; ++i) { + std::cout << absl::Substitute("Arg $0: $1\n", i, argv[i]); + } +} diff --git a/examples/apg/CMakeLists.txt b/examples/apg/CMakeLists.txt new file mode 100644 index 0000000000..4f15679acc --- /dev/null +++ b/examples/apg/CMakeLists.txt @@ -0,0 +1,29 @@ +# Copyright (c) 2016-2020, Rahul Sheth, Ruslan Baratov +# All rights reserved. + +cmake_minimum_required(VERSION 3.2) + +# Emulate HunterGate: +# * https://github.com/hunter-packages/gate +include("../common.cmake") + +project(download-apg) + +# DOCUMENTATION_START { +hunter_add_package(apg) +find_package(apg CONFIG REQUIRED) + +add_executable(boo boo.cpp) +#Available: +# apg::apg +# apg::unicode +# apg::bmp +# apg::wav +# apg::pixfont +# apg::maths +# apg::interp +# apg::tga +# apg::console + +target_link_libraries(boo PUBLIC apg::console apg::bmp) +# DOCUMENTATION_END } diff --git a/examples/apg/boo.cpp b/examples/apg/boo.cpp new file mode 100644 index 0000000000..dd95d1ac76 --- /dev/null +++ b/examples/apg/boo.cpp @@ -0,0 +1,7 @@ +#include +#include + +int main() { + unsigned char* img_mem = apg_bmp_read(NULL, NULL, NULL, NULL); + apg_c_backspace(); +} diff --git a/examples/astc-encoder/CMakeLists.txt b/examples/astc-encoder/CMakeLists.txt new file mode 100644 index 0000000000..e0e0aded2c --- /dev/null +++ b/examples/astc-encoder/CMakeLists.txt @@ -0,0 +1,18 @@ +# Copyright (c) 2016-2020, Rahul Sheth, Ruslan Baratov +# All rights reserved. + +cmake_minimum_required(VERSION 3.2) + +# Emulate HunterGate: +# * https://github.com/hunter-packages/gate +include("../common.cmake") + +project(download-astc-encoder) + +# DOCUMENTATION_START { +hunter_add_package(astc-encoder) +find_package(astc-encoder CONFIG REQUIRED) + +add_executable(boo boo.cpp) +target_link_libraries(boo PUBLIC astc-encoder::astcenc) +# DOCUMENTATION_END } diff --git a/examples/astc-encoder/boo.cpp b/examples/astc-encoder/boo.cpp new file mode 100644 index 0000000000..74db6e9d9a --- /dev/null +++ b/examples/astc-encoder/boo.cpp @@ -0,0 +1,6 @@ +#include + +int main() { + astcenc_config my_config; // for v2.0+ + // astc_codec_image image; // for v1.3 +} diff --git a/examples/basis_universal/CMakeLists.txt b/examples/basis_universal/CMakeLists.txt new file mode 100644 index 0000000000..c8983f319e --- /dev/null +++ b/examples/basis_universal/CMakeLists.txt @@ -0,0 +1,18 @@ +# Copyright (c) 2016-2020, Rahul Sheth, Ruslan Baratov +# All rights reserved. + +cmake_minimum_required(VERSION 3.2) + +# Emulate HunterGate: +# * https://github.com/hunter-packages/gate +include("../common.cmake") + +project(download-basis_universal) + +# DOCUMENTATION_START { +hunter_add_package(basis_universal) +find_package(basis_universal CONFIG REQUIRED) + +add_executable(boo boo.cpp) +target_link_libraries(boo PUBLIC basis_universal::basisu_encoder) +# DOCUMENTATION_END } diff --git a/examples/basis_universal/boo.cpp b/examples/basis_universal/boo.cpp new file mode 100644 index 0000000000..0a0fa40343 --- /dev/null +++ b/examples/basis_universal/boo.cpp @@ -0,0 +1,5 @@ +#include + +int main() { + basisu::basisu_encoder_init(); +} diff --git a/examples/cgltf/CMakeLists.txt b/examples/cgltf/CMakeLists.txt new file mode 100644 index 0000000000..9266050f6a --- /dev/null +++ b/examples/cgltf/CMakeLists.txt @@ -0,0 +1,18 @@ +# Copyright (c) 2016-2020, Rahul Sheth, Ruslan Baratov +# All rights reserved. + +cmake_minimum_required(VERSION 3.2) + +# Emulate HunterGate: +# * https://github.com/hunter-packages/gate +include("../common.cmake") + +project(download-cgltf) + +# DOCUMENTATION_START { +hunter_add_package(cgltf) +find_package(cgltf CONFIG REQUIRED) + +add_executable(boo boo.cpp) +target_link_libraries(boo PUBLIC cgltf::cgltf) +# DOCUMENTATION_END } diff --git a/examples/cgltf/boo.cpp b/examples/cgltf/boo.cpp new file mode 100644 index 0000000000..3e0f3c1ff6 --- /dev/null +++ b/examples/cgltf/boo.cpp @@ -0,0 +1,13 @@ +#include + +static void set(cgltf_float target[3], float x, float y, float z) { + target[0] = x; + target[1] = y; + target[2] = z; +} + +int main() { + cgltf_node node = {}; + set(node.scale, 1, 1, 1); + return 0; +} diff --git a/examples/cpp-statsd-client/CMakeLists.txt b/examples/cpp-statsd-client/CMakeLists.txt new file mode 100644 index 0000000000..c626336dc3 --- /dev/null +++ b/examples/cpp-statsd-client/CMakeLists.txt @@ -0,0 +1,22 @@ +# Copyright (c) 2016-2020, Rahul Sheth, Ruslan Baratov +# All rights reserved. + +cmake_minimum_required(VERSION 3.2) + +# Emulate HunterGate: +# * https://github.com/hunter-packages/gate +include("../common.cmake") + +project(download-cpp-statsd-client) + +# DOCUMENTATION_START { +hunter_add_package(cpp-statsd-client) +find_package(cpp-statsd-client CONFIG REQUIRED) + +add_executable(boo boo.cpp) +#For mingw/msys +if(WIN32) + target_compile_definitions(boo PRIVATE _WIN32_WINNT=0x601) +endif() +target_link_libraries(boo PUBLIC cpp-statsd-client::cpp-statsd-client) +# DOCUMENTATION_END } diff --git a/examples/cpp-statsd-client/boo.cpp b/examples/cpp-statsd-client/boo.cpp new file mode 100644 index 0000000000..4d9472113c --- /dev/null +++ b/examples/cpp-statsd-client/boo.cpp @@ -0,0 +1,26 @@ +#include +using namespace Statsd; + +int main() +{ + // Define the client on localhost, with port 8080, using a prefix and a batching size of 20 bytes + StatsdClient client{ "127.0.0.1", 8080, "myPrefix.", 20 }; + + // Increment the metric "coco" + client.increment("coco"); + + // Decrement the metric "kiki" + client.decrement("kiki"); + + // Adjusts "toto" by +3 + client.count("toto", 2, 0.1f); + + // Record a gauge "titi" to 3 + client.gauge("titi", 3); + + // Record a timing of 2ms for "myTiming" + client.timing("myTiming", 2, 0.1f); + + // Send a metric explicitly + client.send("tutu", 4, "c", 2.0f); +} diff --git a/examples/crc32c/CMakeLists.txt b/examples/crc32c/CMakeLists.txt index 19a3ce4593..77f121cf73 100644 --- a/examples/crc32c/CMakeLists.txt +++ b/examples/crc32c/CMakeLists.txt @@ -4,11 +4,10 @@ include("../common.cmake") project(download-crc32c) +# DOCUMENTATION_START { hunter_add_package(crc32c) +find_package(Crc32c CONFIG REQUIRED) -find_package(crc32c CONFIG REQUIRED) - -set(CMAKE_CXX_STANDARD 11) -set(CMAKE_CXX_STANDARD_REQUIRED ON) add_executable(main main.cpp) -target_link_libraries(main crc32c::crc32c) +target_link_libraries(main Crc32c::crc32c) +# DOCUMENTATION_END } diff --git a/examples/etc2comp/CMakeLists.txt b/examples/etc2comp/CMakeLists.txt new file mode 100644 index 0000000000..926156a2ad --- /dev/null +++ b/examples/etc2comp/CMakeLists.txt @@ -0,0 +1,18 @@ +# Copyright (c) 2016-2020, Rahul Sheth, Ruslan Baratov +# All rights reserved. + +cmake_minimum_required(VERSION 3.2) + +# Emulate HunterGate: +# * https://github.com/hunter-packages/gate +include("../common.cmake") + +project(download-etc2comp) + +# DOCUMENTATION_START { +hunter_add_package(etc2comp) +find_package(etc2comp CONFIG REQUIRED) + +add_executable(boo boo.cpp) +target_link_libraries(boo PUBLIC etc2comp::EtcLib) +# DOCUMENTATION_END } diff --git a/examples/etc2comp/boo.cpp b/examples/etc2comp/boo.cpp new file mode 100644 index 0000000000..206660435e --- /dev/null +++ b/examples/etc2comp/boo.cpp @@ -0,0 +1,6 @@ +#include + +int main() { + float test = Etc::ConvertMSEToPSNR(0.0f); + return 0; +} diff --git a/examples/fast_obj/CMakeLists.txt b/examples/fast_obj/CMakeLists.txt new file mode 100644 index 0000000000..f52c55bb02 --- /dev/null +++ b/examples/fast_obj/CMakeLists.txt @@ -0,0 +1,18 @@ +# Copyright (c) 2016-2020, Rahul Sheth, Ruslan Baratov +# All rights reserved. + +cmake_minimum_required(VERSION 3.2) + +# Emulate HunterGate: +# * https://github.com/hunter-packages/gate +include("../common.cmake") + +project(download-fast_obj) + +# DOCUMENTATION_START { +hunter_add_package(fast_obj) +find_package(fast_obj CONFIG REQUIRED) + +add_executable(boo boo.cpp) +target_link_libraries(boo PUBLIC fast_obj::fast_obj) +# DOCUMENTATION_END } diff --git a/examples/fast_obj/boo.cpp b/examples/fast_obj/boo.cpp new file mode 100644 index 0000000000..773ef3688b --- /dev/null +++ b/examples/fast_obj/boo.cpp @@ -0,0 +1,7 @@ +#include + +int main() { + fastObjMesh* mesh = fast_obj_read(0); + if(mesh) return 0; + return 1; +} diff --git a/examples/filament/CMakeLists.txt b/examples/filament/CMakeLists.txt new file mode 100644 index 0000000000..4a68b51704 --- /dev/null +++ b/examples/filament/CMakeLists.txt @@ -0,0 +1,20 @@ +# Copyright (c) 2016-2020, Rahul Sheth, Ruslan Baratov +# All rights reserved. + +cmake_minimum_required(VERSION 3.2) + +# Emulate HunterGate: +# * https://github.com/hunter-packages/gate +set(TESTING_CONFIG_OPT FILEPATH ${CMAKE_CURRENT_LIST_DIR}/config.cmake) +include("../common.cmake") + +project(download-filament) + +# DOCUMENTATION_START { +hunter_add_package(filament) +find_package(Threads) +find_package(filament CONFIG REQUIRED) + +add_executable(filament_test main.cpp) +target_link_libraries(filament_test PUBLIC filament::filament) +# DOCUMENTATION_END } diff --git a/examples/filament/config.cmake b/examples/filament/config.cmake new file mode 100644 index 0000000000..47d8c346ed --- /dev/null +++ b/examples/filament/config.cmake @@ -0,0 +1,14 @@ +hunter_config(civetweb VERSION 1.11-p0 + CMAKE_ARGS CIVETWEB_ENABLE_WEBSOCKETS=ON) + +hunter_config(SPIRV-Headers VERSION 1.5.1.corrected) + +hunter_config(SPIRV-Tools VERSION 2020.1-p0) + +hunter_config(spirv-cross VERSION 20200917) + +hunter_config(glslang VERSION 8.13.3743-9eef54b2-p0 + CMAKE_ARGS ENABLE_HLSL=OFF ENABLE_GLSLANG_BINARIES=OFF ENABLE_OPT=OFF BUILD_TESTING=OFF) + +hunter_config(astc-encoder VERSION 1.3-a47b80f-p1) + diff --git a/examples/filament/main.cpp b/examples/filament/main.cpp new file mode 100644 index 0000000000..b10496c29a --- /dev/null +++ b/examples/filament/main.cpp @@ -0,0 +1,5 @@ +#include + +int main() { + filament::Engine* engine = filament::Engine::create(); +} diff --git a/examples/foo/CMakeLists.txt b/examples/foo/CMakeLists.txt index a1a7acabc3..3dcecde38c 100644 --- a/examples/foo/CMakeLists.txt +++ b/examples/foo/CMakeLists.txt @@ -1,4 +1,4 @@ -# Copyright (c) 2016-2019, Ruslan Baratov +# Copyright (c) 2016-2020, Rahul Sheth, Ruslan Baratov # All rights reserved. cmake_minimum_required(VERSION 3.2) diff --git a/examples/freetype-gl/CMakeLists.txt b/examples/freetype-gl/CMakeLists.txt new file mode 100644 index 0000000000..503ae98ae4 --- /dev/null +++ b/examples/freetype-gl/CMakeLists.txt @@ -0,0 +1,15 @@ +cmake_minimum_required(VERSION 3.0) + +# Emulate HunterGate: +# * https://github.com/hunter-packages/gate +include("../common.cmake") + +project(download-freetype-gl) + +# DOCUMENTATION_START { +hunter_add_package(freetype-gl) +find_package(freetype-gl CONFIG REQUIRED) + +add_executable(freetype-gl-example main.cpp) +target_link_libraries(freetype-gl-example PRIVATE freetype-gl::freetype-gl) +# DOCUMENTATION_END } diff --git a/examples/freetype-gl/main.cpp b/examples/freetype-gl/main.cpp new file mode 100644 index 0000000000..86f4474b86 --- /dev/null +++ b/examples/freetype-gl/main.cpp @@ -0,0 +1,8 @@ +#include "freetype-gl/freetype-gl.h" + +int main() +{ + texture_glyph_t *emptyGlyph=texture_glyph_new(); + + return 1; +} diff --git a/examples/glslang/CMakeLists.txt b/examples/glslang/CMakeLists.txt index f2a9016acb..6a06317a62 100644 --- a/examples/glslang/CMakeLists.txt +++ b/examples/glslang/CMakeLists.txt @@ -5,6 +5,7 @@ cmake_minimum_required(VERSION 3.0) # Emulate HunterGate: # * https://github.com/hunter-packages/gate +set(TESTING_CONFIG_OPT FILEPATH ${CMAKE_CURRENT_LIST_DIR}/config.cmake) include("../common.cmake") project(download-glslang) diff --git a/examples/glslang/config.cmake b/examples/glslang/config.cmake new file mode 100644 index 0000000000..d35f193fe2 --- /dev/null +++ b/examples/glslang/config.cmake @@ -0,0 +1,2 @@ +hunter_config(SPIRV-Headers VERSION 1.5.1.corrected) +hunter_config(SPIRV-Tools VERSION 2020.1-p0) diff --git a/examples/jpeg-compressor/CMakeLists.txt b/examples/jpeg-compressor/CMakeLists.txt new file mode 100644 index 0000000000..997cb39a36 --- /dev/null +++ b/examples/jpeg-compressor/CMakeLists.txt @@ -0,0 +1,18 @@ +# Copyright (c) 2016-2020, Rahul Sheth, Ruslan Baratov +# All rights reserved. + +cmake_minimum_required(VERSION 3.2) + +# Emulate HunterGate: +# * https://github.com/hunter-packages/gate +include("../common.cmake") + +project(download-jpeg-compressor) + +# DOCUMENTATION_START { +hunter_add_package(jpeg-compressor) +find_package(jpeg-compressor CONFIG REQUIRED) + +add_executable(boo boo.cpp) +target_link_libraries(boo PUBLIC jpeg-compressor::jpgd) +# DOCUMENTATION_END } diff --git a/examples/jpeg-compressor/boo.cpp b/examples/jpeg-compressor/boo.cpp new file mode 100644 index 0000000000..40d68fd7f2 --- /dev/null +++ b/examples/jpeg-compressor/boo.cpp @@ -0,0 +1,7 @@ +#include + +int main() { + unsigned char* test = jpgd::decompress_jpeg_image_from_memory(NULL, 0, NULL, NULL, NULL, 0); + if(test) return 0; + return 1; +} diff --git a/examples/jsmn/CMakeLists.txt b/examples/jsmn/CMakeLists.txt new file mode 100644 index 0000000000..34f9f1ade8 --- /dev/null +++ b/examples/jsmn/CMakeLists.txt @@ -0,0 +1,18 @@ +# Copyright (c) 2016-2020, Rahul Sheth, Ruslan Baratov +# All rights reserved. + +cmake_minimum_required(VERSION 3.2) + +# Emulate HunterGate: +# * https://github.com/hunter-packages/gate +include("../common.cmake") + +project(download-jsmn) + +# DOCUMENTATION_START { +hunter_add_package(jsmn) +find_package(jsmn CONFIG REQUIRED) + +add_executable(boo boo.cpp) +target_link_libraries(boo PUBLIC jsmn::jsmn) +# DOCUMENTATION_END } diff --git a/examples/jsmn/boo.cpp b/examples/jsmn/boo.cpp new file mode 100644 index 0000000000..6d95ab41c1 --- /dev/null +++ b/examples/jsmn/boo.cpp @@ -0,0 +1,6 @@ +#include + +int main() { + jsmn_parser p; + jsmn_init(&p); +} diff --git a/examples/libarchive/CMakeLists.txt b/examples/libarchive/CMakeLists.txt new file mode 100644 index 0000000000..7729bd2598 --- /dev/null +++ b/examples/libarchive/CMakeLists.txt @@ -0,0 +1,18 @@ +# Copyright (c) 2020, Timothy Stack +# All rights reserved. + +cmake_minimum_required(VERSION 3.2) + +# Emulate HunterGate: +# * https://github.com/hunter-packages/gate +include("../common.cmake") + +project(test-libarchive) + +# DOCUMENTATION_START { +hunter_add_package(libarchive) +find_package(libarchive CONFIG REQUIRED) + +add_executable(boo boo.cpp) +target_link_libraries(boo PUBLIC PkgConfig::libarchive) +# DOCUMENTATION_END } diff --git a/examples/libarchive/boo.cpp b/examples/libarchive/boo.cpp new file mode 100644 index 0000000000..f3503799a4 --- /dev/null +++ b/examples/libarchive/boo.cpp @@ -0,0 +1,27 @@ + +#include + +#include +#include + +int main(int argc, char *argv[]) +{ + static std::string CONTENT = "Hello, World!\n"; + + char buf[32 * 1024]; + size_t used; + auto arc = archive_write_new(); + archive_write_add_filter_gzip(arc); + archive_write_set_format_pax_restricted(arc); + archive_write_open_memory(arc, buf, sizeof(buf), &used); + auto entry = archive_entry_new(); + archive_entry_set_pathname(entry, "hw.txt"); + archive_entry_set_size(entry, CONTENT.size()); + archive_entry_set_filetype(entry, AE_IFREG); + archive_entry_set_perm(entry, 0644); + archive_write_header(arc, entry); + archive_write_data(arc, CONTENT.c_str(), CONTENT.size()); + archive_entry_free(entry); + archive_write_close(arc); + archive_write_free(arc); +} diff --git a/examples/libigl/CMakeLists.txt b/examples/libigl/CMakeLists.txt index 89abb10b43..542964cf56 100644 --- a/examples/libigl/CMakeLists.txt +++ b/examples/libigl/CMakeLists.txt @@ -14,5 +14,5 @@ hunter_add_package(libigl) find_package(libigl CONFIG REQUIRED) add_executable(boo boo.cpp) -target_link_libraries(boo PUBLIC igl::core) +target_link_libraries(boo PUBLIC igl::common igl::core) # DOCUMENTATION_END } diff --git a/examples/lz4/CMakeLists.txt b/examples/lz4/CMakeLists.txt index 5ccb3bea27..dcdca14e3d 100644 --- a/examples/lz4/CMakeLists.txt +++ b/examples/lz4/CMakeLists.txt @@ -10,7 +10,7 @@ include("../common.cmake") project(download-lz4) hunter_add_package(lz4) -find_package(lz4 CONFIG REQUIRED) +find_package(LZ4 CONFIG REQUIRED) add_executable(boo boo.cpp) -target_link_libraries(boo PUBLIC lz4::lz4) +target_link_libraries(boo PUBLIC LZ4::lz4_static) diff --git a/examples/meshoptimizer/CMakeLists.txt b/examples/meshoptimizer/CMakeLists.txt new file mode 100644 index 0000000000..b5f8248613 --- /dev/null +++ b/examples/meshoptimizer/CMakeLists.txt @@ -0,0 +1,26 @@ +# Copyright (c) 2016-2020, Rahul Sheth, Ruslan Baratov +# All rights reserved. + +cmake_minimum_required(VERSION 3.2) + +# Emulate HunterGate: +# * https://github.com/hunter-packages/gate +include("../common.cmake") + +project(download-meshoptimizer) + +# DOCUMENTATION_START { +hunter_add_package(meshoptimizer) +find_package(meshoptimizer CONFIG REQUIRED) + +# Available: +# Libraries: +# meshoptimizer::meshoptimizer +# meshoptimizer::libgltfpack (if MESHOPT_BUILD_GLTFPACK=ON) +# Binaries: +# meshoptimizer::gltfpack (if MESHOPT_BUILD_GLTFPACK=ON) +# meshoptimizer::demo (if MESHOPT_BUILD_DEMO=ON) + +add_executable(boo boo.cpp) +target_link_libraries(boo PUBLIC meshoptimizer::meshoptimizer) +# DOCUMENTATION_END } diff --git a/examples/meshoptimizer/boo.cpp b/examples/meshoptimizer/boo.cpp new file mode 100644 index 0000000000..375a87da70 --- /dev/null +++ b/examples/meshoptimizer/boo.cpp @@ -0,0 +1,6 @@ +#include + +int main() { + meshopt_remapIndexBuffer(NULL, NULL, 0, NULL); + return 0; +} diff --git a/examples/miniz/CMakeLists.txt b/examples/miniz/CMakeLists.txt new file mode 100644 index 0000000000..f6d4abd935 --- /dev/null +++ b/examples/miniz/CMakeLists.txt @@ -0,0 +1,18 @@ +# Copyright (c) 2016-2020, Rahul Sheth, Ruslan Baratov +# All rights reserved. + +cmake_minimum_required(VERSION 3.2) + +# Emulate HunterGate: +# * https://github.com/hunter-packages/gate +include("../common.cmake") + +project(download-miniz) + +# DOCUMENTATION_START { +hunter_add_package(miniz) +find_package(miniz CONFIG REQUIRED) + +add_executable(boo boo.cpp) +target_link_libraries(boo PUBLIC miniz::miniz) +# DOCUMENTATION_END } diff --git a/examples/miniz/boo.cpp b/examples/miniz/boo.cpp new file mode 100644 index 0000000000..aaafdba72f --- /dev/null +++ b/examples/miniz/boo.cpp @@ -0,0 +1,5 @@ +#include + +int main() { + printf("miniz.c version: %s\n", MZ_VERSION); +} diff --git a/examples/occt/CMakeLists.txt b/examples/occt/CMakeLists.txt new file mode 100644 index 0000000000..8ef937db0e --- /dev/null +++ b/examples/occt/CMakeLists.txt @@ -0,0 +1,23 @@ +# Copyright (c) 2016-2020, Rahul Sheth, Ruslan Baratov +# All rights reserved. + +cmake_minimum_required(VERSION 3.2) + +# Emulate HunterGate: +# * https://github.com/hunter-packages/gate +include("../common.cmake") + +project(download-occt) + +# DOCUMENTATION_START { +hunter_add_package(occt) +find_package(OpenCASCADE CONFIG REQUIRED) + +add_executable(boo boo.cpp) +target_link_libraries(boo occt::TKFillet occt::TKOffset occt::TKBool occt::TKBO occt::TKShHealing occt::TKPrim occt::TKTopAlgo occt::TKBRep occt::TKGeomAlgo occt::TKGeomBase occt::TKG3d occt::TKG2d occt::TKMath occt::TKernel) +if(APPLE OR (UNIX AND NOT ANDROID)) + target_link_libraries(boo pthread) +elseif(WIN32) + target_link_libraries(boo ws2_32) +endif() +# DOCUMENTATION_END } diff --git a/examples/occt/boo.cpp b/examples/occt/boo.cpp new file mode 100644 index 0000000000..6e1c9f1c68 --- /dev/null +++ b/examples/occt/boo.cpp @@ -0,0 +1,16 @@ +#include +#include +#include + +int main() { + try { + gp_Pnt a(0, 0, 0); + gp_Pnt b(1, 0, 0); + + Handle(Geom_TrimmedCurve) edge = GC_MakeSegment(a, b); + } + catch (const Standard_Failure& e) { + std::cout << e.GetMessageString() << std::endl; + return 1; + } +} \ No newline at end of file diff --git a/examples/opusfile/CMakeLists.txt b/examples/opusfile/CMakeLists.txt new file mode 100644 index 0000000000..d0db28d050 --- /dev/null +++ b/examples/opusfile/CMakeLists.txt @@ -0,0 +1,19 @@ +cmake_minimum_required(VERSION 3.2) + +# Emulate HunterGate: +# * https://github.com/hunter-packages/gate +include("../common.cmake") + +project(download-opusfile) + +# DOCUMENTATION_START { +hunter_add_package(opusfile) +find_package(opusfile CONFIG REQUIRED) + +add_executable(main main.cpp) +target_link_libraries(main PUBLIC opusfile::opusfile) + +if(NOT WIN32 AND NOT MINGW AND NOT MSYS) + target_link_libraries(main PUBLIC opusfile::opusurl) +endif() +# DOCUMENTATION_END } diff --git a/examples/opusfile/main.cpp b/examples/opusfile/main.cpp new file mode 100644 index 0000000000..23acc5ff3f --- /dev/null +++ b/examples/opusfile/main.cpp @@ -0,0 +1,4 @@ +#include + +int main() { +} diff --git a/examples/re2/CMakeLists.txt b/examples/re2/CMakeLists.txt index c72b8bf3ac..7d0e07bded 100644 --- a/examples/re2/CMakeLists.txt +++ b/examples/re2/CMakeLists.txt @@ -1,5 +1,4 @@ -# Copyright (c) 2016-2017, Ruslan Baratov -# Copyright (c) 2017, David Hirvonen +# Copyright (c) 2016-2020, Ruslan Baratov, David Hirvonen, Rahul Sheth # All rights reserved. cmake_minimum_required(VERSION 3.0) @@ -11,7 +10,7 @@ include("../common.cmake") project(download-re2) hunter_add_package(re2) -find_package(RE2 CONFIG REQUIRED) +find_package(re2 CONFIG REQUIRED) add_executable(foo foo.cpp) -target_link_libraries(foo RE2::re2) +target_link_libraries(foo re2::re2) diff --git a/examples/smol-v/CMakeLists.txt b/examples/smol-v/CMakeLists.txt new file mode 100644 index 0000000000..6939b5922e --- /dev/null +++ b/examples/smol-v/CMakeLists.txt @@ -0,0 +1,18 @@ +# Copyright (c) 2016-2020, Rahul Sheth, Ruslan Baratov +# All rights reserved. + +cmake_minimum_required(VERSION 3.2) + +# Emulate HunterGate: +# * https://github.com/hunter-packages/gate +include("../common.cmake") + +project(download-smol-v) + +# DOCUMENTATION_START { +hunter_add_package(smol-v) +find_package(smol-v CONFIG REQUIRED) + +add_executable(boo boo.cpp) +target_link_libraries(boo PUBLIC smol-v::smol-v) +# DOCUMENTATION_END } diff --git a/examples/smol-v/boo.cpp b/examples/smol-v/boo.cpp new file mode 100644 index 0000000000..09aea1a9b4 --- /dev/null +++ b/examples/smol-v/boo.cpp @@ -0,0 +1,5 @@ +#include + +int main() { + smolv::Stats* stats = smolv::StatsCreate(); +} diff --git a/examples/theora/CMakeLists.txt b/examples/theora/CMakeLists.txt new file mode 100644 index 0000000000..4e04ea9151 --- /dev/null +++ b/examples/theora/CMakeLists.txt @@ -0,0 +1,18 @@ +# Copyright (c) +# All rights reserved. + +cmake_minimum_required(VERSION 3.2) + +# Emulate HunterGate: +# * https://github.com/cpp-pm/gate +include("../common.cmake") + +project(download-theora) + +# DOCUMENTATION_START { +hunter_add_package(theora) +find_package(theora REQUIRED) + +add_executable(main main.cpp) +target_link_libraries(main PUBLIC theora::theora) +# DOCUMENTATION_END } diff --git a/examples/theora/main.cpp b/examples/theora/main.cpp new file mode 100644 index 0000000000..860d572bff --- /dev/null +++ b/examples/theora/main.cpp @@ -0,0 +1,6 @@ +#include + +int main() { + const char *version = theora_version_string(); + return 0; +} diff --git a/examples/tinyexr/CMakeLists.txt b/examples/tinyexr/CMakeLists.txt new file mode 100644 index 0000000000..f0e34b1228 --- /dev/null +++ b/examples/tinyexr/CMakeLists.txt @@ -0,0 +1,18 @@ +# Copyright (c) 2016-2020, Rahul Sheth, Ruslan Baratov +# All rights reserved. + +cmake_minimum_required(VERSION 3.2) + +# Emulate HunterGate: +# * https://github.com/hunter-packages/gate +include("../common.cmake") + +project(download-tinyexr) + +# DOCUMENTATION_START { +hunter_add_package(tinyexr) +find_package(tinyexr CONFIG REQUIRED) + +add_executable(boo boo.cpp) +target_link_libraries(boo PUBLIC tinyexr::tinyexr) +# DOCUMENTATION_END } diff --git a/examples/tinyexr/boo.cpp b/examples/tinyexr/boo.cpp new file mode 100644 index 0000000000..7b15b5d7c0 --- /dev/null +++ b/examples/tinyexr/boo.cpp @@ -0,0 +1,5 @@ +#include + +int main() { + return ParseEXRVersionFromFile(0, 0); +} diff --git a/examples/tinygltf/CMakeLists.txt b/examples/tinygltf/CMakeLists.txt new file mode 100644 index 0000000000..4b33339da3 --- /dev/null +++ b/examples/tinygltf/CMakeLists.txt @@ -0,0 +1,18 @@ +# Copyright (c) 2016-2020, Rahul Sheth, Ruslan Baratov +# All rights reserved. + +cmake_minimum_required(VERSION 3.2) + +# Emulate HunterGate: +# * https://github.com/hunter-packages/gate +include("../common.cmake") + +project(download-tinygltf) + +# DOCUMENTATION_START { +hunter_add_package(tinygltf) +find_package(tinygltf CONFIG REQUIRED) + +add_executable(boo boo.cpp) +target_link_libraries(boo PUBLIC tinygltf::tinygltf) +# DOCUMENTATION_END } diff --git a/examples/tinygltf/boo.cpp b/examples/tinygltf/boo.cpp new file mode 100644 index 0000000000..d8df1cee73 --- /dev/null +++ b/examples/tinygltf/boo.cpp @@ -0,0 +1,7 @@ +#define TINYGLTF_NO_INCLUDE_JSON + +#include + +int main() { + return 0; +} diff --git a/examples/tinyobjloader/CMakeLists.txt b/examples/tinyobjloader/CMakeLists.txt new file mode 100644 index 0000000000..60060b087c --- /dev/null +++ b/examples/tinyobjloader/CMakeLists.txt @@ -0,0 +1,18 @@ +# Copyright (c) 2020, Rahul Sheth +# All rights reserved. + +cmake_minimum_required(VERSION 3.2) + +# Emulate HunterGate: +# * https://github.com/hunter-packages/gate +include("../common.cmake") + +project(download-tinyobjloader) + +# DOCUMENTATION_START { +hunter_add_package(tinyobjloader) +find_package(tinyobjloader CONFIG REQUIRED) + +add_executable(boo boo.cpp) +target_link_libraries(boo PUBLIC tinyobjloader::tinyobjloader) +# DOCUMENTATION_END } diff --git a/examples/tinyobjloader/boo.cpp b/examples/tinyobjloader/boo.cpp new file mode 100644 index 0000000000..0be3593af9 --- /dev/null +++ b/examples/tinyobjloader/boo.cpp @@ -0,0 +1,7 @@ +#include + +int main() { + tinyobj::attrib_t attrib; + std::vector shapes; + std::vector materials; +} diff --git a/examples/tsl_hat_trie/CMakeLists.txt b/examples/tsl_hat_trie/CMakeLists.txt new file mode 100644 index 0000000000..d3f9a148ce --- /dev/null +++ b/examples/tsl_hat_trie/CMakeLists.txt @@ -0,0 +1,18 @@ +# Copyright (c) 2016-2020, Rahul Sheth, Ruslan Baratov +# All rights reserved. + +cmake_minimum_required(VERSION 3.2) + +# Emulate HunterGate: +# * https://github.com/hunter-packages/gate +include("../common.cmake") + +project(download-tsl_hat_trie) + +# DOCUMENTATION_START { +hunter_add_package(tsl_hat_trie) +find_package(tsl_hat_trie CONFIG REQUIRED) + +add_executable(boo boo.cpp) +target_link_libraries(boo PUBLIC tsl::hat_trie) +# DOCUMENTATION_END } diff --git a/examples/tsl_hat_trie/boo.cpp b/examples/tsl_hat_trie/boo.cpp new file mode 100644 index 0000000000..25cf62caa2 --- /dev/null +++ b/examples/tsl_hat_trie/boo.cpp @@ -0,0 +1,5 @@ +#include + +int main() { + tsl::htrie_set set = {"test1", "test2"}; +} diff --git a/examples/tsl_robin_map/CMakeLists.txt b/examples/tsl_robin_map/CMakeLists.txt new file mode 100644 index 0000000000..9db5ee982c --- /dev/null +++ b/examples/tsl_robin_map/CMakeLists.txt @@ -0,0 +1,18 @@ +# Copyright (c) 2016-2020, Rahul Sheth, Ruslan Baratov +# All rights reserved. + +cmake_minimum_required(VERSION 3.2) + +# Emulate HunterGate: +# * https://github.com/hunter-packages/gate +include("../common.cmake") + +project(download-tsl_robin_map) + +# DOCUMENTATION_START { +hunter_add_package(tsl_robin_map) +find_package(tsl-robin-map CONFIG REQUIRED) + +add_executable(boo boo.cpp) +target_link_libraries(boo PUBLIC tsl::robin_map) +# DOCUMENTATION_END } diff --git a/examples/tsl_robin_map/boo.cpp b/examples/tsl_robin_map/boo.cpp new file mode 100644 index 0000000000..c72bdddf4e --- /dev/null +++ b/examples/tsl_robin_map/boo.cpp @@ -0,0 +1,5 @@ +#include + +int main() { + tsl::robin_map map = {{-1, 1}, {-2, 2}}; +} diff --git a/examples/utf8/CMakeLists.txt b/examples/utf8/CMakeLists.txt index 70a83a02f3..2fe2efa00d 100644 --- a/examples/utf8/CMakeLists.txt +++ b/examples/utf8/CMakeLists.txt @@ -11,8 +11,8 @@ project(download-utf8) # DOCUMENTATION_START { hunter_add_package(utf8) -find_package(utf8 CONFIG REQUIRED) +find_package(utf8cpp CONFIG REQUIRED) add_executable(boo boo.cpp) -target_link_libraries(boo PUBLIC utf8::utf8) +target_link_libraries(boo PUBLIC utf8cpp) # DOCUMENTATION_END } diff --git a/examples/utf8/boo.cpp b/examples/utf8/boo.cpp index 2796973736..c27f01aafc 100644 --- a/examples/utf8/boo.cpp +++ b/examples/utf8/boo.cpp @@ -2,7 +2,7 @@ #include #include #include -#include +#include using namespace std; int main(int argc, char** argv) { diff --git a/examples/xatlas/CMakeLists.txt b/examples/xatlas/CMakeLists.txt new file mode 100644 index 0000000000..738ef80aaf --- /dev/null +++ b/examples/xatlas/CMakeLists.txt @@ -0,0 +1,18 @@ +# Copyright (c) 2016-2020, Rahul Sheth, Ruslan Baratov +# All rights reserved. + +cmake_minimum_required(VERSION 3.2) + +# Emulate HunterGate: +# * https://github.com/hunter-packages/gate +include("../common.cmake") + +project(download-xatlas) + +# DOCUMENTATION_START { +hunter_add_package(xatlas) +find_package(xatlas CONFIG REQUIRED) + +add_executable(boo boo.cpp) +target_link_libraries(boo PUBLIC xatlas::xatlas) +# DOCUMENTATION_END } diff --git a/examples/xatlas/boo.cpp b/examples/xatlas/boo.cpp new file mode 100644 index 0000000000..ec1ac5a6e1 --- /dev/null +++ b/examples/xatlas/boo.cpp @@ -0,0 +1,8 @@ +#include // for size_t +#include + +#include + +int main() { + std::shared_ptr atlas = std::make_shared(); +} diff --git a/examples/yaml-cpp/CMakeLists.txt b/examples/yaml-cpp/CMakeLists.txt index 49849ff21d..7abd8dae78 100644 --- a/examples/yaml-cpp/CMakeLists.txt +++ b/examples/yaml-cpp/CMakeLists.txt @@ -12,4 +12,5 @@ find_package(yaml-cpp CONFIG REQUIRED) add_executable(parse parse.cpp) -target_link_libraries(parse yaml-cpp::yaml-cpp) + +target_link_libraries(parse yaml-cpp) \ No newline at end of file diff --git a/examples/zlog/CMakeLists.txt b/examples/zlog/CMakeLists.txt new file mode 100644 index 0000000000..542856468a --- /dev/null +++ b/examples/zlog/CMakeLists.txt @@ -0,0 +1,18 @@ +# Copyright (c) 2016-2019, Ruslan Baratov +# All rights reserved. + +cmake_minimum_required(VERSION 3.2) + +# Emulate HunterGate: +# * https://github.com/hunter-packages/gate +include("../common.cmake") + +project(download-zlog) + +# DOCUMENTATION_START { +hunter_add_package(zlog) +find_package(zlog CONFIG REQUIRED) + +add_executable(boo boo.c) +target_link_libraries(boo PUBLIC zlog::zlog) +# DOCUMENTATION_END } diff --git a/examples/zlog/boo.c b/examples/zlog/boo.c new file mode 100644 index 0000000000..ccf99d91cb --- /dev/null +++ b/examples/zlog/boo.c @@ -0,0 +1,4 @@ +#include + +int main() { +} diff --git a/jenkins.py b/jenkins.py index bc90fb1417..7f9eec415a 100755 --- a/jenkins.py +++ b/jenkins.py @@ -206,6 +206,9 @@ def run(): subprocess.check_call(args) + cache_retry_count = 0 + max_cache_retry_count = 5 + if parsed_args.upload: seconds = 60 print( @@ -247,7 +250,13 @@ def run(): print(' `{}`'.format(i)) print(']') - subprocess.check_call(args) + while subprocess.call(args) and cache_retry_count < max_cache_retry_count: + print('Cache-only sanity check attempt {} failed...'.format(cache_retry_count)) + time.sleep(seconds) + cache_retry_count += 1 + + if cache_retry_count >= max_cache_retry_count: + exit(1) if __name__ == "__main__": run() diff --git a/maintenance/create_package.sh b/maintenance/create_package.sh new file mode 100644 index 0000000000..ca8122fe39 --- /dev/null +++ b/maintenance/create_package.sh @@ -0,0 +1,35 @@ +#!/bin/bash + +PACKAGE_NAME=$1 +PACKAGE_VERSION=$2 +PACKAGE_URL=$3 + +if [[ "$OSTYPE" == "darwin"* ]]; then + SED_EXECUTABLE=gsed + if command -v $SED_EXECUTABLE > /dev/null 2>&1; then + echo "Found gsed" + else + echo "GNU sed not installed. Try brew install gsed." + exit 1 + fi +else + SED_EXECUTABLE=sed +fi + +echo "Creating package files for $PACKAGE_NAME" + +winpty wget $3 -O package.tar.gz +PACKAGE_SHA1=$(openssl sha1 package.tar.gz | $SED_EXECUTABLE 's/^.* //') +rm package.tar.gz + +cp -r cmake/projects/foo cmake/projects/$PACKAGE_NAME +$SED_EXECUTABLE -i "s,foo,$PACKAGE_NAME,g" cmake/projects/$PACKAGE_NAME/hunter.cmake +$SED_EXECUTABLE -i "s,\"https.*\",\"$PACKAGE_URL\",g" cmake/projects/$PACKAGE_NAME/hunter.cmake +$SED_EXECUTABLE -i "s,[1]\{40\},$PACKAGE_SHA1,g" cmake/projects/$PACKAGE_NAME/hunter.cmake +$SED_EXECUTABLE -i "s,1\.0\.0,$PACKAGE_VERSION,g" cmake/projects/$PACKAGE_NAME/hunter.cmake + +cp -r examples/foo examples/$PACKAGE_NAME +$SED_EXECUTABLE -i "s,foo,$PACKAGE_NAME,g" examples/$PACKAGE_NAME/* + +cp -r docs/packages/pkg/foo.rst docs/packages/pkg/$PACKAGE_NAME.rst +$SED_EXECUTABLE -i "s,foo,$PACKAGE_NAME,g" docs/packages/pkg/$PACKAGE_NAME.rst diff --git a/maintenance/fork_repo.sh b/maintenance/fork_repo.sh new file mode 100644 index 0000000000..e93b7f8a8f --- /dev/null +++ b/maintenance/fork_repo.sh @@ -0,0 +1,15 @@ +#!/bin/bash +GITHUB_PERSONAL_ACCESS_TOKEN=$1 +# Like cpp-pm +GITHUB_USER=$2 +# Like hunter +GITHUB_REPO=$3 +echo "Working on repo $GITHUB_REPO" +#fork to cpp-pm +curl -s -H "Authorization: token ${GITHUB_PERSONAL_ACCESS_TOKEN}" "https://api.github.com/repos/${GITHUB_USER}/${GITHUB_REPO}/forks" -d '{"organization":"cpp-pm"}' +#add cpp-pm-packages team to collaborators +curl -s -H "Authorization: token ${GITHUB_PERSONAL_ACCESS_TOKEN}" "https://api.github.com/orgs/cpp-pm/teams/cpp-pm-packages/repos/cpp-pm/${GITHUB_REPO}" -X PUT -d '{"permission":"push"}' +#add branch protection for master +curl -s -H 'Accept: application/vnd.github.luke-cage-preview+json' -H "Authorization: token ${GITHUB_PERSONAL_ACCESS_TOKEN}" "https://api.github.com/repos/cpp-pm/${GITHUB_REPO}/branches/master/protection" -X PUT -d '{"required_status_checks":null,"enforce_admins":true,"required_pull_request_reviews":{"required_approving_review_count":1},"restrictions":{"teams":[], "users":[]}}' +#add branch protection for hunter branches +curl -s -H "Authorization: token ${GITHUB_PERSONAL_ACCESS_TOKEN}" "https://api.github.com/repos/cpp-pm/${GITHUB_REPO}/branches" | jq .[][\"name\"] | grep hunter | xargs -I {} sh -c 'curl -H "Accept: application/vnd.github.luke-cage-preview+json" -H "Authorization: token ${GITHUB_PERSONAL_ACCESS_TOKEN}" "https://api.github.com/repos/cpp-pm/${GITHUB_REPO}/branches/{}/protection" -X PUT -d "{\"required_status_checks\":null,\"enforce_admins\":true,\"required_pull_request_reviews\":{\"required_approving_review_count\":1},\"restrictions\":{\"teams\":[], \"users\":[]}}"' diff --git a/maintenance/upload-password-template.cmake b/maintenance/upload-password-template.cmake index 9afd12fb62..3ce8c4beac 100644 --- a/maintenance/upload-password-template.cmake +++ b/maintenance/upload-password-template.cmake @@ -1,6 +1,6 @@ hunter_upload_password( - REPO_OWNER "ingenue" + REPO_OWNER "cpp-pm" REPO "hunter-cache" - USERNAME "ingenue" + USERNAME "cpp-pm-bot" PASSWORD "$ENV{GITHUB_USER_PASSWORD}" ) diff --git a/scripts/find_python.cmake b/scripts/find_python.cmake index 95e30034ac..a49156eac1 100644 --- a/scripts/find_python.cmake +++ b/scripts/find_python.cmake @@ -1,9 +1,13 @@ -cmake_minimum_required(VERSION 3.0) +cmake_minimum_required(VERSION 3.12) -find_package(PythonInterp 3 QUIET) +if(DEFINED ENV{HUNTER_PYTHON_LOCATION}) + set(Python_ROOT_DIR $ENV{HUNTER_PYTHON_LOCATION}) +endif() + +find_package(Python COMPONENTS Interpreter QUIET) -if(NOT PYTHONINTERP_FOUND) +if(NOT Python_Interpreter_FOUND) message(FATAL_ERROR "Python not found") endif() -message(${PYTHON_EXECUTABLE}) +message(${Python_EXECUTABLE}) diff --git a/scripts/link-all.cmake b/scripts/link-all.cmake index f39ac1e38f..e3f8215a45 100644 --- a/scripts/link-all.cmake +++ b/scripts/link-all.cmake @@ -1,4 +1,4 @@ -cmake_minimum_required(VERSION 3.0) +cmake_minimum_required(VERSION 3.12) string(COMPARE EQUAL "${HUNTER_INSTALL_PREFIX}" "" is_empty) if(is_empty) @@ -45,12 +45,19 @@ if(NOT EXISTS "${PYTHON_LINK_SCRIPT}") message(FATAL_ERROR "File not exists: ${PYTHON_LINK_SCRIPT}") endif() -find_package(PythonInterp 3 QUIET) -if(PYTHONINTERP_FOUND) - message("Link files using Python: ${PYTHON_EXECUTABLE}") +execute_process( + COMMAND ${CMAKE_COMMAND} -P ${CMAKE_CURRENT_LIST_DIR}/find_python.cmake + RESULT_VARIABLE python_found_result + OUTPUT_VARIABLE python_path + ERROR_VARIABLE python_path + OUTPUT_STRIP_TRAILING_WHITESPACE +) + +if(python_found_result EQUAL "0") + message("Link files using Python: ${python_path}") set( cmd - "${PYTHON_EXECUTABLE}" + "${python_path}" "${PYTHON_LINK_SCRIPT}" "--list" "${LIST_OF_FILES}" diff --git a/tests/hunter_download_cache_meta_file/CMakeLists.txt b/tests/hunter_download_cache_meta_file/CMakeLists.txt index a96b7f3f83..d2592c6f12 100644 --- a/tests/hunter_download_cache_meta_file/CMakeLists.txt +++ b/tests/hunter_download_cache_meta_file/CMakeLists.txt @@ -8,7 +8,7 @@ project(TestModuleHunterDownloadCacheMetaFile) include(hunter_download_cache_meta_file) -set(HUNTER_CACHE_SERVERS "https://github.com/ingenue/hunter-cache") +set(HUNTER_CACHE_SERVERS "https://github.com/cpp-pm/hunter-cache") set(HUNTER_CACHED_ROOT "${CMAKE_CURRENT_BINARY_DIR}/_HUNTER") set(local_done_good "${HUNTER_CACHED_ROOT}/_Base/Cache/meta/db260dd/GTest/1.8.0-hunter-p2/93148cb/da39a3e/a49b0e5/356a192/da39a3e/CACHE.DONE") @@ -42,7 +42,7 @@ endif() ### File already downloaded, ok even server is bad -set(HUNTER_CACHE_SERVERS "https://github.com/ingenue/bad-hunter-cache") +set(HUNTER_CACHE_SERVERS "https://github.com/cpp-pm/bad-hunter-cache") hunter_download_cache_meta_file(LOCAL "${local_sha1_good}" DONE "${local_done_good}") @@ -59,7 +59,7 @@ endif() file(REMOVE "${local_done_good}") file(REMOVE "${local_sha1_good}") -set(HUNTER_CACHE_SERVERS "https://github.com/ingenue/bad-hunter-cache") +set(HUNTER_CACHE_SERVERS "https://github.com/cpp-pm/bad-hunter-cache") hunter_download_cache_meta_file(LOCAL "${local_sha1_good}" DONE "${local_done_good}") diff --git a/tests/hunter_download_cache_raw_file/CMakeLists.txt b/tests/hunter_download_cache_raw_file/CMakeLists.txt index 2e3fb9e255..11a79f47b4 100644 --- a/tests/hunter_download_cache_raw_file/CMakeLists.txt +++ b/tests/hunter_download_cache_raw_file/CMakeLists.txt @@ -8,7 +8,7 @@ project(TestModuleHunterDownloadCacheRawFile) include(hunter_download_cache_raw_file) -set(HUNTER_CACHE_SERVERS "https://github.com/ingenue/hunter-cache") +set(HUNTER_CACHE_SERVERS "https://github.com/cpp-pm/hunter-cache") set(HUNTER_CACHED_ROOT "${CMAKE_CURRENT_BINARY_DIR}/_HUNTER") set(fromserver "${HUNTER_CACHED_ROOT}/from.server") @@ -34,7 +34,7 @@ endif() ### File already downloaded, ok even server is bad -set(HUNTER_CACHE_SERVERS "https://github.com/ingenue/bad-hunter-cache") +set(HUNTER_CACHE_SERVERS "https://github.com/cpp-pm/bad-hunter-cache") hunter_download_cache_raw_file(LOCAL "${local_good}" SHA1 "${sha1_good}" FROMSERVER "${fromserver}") @@ -46,7 +46,7 @@ endif() file(REMOVE "${local_good}") -set(HUNTER_CACHE_SERVERS "https://github.com/ingenue/bad-hunter-cache") +set(HUNTER_CACHE_SERVERS "https://github.com/cpp-pm/bad-hunter-cache") hunter_download_cache_raw_file(LOCAL "${local_good}" SHA1 "${sha1_good}" FROMSERVER "${fromserver}") diff --git a/tests/hunter_setup_msvc/CMakeLists.txt b/tests/hunter_setup_msvc/CMakeLists.txt index 40bc377c55..f70a2d39fa 100644 --- a/tests/hunter_setup_msvc/CMakeLists.txt +++ b/tests/hunter_setup_msvc/CMakeLists.txt @@ -8,16 +8,18 @@ project(TestModuleHunterSetupMsvcArch) include(hunter_setup_msvc) -function(run_check version architecture expected_arch expected_version expected_year) +function(run_check version architecture host_toolset expected_arch expected_host expected_target expected_version expected_year) message("--------") message("Run test") set(MSVC_VERSION "${version}") set(MSVC_CXX_ARCHITECTURE_ID "${architecture}") + set(CMAKE_VS_PLATFORM_TOOLSET_HOST_ARCHITECTURE "${host_toolset}") message(" Input:") message(" MSVC_VERSION: ${MSVC_VERSION}") message(" MSVC_CXX_ARCHITECTURE_ID: ${MSVC_CXX_ARCHITECTURE_ID}") + message(" CMAKE_VS_PLATFORM_TOOLSET_HOST_ARCHITECTURE: ${CMAKE_VS_PLATFORM_TOOLSET_HOST_ARCHITECTURE}") message(" Expected output:") message(" HUNTER_MSVC_VERSION: ${HUNTER_MSVC_VERSION}") @@ -54,23 +56,35 @@ function(run_check version architecture expected_arch expected_version expected_ endif() endfunction() -run_check("1400" "X86" "x86" "8" "2005") -run_check("1500" "X86" "x86" "9" "2008") -run_check("1600" "X86" "x86" "10" "2010") -run_check("1700" "X86" "x86" "11" "2012") -run_check("1800" "X86" "x86" "12" "2013") -run_check("1900" "X86" "x86" "14" "2015") - -run_check("1400" "x64" "amd64" "8" "2005") -run_check("1500" "x64" "amd64" "9" "2008") -run_check("1600" "x64" "amd64" "10" "2010") -run_check("1700" "x64" "amd64" "11" "2012") -run_check("1800" "x64" "amd64" "12" "2013") -run_check("1900" "x64" "amd64" "14" "2015") - -run_check("1400" "ARMV7" "x86_arm" "8" "2005") -run_check("1500" "ARMV7" "x86_arm" "9" "2008") -run_check("1600" "ARMV7" "x86_arm" "10" "2010") -run_check("1700" "ARMV7" "x86_arm" "11" "2012") -run_check("1800" "ARMV7" "x86_arm" "12" "2013") -run_check("1900" "ARMV7" "x86_arm" "14" "2015") +run_check("1400" "X86" "" "x86" "x86" "x86" "8" "2005") +run_check("1500" "X86" "" "x86" "x86" "x86" "9" "2008") +run_check("1600" "X86" "" "x86" "x86" "x86" "10" "2010") +run_check("1700" "X86" "" "x86" "x86" "x86" "11" "2012") +run_check("1800" "X86" "" "x86" "x86" "x86" "12" "2013") +run_check("1900" "X86" "" "x86" "x86" "x86" "14" "2015") +run_check("1910" "X86" "" "x86" "x86" "x86" "15" "2017") +run_check("1920" "X86" "" "x86" "x86" "x86" "16" "2019") + +run_check("1400" "x64" "" "x86_amd64" "x86" "amd64" "8" "2005") +run_check("1500" "x64" "" "x86_amd64" "x86" "amd64" "9" "2008") +run_check("1600" "x64" "" "x86_amd64" "x86" "amd64" "10" "2010") +run_check("1700" "x64" "" "x86_amd64" "x86" "amd64" "11" "2012") +run_check("1800" "x64" "" "x86_amd64" "x86" "amd64" "12" "2013") +run_check("1900" "x64" "" "x86_amd64" "x86" "amd64" "14" "2015") +run_check("1910" "x64" "" "x86_amd64" "x86" "amd64" "15" "2017") +run_check("1920" "x64" "" "x86_amd64" "x86" "amd64" "16" "2019") +run_check("1920" "x64" "x64" "amd64" "amd64" "amd64" "16" "2019") + +run_check("1400" "ARMV7" "" "x86_arm" "x86" "arm" "8" "2005") +run_check("1500" "ARMV7" "" "x86_arm" "x86" "arm" "9" "2008") +run_check("1600" "ARMV7" "" "x86_arm" "x86" "arm" "10" "2010") +run_check("1700" "ARMV7" "" "x86_arm" "x86" "arm" "11" "2012") +run_check("1800" "ARMV7" "" "x86_arm" "x86" "arm" "12" "2013") +run_check("1900" "ARMV7" "" "x86_arm" "x86" "arm" "14" "2015") +run_check("1910" "ARMV7" "" "x86_arm" "x86" "arm" "15" "2017") +run_check("1920" "ARMV7" "" "x86_arm" "x86" "arm" "16" "2019") +run_check("1920" "ARMV7" "x64" "amd64_arm" "amd64" "arm" "16" "2019") + +run_check("1910" "ARM64" "" "x86_arm64" "x86" "arm64" "15" "2017") +run_check("1920" "ARM64" "" "x86_arm64" "x86" "arm64" "16" "2019") +run_check("1920" "ARM64" "x64" "amd64_arm64" "amd64" "arm64" "16" "2019") From 484affa61aaf195e606df8789a00995ec48a424a Mon Sep 17 00:00:00 2001 From: Harrm Date: Fri, 29 Jan 2021 12:05:32 +0300 Subject: [PATCH 02/10] Try'na fix crc32c --- cmake/projects/crc32c/hunter.cmake | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/cmake/projects/crc32c/hunter.cmake b/cmake/projects/crc32c/hunter.cmake index 1cf7dfe198..092d2ec844 100644 --- a/cmake/projects/crc32c/hunter.cmake +++ b/cmake/projects/crc32c/hunter.cmake @@ -21,7 +21,8 @@ hunter_add_version( hunter_cmake_args(crc32c CMAKE_ARGS CRC32C_BUILD_TESTS=OFF CRC32C_BUILD_BENCHMARKS=OFF - CRC32C_USE_GLOG=OFF) + CRC32C_USE_GLOG=OFF + CRC32C_INSTALL=ON) hunter_pick_scheme(DEFAULT url_sha1_cmake) hunter_cacheable(crc32c) From c717b0a8569489358330f2e8a3df14515c59d830 Mon Sep 17 00:00:00 2001 From: Harrm Date: Fri, 29 Jan 2021 12:55:58 +0300 Subject: [PATCH 03/10] Rollback crc32c version --- cmake/configs/default.cmake | 2 +- cmake/projects/crc32c/hunter.cmake | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/cmake/configs/default.cmake b/cmake/configs/default.cmake index 70c56e8afc..fc0f8205bb 100644 --- a/cmake/configs/default.cmake +++ b/cmake/configs/default.cmake @@ -230,7 +230,7 @@ hunter_default_version(cpr VERSION 1.3.0) hunter_default_version(cpuinfo VERSION 0.0.0-d5e37ad-p0) hunter_default_version(crashpad VERSION v0.0.1-p0) hunter_default_version(crashup VERSION 0.0.2) -hunter_default_version(crc32c VERSION 1.1.1) +hunter_default_version(crc32c VERSION 1.0.5) hunter_default_version(cryptopp VERSION 8.2.0-p0) hunter_default_version(ctti VERSION 0.0.2) hunter_default_version(cub VERSION 1.8.0-p0) diff --git a/cmake/projects/crc32c/hunter.cmake b/cmake/projects/crc32c/hunter.cmake index 092d2ec844..82bfc9f338 100644 --- a/cmake/projects/crc32c/hunter.cmake +++ b/cmake/projects/crc32c/hunter.cmake @@ -22,7 +22,7 @@ hunter_cmake_args(crc32c CMAKE_ARGS CRC32C_BUILD_TESTS=OFF CRC32C_BUILD_BENCHMARKS=OFF CRC32C_USE_GLOG=OFF - CRC32C_INSTALL=ON) + ) hunter_pick_scheme(DEFAULT url_sha1_cmake) hunter_cacheable(crc32c) From 4b44d1a2157af0ef111b5562c963fda9c25fd815 Mon Sep 17 00:00:00 2001 From: Harrm Date: Fri, 29 Jan 2021 13:05:18 +0300 Subject: [PATCH 04/10] Fix absent default version for sqlite modern cpp --- cmake/configs/default.cmake | 1 + 1 file changed, 1 insertion(+) diff --git a/cmake/configs/default.cmake b/cmake/configs/default.cmake index fc0f8205bb..d90ec27435 100644 --- a/cmake/configs/default.cmake +++ b/cmake/configs/default.cmake @@ -147,6 +147,7 @@ hunter_default_version(SDL_ttf VERSION 2.0.14-p0) hunter_default_version(SFML VERSION 2.5.1-p0) hunter_default_version(SPIRV-Headers VERSION 1.5.4.raytracing.fixed) hunter_default_version(SPIRV-Tools VERSION 2020.1-p0) +hunter_default_version(SQLiteModernCpp VERSION 0.0.0) hunter_default_version(SimpleSignal VERSION 0.0.0-79c3f68-p1) hunter_default_version(Snappy VERSION 1.1.7) hunter_default_version(Sober VERSION 0.1.3) From 5f3531c96cc7b07568cfd0946c0f2dc119d4340e Mon Sep 17 00:00:00 2001 From: Harrm Date: Fri, 29 Jan 2021 13:24:04 +0300 Subject: [PATCH 05/10] Add kagome example --- examples/kagome/CMakeLists.txt | 15 +++++++++++++++ examples/kagome/main.cpp | 6 ++++++ 2 files changed, 21 insertions(+) create mode 100644 examples/kagome/CMakeLists.txt create mode 100644 examples/kagome/main.cpp diff --git a/examples/kagome/CMakeLists.txt b/examples/kagome/CMakeLists.txt new file mode 100644 index 0000000000..f3ac1f3ec4 --- /dev/null +++ b/examples/kagome/CMakeLists.txt @@ -0,0 +1,15 @@ +cmake_minimum_required(VERSION 3.2) + +# Emulate HunterGate: +# * https://github.com/hunter-packages/gate +include("../common.cmake") + +project(download-kagome) + +hunter_add_package(kagome) + +find_package(kagome CONFIG REQUIRED) + +add_executable(download_kagome main.cpp) + +target_link_libraries(download_kagome kagome::kagome) diff --git a/examples/kagome/main.cpp b/examples/kagome/main.cpp new file mode 100644 index 0000000000..251375de99 --- /dev/null +++ b/examples/kagome/main.cpp @@ -0,0 +1,6 @@ +#include + +int main (void) +{ + return 0; +} From 33bb5ce279e86ecd984c996b729cd1f7e1ece4d8 Mon Sep 17 00:00:00 2001 From: Harrm Date: Fri, 29 Jan 2021 17:06:53 +0300 Subject: [PATCH 06/10] Remove kagome example --- examples/kagome/CMakeLists.txt | 15 --------------- examples/kagome/main.cpp | 6 ------ 2 files changed, 21 deletions(-) delete mode 100644 examples/kagome/CMakeLists.txt delete mode 100644 examples/kagome/main.cpp diff --git a/examples/kagome/CMakeLists.txt b/examples/kagome/CMakeLists.txt deleted file mode 100644 index f3ac1f3ec4..0000000000 --- a/examples/kagome/CMakeLists.txt +++ /dev/null @@ -1,15 +0,0 @@ -cmake_minimum_required(VERSION 3.2) - -# Emulate HunterGate: -# * https://github.com/hunter-packages/gate -include("../common.cmake") - -project(download-kagome) - -hunter_add_package(kagome) - -find_package(kagome CONFIG REQUIRED) - -add_executable(download_kagome main.cpp) - -target_link_libraries(download_kagome kagome::kagome) diff --git a/examples/kagome/main.cpp b/examples/kagome/main.cpp deleted file mode 100644 index 251375de99..0000000000 --- a/examples/kagome/main.cpp +++ /dev/null @@ -1,6 +0,0 @@ -#include - -int main (void) -{ - return 0; -} From a9cce43411b50a8ad8b6705a6a5fb28b4ff88206 Mon Sep 17 00:00:00 2001 From: Harrm Date: Sat, 30 Jan 2021 15:06:48 +0300 Subject: [PATCH 07/10] Try tp fix spdlog --- cmake/projects/spdlog/hunter.cmake | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/cmake/projects/spdlog/hunter.cmake b/cmake/projects/spdlog/hunter.cmake index e95d36baa7..3e61d4faa6 100644 --- a/cmake/projects/spdlog/hunter.cmake +++ b/cmake/projects/spdlog/hunter.cmake @@ -139,7 +139,7 @@ hunter_cmake_args( SPDLOG_BUILD_TESTING=OFF SPDLOG_BUILD_TESTS=OFF SPDLOG_BUILD_BENCH=OFF - SPDLOG_FMT_EXTERNAL=NO + SPDLOG_FMT_EXTERNAL=OFF ) hunter_pick_scheme(DEFAULT url_sha1_cmake) From 5ecb6f2d9bb1b110cde5a14c5f0c1bd984bddf84 Mon Sep 17 00:00:00 2001 From: Harrm Date: Sat, 30 Jan 2021 15:19:23 +0300 Subject: [PATCH 08/10] Try tp fix spdlog --- cmake/projects/spdlog/hunter.cmake | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/cmake/projects/spdlog/hunter.cmake b/cmake/projects/spdlog/hunter.cmake index 3e61d4faa6..1e08e32cbf 100644 --- a/cmake/projects/spdlog/hunter.cmake +++ b/cmake/projects/spdlog/hunter.cmake @@ -139,7 +139,7 @@ hunter_cmake_args( SPDLOG_BUILD_TESTING=OFF SPDLOG_BUILD_TESTS=OFF SPDLOG_BUILD_BENCH=OFF - SPDLOG_FMT_EXTERNAL=OFF + SPDLOG_FMT_EXTERNAL=ON ) hunter_pick_scheme(DEFAULT url_sha1_cmake) From 9055fc5fe16a9fcfa304fd6606e4de4b72c47bca Mon Sep 17 00:00:00 2001 From: Harrm Date: Sat, 30 Jan 2021 15:26:59 +0300 Subject: [PATCH 09/10] Try tp fix spdlog --- cmake/projects/spdlog/hunter.cmake | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/cmake/projects/spdlog/hunter.cmake b/cmake/projects/spdlog/hunter.cmake index 1e08e32cbf..3e61d4faa6 100644 --- a/cmake/projects/spdlog/hunter.cmake +++ b/cmake/projects/spdlog/hunter.cmake @@ -139,7 +139,7 @@ hunter_cmake_args( SPDLOG_BUILD_TESTING=OFF SPDLOG_BUILD_TESTS=OFF SPDLOG_BUILD_BENCH=OFF - SPDLOG_FMT_EXTERNAL=ON + SPDLOG_FMT_EXTERNAL=OFF ) hunter_pick_scheme(DEFAULT url_sha1_cmake) From 4a6fbdda5faa5b9b1a6a66f8161ce0abf432889a Mon Sep 17 00:00:00 2001 From: Harrm Date: Sat, 30 Jan 2021 15:50:31 +0300 Subject: [PATCH 10/10] Fixing spdlog --- cmake/projects/spdlog/hunter.cmake | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/cmake/projects/spdlog/hunter.cmake b/cmake/projects/spdlog/hunter.cmake index 3e61d4faa6..1e08e32cbf 100644 --- a/cmake/projects/spdlog/hunter.cmake +++ b/cmake/projects/spdlog/hunter.cmake @@ -139,7 +139,7 @@ hunter_cmake_args( SPDLOG_BUILD_TESTING=OFF SPDLOG_BUILD_TESTS=OFF SPDLOG_BUILD_BENCH=OFF - SPDLOG_FMT_EXTERNAL=OFF + SPDLOG_FMT_EXTERNAL=ON ) hunter_pick_scheme(DEFAULT url_sha1_cmake)