Skip to content

Commit

Permalink
Build ProtoC in CMake (#8)
Browse files Browse the repository at this point in the history
* Patch: Added the `protoc` executable target to CMakeLists.txt.
  • Loading branch information
loglund authored Oct 14, 2024
1 parent 8a3e2cc commit c657ab2
Show file tree
Hide file tree
Showing 3 changed files with 65 additions and 5 deletions.
54 changes: 50 additions & 4 deletions .github/workflows/linux_mkspecs.yml
Original file line number Diff line number Diff line change
Expand Up @@ -12,10 +12,56 @@ name: Linux C++ make-specs
- master
pull_request:
jobs:
Linux-mkspecs:
uses: steinwurf/linux-mkspecs-action/.github/workflows/[email protected]
with:
extra_resolve_options: ${{ github.event.inputs.extra_resolve_options }}
docker_builds:
timeout-minutes: 45
strategy:
fail-fast: false
matrix:
config:
- container: ghcr.io/steinwurf/ubuntu-lts-2404:1.0.0
CXX: g++
name: GCC Latest
cxxflags: ""
- container: ghcr.io/steinwurf/ubuntu-lts-2404:1.0.0
name: Clang Latest
CXX: clang++
cxxflags: ""
- container: ghcr.io/steinwurf/ubuntu-lts-2004:1.0.0
name: GCC Oldest
CXX: g++
cxxflags: ""
- container: ghcr.io/steinwurf/ubuntu-lts-2004:1.0.0
name: Clang Oldest
CXX: clang++
cxxflags: ""
runs-on:
- self-hosted
- docker
- builder
name: ${{ matrix.config.name }}
container:
image: ${{ matrix.config.container }}
options: --user 0:0 --privileged --ulimit core=-1
volumes:
- /home/buildbot/.ssh:/root/.ssh
steps:
- name: Checkout source code
uses: actions/checkout@v4
- name: Waf Configure
env:
EXTRA_RESOLVE_OPTIONS: ${{ inputs.extra_resolve_options }}
CXX: ${{ matrix.config.CXX }}
uses: nick-fields/retry@v3
with:
max_attempts: 3
timeout_minutes: 15
command: python3 waf configure --git_protocol=git@ ${{ matrix.config.cxxflags }} ${{ env.EXTRA_RESOLVE_OPTIONS }}
- name: Waf Build
run: |
echo "::add-matcher::.github/gcc-problem-matcher.json"
python3 waf
- name: Waf Test
run: ${{ matrix.config.env }} python3 waf --run_tests
concurrency:
group: ${{ github.workflow }}-${{ github.ref || github.run_id }}
cancel-in-progress: true
14 changes: 14 additions & 0 deletions CMakeLists.txt
Original file line number Diff line number Diff line change
Expand Up @@ -65,6 +65,20 @@ target_compile_features(sw_protobuf PUBLIC cxx_std_17)
target_link_libraries(sw_protobuf PUBLIC sw_protobuf_abseil sw_protobuf_utf8_range)
target_include_directories(sw_protobuf PUBLIC ${STEINWURF_RESOLVE}/protobuf-source/src)

message(STATUS "STEINWURF_PROTOC: ${STEINWURF_PROTOC}")

if (STEINWURF_PROTOC)
file(GLOB_RECURSE sw_protobuf_protoc_sources ${STEINWURF_RESOLVE}/protobuf-source/src/google/protobuf/compiler/*.cc)
list(FILTER sw_protobuf_protoc_sources EXCLUDE REGEX .*src/google/protobuf\/compiler\/.*test.*)
list(FILTER sw_protobuf_protoc_sources EXCLUDE REGEX .*src/google/protobuf\/compiler\/.*mock.*)
list(FILTER sw_protobuf_protoc_sources EXCLUDE REGEX .*src/google/protobuf\/compiler\/.*fake.*)
list(FILTER sw_protobuf_protoc_sources EXCLUDE REGEX .*src/google/protobuf\/compiler\/allowlists\/.*_test.*)

add_executable(protoc ${sw_protobuf_protoc_sources})
target_link_libraries(protoc PRIVATE sw_protobuf)
target_include_directories(protoc PRIVATE ${STEINWURF_RESOLVE}/protobuf-source/src)
target_compile_features(protoc PRIVATE cxx_std_17)
endif ()
# Ignore -Wattribute warnings for GCC and Clang
if (CMAKE_C_COMPILER_ID STREQUAL "GNU" OR CMAKE_C_COMPILER_ID STREQUAL "Clang")
target_compile_options(sw_protobuf PRIVATE -Wno-attributes)
Expand Down
2 changes: 1 addition & 1 deletion NEWS.rst
Original file line number Diff line number Diff line change
Expand Up @@ -6,7 +6,7 @@ every change, see the Git log.

Latest
------
* tbd
* Patch: Added the `protoc` executable target to CMakeLists.txt.

2.0.10
------
Expand Down

0 comments on commit c657ab2

Please sign in to comment.