You've already forked macports-ports
mirror of
https://github.com/macports/macports-ports.git
synced 2026-07-12 18:20:25 -07:00
141 lines
5.0 KiB
Tcl
141 lines
5.0 KiB
Tcl
# -*- coding: utf-8; mode: tcl; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- vim:fenc=utf-8:ft=tcl:et:sw=4:ts=4:sts=4
|
|
|
|
PortSystem 1.0
|
|
PortGroup github 1.0
|
|
PortGroup cmake 1.1
|
|
PortGroup legacysupport 1.1
|
|
|
|
# clock_gettime needed for abseil
|
|
# https://github.com/macports/macports-ports/pull/19905#issuecomment-1680281240
|
|
legacysupport.newest_darwin_requires_legacy 15
|
|
|
|
set release_version \
|
|
29.5
|
|
|
|
name protobuf5-cpp
|
|
version 5.${release_version}
|
|
revision 1
|
|
github.setup protocolbuffers protobuf ${version} v
|
|
github.tarball_from releases
|
|
git.branch v${release_version}
|
|
|
|
categories devel
|
|
license BSD
|
|
maintainers {mascguy @mascguy} openmaintainer
|
|
|
|
description Encode data in an efficient yet extensible format.
|
|
long_description \
|
|
Google Protocol Buffers are a flexible, efficient, \
|
|
automated mechanism for serializing structured data -- \
|
|
think XML, but smaller, faster, and simpler. You \
|
|
define how you want your data to be structured once, \
|
|
then you can use special generated source code to \
|
|
easily write and read your structured data to and from \
|
|
a variety of data streams and using a variety of \
|
|
languages. You can even update your data structure \
|
|
without breaking deployed programs that are compiled \
|
|
against the "old" format. You specify how you want \
|
|
the information you're serializing to be structured by \
|
|
defining protocol buffer message types in .proto \
|
|
files. Each protocol buffer message is a small \
|
|
logical record of information, containing a series of \
|
|
name-value pairs.
|
|
homepage https://protobuf.dev
|
|
|
|
checksums rmd160 0e4e07d60de548240c3f52777332c6f6626d42d7 \
|
|
sha256 a191d2afdd75997ba59f62019425016703daed356a9d92f7425f4741439ae544 \
|
|
size 9338935
|
|
|
|
distname protobuf-${release_version}
|
|
dist_subdir protobuf-cpp
|
|
worksrcdir protobuf-${release_version}
|
|
|
|
# Upstream adds zlib include - which is ${prefix}/include - before search path
|
|
# of 3rd-party components, like gtest, gmock, etc. That causes the external
|
|
# versions of those to be pulled in, and the build fails.
|
|
# So don't let the project cmake add zlib; already added (last) by base.
|
|
patchfiles-append cmake-zlib-include.diff
|
|
|
|
# Revert a breakage from dropping mach_time in:
|
|
# https://github.com/protocolbuffers/protobuf/commit/a8a9bd2e4990fd5e0f0098bdfbe62bc00783eab7
|
|
patchfiles-append patch-unbreak-time.diff
|
|
|
|
# Backport for compatibility with abseil 20250512.rc1 and later.
|
|
patchfiles-append patch-no_abseil_if_constexpr.diff
|
|
|
|
compiler.cxx_standard 2017
|
|
compiler.thread_local_storage yes
|
|
# error: constexpr constructor never produces a constant expression [-Winvalid-constexpr]
|
|
compiler.blacklist {clang < 900}
|
|
|
|
if { [string match *clang* ${configure.compiler}] } {
|
|
# Quiet deprecation warnings
|
|
configure.cxxflags-append \
|
|
-Wno-deprecated-declarations \
|
|
-Wno-error=unknown-warning-option \
|
|
-Wno-unknown-warning-option
|
|
}
|
|
|
|
# Clear optflags; controlled by project, via cmake build type
|
|
configure.optflags
|
|
|
|
if {[variant_isset debug]} {
|
|
cmake.build_type Debug
|
|
} else {
|
|
cmake.build_type RelWithDebInfo
|
|
}
|
|
|
|
cmake.install_prefix \
|
|
${prefix}/libexec/${name}
|
|
|
|
depends_lib-append \
|
|
port:abseil \
|
|
port:zlib
|
|
|
|
configure.args-append \
|
|
-DBUILD_SHARED_LIBS:BOOL=ON \
|
|
-Dprotobuf_ABSL_PROVIDER=package \
|
|
-Dprotobuf_BUILD_LIBPROTOC:BOOL=ON \
|
|
-Dprotobuf_BUILD_PROTOC_BINARIES:BOOL=ON \
|
|
-Dprotobuf_BUILD_TESTS:BOOL=OFF
|
|
|
|
post-destroot {
|
|
set docdir ${destroot}${prefix}/share/doc/${name}
|
|
|
|
xinstall -d -m 755 ${docdir}
|
|
|
|
foreach f {CONTRIBUTING.md CONTRIBUTORS.txt LICENSE README.md SECURITY.md editors examples} {
|
|
file copy ${worksrcpath}/${f} ${docdir}
|
|
}
|
|
}
|
|
|
|
proc port_test_ver_check {p_name p_ver p_rev} {
|
|
if { [catch {set port_ver_info [lindex [registry_active ${p_name}] 0]}] } {
|
|
error "Tests require that ${p_name} be active; install, then re-run tests"
|
|
} else {
|
|
set test_ver ${p_ver}_${p_rev}
|
|
set port_ver [lindex ${port_ver_info} 1]_[lindex ${port_ver_info} 2]
|
|
ui_info "port_test_ver_check: ${p_name}: test_ver: ${test_ver}; port_ver: ${port_ver}"
|
|
|
|
if { [vercmp ${port_ver} ${test_ver}] != 0 } {
|
|
error "Tests require installed version of ${p_name} to match port; update, then re-run tests"
|
|
}
|
|
}
|
|
}
|
|
|
|
variant tests description {Build with tests enabled} {
|
|
pre-configure {
|
|
port_test_ver_check ${subport} ${version} ${revision}
|
|
}
|
|
|
|
configure.args-replace \
|
|
-Dprotobuf_BUILD_TESTS:BOOL=OFF \
|
|
-Dprotobuf_BUILD_TESTS:BOOL=ON
|
|
|
|
test.run yes
|
|
test.target check
|
|
}
|
|
|
|
livecheck.version ${release_version}
|
|
github.livecheck.regex {(2[6-9]\.[0-9]+)}
|