aboutsummaryrefslogtreecommitdiffstats
path: root/cmake
diff options
context:
space:
mode:
Diffstat (limited to 'cmake')
-rw-r--r--cmake/FindDSound.cmake41
-rw-r--r--cmake/FindFFmpeg.cmake26
-rw-r--r--cmake/FindMySOFA.cmake2
-rw-r--r--cmake/FindOboe.cmake31
-rw-r--r--cmake/FindOpenSL.cmake25
-rw-r--r--cmake/FindPulseAudio.cmake9
-rw-r--r--cmake/FindQSA.cmake34
-rw-r--r--cmake/FindSDL2.cmake191
-rw-r--r--cmake/FindSDL_sound.cmake429
-rw-r--r--cmake/FindSndFile.cmake25
-rw-r--r--cmake/FindWindowsSDK.cmake631
-rw-r--r--cmake/bin2h.script.cmake12
12 files changed, 83 insertions, 1373 deletions
diff --git a/cmake/FindDSound.cmake b/cmake/FindDSound.cmake
deleted file mode 100644
index 4078deb5..00000000
--- a/cmake/FindDSound.cmake
+++ /dev/null
@@ -1,41 +0,0 @@
-# - Find DirectSound includes and libraries
-#
-# DSOUND_FOUND - True if DSOUND_INCLUDE_DIR & DSOUND_LIBRARY are found
-# DSOUND_LIBRARIES - Set when DSOUND_LIBRARY is found
-# DSOUND_INCLUDE_DIRS - Set when DSOUND_INCLUDE_DIR is found
-#
-# DSOUND_INCLUDE_DIR - where to find dsound.h, etc.
-# DSOUND_LIBRARY - the dsound library
-#
-
-if (WIN32)
- include(FindWindowsSDK)
- if (WINDOWSSDK_FOUND)
- get_windowssdk_library_dirs(${WINDOWSSDK_PREFERRED_DIR} WINSDK_LIB_DIRS)
- get_windowssdk_include_dirs(${WINDOWSSDK_PREFERRED_DIR} WINSDK_INCLUDE_DIRS)
- endif()
-endif()
-
-# DSOUND_INCLUDE_DIR
-find_path(DSOUND_INCLUDE_DIR
- NAMES "dsound.h"
- PATHS "${DXSDK_DIR}" ${WINSDK_INCLUDE_DIRS}
- PATH_SUFFIXES include
- DOC "The DirectSound include directory")
-
-# DSOUND_LIBRARY
-find_library(DSOUND_LIBRARY
- NAMES dsound
- PATHS "${DXSDK_DIR}" ${WINSDK_LIB_DIRS}
- PATH_SUFFIXES lib lib/x86 lib/x64
- DOC "The DirectSound library")
-
-include(FindPackageHandleStandardArgs)
-find_package_handle_standard_args(DSound REQUIRED_VARS DSOUND_LIBRARY DSOUND_INCLUDE_DIR)
-
-if(DSOUND_FOUND)
- set(DSOUND_LIBRARIES ${DSOUND_LIBRARY})
- set(DSOUND_INCLUDE_DIRS ${DSOUND_INCLUDE_DIR})
-endif()
-
-mark_as_advanced(DSOUND_INCLUDE_DIR DSOUND_LIBRARY)
diff --git a/cmake/FindFFmpeg.cmake b/cmake/FindFFmpeg.cmake
index c489c2c3..26ed4d2f 100644
--- a/cmake/FindFFmpeg.cmake
+++ b/cmake/FindFFmpeg.cmake
@@ -80,30 +80,8 @@ macro(find_component _component _pkgconfig _library _header)
${PC_LIB${_component}_LIBRARY_DIRS}
)
- STRING(REGEX REPLACE "/.*" "/version.h" _ver_header ${_header})
- if(EXISTS "${${_component}_INCLUDE_DIRS}/${_ver_header}")
- file(STRINGS "${${_component}_INCLUDE_DIRS}/${_ver_header}" version_str REGEX "^#define[\t ]+LIB${_component}_VERSION_M.*")
-
- foreach(_str "${version_str}")
- if(NOT version_maj)
- string(REGEX REPLACE "^.*LIB${_component}_VERSION_MAJOR[\t ]+([0-9]*).*$" "\\1" version_maj "${_str}")
- endif()
- if(NOT version_min)
- string(REGEX REPLACE "^.*LIB${_component}_VERSION_MINOR[\t ]+([0-9]*).*$" "\\1" version_min "${_str}")
- endif()
- if(NOT version_mic)
- string(REGEX REPLACE "^.*LIB${_component}_VERSION_MICRO[\t ]+([0-9]*).*$" "\\1" version_mic "${_str}")
- endif()
- endforeach()
- unset(version_str)
-
- set(${_component}_VERSION "${version_maj}.${version_min}.${version_mic}" CACHE STRING "The ${_component} version number.")
- unset(version_maj)
- unset(version_min)
- unset(version_mic)
- endif(EXISTS "${${_component}_INCLUDE_DIRS}/${_ver_header}")
- set(${_component}_VERSION ${PC_${_component}_VERSION} CACHE STRING "The ${_component} version number.")
- set(${_component}_DEFINITIONS ${PC_${_component}_CFLAGS_OTHER} CACHE STRING "The ${_component} CFLAGS.")
+ set(${_component}_VERSION ${PC_${_component}_VERSION} CACHE STRING "The ${_component} version number." FORCE)
+ set(${_component}_DEFINITIONS ${PC_${_component}_CFLAGS_OTHER} CACHE STRING "The ${_component} CFLAGS." FORCE)
set_component_found(${_component})
diff --git a/cmake/FindMySOFA.cmake b/cmake/FindMySOFA.cmake
index a1d57446..7d485c35 100644
--- a/cmake/FindMySOFA.cmake
+++ b/cmake/FindMySOFA.cmake
@@ -56,7 +56,7 @@ find_library(MYSOFA_M_LIBRARY NAMES m
# handle the QUIETLY and REQUIRED arguments and set MYSOFA_FOUND to TRUE if
# all listed variables are TRUE
include(FindPackageHandleStandardArgs)
-find_package_handle_standard_args(MYSOFA REQUIRED_VARS MYSOFA_LIBRARY MYSOFA_INCLUDE_DIR ZLIB_FOUND)
+find_package_handle_standard_args(MySOFA REQUIRED_VARS MYSOFA_LIBRARY MYSOFA_INCLUDE_DIR ZLIB_FOUND)
if(MYSOFA_FOUND)
set(MYSOFA_INCLUDE_DIRS ${MYSOFA_INCLUDE_DIR})
diff --git a/cmake/FindOboe.cmake b/cmake/FindOboe.cmake
new file mode 100644
index 00000000..bf12c12c
--- /dev/null
+++ b/cmake/FindOboe.cmake
@@ -0,0 +1,31 @@
+# - Find Oboe
+# Find the Oboe library
+#
+# This module defines the following variable:
+# OBOE_FOUND - True if Oboe was found
+#
+# This module defines the following target:
+# oboe::oboe - Import target for linking Oboe to a project
+#
+
+find_path(OBOE_INCLUDE_DIR NAMES oboe/Oboe.h
+ DOC "The Oboe include directory"
+)
+
+find_library(OBOE_LIBRARY NAMES oboe
+ DOC "The Oboe library"
+)
+
+# handle the QUIETLY and REQUIRED arguments and set OBOE_FOUND to TRUE if
+# all listed variables are TRUE
+include(FindPackageHandleStandardArgs)
+find_package_handle_standard_args(Oboe REQUIRED_VARS OBOE_LIBRARY OBOE_INCLUDE_DIR)
+
+if(OBOE_FOUND)
+ add_library(oboe::oboe UNKNOWN IMPORTED)
+ set_target_properties(oboe::oboe PROPERTIES
+ IMPORTED_LOCATION ${OBOE_LIBRARY}
+ INTERFACE_INCLUDE_DIRECTORIES ${OBOE_INCLUDE_DIR})
+endif()
+
+mark_as_advanced(OBOE_INCLUDE_DIR OBOE_LIBRARY)
diff --git a/cmake/FindOpenSL.cmake b/cmake/FindOpenSL.cmake
index 41c68fde..00428749 100644
--- a/cmake/FindOpenSL.cmake
+++ b/cmake/FindOpenSL.cmake
@@ -1,10 +1,9 @@
# - Find OpenSL
# Find the OpenSL libraries
#
-# This module defines the following variables:
-# OPENSL_FOUND - True if OPENSL_INCLUDE_DIR & OPENSL_LIBRARY are set
-# OPENSL_INCLUDE_DIRS - where to find SLES/OpenSLES.h, etc.
-# OPENSL_LIBRARIES - the OpenSL library
+# This module defines the following variables and targets:
+# OPENSL_FOUND - True if OPENSL was found
+# OpenSL::OpenSLES - The OpenSLES target
#
#=============================================================================
@@ -40,25 +39,25 @@
#=============================================================================
find_path(OPENSL_INCLUDE_DIR NAMES SLES/OpenSLES.h
- DOC "The OpenSL include directory"
-)
+ DOC "The OpenSL include directory")
find_path(OPENSL_ANDROID_INCLUDE_DIR NAMES SLES/OpenSLES_Android.h
- DOC "The OpenSL Android include directory"
-)
+ DOC "The OpenSL Android include directory")
find_library(OPENSL_LIBRARY NAMES OpenSLES
- DOC "The OpenSL library"
-)
+ DOC "The OpenSL library")
# handle the QUIETLY and REQUIRED arguments and set OPENSL_FOUND to TRUE if
# all listed variables are TRUE
include(FindPackageHandleStandardArgs)
-find_package_handle_standard_args(OPENSL REQUIRED_VARS OPENSL_LIBRARY OPENSL_INCLUDE_DIR
+find_package_handle_standard_args(OpenSL REQUIRED_VARS OPENSL_LIBRARY OPENSL_INCLUDE_DIR
OPENSL_ANDROID_INCLUDE_DIR)
if(OPENSL_FOUND)
- set(OPENSL_LIBRARIES ${OPENSL_LIBRARY})
- set(OPENSL_INCLUDE_DIRS ${OPENSL_INCLUDE_DIR} ${OPENSL_ANDROID_INCLUDE_DIR})
+ add_library(OpenSL::OpenSLES UNKNOWN IMPORTED)
+ set_target_properties(OpenSL::OpenSLES PROPERTIES
+ IMPORTED_LOCATION ${OPENSL_LIBRARY}
+ INTERFACE_INCLUDE_DIRECTORIES ${OPENSL_INCLUDE_DIR}
+ INTERFACE_INCLUDE_DIRECTORIES ${OPENSL_ANDROID_INCLUDE_DIR})
endif()
mark_as_advanced(OPENSL_INCLUDE_DIR OPENSL_ANDROID_INCLUDE_DIR OPENSL_LIBRARY)
diff --git a/cmake/FindPulseAudio.cmake b/cmake/FindPulseAudio.cmake
index 1f6f843a..fdcbc20f 100644
--- a/cmake/FindPulseAudio.cmake
+++ b/cmake/FindPulseAudio.cmake
@@ -2,8 +2,6 @@
#
# PULSEAUDIO_FOUND - True if PULSEAUDIO_INCLUDE_DIR &
# PULSEAUDIO_LIBRARY are found
-# PULSEAUDIO_LIBRARIES - Set when PULSEAUDIO_LIBRARY is found
-# PULSEAUDIO_INCLUDE_DIRS - Set when PULSEAUDIO_INCLUDE_DIR is found
#
# PULSEAUDIO_INCLUDE_DIR - where to find pulse/pulseaudio.h, etc.
# PULSEAUDIO_LIBRARY - the pulse library
@@ -34,10 +32,3 @@ find_package_handle_standard_args(PulseAudio
REQUIRED_VARS PULSEAUDIO_LIBRARY PULSEAUDIO_INCLUDE_DIR
VERSION_VAR PULSEAUDIO_VERSION_STRING
)
-
-if(PULSEAUDIO_FOUND)
- set(PULSEAUDIO_LIBRARIES ${PULSEAUDIO_LIBRARY})
- set(PULSEAUDIO_INCLUDE_DIRS ${PULSEAUDIO_INCLUDE_DIR})
-endif()
-
-mark_as_advanced(PULSEAUDIO_INCLUDE_DIR PULSEAUDIO_LIBRARY)
diff --git a/cmake/FindQSA.cmake b/cmake/FindQSA.cmake
deleted file mode 100644
index 0ad1fd43..00000000
--- a/cmake/FindQSA.cmake
+++ /dev/null
@@ -1,34 +0,0 @@
-# - Find QSA includes and libraries
-#
-# QSA_FOUND - True if QSA_INCLUDE_DIR & QSA_LIBRARY are found
-# QSA_LIBRARIES - Set when QSA_LIBRARY is found
-# QSA_INCLUDE_DIRS - Set when QSA_INCLUDE_DIR is found
-#
-# QSA_INCLUDE_DIR - where to find sys/asoundlib.h, etc.
-# QSA_LIBRARY - the asound library
-#
-
-# Only check for QSA on QNX, because it conflicts with ALSA.
-if("${CMAKE_C_PLATFORM_ID}" STREQUAL "QNX")
- find_path(QSA_INCLUDE_DIR
- NAMES sys/asoundlib.h
- DOC "The QSA include directory"
- )
-
- find_library(QSA_LIBRARY
- NAMES asound
- DOC "The QSA library"
- )
-endif()
-
-include(FindPackageHandleStandardArgs)
-find_package_handle_standard_args(QSA
- REQUIRED_VARS QSA_LIBRARY QSA_INCLUDE_DIR
-)
-
-if(QSA_FOUND)
- set(QSA_LIBRARIES ${QSA_LIBRARY})
- set(QSA_INCLUDE_DIRS ${QSA_INCLUDE_DIR})
-endif()
-
-mark_as_advanced(QSA_INCLUDE_DIR QSA_LIBRARY)
diff --git a/cmake/FindSDL2.cmake b/cmake/FindSDL2.cmake
deleted file mode 100644
index e808d006..00000000
--- a/cmake/FindSDL2.cmake
+++ /dev/null
@@ -1,191 +0,0 @@
-# Locate SDL2 library
-# This module defines
-# SDL2_LIBRARY, the name of the library to link against
-# SDL2_FOUND, if false, do not try to link to SDL2
-# SDL2_INCLUDE_DIR, where to find SDL.h
-#
-# This module responds to the the flag:
-# SDL2_BUILDING_LIBRARY
-# If this is defined, then no SDL2_main will be linked in because
-# only applications need main().
-# Otherwise, it is assumed you are building an application and this
-# module will attempt to locate and set the the proper link flags
-# as part of the returned SDL2_LIBRARY variable.
-#
-# Don't forget to include SDL2main.h and SDL2main.m your project for the
-# OS X framework based version. (Other versions link to -lSDL2main which
-# this module will try to find on your behalf.) Also for OS X, this
-# module will automatically add the -framework Cocoa on your behalf.
-#
-#
-# Additional Note: If you see an empty SDL2_CORE_LIBRARY in your configuration
-# and no SDL2_LIBRARY, it means CMake did not find your SDL2 library
-# (SDL2.dll, libsdl2.so, SDL2.framework, etc).
-# Set SDL2_CORE_LIBRARY to point to your SDL2 library, and configure again.
-# Similarly, if you see an empty SDL2MAIN_LIBRARY, you should set this value
-# as appropriate. These values are used to generate the final SDL2_LIBRARY
-# variable, but when these values are unset, SDL2_LIBRARY does not get created.
-#
-#
-# $SDL2DIR is an environment variable that would
-# correspond to the ./configure --prefix=$SDL2DIR
-# used in building SDL2.
-# l.e.galup 9-20-02
-#
-# Modified by Eric Wing.
-# Added code to assist with automated building by using environmental variables
-# and providing a more controlled/consistent search behavior.
-# Added new modifications to recognize OS X frameworks and
-# additional Unix paths (FreeBSD, etc).
-# Also corrected the header search path to follow "proper" SDL2 guidelines.
-# Added a search for SDL2main which is needed by some platforms.
-# Added a search for threads which is needed by some platforms.
-# Added needed compile switches for MinGW.
-#
-# On OSX, this will prefer the Framework version (if found) over others.
-# People will have to manually change the cache values of
-# SDL2_LIBRARY to override this selection or set the CMake environment
-# CMAKE_INCLUDE_PATH to modify the search paths.
-#
-# Note that the header path has changed from SDL2/SDL.h to just SDL.h
-# This needed to change because "proper" SDL2 convention
-# is #include "SDL.h", not <SDL2/SDL.h>. This is done for portability
-# reasons because not all systems place things in SDL2/ (see FreeBSD).
-#
-# Ported by Johnny Patterson. This is a literal port for SDL2 of the FindSDL.cmake
-# module with the minor edit of changing "SDL" to "SDL2" where necessary. This
-# was not created for redistribution, and exists temporarily pending official
-# SDL2 CMake modules.
-
-#=============================================================================
-# Copyright 2003-2009 Kitware, Inc.
-#
-# Distributed under the OSI-approved BSD License (the "License");
-# see accompanying file Copyright.txt for details.
-#
-# This software is distributed WITHOUT ANY WARRANTY; without even the
-# implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
-# See the License for more information.
-#=============================================================================
-# (To distribute this file outside of CMake, substitute the full
-# License text for the above reference.)
-
-
-FIND_PATH(SDL2_INCLUDE_DIR SDL.h
- HINTS
- $ENV{SDL2DIR}
- PATH_SUFFIXES include/SDL2 include
- PATHS
- ~/Library/Frameworks
- /Library/Frameworks
- /usr/local/include/SDL2
- /usr/include/SDL2
- /sw # Fink
- /opt/local # DarwinPorts
- /opt/csw # Blastwave
- /opt
-)
-#MESSAGE("SDL2_INCLUDE_DIR is ${SDL2_INCLUDE_DIR}")
-
-FIND_LIBRARY(SDL2_CORE_LIBRARY
- NAMES SDL2
- HINTS
- $ENV{SDL2DIR}
- PATH_SUFFIXES lib64 lib
- PATHS
- /sw
- /opt/local
- /opt/csw
- /opt
-)
-#MESSAGE("SDL2_CORE_LIBRARY is ${SDL2_CORE_LIBRARY}")
-
-IF(NOT SDL2_BUILDING_LIBRARY)
- IF(NOT ${SDL2_INCLUDE_DIR} MATCHES ".framework")
- # Non-OS X framework versions expect you to also dynamically link to
- # SDL2main. This is mainly for Windows and OS X. Other (Unix) platforms
- # seem to provide SDL2main for compatibility even though they don't
- # necessarily need it.
- FIND_LIBRARY(SDL2MAIN_LIBRARY
- NAMES SDL2main
- HINTS
- $ENV{SDL2DIR}
- PATH_SUFFIXES lib64 lib
- PATHS
- /sw
- /opt/local
- /opt/csw
- /opt
- )
- ENDIF(NOT ${SDL2_INCLUDE_DIR} MATCHES ".framework")
-ENDIF(NOT SDL2_BUILDING_LIBRARY)
-
-# SDL2 may require threads on your system.
-# The Apple build may not need an explicit flag because one of the
-# frameworks may already provide it.
-# But for non-OSX systems, I will use the CMake Threads package.
-IF(NOT APPLE)
- FIND_PACKAGE(Threads)
-ENDIF(NOT APPLE)
-
-# MinGW needs an additional library, mwindows
-# It's total link flags should look like -lmingw32 -lSDL2main -lSDL2 -lmwindows
-# (Actually on second look, I think it only needs one of the m* libraries.)
-IF(MINGW)
- SET(MINGW32_LIBRARY mingw32 CACHE STRING "mwindows for MinGW")
-ENDIF(MINGW)
-
-SET(SDL2_FOUND "NO")
-IF(SDL2_CORE_LIBRARY)
- SET(SDL2_LIBRARY_TEMP ${SDL2_CORE_LIBRARY})
-
- # For SDL2main
- IF(NOT SDL2_BUILDING_LIBRARY)
- IF(SDL2MAIN_LIBRARY)
- SET(SDL2_LIBRARY_TEMP ${SDL2MAIN_LIBRARY} ${SDL2_LIBRARY_TEMP})
- ENDIF(SDL2MAIN_LIBRARY)
- ENDIF(NOT SDL2_BUILDING_LIBRARY)
-
- # For OS X, SDL2 uses Cocoa as a backend so it must link to Cocoa.
- # CMake doesn't display the -framework Cocoa string in the UI even
- # though it actually is there if I modify a pre-used variable.
- # I think it has something to do with the CACHE STRING.
- # So I use a temporary variable until the end so I can set the
- # "real" variable in one-shot.
- IF(APPLE)
- SET(SDL2_LIBRARY_TEMP ${SDL2_LIBRARY_TEMP} "-framework Cocoa")
- ENDIF(APPLE)
-
- # For threads, as mentioned Apple doesn't need this.
- # In fact, there seems to be a problem if I used the Threads package
- # and try using this line, so I'm just skipping it entirely for OS X.
- IF(NOT APPLE)
- SET(SDL2_LIBRARY_TEMP ${SDL2_LIBRARY_TEMP} ${CMAKE_THREAD_LIBS_INIT})
- ENDIF(NOT APPLE)
-
- # For MinGW library
- IF(MINGW)
- SET(SDL2_LIBRARY_TEMP ${MINGW32_LIBRARY} ${SDL2_LIBRARY_TEMP})
- ENDIF(MINGW)
-
- IF(WIN32)
- SET(SDL2_LIBRARY_TEMP winmm imm32 version msimg32 ${SDL2_LIBRARY_TEMP})
- ENDIF(WIN32)
-
- # Set the final string here so the GUI reflects the final state.
- SET(SDL2_LIBRARY ${SDL2_LIBRARY_TEMP})
-
- SET(SDL2_FOUND "YES")
-ENDIF(SDL2_CORE_LIBRARY)
-
-INCLUDE(FindPackageHandleStandardArgs)
-FIND_PACKAGE_HANDLE_STANDARD_ARGS(SDL2
- REQUIRED_VARS SDL2_LIBRARY SDL2_INCLUDE_DIR)
-
-IF(SDL2_STATIC)
- if (UNIX AND NOT APPLE)
- EXECUTE_PROCESS(COMMAND sdl2-config --static-libs OUTPUT_VARIABLE SDL2_LINK_FLAGS)
- STRING(REGEX REPLACE "(\r?\n)+$" "" SDL2_LINK_FLAGS "${SDL2_LINK_FLAGS}")
- SET(SDL2_LIBRARY ${SDL2_LINK_FLAGS})
- ENDIF()
-ENDIF(SDL2_STATIC)
diff --git a/cmake/FindSDL_sound.cmake b/cmake/FindSDL_sound.cmake
deleted file mode 100644
index 5557b55b..00000000
--- a/cmake/FindSDL_sound.cmake
+++ /dev/null
@@ -1,429 +0,0 @@
-# - Locates the SDL_sound library
-#
-# This module depends on SDL being found and
-# must be called AFTER FindSDL.cmake or FindSDL2.cmake is called.
-#
-# This module defines
-# SDL_SOUND_INCLUDE_DIR, where to find SDL_sound.h
-# SDL_SOUND_FOUND, if false, do not try to link to SDL_sound
-# SDL_SOUND_LIBRARIES, this contains the list of libraries that you need
-# to link against. This is a read-only variable and is marked INTERNAL.
-# SDL_SOUND_EXTRAS, this is an optional variable for you to add your own
-# flags to SDL_SOUND_LIBRARIES. This is prepended to SDL_SOUND_LIBRARIES.
-# This is available mostly for cases this module failed to anticipate for
-# and you must add additional flags. This is marked as ADVANCED.
-# SDL_SOUND_VERSION_STRING, human-readable string containing the version of SDL_sound
-#
-# This module also defines (but you shouldn't need to use directly)
-# SDL_SOUND_LIBRARY, the name of just the SDL_sound library you would link
-# against. Use SDL_SOUND_LIBRARIES for you link instructions and not this one.
-# And might define the following as needed
-# MIKMOD_LIBRARY
-# MODPLUG_LIBRARY
-# OGG_LIBRARY
-# VORBIS_LIBRARY
-# SMPEG_LIBRARY
-# FLAC_LIBRARY
-# SPEEX_LIBRARY
-#
-# Typically, you should not use these variables directly, and you should use
-# SDL_SOUND_LIBRARIES which contains SDL_SOUND_LIBRARY and the other audio libraries
-# (if needed) to successfully compile on your system.
-#
-# Created by Eric Wing.
-# This module is a bit more complicated than the other FindSDL* family modules.
-# The reason is that SDL_sound can be compiled in a large variety of different ways
-# which are independent of platform. SDL_sound may dynamically link against other 3rd
-# party libraries to get additional codec support, such as Ogg Vorbis, SMPEG, ModPlug,
-# MikMod, FLAC, Speex, and potentially others.
-# Under some circumstances which I don't fully understand,
-# there seems to be a requirement
-# that dependent libraries of libraries you use must also be explicitly
-# linked against in order to successfully compile. SDL_sound does not currently
-# have any system in place to know how it was compiled.
-# So this CMake module does the hard work in trying to discover which 3rd party
-# libraries are required for building (if any).
-# This module uses a brute force approach to create a test program that uses SDL_sound,
-# and then tries to build it. If the build fails, it parses the error output for
-# known symbol names to figure out which libraries are needed.
-#
-# Responds to the $SDLDIR and $SDLSOUNDDIR environmental variable that would
-# correspond to the ./configure --prefix=$SDLDIR used in building SDL.
-#
-# On OSX, this will prefer the Framework version (if found) over others.
-# People will have to manually change the cache values of
-# SDL_LIBRARY or SDL2_LIBRARY to override this selection or set the CMake
-# environment CMAKE_INCLUDE_PATH to modify the search paths.
-
-#=============================================================================
-# Copyright 2005-2009 Kitware, Inc.
-# Copyright 2012 Benjamin Eikel
-#
-# Distributed under the OSI-approved BSD License (the "License");
-# see accompanying file Copyright.txt for details.
-#
-# This software is distributed WITHOUT ANY WARRANTY; without even the
-# implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
-# See the License for more information.
-#=============================================================================
-# (To distribute this file outside of CMake, substitute the full
-# License text for the above reference.)
-
-set(SDL_SOUND_EXTRAS "" CACHE STRING "SDL_sound extra flags")
-mark_as_advanced(SDL_SOUND_EXTRAS)
-
-# Find SDL_sound.h
-find_path(SDL_SOUND_INCLUDE_DIR SDL_sound.h
- HINTS
- ENV SDLSOUNDDIR
- ENV SDLDIR
- PATH_SUFFIXES SDL SDL12 SDL11
-)
-
-find_library(SDL_SOUND_LIBRARY
- NAMES SDL_sound
- HINTS
- ENV SDLSOUNDDIR
- ENV SDLDIR
-)
-
-if(SDL2_FOUND OR SDL_FOUND)
- if(SDL_SOUND_INCLUDE_DIR AND SDL_SOUND_LIBRARY)
- # CMake is giving me problems using TRY_COMPILE with the CMAKE_FLAGS
- # for the :STRING syntax if I have multiple values contained in a
- # single variable. This is a problem for the SDL2_LIBRARY variable
- # because it does just that. When I feed this variable to the command,
- # only the first value gets the appropriate modifier (e.g. -I) and
- # the rest get dropped.
- # To get multiple single variables to work, I must separate them with a "\;"
- # I could go back and modify the FindSDL2.cmake module, but that's kind of painful.
- # The solution would be to try something like:
- # set(SDL2_TRY_COMPILE_LIBRARY_LIST "${SDL2_TRY_COMPILE_LIBRARY_LIST}\;${CMAKE_THREAD_LIBS_INIT}")
- # Instead, it was suggested on the mailing list to write a temporary CMakeLists.txt
- # with a temporary test project and invoke that with TRY_COMPILE.
- # See message thread "Figuring out dependencies for a library in order to build"
- # 2005-07-16
- # try_compile(
- # MY_RESULT
- # ${CMAKE_BINARY_DIR}
- # ${PROJECT_SOURCE_DIR}/DetermineSoundLibs.c
- # CMAKE_FLAGS
- # -DINCLUDE_DIRECTORIES:STRING=${SDL2_INCLUDE_DIR}\;${SDL_SOUND_INCLUDE_DIR}
- # -DLINK_LIBRARIES:STRING=${SDL_SOUND_LIBRARY}\;${SDL2_LIBRARY}
- # OUTPUT_VARIABLE MY_OUTPUT
- # )
-
- # To minimize external dependencies, create a sdlsound test program
- # which will be used to figure out if additional link dependencies are
- # required for the link phase.
- file(WRITE ${PROJECT_BINARY_DIR}/CMakeTmp/DetermineSoundLibs.c
- "#include \"SDL_sound.h\"
- #include \"SDL.h\"
- int main(int argc, char* argv[])
- {
- Sound_AudioInfo desired;
- Sound_Sample* sample;
-
- SDL_Init(0);
- Sound_Init();
-
- /* This doesn't actually have to work, but Init() is a no-op
- * for some of the decoders, so this should force more symbols
- * to be pulled in.
- */
- sample = Sound_NewSampleFromFile(argv[1], &desired, 4096);
-
- Sound_Quit();
- SDL_Quit();
- return 0;
- }"
- )
-
- # Calling
- # target_link_libraries(DetermineSoundLibs "${SDL_SOUND_LIBRARY} ${SDL2_LIBRARY})
- # causes problems when SDL2_LIBRARY looks like
- # /Library/Frameworks/SDL2.framework;-framework Cocoa
- # The ;-framework Cocoa seems to be confusing CMake once the OS X
- # framework support was added. I was told that breaking up the list
- # would fix the problem.
- set(TMP_LIBS "")
- if(SDL2_FOUND)
- set(SDL_SOUND_LIBRARIES_TMP ${SDL_SOUND_LIBRARY} ${SDL2_LIBRARY})
- foreach(lib ${SDL_SOUND_LIBRARY} ${SDL2_LIBRARY})
- set(TMP_LIBS "${TMP_LIBS} \"${lib}\"")
- endforeach()
- set(TMP_INCLUDE_DIRS ${SDL2_INCLUDE_DIR} ${SDL_SOUND_INCLUDE_DIR})
- else()
- set(SDL_SOUND_LIBRARIES_TMP ${SDL_SOUND_LIBRARY} ${SDL_LIBRARY})
- foreach(lib ${SDL_SOUND_LIBRARY} ${SDL_LIBRARY})
- set(TMP_LIBS "${TMP_LIBS} \"${lib}\"")
- endforeach()
- set(TMP_INCLUDE_DIRS ${SDL_INCLUDE_DIR} ${SDL_SOUND_INCLUDE_DIR})
- endif()
-
- # Keep trying to build a temp project until we find all missing libs.
- set(TRY_AGAIN TRUE)
- WHILE(TRY_AGAIN)
- set(TRY_AGAIN FALSE)
- # message("TMP_TRY_LIBS ${TMP_TRY_LIBS}")
-
- # Write the CMakeLists.txt and test project
- # Weird, this is still sketchy. If I don't quote the variables
- # in the TARGET_LINK_LIBRARIES, I seem to loose everything
- # in the SDL2_LIBRARY string after the "-framework".
- # But if I quote the stuff in INCLUDE_DIRECTORIES, it doesn't work.
- file(WRITE ${PROJECT_BINARY_DIR}/CMakeTmp/CMakeLists.txt
- "cmake_minimum_required(VERSION 2.8)
- project(DetermineSoundLibs C)
- include_directories(${TMP_INCLUDE_DIRS})
- add_executable(DetermineSoundLibs DetermineSoundLibs.c)
- target_link_libraries(DetermineSoundLibs ${TMP_LIBS})"
- )
-
- try_compile(
- MY_RESULT
- ${PROJECT_BINARY_DIR}/CMakeTmp
- ${PROJECT_BINARY_DIR}/CMakeTmp
- DetermineSoundLibs
- OUTPUT_VARIABLE MY_OUTPUT
- )
- # message("${MY_RESULT}")
- # message(${MY_OUTPUT})
-
- if(NOT MY_RESULT)
- # I expect that MPGLIB, VOC, WAV, AIFF, and SHN are compiled in statically.
- # I think Timidity is also compiled in statically.
- # I've never had to explcitly link against Quicktime, so I'll skip that for now.
-
- # Find libmath
- if("${MY_OUTPUT}" MATCHES "cos@@GLIBC")
- find_library(MATH_LIBRARY NAMES m)
- if(MATH_LIBRARY)
- set(SDL_SOUND_LIBRARIES_TMP ${SDL_SOUND_LIBRARIES_TMP} ${MATH_LIBRARY})
- set(TMP_LIBS "${SDL_SOUND_LIBRARIES_TMP} \"${MATH_LIBRARY}\"")
- set(TRY_AGAIN TRUE)
- endif(MATH_LIBRARY)
- endif("${MY_OUTPUT}" MATCHES "cos@@GLIBC")
-
- # Find MikMod
- if("${MY_OUTPUT}" MATCHES "MikMod_")
- find_library(MIKMOD_LIBRARY
- NAMES libmikmod-coreaudio mikmod
- PATHS
- ENV MIKMODDIR
- ENV SDLSOUNDDIR
- ENV SDLDIR
- /sw
- /opt/local
- /opt/csw
- /opt
- PATH_SUFFIXES lib
- )
- if(MIKMOD_LIBRARY)
- set(SDL_SOUND_LIBRARIES_TMP ${SDL_SOUND_LIBRARIES_TMP} ${MIKMOD_LIBRARY})
- set(TMP_LIBS "${SDL_SOUND_LIBRARIES_TMP} \"${MIKMOD_LIBRARY}\"")
- set(TRY_AGAIN TRUE)
- endif(MIKMOD_LIBRARY)
- endif("${MY_OUTPUT}" MATCHES "MikMod_")
-
- # Find ModPlug
- if("${MY_OUTPUT}" MATCHES "MODPLUG_")
- find_library(MODPLUG_LIBRARY
- NAMES modplug
- PATHS
- ENV MODPLUGDIR
- ENV SDLSOUNDDIR
- ENV SDLDIR
- /sw
- /opt/local
- /opt/csw
- /opt
- PATH_SUFFIXES lib
- )
- if(MODPLUG_LIBRARY)
- set(SDL_SOUND_LIBRARIES_TMP ${SDL_SOUND_LIBRARIES_TMP} ${MODPLUG_LIBRARY})
- set(TMP_LIBS "${SDL_SOUND_LIBRARIES_TMP} \"${MODPLUG_LIBRARY}\"")
- set(TRY_AGAIN TRUE)
- endif()
- endif()
-
- # Find Ogg and Vorbis
- if("${MY_OUTPUT}" MATCHES "ov_")
- find_library(VORBISFILE_LIBRARY
- NAMES vorbisfile VorbisFile VORBISFILE
- PATHS
- ENV VORBISDIR
- ENV OGGDIR
- ENV SDLSOUNDDIR
- ENV SDLDIR
- /sw
- /opt/local
- /opt/csw
- /opt
- PATH_SUFFIXES lib
- )
- if(VORBISFILE_LIBRARY)
- set(SDL_SOUND_LIBRARIES_TMP ${SDL_SOUND_LIBRARIES_TMP} ${VORBISFILE_LIBRARY})
- set(TMP_LIBS "${SDL_SOUND_LIBRARIES_TMP} \"${VORBISFILE_LIBRARY}\"")
- set(TRY_AGAIN TRUE)
- endif()
-
- find_library(VORBIS_LIBRARY
- NAMES vorbis Vorbis VORBIS
- PATHS
- ENV OGGDIR
- ENV VORBISDIR
- ENV SDLSOUNDDIR
- ENV SDLDIR
- /sw
- /opt/local
- /opt/csw
- /opt
- PATH_SUFFIXES lib
- )
- if(VORBIS_LIBRARY)
- set(SDL_SOUND_LIBRARIES_TMP ${SDL_SOUND_LIBRARIES_TMP} ${VORBIS_LIBRARY})
- set(TMP_LIBS "${SDL_SOUND_LIBRARIES_TMP} \"${VORBIS_LIBRARY}\"")
- set(TRY_AGAIN TRUE)
- endif()
-
- find_library(OGG_LIBRARY
- NAMES ogg Ogg OGG
- PATHS
- ENV OGGDIR
- ENV VORBISDIR
- ENV SDLSOUNDDIR
- ENV SDLDIR
- /sw
- /opt/local
- /opt/csw
- /opt
- PATH_SUFFIXES lib
- )
- if(OGG_LIBRARY)
- set(SDL_SOUND_LIBRARIES_TMP ${SDL_SOUND_LIBRARIES_TMP} ${OGG_LIBRARY})
- set(TMP_LIBS "${SDL_SOUND_LIBRARIES_TMP} \"${OGG_LIBRARY}\"")
- set(TRY_AGAIN TRUE)
- endif()
- endif()
-
- # Find SMPEG
- if("${MY_OUTPUT}" MATCHES "SMPEG_")
- find_library(SMPEG_LIBRARY
- NAMES smpeg SMPEG Smpeg SMpeg
- PATHS
- ENV SMPEGDIR
- ENV SDLSOUNDDIR
- ENV SDLDIR
- /sw
- /opt/local
- /opt/csw
- /opt
- PATH_SUFFIXES lib
- )
- if(SMPEG_LIBRARY)
- set(SDL_SOUND_LIBRARIES_TMP ${SDL_SOUND_LIBRARIES_TMP} ${SMPEG_LIBRARY})
- set(TMP_LIBS "${SDL_SOUND_LIBRARIES_TMP} \"${SMPEG_LIBRARY}\"")
- set(TRY_AGAIN TRUE)
- endif()
- endif()
-
-
- # Find FLAC
- if("${MY_OUTPUT}" MATCHES "FLAC_")
- find_library(FLAC_LIBRARY
- NAMES flac FLAC
- PATHS
- ENV FLACDIR
- ENV SDLSOUNDDIR
- ENV SDLDIR
- /sw
- /opt/local
- /opt/csw
- /opt
- PATH_SUFFIXES lib
- )
- if(FLAC_LIBRARY)
- set(SDL_SOUND_LIBRARIES_TMP ${SDL_SOUND_LIBRARIES_TMP} ${FLAC_LIBRARY})
- set(TMP_LIBS "${SDL_SOUND_LIBRARIES_TMP} \"${FLAC_LIBRARY}\"")
- set(TRY_AGAIN TRUE)
- endif()
- endif()
-
-
- # Hmmm...Speex seems to depend on Ogg. This might be a problem if
- # the TRY_COMPILE attempt gets blocked at SPEEX before it can pull
- # in the Ogg symbols. I'm not sure if I should duplicate the ogg stuff
- # above for here or if two ogg entries will screw up things.
- if("${MY_OUTPUT}" MATCHES "speex_")
- find_library(SPEEX_LIBRARY
- NAMES speex SPEEX
- PATHS
- ENV SPEEXDIR
- ENV SDLSOUNDDIR
- ENV SDLDIR
- /sw
- /opt/local
- /opt/csw
- /opt
- PATH_SUFFIXES lib
- )
- if(SPEEX_LIBRARY)
- set(SDL_SOUND_LIBRARIES_TMP ${SDL_SOUND_LIBRARIES_TMP} ${SPEEX_LIBRARY})
- set(TMP_LIBS "${SDL_SOUND_LIBRARIES_TMP} \"${SPEEX_LIBRARY}\"")
- set(TRY_AGAIN TRUE)
- endif()
-
- # Find OGG (needed for Speex)
- # We might have already found Ogg for Vorbis, so skip it if so.
- if(NOT OGG_LIBRARY)
- find_library(OGG_LIBRARY
- NAMES ogg Ogg OGG
- PATHS
- ENV OGGDIR
- ENV VORBISDIR
- ENV SPEEXDIR
- ENV SDLSOUNDDIR
- ENV SDLDIR
- /sw
- /opt/local
- /opt/csw
- /opt
- PATH_SUFFIXES lib
- )
- if(OGG_LIBRARY)
- set(SDL_SOUND_LIBRARIES_TMP ${SDL_SOUND_LIBRARIES_TMP} ${OGG_LIBRARY})
- set(TMP_LIBS "${SDL_SOUND_LIBRARIES_TMP} \"${OGG_LIBRARY}\"")
- set(TRY_AGAIN TRUE)
- endif()
- endif()
- endif()
- endif()
- ENDWHILE()
- unset(TMP_INCLUDE_DIRS)
- unset(TMP_LIBS)
-
- set(SDL_SOUND_LIBRARIES ${SDL_SOUND_EXTRAS} ${SDL_SOUND_LIBRARIES_TMP} CACHE INTERNAL "SDL_sound and dependent libraries")
- endif()
-endif()
-
-if(SDL_SOUND_INCLUDE_DIR AND EXISTS "${SDL_SOUND_INCLUDE_DIR}/SDL_sound.h")
- file(STRINGS "${SDL_SOUND_INCLUDE_DIR}/SDL_sound.h" SDL_SOUND_VERSION_MAJOR_LINE REGEX "^#define[ \t]+SOUND_VER_MAJOR[ \t]+[0-9]+$")
- file(STRINGS "${SDL_SOUND_INCLUDE_DIR}/SDL_sound.h" SDL_SOUND_VERSION_MINOR_LINE REGEX "^#define[ \t]+SOUND_VER_MINOR[ \t]+[0-9]+$")
- file(STRINGS "${SDL_SOUND_INCLUDE_DIR}/SDL_sound.h" SDL_SOUND_VERSION_PATCH_LINE REGEX "^#define[ \t]+SOUND_VER_PATCH[ \t]+[0-9]+$")
- string(REGEX REPLACE "^#define[ \t]+SOUND_VER_MAJOR[ \t]+([0-9]+)$" "\\1" SDL_SOUND_VERSION_MAJOR "${SDL_SOUND_VERSION_MAJOR_LINE}")
- string(REGEX REPLACE "^#define[ \t]+SOUND_VER_MINOR[ \t]+([0-9]+)$" "\\1" SDL_SOUND_VERSION_MINOR "${SDL_SOUND_VERSION_MINOR_LINE}")
- string(REGEX REPLACE "^#define[ \t]+SOUND_VER_PATCH[ \t]+([0-9]+)$" "\\1" SDL_SOUND_VERSION_PATCH "${SDL_SOUND_VERSION_PATCH_LINE}")
- set(SDL_SOUND_VERSION_STRING ${SDL_SOUND_VERSION_MAJOR}.${SDL_SOUND_VERSION_MINOR}.${SDL_SOUND_VERSION_PATCH})
- unset(SDL_SOUND_VERSION_MAJOR_LINE)
- unset(SDL_SOUND_VERSION_MINOR_LINE)
- unset(SDL_SOUND_VERSION_PATCH_LINE)
- unset(SDL_SOUND_VERSION_MAJOR)
- unset(SDL_SOUND_VERSION_MINOR)
- unset(SDL_SOUND_VERSION_PATCH)
-endif()
-
-include(FindPackageHandleStandardArgs)
-FIND_PACKAGE_HANDLE_STANDARD_ARGS(SDL_sound
- REQUIRED_VARS SDL_SOUND_LIBRARIES SDL_SOUND_INCLUDE_DIR
- VERSION_VAR SDL_SOUND_VERSION_STRING)
diff --git a/cmake/FindSndFile.cmake b/cmake/FindSndFile.cmake
new file mode 100644
index 00000000..b931d3c0
--- /dev/null
+++ b/cmake/FindSndFile.cmake
@@ -0,0 +1,25 @@
+# - Try to find SndFile
+# Once done this will define
+#
+# SNDFILE_FOUND - system has SndFile
+# SndFile::SndFile - the SndFile target
+#
+
+find_path(SNDFILE_INCLUDE_DIR NAMES sndfile.h)
+
+find_library(SNDFILE_LIBRARY NAMES sndfile sndfile-1)
+
+# handle the QUIETLY and REQUIRED arguments and set SNDFILE_FOUND to TRUE if
+# all listed variables are TRUE
+include(FindPackageHandleStandardArgs)
+find_package_handle_standard_args(SndFile DEFAULT_MSG SNDFILE_LIBRARY SNDFILE_INCLUDE_DIR)
+
+if(SNDFILE_FOUND)
+ add_library(SndFile::SndFile UNKNOWN IMPORTED)
+ set_target_properties(SndFile::SndFile PROPERTIES
+ IMPORTED_LOCATION ${SNDFILE_LIBRARY}
+ INTERFACE_INCLUDE_DIRECTORIES ${SNDFILE_INCLUDE_DIR})
+endif()
+
+# show the SNDFILE_INCLUDE_DIR and SNDFILE_LIBRARY variables only in the advanced view
+mark_as_advanced(SNDFILE_INCLUDE_DIR SNDFILE_LIBRARY)
diff --git a/cmake/FindWindowsSDK.cmake b/cmake/FindWindowsSDK.cmake
deleted file mode 100644
index 3fcc3bf4..00000000
--- a/cmake/FindWindowsSDK.cmake
+++ /dev/null
@@ -1,631 +0,0 @@
-# - Find the Windows SDK aka Platform SDK
-#
-# Relevant Wikipedia article: http://en.wikipedia.org/wiki/Microsoft_Windows_SDK
-#
-# Pass "COMPONENTS tools" to ignore Visual Studio version checks: in case
-# you just want the tool binaries to run, rather than the libraries and headers
-# for compiling.
-#
-# Variables:
-# WINDOWSSDK_FOUND - if any version of the windows or platform SDK was found that is usable with the current version of visual studio
-# WINDOWSSDK_LATEST_DIR
-# WINDOWSSDK_LATEST_NAME
-# WINDOWSSDK_FOUND_PREFERENCE - if we found an entry indicating a "preferred" SDK listed for this visual studio version
-# WINDOWSSDK_PREFERRED_DIR
-# WINDOWSSDK_PREFERRED_NAME
-#
-# WINDOWSSDK_DIRS - contains no duplicates, ordered most recent first.
-# WINDOWSSDK_PREFERRED_FIRST_DIRS - contains no duplicates, ordered with preferred first, followed by the rest in descending recency
-#
-# Functions:
-# windowssdk_name_lookup(<directory> <output variable>) - Find the name corresponding with the SDK directory you pass in, or
-# NOTFOUND if not recognized. Your directory must be one of WINDOWSSDK_DIRS for this to work.
-#
-# windowssdk_build_lookup(<directory> <output variable>) - Find the build version number corresponding with the SDK directory you pass in, or
-# NOTFOUND if not recognized. Your directory must be one of WINDOWSSDK_DIRS for this to work.
-#
-# get_windowssdk_from_component(<file or dir> <output variable>) - Given a library or include dir,
-# find the Windows SDK root dir corresponding to it, or NOTFOUND if unrecognized.
-#
-# get_windowssdk_library_dirs(<directory> <output variable>) - Find the architecture-appropriate
-# library directories corresponding to the SDK directory you pass in (or NOTFOUND if none)
-#
-# get_windowssdk_library_dirs_multiple(<output variable> <directory> ...) - Find the architecture-appropriate
-# library directories corresponding to the SDK directories you pass in, in order, skipping those not found. NOTFOUND if none at all.
-# Good for passing WINDOWSSDK_DIRS or WINDOWSSDK_DIRS to if you really just want a file and don't care where from.
-#
-# get_windowssdk_include_dirs(<directory> <output variable>) - Find the
-# include directories corresponding to the SDK directory you pass in (or NOTFOUND if none)
-#
-# get_windowssdk_include_dirs_multiple(<output variable> <directory> ...) - Find the
-# include directories corresponding to the SDK directories you pass in, in order, skipping those not found. NOTFOUND if none at all.
-# Good for passing WINDOWSSDK_DIRS or WINDOWSSDK_DIRS to if you really just want a file and don't care where from.
-#
-# Requires these CMake modules:
-# FindPackageHandleStandardArgs (known included with CMake >=2.6.2)
-#
-# Original Author:
-# 2012 Ryan Pavlik <[email protected]> <[email protected]>
-# http://academic.cleardefinition.com
-# Iowa State University HCI Graduate Program/VRAC
-#
-# Copyright Iowa State University 2012.
-# Distributed under the Boost Software License, Version 1.0.
-# (See accompanying file LICENSE_1_0.txt or copy at
-# http://www.boost.org/LICENSE_1_0.txt)
-
-set(_preferred_sdk_dirs) # pre-output
-set(_win_sdk_dirs) # pre-output
-set(_win_sdk_versanddirs) # pre-output
-set(_win_sdk_buildsanddirs) # pre-output
-set(_winsdk_vistaonly) # search parameters
-set(_winsdk_kits) # search parameters
-
-
-set(_WINDOWSSDK_ANNOUNCE OFF)
-if(NOT WINDOWSSDK_FOUND AND (NOT WindowsSDK_FIND_QUIETLY))
- set(_WINDOWSSDK_ANNOUNCE ON)
-endif()
-macro(_winsdk_announce)
- if(_WINSDK_ANNOUNCE)
- message(STATUS ${ARGN})
- endif()
-endmacro()
-
-set(_winsdk_win10vers
- 10.0.18362.0 # Windows 10 Version 1903
- 10.0.17763.0 # Windows 10 Version 1809
- 10.0.17134.0 # Windows 10 Version 1803 (April 2018 Update)
- 10.0.16299.0 # Windows 10 Version 1709 (Fall Creators Update)
- 10.0.15063.0 # Windows 10 Version 1703 (Creators Update)
- 10.0.14393.0 # Redstone aka Win10 1607 "Anniversary Update"
- 10.0.10586.0 # TH2 aka Win10 1511
- 10.0.10240.0 # Win10 RTM
- 10.0.10150.0 # just ucrt
- 10.0.10056.0
-)
-
-if(WindowsSDK_FIND_COMPONENTS MATCHES "tools")
- set(_WINDOWSSDK_IGNOREMSVC ON)
- _winsdk_announce("Checking for tools from Windows/Platform SDKs...")
-else()
- set(_WINDOWSSDK_IGNOREMSVC OFF)
- _winsdk_announce("Checking for Windows/Platform SDKs...")
-endif()
-
-# Appends to the three main pre-output lists used only if the path exists
-# and is not already in the list.
-function(_winsdk_conditional_append _vername _build _path)
- if(("${_path}" MATCHES "registry") OR (NOT EXISTS "${_path}"))
- # Path invalid - do not add
- return()
- endif()
- list(FIND _win_sdk_dirs "${_path}" _win_sdk_idx)
- if(_win_sdk_idx GREATER -1)
- # Path already in list - do not add
- return()
- endif()
- _winsdk_announce( " - ${_vername}, Build ${_build} @ ${_path}")
- # Not yet in the list, so we'll add it
- list(APPEND _win_sdk_dirs "${_path}")
- set(_win_sdk_dirs "${_win_sdk_dirs}" CACHE INTERNAL "" FORCE)
- list(APPEND
- _win_sdk_versanddirs
- "${_vername}"
- "${_path}")
- set(_win_sdk_versanddirs "${_win_sdk_versanddirs}" CACHE INTERNAL "" FORCE)
- list(APPEND
- _win_sdk_buildsanddirs
- "${_build}"
- "${_path}")
- set(_win_sdk_buildsanddirs "${_win_sdk_buildsanddirs}" CACHE INTERNAL "" FORCE)
-endfunction()
-
-# Appends to the "preferred SDK" lists only if the path exists
-function(_winsdk_conditional_append_preferred _info _path)
- if(("${_path}" MATCHES "registry") OR (NOT EXISTS "${_path}"))
- # Path invalid - do not add
- return()
- endif()
-
- get_filename_component(_path "${_path}" ABSOLUTE)
-
- list(FIND _win_sdk_preferred_sdk_dirs "${_path}" _win_sdk_idx)
- if(_win_sdk_idx GREATER -1)
- # Path already in list - do not add
- return()
- endif()
- _winsdk_announce( " - Found \"preferred\" SDK ${_info} @ ${_path}")
- # Not yet in the list, so we'll add it
- list(APPEND _win_sdk_preferred_sdk_dirs "${_path}")
- set(_win_sdk_preferred_sdk_dirs "${_win_sdk_dirs}" CACHE INTERNAL "" FORCE)
-
- # Just in case we somehow missed it:
- _winsdk_conditional_append("${_info}" "" "${_path}")
-endfunction()
-
-# Given a version like v7.0A, looks for an SDK in the registry under "Microsoft SDKs".
-# If the given version might be in both HKEY_LOCAL_MACHINE\\SOFTWARE\\Microsoft\\Microsoft SDKs\\Windows
-# and HKEY_LOCAL_MACHINE\\SOFTWARE\\Microsoft\\Windows Kits\\Installed Roots aka "Windows Kits",
-# use this macro first, since these registry keys usually have more information.
-#
-# Pass a "default" build number as an extra argument in case we can't find it.
-function(_winsdk_check_microsoft_sdks_registry _winsdkver)
- set(SDKKEY "HKEY_LOCAL_MACHINE\\SOFTWARE\\Microsoft\\Microsoft SDKs\\Windows\\${_winsdkver}")
- get_filename_component(_sdkdir
- "[${SDKKEY};InstallationFolder]"
- ABSOLUTE)
-
- set(_sdkname "Windows SDK ${_winsdkver}")
-
- # Default build number passed as extra argument
- set(_build ${ARGN})
- # See if the registry holds a Microsoft-mutilated, err, designated, product name
- # (just using get_filename_component to execute the registry lookup)
- get_filename_component(_sdkproductname
- "[${SDKKEY};ProductName]"
- NAME)
- if(NOT "${_sdkproductname}" MATCHES "registry")
- # Got a product name
- set(_sdkname "${_sdkname} (${_sdkproductname})")
- endif()
-
- # try for a version to augment our name
- # (just using get_filename_component to execute the registry lookup)
- get_filename_component(_sdkver
- "[${SDKKEY};ProductVersion]"
- NAME)
- if(NOT "${_sdkver}" MATCHES "registry" AND NOT MATCHES)
- # Got a version
- if(NOT "${_sdkver}" MATCHES "\\.\\.")
- # and it's not an invalid one with two dots in it:
- # use to override the default build
- set(_build ${_sdkver})
- if(NOT "${_sdkname}" MATCHES "${_sdkver}")
- # Got a version that's not already in the name, let's use it to improve our name.
- set(_sdkname "${_sdkname} (${_sdkver})")
- endif()
- endif()
- endif()
- _winsdk_conditional_append("${_sdkname}" "${_build}" "${_sdkdir}")
-endfunction()
-
-# Given a name for identification purposes, the build number, and a key (technically a "value name")
-# corresponding to a Windows SDK packaged as a "Windows Kit", look for it
-# in HKEY_LOCAL_MACHINE\\SOFTWARE\\Microsoft\\Windows Kits\\Installed Roots
-# Note that the key or "value name" tends to be something weird like KitsRoot81 -
-# no easy way to predict, just have to observe them in the wild.
-# Doesn't hurt to also try _winsdk_check_microsoft_sdks_registry for these:
-# sometimes you get keys in both parts of the registry (in the wow64 portion especially),
-# and the non-"Windows Kits" location is often more descriptive.
-function(_winsdk_check_windows_kits_registry _winkit_name _winkit_build _winkit_key)
- get_filename_component(_sdkdir
- "[HKEY_LOCAL_MACHINE\\SOFTWARE\\Microsoft\\Windows Kits\\Installed Roots;${_winkit_key}]"
- ABSOLUTE)
- _winsdk_conditional_append("${_winkit_name}" "${_winkit_build}" "${_sdkdir}")
-endfunction()
-
-# Given a name for identification purposes and the build number
-# corresponding to a Windows 10 SDK packaged as a "Windows Kit", look for it
-# in HKEY_LOCAL_MACHINE\\SOFTWARE\\Microsoft\\Windows Kits\\Installed Roots
-# Doesn't hurt to also try _winsdk_check_microsoft_sdks_registry for these:
-# sometimes you get keys in both parts of the registry (in the wow64 portion especially),
-# and the non-"Windows Kits" location is often more descriptive.
-function(_winsdk_check_win10_kits _winkit_build)
- get_filename_component(_sdkdir
- "[HKEY_LOCAL_MACHINE\\SOFTWARE\\Microsoft\\Windows Kits\\Installed Roots;KitsRoot10]"
- ABSOLUTE)
- if(("${_sdkdir}" MATCHES "registry") OR (NOT EXISTS "${_sdkdir}"))
- return() # not found
- endif()
- if(EXISTS "${_sdkdir}/Include/${_winkit_build}/um")
- _winsdk_conditional_append("Windows Kits 10 (Build ${_winkit_build})" "${_winkit_build}" "${_sdkdir}")
- endif()
-endfunction()
-
-# Given a name for indentification purposes, the build number, and the associated package GUID,
-# look in the registry under both HKLM and HKCU in \\SOFTWARE\\Microsoft\\MicrosoftSDK\\InstalledSDKs\\
-# for that guid and the SDK it points to.
-function(_winsdk_check_platformsdk_registry _platformsdkname _build _platformsdkguid)
- foreach(_winsdk_hive HKEY_LOCAL_MACHINE HKEY_CURRENT_USER)
- get_filename_component(_sdkdir
- "[${_winsdk_hive}\\SOFTWARE\\Microsoft\\MicrosoftSDK\\InstalledSDKs\\${_platformsdkguid};Install Dir]"
- ABSOLUTE)
- _winsdk_conditional_append("${_platformsdkname} (${_build})" "${_build}" "${_sdkdir}")
- endforeach()
-endfunction()
-
-###
-# Detect toolchain information: to know whether it's OK to use Vista+ only SDKs
-###
-set(_winsdk_vistaonly_ok OFF)
-if(MSVC AND NOT _WINDOWSSDK_IGNOREMSVC)
- # VC 10 and older has broad target support
- if(MSVC_VERSION LESS 1700)
- # VC 11 by default targets Vista and later only, so we can add a few more SDKs that (might?) only work on vista+
- elseif("${CMAKE_VS_PLATFORM_TOOLSET}" MATCHES "_xp")
- # This is the XP-compatible v110+ toolset
- elseif("${CMAKE_VS_PLATFORM_TOOLSET}" STREQUAL "v100" OR "${CMAKE_VS_PLATFORM_TOOLSET}" STREQUAL "v90")
- # This is the VS2010/VS2008 toolset
- else()
- # OK, we're VC11 or newer and not using a backlevel or XP-compatible toolset.
- # These versions have no XP (and possibly Vista pre-SP1) support
- set(_winsdk_vistaonly_ok ON)
- if(_WINDOWSSDK_ANNOUNCE AND NOT _WINDOWSSDK_VISTAONLY_PESTERED)
- set(_WINDOWSSDK_VISTAONLY_PESTERED ON CACHE INTERNAL "" FORCE)
- message(STATUS "FindWindowsSDK: Detected Visual Studio 2012 or newer, not using the _xp toolset variant: including SDK versions that drop XP support in search!")
- endif()
- endif()
-endif()
-if(_WINDOWSSDK_IGNOREMSVC)
- set(_winsdk_vistaonly_ok ON)
-endif()
-
-###
-# MSVC version checks - keeps messy conditionals in one place
-# (messy because of _WINDOWSSDK_IGNOREMSVC)
-###
-set(_winsdk_msvc_greater_1200 OFF)
-if(_WINDOWSSDK_IGNOREMSVC OR (MSVC AND (MSVC_VERSION GREATER 1200)))
- set(_winsdk_msvc_greater_1200 ON)
-endif()
-# Newer than VS .NET/VS Toolkit 2003
-set(_winsdk_msvc_greater_1310 OFF)
-if(_WINDOWSSDK_IGNOREMSVC OR (MSVC AND (MSVC_VERSION GREATER 1310)))
- set(_winsdk_msvc_greater_1310 ON)
-endif()
-
-# VS2005/2008
-set(_winsdk_msvc_less_1600 OFF)
-if(_WINDOWSSDK_IGNOREMSVC OR (MSVC AND (MSVC_VERSION LESS 1600)))
- set(_winsdk_msvc_less_1600 ON)
-endif()
-
-# VS2013+
-set(_winsdk_msvc_not_less_1800 OFF)
-if(_WINDOWSSDK_IGNOREMSVC OR (MSVC AND (NOT MSVC_VERSION LESS 1800)))
- set(_winsdk_msvc_not_less_1800 ON)
-endif()
-
-###
-# START body of find module
-###
-if(_winsdk_msvc_greater_1310) # Newer than VS .NET/VS Toolkit 2003
- ###
- # Look for "preferred" SDKs
- ###
-
- # Environment variable for SDK dir
- if(EXISTS "$ENV{WindowsSDKDir}" AND (NOT "$ENV{WindowsSDKDir}" STREQUAL ""))
- _winsdk_conditional_append_preferred("WindowsSDKDir environment variable" "$ENV{WindowsSDKDir}")
- endif()
-
- if(_winsdk_msvc_less_1600)
- # Per-user current Windows SDK for VS2005/2008
- get_filename_component(_sdkdir
- "[HKEY_CURRENT_USER\\Software\\Microsoft\\Microsoft SDKs\\Windows;CurrentInstallFolder]"
- ABSOLUTE)
- _winsdk_conditional_append_preferred("Per-user current Windows SDK" "${_sdkdir}")
-
- # System-wide current Windows SDK for VS2005/2008
- get_filename_component(_sdkdir
- "[HKEY_LOCAL_MACHINE\\SOFTWARE\\Microsoft\\Microsoft SDKs\\Windows;CurrentInstallFolder]"
- ABSOLUTE)
- _winsdk_conditional_append_preferred("System-wide current Windows SDK" "${_sdkdir}")
- endif()
-
- ###
- # Begin the massive list of SDK searching!
- ###
- if(_winsdk_vistaonly_ok AND _winsdk_msvc_not_less_1800)
- # These require at least Visual Studio 2013 (VC12)
-
- _winsdk_check_microsoft_sdks_registry(v10.0A)
-
- # Windows Software Development Kit (SDK) for Windows 10
- # Several different versions living in the same directory - if nothing else we can assume RTM (10240)
- _winsdk_check_microsoft_sdks_registry(v10.0 10.0.10240.0)
- foreach(_win10build ${_winsdk_win10vers})
- _winsdk_check_win10_kits(${_win10build})
- endforeach()
- endif() # vista-only and 2013+
-
- # Included in Visual Studio 2013
- # Includes the v120_xp toolset
- _winsdk_check_microsoft_sdks_registry(v8.1A 8.1.51636)
-
- if(_winsdk_vistaonly_ok AND _winsdk_msvc_not_less_1800)
- # Windows Software Development Kit (SDK) for Windows 8.1
- # http://msdn.microsoft.com/en-gb/windows/desktop/bg162891
- _winsdk_check_microsoft_sdks_registry(v8.1 8.1.25984.0)
- _winsdk_check_windows_kits_registry("Windows Kits 8.1" 8.1.25984.0 KitsRoot81)
- endif() # vista-only and 2013+
-
- if(_winsdk_vistaonly_ok)
- # Included in Visual Studio 2012
- _winsdk_check_microsoft_sdks_registry(v8.0A 8.0.50727)
-
- # Microsoft Windows SDK for Windows 8 and .NET Framework 4.5
- # This is the first version to also include the DirectX SDK
- # http://msdn.microsoft.com/en-US/windows/desktop/hh852363.aspx
- _winsdk_check_microsoft_sdks_registry(v8.0 6.2.9200.16384)
- _winsdk_check_windows_kits_registry("Windows Kits 8.0" 6.2.9200.16384 KitsRoot)
- endif() # vista-only
-
- # Included with VS 2012 Update 1 or later
- # Introduces v110_xp toolset
- _winsdk_check_microsoft_sdks_registry(v7.1A 7.1.51106)
- if(_winsdk_vistaonly_ok)
- # Microsoft Windows SDK for Windows 7 and .NET Framework 4
- # http://www.microsoft.com/downloads/en/details.aspx?FamilyID=6b6c21d2-2006-4afa-9702-529fa782d63b
- _winsdk_check_microsoft_sdks_registry(v7.1 7.1.7600.0.30514)
- endif() # vista-only
-
- # Included with VS 2010
- _winsdk_check_microsoft_sdks_registry(v7.0A 6.1.7600.16385)
-
- # Windows SDK for Windows 7 and .NET Framework 3.5 SP1
- # Works with VC9
- # http://www.microsoft.com/en-us/download/details.aspx?id=18950
- _winsdk_check_microsoft_sdks_registry(v7.0 6.1.7600.16385)
-
- # Two versions call themselves "v6.1":
- # Older:
- # Windows Vista Update & .NET 3.0 SDK
- # http://www.microsoft.com/en-us/download/details.aspx?id=14477
-
- # Newer:
- # Windows Server 2008 & .NET 3.5 SDK
- # may have broken VS9SP1? they recommend v7.0 instead, or a KB...
- # http://www.microsoft.com/en-us/download/details.aspx?id=24826
- _winsdk_check_microsoft_sdks_registry(v6.1 6.1.6000.16384.10)
-
- # Included in VS 2008
- _winsdk_check_microsoft_sdks_registry(v6.0A 6.1.6723.1)
-
- # Microsoft Windows Software Development Kit for Windows Vista and .NET Framework 3.0 Runtime Components
- # http://blogs.msdn.com/b/stanley/archive/2006/11/08/microsoft-windows-software-development-kit-for-windows-vista-and-net-framework-3-0-runtime-components.aspx
- _winsdk_check_microsoft_sdks_registry(v6.0 6.0.6000.16384)
-endif()
-
-# Let's not forget the Platform SDKs, which sometimes are useful!
-if(_winsdk_msvc_greater_1200)
- _winsdk_check_platformsdk_registry("Microsoft Platform SDK for Windows Server 2003 R2" "5.2.3790.2075.51" "D2FF9F89-8AA2-4373-8A31-C838BF4DBBE1")
- _winsdk_check_platformsdk_registry("Microsoft Platform SDK for Windows Server 2003 SP1" "5.2.3790.1830.15" "8F9E5EF3-A9A5-491B-A889-C58EFFECE8B3")
-endif()
-###
-# Finally, look for "preferred" SDKs
-###
-if(_winsdk_msvc_greater_1310) # Newer than VS .NET/VS Toolkit 2003
-
-
- # Environment variable for SDK dir
- if(EXISTS "$ENV{WindowsSDKDir}" AND (NOT "$ENV{WindowsSDKDir}" STREQUAL ""))
- _winsdk_conditional_append_preferred("WindowsSDKDir environment variable" "$ENV{WindowsSDKDir}")
- endif()
-
- if(_winsdk_msvc_less_1600)
- # Per-user current Windows SDK for VS2005/2008
- get_filename_component(_sdkdir
- "[HKEY_CURRENT_USER\\Software\\Microsoft\\Microsoft SDKs\\Windows;CurrentInstallFolder]"
- ABSOLUTE)
- _winsdk_conditional_append_preferred("Per-user current Windows SDK" "${_sdkdir}")
-
- # System-wide current Windows SDK for VS2005/2008
- get_filename_component(_sdkdir
- "[HKEY_LOCAL_MACHINE\\SOFTWARE\\Microsoft\\Microsoft SDKs\\Windows;CurrentInstallFolder]"
- ABSOLUTE)
- _winsdk_conditional_append_preferred("System-wide current Windows SDK" "${_sdkdir}")
- endif()
-endif()
-
-
-function(windowssdk_name_lookup _dir _outvar)
- list(FIND _win_sdk_versanddirs "${_dir}" _diridx)
- math(EXPR _idx "${_diridx} - 1")
- if(${_idx} GREATER -1)
- list(GET _win_sdk_versanddirs ${_idx} _ret)
- else()
- set(_ret "NOTFOUND")
- endif()
- set(${_outvar} "${_ret}" PARENT_SCOPE)
-endfunction()
-
-function(windowssdk_build_lookup _dir _outvar)
- list(FIND _win_sdk_buildsanddirs "${_dir}" _diridx)
- math(EXPR _idx "${_diridx} - 1")
- if(${_idx} GREATER -1)
- list(GET _win_sdk_buildsanddirs ${_idx} _ret)
- else()
- set(_ret "NOTFOUND")
- endif()
- set(${_outvar} "${_ret}" PARENT_SCOPE)
-endfunction()
-
-# If we found something...
-if(_win_sdk_dirs)
- list(GET _win_sdk_dirs 0 WINDOWSSDK_LATEST_DIR)
- windowssdk_name_lookup("${WINDOWSSDK_LATEST_DIR}"
- WINDOWSSDK_LATEST_NAME)
- set(WINDOWSSDK_DIRS ${_win_sdk_dirs})
-
- # Fallback, in case no preference found.
- set(WINDOWSSDK_PREFERRED_DIR "${WINDOWSSDK_LATEST_DIR}")
- set(WINDOWSSDK_PREFERRED_NAME "${WINDOWSSDK_LATEST_NAME}")
- set(WINDOWSSDK_PREFERRED_FIRST_DIRS ${WINDOWSSDK_DIRS})
- set(WINDOWSSDK_FOUND_PREFERENCE OFF)
-endif()
-
-# If we found indications of a user preference...
-if(_win_sdk_preferred_sdk_dirs)
- list(GET _win_sdk_preferred_sdk_dirs 0 WINDOWSSDK_PREFERRED_DIR)
- windowssdk_name_lookup("${WINDOWSSDK_PREFERRED_DIR}"
- WINDOWSSDK_PREFERRED_NAME)
- set(WINDOWSSDK_PREFERRED_FIRST_DIRS
- ${_win_sdk_preferred_sdk_dirs}
- ${_win_sdk_dirs})
- list(REMOVE_DUPLICATES WINDOWSSDK_PREFERRED_FIRST_DIRS)
- set(WINDOWSSDK_FOUND_PREFERENCE ON)
-endif()
-
-include(FindPackageHandleStandardArgs)
-find_package_handle_standard_args(WindowsSDK
- "No compatible version of the Windows SDK or Platform SDK found."
- WINDOWSSDK_DIRS)
-
-if(WINDOWSSDK_FOUND)
- # Internal: Architecture-appropriate library directory names.
- if("${CMAKE_VS_PLATFORM_NAME}" STREQUAL "ARM")
- if(CMAKE_SIZEOF_VOID_P MATCHES "8")
- # Only supported in Win10 SDK and up.
- set(_winsdk_arch8 arm64) # what the WDK for Win8+ calls this architecture
- else()
- set(_winsdk_archbare /arm) # what the architecture used to be called in oldest SDKs
- set(_winsdk_arch arm) # what the architecture used to be called
- set(_winsdk_arch8 arm) # what the WDK for Win8+ calls this architecture
- endif()
- else()
- if(CMAKE_SIZEOF_VOID_P MATCHES "8")
- set(_winsdk_archbare /x64) # what the architecture used to be called in oldest SDKs
- set(_winsdk_arch amd64) # what the architecture used to be called
- set(_winsdk_arch8 x64) # what the WDK for Win8+ calls this architecture
- else()
- set(_winsdk_archbare ) # what the architecture used to be called in oldest SDKs
- set(_winsdk_arch i386) # what the architecture used to be called
- set(_winsdk_arch8 x86) # what the WDK for Win8+ calls this architecture
- endif()
- endif()
-
- function(get_windowssdk_from_component _component _var)
- get_filename_component(_component "${_component}" ABSOLUTE)
- file(TO_CMAKE_PATH "${_component}" _component)
- foreach(_sdkdir ${WINDOWSSDK_DIRS})
- get_filename_component(_sdkdir "${_sdkdir}" ABSOLUTE)
- string(LENGTH "${_sdkdir}" _sdklen)
- file(RELATIVE_PATH _rel "${_sdkdir}" "${_component}")
- # If we don't have any "parent directory" items...
- if(NOT "${_rel}" MATCHES "[.][.]")
- set(${_var} "${_sdkdir}" PARENT_SCOPE)
- return()
- endif()
- endforeach()
- # Fail.
- set(${_var} "NOTFOUND" PARENT_SCOPE)
- endfunction()
- function(get_windowssdk_library_dirs _winsdk_dir _var)
- set(_dirs)
- set(_suffixes
- "lib${_winsdk_archbare}" # SDKs like 7.1A
- "lib/${_winsdk_arch}" # just because some SDKs have x86 dir and root dir
- "lib/w2k/${_winsdk_arch}" # Win2k min requirement
- "lib/wxp/${_winsdk_arch}" # WinXP min requirement
- "lib/wnet/${_winsdk_arch}" # Win Server 2003 min requirement
- "lib/wlh/${_winsdk_arch}"
- "lib/wlh/um/${_winsdk_arch8}" # Win Vista ("Long Horn") min requirement
- "lib/win7/${_winsdk_arch}"
- "lib/win7/um/${_winsdk_arch8}" # Win 7 min requirement
- )
- foreach(_ver
- wlh # Win Vista ("Long Horn") min requirement
- win7 # Win 7 min requirement
- win8 # Win 8 min requirement
- winv6.3 # Win 8.1 min requirement
- )
-
- list(APPEND _suffixes
- "lib/${_ver}/${_winsdk_arch}"
- "lib/${_ver}/um/${_winsdk_arch8}"
- "lib/${_ver}/km/${_winsdk_arch8}"
- )
- endforeach()
-
- # Look for WDF libraries in Win10+ SDK
- foreach(_mode umdf kmdf)
- file(GLOB _wdfdirs RELATIVE "${_winsdk_dir}" "${_winsdk_dir}/lib/wdf/${_mode}/${_winsdk_arch8}/*")
- if(_wdfdirs)
- list(APPEND _suffixes ${_wdfdirs})
- endif()
- endforeach()
-
- # Look in each Win10+ SDK version for the components
- foreach(_win10ver ${_winsdk_win10vers})
- foreach(_component um km ucrt mmos)
- list(APPEND _suffixes "lib/${_win10ver}/${_component}/${_winsdk_arch8}")
- endforeach()
- endforeach()
-
- foreach(_suffix ${_suffixes})
- # Check to see if a library actually exists here.
- file(GLOB _libs "${_winsdk_dir}/${_suffix}/*.lib")
- if(_libs)
- list(APPEND _dirs "${_winsdk_dir}/${_suffix}")
- endif()
- endforeach()
- if("${_dirs}" STREQUAL "")
- set(_dirs NOTFOUND)
- else()
- list(REMOVE_DUPLICATES _dirs)
- endif()
- set(${_var} ${_dirs} PARENT_SCOPE)
- endfunction()
- function(get_windowssdk_include_dirs _winsdk_dir _var)
- set(_dirs)
-
- set(_subdirs shared um winrt km wdf mmos ucrt)
- set(_suffixes Include)
-
- foreach(_dir ${_subdirs})
- list(APPEND _suffixes "Include/${_dir}")
- endforeach()
-
- foreach(_ver ${_winsdk_win10vers})
- foreach(_dir ${_subdirs})
- list(APPEND _suffixes "Include/${_ver}/${_dir}")
- endforeach()
- endforeach()
-
- foreach(_suffix ${_suffixes})
- # Check to see if a header file actually exists here.
- file(GLOB _headers "${_winsdk_dir}/${_suffix}/*.h")
- if(_headers)
- list(APPEND _dirs "${_winsdk_dir}/${_suffix}")
- endif()
- endforeach()
- if("${_dirs}" STREQUAL "")
- set(_dirs NOTFOUND)
- else()
- list(REMOVE_DUPLICATES _dirs)
- endif()
- set(${_var} ${_dirs} PARENT_SCOPE)
- endfunction()
- function(get_windowssdk_library_dirs_multiple _var)
- set(_dirs)
- foreach(_sdkdir ${ARGN})
- get_windowssdk_library_dirs("${_sdkdir}" _current_sdk_libdirs)
- if(_current_sdk_libdirs)
- list(APPEND _dirs ${_current_sdk_libdirs})
- endif()
- endforeach()
- if("${_dirs}" STREQUAL "")
- set(_dirs NOTFOUND)
- else()
- list(REMOVE_DUPLICATES _dirs)
- endif()
- set(${_var} ${_dirs} PARENT_SCOPE)
- endfunction()
- function(get_windowssdk_include_dirs_multiple _var)
- set(_dirs)
- foreach(_sdkdir ${ARGN})
- get_windowssdk_include_dirs("${_sdkdir}" _current_sdk_incdirs)
- if(_current_sdk_libdirs)
- list(APPEND _dirs ${_current_sdk_incdirs})
- endif()
- endforeach()
- if("${_dirs}" STREQUAL "")
- set(_dirs NOTFOUND)
- else()
- list(REMOVE_DUPLICATES _dirs)
- endif()
- set(${_var} ${_dirs} PARENT_SCOPE)
- endfunction()
-endif()
diff --git a/cmake/bin2h.script.cmake b/cmake/bin2h.script.cmake
new file mode 100644
index 00000000..7e74a7a1
--- /dev/null
+++ b/cmake/bin2h.script.cmake
@@ -0,0 +1,12 @@
+# Read the input file into 'indata', converting each byte to a pair of hex
+# characters
+file(READ "${INPUT_FILE}" indata HEX)
+
+# For each pair of characters, indent them and prepend the 0x prefix, and
+# append a comma separateor.
+# TODO: Prettify this. Should group a number of bytes per line instead of one
+# per line.
+string(REGEX REPLACE "(..)" " 0x\\1,\n" output "${indata}")
+
+# Write the list of hex chars to the output file
+file(WRITE "${OUTPUT_FILE}" "${output}")