From d98787f35bdb7d9385f619e3130b7d445cda71ba Mon Sep 17 00:00:00 2001 From: luca <681992+lukka@users.noreply.github.com> Date: Sun, 26 Apr 2020 12:19:59 -0700 Subject: [PATCH] CI: use clang on Unix, msvc on Windows;Remove explicit flags in CMakeLists.txt; --- .github/workflows/ccpp.yml | 72 +++++++++++++++++++++----------------- CMakeLists.txt | 6 ++-- code/glTF/glTFAsset.h | 7 +++- code/glTF2/glTF2Asset.h | 8 ++++- 4 files changed, 55 insertions(+), 38 deletions(-) diff --git a/.github/workflows/ccpp.yml b/.github/workflows/ccpp.yml index 60bfba170..dca0c3bea 100644 --- a/.github/workflows/ccpp.yml +++ b/.github/workflows/ccpp.yml @@ -7,40 +7,46 @@ on: branches: [ master ] jobs: - linux: - runs-on: ubuntu-latest - - steps: - - uses: actions/checkout@v2 - - name: configure - run: cmake CMakeLists.txt - - name: build - run: cmake --build . - - name: test - run: cd bin && ./unit - - mac: - runs-on: macos-latest - - steps: - - uses: actions/checkout@v2 - - name: configure - run: cmake CMakeLists.txt - - name: build - run: cmake --build . - - name: test - run: cd bin && ./unit + job: + name: ${{ matrix.os }}-build-and-test + runs-on: ${{ matrix.os }} + strategy: + fail-fast: false + matrix: + os: [ubuntu-latest, macos-latest, windows-latest] + # For Windows msvc, for Linux and macOS let's use the clang compiler + include: + - os: windows-latest + cxx: cl.exe + cc: cl.exe + - os: ubuntu-latest + cxx: clang++ + cc: clang + - os: macos-latest + cxx: clang++ + cc: clang - windows: - runs-on: windows-latest - steps: - uses: actions/checkout@v2 - - name: configure - run: cmake CMakeLists.txt - - name: build - run: cmake --build . --config Release + + - uses: lukka/get-cmake@latest + + - uses: ilammy/msvc-dev-cmd@v1 + + - uses: lukka/set-shell-env@v1 + with: + CXX: ${{ matrix.cxx }} + CC: ${{ matrix.cc }} + + - name: configure and build + uses: lukka/run-cmake@v2 + with: + cmakeListsOrSettingsJson: CMakeListsTxtAdvanced + cmakeListsTxtPath: '${{ github.workspace }}/CMakeLists.txt' + cmakeAppendedArgs: '-GNinja -DCMAKE_BUILD_TYPE=Release' + buildWithCMakeArgs: '-- -v' + buildDirectory: '${{ github.workspace }}/build/' + - name: test - run: | - cd bin\Release - .\unit + run: cd build/bin && ./unit + shell: bash diff --git a/CMakeLists.txt b/CMakeLists.txt index 3bfd5800f..d15e58dd4 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -267,10 +267,10 @@ ELSEIF(MSVC) SET(CMAKE_CXX_FLAGS_DEBUG "${CMAKE_CXX_FLAGS_DEBUG} /D_DEBUG /Zi /Od") ELSEIF ( "${CMAKE_CXX_COMPILER_ID}" MATCHES "Clang" ) IF(NOT ASSIMP_HUNTER_ENABLED) - SET(CMAKE_CXX_FLAGS "-fPIC -std=c++11 ${CMAKE_CXX_FLAGS}") - SET(CMAKE_C_FLAGS "-fPIC ${CMAKE_C_FLAGS}") + SET(CMAKE_CXX_STANDARD 11) + SET(CMAKE_POSITION_INDEPENDENT_CODE ON) ENDIF() - SET(CMAKE_CXX_FLAGS "-g -fvisibility=hidden -fno-strict-aliasing -Wall -Wno-long-long ${CMAKE_CXX_FLAGS}" ) + SET(CMAKE_CXX_FLAGS "-fvisibility=hidden -fno-strict-aliasing -Wall -Wno-long-long ${CMAKE_CXX_FLAGS}" ) SET(CMAKE_C_FLAGS "-fno-strict-aliasing ${CMAKE_C_FLAGS}") ELSEIF( CMAKE_COMPILER_IS_MINGW ) IF (CMAKE_CXX_COMPILER_VERSION VERSION_LESS 7.0) diff --git a/code/glTF/glTFAsset.h b/code/glTF/glTFAsset.h index cd2e3166b..9673624f5 100644 --- a/code/glTF/glTFAsset.h +++ b/code/glTF/glTFAsset.h @@ -382,7 +382,12 @@ namespace glTF { friend struct Accessor; - Accessor& accessor; + // This field is reported as not used, making it protectd is the easiest way to work around it without going to the bottom of what the problem is: + // ../code/glTF2/glTF2Asset.h:392:19: error: private field 'accessor' is not used [-Werror,-Wunused-private-field] + protected: + Accessor &accessor; + + private: uint8_t* data; size_t elemSize, stride; diff --git a/code/glTF2/glTF2Asset.h b/code/glTF2/glTF2Asset.h index a78d6b53a..f9add768e 100644 --- a/code/glTF2/glTF2Asset.h +++ b/code/glTF2/glTF2Asset.h @@ -389,12 +389,18 @@ struct Accessor : public Object { class Indexer { friend struct Accessor; + // This field is reported as not used, making it protectd is the easiest way to work around it without going to the bottom of what the problem is: + // ../code/glTF2/glTF2Asset.h:392:19: error: private field 'accessor' is not used [-Werror,-Wunused-private-field] + protected: Accessor &accessor; + + private: uint8_t *data; size_t elemSize, stride; Indexer(Accessor &acc); - + + public: //! Accesses the i-th value as defined by the accessor template