diff --git a/.github/workflows/ccpp.yml b/.github/workflows/ccpp.yml index e542821e8..6a8c1f774 100644 --- a/.github/workflows/ccpp.yml +++ b/.github/workflows/ccpp.yml @@ -8,30 +8,39 @@ on: jobs: job: - name: ${{ matrix.os }}-${{ matrix.cxx }}-build-and-test + name: ${{ matrix.name }}-build-and-test runs-on: ${{ matrix.os }} strategy: fail-fast: false matrix: - name: [ubuntu-gcc, macos-clang, windows-msvc, ubuntu-clang] + name: [ubuntu-latest-g++, macos-latest-clang++, windows-latest-cl.exe, ubuntu-latest-clang++, ubuntu-gcc-hunter, macos-clang-hunter, windows-msvc-hunter] # For Windows msvc, for Linux and macOS let's use the clang compiler, use gcc for Linux. include: - - name: windows-msvc + - name: windows-latest-cl.exe os: windows-latest cxx: cl.exe cc: cl.exe - - name: ubuntu-clang + - name: ubuntu-latest-clang++ os: ubuntu-latest cxx: clang++ cc: clang - - name: macos-clang + - name: macos-latest-clang++ os: macos-latest cxx: clang++ cc: clang - - name: ubuntu-gcc + - name: ubuntu-latest-g++ os: ubuntu-latest cxx: g++ cc: gcc + - name: ubuntu-gcc-hunter + os: ubuntu-latest + toolchain: ninja-gcc-cxx17-fpic + - name: macos-clang-hunter + os: macos-latest + toolchain: ninja-clang-cxx17-fpic + - name: windows-msvc-hunter + os: windows-latest + toolchain: ninja-vs-win64-cxx17 steps: - uses: actions/checkout@v2 @@ -40,14 +49,29 @@ jobs: - uses: ilammy/msvc-dev-cmd@v1 - - uses: lukka/set-shell-env@v1 + - name: Set Compiler Environment + if: "!endsWith(matrix.name, 'hunter')" + uses: lukka/set-shell-env@v1 with: CXX: ${{ matrix.cxx }} CC: ${{ matrix.cc }} + - name: Set Compiler Environment for Hunter on Windows + if: startsWith(matrix.name, 'windows') && endsWith(matrix.name, 'hunter') + uses: lukka/set-shell-env@v1 + with: + VS160COMNTOOLS: C:\Program Files (x86)\Microsoft Visual Studio\2019\Enterprise\Common7\Tools + + - name: Checkout Hunter toolchains + if: endsWith(matrix.name, 'hunter') + uses: actions/checkout@v2 + with: + repository: cpp-pm/polly + path: cmake/polly + - name: Cache DX SDK id: dxcache - if: matrix.name == 'windows-msvc' + if: contains(matrix.name, 'windows') uses: actions/cache@v2 with: path: '${{ github.workspace }}/DX_SDK' @@ -56,16 +80,21 @@ jobs: ${{ runner.os }}-DX_SDK - name: Download DXSetup - if: matrix.name == 'windows-msvc' && steps.dxcache.outputs.cache-hit != 'true' + if: contains(matrix.name, 'windows') && steps.dxcache.outputs.cache-hit != 'true' run: | curl -s -o DXSDK_Jun10.exe --location https://download.microsoft.com/download/A/E/7/AE743F1F-632B-4809-87A9-AA1BB3458E31/DXSDK_Jun10.exe cmd.exe /c start /wait .\DXSDK_Jun10.exe /U /O /F /S /P "${{ github.workspace }}\DX_SDK" - name: Set Windows specific CMake arguments - if: matrix.name == 'windows-msvc' + if: contains(matrix.name, 'windows') id: windows_extra_cmake_args - run: echo "::set-output name=args::'-DASSIMP_BUILD_ASSIMP_TOOLS=1 -DASSIMP_BUILD_ASSIMP_VIEW=1'" + run: echo "::set-output name=args::-DASSIMP_BUILD_ASSIMP_TOOLS=1 -DASSIMP_BUILD_ASSIMP_VIEW=1" + - name: Set Hunter specific CMake arguments + if: contains(matrix.name, 'hunter') + id: hunter_extra_cmake_args + run: echo "::set-output name=args::-DBUILD_SHARED_LIBS=OFF -DASSIMP_HUNTER_ENABLED=ON -DCMAKE_TOOLCHAIN_FILE=${{ github.workspace }}/cmake/polly/${{ matrix.toolchain }}.cmake" + - name: configure and build uses: lukka/run-cmake@v2 env: @@ -74,12 +103,17 @@ jobs: with: cmakeListsOrSettingsJson: CMakeListsTxtAdvanced cmakeListsTxtPath: '${{ github.workspace }}/CMakeLists.txt' - cmakeAppendedArgs: '-GNinja -DCMAKE_BUILD_TYPE=Release ${{ steps.windows_extra_cmake_args.outputs.args }}' + cmakeAppendedArgs: '-GNinja -DCMAKE_BUILD_TYPE=Release ${{ steps.windows_extra_cmake_args.outputs.args }} ${{ steps.hunter_extra_cmake_args.outputs.args }}' buildWithCMakeArgs: '-- -v' buildDirectory: '${{ github.workspace }}/build/' + - name: Exclude certain tests in Hunter specific builds + if: contains(matrix.name, 'hunter') + id: hunter_extra_test_args + run: echo "::set-output name=args::--gtest_filter=-utOpenGEXImportExport.Importissue1340_EmptyCameraObject:utColladaZaeImportExport.importBlenFromFileTest" + - name: test - run: cd build/bin && ./unit + run: cd build/bin && ./unit ${{ steps.hunter_extra_test_args.outputs.args }} shell: bash - uses: actions/upload-artifact@v2 diff --git a/CMakeLists.txt b/CMakeLists.txt index 2e21ee8e4..f87f3e742 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -45,8 +45,8 @@ option(ASSIMP_HUNTER_ENABLED "Enable Hunter package manager support" OFF) IF(ASSIMP_HUNTER_ENABLED) include("cmake/HunterGate.cmake") HunterGate( - URL "https://github.com/cpp-pm/hunter/archive/v0.23.261.tar.gz" - SHA1 "1540dad7b97c849784a09e8c452ba811c9f71ba2" + URL "https://github.com/cpp-pm/hunter/archive/v0.23.269.tar.gz" + SHA1 "64024b7b95b4c86d50ae05b926814448c93a70a0" ) add_definitions(-DASSIMP_USE_HUNTER) diff --git a/cmake/HunterGate.cmake b/cmake/HunterGate.cmake index 887557a58..6d9cc2401 100644 --- a/cmake/HunterGate.cmake +++ b/cmake/HunterGate.cmake @@ -1,4 +1,4 @@ -# Copyright (c) 2013-2018, Ruslan Baratov +# Copyright (c) 2013-2019, Ruslan Baratov # All rights reserved. # # Redistribution and use in source and binary forms, with or without @@ -60,7 +60,7 @@ option(HUNTER_STATUS_PRINT "Print working status" ON) option(HUNTER_STATUS_DEBUG "Print a lot info" OFF) option(HUNTER_TLS_VERIFY "Enable/disable TLS certificate checking on downloads" ON) -set(HUNTER_WIKI "https://github.com/ruslo/hunter/wiki") +set(HUNTER_ERROR_PAGE "https://docs.hunter.sh/en/latest/reference/errors") function(hunter_gate_status_print) if(HUNTER_STATUS_PRINT OR HUNTER_STATUS_DEBUG) @@ -79,9 +79,9 @@ function(hunter_gate_status_debug) endif() endfunction() -function(hunter_gate_wiki wiki_page) - message("------------------------------ WIKI -------------------------------") - message(" ${HUNTER_WIKI}/${wiki_page}") +function(hunter_gate_error_page error_page) + message("------------------------------ ERROR ------------------------------") + message(" ${HUNTER_ERROR_PAGE}/${error_page}.html") message("-------------------------------------------------------------------") message("") message(FATAL_ERROR "") @@ -94,14 +94,13 @@ function(hunter_gate_internal_error) endforeach() message("[hunter ** INTERNAL **] [Directory:${CMAKE_CURRENT_LIST_DIR}]") message("") - hunter_gate_wiki("error.internal") + hunter_gate_error_page("error.internal") endfunction() function(hunter_gate_fatal_error) - cmake_parse_arguments(hunter "" "WIKI" "" "${ARGV}") - string(COMPARE EQUAL "${hunter_WIKI}" "" have_no_wiki) - if(have_no_wiki) - hunter_gate_internal_error("Expected wiki") + cmake_parse_arguments(hunter "" "ERROR_PAGE" "" "${ARGV}") + if("${hunter_ERROR_PAGE}" STREQUAL "") + hunter_gate_internal_error("Expected ERROR_PAGE") endif() message("") foreach(x ${hunter_UNPARSED_ARGUMENTS}) @@ -109,11 +108,11 @@ function(hunter_gate_fatal_error) endforeach() message("[hunter ** FATAL ERROR **] [Directory:${CMAKE_CURRENT_LIST_DIR}]") message("") - hunter_gate_wiki("${hunter_WIKI}") + hunter_gate_error_page("${hunter_ERROR_PAGE}") endfunction() function(hunter_gate_user_error) - hunter_gate_fatal_error(${ARGV} WIKI "error.incorrect.input.data") + hunter_gate_fatal_error(${ARGV} ERROR_PAGE "error.incorrect.input.data") endfunction() function(hunter_gate_self root version sha1 result) @@ -195,7 +194,7 @@ function(hunter_gate_detect_root) hunter_gate_fatal_error( "Can't detect HUNTER_ROOT" - WIKI "error.detect.hunter.root" + ERROR_PAGE "error.detect.hunter.root" ) endfunction() @@ -214,7 +213,7 @@ function(hunter_gate_download dir) "Settings:" " HUNTER_ROOT: ${HUNTER_GATE_ROOT}" " HUNTER_SHA1: ${HUNTER_GATE_SHA1}" - WIKI "error.run.install" + ERROR_PAGE "error.run.install" ) endif() string(COMPARE EQUAL "${dir}" "" is_bad) @@ -400,7 +399,7 @@ macro(HunterGate) hunter_gate_fatal_error( "Please set HunterGate *before* 'project' command. " "Detected project: ${PROJECT_NAME}" - WIKI "error.huntergate.before.project" + ERROR_PAGE "error.huntergate.before.project" ) endif() @@ -470,7 +469,7 @@ macro(HunterGate) "HUNTER_ROOT (${HUNTER_GATE_ROOT}) contains spaces." "Set HUNTER_ALLOW_SPACES_IN_PATH=ON to skip this error" "(Use at your own risk!)" - WIKI "error.spaces.in.hunter.root" + ERROR_PAGE "error.spaces.in.hunter.root" ) endif() endif() diff --git a/code/AssetLib/glTF/glTFAsset.h b/code/AssetLib/glTF/glTFAsset.h index 15947c8c6..189cf1da8 100644 --- a/code/AssetLib/glTF/glTFAsset.h +++ b/code/AssetLib/glTF/glTFAsset.h @@ -60,19 +60,11 @@ OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. #include #include -#ifndef RAPIDJSON_HAS_STDSTRING -#define RAPIDJSON_HAS_STDSTRING 1 -#endif - #if (__GNUC__ == 8 && __GNUC_MINOR__ >= 0) #pragma GCC diagnostic push #pragma GCC diagnostic ignored "-Wclass-memaccess" #endif -#ifndef RAPIDJSON_NOMEMBERITERATORCLASS -#define RAPIDJSON_NOMEMBERITERATORCLASS -#endif - #include #include #include diff --git a/code/AssetLib/glTF/glTFCommon.h b/code/AssetLib/glTF/glTFCommon.h index f70780ed4..977fc0da4 100644 --- a/code/AssetLib/glTF/glTFCommon.h +++ b/code/AssetLib/glTF/glTFCommon.h @@ -52,8 +52,6 @@ OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. #include #include -#define RAPIDJSON_HAS_STDSTRING 1 -#define RAPIDJSON_NOMEMBERITERATORCLASS #include #include #include diff --git a/code/AssetLib/glTF2/glTF2Asset.h b/code/AssetLib/glTF2/glTF2Asset.h index 403ac8174..ead8ca1dd 100644 --- a/code/AssetLib/glTF2/glTF2Asset.h +++ b/code/AssetLib/glTF2/glTF2Asset.h @@ -62,19 +62,11 @@ OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. #include #include -#ifndef RAPIDJSON_HAS_STDSTRING -#define RAPIDJSON_HAS_STDSTRING 1 -#endif - #if (__GNUC__ == 8 && __GNUC_MINOR__ >= 0) #pragma GCC diagnostic push #pragma GCC diagnostic ignored "-Wclass-memaccess" #endif -#ifndef RAPIDJSON_NOMEMBERITERATORCLASS -#define RAPIDJSON_NOMEMBERITERATORCLASS -#endif - #include #include #include diff --git a/code/CMakeLists.txt b/code/CMakeLists.txt index 7bcb2d58a..eb3f5df67 100644 --- a/code/CMakeLists.txt +++ b/code/CMakeLists.txt @@ -1055,6 +1055,8 @@ IF(ASSIMP_HUNTER_ENABLED) ELSE() INCLUDE_DIRECTORIES( "../contrib/rapidjson/include" ) INCLUDE_DIRECTORIES( "../contrib" ) + ADD_DEFINITIONS( -DRAPIDJSON_HAS_STDSTRING=1 ) + ADD_DEFINITIONS( -DRAPIDJSON_NOMEMBERITERATORCLASS ) ENDIF() # VC2010 fixes diff --git a/test/CMakeLists.txt b/test/CMakeLists.txt index 5a150482d..0d038943e 100644 --- a/test/CMakeLists.txt +++ b/test/CMakeLists.txt @@ -39,12 +39,18 @@ cmake_minimum_required( VERSION 3.0 ) INCLUDE_DIRECTORIES( - ${Assimp_SOURCE_DIR}/contrib/gtest/include - ${Assimp_SOURCE_DIR}/contrib/gtest/ ${Assimp_SOURCE_DIR}/test/unit ${Assimp_SOURCE_DIR}/include ${Assimp_SOURCE_DIR}/code ) + +if(NOT ASSIMP_HUNTER_ENABLED) + INCLUDE_DIRECTORIES( + ${Assimp_SOURCE_DIR}/contrib/gtest/include + ${Assimp_SOURCE_DIR}/contrib/gtest/ + ) +endif() + if (MSVC) set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} /D_SILENCE_TR1_NAMESPACE_DEPRECATION_WARNING") endif() @@ -197,7 +203,6 @@ SOURCE_GROUP( UnitTests\\Math FILES ${MATH} ) SOURCE_GROUP( UnitTests\\PostProcess FILES ${POST_PROCESSES}) add_executable( unit - ../contrib/gtest/src/gtest-all.cc unit/CCompilerTest.c unit/Main.cpp ../code/Common/Version.cpp @@ -208,6 +213,14 @@ add_executable( unit ${POST_PROCESSES} ) +if(ASSIMP_HUNTER_ENABLED) + hunter_add_package(GTest) + find_package(GTest CONFIG REQUIRED) + target_link_libraries(unit GTest::gtest_main GTest::gmock) +else() + target_sources(unit PUBLIC ../contrib/gtest/src/gtest-all.cc) +endif() + TARGET_USE_COMMON_OUTPUT_DIRECTORY(unit) add_definitions(-DASSIMP_TEST_MODELS_DIR="${CMAKE_CURRENT_LIST_DIR}/models") @@ -222,7 +235,7 @@ ELSE() ENDIF() IF(MSVC) - add_definitions(-D_CRT_SECURE_NO_WARNINGS) + add_definitions(-D_CRT_SECURE_NO_WARNINGS) ENDIF() target_link_libraries( unit assimp ${platform_libs} ) @@ -230,4 +243,3 @@ target_link_libraries( unit assimp ${platform_libs} ) add_subdirectory(headercheck) add_test( unittests unit ) - diff --git a/test/unit/UnitTestPCH.h b/test/unit/UnitTestPCH.h index d47371292..4570dce81 100644 --- a/test/unit/UnitTestPCH.h +++ b/test/unit/UnitTestPCH.h @@ -43,7 +43,14 @@ OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. // We need to be sure to have the same STL settings as Assimp #include +#ifdef _MSC_VER +# pragma warning(push) +# pragma warning(disable : 4389) +#endif #include +#ifdef _MSC_VER +# pragma warning(pop) +#endif #include #include #include "UTLogStream.h"