move to github ci
diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml
index ab8de30..3e0deb5 100644
--- a/.github/workflows/ci.yml
+++ b/.github/workflows/ci.yml
@@ -1,43 +1,315 @@
-name: C++ CI
+name: CI
on: push
-env:
- BUILD_TYPE: Release
-
jobs:
- test:
+ ci:
+ name: ${{ matrix.name }}
runs-on: ${{ matrix.os }}
+
+ env:
+ CMAKE_GENERATOR: Ninja
+
strategy:
+ fail-fast: false
matrix:
- os: [
- ubuntu-latest,
- ubuntu-16.04,
- windows-latest,
- windows-2016,
- macos-latest
+ # Github Actions requires a single row to be added to the build matrix.
+ # See https://help.github.com/en/articles/workflow-syntax-for-github-actions.
+ name: [
+ ubuntu-18.04-gcc-4.8,
+ ubuntu-18.04-gcc-4.9,
+ ubuntu-18.04-gcc-5,
+ ubuntu-18.04-gcc-6,
+ ubuntu-18.04-gcc-7,
+ ubuntu-18.04-gcc-8,
+ ubuntu-18.04-gcc-9,
+ ubuntu-18.04-clang-3.5,
+ ubuntu-18.04-clang-3.6,
+ ubuntu-18.04-clang-3.7,
+ ubuntu-18.04-clang-3.8,
+ ubuntu-18.04-clang-3.9,
+ ubuntu-18.04-clang-4.0,
+ ubuntu-18.04-clang-5.0,
+ ubuntu-18.04-clang-6.0,
+ ubuntu-18.04-clang-7,
+ ubuntu-18.04-clang-8,
+ ubuntu-18.04-clang-9,
+ windows-2016-cl,
+ windows-2016-clang-cl,
+ windows-2016-clang,
+ windows-2016-gcc,
+ windows-2019-cl,
+ windows-2019-clang-cl,
+ windows-2019-clang,
+ windows-2019-gcc,
+ macOS-10.14-xcode-9.4.1,
+ macOS-10.14-xcode-10.0,
+ macOS-10.14-xcode-10.1,
+ macOS-10.14-xcode-10.2,
+ macOS-10.14-xcode-10.2.1,
+ macOS-10.14-xcode-10.3,
+ macOS-10.14-gcc-7,
+ macOS-10.14-gcc-8,
+ macOS-10.14-gcc-9,
]
+ include:
+ - name: ubuntu-18.04-gcc-4.8
+ os: ubuntu-18.04
+ compiler: gcc
+ version: "4.8"
+
+ - name: ubuntu-18.04-gcc-4.9
+ os: ubuntu-18.04
+ compiler: gcc
+ version: "4.9"
+
+ - name: ubuntu-18.04-gcc-5
+ os: ubuntu-18.04
+ compiler: gcc
+ version: "5"
+
+ - name: ubuntu-18.04-gcc-6
+ os: ubuntu-18.04
+ compiler: gcc
+ version: "6"
+
+ - name: ubuntu-18.04-gcc-7
+ os: ubuntu-18.04
+ compiler: gcc
+ version: "7"
+
+ - name: ubuntu-18.04-gcc-8
+ os: ubuntu-18.04
+ compiler: gcc
+ version: "8"
+
+ - name: ubuntu-18.04-gcc-9
+ os: ubuntu-18.04
+ compiler: gcc
+ version: "9"
+
+ - name: ubuntu-18.04-clang-3.5
+ os: ubuntu-18.04
+ compiler: clang
+ version: "3.5"
+
+ - name: ubuntu-18.04-clang-3.6
+ os: ubuntu-18.04
+ compiler: clang
+ version: "3.6"
+
+ - name: ubuntu-18.04-clang-3.7
+ os: ubuntu-18.04
+ compiler: clang
+ version: "3.7"
+
+ - name: ubuntu-18.04-clang-3.8
+ os: ubuntu-18.04
+ compiler: clang
+ version: "3.8"
+
+ - name: ubuntu-18.04-clang-3.9
+ os: ubuntu-18.04
+ compiler: clang
+ version: "3.9"
+
+ - name: ubuntu-18.04-clang-4.0
+ os: ubuntu-18.04
+ compiler: clang
+ version: "4.0"
+
+ - name: ubuntu-18.04-clang-5.0
+ os: ubuntu-18.04
+ compiler: clang
+ version: "5.0"
+
+ - name: ubuntu-18.04-clang-6.0
+ os: ubuntu-18.04
+ compiler: clang
+ version: "6.0"
+
+ - name: ubuntu-18.04-clang-7
+ os: ubuntu-18.04
+ compiler: clang
+ version: "7"
+
+ - name: ubuntu-18.04-clang-8
+ os: ubuntu-18.04
+ compiler: clang
+ version: "8"
+
+ - name: ubuntu-18.04-clang-9
+ os: ubuntu-18.04
+ compiler: clang
+ version: "9"
+
+ - name: windows-2016-cl
+ os: windows-2016
+ compiler: cl
+
+ - name: windows-2016-clang-cl
+ os: windows-2016
+ compiler: clang-cl
+
+ - name: windows-2016-clang
+ os: windows-2016
+ compiler: clang
+
+ - name: windows-2019-cl
+ os: windows-2019
+ compiler: cl
+
+ - name: windows-2016-gcc
+ os: windows-2016
+ compiler: gcc
+
+ - name: windows-2019-clang-cl
+ os: windows-2019
+ compiler: clang-cl
+
+ - name: windows-2019-clang
+ os: windows-2019
+ compiler: clang
+
+ - name: windows-2019-gcc
+ os: windows-2019
+ compiler: gcc
+
+ - name: macOS-10.14-xcode-9.4.1
+ os: macOS-10.14
+ compiler: xcode
+ version: "9.4.1"
+
+ - name: macOS-10.14-xcode-10.0
+ os: macOS-10.14
+ compiler: xcode
+ version: "10"
+
+ - name: macOS-10.14-xcode-10.1
+ os: macOS-10.14
+ compiler: xcode
+ version: "10.1"
+
+ - name: macOS-10.14-Xcode-10.2
+ os: macOS-10.14
+ compiler: xcode
+ version: "10.2"
+
+ - name: macOS-10.14-xcode-10.2.1
+ os: macOS-10.14
+ compiler: xcode
+ version: "10.2.1"
+
+ - name: macOS-10.14-xcode-10.3
+ os: macOS-10.14
+ compiler: xcode
+ version: "10.3"
+
+ - name: macOS-10.14-gcc-7
+ os: macOS-10.14
+ compiler: gcc
+ version: "7"
+
+ - name: macOS-10.14-gcc-8
+ os: macOS-10.14
+ compiler: gcc
+ version: "8"
+
+ - name: macOS-10.14-gcc-9
+ os: macOS-10.14
+ compiler: gcc
+ version: "9"
+
steps:
- - uses: actions/checkout@v1
+ - uses: actions/checkout@v1
- #- name: Install Dependencies
- # env:
- # dependency_packages: build-essential g++-5
- # run: sudo apt-get update && sudo apt-get -y install ${dependency_packages}
+ - name: Install (Linux)
+ if: runner.os == 'Linux'
+ run: |
+ # CMake 3.15 allows specifying the generator using the CMAKE_GENERATOR
+ # environment variable.
+ curl -sSL https://github.com/Kitware/CMake/releases/download/v3.15.4/cmake-3.15.4-Linux-x86_64.tar.gz -o cmake.tar.gz
+ sudo tar xf cmake.tar.gz --strip 1 -C /usr/local
+ # Required for libc6-dbg:i386 and g++-multilib packages which are
+ # needed for x86 builds.
+ sudo dpkg --add-architecture i386
+ # clang-3.7 and earlier are not available in Bionic anymore so we get
+ # them from the Xenial repositories instead.
+ sudo add-apt-repository "deb http://dk.archive.ubuntu.com/ubuntu/ xenial main"
+ sudo add-apt-repository "deb http://dk.archive.ubuntu.com/ubuntu/ xenial universe"
+
+ # LLVM 9 is not in Bionic's repositories so we add the official LLVM repository.
+ if [ "${{ matrix.compiler }}" = "clang" ] && [ "${{ matrix.version }}" = "9" ]; then
+ sudo add-apt-repository "deb http://apt.llvm.org/bionic/ llvm-toolchain-bionic-9 main"
+ fi
+ sudo apt-get update
+ # libc6-dbg:i386 is required for running valgrind on x86.
+ sudo apt-get install -y ninja-build valgrind libc6-dbg:i386
+ if [ "${{ matrix.compiler }}" = "gcc" ]; then
+ sudo apt-get install -y g++-${{ matrix.version }} g++-${{ matrix.version }}-multilib
+ echo "::set-env name=CC::gcc-${{ matrix.version }}"
+ echo "::set-env name=CXX::g++-${{ matrix.version }}"
+ else
+ sudo apt-get install -y clang-${{ matrix.version }} g++-multilib
+ echo "::set-env name=CC::clang-${{ matrix.version }}"
+ echo "::set-env name=CXX::clang++-${{ matrix.version }}"
+ fi
+
+ - name: Install (macOS)
+ if: runner.os == 'macOS'
+ run: |
+ brew install cmake ninja
+ if [ "${{ matrix.compiler }}" = "gcc" ]; then
+ brew install gcc@${{ matrix.version }}
+ echo "::set-env name=CC::gcc-${{ matrix.version }}"
+ echo "::set-env name=CXX::g++-${{ matrix.version }}"
+ else
+ sudo xcode-select -switch /Applications/Xcode_${{ matrix.version }}.app
+ echo "::set-env name=CC::clang"
+ echo "::set-env name=CXX::clang++"
+ fi
+
+ - name: Install (Windows)
+ if: runner.os == 'Windows'
+ shell: powershell
+ run: |
+ Invoke-Expression (New-Object System.Net.WebClient).DownloadString('https://get.scoop.sh')
+ scoop install ninja --global
+ if ("${{ matrix.compiler }}".StartsWith("clang")) {
+ scoop install llvm --global
+ }
+ if ("${{ matrix.compiler }}" -eq "gcc") {
+ # Chocolatey GCC is broken on the windows-2019 image.
+ # See: https://github.com/DaanDeMeyer/doctest/runs/231595515
+ # See: https://github.community/t5/GitHub-Actions/Something-is-wrong-with-the-chocolatey-installed-version-of-gcc/td-p/32413
+ scoop install gcc --global
+ echo "::set-env name=CC::gcc"
+ echo "::set-env name=CXX::g++"
+ } elseif ("${{ matrix.compiler }}" -eq "clang") {
+ echo "::set-env name=CC::clang"
+ echo "::set-env name=CXX::clang++"
+ } else {
+ echo "::set-env name=CC::${{ matrix.compiler }}"
+ echo "::set-env name=CXX::${{ matrix.compiler }}"
+ }
+ # Scoop modifies the PATH so we make the modified PATH global.
+ echo "::set-env name=PATH::$env:PATH"
+
+ - name: Configure
+ if: runner.os == 'Windows'
+ run: .github\workflows\vsenv.bat -arch=x64 -host_arch=x64
- - name: Create Build Environment
- run: cmake -E make_directory ${{runner.workspace}}/inja/build
-
- - name: Build
- working-directory: ${{runner.workspace}}/inja/build
- shell: bash
- run: |
- cmake $GITHUB_WORKSPACE -DCMAKE_BUILD_TYPE=$BUILD_TYPE
- cmake --build . --config $BUILD_TYPE -j4
-
- - name: Test
- working-directory: ${{runner.workspace}}/inja/build
- shell: bash
- run: |
- ctest -C $BUILD_TYPE -V
+ - name: Build & Test Debug
+ run: |
+ cmake -E remove_directory build
+ cmake -B build -S . -DCMAKE_BUILD_TYPE=Debug
+ cmake --build build -j2
+ cd build && ctest -j2 --output-on-failure
+
+ - name: Build & Test Release
+ run: |
+ cmake -E remove_directory build
+ cmake -B build -S . -DCMAKE_BUILD_TYPE=Release
+ cmake --build build -j2
+ cd build && ctest -j2 --output-on-failure
diff --git a/.travis.yml b/.travis.yml
deleted file mode 100644
index 77c994e..0000000
--- a/.travis.yml
+++ /dev/null
@@ -1,85 +0,0 @@
-language: cpp
-dist: trusty
-sudo: required
-
-matrix:
- include:
- - os: linux
- compiler: gcc
- env: COMPILER=g++-5
- addons:
- apt:
- sources: ['ubuntu-toolchain-r-test']
- packages: g++-5
-
- - os: linux
- compiler: gcc
- env: COMPILER=g++-6
- addons:
- apt:
- sources: ['ubuntu-toolchain-r-test']
- packages: g++-6
-
- - os: linux
- compiler: gcc
- env:
- - COMPILER=g++-7
- - DOCS="true"
- addons:
- apt:
- sources: ubuntu-toolchain-r-test
- packages: g++-7
-
- - os: linux
- compiler: gcc
- env:
- - COMPILER=g++-8
- addons:
- apt:
- sources: ubuntu-toolchain-r-test
- packages: g++-8
-
- - os: linux
- compiler: gcc
- env:
- - COMPILER=g++-8
- - CXXFLAGS=-std=c++17
- addons:
- apt:
- sources: ubuntu-toolchain-r-test
- packages: g++-8
-
- - os: linux
- compiler: clang
- env: COMPILER=clang++-5.0
- addons:
- apt:
- sources: ['ubuntu-toolchain-r-test', 'llvm-toolchain-trusty-5.0']
- packages: ['clang-5.0', 'libstdc++-7-dev']
-
- - os: linux
- compiler: clang
- env: COMPILER=clang++-6.0
- addons:
- apt:
- sources: ['ubuntu-toolchain-r-test', 'llvm-toolchain-trusty-6.0']
- packages: ['clang-6.0', 'libstdc++-7-dev']
-
- - os: osx
- osx_image: xcode9
-
- - os: osx
- osx_image: xcode10
-
-
-script:
- - if [[ "${COMPILER}" != "" ]]; then export CXX=${COMPILER}; fi
- - uname -a
- - $CXX --version
-
- - mkdir -p build
- - cd build
- - cmake -DCMAKE_BUILD_TYPE=Release ..
- - cmake --build . -- VERBOSE=1 -j4
- - ctest -V
- - cd ..
diff --git a/appveyor.yml b/appveyor.yml
deleted file mode 100755
index 33ace31..0000000
--- a/appveyor.yml
+++ /dev/null
@@ -1,43 +0,0 @@
-version: '{build}'
-
-image:
- - Visual Studio 2019
-
-platform:
- - Win32
- - x64
-
-configuration:
- - Debug
- - Release
-
-environment:
- matrix:
- # Visual Studio 2015
- - TOOLCHAIN: v140
- STD: 14
- # Visual Studio 2017
- - TOOLCHAIN: v141
- STD: 14
- - TOOLCHAIN: v141
- STD: 17
- # Visual Studio 2019
- - TOOLCHAIN: v142
- STD: 14
- - TOOLCHAIN: v142
- STD: 17
-
-init:
- - cmake --version
- - msbuild /version
-
-before_build:
- - mkdir -p build
- - cd build
- - cmake .. -A %PLATFORM% -T %TOOLCHAIN% -DCMAKE_CXX_STANDARD=%STD%
-
-build_script:
- - cmake --build . --config %CONFIGURATION% -- -verbosity:n
-
-test_script:
- - ctest -C %CONFIGURATION% -V -j