From 9dd12f8d791f6fa4e396adbebc714d51cbee2143 Mon Sep 17 00:00:00 2001 From: Zhichao Wang <13913997749@163.com> Date: Fri, 16 May 2025 07:01:21 +0800 Subject: [PATCH] [cmark-gfm] Add port (#45440) --- ports/cmark-gfm/add-feature-tools.patch | 61 +++++++++++++++++++++++++ ports/cmark-gfm/portfile.cmake | 43 +++++++++++++++++ ports/cmark-gfm/vcpkg.json | 23 ++++++++++ versions/baseline.json | 4 ++ versions/c-/cmark-gfm.json | 9 ++++ 5 files changed, 140 insertions(+) create mode 100644 ports/cmark-gfm/add-feature-tools.patch create mode 100644 ports/cmark-gfm/portfile.cmake create mode 100644 ports/cmark-gfm/vcpkg.json create mode 100644 versions/c-/cmark-gfm.json diff --git a/ports/cmark-gfm/add-feature-tools.patch b/ports/cmark-gfm/add-feature-tools.patch new file mode 100644 index 0000000000..dedb8f2fd8 --- /dev/null +++ b/ports/cmark-gfm/add-feature-tools.patch @@ -0,0 +1,61 @@ +diff --git a/extensions/CMakeLists.txt b/extensions/CMakeLists.txt +index e545b6d..01d84af 100644 +--- a/extensions/CMakeLists.txt ++++ b/extensions/CMakeLists.txt +@@ -1,3 +1,8 @@ ++if(BUILD_SHARED_LIBS) ++ set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -Dlibcmark_gfm_EXPORTS") ++ set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -Dlibcmark_gfm_EXPORTS") ++endif() ++ + set(LIBRARY "libcmark-gfm-extensions") + set(STATICLIBRARY "libcmark-gfm-extensions_static") + set(LIBRARY_SOURCES +@@ -66,6 +71,7 @@ endif() + set(CMAKE_INSTALL_SYSTEM_RUNTIME_LIBS_NO_WARNINGS ON) + + include (InstallRequiredSystemLibraries) ++target_include_directories(${CMARK_INSTALL} INTERFACE $) + install(TARGETS ${CMARK_INSTALL} + EXPORT cmark-gfm-extensions + RUNTIME DESTINATION bin +@@ -79,7 +85,7 @@ if (CMARK_SHARED OR CMARK_STATIC) + DESTINATION include + ) + +- install(EXPORT cmark-gfm-extensions DESTINATION lib${LIB_SUFFIX}/cmake-gfm-extensions) ++ install(EXPORT cmark-gfm-extensions FILE cmark-gfm-extensions-config.cmake DESTINATION lib${LIB_SUFFIX}/cmake-gfm-extensions) + endif() + + # Feature tests +diff --git a/src/CMakeLists.txt b/src/CMakeLists.txt +index 84dd2a0..f355de5 100644 +--- a/src/CMakeLists.txt ++++ b/src/CMakeLists.txt +@@ -154,12 +154,17 @@ endif() + + set(libdir lib${LIB_SUFFIX}) + ++if(NOT BUILD_TOOLS) ++ set_target_properties(${PROGRAM} PROPERTIES EXCLUDE_FROM_ALL 1) ++ set(PROGRAM "") ++endif() + install(TARGETS ${PROGRAM} ${CMARK_INSTALL} + EXPORT cmark-gfm + RUNTIME DESTINATION bin + LIBRARY DESTINATION ${libdir} + ARCHIVE DESTINATION ${libdir} + ) ++target_include_directories(${CMARK_INSTALL} INTERFACE $) + + if(CMARK_SHARED OR CMARK_STATIC) + configure_file(${CMAKE_CURRENT_SOURCE_DIR}/libcmark-gfm.pc.in +@@ -175,7 +180,7 @@ if(CMARK_SHARED OR CMARK_STATIC) + DESTINATION include + ) + +- install(EXPORT cmark-gfm DESTINATION ${CMAKE_INSTALL_LIBDIR}/cmake) ++ install(EXPORT cmark-gfm FILE cmark-gfm-config.cmake DESTINATION ${CMAKE_INSTALL_LIBDIR}/cmake) + endif() + + # Feature tests diff --git a/ports/cmark-gfm/portfile.cmake b/ports/cmark-gfm/portfile.cmake new file mode 100644 index 0000000000..53cd8d2769 --- /dev/null +++ b/ports/cmark-gfm/portfile.cmake @@ -0,0 +1,43 @@ +string(REGEX REPLACE "^([0-9]+\\.[0-9]+\\.[0-9]+)\\.([0-9]+)$" "\\1.gfm.\\2" GFM_VERSION "${VERSION}") + +vcpkg_from_github( + OUT_SOURCE_PATH SOURCE_PATH + REPO github/cmark-gfm + REF ${GFM_VERSION} + SHA512 435298fcf782dfc5b64c578ac839759b9d5cd0c08eb90d6702f26278062a0f4887c65c18e89e2c9f6be23f10dd835c769a7e0f8c934be068b6754dcca30cdd7c + HEAD_REF master + PATCHES + add-feature-tools.patch +) + +string(COMPARE EQUAL "${VCPKG_LIBRARY_LINKAGE}" "static" CMARK_STATIC) +string(COMPARE EQUAL "${VCPKG_LIBRARY_LINKAGE}" "dynamic" CMARK_SHARED) + +vcpkg_check_features(OUT_FEATURE_OPTIONS FEATURE_OPTIONS + FEATURES + tools BUILD_TOOLS +) + +vcpkg_cmake_configure( + SOURCE_PATH "${SOURCE_PATH}" + OPTIONS + -DCMARK_TESTS=OFF + -DCMARK_SHARED=${CMARK_SHARED} + -DCMARK_STATIC=${CMARK_STATIC} + ${FEATURE_OPTIONS} + OPTIONS_DEBUG + -DBUILD_TOOLS=OFF +) + +vcpkg_cmake_install() +vcpkg_cmake_config_fixup(CONFIG_PATH lib/cmake) +vcpkg_cmake_config_fixup(PACKAGE_NAME cmark-gfm-extensions CONFIG_PATH lib/cmake-gfm-extensions) +vcpkg_fixup_pkgconfig() + +if ("tools" IN_LIST FEATURES) + vcpkg_copy_tools(TOOL_NAMES cmark-gfm AUTO_CLEAN) +endif() + +file(REMOVE_RECURSE "${CURRENT_PACKAGES_DIR}/debug/include" "${CURRENT_PACKAGES_DIR}/debug/share") + +vcpkg_install_copyright(FILE_LIST "${SOURCE_PATH}/COPYING") diff --git a/ports/cmark-gfm/vcpkg.json b/ports/cmark-gfm/vcpkg.json new file mode 100644 index 0000000000..c91eac0ffd --- /dev/null +++ b/ports/cmark-gfm/vcpkg.json @@ -0,0 +1,23 @@ +{ + "name": "cmark-gfm", + "version": "0.29.0.13", + "description": "GitHub Flavored Markdown parser based on cmark.", + "homepage": "https://github.com/github/cmark-gfm", + "license": "BSD-2-Clause", + "dependencies": [ + { + "name": "vcpkg-cmake", + "host": true + }, + { + "name": "vcpkg-cmake-config", + "host": true + } + ], + "features": { + "tools": { + "description": "Build tools", + "supports": "!uwp" + } + } +} diff --git a/versions/baseline.json b/versions/baseline.json index 5fb5a2073b..f125cbe2a7 100644 --- a/versions/baseline.json +++ b/versions/baseline.json @@ -1780,6 +1780,10 @@ "baseline": "0.31.1", "port-version": 0 }, + "cmark-gfm": { + "baseline": "0.29.0.13", + "port-version": 0 + }, "cminpack": { "baseline": "1.3.8", "port-version": 4 diff --git a/versions/c-/cmark-gfm.json b/versions/c-/cmark-gfm.json new file mode 100644 index 0000000000..18e2aedd37 --- /dev/null +++ b/versions/c-/cmark-gfm.json @@ -0,0 +1,9 @@ +{ + "versions": [ + { + "git-tree": "330cd891b722d5194481b0dae428ac7d06392448", + "version": "0.29.0.13", + "port-version": 0 + } + ] +}