# -*- 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 compiler_blacklist_versions 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 # NOTE: For any version number change, also # NOTE: Update py-protobuf3 version's number to match # NOTE: For a minor or major version number change, also # NOTE: Revbump et, protobuf-c, mosh and py-onnx set release_version \ 24.4 name protobuf3-cpp-upstream github.setup protocolbuffers protobuf 3.${release_version} v git.branch v${release_version} revision 4 categories devel maintainers {mascguy @mascguy} openmaintainer license BSD 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 e74e942bc2c9859706cc92d0d9b20e3a817ec4c3 \ sha256 616bb3536ac1fff3fb1a141450fa28b875e985712170ea7f1bfe5e5fc41e2cd8 \ size 5180235 github.tarball_from releases distname protobuf-${release_version} dist_subdir protobuf3-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 compiler.cxx_standard 2011 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}${cmake.install_prefix}/share/doc 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 {([0-9.]+)}