Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 1 addition & 1 deletion .devcontainer
Submodule .devcontainer updated 84 files
+1 −0 .gitattributes
+65 −0 .github/actions/build-image-context-tag/action.yml
+74 −29 .github/actions/cmake-build/action.yml
+32 −0 .github/actions/compare-cmake-presets/action.yml
+201 −0 .github/actions/compare-cmake-presets/compare.py
+51 −0 .github/actions/docker-push-with-retry/action.yml
+358 −0 .github/actions/externpro-deps-configure/action.yml
+48 −0 .github/actions/externpro-validate/action.yml
+29 −0 .github/actions/gh-retry/gh-retry.sh
+79 −0 .github/actions/ghcr-access/action.yml
+44 −0 .github/actions/git-am-patches/action.yml
+19 −0 .github/actions/git-configure-bot/action.yml
+42 −0 .github/actions/labels-mgmt/action.yml
+91 −0 .github/actions/pr-close-superseded/action.yml
+116 −0 .github/actions/release-tag-intent/action.yml
+0 −8 .github/actions/sync-caller-workflows/action.yml
+241 −508 .github/actions/sync-caller-workflows/sync.sh
+19 −0 .github/aw/actions-lock.json
+60 −0 .github/docs/README.md
+34 −0 .github/docs/architecture-overview.md
+ .github/docs/assets/org_01_actions-secrets.png
+ .github/docs/assets/org_02_new-secret.png
+ .github/docs/assets/org_03_secrets-populated.png
+ .github/docs/assets/pat_01_new.png
+ .github/docs/assets/pat_02_permissions.png
+ .github/docs/assets/pat_03_generate-token.png
+ .github/docs/assets/pat_04_copy-token.png
+ .github/docs/assets/repo_01_actions-secrets.png
+ .github/docs/assets/repo_02_new-secret.png
+ .github/docs/assets/repo_03_secrets-populated.png
+91 −0 .github/docs/build-customizations.md
+117 −0 .github/docs/caller-workflows.md
+50 −0 .github/docs/release-flow.md
+99 −0 .github/docs/reusable-workflows.md
+113 −0 .github/docs/secrets-and-tokens.md
+42 −0 .github/docs/supply-chain.md
+0 −2 .github/release-tag.yml.example
+8 −4 .github/wf-templates/xpbuild.yml
+12 −0 .github/wf-templates/xpinit.yml
+1 −1 .github/wf-templates/xprelease.yml
+2 −2 .github/wf-templates/xptag.yml
+3 −2 .github/wf-templates/xpupdate.yml
+7 −288 .github/workflows/README.md
+146 −39 .github/workflows/build-linux.yml
+8 −9 .github/workflows/build-macos.yml
+24 −10 .github/workflows/build-windows.yml
+1,203 −0 .github/workflows/create-draft-release-on-tag.lock.yml
+281 −0 .github/workflows/create-draft-release-on-tag.md
+353 −0 .github/workflows/init-externpro.yml
+105 −28 .github/workflows/release-from-build.yml
+15 −25 .github/workflows/tag-release.yml
+151 −429 .github/workflows/update-externpro.yml
+0 −288 .windsurf/workflows/manifestUpdate.md
+148 −46 README.md
+70 −64 cmake/README.md
+345 −279 cmake/deps.svg
+32 −0 cmake/docs/README.md
+70 −0 cmake/docs/classified-sources.md
+27 −0 cmake/docs/cmakeup.md
+54 −0 cmake/docs/dependency-provider.md
+40 −0 cmake/docs/diff-types.md
+115 −0 cmake/docs/download-and-extract.md
+127 −0 cmake/docs/extern-package.md
+85 −0 cmake/docs/how-to-adopt-externpro.md
+64 −0 cmake/docs/packaging.md
+2 −1 cmake/presets/CMakePresets.json
+4 −1 cmake/presets/xpDarwinNinja.json
+4 −1 cmake/presets/xpLinuxNinja.json
+4 −1 cmake/presets/xpLinuxNinjaTargets.json
+183 −0 cmake/presets/xpMswVs2022.json
+183 −0 cmake/presets/xpMswVs2026.json
+0 −157 cmake/presets/xpWindowsVs2019.json
+0 −180 cmake/presets/xpWindowsVs2022.json
+113 −91 cmake/pros.cmake
+0 −106 cmake/pros.md
+1 −0 cmake/xpdeps.cmake.in
+842 −129 cmake/xpfunmac.cmake
+2 −4 cmake/xpuse.cmake.in
+1 −0 cmake/xpusext.cmake.in
+1 −1 funcs.sh
+0 −0 scripts/enable-systemctl.sh
+0 −0 scripts/git-lfs-check.sh
+0 −0 scripts/wslresolv.sh
+11 −0 xpro-dev.code-workspace
4 changes: 4 additions & 0 deletions .github/release-tag.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,4 @@
{
"message": "xpro version 3.14.0.6 tag",
"tag": "xpv3.14.0.6"
}
2 changes: 0 additions & 2 deletions .github/release-tag.yml

This file was deleted.

12 changes: 8 additions & 4 deletions .github/workflows/xpbuild.yml
Original file line number Diff line number Diff line change
Expand Up @@ -14,11 +14,15 @@ jobs:
contents: read
pull-requests: write
packages: write
uses: externpro/externpro/.github/workflows/build-linux.yml@25.07.6
secrets: inherit
uses: externpro/externpro/.github/workflows/build-linux.yml@26.01.1
secrets:
automation_token: ${{ secrets.GHCR_TOKEN }}
with: {}
macos:
uses: externpro/externpro/.github/workflows/build-macos.yml@25.07.6
uses: externpro/externpro/.github/workflows/build-macos.yml@26.01.1
secrets: inherit
with: {}
windows:
uses: externpro/externpro/.github/workflows/build-windows.yml@25.07.6
uses: externpro/externpro/.github/workflows/build-windows.yml@26.01.1
secrets: inherit
with: {}
12 changes: 12 additions & 0 deletions .github/workflows/xpinit.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,12 @@
name: xpInit externpro
permissions:
contents: write
pull-requests: write
packages: write
on:
workflow_dispatch:
jobs:
init:
uses: externpro/externpro/.github/workflows/init-externpro.yml@main
secrets:
automation_token: ${{ secrets.XPRO_TOKEN }}
2 changes: 1 addition & 1 deletion .github/workflows/xprelease.yml
Original file line number Diff line number Diff line change
Expand Up @@ -34,7 +34,7 @@ jobs:
# Upload build artifacts as release assets
release-from-build:
if: github.event_name == 'workflow_dispatch'
uses: externpro/externpro/.github/workflows/release-from-build.yml@25.07.6
uses: externpro/externpro/.github/workflows/release-from-build.yml@26.01.1
with:
workflow_run_url: ${{ github.event.inputs.workflow_run_url }}
permissions:
Expand Down
4 changes: 2 additions & 2 deletions .github/workflows/xptag.yml
Original file line number Diff line number Diff line change
Expand Up @@ -8,9 +8,9 @@ on:
jobs:
tag:
if: ${{ github.event.pull_request.merged == true && github.event.pull_request.base.ref == 'xpro' && contains(github.event.pull_request.labels.*.name, 'release:tag') }}
uses: externpro/externpro/.github/workflows/tag-release.yml@25.07.6
uses: externpro/externpro/.github/workflows/tag-release.yml@26.01.1
with:
merge_sha: ${{ github.event.pull_request.merge_commit_sha }}
pr_number: ${{ github.event.pull_request.number }}
secrets:
workflow_write_token: ${{ secrets.XPUPDATE_TOKEN }}
automation_token: ${{ secrets.XPRO_TOKEN }}
3 changes: 1 addition & 2 deletions CMakeLists.txt
Original file line number Diff line number Diff line change
@@ -1,4 +1,3 @@
cmake_minimum_required(VERSION 3.1.3...3.31)
set(CMAKE_PROJECT_TOP_LEVEL_INCLUDES .devcontainer/cmake/xproinc.cmake)
cmake_minimum_required(VERSION 3.1.3...4.3)
project(protobuf_root)
add_subdirectory(cmake)
3 changes: 2 additions & 1 deletion CMakePresets.json
Original file line number Diff line number Diff line change
Expand Up @@ -3,6 +3,7 @@
"include": [
".devcontainer/cmake/presets/xpLinuxNinja.json",
".devcontainer/cmake/presets/xpDarwinNinja.json",
".devcontainer/cmake/presets/xpWindowsVs2022.json"
".devcontainer/cmake/presets/xpMswVs2022.json",
".devcontainer/cmake/presets/xpMswVs2026.json"
]
}
2 changes: 1 addition & 1 deletion CMakePresetsBase.json
Original file line number Diff line number Diff line change
Expand Up @@ -6,7 +6,7 @@
"hidden": true,
"binaryDir": "${sourceDir}/_bld-${presetName}",
"cacheVariables": {
"XP_NAMESPACE": "xpro"
"CMAKE_EXPERIMENTAL_GENERATE_SBOM": "ca494ed3-b261-4205-a01f-603c95e4cae0"
}
}
],
Expand Down
57 changes: 30 additions & 27 deletions cmake/CMakeLists.txt
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
# Minimum CMake required
cmake_minimum_required(VERSION 3.1.3...3.31)
cmake_minimum_required(VERSION 3.1.3...4.3)

if(protobuf_VERBOSE)
message(STATUS "Protocol Buffers Configuring...")
Expand Down Expand Up @@ -56,8 +56,13 @@ cmake_dependent_option(protobuf_MSVC_STATIC_RUNTIME "Link static runtime librari
"NOT protobuf_BUILD_SHARED_LIBS" OFF)
set(protobuf_WITH_ZLIB_DEFAULT ON)
option(protobuf_WITH_ZLIB "Build with zlib support" ${protobuf_WITH_ZLIB_DEFAULT})
if(DEFINED CMAKE_DEBUG_POSTFIX)
set(protobuf_DEBUG_POSTFIX ${CMAKE_DEBUG_POSTFIX}
CACHE STRING "Default debug postfix")
else()
set(protobuf_DEBUG_POSTFIX "d"
CACHE STRING "Default debug postfix")
endif()
mark_as_advanced(protobuf_DEBUG_POSTFIX)
# User options
include(protobuf-options.cmake)
Expand Down Expand Up @@ -116,32 +121,6 @@ if(protobuf_VERBOSE)
message(STATUS "]")
endif()

if(DEFINED XP_NAMESPACE)
set(CMAKE_NAMESPACE ${XP_NAMESPACE})
string(JOIN "\n" EXT1
"set(FPHSA_NAME_MISMATCHED TRUE) # FIND_PACKAGE_HANDLE_STANDARD_ARGS NAME_MISMATCHED"
"set(protobuf_MODULE_COMPATIBLE ON) # necessary for GENERATE_PROTOBUF_CPP"
""
)
string(JOIN "\n" EXT3
"set(PROTOBUF_PROTOC_EXECUTABLE ${CMAKE_NAMESPACE}::protoc) # TRICKY: match name in -module.cmake"
"get_target_property(PROTOBUF_INCLUDE_DIR ${CMAKE_NAMESPACE}::libprotobuf INTERFACE_INCLUDE_DIRECTORIES)"
"list(APPEND reqVars PROTOBUF_INCLUDE_DIR PROTOBUF_PROTOC_EXECUTABLE)"
""
)
xpExternPackage(REPO_NAME protobuf NAMESPACE ${XP_NAMESPACE} ALIAS_NAMESPACE protobuf
TARGETS_FILE protobuf-config EXE protoc LIBRARIES libprotobuf
BASE ${protobuf_BASE_TAG} XPDIFF "patch" DEPS zlib
WEB "https://developers.google.com/protocol-buffers/" UPSTREAM "github.com/protocolbuffers/protobuf"
DESC "language-neutral, platform-neutral extensible mechanism for serializing structured data"
LICENSE "[BSD-3-Clause](https://github.com/protocolbuffers/protobuf/blob/v3.14.0/LICENSE 'BSD 3-Clause New or Revised License')"
)
set(CMAKE_OPT_INSTALL FALSE)
else()
set(CMAKE_NAMESPACE protobuf)
set(CMAKE_OPT_INSTALL TRUE)
endif()

add_definitions(-DGOOGLE_PROTOBUF_CMAKE_BUILD)

find_package(Threads REQUIRED)
Expand Down Expand Up @@ -312,6 +291,30 @@ if (protobuf_BUILD_CONFORMANCE)
include(conformance.cmake)
endif (protobuf_BUILD_CONFORMANCE)

if(COMMAND xpExternPackage)
string(JOIN "\n" EXT1
"set(FPHSA_NAME_MISMATCHED TRUE) # FIND_PACKAGE_HANDLE_STANDARD_ARGS NAME_MISMATCHED"
"set(protobuf_MODULE_COMPATIBLE ON) # necessary for GENERATE_PROTOBUF_CPP"
""
)
string(JOIN "\n" EXT3
"set(PROTOBUF_PROTOC_EXECUTABLE ${PROJECT_NAME}::protoc) # TRICKY: match name in -module.cmake"
"get_target_property(PROTOBUF_INCLUDE_DIR ${PROJECT_NAME}::libprotobuf INTERFACE_INCLUDE_DIRECTORIES)"
"list(APPEND reqVars PROTOBUF_INCLUDE_DIR PROTOBUF_PROTOC_EXECUTABLE)"
""
)
xpExternPackage(REPO_NAME protobuf TARGETS_FILE protobuf-config-orig EXPORT protobuf-targets
EXE protoc LIBRARIES libprotobuf FIND_XPRO_CMAKE
BASE ${protobuf_BASE_TAG} XPDIFF "patch"
WEB "https://developers.google.com/protocol-buffers/" UPSTREAM "github.com/protocolbuffers/protobuf"
DESC "language-neutral, platform-neutral extensible mechanism for serializing structured data"
LICENSE "[BSD-3-Clause](https://github.com/protocolbuffers/protobuf/blob/v3.14.0/LICENSE 'BSD 3-Clause New or Revised License')"
)
set(CMAKE_OPT_INSTALL FALSE)
else()
set(CMAKE_OPT_INSTALL TRUE)
endif()

include(install.cmake)

if (protobuf_BUILD_EXAMPLES)
Expand Down
8 changes: 4 additions & 4 deletions cmake/install.cmake
Original file line number Diff line number Diff line change
Expand Up @@ -116,7 +116,7 @@ endif()
mark_as_advanced(CMAKE_INSTALL_CMAKEDIR)

configure_file(protobuf-config.cmake.in
${CMAKE_INSTALL_CMAKEDIR}/protobuf-config.cmake @ONLY)
${CMAKE_INSTALL_CMAKEDIR}/protobuf-config-orig.cmake @ONLY)
configure_file(protobuf-config-version.cmake.in
${CMAKE_INSTALL_CMAKEDIR}/protobuf-config-version.cmake @ONLY)
configure_file(protobuf-module.cmake.in
Expand All @@ -128,19 +128,19 @@ configure_file(protobuf-options.cmake

if (protobuf_BUILD_PROTOC_BINARIES)
export(TARGETS libprotobuf-lite libprotobuf libprotoc protoc
NAMESPACE ${CMAKE_NAMESPACE}::
NAMESPACE protobuf::
FILE ${CMAKE_INSTALL_CMAKEDIR}/protobuf-targets.cmake
)
else (protobuf_BUILD_PROTOC_BINARIES)
export(TARGETS libprotobuf-lite libprotobuf
NAMESPACE ${CMAKE_NAMESPACE}::
NAMESPACE protobuf::
FILE ${CMAKE_INSTALL_CMAKEDIR}/protobuf-targets.cmake
)
endif (protobuf_BUILD_PROTOC_BINARIES)

install(EXPORT protobuf-targets
DESTINATION "${CMAKE_INSTALL_CMAKEDIR}"
NAMESPACE ${CMAKE_NAMESPACE}::
NAMESPACE protobuf::
COMPONENT protobuf-export)

install(DIRECTORY ${CMAKE_CURRENT_BINARY_DIR}/${CMAKE_INSTALL_CMAKEDIR}/
Expand Down
4 changes: 2 additions & 2 deletions cmake/libprotobuf-lite.cmake
Original file line number Diff line number Diff line change
Expand Up @@ -81,5 +81,5 @@ endif()
set_target_properties(libprotobuf-lite PROPERTIES
VERSION ${protobuf_VERSION}
OUTPUT_NAME ${LIB_PREFIX}protobuf-lite
DEBUG_POSTFIX "${CMAKE_DEBUG_POSTFIX}")
add_library(${CMAKE_NAMESPACE}::libprotobuf-lite ALIAS libprotobuf-lite)
DEBUG_POSTFIX "${protobuf_DEBUG_POSTFIX}")
add_library(protobuf::libprotobuf-lite ALIAS libprotobuf-lite)
4 changes: 2 additions & 2 deletions cmake/libprotobuf.cmake
Original file line number Diff line number Diff line change
Expand Up @@ -133,5 +133,5 @@ endif()
set_target_properties(libprotobuf PROPERTIES
VERSION ${protobuf_VERSION}
OUTPUT_NAME ${LIB_PREFIX}protobuf
DEBUG_POSTFIX "${CMAKE_DEBUG_POSTFIX}")
add_library(${CMAKE_NAMESPACE}::libprotobuf ALIAS libprotobuf)
DEBUG_POSTFIX "${protobuf_DEBUG_POSTFIX}")
add_library(protobuf::libprotobuf ALIAS libprotobuf)
5 changes: 3 additions & 2 deletions cmake/libprotoc.cmake
Original file line number Diff line number Diff line change
Expand Up @@ -177,5 +177,6 @@ set_target_properties(libprotoc PROPERTIES
COMPILE_DEFINITIONS LIBPROTOC_EXPORTS
VERSION ${protobuf_VERSION}
OUTPUT_NAME ${LIB_PREFIX}protoc
DEBUG_POSTFIX "${CMAKE_DEBUG_POSTFIX}")
add_library(${CMAKE_NAMESPACE}::libprotoc ALIAS libprotoc)
DEBUG_POSTFIX "${protobuf_DEBUG_POSTFIX}")
add_library(protobuf::libprotoc ALIAS libprotoc)

4 changes: 2 additions & 2 deletions cmake/protobuf-config.cmake.in
Original file line number Diff line number Diff line change
Expand Up @@ -129,9 +129,9 @@ function(protobuf_generate)

add_custom_command(
OUTPUT ${_generated_srcs}
COMMAND @CMAKE_NAMESPACE@::protoc
COMMAND protobuf::protoc
ARGS --${protobuf_generate_LANGUAGE}_out ${_dll_export_decl}${protobuf_generate_PROTOC_OUT_DIR} ${_plugin} ${_protobuf_include_path} ${_abs_file}
DEPENDS ${_abs_file} @CMAKE_NAMESPACE@::protoc
DEPENDS ${_abs_file} protobuf::protoc
COMMENT "Running ${protobuf_generate_LANGUAGE} protocol buffer compiler on ${_proto}"
VERBATIM )
endforeach()
Expand Down
20 changes: 10 additions & 10 deletions cmake/protobuf-module.cmake.in
Original file line number Diff line number Diff line change
Expand Up @@ -95,13 +95,13 @@ function(_protobuf_find_libraries name filename)
# Honor cache entry used by CMake 3.5 and lower.
set(${name}_LIBRARIES "${${name}_LIBRARY}" PARENT_SCOPE)
else()
get_target_property(${name}_LIBRARY_RELEASE @CMAKE_NAMESPACE@::lib${filename}
get_target_property(${name}_LIBRARY_RELEASE protobuf::lib${filename}
LOCATION_RELEASE)
get_target_property(${name}_LIBRARY_RELWITHDEBINFO @CMAKE_NAMESPACE@::lib${filename}
get_target_property(${name}_LIBRARY_RELWITHDEBINFO protobuf::lib${filename}
LOCATION_RELWITHDEBINFO)
get_target_property(${name}_LIBRARY_MINSIZEREL @CMAKE_NAMESPACE@::lib${filename}
get_target_property(${name}_LIBRARY_MINSIZEREL protobuf::lib${filename}
LOCATION_MINSIZEREL)
get_target_property(${name}_LIBRARY_DEBUG @CMAKE_NAMESPACE@::lib${filename}
get_target_property(${name}_LIBRARY_DEBUG protobuf::lib${filename}
LOCATION_DEBUG)

select_library_configurations(${name})
Expand Down Expand Up @@ -144,26 +144,26 @@ if(UNIX)
endif()

# Set the include directory
get_target_property(Protobuf_INCLUDE_DIRS @CMAKE_NAMESPACE@::libprotobuf
get_target_property(Protobuf_INCLUDE_DIRS protobuf::libprotobuf
INTERFACE_INCLUDE_DIRECTORIES)

# Set the protoc Executable
get_target_property(Protobuf_PROTOC_EXECUTABLE @CMAKE_NAMESPACE@::protoc
get_target_property(Protobuf_PROTOC_EXECUTABLE protobuf::protoc
IMPORTED_LOCATION_RELEASE)
if(NOT EXISTS "${Protobuf_PROTOC_EXECUTABLE}")
get_target_property(Protobuf_PROTOC_EXECUTABLE @CMAKE_NAMESPACE@::protoc
get_target_property(Protobuf_PROTOC_EXECUTABLE protobuf::protoc
IMPORTED_LOCATION_RELWITHDEBINFO)
endif()
if(NOT EXISTS "${Protobuf_PROTOC_EXECUTABLE}")
get_target_property(Protobuf_PROTOC_EXECUTABLE @CMAKE_NAMESPACE@::protoc
get_target_property(Protobuf_PROTOC_EXECUTABLE protobuf::protoc
IMPORTED_LOCATION_MINSIZEREL)
endif()
if(NOT EXISTS "${Protobuf_PROTOC_EXECUTABLE}")
get_target_property(Protobuf_PROTOC_EXECUTABLE @CMAKE_NAMESPACE@::protoc
get_target_property(Protobuf_PROTOC_EXECUTABLE protobuf::protoc
IMPORTED_LOCATION_DEBUG)
endif()
if(NOT EXISTS "${Protobuf_PROTOC_EXECUTABLE}")
get_target_property(Protobuf_PROTOC_EXECUTABLE @CMAKE_NAMESPACE@::protoc
get_target_property(Protobuf_PROTOC_EXECUTABLE protobuf::protoc
IMPORTED_LOCATION_NOCONFIG)
endif()

Expand Down
4 changes: 2 additions & 2 deletions cmake/protoc.cmake
Original file line number Diff line number Diff line change
Expand Up @@ -10,7 +10,7 @@ endif()

add_executable(protoc ${protoc_files} ${protoc_rc_files})
target_link_libraries(protoc libprotoc libprotobuf)
add_executable(${CMAKE_NAMESPACE}::protoc ALIAS protoc)
add_executable(protobuf::protoc ALIAS protoc)

set_target_properties(protoc PROPERTIES
DEBUG_POSTFIX "${CMAKE_DEBUG_POSTFIX}")
DEBUG_POSTFIX "${protobuf_DEBUG_POSTFIX}")
2 changes: 1 addition & 1 deletion examples/CMakeLists.txt
Original file line number Diff line number Diff line change
Expand Up @@ -41,7 +41,7 @@ foreach(example add_person list_people)
target_include_directories(${executable_name} PUBLIC ${PROTOBUF_INCLUDE_DIRS})
target_link_libraries(${executable_name} ${PROTOBUF_LIBRARIES})
else()
target_link_libraries(${executable_name} ${CMAKE_NAMESPACE}::libprotobuf)
target_link_libraries(${executable_name} protobuf::libprotobuf)
protobuf_generate(TARGET ${executable_name})
endif()

Expand Down
2 changes: 1 addition & 1 deletion xprodeps.md
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,7 @@
|project|license [^_l]|description [dependencies]|version|source|diff [^_d]|
|-------|-------------|--------------------------|-------|------|----------|
|<a id='protobuf' />[protobuf](https://developers.google.com/protocol-buffers/)|[BSD-3-Clause](https://github.com/protocolbuffers/protobuf/blob/v3.14.0/LICENSE 'BSD 3-Clause New or Revised License')|language-neutral, platform-neutral extensible mechanism for serializing structured data [deps: _zlib_]| |[upstream](https://github.com/protocolbuffers/protobuf 'github.com/protocolbuffers/protobuf')| [patch]|
|<a id='zlib' />[zlib](https://zlib.net 'zlib website')|[permissive](https://zlib.net/zlib_license.html 'zlib/libpng license, see https://en.wikipedia.org/wiki/Zlib_License')|compression library|[xpv1.3.1.4](https://github.com/externpro/zlib/releases/tag/xpv1.3.1.4 'release')|[repo](https://github.com/externpro/zlib 'github.com/externpro/zlib') [upstream](https://github.com/madler/zlib 'github.com/madler/zlib')|[diff](https://github.com/externpro/zlib/compare/v1.3.1...xpv1.3.1.4 'github.com/externpro/zlib/compare/v1.3.1...xpv1.3.1.4') [patch]|
|<a id='zlib' />[zlib](https://zlib.net/ 'zlib website')|[Zlib](https://zlib.net/zlib_license.html 'zlib/libpng license, see https://en.wikipedia.org/wiki/Zlib_License')|a general-purpose lossless data-compression library|[xpv1.3.2.1](https://github.com/externpro/zlib/releases/tag/xpv1.3.2.1 'release')|[repo](https://github.com/externpro/zlib 'github.com/externpro/zlib') [upstream](https://github.com/madler/zlib 'github.com/madler/zlib')|[diff](https://github.com/externpro/zlib/compare/v1.3.2...xpv1.3.2.1 'github.com/externpro/zlib/compare/v1.3.2...xpv1.3.2.1') [patch]|

![deps](xprodeps.svg 'dependencies')

Expand Down