Add ktx
This commit is contained in:
@@ -0,0 +1,135 @@
|
||||
#[============================================================================
|
||||
# Copyright 2022, Khronos Group, Inc.
|
||||
# SPDX-License-Identifier: Apache-2.0
|
||||
#============================================================================]
|
||||
|
||||
# Functions to convert unix-style paths into paths useable by cmake on windows.
|
||||
#[=======================================================================[.rst:
|
||||
Findsigntool
|
||||
-------
|
||||
|
||||
Finds the signtool executable used for codesigning on Windows.
|
||||
|
||||
Note that signtool does not offer a way to make it print its version
|
||||
so version selection and reporting is not possible.
|
||||
|
||||
Result Variables
|
||||
^^^^^^^^^^^^^^^^
|
||||
|
||||
This will define the following variables:
|
||||
|
||||
``signtool_FOUND``
|
||||
True if the system has the signtool executable.
|
||||
``signtool_EXECUTABLE``
|
||||
The signtool command executable.
|
||||
|
||||
#]=======================================================================]
|
||||
|
||||
if (WIN32 AND CMAKE_HOST_SYSTEM_NAME MATCHES "CYGWIN.*")
|
||||
find_program(CYGPATH
|
||||
NAMES cygpath
|
||||
HINTS [HKEY_LOCAL_MACHINE\\Software\\Cygwin\\setup;rootdir]/bin
|
||||
PATHS C:/cygwin64/bin
|
||||
C:/cygwin/bin
|
||||
)
|
||||
endif ()
|
||||
|
||||
function(convert_cygwin_path _pathvar)
|
||||
if (WIN32 AND CYGPATH)
|
||||
execute_process(
|
||||
COMMAND "${CYGPATH}" -m "${${_pathvar}}"
|
||||
OUTPUT_VARIABLE ${_pathvar}
|
||||
OUTPUT_STRIP_TRAILING_WHITESPACE
|
||||
)
|
||||
set(${_pathvar} "${${_pathvar}}" PARENT_SCOPE)
|
||||
endif ()
|
||||
endfunction()
|
||||
|
||||
function(convert_windows_path _pathvar)
|
||||
if (CYGPATH)
|
||||
execute_process(
|
||||
COMMAND "${CYGPATH}" "${${_pathvar}}"
|
||||
OUTPUT_VARIABLE ${_pathvar}
|
||||
OUTPUT_STRIP_TRAILING_WHITESPACE
|
||||
)
|
||||
set(${_pathvar} "${${_pathvar}}" PARENT_SCOPE)
|
||||
endif ()
|
||||
endfunction()
|
||||
|
||||
# Make a list of Windows Kit versions with newer versions first.
|
||||
#
|
||||
# _root string KitsRoot for the Windows version whose kits to find.
|
||||
# _versions variable name Variable in which to return the list of versions.
|
||||
#
|
||||
function(find_kits _winver _kit_versions)
|
||||
set(${_kit_versions})
|
||||
set(_kit_root "KitsRoot${_winver}")
|
||||
set(regkey "HKEY_LOCAL_MACHINE\\SOFTWARE\\Microsoft\\Windows Kits\\Installed Roots")
|
||||
set(regval ${_kit_root})
|
||||
if(CMAKE_HOST_SYSTEM_NAME MATCHES "Windows")
|
||||
# Note: must be a cache operation in order to read from the registry.
|
||||
get_filename_component(_kits_path "[${regkey};${regval}]"
|
||||
ABSOLUTE CACHE
|
||||
)
|
||||
elseif(CMAKE_HOST_SYSTEM_NAME MATCHES "CYGWIN.*")
|
||||
# On Cygwin, CMake's built-in registry query won't work.
|
||||
# Use Cygwin utility "regtool" instead.
|
||||
execute_process(COMMAND regtool get "\\${regkey}\\${regval}"
|
||||
OUTPUT_VARIABLE _kits_path}
|
||||
ERROR_QUIET
|
||||
OUTPUT_STRIP_TRAILING_WHITESPACE
|
||||
)
|
||||
if (_kits_path)
|
||||
convert_windows_path(_kits_path)
|
||||
endif ()
|
||||
endif()
|
||||
if (_kits_path)
|
||||
file(GLOB ${_kit_versions} "${_kits_path}/bin/${_winver}.*")
|
||||
# Reverse list, so newer versions (higher-numbered) appear first.
|
||||
list(REVERSE ${_kit_versions})
|
||||
endif ()
|
||||
unset(_kits_path CACHE)
|
||||
set(${_kit_versions} ${${_kit_versions}} PARENT_SCOPE)
|
||||
endfunction()
|
||||
|
||||
if (WIN32 AND NOT signtool_EXECUTABLE)
|
||||
if(${CMAKE_HOST_SYSTEM_PROCESSOR} STREQUAL "AMD64")
|
||||
set(arch "x64")
|
||||
else()
|
||||
set(arch ${CMAKE_HOST_SYSTEM_PROCESSOR})
|
||||
endif()
|
||||
|
||||
# Look for latest signtool
|
||||
foreach(winver 11 10)
|
||||
find_kits(${winver} kit_versions)
|
||||
if (kit_versions)
|
||||
find_program(signtool_EXECUTABLE
|
||||
NAMES signtool
|
||||
PATHS ${kit_versions}
|
||||
PATH_SUFFIXES ${arch}
|
||||
bin/${arch}
|
||||
bin
|
||||
NO_DEFAULT_PATH
|
||||
)
|
||||
if (signtool_EXECUTABLE)
|
||||
break()
|
||||
endif()
|
||||
endif()
|
||||
endforeach()
|
||||
|
||||
if (signtool_EXECUTABLE)
|
||||
mark_as_advanced (signtool_EXECUTABLE)
|
||||
endif ()
|
||||
|
||||
# handle the QUIETLY and REQUIRED arguments and set *_FOUND to TRUE
|
||||
# if all listed variables are found or TRUE
|
||||
include (FindPackageHandleStandardArgs)
|
||||
|
||||
find_package_handle_standard_args (
|
||||
signtool
|
||||
REQUIRED_VARS
|
||||
signtool_EXECUTABLE
|
||||
FAIL_MESSAGE
|
||||
"Could NOT find signtool. Will be unable to sign Windows binaries."
|
||||
)
|
||||
endif()
|
||||
Reference in New Issue
Block a user