aboutsummaryrefslogtreecommitdiff
path: root/vcpkg/ports/libgd
diff options
context:
space:
mode:
authorEthan Morgan <ethan@gweithio.com>2026-02-14 16:44:06 +0000
committerEthan Morgan <ethan@gweithio.com>2026-02-14 16:44:06 +0000
commit54409423f767d8b1cf30cb7d0efca6b4ca138823 (patch)
treed915ac7828703ce4b963efdd9728a1777ba18c1e /vcpkg/ports/libgd
move to own git serverHEADmaster
Diffstat (limited to 'vcpkg/ports/libgd')
-rw-r--r--vcpkg/ports/libgd/cmake-project-include.cmake3
-rw-r--r--vcpkg/ports/libgd/control-build.patch59
-rw-r--r--vcpkg/ports/libgd/fix-dependencies.cmake39
-rw-r--r--vcpkg/ports/libgd/fix-static-usage.patch15
-rw-r--r--vcpkg/ports/libgd/fix_msvc_build.patch12
-rw-r--r--vcpkg/ports/libgd/portfile.cmake88
-rw-r--r--vcpkg/ports/libgd/usage6
-rw-r--r--vcpkg/ports/libgd/vcpkg.json67
8 files changed, 289 insertions, 0 deletions
diff --git a/vcpkg/ports/libgd/cmake-project-include.cmake b/vcpkg/ports/libgd/cmake-project-include.cmake
new file mode 100644
index 0000000..9993db0
--- /dev/null
+++ b/vcpkg/ports/libgd/cmake-project-include.cmake
@@ -0,0 +1,3 @@
+if(NOT BUILD_SHARED_LIBS)
+ add_definitions(-DNONDLL)
+endif()
diff --git a/vcpkg/ports/libgd/control-build.patch b/vcpkg/ports/libgd/control-build.patch
new file mode 100644
index 0000000..ba87b3a
--- /dev/null
+++ b/vcpkg/ports/libgd/control-build.patch
@@ -0,0 +1,59 @@
+diff --git a/CMakeLists.txt b/CMakeLists.txt
+index 6b3e5b3..bab784a 100644
+--- a/CMakeLists.txt
++++ b/CMakeLists.txt
+@@ -182,6 +182,21 @@ else (USE_EXT_GD)
+
+ SET(ENABLE_GD_FORMATS ${ENABLE_GD_FORMATS})
+
++ # The remaining code uses <Pkg>_FOUND, but this could be set as side effect.
++ # Restore explicit control. <Pkg>_FOUND is implied by <Pkg>_REQUIRED.
++ set(FONTCONFIG_FOUND ${ENABLE_FONTCONFIG})
++ set(FREETYPE_FOUND ${ENABLE_FREETYPE})
++ set(HEIF_FOUND ${ENABLE_HEIF})
++ set(ICONV_FOUND ${ENABLE_ICONV})
++ set(JPEG_FOUND ${ENABLE_JPEG})
++ set(LIQ_FOUND ${ENABLE_LIQ})
++ set(PNG_FOUND ${ENABLE_PNG})
++ set(RAQM_FOUND ${ENABLE_RAQM})
++ set(TIFF_FOUND ${ENABLE_TIFF})
++ set(WEBP_FOUND ${ENABLE_WEBP})
++ set(XPM_FOUND ${ENABLE_XPM})
++ set(ZLIB_FOUND ${ENABLE_GD_FORMATS})
++
+ if (FREETYPE_FOUND)
+ INCLUDE_DIRECTORIES(${FREETYPE_INCLUDE_DIRS})
+ SET(HAVE_FT2BUILD_H 1)
+@@ -299,8 +299,6 @@ else (USE_EXT_GD)
+ endif (USE_EXT_GD)
+
+ add_subdirectory(tests)
+-add_subdirectory(examples)
+-add_subdirectory(docs)
+
+ add_custom_target(distclean ${GD_SOURCE_DIR}/cmake/distclean.sh)
+
+diff --git a/src/CMakeLists.txt b/src/CMakeLists.txt
+index 3839bc7..4cb56eb 100644
+--- a/src/CMakeLists.txt
++++ b/src/CMakeLists.txt
+@@ -150,6 +150,9 @@ if (ZLIB_FOUND)
+ set(GD_PROGRAMS ${GD_PROGRAMS} gd2copypal gd2togif giftogd2)
+ endif()
+
++if(NOT ENABLE_TOOLS)
++ set(GD_PROGRAMS "")
++endif()
+ foreach(program ${GD_PROGRAMS})
+ add_executable(${program} ${program}.c)
+ if (WIN32)
+@@ -180,7 +183,9 @@ install(TARGETS ${GD_INSTALL_TARGETS}
+ RUNTIME DESTINATION bin
+ LIBRARY DESTINATION ${CMAKE_INSTALL_LIBDIR}
+ ARCHIVE DESTINATION ${CMAKE_INSTALL_LIBDIR})
++if(ENABLE_TOOLS)
+ install(PROGRAMS bdftogd DESTINATION bin)
++endif()
+ install(FILES
+ gd.h
+ gd_color_map.h
diff --git a/vcpkg/ports/libgd/fix-dependencies.cmake b/vcpkg/ports/libgd/fix-dependencies.cmake
new file mode 100644
index 0000000..48ad1fd
--- /dev/null
+++ b/vcpkg/ports/libgd/fix-dependencies.cmake
@@ -0,0 +1,39 @@
+diff --git a/CMakeLists.txt b/CMakeLists.txt
+index bab784a..76c20e8 100644
+--- a/CMakeLists.txt
++++ b/CMakeLists.txt
+@@ -134,7 +134,10 @@ else (USE_EXT_GD)
+ endif (ENABLE_ICONV)
+
+ IF (ENABLE_WEBP)
+- FIND_PACKAGE(WEBP REQUIRED)
++ find_package(WEBP NAMES WebP CONFIG REQUIRED)
++ set(WEBP_INCLUDE_DIR "")
++ set(WEBP_LIBRARIES WebP::webp)
++ list(APPEND PKG_REQUIRES_PRIVATES libwebp)
+ ENDIF (ENABLE_WEBP)
+
+ IF (ENABLE_HEIF)
+@@ -173,7 +176,9 @@ else (USE_EXT_GD)
+ endif (ENABLE_XPM)
+
+ if (ENABLE_FONTCONFIG)
+- FIND_PACKAGE(FontConfig REQUIRED)
++ FIND_PACKAGE(Fontconfig REQUIRED)
++ set(FONTCONFIG_INCLUDE_DIR "")
++ set(FONTCONFIG_LIBRARY Fontconfig::Fontconfig)
+ endif (ENABLE_FONTCONFIG)
+
+ if (ENABLE_RAQM)
+diff --git a/src/CMakeLists.txt b/src/CMakeLists.txt
+index 4cb56eb..74fa26b 100644
+--- a/src/CMakeLists.txt
++++ b/src/CMakeLists.txt
+@@ -125,7 +125,6 @@ endif()
+ SET(LIBS_PRIVATES
+ ${ICONV_LIBRARIES}
+ ${LIQ_LIBRARIES}
+- ${WEBP_LIBRARIES}
+ )
+
+ set(GD_PROGRAMS gdcmpgif)
diff --git a/vcpkg/ports/libgd/fix-static-usage.patch b/vcpkg/ports/libgd/fix-static-usage.patch
new file mode 100644
index 0000000..96fb88d
--- /dev/null
+++ b/vcpkg/ports/libgd/fix-static-usage.patch
@@ -0,0 +1,15 @@
+diff --git a/src/gd.h b/src/gd.h
+index 3056039..8a7608a 100644
+--- a/src/gd.h
++++ b/src/gd.h
+@@ -62,6 +62,10 @@ extern "C" {
+ # else
+ # define BGD_EXPORT_DATA_PROT __declspec(dllimport)
+ # endif
++# ifdef NONDLL
++# undef BGD_EXPORT_DATA_PROT
++# define BGD_EXPORT_DATA_PROT
++# endif
+ # endif
+ # define BGD_STDCALL __stdcall
+ # define BGD_EXPORT_DATA_IMPL
diff --git a/vcpkg/ports/libgd/fix_msvc_build.patch b/vcpkg/ports/libgd/fix_msvc_build.patch
new file mode 100644
index 0000000..eff795d
--- /dev/null
+++ b/vcpkg/ports/libgd/fix_msvc_build.patch
@@ -0,0 +1,12 @@
+diff --git a/src/gd_webp.c b/src/gd_webp.c
+index e9ad802..7631f27 100644
+--- a/src/gd_webp.c
++++ b/src/gd_webp.c
+@@ -16,6 +16,7 @@
+ #include "gd.h"
+ #include "gd_errors.h"
+ #include "gdhelpers.h"
++#include "gd_intern.h" # for ssize_t
+
+ #ifdef HAVE_LIBWEBP
+ #include "webp/decode.h"
diff --git a/vcpkg/ports/libgd/portfile.cmake b/vcpkg/ports/libgd/portfile.cmake
new file mode 100644
index 0000000..cd78ebc
--- /dev/null
+++ b/vcpkg/ports/libgd/portfile.cmake
@@ -0,0 +1,88 @@
+vcpkg_from_github(
+ OUT_SOURCE_PATH SOURCE_PATH
+ REPO libgd/libgd
+ REF b5319a41286107b53daa0e08e402aa1819764bdc # gd-2.3.3
+ SHA512 b4c6ca1d9575048de35a38b0db69e7380e160293133c1f72ae570f83ce614d4f2fd2615d217f7a0023e2265652c1089561b906beabca56c15e6ec0250e4394b2
+ HEAD_REF master
+ PATCHES
+ control-build.patch
+ fix-dependencies.cmake
+ fix_msvc_build.patch
+ fix-static-usage.patch
+)
+
+# Delete vendored Find modules
+file(REMOVE
+ "${SOURCE_PATH}/cmake/modules/CMakeParseArguments.cmake"
+ "${SOURCE_PATH}/cmake/modules/FindFontConfig.cmake"
+ "${SOURCE_PATH}/cmake/modules/FindFreetype.cmake"
+ "${SOURCE_PATH}/cmake/modules/FindJPEG.cmake"
+ "${SOURCE_PATH}/cmake/modules/FindPackageHandleStandardArgs.cmake"
+ "${SOURCE_PATH}/cmake/modules/FindPNG.cmake"
+ "${SOURCE_PATH}/cmake/modules/FindWEBP.cmake"
+)
+
+vcpkg_check_features(
+ OUT_FEATURE_OPTIONS FEATURE_OPTIONS
+ FEATURES
+ fontconfig ENABLE_FONTCONFIG
+ freetype ENABLE_FREETYPE
+ jpeg ENABLE_JPEG
+ tiff ENABLE_TIFF
+ png ENABLE_PNG
+ tools ENABLE_TOOLS
+ webp ENABLE_WEBP
+)
+
+string(COMPARE EQUAL "${VCPKG_LIBRARY_LINKAGE}" "static" BUILD_STATIC)
+
+vcpkg_cmake_configure(
+ SOURCE_PATH "${SOURCE_PATH}"
+ OPTIONS
+ ${FEATURE_OPTIONS}
+ -DBUILD_STATIC_LIBS=${BUILD_STATIC}
+ "-DCMAKE_PROJECT_INCLUDE=${CMAKE_CURRENT_LIST_DIR}/cmake-project-include.cmake"
+ OPTIONS_DEBUG
+ -DENABLE_TOOLS=OFF
+)
+vcpkg_cmake_install()
+vcpkg_copy_pdbs()
+
+if(BUILD_STATIC)
+ vcpkg_replace_string("${CURRENT_PACKAGES_DIR}/include/gd.h" "ifdef NONDLL" "if 1")
+endif()
+if(VCPKG_TARGET_IS_WINDOWS AND NOT VCPKG_TARGET_IS_MINGW)
+ string(REPLACE "_dynamic" "" suffix "_${VCPKG_LIBRARY_LINKAGE}")
+ vcpkg_replace_string("${CURRENT_PACKAGES_DIR}/lib/pkgconfig/gdlib.pc" " -lgd" " -llibgd${suffix}")
+ if(NOT VCPKG_BUILD_TYPE)
+ vcpkg_replace_string("${CURRENT_PACKAGES_DIR}/debug/lib/pkgconfig/gdlib.pc" " -lgd" " -llibgd${suffix}")
+ endif()
+endif()
+vcpkg_fixup_pkgconfig()
+
+if(ENABLE_TOOLS)
+ file(MAKE_DIRECTORY "${CURRENT_PACKAGES_DIR}/tools/${PORT}")
+ file(RENAME "${CURRENT_PACKAGES_DIR}/bin/bdftogd" "${CURRENT_PACKAGES_DIR}/tools/${PORT}/bdftogd")
+ vcpkg_list(SET tool_names gdcmpgif)
+ if(ENABLE_PNG)
+ vcpkg_list(APPEND tool_names gdtopng pngtogd)
+ endif()
+ if(NOT VCPKG_TARGET_IS_WINDOWS)
+ if(ENABLE_FREETYPE AND ENABLE_JPEG)
+ vcpkg_list(APPEND tool_names annotate)
+ endif()
+ if(ENABLE_PNG)
+ vcpkg_list(APPEND tool_names webpng)
+ endif()
+ endif()
+ vcpkg_copy_tools(TOOL_NAMES ${tool_names} AUTO_CLEAN)
+endif()
+
+file(REMOVE_RECURSE
+ "${CURRENT_PACKAGES_DIR}/debug/include"
+ "${CURRENT_PACKAGES_DIR}/debug/share"
+ "${CURRENT_PACKAGES_DIR}/share/doc"
+)
+
+file(INSTALL "${CMAKE_CURRENT_LIST_DIR}/usage" DESTINATION "${CURRENT_PACKAGES_DIR}/share/${PORT}")
+file(INSTALL "${SOURCE_PATH}/COPYING" DESTINATION "${CURRENT_PACKAGES_DIR}/share/${PORT}" RENAME copyright)
diff --git a/vcpkg/ports/libgd/usage b/vcpkg/ports/libgd/usage
new file mode 100644
index 0000000..35bb9a4
--- /dev/null
+++ b/vcpkg/ports/libgd/usage
@@ -0,0 +1,6 @@
+libgd can be imported via CMake FindPkgConfig module:
+
+ find_package(PkgConfig)
+ pkg_check_modules(LIBGD REQUIRED IMPORTED_TARGET gdlib)
+
+ target_link_libraries(main PRIVATE PkgConfig::LIBGD)
diff --git a/vcpkg/ports/libgd/vcpkg.json b/vcpkg/ports/libgd/vcpkg.json
new file mode 100644
index 0000000..eb0eb79
--- /dev/null
+++ b/vcpkg/ports/libgd/vcpkg.json
@@ -0,0 +1,67 @@
+{
+ "name": "libgd",
+ "version-semver": "2.3.3",
+ "port-version": 3,
+ "description": "Open source code library for the dynamic creation of images by programmers.",
+ "homepage": "https://github.com/libgd/libgd",
+ "license": "GD",
+ "dependencies": [
+ {
+ "name": "vcpkg-cmake",
+ "host": true
+ }
+ ],
+ "default-features": [
+ "fontconfig",
+ "freetype",
+ "jpeg",
+ "png",
+ "tiff",
+ "webp"
+ ],
+ "features": {
+ "fontconfig": {
+ "description": "Support for Fontconfig",
+ "dependencies": [
+ "fontconfig"
+ ]
+ },
+ "freetype": {
+ "description": "Support for FreeType",
+ "dependencies": [
+ "freetype"
+ ]
+ },
+ "jpeg": {
+ "description": "Support for JPEG",
+ "dependencies": [
+ "libjpeg-turbo"
+ ]
+ },
+ "png": {
+ "description": "Support for PNG",
+ "dependencies": [
+ "libpng",
+ "zlib"
+ ]
+ },
+ "tiff": {
+ "description": "Support for TIFF",
+ "dependencies": [
+ {
+ "name": "tiff",
+ "default-features": false
+ }
+ ]
+ },
+ "tools": {
+ "description": "Build tools"
+ },
+ "webp": {
+ "description": "Support for WebP",
+ "dependencies": [
+ "libwebp"
+ ]
+ }
+ }
+}