@ -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 |