aboutsummaryrefslogtreecommitdiff
path: root/vcpkg/ports/ktx
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/ktx
move to own git serverHEADmaster
Diffstat (limited to 'vcpkg/ports/ktx')
-rw-r--r--vcpkg/ports/ktx/0001-Use-vcpkg-zstd.patch122
-rw-r--r--vcpkg/ports/ktx/0002-Fix-versioning.patch17
-rw-r--r--vcpkg/ports/ktx/0003-mkversion.patch13
-rw-r--r--vcpkg/ports/ktx/0004-quirks.patch21
-rw-r--r--vcpkg/ports/ktx/0005-no-vendored-libs.patch17
-rw-r--r--vcpkg/ports/ktx/0006-fix-ios-install.patch22
-rw-r--r--vcpkg/ports/ktx/portfile.cmake83
-rw-r--r--vcpkg/ports/ktx/vcpkg.json37
8 files changed, 332 insertions, 0 deletions
diff --git a/vcpkg/ports/ktx/0001-Use-vcpkg-zstd.patch b/vcpkg/ports/ktx/0001-Use-vcpkg-zstd.patch
new file mode 100644
index 0000000..71a587b
--- /dev/null
+++ b/vcpkg/ports/ktx/0001-Use-vcpkg-zstd.patch
@@ -0,0 +1,122 @@
+diff --git a/CMakeLists.txt b/CMakeLists.txt
+index 9a56491..d7ca937 100644
+--- a/CMakeLists.txt
++++ b/CMakeLists.txt
+@@ -345,7 +345,6 @@ set(KTX_MAIN_SRC
+ lib/basisu/transcoder/basisu_transcoder.cpp
+ lib/basisu/transcoder/basisu_transcoder.h
+ lib/basisu/transcoder/basisu.h
+- lib/basisu/zstd/zstd.c
+ lib/checkheader.c
+ lib/dfdutils/createdfd.c
+ lib/dfdutils/colourspaces.c
+@@ -532,7 +531,6 @@ macro(common_libktx_settings target enable_write library_type)
+ $<INSTALL_INTERFACE:lib/basisu/transcoder>
+
+ $<BUILD_INTERFACE:${CMAKE_CURRENT_SOURCE_DIR}/lib/basisu/zstd>
+- $<INSTALL_INTERFACE:lib/basisu/zstd>
+
+ $<BUILD_INTERFACE:${CMAKE_CURRENT_SOURCE_DIR}/utils>
+ $<INSTALL_INTERFACE:utils>
+@@ -627,6 +625,11 @@ macro(common_libktx_settings target enable_write library_type)
+ target_compile_definitions(${target} PUBLIC KTX_FEATURE_KTX2)
+ endif()
+
++ # Use vcpkg zstd
++ find_package(zstd CONFIG REQUIRED)
++ set(ZSTD_LIBRARIES "$<IF:$<TARGET_EXISTS:zstd::libzstd_shared>,zstd::libzstd_shared,zstd::libzstd_static>")
++ target_link_libraries(${target} PRIVATE ${ZSTD_LIBRARIES})
++
+ if(WIN32)
+ if(MINGW)
+ # Check if the Threads package is provided; if using Mingw it MIGHT be
+diff --git a/cmake/KtxConfig.cmake b/cmake/KtxConfig.cmake
+index 6386ba2..537bf4f 100644
+--- a/cmake/KtxConfig.cmake
++++ b/cmake/KtxConfig.cmake
+@@ -1,7 +1,8 @@
+ # Copyright 2015-2020 The Khronos Group Inc.
+ # SPDX-License-Identifier: Apache-2.0
+
+-# include(CMakeFindDependencyMacro)
+-# find_dependency()
++include(CMakeFindDependencyMacro)
++find_dependency(Threads)
++find_dependency(zstd CONFIG)
+
+ include("${CMAKE_CURRENT_LIST_DIR}/KtxTargets.cmake")
+diff --git a/lib/basisu/CMakeLists.txt b/lib/basisu/CMakeLists.txt
+index 492233a..152ceb5 100644
+--- a/lib/basisu/CMakeLists.txt
++++ b/lib/basisu/CMakeLists.txt
+@@ -145,9 +145,6 @@ set(BASISU_SRC_LIST ${COMMON_SRC_LIST}
+ transcoder/basisu_transcoder.cpp
+ )
+
+-if (ZSTD)
+- set(BASISU_SRC_LIST ${BASISU_SRC_LIST} zstd/zstd.c)
+-endif()
+
+ if (APPLE)
+ set(BIN_DIRECTORY "bin_osx")
+@@ -165,6 +162,10 @@ else()
+ target_compile_definitions(basisu PRIVATE BASISD_SUPPORT_KTX2_ZSTD=0)
+ endif()
+
++if(ZSTD_LIBRARIES)
++ target_link_libraries(basisu ${ZSTD_LIBRARIES})
++endif()
++
+ if (NOT MSVC)
+ # For Non-Windows builds, let cmake try and find the system OpenCL headers/libs for us.
+ if (OPENCL_FOUND)
+diff --git a/lib/basisu/webgl/encoder/CMakeLists.txt b/lib/basisu/webgl/encoder/CMakeLists.txt
+index 588d91b..a337b13 100644
+--- a/lib/basisu/webgl/encoder/CMakeLists.txt
++++ b/lib/basisu/webgl/encoder/CMakeLists.txt
+@@ -34,9 +34,6 @@ if (EMSCRIPTEN)
+ )
+
+ if (KTX2_ZSTANDARD)
+- set(SRC_LIST ${SRC_LIST}
+- ../../zstd/zstd.c
+- )
+ set(ZSTD_DEFINITION BASISD_SUPPORT_KTX2_ZSTD=1)
+ else()
+ set(ZSTD_DEFINITION BASISD_SUPPORT_KTX2_ZSTD=0)
+@@ -55,6 +52,10 @@ if (EMSCRIPTEN)
+ target_compile_options(basis_encoder.js PRIVATE -fno-strict-aliasing -O3)
+
+ target_include_directories(basis_encoder.js PRIVATE ../../transcoder)
++
++ if(ZSTD_LIBRARIES)
++ target_link_libraries(basis_encoder.js ${ZSTD_LIBRARIES})
++ endif()
+
+ set_target_properties(basis_encoder.js PROPERTIES
+ OUTPUT_NAME "basis_encoder"
+diff --git a/lib/basisu/webgl/transcoder/CMakeLists.txt b/lib/basisu/webgl/transcoder/CMakeLists.txt
+index 372653d..5ebc3cf 100644
+--- a/lib/basisu/webgl/transcoder/CMakeLists.txt
++++ b/lib/basisu/webgl/transcoder/CMakeLists.txt
+@@ -28,9 +28,6 @@ if (EMSCRIPTEN)
+ endif()
+
+ if (KTX2_ZSTANDARD)
+- set(SRC_LIST ${SRC_LIST}
+- ../../zstd/zstddeclib.c
+- )
+ set(ZSTD_DEFINITION BASISD_SUPPORT_KTX2_ZSTD=1)
+ else()
+ set(ZSTD_DEFINITION BASISD_SUPPORT_KTX2_ZSTD=0)
+@@ -44,6 +41,10 @@ if (EMSCRIPTEN)
+ target_compile_definitions(basis_transcoder.js PRIVATE NDEBUG BASISD_SUPPORT_UASTC=1 BASISD_SUPPORT_BC7=1 BASISD_SUPPORT_ATC=0 BASISD_SUPPORT_ASTC_HIGHER_OPAQUE_QUALITY=0 BASISD_SUPPORT_PVRTC2=0 BASISD_SUPPORT_FXT1=0 BASISD_SUPPORT_ETC2_EAC_RG11=0 BASISU_SUPPORT_ENCODING=0 ${KTX2_DEFINITION} ${ZSTD_DEFINITION} )
+ target_compile_options(basis_transcoder.js PRIVATE -O3 -fno-strict-aliasing)
+ target_include_directories(basis_transcoder.js PRIVATE ../../transcoder)
++
++ if(ZSTD_LIBRARIES)
++ target_link_libraries(basis_transcoder.js ${ZSTD_LIBRARIES})
++ endif()
+
+ set_target_properties(basis_transcoder.js PROPERTIES
+ OUTPUT_NAME "basis_transcoder"
diff --git a/vcpkg/ports/ktx/0002-Fix-versioning.patch b/vcpkg/ports/ktx/0002-Fix-versioning.patch
new file mode 100644
index 0000000..1e50988
--- /dev/null
+++ b/vcpkg/ports/ktx/0002-Fix-versioning.patch
@@ -0,0 +1,17 @@
+diff --git a/cmake/version.cmake b/cmake/version.cmake
+index 4094df1a..3b2af3bb 100644
+--- a/cmake/version.cmake
++++ b/cmake/version.cmake
+@@ -108,8 +108,10 @@ function(generate_version _var )
+ set(${_var} "${KTX_VERSION}" PARENT_SCOPE)
+ endfunction()
+
+-# Get latest tag
+-git_describe_raw(KTX_VERSION_FULL --abbrev=0 --match v[0-9]*)
++if (!KTX_VERSION_FULL)
++ # Get latest tag
++ git_describe_raw(KTX_VERSION_FULL --abbrev=0 --match v[0-9]*)
++endif()
+ #message("KTX full version: ${KTX_VERSION_FULL}")
+
+ # generate_version(TOKTX_VERSION tools/toktx)
diff --git a/vcpkg/ports/ktx/0003-mkversion.patch b/vcpkg/ports/ktx/0003-mkversion.patch
new file mode 100644
index 0000000..ee8b3c4
--- /dev/null
+++ b/vcpkg/ports/ktx/0003-mkversion.patch
@@ -0,0 +1,13 @@
+diff --git a/cmake/version.cmake b/cmake/version.cmake
+index 9a90622..0fc3521 100644
+--- a/cmake/version.cmake
++++ b/cmake/version.cmake
+@@ -176,7 +176,7 @@ function( create_version_header dest_path target )
+ add_custom_command(
+ OUTPUT ${version_h_output}
+ # On Windows this command has to be invoked by a shell in order to work
+- COMMAND ${BASH_EXECUTABLE} -c "\"./mkversion\" \"-o\" \"version.h\" \"${dest_path}\""
++ COMMAND "${BASH_EXECUTABLE}" -- ./mkversion -o version.h "${dest_path}"
+ WORKING_DIRECTORY ${PROJECT_SOURCE_DIR}
+ COMMENT "Generate ${version_h_output}"
+ VERBATIM
diff --git a/vcpkg/ports/ktx/0004-quirks.patch b/vcpkg/ports/ktx/0004-quirks.patch
new file mode 100644
index 0000000..afc3423
--- /dev/null
+++ b/vcpkg/ports/ktx/0004-quirks.patch
@@ -0,0 +1,21 @@
+diff --git a/CMakeLists.txt b/CMakeLists.txt
+index 1500844..810914e 100644
+--- a/CMakeLists.txt
++++ b/CMakeLists.txt
+@@ -263,7 +263,7 @@ if(MSVC)
+ # ";" argument separator is problematic. Can't use a GenEx `$<IF:`
+ # because `/W4;/WX` is returned as a single string.
+ add_compile_options( /W4;$<$<BOOL:${KTX_WERROR}>:/WX> )
+- add_compile_options( $<IF:$<CONFIG:Debug>,/Gz,/O2> )
++ add_compile_options( $<IF:$<CONFIG:Debug>,,/O2> )
+ # Enable UTF-8 support
+ add_compile_options( $<$<C_COMPILER_ID:MSVC>:/utf-8> )
+ add_compile_options( $<$<CXX_COMPILER_ID:MSVC>:/utf-8> )
+@@ -946,6 +946,7 @@ if(EMSCRIPTEN)
+ endif()
+
+ add_library( objUtil STATIC
++ EXCLUDE_FROM_ALL
+ utils/argparser.cpp
+ utils/argparser.h
+ utils/ktxapp.h
diff --git a/vcpkg/ports/ktx/0005-no-vendored-libs.patch b/vcpkg/ports/ktx/0005-no-vendored-libs.patch
new file mode 100644
index 0000000..4c90022
--- /dev/null
+++ b/vcpkg/ports/ktx/0005-no-vendored-libs.patch
@@ -0,0 +1,17 @@
+diff --git a/CMakeLists.txt b/CMakeLists.txt
+index e99fb143..0f69adf7 100644
+--- a/CMakeLists.txt
++++ b/CMakeLists.txt
+@@ -1071,10 +1071,10 @@ endif()
+ if((KTX_FEATURE_TOOLS OR KTX_FEATURE_TESTS) AND NOT TARGET fmt::fmt)
+ set(FMT_INSTALL OFF)
+ set(FMT_SYSTEM_HEADERS ON)
+- add_subdirectory(other_projects/fmt)
++ find_package(fmt CONFIG REQUIRED)
+ endif()
+ if(KTX_FEATURE_TOOLS AND NOT TARGET cxxopts::cxxopts)
+- add_subdirectory(other_projects/cxxopts)
++ find_package(cxxopts CONFIG REQUIRED)
+ endif()
+
+ # Tools
diff --git a/vcpkg/ports/ktx/0006-fix-ios-install.patch b/vcpkg/ports/ktx/0006-fix-ios-install.patch
new file mode 100644
index 0000000..0af3fea
--- /dev/null
+++ b/vcpkg/ports/ktx/0006-fix-ios-install.patch
@@ -0,0 +1,22 @@
+diff --git a/CMakeLists.txt b/CMakeLists.txt
+index e99fb143..072ea889 100644
+--- a/CMakeLists.txt
++++ b/CMakeLists.txt
+@@ -489,7 +489,7 @@ macro(common_libktx_settings target enable_write library_type)
+ CXX_STANDARD_REQUIRED YES
+
+ )
+- if(IOS)
++ if(0)
+ set_target_properties(${target} PROPERTIES
+ FRAMEWORK TRUE
+ )
+@@ -1145,7 +1145,7 @@ endif()
+ # Use of this to install KHR/khr_df.h is due to CMake's failure to
+ # preserve the include source folder hierarchy.
+ # See https://gitlab.kitware.com/cmake/cmake/-/issues/16739.
+-if (IOS)
++if (0)
+ set_source_files_properties(
+ include/KHR/khr_df.h
+ PROPERTIES MACOSX_PACKAGE_LOCATION Headers/KHR
diff --git a/vcpkg/ports/ktx/portfile.cmake b/vcpkg/ports/ktx/portfile.cmake
new file mode 100644
index 0000000..c8984c1
--- /dev/null
+++ b/vcpkg/ports/ktx/portfile.cmake
@@ -0,0 +1,83 @@
+vcpkg_from_github(
+ OUT_SOURCE_PATH SOURCE_PATH
+ REPO KhronosGroup/KTX-Software
+ REF "v${VERSION}"
+ SHA512 0077315fe2b4e676e97e3a158c2c6e1f6ba426e14ad23342592cd69be28cfce64c40614e0a84d58a9634877ab334e713b94d4c962132c98bfea308e91bc8a98a
+ HEAD_REF master
+ PATCHES
+ 0001-Use-vcpkg-zstd.patch
+ 0002-Fix-versioning.patch
+ 0003-mkversion.patch
+ 0004-quirks.patch
+ 0005-no-vendored-libs.patch
+ 0006-fix-ios-install.patch
+)
+file(REMOVE "${SOURCE_PATH}/other_include/zstd_errors.h")
+file(REMOVE_RECURSE "${SOURCE_PATH}/external/basisu/zstd")
+file(REMOVE_RECURSE "${SOURCE_PATH}/lib/basisu/zstd")
+
+vcpkg_list(SET OPTIONS)
+if(VCPKG_TARGET_IS_WINDOWS)
+ vcpkg_acquire_msys(MSYS_ROOT
+ PACKAGES
+ bash
+ DIRECT_PACKAGES
+ # Required for "getopt"
+ "https://repo.msys2.org/msys/x86_64/util-linux-2.40.2-2-x86_64.pkg.tar.zst"
+ bf45b16cd470f8d82a9fe03842a09da2e6c60393c11f4be0bab354655072c7a461afc015b9c07f9f5c87a0e382cd867e4f079ede0d42f1589aa99ebbb3f76309
+ # Required for "dos2unix"
+ "https://mirror.msys2.org/msys/x86_64/dos2unix-7.5.2-1-x86_64.pkg.tar.zst"
+ e5e949f01b19c82630131e338a4642da75e42f84220f5af4a97a11dd618e363396567b233d2adab79e05422660a0000abcbbabcd17efcadf37f07fe7565f041e
+ )
+ vcpkg_add_to_path("${MSYS_ROOT}/usr/bin")
+ vcpkg_list(APPEND OPTIONS "-DBASH_EXECUTABLE=${MSYS_ROOT}/usr/bin/bash.exe")
+endif()
+
+string(COMPARE EQUAL "${VCPKG_LIBRARY_LINKAGE}" "static" ENABLE_STATIC)
+
+vcpkg_check_features(OUT_FEATURE_OPTIONS FEATURE_OPTIONS
+ FEATURES
+ tools KTX_FEATURE_TOOLS
+ vulkan KTX_FEATURE_VK_UPLOAD
+)
+
+vcpkg_cmake_configure(
+ SOURCE_PATH "${SOURCE_PATH}"
+ OPTIONS
+ -DKTX_VERSION_FULL=v${VERSION}
+ -DKTX_FEATURE_TESTS=OFF
+ -DKTX_FEATURE_LOADTEST_APPS=OFF
+ -DKTX_FEATURE_STATIC_LIBRARY=${ENABLE_STATIC}
+ ${FEATURE_OPTIONS}
+ ${OPTIONS}
+ DISABLE_PARALLEL_CONFIGURE
+)
+
+vcpkg_cmake_install()
+
+if(tools IN_LIST FEATURES)
+ vcpkg_copy_tools(
+ TOOL_NAMES
+ ktx
+ toktx
+ ktxsc
+ ktxinfo
+ ktx2ktx2
+ ktx2check
+ AUTO_CLEAN
+ )
+else()
+ vcpkg_copy_pdbs()
+endif()
+
+vcpkg_cmake_config_fixup(CONFIG_PATH lib/cmake/ktx)
+
+file(REMOVE_RECURSE "${CURRENT_PACKAGES_DIR}/debug/include")
+
+if(VCPKG_LIBRARY_LINKAGE STREQUAL "static")
+ file(REMOVE_RECURSE "${CURRENT_PACKAGES_DIR}/bin" "${CURRENT_PACKAGES_DIR}/debug/bin")
+endif()
+
+file(GLOB LICENSE_FILES "${SOURCE_PATH}/LICENSES/*")
+file(COPY ${LICENSE_FILES} DESTINATION "${CURRENT_PACKAGES_DIR}/share/${PORT}/LICENSES")
+vcpkg_install_copyright(FILE_LIST "${SOURCE_PATH}/LICENSE.md")
diff --git a/vcpkg/ports/ktx/vcpkg.json b/vcpkg/ports/ktx/vcpkg.json
new file mode 100644
index 0000000..4eb3b0a
--- /dev/null
+++ b/vcpkg/ports/ktx/vcpkg.json
@@ -0,0 +1,37 @@
+{
+ "name": "ktx",
+ "version-semver": "4.3.2",
+ "port-version": 2,
+ "description": [
+ "The Khronos KTX library and tools.",
+ "Functions for writing and reading KTX files, and instantiating OpenGL®, OpenGL ES™️ and Vulkan® textures from them."
+ ],
+ "homepage": "https://github.com/KhronosGroup/KTX-Software",
+ "license": null,
+ "supports": "arm64 | x64 | !windows",
+ "dependencies": [
+ {
+ "name": "vcpkg-cmake",
+ "host": true
+ },
+ {
+ "name": "vcpkg-cmake-config",
+ "host": true
+ },
+ "zstd"
+ ],
+ "features": {
+ "tools": {
+ "description": "Build tools",
+ "supports": "!android & !uwp",
+ "dependencies": [
+ "cxxopts",
+ "fmt"
+ ]
+ },
+ "vulkan": {
+ "description": "Build Vulkan support",
+ "supports": "!emscripten"
+ }
+ }
+}