diff options
| author | Ethan Morgan <ethan@gweithio.com> | 2026-02-14 16:44:06 +0000 |
|---|---|---|
| committer | Ethan Morgan <ethan@gweithio.com> | 2026-02-14 16:44:06 +0000 |
| commit | 54409423f767d8b1cf30cb7d0efca6b4ca138823 (patch) | |
| tree | d915ac7828703ce4b963efdd9728a1777ba18c1e /vcpkg/ports/ktx | |
Diffstat (limited to 'vcpkg/ports/ktx')
| -rw-r--r-- | vcpkg/ports/ktx/0001-Use-vcpkg-zstd.patch | 122 | ||||
| -rw-r--r-- | vcpkg/ports/ktx/0002-Fix-versioning.patch | 17 | ||||
| -rw-r--r-- | vcpkg/ports/ktx/0003-mkversion.patch | 13 | ||||
| -rw-r--r-- | vcpkg/ports/ktx/0004-quirks.patch | 21 | ||||
| -rw-r--r-- | vcpkg/ports/ktx/0005-no-vendored-libs.patch | 17 | ||||
| -rw-r--r-- | vcpkg/ports/ktx/0006-fix-ios-install.patch | 22 | ||||
| -rw-r--r-- | vcpkg/ports/ktx/portfile.cmake | 83 | ||||
| -rw-r--r-- | vcpkg/ports/ktx/vcpkg.json | 37 |
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" + } + } +} |