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