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
53 changes: 53 additions & 0 deletions ports/nghttp3/001-devendor-sfparse.patch
Original file line number Diff line number Diff line change
@@ -0,0 +1,53 @@
diff --git a/lib/CMakeLists.txt b/lib/CMakeLists.txt
index 7dbfde4..1d244f2 100644
--- a/lib/CMakeLists.txt
+++ b/lib/CMakeLists.txt
@@ -63,7 +63,6 @@ set(nghttp3_SOURCES
nghttp3_settings.c
nghttp3_callbacks.c
nghttp3_ratelim.c
- sfparse/sfparse.c
)

set(NGHTTP3_GENERATED_DIR "${CMAKE_CURRENT_BINARY_DIR}/generated")
@@ -85,9 +84,12 @@ install(
FILES "${NGHTTP3_PROJECT_CONFIG}" "${NGHTTP3_VERSION_CONFIG}"
DESTINATION "${NGHTTP3_CONFIG_INSTALL_DIR}")

+find_package(unofficial-sfparse CONFIG REQUIRED)
+
# Public shared library
if(ENABLE_SHARED_LIB)
add_library(nghttp3 SHARED ${nghttp3_SOURCES})
+ target_link_libraries(nghttp3 PRIVATE unofficial::sfparse::sfparse)
set_target_properties(nghttp3 PROPERTIES
COMPILE_FLAGS "${WARNCFLAGS}"
VERSION ${LT_VERSION} SOVERSION ${LT_SOVERSION}
@@ -106,6 +108,7 @@ endif()
if(ENABLE_STATIC_LIB)
# Public static library
add_library(nghttp3_static STATIC ${nghttp3_SOURCES})
+ target_link_libraries(nghttp3_static PRIVATE unofficial::sfparse::sfparse)
set_target_properties(nghttp3_static PROPERTIES
COMPILE_FLAGS "${WARNCFLAGS}"
VERSION ${LT_VERSION} SOVERSION ${LT_SOVERSION}
diff --git a/lib/libnghttp3.pc.in b/lib/libnghttp3.pc.in
--- a/lib/libnghttp3.pc.in
+++ b/lib/libnghttp3.pc.in
@@ -30,5 +30,6 @@ Name: libnghttp3
Description: nghttp3 library
URL: https://github.com/ngtcp2/nghttp3
Version: @VERSION@
Libs: -L${libdir} -lnghttp3
+Libs.private: -lsfparse
Cflags: -I${includedir}
diff --git a/lib/config.cmake.in b/lib/config.cmake.in
index fc691dd..bc991b1 100644
--- a/lib/config.cmake.in
+++ b/lib/config.cmake.in
@@ -1,3 +1,5 @@
include(CMakeFindDependencyMacro)

+find_dependency(unofficial-sfparse)
+
include("${CMAKE_CURRENT_LIST_DIR}/@NGHTTP3_TARGETS_EXPORT_NAME@.cmake")
18 changes: 3 additions & 15 deletions ports/nghttp3/portfile.cmake
Original file line number Diff line number Diff line change
Expand Up @@ -2,24 +2,12 @@ vcpkg_from_github(
OUT_SOURCE_PATH SOURCE_PATH
REPO ngtcp2/nghttp3
REF v${VERSION}
SHA512 23d85a2abfa81433049d7b1b0440b5b04ae3515830db0347da335a30b93c8be8e25d2f73e198cdb9207e2b51ce924f133bab7314cde76d80f73c51c1fd1c36c4
SHA512 2d8bfed2ef5d9906769d717dff934d7b2a1ed832b5e17e56615b2c817093730ac2378b212d420ac6296158e1b0ac667ed6db4226016cb11797c0edc3083ef984
HEAD_REF main
PATCHES
001-devendor-sfparse.patch
)

vcpkg_from_github(
OUT_SOURCE_PATH SFPARSE_SOURCE_PATH
REPO ngtcp2/sfparse
REF f2046eaa1acba7c5467399b1e1e1f354d22d1f48
SHA512 b3cbcce6d96dc731d21a67940a05c1603d43ee9766819e1d174ca93c7afc7fa6247aa818368cafbb31444e0198ab5bba45808772a3ca89e459f8d2c0ffae6f5d
HEAD_REF main
)

file(REMOVE_RECURSE "${SOURCE_PATH}/lib/sfparse")
file(MAKE_DIRECTORY "${SOURCE_PATH}/lib")
file(RENAME "${SFPARSE_SOURCE_PATH}" "${SOURCE_PATH}/lib/sfparse")


string(COMPARE EQUAL "${VCPKG_CRT_LINKAGE}" "static" ENABLE_STATIC_CRT)
string(COMPARE EQUAL "${VCPKG_LIBRARY_LINKAGE}" "static" ENABLE_STATIC_LIB)
string(COMPARE EQUAL "${VCPKG_LIBRARY_LINKAGE}" "dynamic" ENABLE_SHARED_LIB)
Expand Down Expand Up @@ -60,5 +48,5 @@ if(VCPKG_LIBRARY_LINKAGE STREQUAL static)
)
endif()

file(INSTALL "${SOURCE_PATH}/COPYING" DESTINATION "${CURRENT_PACKAGES_DIR}/share/${PORT}" RENAME copyright)
vcpkg_install_copyright(FILE_LIST "${SOURCE_PATH}/COPYING")
file(INSTALL "${CMAKE_CURRENT_LIST_DIR}/usage" DESTINATION "${CURRENT_PACKAGES_DIR}/share/${PORT}")
3 changes: 2 additions & 1 deletion ports/nghttp3/vcpkg.json
Original file line number Diff line number Diff line change
@@ -1,10 +1,11 @@
{
"name": "nghttp3",
"version": "1.17.0",
"version": "1.18.0",
"description": "Implementation of RFC 9114 HTTP/3 mapping over QUIC and RFC 9204 QPACK in C",
"homepage": "https://github.com/ngtcp2/nghttp3",
"license": "MIT",
"dependencies": [
"sfparse",
{
"name": "vcpkg-cmake",
"host": true
Expand Down
103 changes: 103 additions & 0 deletions ports/sfparse/001-fix-exports.patch
Original file line number Diff line number Diff line change
@@ -0,0 +1,103 @@
diff --git a/sfparse.h b/sfparse.h
index 7f36ce8..7242dd9 100644
--- a/sfparse.h
+++ b/sfparse.h
@@ -33,6 +33,26 @@
# define WIN32
#endif /* (defined(_WIN32) || defined(__WIN32__)) && !defined(WIN32) */

+#if defined(_WIN32)
+# if defined(SFPARSE_STATIC)
+# define SFPARSE_API
+# elif defined(SFPARSE_BUILDING)
+# define SFPARSE_API __declspec(dllexport)
+# else
+# define SFPARSE_API __declspec(dllimport)
+# endif
+#elif defined(__GNUC__) || defined(__clang__)
+# if defined(SFPARSE_STATIC)
+# define SFPARSE_API
+# elif defined(SFPARSE_BUILDING)
+# define SFPARSE_API __attribute__((visibility("default")))
+# else
+# define SFPARSE_API
+# endif
+#else
+# define SFPARSE_API
+#endif
+
#ifdef __cplusplus
extern "C" {
#endif /* defined(__cplusplus) */
@@ -247,6 +267,7 @@ typedef struct sfparse_parser {
* `sfparse_parser_init` initializes |sfp| with the given data encoded
* in Structured Field Values pointed by |data| of length |datalen|.
*/
+SFPARSE_API
void sfparse_parser_init(sfparse_parser *sfp, const uint8_t *data,
size_t datalen);

@@ -266,6 +287,7 @@ void sfparse_parser_init(sfparse_parser *sfp, const uint8_t *data,
* it returns :macro:`SFPARSE_ERR_PARSE`, it encountered fatal error
* while parsing field value.
*/
+SFPARSE_API
int sfparse_parser_param(sfparse_parser *sfp, sfparse_vec *dest_key,
sfparse_value *dest_value);

@@ -294,6 +316,7 @@ int sfparse_parser_param(sfparse_parser *sfp, sfparse_vec *dest_key,
* :macro:`SFPARSE_ERR_PARSE`
* It encountered fatal error while parsing field value.
*/
+SFPARSE_API
int sfparse_parser_dict(sfparse_parser *sfp, sfparse_vec *dest_key,
sfparse_value *dest_value);

@@ -318,6 +341,7 @@ int sfparse_parser_dict(sfparse_parser *sfp, sfparse_vec *dest_key,
* :macro:`SFPARSE_ERR_PARSE`
* It encountered fatal error while parsing field value.
*/
+SFPARSE_API
int sfparse_parser_list(sfparse_parser *sfp, sfparse_value *dest);

/**
@@ -345,6 +369,7 @@ int sfparse_parser_list(sfparse_parser *sfp, sfparse_value *dest);
* :macro:`SFPARSE_ERR_PARSE`
* It encountered fatal error while parsing field value.
*/
+SFPARSE_API
int sfparse_parser_item(sfparse_parser *sfp, sfparse_value *dest);

/**
@@ -372,6 +397,7 @@ int sfparse_parser_item(sfparse_parser *sfp, sfparse_value *dest);
* :macro:`SFPARSE_ERR_PARSE`
* It encountered fatal error while parsing field value.
*/
+SFPARSE_API
int sfparse_parser_inner_list(sfparse_parser *sfp, sfparse_value *dest);

/**
@@ -393,6 +419,7 @@ int sfparse_parser_inner_list(sfparse_parser *sfp, sfparse_value *dest);
* This function sets the length of unescaped string to
* :member:`dest->len <sfparse_vec.len>`.
*/
+SFPARSE_API
void sfparse_unescape(sfparse_vec *dest, const sfparse_vec *src);

/**
@@ -412,6 +439,7 @@ void sfparse_unescape(sfparse_vec *dest, const sfparse_vec *src);
* This function sets the length of decoded byte string to
* :member:`dest->len <sfparse_vec.len>`.
*/
+SFPARSE_API
void sfparse_base64decode(sfparse_vec *dest, const sfparse_vec *src);

/**
@@ -433,6 +461,7 @@ void sfparse_base64decode(sfparse_vec *dest, const sfparse_vec *src);
* This function sets the length of decoded byte string to
* :member:`dest->len <sfparse_vec.len>`.
*/
+SFPARSE_API
void sfparse_pctdecode(sfparse_vec *dest, const sfparse_vec *src);

#ifdef __cplusplus
28 changes: 28 additions & 0 deletions ports/sfparse/CMakeLists.txt
Original file line number Diff line number Diff line change
@@ -0,0 +1,28 @@
cmake_minimum_required(VERSION 3.15)
project(sfparse C)

include(GNUInstallDirs)

add_library(sfparse sfparse.c sfparse.h)

set(DEFINITIONS)
list(APPEND DEFINITIONS SFPARSE_BUILDING)
if(NOT BUILD_SHARED_LIBS)
list(APPEND DEFINITIONS SFPARSE_STATIC)
endif()
target_compile_definitions(sfparse PRIVATE ${DEFINITIONS})
target_include_directories(sfparse PUBLIC
"$<BUILD_INTERFACE:${CMAKE_CURRENT_SOURCE_DIR}>"
"$<INSTALL_INTERFACE:${CMAKE_INSTALL_INCLUDEDIR}>"
)

install(
FILES "${CMAKE_CURRENT_LIST_DIR}/sfparse.h"
DESTINATION "${CMAKE_INSTALL_INCLUDEDIR}/sfparse"
)
install(TARGETS sfparse EXPORT unofficial-sfparse-config)
install(
EXPORT unofficial-sfparse-config
NAMESPACE unofficial::sfparse::
DESTINATION "${CMAKE_INSTALL_DATAROOTDIR}/unofficial-sfparse"
)
24 changes: 24 additions & 0 deletions ports/sfparse/portfile.cmake
Original file line number Diff line number Diff line change
@@ -0,0 +1,24 @@
vcpkg_from_github(
OUT_SOURCE_PATH SOURCE_PATH
REPO ngtcp2/sfparse
REF 4b313cfd2e1b389ae632b36dcd50402307289af2
SHA512 cf5e7ac12af29c7ff77247b71d74e9b109444fd61a52f8b44c4421eb48e23865aba3618371f658d362740df92a21657b5e1298cea1e5685f24dbd7ed3b9ca5d1
HEAD_REF main
PATCHES
001-fix-exports.patch
)

file(COPY "${CMAKE_CURRENT_LIST_DIR}/CMakeLists.txt" DESTINATION "${SOURCE_PATH}/")

vcpkg_cmake_configure(SOURCE_PATH "${SOURCE_PATH}")
vcpkg_cmake_install()
vcpkg_copy_pdbs()
vcpkg_cmake_config_fixup(PACKAGE_NAME unofficial-${PORT})

file(REMOVE_RECURSE "${CURRENT_PACKAGES_DIR}/debug/include")

if(VCPKG_LIBRARY_LINKAGE STREQUAL "static")
vcpkg_replace_string("${CURRENT_PACKAGES_DIR}/include/sfparse/sfparse.h" "defined(SFPARSE_STATIC)" "1")
endif()

vcpkg_install_copyright(FILE_LIST "${SOURCE_PATH}/COPYING")
17 changes: 17 additions & 0 deletions ports/sfparse/vcpkg.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,17 @@
{
"name": "sfparse",
"version-date": "2026-06-04",
"description": "RFC 9651 Structured Field Values parser",
"homepage": "https://github.com/ngtcp2/sfparse",
"license": "MIT",
"dependencies": [
{
"name": "vcpkg-cmake",
"host": true
},
{
"name": "vcpkg-cmake-config",
"host": true
}
]
}
10 changes: 10 additions & 0 deletions scripts/test_ports/vcpkg-ci-nghttp3/portfile.cmake
Original file line number Diff line number Diff line change
@@ -0,0 +1,10 @@
set(VCPKG_POLICY_EMPTY_PACKAGE enabled)

vcpkg_find_acquire_program(PKGCONFIG)

vcpkg_cmake_configure(
SOURCE_PATH "${CURRENT_PORT_DIR}/project"
OPTIONS
"-DPKG_CONFIG_EXECUTABLE=${PKGCONFIG}"
)
vcpkg_cmake_build()
17 changes: 17 additions & 0 deletions scripts/test_ports/vcpkg-ci-nghttp3/project/CMakeLists.txt
Original file line number Diff line number Diff line change
@@ -0,0 +1,17 @@
cmake_minimum_required(VERSION 3.16)
project(vcpkg-ci-nghttp3 C)

################################################################################
# Use cmake config #
################################################################################
find_package(nghttp3 CONFIG REQUIRED)
add_executable(vcpkg-ci-nghttp3 main.c)
target_link_libraries(vcpkg-ci-nghttp3 PRIVATE $<IF:$<TARGET_EXISTS:nghttp3::nghttp3>,nghttp3::nghttp3,nghttp3::nghttp3_static>)

################################################################################
# Use pkg-config #
################################################################################
find_package(PkgConfig)
pkg_check_modules(nghttp3 REQUIRED IMPORTED_TARGET libnghttp3)
add_executable(vcpkg-ci-nghttp3-pc main.c)
target_link_libraries(vcpkg-ci-nghttp3-pc PRIVATE PkgConfig::nghttp3)
7 changes: 7 additions & 0 deletions scripts/test_ports/vcpkg-ci-nghttp3/project/main.c
Original file line number Diff line number Diff line change
@@ -0,0 +1,7 @@
#include <nghttp3/nghttp3.h>

int main(void) {
nghttp3_settings settings;
nghttp3_settings_default(&settings);
return 0;
}
12 changes: 12 additions & 0 deletions scripts/test_ports/vcpkg-ci-nghttp3/vcpkg.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,12 @@
{
"name": "vcpkg-ci-nghttp3",
"version-string": "ci",
"description": "Validates nghttp3",
"dependencies": [
"nghttp3",
{
"name": "vcpkg-cmake",
"host": true
}
]
}
6 changes: 6 additions & 0 deletions scripts/test_ports/vcpkg-ci-sfparse/portfile.cmake
Original file line number Diff line number Diff line change
@@ -0,0 +1,6 @@
set(VCPKG_POLICY_EMPTY_PACKAGE enabled)

vcpkg_cmake_configure(
SOURCE_PATH "${CURRENT_PORT_DIR}/project"
)
vcpkg_cmake_build()
7 changes: 7 additions & 0 deletions scripts/test_ports/vcpkg-ci-sfparse/project/CMakeLists.txt
Original file line number Diff line number Diff line change
@@ -0,0 +1,7 @@
cmake_minimum_required(VERSION 3.16)
project(vcpkg-ci-sfparse C)

find_package(unofficial-sfparse CONFIG REQUIRED)

add_executable(main main.c)
target_link_libraries(main PRIVATE unofficial::sfparse::sfparse)
8 changes: 8 additions & 0 deletions scripts/test_ports/vcpkg-ci-sfparse/project/main.c
Original file line number Diff line number Diff line change
@@ -0,0 +1,8 @@
#include <sfparse/sfparse.h>

int main(void) {
sfparse_parser sfp;
const uint8_t data[] = {0};
sfparse_parser_init(&sfp, data, 0);
return 0;
}
12 changes: 12 additions & 0 deletions scripts/test_ports/vcpkg-ci-sfparse/vcpkg.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,12 @@
{
"name": "vcpkg-ci-sfparse",
"version-string": "ci",
"description": "Validates sfparse",
"dependencies": [
"sfparse",
{
"name": "vcpkg-cmake",
"host": true
}
]
}
6 changes: 5 additions & 1 deletion versions/baseline.json
Original file line number Diff line number Diff line change
Expand Up @@ -7093,7 +7093,7 @@
"port-version": 0
},
"nghttp3": {
"baseline": "1.17.0",
"baseline": "1.18.0",
"port-version": 0
},
"ngspice": {
Expand Down Expand Up @@ -9288,6 +9288,10 @@
"baseline": "3.0.2",
"port-version": 0
},
"sfparse": {
"baseline": "2026-06-04",
"port-version": 0
},
"sfsexp": {
"baseline": "1.4.1",
"port-version": 0
Expand Down
5 changes: 5 additions & 0 deletions versions/n-/nghttp3.json
Original file line number Diff line number Diff line change
@@ -1,5 +1,10 @@
{
"versions": [
{
"git-tree": "8240e611dfd7e1d6edb91d9db5b117673e716bce",
"version": "1.18.0",
"port-version": 0
},
{
"git-tree": "0cba24ff0e170771b59b6359816bff5dc0c021e4",
"version": "1.17.0",
Expand Down
Loading
Loading