| @ -1,36 +0,0 @@ | |||||
| # Build matrix / environment variables are explained on: | |||||
| # https://www.appveyor.com/docs/appveyor-yml/ | |||||
| # This file can be validated on: https://ci.appveyor.com/tools/validate-yaml | |||||
| version: "{build}" | |||||
| environment: | |||||
| matrix: | |||||
| # AppVeyor currently has no custom job name feature. | |||||
| # http://help.appveyor.com/discussions/questions/1623-can-i-provide-a-friendly-name-for-jobs | |||||
| - JOB: Visual Studio 2019 | |||||
| APPVEYOR_BUILD_WORKER_IMAGE: Visual Studio 2019 | |||||
| CMAKE_GENERATOR: Visual Studio 16 2019 | |||||
| platform: | |||||
| - x86 | |||||
| - x64 | |||||
| configuration: | |||||
| - RelWithDebInfo | |||||
| - Debug | |||||
| build_script: | |||||
| - git submodule update --init --recursive | |||||
| - mkdir build | |||||
| - cd build | |||||
| - if "%platform%"=="x86" (set CMAKE_GENERATOR_PLATFORM="Win32") | |||||
| else (set CMAKE_GENERATOR_PLATFORM="%platform%") | |||||
| - cmake --version | |||||
| - cmake .. -G "%CMAKE_GENERATOR%" -A "%CMAKE_GENERATOR_PLATFORM%" | |||||
| -DCMAKE_CONFIGURATION_TYPES="%CONFIGURATION%" | |||||
| - cmake --build . --config "%CONFIGURATION%" | |||||
| - cd .. | |||||
| test_script: | |||||
| - cd build && ctest --verbose --build-config "%CONFIGURATION%" && cd .. | |||||
| @ -0,0 +1,101 @@ | |||||
| # Copyright 2021 The LevelDB Authors. All rights reserved. | |||||
| # Use of this source code is governed by a BSD-style license that can be | |||||
| # found in the LICENSE file. See the AUTHORS file for names of contributors. | |||||
| name: ci | |||||
| on: [push, pull_request] | |||||
| permissions: | |||||
| contents: read | |||||
| jobs: | |||||
| build-and-test: | |||||
| name: >- | |||||
| CI | |||||
| ${{ matrix.os }} | |||||
| ${{ matrix.compiler }} | |||||
| ${{ matrix.optimized && 'release' || 'debug' }} | |||||
| runs-on: ${{ matrix.os }} | |||||
| strategy: | |||||
| fail-fast: false | |||||
| matrix: | |||||
| compiler: [clang, gcc, msvc] | |||||
| os: [ubuntu-latest, macos-latest, windows-latest] | |||||
| optimized: [true, false] | |||||
| exclude: | |||||
| # MSVC only works on Windows. | |||||
| - os: ubuntu-latest | |||||
| compiler: msvc | |||||
| - os: macos-latest | |||||
| compiler: msvc | |||||
| # Not testing with GCC on macOS. | |||||
| - os: macos-latest | |||||
| compiler: gcc | |||||
| # Only testing with MSVC on Windows. | |||||
| - os: windows-latest | |||||
| compiler: clang | |||||
| - os: windows-latest | |||||
| compiler: gcc | |||||
| include: | |||||
| - compiler: clang | |||||
| CC: clang | |||||
| CXX: clang++ | |||||
| - compiler: gcc | |||||
| CC: gcc | |||||
| CXX: g++ | |||||
| - compiler: msvc | |||||
| CC: | |||||
| CXX: | |||||
| env: | |||||
| CMAKE_BUILD_DIR: ${{ github.workspace }}/build | |||||
| CMAKE_BUILD_TYPE: ${{ matrix.optimized && 'RelWithDebInfo' || 'Debug' }} | |||||
| CC: ${{ matrix.CC }} | |||||
| CXX: ${{ matrix.CXX }} | |||||
| BINARY_SUFFIX: ${{ startsWith(matrix.os, 'windows') && '.exe' || '' }} | |||||
| BINARY_PATH: >- | |||||
| ${{ format( | |||||
| startsWith(matrix.os, 'windows') && '{0}\build\{1}\' || '{0}/build/', | |||||
| github.workspace, | |||||
| matrix.optimized && 'RelWithDebInfo' || 'Debug') }} | |||||
| steps: | |||||
| - uses: actions/checkout@v2 | |||||
| with: | |||||
| submodules: true | |||||
| - name: Install dependencies on Linux | |||||
| if: ${{ runner.os == 'Linux' }} | |||||
| run: | | |||||
| sudo apt-get update | |||||
| sudo apt-get install libgoogle-perftools-dev libkyotocabinet-dev \ | |||||
| libsnappy-dev libsqlite3-dev | |||||
| - name: Generate build config | |||||
| run: >- | |||||
| cmake -S "${{ github.workspace }}" -B "${{ env.CMAKE_BUILD_DIR }}" | |||||
| -DCMAKE_BUILD_TYPE=${{ env.CMAKE_BUILD_TYPE }} | |||||
| -DCMAKE_INSTALL_PREFIX=${{ runner.temp }}/install_test/ | |||||
| - name: Build | |||||
| run: >- | |||||
| cmake --build "${{ env.CMAKE_BUILD_DIR }}" | |||||
| --config "${{ env.CMAKE_BUILD_TYPE }}" | |||||
| - name: Run Tests | |||||
| working-directory: ${{ github.workspace }}/build | |||||
| run: ctest -C "${{ env.CMAKE_BUILD_TYPE }}" --verbose | |||||
| - name: Run LevelDB Benchmarks | |||||
| run: ${{ env.BINARY_PATH }}db_bench${{ env.BINARY_SUFFIX }} | |||||
| - name: Run SQLite Benchmarks | |||||
| if: ${{ runner.os != 'Windows' }} | |||||
| run: ${{ env.BINARY_PATH }}db_bench_sqlite3${{ env.BINARY_SUFFIX }} | |||||
| - name: Run Kyoto Cabinet Benchmarks | |||||
| if: ${{ runner.os == 'Linux' && matrix.compiler == 'clang' }} | |||||
| run: ${{ env.BINARY_PATH }}db_bench_tree_db${{ env.BINARY_SUFFIX }} | |||||
| - name: Test CMake installation | |||||
| run: cmake --build "${{ env.CMAKE_BUILD_DIR }}" --target install | |||||
| @ -1,88 +0,0 @@ | |||||
| # Build matrix / environment variables are explained on: | |||||
| # http://about.travis-ci.org/docs/user/build-configuration/ | |||||
| # This file can be validated on: http://lint.travis-ci.org/ | |||||
| language: cpp | |||||
| dist: bionic | |||||
| osx_image: xcode12.5 | |||||
| compiler: | |||||
| - gcc | |||||
| - clang | |||||
| os: | |||||
| - linux | |||||
| - osx | |||||
| env: | |||||
| - BUILD_TYPE=Debug | |||||
| - BUILD_TYPE=RelWithDebInfo | |||||
| jobs: | |||||
| allow_failures: | |||||
| # Homebrew's GCC is currently broken on XCode 11. | |||||
| - compiler: gcc | |||||
| os: osx | |||||
| addons: | |||||
| apt: | |||||
| sources: | |||||
| - sourceline: 'deb http://apt.llvm.org/bionic/ llvm-toolchain-bionic-12 main' | |||||
| key_url: 'https://apt.llvm.org/llvm-snapshot.gpg.key' | |||||
| - sourceline: 'ppa:ubuntu-toolchain-r/test' | |||||
| packages: | |||||
| - clang-12 | |||||
| - cmake | |||||
| - gcc-11 | |||||
| - g++-11 | |||||
| - libgoogle-perftools-dev | |||||
| - libkyotocabinet-dev | |||||
| - libsnappy-dev | |||||
| - libsqlite3-dev | |||||
| - ninja-build | |||||
| homebrew: | |||||
| packages: | |||||
| - cmake | |||||
| - crc32c | |||||
| - gcc@11 | |||||
| - gperftools | |||||
| - kyoto-cabinet | |||||
| - llvm@12 | |||||
| - ninja | |||||
| - snappy | |||||
| - sqlite3 | |||||
| update: true | |||||
| install: | |||||
| # The following Homebrew packages aren't linked by default, and need to be | |||||
| # prepended to the path explicitly. | |||||
| - if [ "$TRAVIS_OS_NAME" = "osx" ]; then | |||||
| export PATH="$(brew --prefix llvm)/bin:$PATH"; | |||||
| fi | |||||
| # /usr/bin/gcc points to an older compiler on both Linux and macOS. | |||||
| - if [ "$CXX" = "g++" ]; then export CXX="g++-11" CC="gcc-11"; fi | |||||
| # /usr/bin/clang points to an older compiler on both Linux and macOS. | |||||
| # | |||||
| # Homebrew's llvm package doesn't ship a versioned clang++ binary, so the values | |||||
| # below don't work on macOS. Fortunately, the path change above makes the | |||||
| # default values (clang and clang++) resolve to the correct compiler on macOS. | |||||
| - if [ "$TRAVIS_OS_NAME" = "linux" ]; then | |||||
| if [ "$CXX" = "clang++" ]; then export CXX="clang++-12" CC="clang-12"; fi; | |||||
| fi | |||||
| - echo ${CC} | |||||
| - echo ${CXX} | |||||
| - ${CXX} --version | |||||
| - cmake --version | |||||
| before_script: | |||||
| - mkdir -p build && cd build | |||||
| - cmake .. -G Ninja -DCMAKE_BUILD_TYPE=$BUILD_TYPE | |||||
| -DCMAKE_INSTALL_PREFIX=$HOME/.local | |||||
| - cmake --build . | |||||
| - cd .. | |||||
| script: | |||||
| - cd build && ctest --verbose && cd .. | |||||
| - "if [ -f build/db_bench ] ; then build/db_bench ; fi" | |||||
| - "if [ -f build/db_bench_sqlite3 ] ; then build/db_bench_sqlite3 ; fi" | |||||
| - "if [ -f build/db_bench_tree_db ] ; then build/db_bench_tree_db ; fi" | |||||
| - cd build && cmake --build . --target install | |||||