mirror of
https://github.com/protobuf-c/protobuf-c.git
synced 2024-12-26 21:04:23 +08:00
Dispatch workflow to generate binaries.
Led to some fixes in the CMake too. Signed-off-by: Guybrush <miguel.barro@live.com>
This commit is contained in:
parent
61933280db
commit
6ad31f8d43
49
.github/workflows/build.yml
vendored
49
.github/workflows/build.yml
vendored
@ -90,16 +90,16 @@ jobs:
|
|||||||
strategy:
|
strategy:
|
||||||
matrix:
|
matrix:
|
||||||
build_type: [Debug, Release]
|
build_type: [Debug, Release]
|
||||||
os: [macos-latest, ubuntu-20.04]
|
os: [macos-latest, ubuntu-latest]
|
||||||
runs-on: ${{ matrix.os }}
|
runs-on: ${{ matrix.os }}
|
||||||
steps:
|
steps:
|
||||||
- uses: actions/checkout@v2
|
- uses: actions/checkout@v2
|
||||||
- name: Install Linux dependencies
|
- name: Install Linux dependencies
|
||||||
if: startsWith(matrix.os, 'ubuntu')
|
if: startsWith(matrix.os, 'ubuntu')
|
||||||
run: sudo apt-get install -y protobuf-compiler libprotobuf-dev libprotoc-dev
|
run: sudo apt-get install -y protobuf-compiler libprotobuf-dev libprotoc-dev libabsl-dev
|
||||||
- name: Install Mac dependencies
|
- name: Install Mac dependencies
|
||||||
if: startsWith(matrix.os, 'macos')
|
if: startsWith(matrix.os, 'macos')
|
||||||
run: brew install protobuf
|
run: brew install protobuf abseil
|
||||||
- name: Run cmake tests
|
- name: Run cmake tests
|
||||||
run: |
|
run: |
|
||||||
mkdir build-cmake/bin
|
mkdir build-cmake/bin
|
||||||
@ -117,30 +117,55 @@ jobs:
|
|||||||
name: "MSVC CMake (${{ matrix.build-type }}, DLL: ${{ matrix.shared-lib }})"
|
name: "MSVC CMake (${{ matrix.build-type }}, DLL: ${{ matrix.shared-lib }})"
|
||||||
runs-on: windows-latest
|
runs-on: windows-latest
|
||||||
env:
|
env:
|
||||||
PROTOBUF_VERSION: 3.15.6
|
PROTOBUF_VERSION: 24.3
|
||||||
|
ABSEIL_VERSION: "20230802.0"
|
||||||
steps:
|
steps:
|
||||||
- uses: actions/checkout@v2
|
- uses: actions/checkout@v2
|
||||||
- uses: ilammy/msvc-dev-cmd@v1
|
- uses: ilammy/msvc-dev-cmd@v1
|
||||||
|
with:
|
||||||
|
arch: amd64
|
||||||
- uses: actions/cache@v2
|
- uses: actions/cache@v2
|
||||||
id: cache
|
id: protobuf-cache
|
||||||
with:
|
with:
|
||||||
path: ~/protobuf-bin
|
path: ~/protobuf-bin
|
||||||
key: ${{ env.PROTOBUF_VERSION }}-${{ matrix.shared-lib }}-${{ matrix.build-type}}
|
key: ${{ env.PROTOBUF_VERSION }}-${{ matrix.shared-lib }}-${{ matrix.build-type}}
|
||||||
- name: Build and install protobuf
|
- uses: actions/cache@v2
|
||||||
if: steps.cache.outputs.cache-hit != 'true'
|
id: abseil-cache
|
||||||
|
with:
|
||||||
|
path: ~/abseil-bin
|
||||||
|
key: ${{ env.ABSEIL_VERSION }}-${{ matrix.shared-lib }}-${{ matrix.build-type}}
|
||||||
|
- name: Build and install abseil
|
||||||
|
if: steps.abseil-cache.outputs.cache-hit != 'true'
|
||||||
run: |
|
run: |
|
||||||
cd ~
|
cd ~
|
||||||
C:\msys64\usr\bin\wget.exe https://github.com/protocolbuffers/protobuf/releases/download/v${{ env.PROTOBUF_VERSION }}/protobuf-cpp-${{ env.PROTOBUF_VERSION }}.zip
|
git clone https://github.com/abseil/abseil-cpp.git -b ${{ env.ABSEIL_VERSION }} abseil
|
||||||
7z x protobuf-cpp-${{ env.PROTOBUF_VERSION }}.zip
|
cd ~/abseil && mkdir build && cd build
|
||||||
cd ~/protobuf-${{ env.PROTOBUF_VERSION }}/cmake && mkdir build && cd build
|
cmake -G "NMake Makefiles" -DCMAKE_BUILD_TYPE=${{ matrix.build-type }} -DCMAKE_INSTALL_PREFIX=~/abseil-bin -DBUILD_SHARED_LIBS=${{ matrix.shared-lib }} -DABSL_PROPAGATE_CXX_STD=ON -DCMAKE_MSVC_RUNTIME_LIBRARY=MultiThreaded${{ matrix.build-type == 'Debug' && 'Debug' || '' }}${{ matrix.shared-lib == 'ON' && 'DLL' || '' }} -DCMAKE_CXX_STANDARD=17 ..
|
||||||
cmake -G "NMake Makefiles" -DCMAKE_BUILD_TYPE=${{ matrix.build-type }} -Dprotobuf_BUILD_TESTS=OFF -DCMAKE_INSTALL_PREFIX=~/protobuf-bin -Dprotobuf_BUILD_SHARED_LIBS=${{ matrix.shared-lib }} ..
|
nmake
|
||||||
|
nmake install
|
||||||
|
- name: Build and install utf8 compression algorithm
|
||||||
|
if: matrix.shared-lib == 'OFF'
|
||||||
|
run: |
|
||||||
|
cd ~
|
||||||
|
git clone https://github.com/protocolbuffers/utf8_range.git utf8_range
|
||||||
|
cd ~/utf8_range && mkdir build && cd build
|
||||||
|
cmake -G "NMake Makefiles" -DCMAKE_BUILD_TYPE=${{ matrix.build-type }} -DCMAKE_INSTALL_PREFIX=~/utf8_range-bin -DCMAKE_CXX_STANDARD=17 -Dutf8_range_ENABLE_TESTS=OFF -DBUILD_SHARED_LIBS=OFF -Dabsl_ROOT=~/abseil-bin -DCMAKE_POLICY_DEFAULT_CMP0074=NEW -DCMAKE_POLICY_DEFAULT_CMP0091=NEW -DCMAKE_MSVC_RUNTIME_LIBRARY='MultiThreaded${{ matrix.build-type == 'Debug' && 'Debug' || '' }}' ..
|
||||||
|
nmake
|
||||||
|
nmake install
|
||||||
|
- name: Build and install protobuf
|
||||||
|
if: steps.protobuf-cache.outputs.cache-hit != 'true'
|
||||||
|
run: |
|
||||||
|
cd ~
|
||||||
|
git clone https://github.com/protocolbuffers/protobuf.git -b v${{ env.PROTOBUF_VERSION }} protobuf
|
||||||
|
cd ~/protobuf && mkdir build && cd build
|
||||||
|
cmake -G "NMake Makefiles" -DCMAKE_BUILD_TYPE=${{ matrix.build-type }} -Dprotobuf_BUILD_TESTS=OFF -DCMAKE_INSTALL_PREFIX=~/protobuf-bin -Dprotobuf_BUILD_SHARED_LIBS=${{ matrix.shared-lib }} -DCMAKE_CXX_STANDARD=17 -Dprotobuf_BUILD_EXAMPLES=OFF -Dprotobuf_ABSL_PROVIDER=package -Dabsl_ROOT=~/abseil-bin -DABSL_PROPAGATE_CXX_STD=ON ..
|
||||||
nmake
|
nmake
|
||||||
nmake install
|
nmake install
|
||||||
- name: Run cmake tests
|
- name: Run cmake tests
|
||||||
run: |
|
run: |
|
||||||
mkdir build-cmake/bin
|
mkdir build-cmake/bin
|
||||||
cd build-cmake/bin
|
cd build-cmake/bin
|
||||||
cmake -G "NMake Makefiles" -DCMAKE_BUILD_TYPE=${{ matrix.build-type }} -DBUILD_TESTS=ON -DCMAKE_PREFIX_PATH=~/protobuf-bin -DCMAKE_INSTALL_PREFIX=protobuf-c-bin -DBUILD_SHARED_LIBS=${{ matrix.shared-lib }} ..
|
cmake -G "NMake Makefiles" -DCMAKE_BUILD_TYPE=${{ matrix.build-type }} -DBUILD_TESTS=ON -DCMAKE_INSTALL_PREFIX=~/protobuf-c-bin -DBUILD_SHARED_LIBS=${{ matrix.shared-lib }} -DProtobuf_ROOT="~/protobuf-bin" -Dabsl_ROOT="~/abseil-bin" -Dutf8_range_ROOT="~/utf8_range-bin" ..
|
||||||
nmake
|
nmake
|
||||||
nmake test
|
nmake test
|
||||||
nmake install
|
nmake install
|
||||||
|
184
.github/workflows/msvc_bin.yml
vendored
Normal file
184
.github/workflows/msvc_bin.yml
vendored
Normal file
@ -0,0 +1,184 @@
|
|||||||
|
name: Windows/MSVC binary generation
|
||||||
|
|
||||||
|
on:
|
||||||
|
workflow_dispatch:
|
||||||
|
inputs:
|
||||||
|
protobuf_repo:
|
||||||
|
description: 'repo associated to the protobuf repo'
|
||||||
|
default: 'https://github.com/MiguelBarro/protobuf.git'
|
||||||
|
type: string
|
||||||
|
protobuf_branch:
|
||||||
|
description: 'branch associated with the protobuf repo'
|
||||||
|
default: 'main'
|
||||||
|
type: string
|
||||||
|
protobuf-c_repo:
|
||||||
|
description: 'repo associated to the protobuf-c repo'
|
||||||
|
default: 'https://github.com/MiguelBarro/protobuf-c.git'
|
||||||
|
type: string
|
||||||
|
protobuf-c_branch:
|
||||||
|
description: 'branch associated with the protobuf-c repo'
|
||||||
|
default: 'master'
|
||||||
|
type: string
|
||||||
|
abseil_branch:
|
||||||
|
description: 'branch associated with the abseil-cpp repo'
|
||||||
|
default: 'master'
|
||||||
|
type: string
|
||||||
|
|
||||||
|
defaults:
|
||||||
|
run:
|
||||||
|
shell: pwsh
|
||||||
|
|
||||||
|
jobs:
|
||||||
|
build-binaries:
|
||||||
|
strategy:
|
||||||
|
matrix:
|
||||||
|
config: [Debug, Release]
|
||||||
|
shared_libs: [ON, OFF]
|
||||||
|
fail-fast: false
|
||||||
|
runs-on: windows-latest
|
||||||
|
steps:
|
||||||
|
- name: Set up an independent abseil repo
|
||||||
|
run: |
|
||||||
|
git clone --branch ${{ inputs.abseil_branch }} https://github.com/abseil/abseil-cpp.git
|
||||||
|
cd abseil-cpp
|
||||||
|
$runtime = 'MultiThreaded$<$<CONFIG:Debug>:Debug>'
|
||||||
|
if ('${{ matrix.shared_libs }}' -eq 'ON')
|
||||||
|
{ $runtime += 'DLL' }
|
||||||
|
cmake -DABSL_USE_EXTERNAL_GOOGLETEST=ON -DABSL_FIND_GOOGLETEST=ON `
|
||||||
|
-DBUILD_SHARED_LIBS=${{ matrix.shared_libs }} -DABSL_PROPAGATE_CXX_STD=ON `
|
||||||
|
-DCMAKE_MSVC_RUNTIME_LIBRARY="$runtime" `
|
||||||
|
-DCMAKE_CXX_STANDARD=17 -B build -A x64 -T host=x64 .
|
||||||
|
cmake --build build --config ${{ matrix.config }}
|
||||||
|
cmake --install build --config ${{ matrix.config }} --prefix "$Env:TMP/install/absl"
|
||||||
|
|
||||||
|
- name: Set up the utf8 compression algorithm
|
||||||
|
if: ${{ matrix.shared_libs == 'OFF' }}
|
||||||
|
run: |
|
||||||
|
git clone https://github.com/protocolbuffers/utf8_range.git
|
||||||
|
cd utf8_range
|
||||||
|
cmake -DCMAKE_CXX_STANDARD=17 -Dutf8_range_ENABLE_TESTS=OFF `
|
||||||
|
-DBUILD_SHARED_LIBS=OFF `
|
||||||
|
-Dabsl_ROOT="$Env:TMP/install/absl" `
|
||||||
|
-DCMAKE_POLICY_DEFAULT_CMP0074=NEW `
|
||||||
|
-DCMAKE_POLICY_DEFAULT_CMP0091=NEW `
|
||||||
|
-DCMAKE_MSVC_RUNTIME_LIBRARY='MultiThreaded$<$<CONFIG:Debug>:Debug>' `
|
||||||
|
-B build -A x64 -T host=x64 .
|
||||||
|
cmake --build build --config ${{ matrix.config }}
|
||||||
|
cmake --install build --config ${{ matrix.config }} --prefix "$Env:TMP/install/utf8_range"
|
||||||
|
|
||||||
|
- name: Set up protobuf repo
|
||||||
|
run: |
|
||||||
|
git clone --branch ${{ inputs.protobuf_branch }} --recurse-submodules ${{ inputs.protobuf_repo }}
|
||||||
|
cd protobuf
|
||||||
|
cmake -DCMAKE_CXX_STANDARD=17 `
|
||||||
|
-DBUILD_SHARED_LIBS=${{ matrix.shared_libs }} `
|
||||||
|
-Dprotobuf_BUILD_TESTS=OFF `
|
||||||
|
-Dprotobuf_BUILD_EXAMPLES=OFF `
|
||||||
|
-Dprotobuf_ABSL_PROVIDER=package `
|
||||||
|
-Dabsl_ROOT="$Env:TMP/install/absl" `
|
||||||
|
-DABSL_PROPAGATE_CXX_STD=ON `
|
||||||
|
-B build -A x64 -T host=x64 .
|
||||||
|
cmake --build build --config ${{ matrix.config }}
|
||||||
|
cmake --install build --config ${{ matrix.config }} --prefix "$Env:TMP/install/protobuf"
|
||||||
|
|
||||||
|
- name: Set up protobuf-c repo
|
||||||
|
id: build
|
||||||
|
run: |
|
||||||
|
git clone --branch ${{ inputs.protobuf-c_branch }} --recurse-submodules ${{ inputs.protobuf-c_repo }}
|
||||||
|
cd protobuf-c
|
||||||
|
cmake -DCMAKE_CXX_STANDARD=17 `
|
||||||
|
-DProtobuf_ROOT="$Env:TMP/install/protobuf" `
|
||||||
|
-DBUILD_SHARED_LIBS=${{ matrix.shared_libs }} `
|
||||||
|
-DBUILD_TESTS=OFF `
|
||||||
|
-Dabsl_ROOT="$Env:TMP/install/absl" `
|
||||||
|
-Dutf8_range_ROOT="$Env:TMP/install/utf8_range" `
|
||||||
|
-B build-cmake/build -A x64 -T host=x64 build-cmake
|
||||||
|
cmake --build build-cmake/build --config ${{ matrix.config }}
|
||||||
|
cmake --install build-cmake/build --config ${{ matrix.config }} --prefix "$Env:TMP/install/protobuf-c"
|
||||||
|
"BINARYDIR=$Env:TMP/install" | Out-File $Env:GITHUB_OUTPUT
|
||||||
|
|
||||||
|
- name: Upload artifacts
|
||||||
|
uses: actions/upload-artifact@v3
|
||||||
|
with:
|
||||||
|
name: protobuf-c-binaries-${{ matrix.config }}-${{ matrix.shared_libs == 'ON' && 'dll' || 'lib'}}
|
||||||
|
path: ${{ steps.build.outputs.BINARYDIR }}
|
||||||
|
|
||||||
|
build-binaries-nmake:
|
||||||
|
strategy:
|
||||||
|
matrix:
|
||||||
|
config: [Debug, Release]
|
||||||
|
shared_libs: [ON, OFF]
|
||||||
|
fail-fast: false
|
||||||
|
runs-on: windows-latest
|
||||||
|
steps:
|
||||||
|
|
||||||
|
- name: Enforce a developer console
|
||||||
|
uses: ilammy/msvc-dev-cmd@v1
|
||||||
|
with:
|
||||||
|
arch: amd64
|
||||||
|
|
||||||
|
- name: Set up an independent abseil repo
|
||||||
|
run: |
|
||||||
|
git clone --branch ${{ inputs.abseil_branch }} https://github.com/abseil/abseil-cpp.git
|
||||||
|
cd abseil-cpp
|
||||||
|
$runtime = 'MultiThreaded$<$<CONFIG:Debug>:Debug>'
|
||||||
|
if ('${{ matrix.shared_libs }}' -eq 'ON')
|
||||||
|
{ $runtime += 'DLL' }
|
||||||
|
cmake -DABSL_USE_EXTERNAL_GOOGLETEST=ON -DABSL_FIND_GOOGLETEST=ON `
|
||||||
|
-DBUILD_SHARED_LIBS=${{ matrix.shared_libs }} -DABSL_PROPAGATE_CXX_STD=ON `
|
||||||
|
-DCMAKE_MSVC_RUNTIME_LIBRARY="$runtime" `
|
||||||
|
-B build -DCMAKE_CXX_STANDARD=17 -G "NMake Makefiles" -DCMAKE_BUILD_TYPE=${{ matrix.config }} .
|
||||||
|
cmake --build build
|
||||||
|
cmake --install build --prefix "$Env:TMP/install/absl"
|
||||||
|
|
||||||
|
- name: Set up the utf8 compression algorithm
|
||||||
|
if: ${{ matrix.shared_libs == 'OFF' }}
|
||||||
|
run: |
|
||||||
|
git clone https://github.com/protocolbuffers/utf8_range.git
|
||||||
|
cd utf8_range
|
||||||
|
cmake -DCMAKE_CXX_STANDARD=17 -Dutf8_range_ENABLE_TESTS=OFF `
|
||||||
|
-DBUILD_SHARED_LIBS=OFF `
|
||||||
|
-Dabsl_ROOT="$Env:TMP/install/absl" `
|
||||||
|
-DCMAKE_POLICY_DEFAULT_CMP0074=NEW `
|
||||||
|
-DCMAKE_POLICY_DEFAULT_CMP0091=NEW `
|
||||||
|
-DCMAKE_MSVC_RUNTIME_LIBRARY='MultiThreaded$<$<CONFIG:Debug>:Debug>' `
|
||||||
|
-B build -G "NMake Makefiles" -DCMAKE_BUILD_TYPE=${{ matrix.config }} .
|
||||||
|
cmake --build build
|
||||||
|
cmake --install build --prefix "$Env:TMP/install/utf8_range"
|
||||||
|
|
||||||
|
- name: Set up protobuf repo
|
||||||
|
run: |
|
||||||
|
git clone --branch ${{ inputs.protobuf_branch }} --recurse-submodules ${{ inputs.protobuf_repo }}
|
||||||
|
cd protobuf
|
||||||
|
cmake -DCMAKE_CXX_STANDARD=17 `
|
||||||
|
-DBUILD_SHARED_LIBS=${{ matrix.shared_libs }} `
|
||||||
|
-Dprotobuf_BUILD_TESTS=OFF `
|
||||||
|
-Dprotobuf_BUILD_EXAMPLES=OFF `
|
||||||
|
-Dprotobuf_ABSL_PROVIDER=package `
|
||||||
|
-Dabsl_ROOT="$Env:TMP/install/absl" `
|
||||||
|
-DABSL_PROPAGATE_CXX_STD=ON `
|
||||||
|
-B build -G "NMake Makefiles" -DCMAKE_BUILD_TYPE=${{ matrix.config }} .
|
||||||
|
cmake --build build
|
||||||
|
cmake --install build --prefix "$Env:TMP/install/protobuf"
|
||||||
|
|
||||||
|
- name: Set up protobuf-c repo
|
||||||
|
id: build
|
||||||
|
run: |
|
||||||
|
git clone --branch ${{ inputs.protobuf-c_branch }} --recurse-submodules ${{ inputs.protobuf-c_repo }}
|
||||||
|
cd protobuf-c
|
||||||
|
cmake -DCMAKE_CXX_STANDARD=17 `
|
||||||
|
-DProtobuf_ROOT="$Env:TMP/install/protobuf" `
|
||||||
|
-DBUILD_SHARED_LIBS=${{ matrix.shared_libs }} `
|
||||||
|
-DBUILD_TESTS=OFF `
|
||||||
|
-Dabsl_ROOT="$Env:TMP/install/absl" `
|
||||||
|
-Dutf8_range_ROOT="$Env:TMP/install/utf8_range" `
|
||||||
|
-B build-cmake/build -G "NMake Makefiles" -DCMAKE_BUILD_TYPE=${{ matrix.config }} build-cmake
|
||||||
|
cmake --build build-cmake/build
|
||||||
|
cmake --install build-cmake/build --prefix "$Env:TMP/install/protobuf-c"
|
||||||
|
"BINARYDIR=$Env:TMP/install" | Out-File $Env:GITHUB_OUTPUT
|
||||||
|
|
||||||
|
- name: Upload artifacts
|
||||||
|
uses: actions/upload-artifact@v3
|
||||||
|
with:
|
||||||
|
name: nmake-protobuf-c-binaries-${{ matrix.config }}-${{ matrix.shared_libs == 'ON' && 'dll' || 'lib'}}
|
||||||
|
path: ${{ steps.build.outputs.BINARYDIR }}
|
@ -7,6 +7,7 @@ SET(PACKAGE_DESCRIPTION "Protocol Buffers implementation in C")
|
|||||||
CMAKE_MINIMUM_REQUIRED(VERSION 3.10 FATAL_ERROR)
|
CMAKE_MINIMUM_REQUIRED(VERSION 3.10 FATAL_ERROR)
|
||||||
cmake_policy(SET CMP0074 NEW)
|
cmake_policy(SET CMP0074 NEW)
|
||||||
cmake_policy(SET CMP0091 NEW)
|
cmake_policy(SET CMP0091 NEW)
|
||||||
|
cmake_policy(SET CMP0112 NEW)
|
||||||
|
|
||||||
PROJECT(protobuf-c C CXX)
|
PROJECT(protobuf-c C CXX)
|
||||||
|
|
||||||
@ -15,100 +16,15 @@ if (MSVC AND NOT BUILD_SHARED_LIBS)
|
|||||||
endif (MSVC AND NOT BUILD_SHARED_LIBS)
|
endif (MSVC AND NOT BUILD_SHARED_LIBS)
|
||||||
|
|
||||||
FIND_PACKAGE(Protobuf REQUIRED)
|
FIND_PACKAGE(Protobuf REQUIRED)
|
||||||
|
file(REAL_PATH "${PROTOBUF_INCLUDE_DIR}" PROTOBUF_INCLUDE_DIR)
|
||||||
INCLUDE_DIRECTORIES(${PROTOBUF_INCLUDE_DIR})
|
INCLUDE_DIRECTORIES(${PROTOBUF_INCLUDE_DIR})
|
||||||
|
|
||||||
|
find_package(absl REQUIRED)
|
||||||
|
|
||||||
# for static protobuf libraries include the dependencies
|
# for static protobuf libraries include the dependencies
|
||||||
if (Protobuf_USE_STATIC_LIBS)
|
if (Protobuf_USE_STATIC_LIBS)
|
||||||
find_package(absl REQUIRED)
|
get_property(protobuf_ABSL_USED_TARGETS DIRECTORY "${CMAKE_CURRENT_LIST_DIR}" PROPERTY IMPORTED_TARGETS)
|
||||||
|
list(FILTER protobuf_ABSL_USED_TARGETS INCLUDE REGEX "absl::")
|
||||||
set(protobuf_ABSL_USED_TARGETS
|
|
||||||
absl::log_severity
|
|
||||||
absl::raw_logging_internal
|
|
||||||
absl::spinlock_wait
|
|
||||||
absl::malloc_internal
|
|
||||||
absl::base
|
|
||||||
absl::throw_delegate
|
|
||||||
absl::scoped_set_env
|
|
||||||
absl::strerror
|
|
||||||
absl::hashtablez_sampler
|
|
||||||
absl::raw_hash_set
|
|
||||||
absl::crc_cpu_detect
|
|
||||||
absl::crc_internal
|
|
||||||
absl::crc32c
|
|
||||||
absl::crc_cord_state
|
|
||||||
absl::stacktrace
|
|
||||||
absl::symbolize
|
|
||||||
absl::examine_stack
|
|
||||||
absl::failure_signal_handler
|
|
||||||
absl::debugging_internal
|
|
||||||
absl::demangle_internal
|
|
||||||
absl::leak_check
|
|
||||||
absl::flags_program_name
|
|
||||||
absl::flags_config
|
|
||||||
absl::flags_marshalling
|
|
||||||
absl::flags_commandlineflag_internal
|
|
||||||
absl::flags_commandlineflag
|
|
||||||
absl::flags_private_handle_accessor
|
|
||||||
absl::flags_reflection
|
|
||||||
absl::flags_internal
|
|
||||||
absl::flags
|
|
||||||
absl::flags_usage_internal
|
|
||||||
absl::flags_usage
|
|
||||||
absl::flags_parse
|
|
||||||
absl::hash
|
|
||||||
absl::city
|
|
||||||
absl::low_level_hash
|
|
||||||
absl::log_internal_check_op
|
|
||||||
absl::log_internal_conditions
|
|
||||||
absl::log_internal_format
|
|
||||||
absl::log_internal_globals
|
|
||||||
absl::log_internal_proto
|
|
||||||
absl::log_internal_message
|
|
||||||
absl::log_internal_log_sink_set
|
|
||||||
absl::log_internal_nullguard
|
|
||||||
absl::die_if_null
|
|
||||||
absl::log_flags
|
|
||||||
absl::log_globals
|
|
||||||
absl::log_initialize
|
|
||||||
absl::log_entry
|
|
||||||
absl::log_sink
|
|
||||||
absl::log_internal_fnmatch
|
|
||||||
absl::int128
|
|
||||||
absl::exponential_biased
|
|
||||||
absl::periodic_sampler
|
|
||||||
absl::random_distributions
|
|
||||||
absl::random_seed_gen_exception
|
|
||||||
absl::random_seed_sequences
|
|
||||||
absl::random_internal_seed_material
|
|
||||||
absl::random_internal_pool_urbg
|
|
||||||
absl::random_internal_platform
|
|
||||||
absl::random_internal_randen
|
|
||||||
absl::random_internal_randen_slow
|
|
||||||
absl::random_internal_randen_hwaes
|
|
||||||
absl::random_internal_randen_hwaes_impl
|
|
||||||
absl::random_internal_distribution_test_util
|
|
||||||
absl::status
|
|
||||||
absl::statusor
|
|
||||||
absl::string_view
|
|
||||||
absl::strings
|
|
||||||
absl::strings_internal
|
|
||||||
absl::str_format_internal
|
|
||||||
absl::cord_internal
|
|
||||||
absl::cordz_functions
|
|
||||||
absl::cordz_handle
|
|
||||||
absl::cordz_info
|
|
||||||
absl::cordz_sample_token
|
|
||||||
absl::cord
|
|
||||||
absl::graphcycles_internal
|
|
||||||
absl::kernel_timeout_internal
|
|
||||||
absl::synchronization
|
|
||||||
absl::time
|
|
||||||
absl::civil_time
|
|
||||||
absl::time_zone
|
|
||||||
absl::bad_any_cast_impl
|
|
||||||
absl::bad_optional_access
|
|
||||||
absl::bad_variant_access
|
|
||||||
)
|
|
||||||
|
|
||||||
find_package(utf8_range REQUIRED)
|
find_package(utf8_range REQUIRED)
|
||||||
|
|
||||||
@ -116,6 +32,8 @@ if (Protobuf_USE_STATIC_LIBS)
|
|||||||
utf8_range::utf8_validity
|
utf8_range::utf8_validity
|
||||||
utf8_range::utf8_range
|
utf8_range::utf8_range
|
||||||
)
|
)
|
||||||
|
elseif(WIN32)
|
||||||
|
set(protobuf_ABSL_USED_TARGETS absl::abseil_dll)
|
||||||
endif()
|
endif()
|
||||||
|
|
||||||
#options
|
#options
|
||||||
@ -202,15 +120,46 @@ if (MSVC AND NOT BUILD_SHARED_LIBS)
|
|||||||
endforeach(flag_var)
|
endforeach(flag_var)
|
||||||
endif (MSVC AND NOT BUILD_SHARED_LIBS)
|
endif (MSVC AND NOT BUILD_SHARED_LIBS)
|
||||||
|
|
||||||
|
if(WIN32)
|
||||||
|
# Modify the environment to hint protoc where the plugin is
|
||||||
|
# prepend to PATH because github host runners have abseil dll pre-installed.
|
||||||
|
# Use %PATH% instead of actually inserting it. On Github runners the PATH is so long
|
||||||
|
# it makes the NMake generated commands to fail.
|
||||||
|
set(OS_PATH_VARIABLE "$<TARGET_FILE_DIR:protoc-gen-c>\\;%PATH%")
|
||||||
|
|
||||||
|
if(BUILD_SHARED_LIBS)
|
||||||
|
set(OS_PATH_VARIABLE "$<TARGET_FILE_DIR:protobuf::protoc>\\;${OS_PATH_VARIABLE}")
|
||||||
|
set(OS_PATH_VARIABLE "$<TARGET_FILE_DIR:absl::abseil_dll>\\;${OS_PATH_VARIABLE}")
|
||||||
|
endif()
|
||||||
|
|
||||||
|
else(WIN32)
|
||||||
|
|
||||||
|
set(OS_PATH_VARIABLE "$ENV{PATH}" )
|
||||||
|
set(OS_PATH_VARIABLE "$<TARGET_FILE_DIR:protoc-gen-c>:${OS_PATH_VARIABLE}")
|
||||||
|
|
||||||
|
endif(WIN32)
|
||||||
|
|
||||||
IF(BUILD_PROTOC)
|
IF(BUILD_PROTOC)
|
||||||
SET(CMAKE_CXX_STANDARD 17)
|
SET(CMAKE_CXX_STANDARD 17)
|
||||||
SET(CMAKE_CXX_STANDARD_REQUIRED ON)
|
SET(CMAKE_CXX_STANDARD_REQUIRED ON)
|
||||||
SET(CMAKE_CXX_EXTENSIONS OFF)
|
SET(CMAKE_CXX_EXTENSIONS OFF)
|
||||||
ADD_CUSTOM_COMMAND(OUTPUT protobuf-c/protobuf-c.pb.cc protobuf-c/protobuf-c.pb.h
|
|
||||||
COMMAND ${PROTOBUF_PROTOC_EXECUTABLE}
|
add_custom_target(protoc-generated-files
|
||||||
ARGS --cpp_out ${CMAKE_CURRENT_BINARY_DIR} -I${PROTOBUF_INCLUDE_DIR} -I${MAIN_DIR} ${MAIN_DIR}/protobuf-c/protobuf-c.proto)
|
COMMAND ${CMAKE_COMMAND} -E env PATH="${OS_PATH_VARIABLE}" -- ${PROTOBUF_PROTOC_EXECUTABLE}
|
||||||
FILE(GLOB PROTOC_GEN_C_SRC ${MAIN_DIR}/protoc-c/*.h ${MAIN_DIR}/protoc-c/*.cc )
|
--cpp_out ${CMAKE_CURRENT_BINARY_DIR} -I${PROTOBUF_INCLUDE_DIR}
|
||||||
ADD_EXECUTABLE(protoc-gen-c ${PROTOC_GEN_C_SRC} protobuf-c/protobuf-c.pb.cc protobuf-c/protobuf-c.pb.h)
|
-I${MAIN_DIR} ${MAIN_DIR}/protobuf-c/protobuf-c.proto
|
||||||
|
COMMENT Running protoc on ${MAIN_DIR}/protobuf-c/protobuf-c.proto
|
||||||
|
BYPRODUCTS protobuf-c/protobuf-c.pb.cc protobuf-c/protobuf-c.pb.h
|
||||||
|
SOURCES ${MAIN_DIR}/protobuf-c/protobuf-c.proto
|
||||||
|
)
|
||||||
|
|
||||||
|
file(GLOB PROTOC_GEN_C_SRC ${MAIN_DIR}/protoc-c/*.h ${MAIN_DIR}/protoc-c/*.cc )
|
||||||
|
add_executable(protoc-gen-c
|
||||||
|
${PROTOC_GEN_C_SRC}
|
||||||
|
${CMAKE_CURRENT_BINARY_DIR}/protobuf-c/protobuf-c.pb.cc
|
||||||
|
${CMAKE_CURRENT_BINARY_DIR}/protobuf-c/protobuf-c.pb.h
|
||||||
|
)
|
||||||
|
add_dependencies(protoc-gen-c protoc-generated-files)
|
||||||
target_include_directories(protoc-gen-c
|
target_include_directories(protoc-gen-c
|
||||||
PUBLIC
|
PUBLIC
|
||||||
$<BUILD_INTERFACE:${MAIN_DIR}>
|
$<BUILD_INTERFACE:${MAIN_DIR}>
|
||||||
@ -232,33 +181,13 @@ IF (MSVC AND BUILD_SHARED_LIBS)
|
|||||||
FILE(COPY ${PROTOBUF_DLLS} DESTINATION ${CMAKE_CURRENT_BINARY_DIR})
|
FILE(COPY ${PROTOBUF_DLLS} DESTINATION ${CMAKE_CURRENT_BINARY_DIR})
|
||||||
ENDIF (MSVC AND BUILD_SHARED_LIBS)
|
ENDIF (MSVC AND BUILD_SHARED_LIBS)
|
||||||
|
|
||||||
if(WIN32)
|
FUNCTION(GENERATE_TEST_SOURCES PROTO_FILE SRC HDR)
|
||||||
|
ADD_CUSTOM_COMMAND(OUTPUT ${SRC} ${HDR}
|
||||||
# modify the environment to hint protoc where the plugin is
|
COMMAND ${CMAKE_COMMAND}
|
||||||
string(REGEX MATCHALL "[A-Z]:[^;:]+;" PATH_VARIABLE "$ENV{PATH}" )
|
ARGS -E env PATH="${OS_PATH_VARIABLE}" -- ${PROTOBUF_PROTOC_EXECUTABLE}
|
||||||
foreach (itvar ${PATH_VARIABLE})
|
--plugin=$<TARGET_FILE_NAME:protoc-gen-c> -I${MAIN_DIR} ${PROTO_FILE} --c_out=${CMAKE_CURRENT_BINARY_DIR}
|
||||||
string(REPLACE ";" "" itvar ${itvar})
|
DEPENDS protoc-gen-c)
|
||||||
set(WINDOWS_PATH_VARIABLE "${WINDOWS_PATH_VARIABLE}\\;${itvar}" )
|
ENDFUNCTION()
|
||||||
endforeach( itvar )
|
|
||||||
|
|
||||||
FUNCTION(GENERATE_TEST_SOURCES PROTO_FILE SRC HDR)
|
|
||||||
ADD_CUSTOM_COMMAND(OUTPUT ${SRC} ${HDR}
|
|
||||||
COMMAND ${CMAKE_COMMAND}
|
|
||||||
ARGS -E env PATH="${WINDOWS_PATH_VARIABLE}\\;$<TARGET_FILE_DIR:protoc-gen-c>" -- ${PROTOBUF_PROTOC_EXECUTABLE}
|
|
||||||
--plugin=$<TARGET_FILE_NAME:protoc-gen-c> -I${MAIN_DIR} ${PROTO_FILE} --c_out=${CMAKE_CURRENT_BINARY_DIR}
|
|
||||||
DEPENDS protoc-gen-c)
|
|
||||||
ENDFUNCTION()
|
|
||||||
|
|
||||||
else(WIN32)
|
|
||||||
|
|
||||||
FUNCTION(GENERATE_TEST_SOURCES PROTO_FILE SRC HDR)
|
|
||||||
ADD_CUSTOM_COMMAND(OUTPUT ${SRC} ${HDR}
|
|
||||||
COMMAND ${PROTOBUF_PROTOC_EXECUTABLE}
|
|
||||||
ARGS --plugin=$<TARGET_FILE:protoc-gen-c> -I${MAIN_DIR} ${PROTO_FILE} --c_out=${CMAKE_CURRENT_BINARY_DIR}
|
|
||||||
DEPENDS protoc-gen-c)
|
|
||||||
ENDFUNCTION()
|
|
||||||
|
|
||||||
endif(WIN32)
|
|
||||||
|
|
||||||
IF(BUILD_TESTS)
|
IF(BUILD_TESTS)
|
||||||
ENABLE_TESTING()
|
ENABLE_TESTING()
|
||||||
@ -269,8 +198,10 @@ ADD_EXECUTABLE(test-generated-code ${TEST_DIR}/generated-code/test-generated-cod
|
|||||||
TARGET_LINK_LIBRARIES(test-generated-code protobuf-c)
|
TARGET_LINK_LIBRARIES(test-generated-code protobuf-c)
|
||||||
|
|
||||||
ADD_CUSTOM_COMMAND(OUTPUT t/test-full.pb.cc t/test-full.pb.h
|
ADD_CUSTOM_COMMAND(OUTPUT t/test-full.pb.cc t/test-full.pb.h
|
||||||
COMMAND ${PROTOBUF_PROTOC_EXECUTABLE}
|
COMMAND ${CMAKE_COMMAND}
|
||||||
ARGS --cpp_out ${CMAKE_CURRENT_BINARY_DIR} -I${MAIN_DIR} ${TEST_DIR}/test-full.proto)
|
ARGS -E env PATH="${OS_PATH_VARIABLE}" -- ${PROTOBUF_PROTOC_EXECUTABLE}
|
||||||
|
--cpp_out ${CMAKE_CURRENT_BINARY_DIR} -I${MAIN_DIR} ${TEST_DIR}/test-full.proto
|
||||||
|
)
|
||||||
|
|
||||||
GENERATE_TEST_SOURCES(${TEST_DIR}/test-full.proto t/test-full.pb-c.c t/test-full.pb-c.h)
|
GENERATE_TEST_SOURCES(${TEST_DIR}/test-full.proto t/test-full.pb-c.c t/test-full.pb-c.h)
|
||||||
|
|
||||||
@ -286,17 +217,17 @@ ENDIF (MSVC AND BUILD_SHARED_LIBS)
|
|||||||
|
|
||||||
FILE(MAKE_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR}/t/generated-code2)
|
FILE(MAKE_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR}/t/generated-code2)
|
||||||
ADD_CUSTOM_COMMAND(OUTPUT t/generated-code2/test-full-cxx-output.inc
|
ADD_CUSTOM_COMMAND(OUTPUT t/generated-code2/test-full-cxx-output.inc
|
||||||
COMMAND cxx-generate-packed-data ">t/generated-code2/test-full-cxx-output.inc"
|
COMMAND ${CMAKE_COMMAND}
|
||||||
DEPENDS cxx-generate-packed-data
|
ARGS -E env PATH="${OS_PATH_VARIABLE}" -- cxx-generate-packed-data
|
||||||
)
|
">t/generated-code2/test-full-cxx-output.inc"
|
||||||
|
DEPENDS cxx-generate-packed-data
|
||||||
|
)
|
||||||
|
|
||||||
GENERATE_TEST_SOURCES(${TEST_DIR}/test-optimized.proto t/test-optimized.pb-c.c t/test-optimized.pb-c.h)
|
GENERATE_TEST_SOURCES(${TEST_DIR}/test-optimized.proto t/test-optimized.pb-c.c t/test-optimized.pb-c.h)
|
||||||
|
|
||||||
ADD_EXECUTABLE(test-generated-code2 ${TEST_DIR}/generated-code2/test-generated-code2.c t/generated-code2/test-full-cxx-output.inc t/test-full.pb-c.h t/test-full.pb-c.c t/test-optimized.pb-c.h t/test-optimized.pb-c.c)
|
ADD_EXECUTABLE(test-generated-code2 ${TEST_DIR}/generated-code2/test-generated-code2.c t/generated-code2/test-full-cxx-output.inc t/test-full.pb-c.h t/test-full.pb-c.c t/test-optimized.pb-c.h t/test-optimized.pb-c.c)
|
||||||
TARGET_LINK_LIBRARIES(test-generated-code2 protobuf-c)
|
TARGET_LINK_LIBRARIES(test-generated-code2 protobuf-c)
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
GENERATE_TEST_SOURCES(${TEST_DIR}/issue220/issue220.proto t/issue220/issue220.pb-c.c t/issue220/issue220.pb-c.h)
|
GENERATE_TEST_SOURCES(${TEST_DIR}/issue220/issue220.proto t/issue220/issue220.pb-c.c t/issue220/issue220.pb-c.h)
|
||||||
ADD_EXECUTABLE(test-issue220 ${TEST_DIR}/issue220/issue220.c t/issue220/issue220.pb-c.c t/issue220/issue220.pb-c.h)
|
ADD_EXECUTABLE(test-issue220 ${TEST_DIR}/issue220/issue220.c t/issue220/issue220.pb-c.c t/issue220/issue220.pb-c.h)
|
||||||
TARGET_LINK_LIBRARIES(test-issue220 protobuf-c)
|
TARGET_LINK_LIBRARIES(test-issue220 protobuf-c)
|
||||||
@ -394,5 +325,4 @@ endif(WIN32)
|
|||||||
|
|
||||||
ENDIF()
|
ENDIF()
|
||||||
|
|
||||||
|
|
||||||
INCLUDE(CPack)
|
INCLUDE(CPack)
|
||||||
|
Loading…
x
Reference in New Issue
Block a user