diff --git a/.github/workflows/cpp-test.yml b/.github/workflows/cpp-test.yml new file mode 100644 index 00000000..52acf510 --- /dev/null +++ b/.github/workflows/cpp-test.yml @@ -0,0 +1,63 @@ +name: C++ Test +on: + push: + branches: + - master + pull_request: + branches: + - master +jobs: + cpp-test: + runs-on: ubuntu-latest + steps: + - name: Checkout code + uses: actions/checkout@v3 + with: + submodules: 'true' + - name: Install dependencies + run: sudo apt install -y cmake clang libclang-dev llvm llvm-dev libssl-dev + + - name: Cache Poco + id: cache-poco + uses: actions/cache@v3 + with: + path: ~/pocoinstall/v1_12_4 + key: ${{ runner.os }}-Poco-v_1_12_4-t0 + - name: Install Poco + if: steps.cache-poco.outputs.cache-hit != 'true' + run: | + export POCO_INSTALL_PATH=~/pocoinstall/v1_12_4 && mkdir -p ${POCO_INSTALL_PATH} + git clone https://github.com/pocoproject/poco.git + pushd poco && git checkout poco-1.12.4-release && git submodule update --init + mkdir poco_build && pushd poco_build \ + && cmake .. -DCMAKE_BUILD_TYPE=Release -DCMAKE_INSTALL_PREFIX=$POCO_INSTALL_PATH \ + && make install && popd + + - name: Cache gRPC + id: cache-grpc + uses: actions/cache@v3 + with: + path: ~/grpcinstall/v1_44_0 + key: ${{ runner.os }}-gRPC-v1_44_0-t0 + - name: Install gRPC + if: steps.cache-grpc.outputs.cache-hit != 'true' + run: | + export GRPC_INSTALL_PATH=~/grpcinstall/v1_44_0 && mkdir -p $GRPC_INSTALL_PATH + git clone https://github.com/grpc/grpc.git + pushd grpc && git checkout v1.44.0 && git submodule update --init + mkdir -p grpcbuild && pushd grpcbuild \ + && cmake .. -DgRPC_BUILD_TESTS=OFF -DCMAKE_BUILD_TYPE=Release -DCMAKE_INSTALL_PREFIX=$GRPC_INSTALL_PATH \ + && make install && popd + rm -rf grpcbuild && mkdir -p grpcbuild && pushd grpcbuild \ + && cmake .. -DgRPC_INSTALL=ON -DgRPC_BUILD_TESTS=OFF -DgRPC_PROTOBUF_PROVIDER=package -DgRPC_ZLIB_PROVIDER=package -DgRPC_CARES_PROVIDER=package -DgRPC_SSL_PROVIDER=package -DCMAKE_BUILD_TYPE=Release -DCMAKE_INSTALL_PREFIX=$GRPC_INSTALL_PATH \ + && make install && popd + popd + + - name: Test C++ + run: | + export POCO_INSTALL_PATH=~/pocoinstall/v1_12_4 + export GRPC_INSTALL_PATH=~/grpcinstall/v1_44_0 + export PATH="$GRPC_INSTALL_PATH/bin:$PATH" + rm -rf build && mkdir build && pushd build \ + && cmake .. -DCMAKE_PREFIX_PATH="$GRPC_INSTALL_PATH;$POCO_INSTALL_PATH" && make \ + && popd && rm -rf build diff --git a/third_party/CMakeLists.txt b/third_party/CMakeLists.txt index 430d948a..fab0208c 100644 --- a/third_party/CMakeLists.txt +++ b/third_party/CMakeLists.txt @@ -1,8 +1,4 @@ -if (NOT ABSL_ROOT_DIR) - add_subdirectory(abseil-cpp-cmake) -endif() - if (NOT KVPROTO_FOUND) add_subdirectory (kvproto/cpp) endif() diff --git a/third_party/abseil-cpp b/third_party/abseil-cpp deleted file mode 160000 index 21510581..00000000 --- a/third_party/abseil-cpp +++ /dev/null @@ -1 +0,0 @@ -Subproject commit 215105818dfde3174fe799600bb0f3cae233d0bf diff --git a/third_party/abseil-cpp-cmake/CMakeLists.txt b/third_party/abseil-cpp-cmake/CMakeLists.txt deleted file mode 100644 index 604135d8..00000000 --- a/third_party/abseil-cpp-cmake/CMakeLists.txt +++ /dev/null @@ -1,25 +0,0 @@ -set(ABSL_ROOT_DIR "${CMAKE_CURRENT_SOURCE_DIR}/../abseil-cpp") -set(ABSL_ROOT_DIR "${ABSL_ROOT_DIR}" PARENT_SCOPE) -if(NOT EXISTS "${ABSL_ROOT_DIR}/CMakeLists.txt") - message(FATAL_ERROR " submodule third_party/abseil-cpp is missing. To fix try run: \n git submodule update --init --recursive") -endif() -set(BUILD_TESTING OFF) -set(ABSL_PROPAGATE_CXX_STD ON) - -add_subdirectory("${ABSL_ROOT_DIR}" "${CMAKE_CURRENT_SOURCE_DIR}/../abseil-cpp") - -add_library(abseil_swiss_tables INTERFACE) -set_target_properties(abseil_swiss_tables PROPERTIES INTERFACE_COMPILE_OPTIONS "-Wno-array-parameter") - -target_link_libraries(abseil_swiss_tables INTERFACE - absl::flat_hash_map - absl::flat_hash_set -) - -get_target_property(FLAT_HASH_MAP_INCLUDE_DIR absl::flat_hash_map INTERFACE_INCLUDE_DIRECTORIES) -target_include_directories (abseil_swiss_tables SYSTEM BEFORE INTERFACE ${FLAT_HASH_MAP_INCLUDE_DIR}) - -get_target_property(FLAT_HASH_SET_INCLUDE_DIR absl::flat_hash_set INTERFACE_INCLUDE_DIRECTORIES) -target_include_directories (abseil_swiss_tables SYSTEM BEFORE INTERFACE ${FLAT_HASH_SET_INCLUDE_DIR}) - -message(STATUS "Using absl: dir=${ABSL_ROOT_DIR}")