Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
99 changes: 66 additions & 33 deletions .github/workflows/build_and_test_tidesdb.yml
Original file line number Diff line number Diff line change
Expand Up @@ -9,40 +9,73 @@ on:

jobs:
build:
strategy:
matrix:
os: [ubuntu-latest, macos-latest, windows-latest]

runs-on: ubuntu-latest
runs-on: ${{ matrix.os }}

steps:
- name: Checkout tidesdb-cpp repo
uses: actions/checkout@v4
with:
repository: tidesdb/tidesdb-cpp
path: tidesdb-cpp

- name: Checkout tidesdb repo
uses: actions/checkout@v4
with:
repository: tidesdb/tidesdb
path: tidesdb

- name: Install libzstd-dev,liblz4-dev and libsnappy-dev
run: |
sudo apt update
sudo apt install -y libzstd-dev liblz4-dev libsnappy-dev

- name: configure cmake build for tidesdb
run: |
cd tidesdb
cmake -DTIDESDB_WITH_SANITIZER=OFF --debug-output -S . -B build && make -C build/
sudo cmake --install build

- name: configure cmake build
run: |
cd tidesdb-cpp
cmake --debug-output -S . -B build && make -C build/

- name: run tests
run: |
cd tidesdb-cpp/build
ctest --output-on-failure
- name: Checkout tidesdb-cpp repo
uses: actions/checkout@v4
with:
repository: tidesdb/tidesdb-cpp
path: tidesdb-cpp

- name: Checkout tidesdb repo
uses: actions/checkout@v4
with:
repository: tidesdb/tidesdb
path: tidesdb

- name: Install dependencies (Linux)
if: runner.os == 'Linux'
run: |
sudo apt update
sudo apt install -y libzstd-dev liblz4-dev libsnappy-dev

- name: Install dependencies (macOS)
if: runner.os == 'macOS'
run: |
brew install zstd lz4 snappy

- name: Install dependencies (Windows)
if: runner.os == 'Windows'
run: |
choco install pkgconfiglite
vcpkg install zstd lz4 snappy

- name: Configure cmake build for tidesdb (Unix)
if: runner.os != 'Windows'
run: |
cd tidesdb
cmake -DTIDESDB_WITH_SANITIZER=OFF --debug-output -S . -B build
cmake --build build
sudo cmake --install build

- name: Configure cmake build for tidesdb (Windows)
if: runner.os == 'Windows'
run: |
cd tidesdb
cmake -DTIDESDB_WITH_SANITIZER=OFF --debug-output -S . -B build -DCMAKE_TOOLCHAIN_FILE=C:/vcpkg/scripts/buildsystems/vcpkg.cmake
cmake --build build --config Release
cmake --install build --config Release

- name: Configure cmake build (Unix)
if: runner.os != 'Windows'
run: |
cd tidesdb-cpp
cmake --debug-output -S . -B build
cmake --build build

- name: Configure cmake build (Windows)
if: runner.os == 'Windows'
run: |
cd tidesdb-cpp
cmake --debug-output -S . -B build -DCMAKE_TOOLCHAIN_FILE=C:/vcpkg/scripts/buildsystems/vcpkg.cmake
cmake --build build --config Release

- name: Run tests
run: |
cd tidesdb-cpp/build
ctest --output-on-failure
13 changes: 0 additions & 13 deletions .gitignore
Original file line number Diff line number Diff line change
@@ -1,32 +1,19 @@
# Prerequisites
*.d

# Compiled Object files
*.slo
*.lo
*.o
*.obj

# Precompiled Headers
*.gch
*.pch

# Compiled Dynamic libraries
*.so
*.dylib
*.dll

# Fortran module files
*.mod
*.smod

# Compiled Static libraries
*.lai
*.la
*.a
*.lib

# Executables
*.exe
*.out
*.app
Expand Down
35 changes: 13 additions & 22 deletions CMakeLists.txt
Original file line number Diff line number Diff line change
@@ -1,48 +1,39 @@
# build instructions--
# cmake -S . -B build
# cmake --build build
# cmake --install build
cmake_minimum_required(VERSION 3.25)
project(tidesdb_cpp CXX)

set(CMAKE_CXX_STANDARD 11)
set(PROJECT_VERSION 0.1.0)
set(CMAKE_CXX_STANDARD 17)
set(PROJECT_VERSION 1.0.0)
add_compile_options(-Wextra -Wall -Werror)

find_library(LIBRARY_TIDEDB NAMES tidesdb REQUIRED) # require tidesdb library
find_library(LIBRARY_TIDEDB NAMES tidesdb REQUIRED)

add_library(tidesdb_cpp SHARED tidesdb.cpp)

install(FILES tidesdb.hpp
DESTINATION include)
# INTERFACE library for header-only
add_library(tidesdb_cpp INTERFACE)

if(APPLE AND CMAKE_SYSTEM_PROCESSOR STREQUAL "arm64")
target_include_directories(tidesdb_cpp PUBLIC /opt/homebrew/include)
target_link_directories(tidesdb_cpp PUBLIC /opt/homebrew/lib)
target_include_directories(tidesdb_cpp INTERFACE /opt/homebrew/include)
target_link_directories(tidesdb_cpp INTERFACE /opt/homebrew/lib)
elseif(APPLE)
target_include_directories(tidesdb_cpp PUBLIC /usr/local/include)
target_link_directories(tidesdb_cpp PUBLIC /usr/local/lib)
target_include_directories(tidesdb_cpp INTERFACE /usr/local/include)
target_link_directories(tidesdb_cpp INTERFACE /usr/local/lib)
endif()

target_link_libraries(tidesdb_cpp PUBLIC ${LIBRARY_TIDEDB})
target_link_libraries(tidesdb_cpp INTERFACE ${LIBRARY_TIDEDB})

install(TARGETS tidesdb_cpp
LIBRARY DESTINATION lib
ARCHIVE DESTINATION lib)
install(FILES tidesdb.hpp DESTINATION include)
install(TARGETS tidesdb_cpp EXPORT tidesdb_cpp-targets)

include(FetchContent)
FetchContent_Declare(
googletest
URL https://github.com/google/googletest/archive/03597a01ee50ed33e9dfd640b249b4be3799d395.zip
)

set(gtest_force_shared_crt ON CACHE BOOL "" FORCE)
FetchContent_MakeAvailable(googletest)

enable_testing()

add_executable(tests test/tests.cpp)
target_link_libraries(tests GTest::gtest_main tidesdb_cpp ${LIBRARY_TIDEDB})
target_link_libraries(tests GTest::gtest_main tidesdb_cpp)

include(GoogleTest)
gtest_discover_tests(tests)
Loading
Loading