CMake SDL and mixer working on Win11

This commit is contained in:
Alan 2022-10-13 16:51:39 -04:00
parent fa62c0a8fd
commit ddbe3ac5fe
24 changed files with 2113 additions and 263 deletions

View File

@ -9,7 +9,7 @@ CMake Binary=C:/Program Files/CMake/bin/cmake.exe
CMake Executable=C:/Program Files/CMake/bin/cmake.exe CMake Executable=C:/Program Files/CMake/bin/cmake.exe
Environment Profile= Environment Profile=
Extra Arguments= Extra Arguments=
Install Directory= Install Directory=C:/Program Files (x86)/sdl2forthewin
Runtime=Host System Runtime=Host System
[Project] [Project]

View File

@ -2,10 +2,11 @@ project(sdl2forthewin)
cmake_minimum_required(VERSION 2.8) cmake_minimum_required(VERSION 2.8)
# Point to our own cmake modules # Point to our own cmake modules
list(APPEND CMAKE_MODULE_PATH ${CMAKE_SOURCE_DIR}/CMakeModules) list(APPEND CMAKE_MODULE_PATH ${CMAKE_SOURCE_DIR}/cmake/sdl2)
# Find SDL2 # Find SDL2
find_package(SDL2 REQUIRED) find_package(SDL2 REQUIRED)
find_package(SDL2_mixer REQUIRED)
# Add global definitions # Add global definitions
add_definitions("-Wall") add_definitions("-Wall")
@ -13,4 +14,4 @@ include_directories(${SDL2_INCLUDE_DIR})
add_executable(sdl2forthewin main.cpp) add_executable(sdl2forthewin main.cpp)
install(TARGETS sdl2forthewin DESTINATION bin) install(TARGETS sdl2forthewin DESTINATION bin)
target_link_libraries(sdl2forthewin ${SDL2_LIBRARIES}) target_link_libraries(sdl2forthewin ${SDL2_LIBRARIES} SDL2::Mixer)

View File

@ -1,179 +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
# SDL2_LIBRARY_DIR, where to find SDL2.lib
#
# This module responds to the the flag:
# SDL2_BUILDING_LIBRARY
# If this is defined, then no SDL2main 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 SDLmain.h and SDLmain.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_LIBRARY_TEMP 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_LIBRARY_TEMP 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" SDL 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" SDL 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).
#=============================================================================
# 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.)
if(CMAKE_SIZEOF_VOID_P EQUAL 8)
set(SDL2_ARCH_64 TRUE)
set(SDL2_PROCESSOR_ARCH "x64")
else()
set(SDL2_ARCH_64 FALSE)
set(SDL2_PROCESSOR_ARCH "x86")
endif(CMAKE_SIZEOF_VOID_P EQUAL 8)
SET(SDL2_SEARCH_PATHS
~/Library/Frameworks
/Library/Frameworks
/usr/local
/usr
/sw # Fink
/opt/local # DarwinPorts
/opt/csw # Blastwave
/opt
${SDL2_ROOT}
)
FIND_PATH(SDL2_INCLUDE_DIR SDL.h
HINTS
$ENV{SDL2DIR}
PATH_SUFFIXES include/SDL2 include
PATHS ${SDL2_SEARCH_PATHS}
)
FIND_LIBRARY(SDL2_LIBRARY_TEMP
NAMES SDL2
HINTS
$ENV{SDL2DIR}
PATH_SUFFIXES lib64 lib lib/${SDL2_PROCESSOR_ARCH}
PATHS ${SDL2_SEARCH_PATHS}
)
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 lib/${SDL2_PROCESSOR_ARCH}
PATHS ${SDL2_SEARCH_PATHS}
)
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)
IF(SDL2_LIBRARY_TEMP)
SET(SDL2_ORIGINAL_LIBRARY ${SDL2_LIBRARY_TEMP})
get_filename_component(SDL2_LIBRARY_DIR ${SDL2_ORIGINAL_LIBRARY} PATH)
# 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)
# Set the final string here so the GUI reflects the final state.
SET(SDL2_LIBRARY ${SDL2_ORIGINAL_LIBRARY} CACHE STRING "Where the SDL2 Library can be found")
SET(SDL2_LIBRARIES ${SDL2_LIBRARY_TEMP} CACHE STRING "All libraries to link against when using SDL2")
# Set the temp variable to INTERNAL so it is not seen in the CMake GUI
SET(SDL2_LIBRARY_TEMP "${SDL2_LIBRARY_TEMP}" CACHE INTERNAL "")
SET(SDL2_LIBRARY_TEMP "${SDL2_ORIGINAL_LIBRARY}" CACHE INTERNAL "")
SET(SDL2_FOUND "YES")
ENDIF(SDL2_LIBRARY_TEMP)
INCLUDE(FindPackageHandleStandardArgs)
FIND_PACKAGE_HANDLE_STANDARD_ARGS(SDL2 REQUIRED_VARS SDL2_LIBRARY SDL2_INCLUDE_DIR)

View File

@ -14,6 +14,8 @@
# EXTERNAL cache entries # EXTERNAL cache entries
######################## ########################
:STRING=
//Path to a program. //Path to a program.
CMAKE_ADDR2LINE:FILEPATH=C:/ProgramData/chocolatey/bin/addr2line.exe CMAKE_ADDR2LINE:FILEPATH=C:/ProgramData/chocolatey/bin/addr2line.exe
@ -242,8 +244,8 @@ MINGW32_LIBRARY:STRING=mingw32
//Path to a library. //Path to a library.
SDL2MAIN_LIBRARY:FILEPATH=C:/mingw_dev_lib/sdl2/lib/libSDL2main.a SDL2MAIN_LIBRARY:FILEPATH=C:/mingw_dev_lib/sdl2/lib/libSDL2main.a
//Path to a file. //No help, variable specified on the command line.
SDL2_INCLUDE_DIR:PATH=C:/mingw_dev_lib/sdl2/include/SDL2 SDL2_INCLUDE_DIR:PATH=c:/mingw_dev_lib/sdl2/include/SDL2
//All libraries to link against when using SDL2 //All libraries to link against when using SDL2
SDL2_LIBRARIES:STRING=mingw32;C:/mingw_dev_lib/sdl2/lib/libSDL2main.a;C:/mingw_dev_lib/sdl2/lib/libSDL2.dll.a SDL2_LIBRARIES:STRING=mingw32;C:/mingw_dev_lib/sdl2/lib/libSDL2main.a;C:/mingw_dev_lib/sdl2/lib/libSDL2.dll.a
@ -251,6 +253,33 @@ SDL2_LIBRARIES:STRING=mingw32;C:/mingw_dev_lib/sdl2/lib/libSDL2main.a;C:/mingw_d
//Where the SDL2 Library can be found //Where the SDL2 Library can be found
SDL2_LIBRARY:STRING=C:/mingw_dev_lib/sdl2/lib/libSDL2.dll.a SDL2_LIBRARY:STRING=C:/mingw_dev_lib/sdl2/lib/libSDL2.dll.a
//Where the SDL2_mixer headers can be found
SDL2_MIXER_INCLUDE_DIR:PATH=C:/mingw_dev_lib/sdl2_mixer/include/SDL2
//Where the SDL2_mixer Library can be found
SDL2_MIXER_LIBRARY:FILEPATH=C:/mingw_dev_lib/sdl2_mixer/lib/libSDL2_mixer.dll.a
//Disable search SDL2_mixer Library in default path
SDL2_MIXER_NO_DEFAULT_PATH:BOOL=OFF
//Custom SDL2_mixer Library path
SDL2_MIXER_PATH:STRING=
//Disable search SDL2 Library in default path
SDL2_NO_DEFAULT_PATH:BOOL=OFF
//Custom SDL2 Library path
SDL2_PATH:STRING=
//The directory containing a CMake configuration file for SDL2_mixer.
SDL2_mixer_DIR:PATH=C:/mingw_dev_lib/sdl2_mixer/lib/cmake/SDL2_mixer
//Path to a file.
SDL_MIXER_INCLUDE_DIR:PATH=C:/mingw_dev_lib/sdl2_mixer/include/SDL2
//Path to a library.
SDL_MIXER_LIBRARY:FILEPATH=C:/mingw_dev_lib/sdl2_mixer/lib/libSDL2_mixer.dll.a
//Value Computed by CMake //Value Computed by CMake
sdl2forthewin_BINARY_DIR:STATIC=C:/Users/Admin/projects/sdl2forthewin/build sdl2forthewin_BINARY_DIR:STATIC=C:/Users/Admin/projects/sdl2forthewin/build
@ -265,6 +294,7 @@ sdl2forthewin_SOURCE_DIR:STATIC=C:/Users/Admin/projects/sdl2forthewin
# INTERNAL cache entries # INTERNAL cache entries
######################## ########################
-ADVANCED:INTERNAL=1
//ADVANCED property for variable: CMAKE_ADDR2LINE //ADVANCED property for variable: CMAKE_ADDR2LINE
CMAKE_ADDR2LINE-ADVANCED:INTERNAL=1 CMAKE_ADDR2LINE-ADVANCED:INTERNAL=1
//ADVANCED property for variable: CMAKE_AR //ADVANCED property for variable: CMAKE_AR
@ -426,8 +456,36 @@ CMAKE_STRIP-ADVANCED:INTERNAL=1
//ADVANCED property for variable: CMAKE_VERBOSE_MAKEFILE //ADVANCED property for variable: CMAKE_VERBOSE_MAKEFILE
CMAKE_VERBOSE_MAKEFILE-ADVANCED:INTERNAL=1 CMAKE_VERBOSE_MAKEFILE-ADVANCED:INTERNAL=1
//Details about finding SDL2 //Details about finding SDL2
FIND_PACKAGE_MESSAGE_DETAILS_SDL2:INTERNAL=[C:/mingw_dev_lib/sdl2/lib/libSDL2.dll.a][C:/mingw_dev_lib/sdl2/include/SDL2][v()] FIND_PACKAGE_MESSAGE_DETAILS_SDL2:INTERNAL=[C:/mingw_dev_lib/sdl2/lib/libSDL2.dll.a][c:/mingw_dev_lib/sdl2/include/SDL2][v2.24.1()]
//Details about finding SDL2_mixer
FIND_PACKAGE_MESSAGE_DETAILS_SDL2_mixer:INTERNAL=[C:/mingw_dev_lib/sdl2_mixer/lib/libSDL2_mixer.dll.a][C:/mingw_dev_lib/sdl2_mixer/include/SDL2][v2.6.2()]
//Details about finding SDL2main
FIND_PACKAGE_MESSAGE_DETAILS_SDL2main:INTERNAL=[C:/mingw_dev_lib/sdl2/lib/libSDL2main.a][c:/mingw_dev_lib/sdl2/include/SDL2][v2.24.1()]
//Details about finding SDL_mixer
FIND_PACKAGE_MESSAGE_DETAILS_SDL_mixer:INTERNAL=[C:/mingw_dev_lib/sdl2_mixer/lib/libSDL2_mixer.dll.a][C:/mingw_dev_lib/sdl2_mixer/include/SDL2][v2.6.2()]
//Details about finding Threads //Details about finding Threads
FIND_PACKAGE_MESSAGE_DETAILS_Threads:INTERNAL=[TRUE][v()] FIND_PACKAGE_MESSAGE_DETAILS_Threads:INTERNAL=[TRUE][v()]
//ADVANCED property for variable: SDL2MAIN_LIBRARY
SDL2MAIN_LIBRARY-ADVANCED:INTERNAL=1
//ADVANCED property for variable: SDL2_INCLUDE_DIR
SDL2_INCLUDE_DIR-ADVANCED:INTERNAL=1
//ADVANCED property for variable: SDL2_LIBRARY
SDL2_LIBRARY-ADVANCED:INTERNAL=1
SDL2_LIBRARY_TEMP:INTERNAL=C:/mingw_dev_lib/sdl2/lib/libSDL2.dll.a SDL2_LIBRARY_TEMP:INTERNAL=C:/mingw_dev_lib/sdl2/lib/libSDL2.dll.a
//ADVANCED property for variable: SDL2_MIXER_INCLUDE_DIR
SDL2_MIXER_INCLUDE_DIR-ADVANCED:INTERNAL=1
//ADVANCED property for variable: SDL2_MIXER_LIBRARY
SDL2_MIXER_LIBRARY-ADVANCED:INTERNAL=1
//ADVANCED property for variable: SDL2_MIXER_NO_DEFAULT_PATH
SDL2_MIXER_NO_DEFAULT_PATH-ADVANCED:INTERNAL=1
//ADVANCED property for variable: SDL2_MIXER_PATH
SDL2_MIXER_PATH-ADVANCED:INTERNAL=1
//ADVANCED property for variable: SDL2_NO_DEFAULT_PATH
SDL2_NO_DEFAULT_PATH-ADVANCED:INTERNAL=1
//ADVANCED property for variable: SDL2_PATH
SDL2_PATH-ADVANCED:INTERNAL=1
//ADVANCED property for variable: SDL_MIXER_INCLUDE_DIR
SDL_MIXER_INCLUDE_DIR-ADVANCED:INTERNAL=1
//ADVANCED property for variable: SDL_MIXER_LIBRARY
SDL_MIXER_LIBRARY-ADVANCED:INTERNAL=1

View File

@ -36,11 +36,12 @@ set(CMAKE_MAKEFILE_DEPENDS
"C:/Program Files/CMake/share/cmake-3.23/Modules/Platform/Windows.cmake" "C:/Program Files/CMake/share/cmake-3.23/Modules/Platform/Windows.cmake"
"C:/Program Files/CMake/share/cmake-3.23/Modules/Platform/WindowsPaths.cmake" "C:/Program Files/CMake/share/cmake-3.23/Modules/Platform/WindowsPaths.cmake"
"../CMakeLists.txt" "../CMakeLists.txt"
"../CMakeModules/FindSDL2.cmake"
"CMakeFiles/3.23.2/CMakeCCompiler.cmake" "CMakeFiles/3.23.2/CMakeCCompiler.cmake"
"CMakeFiles/3.23.2/CMakeCXXCompiler.cmake" "CMakeFiles/3.23.2/CMakeCXXCompiler.cmake"
"CMakeFiles/3.23.2/CMakeRCCompiler.cmake" "CMakeFiles/3.23.2/CMakeRCCompiler.cmake"
"CMakeFiles/3.23.2/CMakeSystem.cmake" "CMakeFiles/3.23.2/CMakeSystem.cmake"
"../cmake/sdl2/FindSDL2.cmake"
"../cmake/sdl2/FindSDL2_mixer.cmake"
) )
# The corresponding makefile is: # The corresponding makefile is:

View File

@ -94,6 +94,8 @@ sdl2forthewin.exe: CMakeFiles/sdl2forthewin.dir/main.cpp.obj
sdl2forthewin.exe: CMakeFiles/sdl2forthewin.dir/build.make sdl2forthewin.exe: CMakeFiles/sdl2forthewin.dir/build.make
sdl2forthewin.exe: C:/mingw_dev_lib/sdl2/lib/libSDL2main.a sdl2forthewin.exe: C:/mingw_dev_lib/sdl2/lib/libSDL2main.a
sdl2forthewin.exe: C:/mingw_dev_lib/sdl2/lib/libSDL2.dll.a sdl2forthewin.exe: C:/mingw_dev_lib/sdl2/lib/libSDL2.dll.a
sdl2forthewin.exe: C:/mingw_dev_lib/sdl2_mixer/lib/libSDL2_mixer.dll.a
sdl2forthewin.exe: C:/mingw_dev_lib/sdl2/lib/libSDL2.dll.a
sdl2forthewin.exe: CMakeFiles/sdl2forthewin.dir/linklibs.rsp sdl2forthewin.exe: CMakeFiles/sdl2forthewin.dir/linklibs.rsp
sdl2forthewin.exe: CMakeFiles/sdl2forthewin.dir/objects1.rsp sdl2forthewin.exe: CMakeFiles/sdl2forthewin.dir/objects1.rsp
sdl2forthewin.exe: CMakeFiles/sdl2forthewin.dir/link.txt sdl2forthewin.exe: CMakeFiles/sdl2forthewin.dir/link.txt

View File

@ -184,4 +184,12 @@ CMakeFiles/sdl2forthewin.dir/main.cpp.obj
C:/ProgramData/chocolatey/lib/mingw/tools/install/mingw64/x86_64-w64-mingw32/include/corecrt_stdio_config.h C:/ProgramData/chocolatey/lib/mingw/tools/install/mingw64/x86_64-w64-mingw32/include/corecrt_stdio_config.h
C:/ProgramData/chocolatey/lib/mingw/tools/install/mingw64/x86_64-w64-mingw32/include/swprintf.inl C:/ProgramData/chocolatey/lib/mingw/tools/install/mingw64/x86_64-w64-mingw32/include/swprintf.inl
C:/ProgramData/chocolatey/lib/mingw/tools/install/mingw64/x86_64-w64-mingw32/include/sec_api/stdio_s.h C:/ProgramData/chocolatey/lib/mingw/tools/install/mingw64/x86_64-w64-mingw32/include/sec_api/stdio_s.h
C:/mingw_dev_lib/sdl2_mixer/include/SDL2/SDL_mixer.h
C:/mingw_dev_lib/sdl2/include/SDL2/SDL_stdinc.h
C:/mingw_dev_lib/sdl2/include/SDL2/SDL_rwops.h
C:/mingw_dev_lib/sdl2/include/SDL2/SDL_audio.h
C:/mingw_dev_lib/sdl2/include/SDL2/SDL_endian.h
C:/mingw_dev_lib/sdl2/include/SDL2/SDL_version.h
C:/mingw_dev_lib/sdl2/include/SDL2/begin_code.h
C:/mingw_dev_lib/sdl2/include/SDL2/close_code.h

View File

@ -182,7 +182,15 @@ CMakeFiles/sdl2forthewin.dir/main.cpp.obj: ../main.cpp \
C:/ProgramData/chocolatey/lib/mingw/tools/install/mingw64/x86_64-w64-mingw32/include/stdio.h \ C:/ProgramData/chocolatey/lib/mingw/tools/install/mingw64/x86_64-w64-mingw32/include/stdio.h \
C:/ProgramData/chocolatey/lib/mingw/tools/install/mingw64/x86_64-w64-mingw32/include/corecrt_stdio_config.h \ C:/ProgramData/chocolatey/lib/mingw/tools/install/mingw64/x86_64-w64-mingw32/include/corecrt_stdio_config.h \
C:/ProgramData/chocolatey/lib/mingw/tools/install/mingw64/x86_64-w64-mingw32/include/swprintf.inl \ C:/ProgramData/chocolatey/lib/mingw/tools/install/mingw64/x86_64-w64-mingw32/include/swprintf.inl \
C:/ProgramData/chocolatey/lib/mingw/tools/install/mingw64/x86_64-w64-mingw32/include/sec_api/stdio_s.h C:/ProgramData/chocolatey/lib/mingw/tools/install/mingw64/x86_64-w64-mingw32/include/sec_api/stdio_s.h \
C:/mingw_dev_lib/sdl2_mixer/include/SDL2/SDL_mixer.h \
C:/mingw_dev_lib/sdl2/include/SDL2/SDL_stdinc.h \
C:/mingw_dev_lib/sdl2/include/SDL2/SDL_rwops.h \
C:/mingw_dev_lib/sdl2/include/SDL2/SDL_audio.h \
C:/mingw_dev_lib/sdl2/include/SDL2/SDL_endian.h \
C:/mingw_dev_lib/sdl2/include/SDL2/SDL_version.h \
C:/mingw_dev_lib/sdl2/include/SDL2/begin_code.h \
C:/mingw_dev_lib/sdl2/include/SDL2/close_code.h
C:/ProgramData/chocolatey/lib/mingw/tools/install/mingw64/x86_64-w64-mingw32/include/_mingw_mac.h: C:/ProgramData/chocolatey/lib/mingw/tools/install/mingw64/x86_64-w64-mingw32/include/_mingw_mac.h:
@ -548,3 +556,5 @@ C:/ProgramData/chocolatey/lib/mingw/tools/install/mingw64/x86_64-w64-mingw32/inc
C:/ProgramData/chocolatey/lib/mingw/tools/install/mingw64/x86_64-w64-mingw32/include/corecrt_stdio_config.h: C:/ProgramData/chocolatey/lib/mingw/tools/install/mingw64/x86_64-w64-mingw32/include/corecrt_stdio_config.h:
C:/ProgramData/chocolatey/lib/mingw/tools/install/mingw64/x86_64-w64-mingw32/include/swprintf.inl: C:/ProgramData/chocolatey/lib/mingw/tools/install/mingw64/x86_64-w64-mingw32/include/swprintf.inl:
C:/mingw_dev_lib/sdl2_mixer/include/SDL2/SDL_mixer.h:

View File

@ -1 +1 @@
-IC:/mingw_dev_lib/sdl2/include/SDL2 -isystem c:/mingw_dev_lib/sdl2/include/SDL2 -isystem C:/mingw_dev_lib/sdl2_mixer/include/SDL2

View File

@ -1 +1 @@
-lmingw32 C:/mingw_dev_lib/sdl2/lib/libSDL2main.a C:/mingw_dev_lib/sdl2/lib/libSDL2.dll.a -lkernel32 -luser32 -lgdi32 -lwinspool -lshell32 -lole32 -loleaut32 -luuid -lcomdlg32 -ladvapi32 -lmingw32 C:/mingw_dev_lib/sdl2/lib/libSDL2main.a C:/mingw_dev_lib/sdl2/lib/libSDL2.dll.a C:/mingw_dev_lib/sdl2_mixer/lib/libSDL2_mixer.dll.a C:/mingw_dev_lib/sdl2/lib/libSDL2.dll.a -lkernel32 -luser32 -lgdi32 -lwinspool -lshell32 -lole32 -loleaut32 -luuid -lcomdlg32 -ladvapi32

View File

@ -1,12 +1,12 @@
CMakeFiles/sdl2forthewin.dir/main.cpp.obj: \ CMakeFiles/sdl2forthewin.dir/main.cpp.obj: \
C:\Users\Admin\projects\sdl2forthewin\main.cpp \ C:\Users\Admin\projects\sdl2forthewin\main.cpp \
C:/mingw_dev_lib/sdl2/include/SDL2/SDL.h \ c:/mingw_dev_lib/sdl2/include/SDL2/SDL.h \
C:/mingw_dev_lib/sdl2/include/SDL2/SDL_main.h \ c:/mingw_dev_lib/sdl2/include/SDL2/SDL_main.h \
C:/mingw_dev_lib/sdl2/include/SDL2/SDL_stdinc.h \ c:/mingw_dev_lib/sdl2/include/SDL2/SDL_stdinc.h \
C:/mingw_dev_lib/sdl2/include/SDL2/SDL_config.h \ c:/mingw_dev_lib/sdl2/include/SDL2/SDL_config.h \
C:/mingw_dev_lib/sdl2/include/SDL2/SDL_platform.h \ c:/mingw_dev_lib/sdl2/include/SDL2/SDL_platform.h \
C:/mingw_dev_lib/sdl2/include/SDL2/begin_code.h \ c:/mingw_dev_lib/sdl2/include/SDL2/begin_code.h \
C:/mingw_dev_lib/sdl2/include/SDL2/close_code.h \ c:/mingw_dev_lib/sdl2/include/SDL2/close_code.h \
c:\programdata\chocolatey\lib\mingw\tools\install\mingw64\x86_64-w64-mingw32\include\winsdkver.h \ c:\programdata\chocolatey\lib\mingw\tools\install\mingw64\x86_64-w64-mingw32\include\winsdkver.h \
c:\programdata\chocolatey\lib\mingw\tools\install\mingw64\x86_64-w64-mingw32\include\winapifamily.h \ c:\programdata\chocolatey\lib\mingw\tools\install\mingw64\x86_64-w64-mingw32\include\winapifamily.h \
c:\programdata\chocolatey\lib\mingw\tools\install\mingw64\x86_64-w64-mingw32\include\sdkddkver.h \ c:\programdata\chocolatey\lib\mingw\tools\install\mingw64\x86_64-w64-mingw32\include\sdkddkver.h \
@ -24,20 +24,20 @@ CMakeFiles/sdl2forthewin.dir/main.cpp.obj: \
c:\programdata\chocolatey\lib\mingw\tools\install\mingw64\x86_64-w64-mingw32\include\_mingw_stdarg.h \ c:\programdata\chocolatey\lib\mingw\tools\install\mingw64\x86_64-w64-mingw32\include\_mingw_stdarg.h \
c:\programdata\chocolatey\lib\mingw\tools\install\mingw64\lib\gcc\x86_64-w64-mingw32\11.2.0\include\stdint.h \ c:\programdata\chocolatey\lib\mingw\tools\install\mingw64\lib\gcc\x86_64-w64-mingw32\11.2.0\include\stdint.h \
c:\programdata\chocolatey\lib\mingw\tools\install\mingw64\x86_64-w64-mingw32\include\stdint.h \ c:\programdata\chocolatey\lib\mingw\tools\install\mingw64\x86_64-w64-mingw32\include\stdint.h \
C:/mingw_dev_lib/sdl2/include/SDL2/SDL_assert.h \ c:/mingw_dev_lib/sdl2/include/SDL2/SDL_assert.h \
C:/mingw_dev_lib/sdl2/include/SDL2/SDL_atomic.h \ c:/mingw_dev_lib/sdl2/include/SDL2/SDL_atomic.h \
C:/mingw_dev_lib/sdl2/include/SDL2/SDL_audio.h \ c:/mingw_dev_lib/sdl2/include/SDL2/SDL_audio.h \
C:/mingw_dev_lib/sdl2/include/SDL2/SDL_error.h \ c:/mingw_dev_lib/sdl2/include/SDL2/SDL_error.h \
C:/mingw_dev_lib/sdl2/include/SDL2/SDL_endian.h \ c:/mingw_dev_lib/sdl2/include/SDL2/SDL_endian.h \
C:/mingw_dev_lib/sdl2/include/SDL2/SDL_mutex.h \ c:/mingw_dev_lib/sdl2/include/SDL2/SDL_mutex.h \
C:/mingw_dev_lib/sdl2/include/SDL2/SDL_thread.h \ c:/mingw_dev_lib/sdl2/include/SDL2/SDL_thread.h \
c:\programdata\chocolatey\lib\mingw\tools\install\mingw64\x86_64-w64-mingw32\include\process.h \ c:\programdata\chocolatey\lib\mingw\tools\install\mingw64\x86_64-w64-mingw32\include\process.h \
c:\programdata\chocolatey\lib\mingw\tools\install\mingw64\x86_64-w64-mingw32\include\corecrt_startup.h \ c:\programdata\chocolatey\lib\mingw\tools\install\mingw64\x86_64-w64-mingw32\include\corecrt_startup.h \
c:\programdata\chocolatey\lib\mingw\tools\install\mingw64\x86_64-w64-mingw32\include\sys\types.h \ c:\programdata\chocolatey\lib\mingw\tools\install\mingw64\x86_64-w64-mingw32\include\sys\types.h \
c:\programdata\chocolatey\lib\mingw\tools\install\mingw64\x86_64-w64-mingw32\include\_mingw_off_t.h \ c:\programdata\chocolatey\lib\mingw\tools\install\mingw64\x86_64-w64-mingw32\include\_mingw_off_t.h \
C:/mingw_dev_lib/sdl2/include/SDL2/SDL_rwops.h \ c:/mingw_dev_lib/sdl2/include/SDL2/SDL_rwops.h \
C:/mingw_dev_lib/sdl2/include/SDL2/SDL_clipboard.h \ c:/mingw_dev_lib/sdl2/include/SDL2/SDL_clipboard.h \
C:/mingw_dev_lib/sdl2/include/SDL2/SDL_cpuinfo.h \ c:/mingw_dev_lib/sdl2/include/SDL2/SDL_cpuinfo.h \
c:\programdata\chocolatey\lib\mingw\tools\install\mingw64\x86_64-w64-mingw32\include\intrin.h \ c:\programdata\chocolatey\lib\mingw\tools\install\mingw64\x86_64-w64-mingw32\include\intrin.h \
c:\programdata\chocolatey\lib\mingw\tools\install\mingw64\x86_64-w64-mingw32\include\setjmp.h \ c:\programdata\chocolatey\lib\mingw\tools\install\mingw64\x86_64-w64-mingw32\include\setjmp.h \
c:\programdata\chocolatey\lib\mingw\tools\install\mingw64\x86_64-w64-mingw32\include\psdk_inc\intrin-impl.h \ c:\programdata\chocolatey\lib\mingw\tools\install\mingw64\x86_64-w64-mingw32\include\psdk_inc\intrin-impl.h \
@ -144,40 +144,48 @@ CMakeFiles/sdl2forthewin.dir/main.cpp.obj: \
c:\programdata\chocolatey\lib\mingw\tools\install\mingw64\lib\gcc\x86_64-w64-mingw32\11.2.0\include\fma4intrin.h \ c:\programdata\chocolatey\lib\mingw\tools\install\mingw64\lib\gcc\x86_64-w64-mingw32\11.2.0\include\fma4intrin.h \
c:\programdata\chocolatey\lib\mingw\tools\install\mingw64\lib\gcc\x86_64-w64-mingw32\11.2.0\include\ammintrin.h \ c:\programdata\chocolatey\lib\mingw\tools\install\mingw64\lib\gcc\x86_64-w64-mingw32\11.2.0\include\ammintrin.h \
c:\programdata\chocolatey\lib\mingw\tools\install\mingw64\lib\gcc\x86_64-w64-mingw32\11.2.0\include\xopintrin.h \ c:\programdata\chocolatey\lib\mingw\tools\install\mingw64\lib\gcc\x86_64-w64-mingw32\11.2.0\include\xopintrin.h \
C:/mingw_dev_lib/sdl2/include/SDL2/SDL_events.h \ c:/mingw_dev_lib/sdl2/include/SDL2/SDL_events.h \
C:/mingw_dev_lib/sdl2/include/SDL2/SDL_video.h \ c:/mingw_dev_lib/sdl2/include/SDL2/SDL_video.h \
C:/mingw_dev_lib/sdl2/include/SDL2/SDL_pixels.h \ c:/mingw_dev_lib/sdl2/include/SDL2/SDL_pixels.h \
C:/mingw_dev_lib/sdl2/include/SDL2/SDL_rect.h \ c:/mingw_dev_lib/sdl2/include/SDL2/SDL_rect.h \
C:/mingw_dev_lib/sdl2/include/SDL2/SDL_surface.h \ c:/mingw_dev_lib/sdl2/include/SDL2/SDL_surface.h \
C:/mingw_dev_lib/sdl2/include/SDL2/SDL_blendmode.h \ c:/mingw_dev_lib/sdl2/include/SDL2/SDL_blendmode.h \
C:/mingw_dev_lib/sdl2/include/SDL2/SDL_keyboard.h \ c:/mingw_dev_lib/sdl2/include/SDL2/SDL_keyboard.h \
C:/mingw_dev_lib/sdl2/include/SDL2/SDL_keycode.h \ c:/mingw_dev_lib/sdl2/include/SDL2/SDL_keycode.h \
C:/mingw_dev_lib/sdl2/include/SDL2/SDL_scancode.h \ c:/mingw_dev_lib/sdl2/include/SDL2/SDL_scancode.h \
C:/mingw_dev_lib/sdl2/include/SDL2/SDL_mouse.h \ c:/mingw_dev_lib/sdl2/include/SDL2/SDL_mouse.h \
C:/mingw_dev_lib/sdl2/include/SDL2/SDL_joystick.h \ c:/mingw_dev_lib/sdl2/include/SDL2/SDL_joystick.h \
C:/mingw_dev_lib/sdl2/include/SDL2/SDL_guid.h \ c:/mingw_dev_lib/sdl2/include/SDL2/SDL_guid.h \
C:/mingw_dev_lib/sdl2/include/SDL2/SDL_gamecontroller.h \ c:/mingw_dev_lib/sdl2/include/SDL2/SDL_gamecontroller.h \
C:/mingw_dev_lib/sdl2/include/SDL2/SDL_sensor.h \ c:/mingw_dev_lib/sdl2/include/SDL2/SDL_sensor.h \
C:/mingw_dev_lib/sdl2/include/SDL2/SDL_quit.h \ c:/mingw_dev_lib/sdl2/include/SDL2/SDL_quit.h \
C:/mingw_dev_lib/sdl2/include/SDL2/SDL_gesture.h \ c:/mingw_dev_lib/sdl2/include/SDL2/SDL_gesture.h \
C:/mingw_dev_lib/sdl2/include/SDL2/SDL_touch.h \ c:/mingw_dev_lib/sdl2/include/SDL2/SDL_touch.h \
C:/mingw_dev_lib/sdl2/include/SDL2/SDL_filesystem.h \ c:/mingw_dev_lib/sdl2/include/SDL2/SDL_filesystem.h \
C:/mingw_dev_lib/sdl2/include/SDL2/SDL_haptic.h \ c:/mingw_dev_lib/sdl2/include/SDL2/SDL_haptic.h \
C:/mingw_dev_lib/sdl2/include/SDL2/SDL_hidapi.h \ c:/mingw_dev_lib/sdl2/include/SDL2/SDL_hidapi.h \
C:/mingw_dev_lib/sdl2/include/SDL2/SDL_hints.h \ c:/mingw_dev_lib/sdl2/include/SDL2/SDL_hints.h \
C:/mingw_dev_lib/sdl2/include/SDL2/SDL_loadso.h \ c:/mingw_dev_lib/sdl2/include/SDL2/SDL_loadso.h \
C:/mingw_dev_lib/sdl2/include/SDL2/SDL_log.h \ c:/mingw_dev_lib/sdl2/include/SDL2/SDL_log.h \
C:/mingw_dev_lib/sdl2/include/SDL2/SDL_messagebox.h \ c:/mingw_dev_lib/sdl2/include/SDL2/SDL_messagebox.h \
C:/mingw_dev_lib/sdl2/include/SDL2/SDL_metal.h \ c:/mingw_dev_lib/sdl2/include/SDL2/SDL_metal.h \
C:/mingw_dev_lib/sdl2/include/SDL2/SDL_power.h \ c:/mingw_dev_lib/sdl2/include/SDL2/SDL_power.h \
C:/mingw_dev_lib/sdl2/include/SDL2/SDL_render.h \ c:/mingw_dev_lib/sdl2/include/SDL2/SDL_render.h \
C:/mingw_dev_lib/sdl2/include/SDL2/SDL_shape.h \ c:/mingw_dev_lib/sdl2/include/SDL2/SDL_shape.h \
C:/mingw_dev_lib/sdl2/include/SDL2/SDL_system.h \ c:/mingw_dev_lib/sdl2/include/SDL2/SDL_system.h \
C:/mingw_dev_lib/sdl2/include/SDL2/SDL_timer.h \ c:/mingw_dev_lib/sdl2/include/SDL2/SDL_timer.h \
C:/mingw_dev_lib/sdl2/include/SDL2/SDL_version.h \ c:/mingw_dev_lib/sdl2/include/SDL2/SDL_version.h \
C:/mingw_dev_lib/sdl2/include/SDL2/SDL_locale.h \ c:/mingw_dev_lib/sdl2/include/SDL2/SDL_locale.h \
C:/mingw_dev_lib/sdl2/include/SDL2/SDL_misc.h \ c:/mingw_dev_lib/sdl2/include/SDL2/SDL_misc.h \
c:\programdata\chocolatey\lib\mingw\tools\install\mingw64\x86_64-w64-mingw32\include\stdio.h \ c:\programdata\chocolatey\lib\mingw\tools\install\mingw64\x86_64-w64-mingw32\include\stdio.h \
c:\programdata\chocolatey\lib\mingw\tools\install\mingw64\x86_64-w64-mingw32\include\corecrt_stdio_config.h \ c:\programdata\chocolatey\lib\mingw\tools\install\mingw64\x86_64-w64-mingw32\include\corecrt_stdio_config.h \
c:\programdata\chocolatey\lib\mingw\tools\install\mingw64\x86_64-w64-mingw32\include\swprintf.inl \ c:\programdata\chocolatey\lib\mingw\tools\install\mingw64\x86_64-w64-mingw32\include\swprintf.inl \
c:\programdata\chocolatey\lib\mingw\tools\install\mingw64\x86_64-w64-mingw32\include\sec_api\stdio_s.h c:\programdata\chocolatey\lib\mingw\tools\install\mingw64\x86_64-w64-mingw32\include\sec_api\stdio_s.h \
C:/mingw_dev_lib/sdl2_mixer/include/SDL2/SDL_mixer.h \
c:/mingw_dev_lib/sdl2/include/SDL2/SDL_stdinc.h \
c:/mingw_dev_lib/sdl2/include/SDL2/SDL_rwops.h \
c:/mingw_dev_lib/sdl2/include/SDL2/SDL_audio.h \
c:/mingw_dev_lib/sdl2/include/SDL2/SDL_endian.h \
c:/mingw_dev_lib/sdl2/include/SDL2/SDL_version.h \
c:/mingw_dev_lib/sdl2/include/SDL2/begin_code.h \
c:/mingw_dev_lib/sdl2/include/SDL2/close_code.h

Binary file not shown.

132
cmake/sdl2/Copyright.txt Normal file
View File

@ -0,0 +1,132 @@
CMake - Cross Platform Makefile Generator
Copyright 2000-2019 Kitware, Inc. and Contributors
All rights reserved.
Redistribution and use in source and binary forms, with or without
modification, are permitted provided that the following conditions
are met:
* Redistributions of source code must retain the above copyright
notice, this list of conditions and the following disclaimer.
* Redistributions in binary form must reproduce the above copyright
notice, this list of conditions and the following disclaimer in the
documentation and/or other materials provided with the distribution.
* Neither the name of Kitware, Inc. nor the names of Contributors
may be used to endorse or promote products derived from this
software without specific prior written permission.
THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
"AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
------------------------------------------------------------------------------
The following individuals and institutions are among the Contributors:
* Aaron C. Meadows <cmake@shadowguarddev.com>
* Adriaan de Groot <groot@kde.org>
* Aleksey Avdeev <solo@altlinux.ru>
* Alexander Neundorf <neundorf@kde.org>
* Alexander Smorkalov <alexander.smorkalov@itseez.com>
* Alexey Sokolov <sokolov@google.com>
* Alex Merry <alex.merry@kde.org>
* Alex Turbov <i.zaufi@gmail.com>
* Amine Ben Hassouna <amine.benhassouna@gmail.com>
* Andreas Pakulat <apaku@gmx.de>
* Andreas Schneider <asn@cryptomilk.org>
* André Rigland Brodtkorb <Andre.Brodtkorb@ifi.uio.no>
* Axel Huebl, Helmholtz-Zentrum Dresden - Rossendorf
* Benjamin Eikel
* Bjoern Ricks <bjoern.ricks@gmail.com>
* Brad Hards <bradh@kde.org>
* Christopher Harvey
* Christoph Grüninger <foss@grueninger.de>
* Clement Creusot <creusot@cs.york.ac.uk>
* Daniel Blezek <blezek@gmail.com>
* Daniel Pfeifer <daniel@pfeifer-mail.de>
* Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
* Eran Ifrah <eran.ifrah@gmail.com>
* Esben Mose Hansen, Ange Optimization ApS
* Geoffrey Viola <geoffrey.viola@asirobots.com>
* Google Inc
* Gregor Jasny
* Helio Chissini de Castro <helio@kde.org>
* Ilya Lavrenov <ilya.lavrenov@itseez.com>
* Insight Software Consortium <insightsoftwareconsortium.org>
* Jan Woetzel
* Julien Schueller
* Kelly Thompson <kgt@lanl.gov>
* Laurent Montel <montel@kde.org>
* Konstantin Podsvirov <konstantin@podsvirov.pro>
* Mario Bensi <mbensi@ipsquad.net>
* Martin Gräßlin <mgraesslin@kde.org>
* Mathieu Malaterre <mathieu.malaterre@gmail.com>
* Matthaeus G. Chajdas
* Matthias Kretz <kretz@kde.org>
* Matthias Maennich <matthias@maennich.net>
* Michael Hirsch, Ph.D. <www.scivision.co>
* Michael Stürmer
* Miguel A. Figueroa-Villanueva
* Mike Jackson
* Mike McQuaid <mike@mikemcquaid.com>
* Nicolas Bock <nicolasbock@gmail.com>
* Nicolas Despres <nicolas.despres@gmail.com>
* Nikita Krupen'ko <krnekit@gmail.com>
* NVIDIA Corporation <www.nvidia.com>
* OpenGamma Ltd. <opengamma.com>
* Patrick Stotko <stotko@cs.uni-bonn.de>
* Per Øyvind Karlsen <peroyvind@mandriva.org>
* Peter Collingbourne <peter@pcc.me.uk>
* Petr Gotthard <gotthard@honeywell.com>
* Philip Lowman <philip@yhbt.com>
* Philippe Proulx <pproulx@efficios.com>
* Raffi Enficiaud, Max Planck Society
* Raumfeld <raumfeld.com>
* Roger Leigh <rleigh@codelibre.net>
* Rolf Eike Beer <eike@sf-mail.de>
* Roman Donchenko <roman.donchenko@itseez.com>
* Roman Kharitonov <roman.kharitonov@itseez.com>
* Ruslan Baratov
* Sebastian Holtermann <sebholt@xwmw.org>
* Stephen Kelly <steveire@gmail.com>
* Sylvain Joubert <joubert.sy@gmail.com>
* Thomas Sondergaard <ts@medical-insight.com>
* Tobias Hunger <tobias.hunger@qt.io>
* Todd Gamblin <tgamblin@llnl.gov>
* Tristan Carel
* University of Dundee
* Vadim Zhukov
* Will Dicharry <wdicharry@stellarscience.com>
See version control history for details of individual contributions.
The above copyright and license notice applies to distributions of
CMake in source and binary form. Third-party software packages supplied
with CMake under compatible licenses provide their own copyright notices
documented in corresponding subdirectories or source files.
------------------------------------------------------------------------------
CMake was initially developed by Kitware with the following sponsorship:
* National Library of Medicine at the National Institutes of Health
as part of the Insight Segmentation and Registration Toolkit (ITK).
* US National Labs (Los Alamos, Livermore, Sandia) ASC Parallel
Visualization Initiative.
* National Alliance for Medical Image Computing (NAMIC) is funded by the
National Institutes of Health through the NIH Roadmap for Medical Research,
Grant U54 EB005149.
* Kitware, Inc.

388
cmake/sdl2/FindSDL2.cmake Normal file
View File

@ -0,0 +1,388 @@
# Distributed under the OSI-approved BSD 3-Clause License. See accompanying
# file Copyright.txt or https://cmake.org/licensing for details.
# Copyright 2019 Amine Ben Hassouna <amine.benhassouna@gmail.com>
# Copyright 2000-2019 Kitware, Inc. and Contributors
# All rights reserved.
# Redistribution and use in source and binary forms, with or without
# modification, are permitted provided that the following conditions
# are met:
# * Redistributions of source code must retain the above copyright
# notice, this list of conditions and the following disclaimer.
# * Redistributions in binary form must reproduce the above copyright
# notice, this list of conditions and the following disclaimer in the
# documentation and/or other materials provided with the distribution.
# * Neither the name of Kitware, Inc. nor the names of Contributors
# may be used to endorse or promote products derived from this
# software without specific prior written permission.
# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
# "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
# LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
# A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
# HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
# SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
# LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
# DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
# THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
# (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
# OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
#[=======================================================================[.rst:
FindSDL2
--------
Locate SDL2 library
This module defines the following 'IMPORTED' targets:
::
SDL2::Core
The SDL2 library, if found.
Libraries should link to SDL2::Core
SDL2::Main
The SDL2main library, if found.
Applications should link to SDL2::Main instead of SDL2::Core
This module will set the following variables in your project:
::
SDL2_LIBRARIES, the name of the library to link against
SDL2_INCLUDE_DIRS, where to find SDL.h
SDL2_FOUND, if false, do not try to link to SDL2
SDL2MAIN_FOUND, if false, do not try to link to SDL2main
SDL2_VERSION_STRING, human-readable string containing the version of SDL2
This module responds to the following cache variables:
::
SDL2_PATH
Set a custom SDL2 Library path (default: empty)
SDL2_NO_DEFAULT_PATH
Disable search SDL2 Library in default path.
If SDL2_PATH (default: ON)
Else (default: OFF)
SDL2_INCLUDE_DIR
SDL2 headers path.
SDL2_LIBRARY
SDL2 Library (.dll, .so, .a, etc) path.
SDL2MAIN_LIBRAY
SDL2main Library (.a) path.
SDL2_BUILDING_LIBRARY
This flag is useful only when linking to SDL2_LIBRARIES insead of
SDL2::Main. It is required only when building a library that links to
SDL2_LIBRARIES, because only applications need main() (No need to also
link to SDL2main).
If this flag is defined, then no SDL2main will be added to SDL2_LIBRARIES
and no SDL2::Main target will be created.
Don't forget to include SDLmain.h and SDLmain.m in 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_LIBRARY in your project
configuration, it means CMake did not find your SDL2 library
(SDL2.dll, libsdl2.so, SDL2.framework, etc). Set SDL2_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_LIBRARIES variable and the
SDL2::Core and SDL2::Main targets, but when these values are unset,
SDL2_LIBRARIES, SDL2::Core and SDL2::Main 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
Created by Amine Ben Hassouna:
Adapt FindSDL.cmake to SDL2 (FindSDL2.cmake).
Add cache variables for more flexibility:
SDL2_PATH, SDL2_NO_DEFAULT_PATH (for details, see doc above).
Mark 'Threads' as a required dependency for non-OSX systems.
Modernize the FindSDL2.cmake module by creating specific targets:
SDL2::Core and SDL2::Main (for details, see doc above).
Original FindSDL.cmake module:
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" SDL
guidelines. Added a search for SDLmain 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 value of SDL2_LIBRARY to
override this selection or set the SDL2_PATH variable or the CMake
environment CMAKE_INCLUDE_PATH to modify the search paths.
Note that the header path has changed from SDL/SDL.h to just SDL.h
This needed to change because "proper" SDL convention is #include
"SDL.h", not <SDL/SDL.h>. This is done for portability reasons
because not all systems place things in SDL/ (see FreeBSD).
#]=======================================================================]
# Define options for searching SDL2 Library in a custom path
set(SDL2_PATH "" CACHE STRING "Custom SDL2 Library path")
set(_SDL2_NO_DEFAULT_PATH OFF)
if(SDL2_PATH)
set(_SDL2_NO_DEFAULT_PATH ON)
endif()
set(SDL2_NO_DEFAULT_PATH ${_SDL2_NO_DEFAULT_PATH}
CACHE BOOL "Disable search SDL2 Library in default path")
unset(_SDL2_NO_DEFAULT_PATH)
set(SDL2_NO_DEFAULT_PATH_CMD)
if(SDL2_NO_DEFAULT_PATH)
set(SDL2_NO_DEFAULT_PATH_CMD NO_DEFAULT_PATH)
endif()
# Search for the SDL2 include directory
find_path(SDL2_INCLUDE_DIR SDL.h
HINTS
ENV SDL2DIR
${SDL2_NO_DEFAULT_PATH_CMD}
PATH_SUFFIXES SDL2
# path suffixes to search inside ENV{SDL2DIR}
include/SDL2 include
PATHS ${SDL2_PATH}
DOC "Where the SDL2 headers can be found"
)
set(SDL2_INCLUDE_DIRS "${SDL2_INCLUDE_DIR}")
if(CMAKE_SIZEOF_VOID_P EQUAL 8)
set(VC_LIB_PATH_SUFFIX lib/x64)
else()
set(VC_LIB_PATH_SUFFIX lib/x86)
endif()
# SDL-2.0 is the name used by FreeBSD ports...
# don't confuse it for the version number.
find_library(SDL2_LIBRARY
NAMES SDL2 SDL-2.0
HINTS
ENV SDL2DIR
${SDL2_NO_DEFAULT_PATH_CMD}
PATH_SUFFIXES lib ${VC_LIB_PATH_SUFFIX}
PATHS ${SDL2_PATH}
DOC "Where the SDL2 Library can be found"
)
set(SDL2_LIBRARIES "${SDL2_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.
if(SDL2_PATH)
set(SDL2MAIN_LIBRARY_PATHS "${SDL2_PATH}")
endif()
if(NOT SDL2_NO_DEFAULT_PATH)
set(SDL2MAIN_LIBRARY_PATHS
/sw
/opt/local
/opt/csw
/opt
"${SDL2MAIN_LIBRARY_PATHS}"
)
endif()
find_library(SDL2MAIN_LIBRARY
NAMES SDL2main
HINTS
ENV SDL2DIR
${SDL2_NO_DEFAULT_PATH_CMD}
PATH_SUFFIXES lib ${VC_LIB_PATH_SUFFIX}
PATHS ${SDL2MAIN_LIBRARY_PATHS}
DOC "Where the SDL2main library can be found"
)
unset(SDL2MAIN_LIBRARY_PATHS)
endif()
endif()
# 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 QUIET)
if(NOT Threads_FOUND)
set(SDL2_THREADS_NOT_FOUND "Could NOT find Threads (Threads is required by SDL2).")
if(SDL2_FIND_REQUIRED)
message(FATAL_ERROR ${SDL2_THREADS_NOT_FOUND})
else()
if(NOT SDL2_FIND_QUIETLY)
message(STATUS ${SDL2_THREADS_NOT_FOUND})
endif()
return()
endif()
unset(SDL2_THREADS_NOT_FOUND)
endif()
endif()
# MinGW needs an additional link flag, -mwindows
# It's total link flags should look like -lmingw32 -lSDL2main -lSDL2 -mwindows
if(MINGW)
set(MINGW32_LIBRARY mingw32 "-mwindows" CACHE STRING "link flags for MinGW")
endif()
if(SDL2_LIBRARY)
# For SDL2main
if(SDL2MAIN_LIBRARY AND NOT SDL2_BUILDING_LIBRARY)
list(FIND SDL2_LIBRARIES "${SDL2MAIN_LIBRARY}" _SDL2_MAIN_INDEX)
if(_SDL2_MAIN_INDEX EQUAL -1)
set(SDL2_LIBRARIES "${SDL2MAIN_LIBRARY}" ${SDL2_LIBRARIES})
endif()
unset(_SDL2_MAIN_INDEX)
endif()
# 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_LIBRARIES ${SDL2_LIBRARIES} -framework Cocoa)
endif()
# 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_LIBRARIES ${SDL2_LIBRARIES} ${CMAKE_THREAD_LIBS_INIT})
endif()
# For MinGW library
if(MINGW)
set(SDL2_LIBRARIES ${MINGW32_LIBRARY} ${SDL2_LIBRARIES})
endif()
endif()
# Read SDL2 version
if(SDL2_INCLUDE_DIR AND EXISTS "${SDL2_INCLUDE_DIR}/SDL_version.h")
file(STRINGS "${SDL2_INCLUDE_DIR}/SDL_version.h" SDL2_VERSION_MAJOR_LINE REGEX "^#define[ \t]+SDL_MAJOR_VERSION[ \t]+[0-9]+$")
file(STRINGS "${SDL2_INCLUDE_DIR}/SDL_version.h" SDL2_VERSION_MINOR_LINE REGEX "^#define[ \t]+SDL_MINOR_VERSION[ \t]+[0-9]+$")
file(STRINGS "${SDL2_INCLUDE_DIR}/SDL_version.h" SDL2_VERSION_PATCH_LINE REGEX "^#define[ \t]+SDL_PATCHLEVEL[ \t]+[0-9]+$")
string(REGEX REPLACE "^#define[ \t]+SDL_MAJOR_VERSION[ \t]+([0-9]+)$" "\\1" SDL2_VERSION_MAJOR "${SDL2_VERSION_MAJOR_LINE}")
string(REGEX REPLACE "^#define[ \t]+SDL_MINOR_VERSION[ \t]+([0-9]+)$" "\\1" SDL2_VERSION_MINOR "${SDL2_VERSION_MINOR_LINE}")
string(REGEX REPLACE "^#define[ \t]+SDL_PATCHLEVEL[ \t]+([0-9]+)$" "\\1" SDL2_VERSION_PATCH "${SDL2_VERSION_PATCH_LINE}")
set(SDL2_VERSION_STRING ${SDL2_VERSION_MAJOR}.${SDL2_VERSION_MINOR}.${SDL2_VERSION_PATCH})
unset(SDL2_VERSION_MAJOR_LINE)
unset(SDL2_VERSION_MINOR_LINE)
unset(SDL2_VERSION_PATCH_LINE)
unset(SDL2_VERSION_MAJOR)
unset(SDL2_VERSION_MINOR)
unset(SDL2_VERSION_PATCH)
endif()
include(FindPackageHandleStandardArgs)
FIND_PACKAGE_HANDLE_STANDARD_ARGS(SDL2
REQUIRED_VARS SDL2_LIBRARY SDL2_INCLUDE_DIR
VERSION_VAR SDL2_VERSION_STRING)
if(SDL2MAIN_LIBRARY)
FIND_PACKAGE_HANDLE_STANDARD_ARGS(SDL2main
REQUIRED_VARS SDL2MAIN_LIBRARY SDL2_INCLUDE_DIR
VERSION_VAR SDL2_VERSION_STRING)
endif()
mark_as_advanced(SDL2_PATH
SDL2_NO_DEFAULT_PATH
SDL2_LIBRARY
SDL2MAIN_LIBRARY
SDL2_INCLUDE_DIR
SDL2_BUILDING_LIBRARY)
# SDL2:: targets (SDL2::Core and SDL2::Main)
if(SDL2_FOUND)
# SDL2::Core target
if(SDL2_LIBRARY AND NOT TARGET SDL2::Core)
add_library(SDL2::Core UNKNOWN IMPORTED)
set_target_properties(SDL2::Core PROPERTIES
IMPORTED_LOCATION "${SDL2_LIBRARY}"
INTERFACE_INCLUDE_DIRECTORIES "${SDL2_INCLUDE_DIR}")
if(APPLE)
# For OS X, SDL2 uses Cocoa as a backend so it must link to Cocoa.
# For more details, please see above.
set_property(TARGET SDL2::Core APPEND PROPERTY
INTERFACE_LINK_OPTIONS -framework Cocoa)
else()
# For threads, as mentioned Apple doesn't need this.
# For more details, please see above.
set_property(TARGET SDL2::Core APPEND PROPERTY
INTERFACE_LINK_LIBRARIES Threads::Threads)
endif()
endif()
# SDL2::Main target
# Applications should link to SDL2::Main instead of SDL2::Core
# For more details, please see above.
if(NOT SDL2_BUILDING_LIBRARY AND NOT TARGET SDL2::Main)
if(SDL2_INCLUDE_DIR MATCHES ".framework" OR NOT SDL2MAIN_LIBRARY)
add_library(SDL2::Main INTERFACE IMPORTED)
set_property(TARGET SDL2::Main PROPERTY
INTERFACE_LINK_LIBRARIES SDL2::Core)
elseif(SDL2MAIN_LIBRARY)
# MinGW requires that the mingw32 library is specified before the
# libSDL2main.a static library when linking.
# The SDL2::MainInternal target is used internally to make sure that
# CMake respects this condition.
add_library(SDL2::MainInternal UNKNOWN IMPORTED)
set_property(TARGET SDL2::MainInternal PROPERTY
IMPORTED_LOCATION "${SDL2MAIN_LIBRARY}")
set_property(TARGET SDL2::MainInternal PROPERTY
INTERFACE_LINK_LIBRARIES SDL2::Core)
add_library(SDL2::Main INTERFACE IMPORTED)
if(MINGW)
# MinGW needs an additional link flag '-mwindows' and link to mingw32
set_property(TARGET SDL2::Main PROPERTY
INTERFACE_LINK_LIBRARIES "mingw32" "-mwindows")
endif()
set_property(TARGET SDL2::Main APPEND PROPERTY
INTERFACE_LINK_LIBRARIES SDL2::MainInternal)
endif()
endif()
endif()

View File

@ -0,0 +1,222 @@
# Distributed under the OSI-approved BSD 3-Clause License. See accompanying
# file Copyright.txt or https://cmake.org/licensing for details.
# Copyright 2019 Amine Ben Hassouna <amine.benhassouna@gmail.com>
# Copyright 2000-2019 Kitware, Inc. and Contributors
# All rights reserved.
# Redistribution and use in source and binary forms, with or without
# modification, are permitted provided that the following conditions
# are met:
# * Redistributions of source code must retain the above copyright
# notice, this list of conditions and the following disclaimer.
# * Redistributions in binary form must reproduce the above copyright
# notice, this list of conditions and the following disclaimer in the
# documentation and/or other materials provided with the distribution.
# * Neither the name of Kitware, Inc. nor the names of Contributors
# may be used to endorse or promote products derived from this
# software without specific prior written permission.
# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
# "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
# LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
# A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
# HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
# SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
# LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
# DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
# THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
# (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
# OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
#[=======================================================================[.rst:
FindSDL2_gfx
--------------
Locate SDL2_gfx library
This module defines the following 'IMPORTED' target:
::
SDL2::GFX
The SDL2_gfx library, if found.
Have SDL2::Core as a link dependency.
This module will set the following variables in your project:
::
SDL2_GFX_LIBRARIES, the name of the library to link against
SDL2_GFX_INCLUDE_DIRS, where to find the headers
SDL2_GFX_FOUND, if false, do not try to link against
SDL2_GFX_VERSION_STRING - human-readable string containing the
version of SDL2_gfx
This module responds to the following cache variables:
::
SDL2_GFX_PATH
Set a custom SDL2_gfx Library path (default: empty)
SDL2_GFX_NO_DEFAULT_PATH
Disable search SDL2_gfx Library in default path.
If SDL2_GFX_PATH (default: ON)
Else (default: OFF)
SDL2_GFX_INCLUDE_DIR
SDL2_gfx headers path.
SDL2_GFX_LIBRARY
SDL2_gfx Library (.dll, .so, .a, etc) path.
Additional Note: If you see an empty SDL2_GFX_LIBRARY in your project
configuration, it means CMake did not find your SDL2_gfx library
(SDL2_gfx.dll, libsdl2_gfx.so, etc). Set SDL2_GFX_LIBRARY to point
to your SDL2_gfx library, and configure again. This value is used to
generate the final SDL2_GFX_LIBRARIES variable and the SDL2::GFX target,
but when this value is unset, SDL2_GFX_LIBRARIES and SDL2::GFX does not
get created.
$SDL2GFXDIR is an environment variable that would correspond to the
./configure --prefix=$SDL2GFXDIR used in building SDL2_gfx.
$SDL2DIR is an environment variable that would correspond to the
./configure --prefix=$SDL2DIR used in building SDL2.
Created by Amine Ben Hassouna:
Adapt FindSDL_image.cmake to SDL2_gfx (FindSDL2_gfx.cmake).
Add cache variables for more flexibility:
SDL2_GFX_PATH, SDL2_GFX_NO_DEFAULT_PATH (for details, see doc above).
Add SDL2 as a required dependency.
Modernize the FindSDL2_gfx.cmake module by creating a specific target:
SDL2::GFX (for details, see doc above).
Original FindSDL_image.cmake module:
Created by Eric Wing. This was influenced by the FindSDL.cmake
module, but with modifications to recognize OS X frameworks and
additional Unix paths (FreeBSD, etc).
#]=======================================================================]
# SDL2 Library required
find_package(SDL2 QUIET)
if(NOT SDL2_FOUND)
set(SDL2_GFX_SDL2_NOT_FOUND "Could NOT find SDL2 (SDL2 is required by SDL2_gfx).")
if(SDL2_gfx_FIND_REQUIRED)
message(FATAL_ERROR ${SDL2_GFX_SDL2_NOT_FOUND})
else()
if(NOT SDL2_gfx_FIND_QUIETLY)
message(STATUS ${SDL2_GFX_SDL2_NOT_FOUND})
endif()
return()
endif()
unset(SDL2_GFX_SDL2_NOT_FOUND)
endif()
# Define options for searching SDL2_gfx Library in a custom path
set(SDL2_GFX_PATH "" CACHE STRING "Custom SDL2_gfx Library path")
set(_SDL2_GFX_NO_DEFAULT_PATH OFF)
if(SDL2_GFX_PATH)
set(_SDL2_GFX_NO_DEFAULT_PATH ON)
endif()
set(SDL2_GFX_NO_DEFAULT_PATH ${_SDL2_GFX_NO_DEFAULT_PATH}
CACHE BOOL "Disable search SDL2_gfx Library in default path")
unset(_SDL2_GFX_NO_DEFAULT_PATH)
set(SDL2_GFX_NO_DEFAULT_PATH_CMD)
if(SDL2_GFX_NO_DEFAULT_PATH)
set(SDL2_GFX_NO_DEFAULT_PATH_CMD NO_DEFAULT_PATH)
endif()
# Search for the SDL2_gfx include directory
find_path(SDL2_GFX_INCLUDE_DIR SDL2_gfxPrimitives.h
HINTS
ENV SDL2GFXDIR
ENV SDL2DIR
${SDL2_GFX_NO_DEFAULT_PATH_CMD}
PATH_SUFFIXES SDL2
# path suffixes to search inside ENV{SDL2DIR}
# and ENV{SDL2GFXDIR}
include/SDL2 include
PATHS ${SDL2_GFX_PATH}
DOC "Where the SDL2_gfx headers can be found"
)
if(CMAKE_SIZEOF_VOID_P EQUAL 8)
set(VC_LIB_PATH_SUFFIX lib/x64)
else()
set(VC_LIB_PATH_SUFFIX lib/x86)
endif()
# Search for the SDL2_gfx library
find_library(SDL2_GFX_LIBRARY
NAMES SDL2_gfx
HINTS
ENV SDL2GFXDIR
ENV SDL2DIR
${SDL2_GFX_NO_DEFAULT_PATH_CMD}
PATH_SUFFIXES lib ${VC_LIB_PATH_SUFFIX}
PATHS ${SDL2_GFX_PATH}
DOC "Where the SDL2_gfx Library can be found"
)
# Read SDL2_gfx version
if(SDL2_GFX_INCLUDE_DIR AND EXISTS "${SDL2_GFX_INCLUDE_DIR}/SDL2_gfxPrimitives.h")
file(STRINGS "${SDL2_GFX_INCLUDE_DIR}/SDL2_gfxPrimitives.h" SDL2_GFX_VERSION_MAJOR_LINE REGEX "^#define[ \t]+SDL2_GFXPRIMITIVES_MAJOR[ \t]+[0-9]+$")
file(STRINGS "${SDL2_GFX_INCLUDE_DIR}/SDL2_gfxPrimitives.h" SDL2_GFX_VERSION_MINOR_LINE REGEX "^#define[ \t]+SDL2_GFXPRIMITIVES_MINOR[ \t]+[0-9]+$")
file(STRINGS "${SDL2_GFX_INCLUDE_DIR}/SDL2_gfxPrimitives.h" SDL2_GFX_VERSION_PATCH_LINE REGEX "^#define[ \t]+SDL2_GFXPRIMITIVES_MICRO[ \t]+[0-9]+$")
string(REGEX REPLACE "^#define[ \t]+SDL2_GFXPRIMITIVES_MAJOR[ \t]+([0-9]+)$" "\\1" SDL2_GFX_VERSION_MAJOR "${SDL2_GFX_VERSION_MAJOR_LINE}")
string(REGEX REPLACE "^#define[ \t]+SDL2_GFXPRIMITIVES_MINOR[ \t]+([0-9]+)$" "\\1" SDL2_GFX_VERSION_MINOR "${SDL2_GFX_VERSION_MINOR_LINE}")
string(REGEX REPLACE "^#define[ \t]+SDL2_GFXPRIMITIVES_MICRO[ \t]+([0-9]+)$" "\\1" SDL2_GFX_VERSION_PATCH "${SDL2_GFX_VERSION_PATCH_LINE}")
set(SDL2_GFX_VERSION_STRING ${SDL2_GFX_VERSION_MAJOR}.${SDL2_GFX_VERSION_MINOR}.${SDL2_GFX_VERSION_PATCH})
unset(SDL2_GFX_VERSION_MAJOR_LINE)
unset(SDL2_GFX_VERSION_MINOR_LINE)
unset(SDL2_GFX_VERSION_PATCH_LINE)
unset(SDL2_GFX_VERSION_MAJOR)
unset(SDL2_GFX_VERSION_MINOR)
unset(SDL2_GFX_VERSION_PATCH)
endif()
set(SDL2_GFX_LIBRARIES ${SDL2_GFX_LIBRARY})
set(SDL2_GFX_INCLUDE_DIRS ${SDL2_GFX_INCLUDE_DIR})
include(FindPackageHandleStandardArgs)
FIND_PACKAGE_HANDLE_STANDARD_ARGS(SDL2_gfx
REQUIRED_VARS SDL2_GFX_LIBRARIES SDL2_GFX_INCLUDE_DIRS
VERSION_VAR SDL2_GFX_VERSION_STRING)
mark_as_advanced(SDL2_GFX_PATH
SDL2_GFX_NO_DEFAULT_PATH
SDL2_GFX_LIBRARY
SDL2_GFX_INCLUDE_DIR)
if(SDL2_GFX_FOUND)
# SDL2::GFX target
if(SDL2_GFX_LIBRARY AND NOT TARGET SDL2::GFX)
add_library(SDL2::GFX UNKNOWN IMPORTED)
set_target_properties(SDL2::GFX PROPERTIES
IMPORTED_LOCATION "${SDL2_GFX_LIBRARY}"
INTERFACE_INCLUDE_DIRECTORIES "${SDL2_GFX_INCLUDE_DIR}"
INTERFACE_LINK_LIBRARIES SDL2::Core)
endif()
endif()

View File

@ -0,0 +1,222 @@
# Distributed under the OSI-approved BSD 3-Clause License. See accompanying
# file Copyright.txt or https://cmake.org/licensing for details.
# Copyright 2019 Amine Ben Hassouna <amine.benhassouna@gmail.com>
# Copyright 2000-2019 Kitware, Inc. and Contributors
# All rights reserved.
# Redistribution and use in source and binary forms, with or without
# modification, are permitted provided that the following conditions
# are met:
# * Redistributions of source code must retain the above copyright
# notice, this list of conditions and the following disclaimer.
# * Redistributions in binary form must reproduce the above copyright
# notice, this list of conditions and the following disclaimer in the
# documentation and/or other materials provided with the distribution.
# * Neither the name of Kitware, Inc. nor the names of Contributors
# may be used to endorse or promote products derived from this
# software without specific prior written permission.
# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
# "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
# LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
# A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
# HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
# SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
# LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
# DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
# THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
# (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
# OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
#[=======================================================================[.rst:
FindSDL2_image
--------------
Locate SDL2_image library
This module defines the following 'IMPORTED' target:
::
SDL2::Image
The SDL2_image library, if found.
Have SDL2::Core as a link dependency.
This module will set the following variables in your project:
::
SDL2_IMAGE_LIBRARIES, the name of the library to link against
SDL2_IMAGE_INCLUDE_DIRS, where to find the headers
SDL2_IMAGE_FOUND, if false, do not try to link against
SDL2_IMAGE_VERSION_STRING - human-readable string containing the
version of SDL2_image
This module responds to the following cache variables:
::
SDL2_IMAGE_PATH
Set a custom SDL2_image Library path (default: empty)
SDL2_IMAGE_NO_DEFAULT_PATH
Disable search SDL2_image Library in default path.
If SDL2_IMAGE_PATH (default: ON)
Else (default: OFF)
SDL2_IMAGE_INCLUDE_DIR
SDL2_image headers path.
SDL2_IMAGE_LIBRARY
SDL2_image Library (.dll, .so, .a, etc) path.
Additional Note: If you see an empty SDL2_IMAGE_LIBRARY in your project
configuration, it means CMake did not find your SDL2_image library
(SDL2_image.dll, libsdl2_image.so, etc). Set SDL2_IMAGE_LIBRARY to point
to your SDL2_image library, and configure again. This value is used to
generate the final SDL2_IMAGE_LIBRARIES variable and the SDL2::Image target,
but when this value is unset, SDL2_IMAGE_LIBRARIES and SDL2::Image does not
get created.
$SDL2IMAGEDIR is an environment variable that would correspond to the
./configure --prefix=$SDL2IMAGEDIR used in building SDL2_image.
$SDL2DIR is an environment variable that would correspond to the
./configure --prefix=$SDL2DIR used in building SDL2.
Created by Amine Ben Hassouna:
Adapt FindSDL_image.cmake to SDL2_image (FindSDL2_image.cmake).
Add cache variables for more flexibility:
SDL2_IMAGE_PATH, SDL2_IMAGE_NO_DEFAULT_PATH (for details, see doc above).
Add SDL2 as a required dependency.
Modernize the FindSDL2_image.cmake module by creating a specific target:
SDL2::Image (for details, see doc above).
Original FindSDL_image.cmake module:
Created by Eric Wing. This was influenced by the FindSDL.cmake
module, but with modifications to recognize OS X frameworks and
additional Unix paths (FreeBSD, etc).
#]=======================================================================]
# SDL2 Library required
find_package(SDL2 QUIET)
if(NOT SDL2_FOUND)
set(SDL2_IMAGE_SDL2_NOT_FOUND "Could NOT find SDL2 (SDL2 is required by SDL2_image).")
if(SDL2_image_FIND_REQUIRED)
message(FATAL_ERROR ${SDL2_IMAGE_SDL2_NOT_FOUND})
else()
if(NOT SDL2_image_FIND_QUIETLY)
message(STATUS ${SDL2_IMAGE_SDL2_NOT_FOUND})
endif()
return()
endif()
unset(SDL2_IMAGE_SDL2_NOT_FOUND)
endif()
# Define options for searching SDL2_image Library in a custom path
set(SDL2_IMAGE_PATH "" CACHE STRING "Custom SDL2_image Library path")
set(_SDL2_IMAGE_NO_DEFAULT_PATH OFF)
if(SDL2_IMAGE_PATH)
set(_SDL2_IMAGE_NO_DEFAULT_PATH ON)
endif()
set(SDL2_IMAGE_NO_DEFAULT_PATH ${_SDL2_IMAGE_NO_DEFAULT_PATH}
CACHE BOOL "Disable search SDL2_image Library in default path")
unset(_SDL2_IMAGE_NO_DEFAULT_PATH)
set(SDL2_IMAGE_NO_DEFAULT_PATH_CMD)
if(SDL2_IMAGE_NO_DEFAULT_PATH)
set(SDL2_IMAGE_NO_DEFAULT_PATH_CMD NO_DEFAULT_PATH)
endif()
# Search for the SDL2_image include directory
find_path(SDL2_IMAGE_INCLUDE_DIR SDL_image.h
HINTS
ENV SDL2IMAGEDIR
ENV SDL2DIR
${SDL2_IMAGE_NO_DEFAULT_PATH_CMD}
PATH_SUFFIXES SDL2
# path suffixes to search inside ENV{SDL2DIR}
# and ENV{SDL2IMAGEDIR}
include/SDL2 include
PATHS ${SDL2_IMAGE_PATH}
DOC "Where the SDL2_image headers can be found"
)
if(CMAKE_SIZEOF_VOID_P EQUAL 8)
set(VC_LIB_PATH_SUFFIX lib/x64)
else()
set(VC_LIB_PATH_SUFFIX lib/x86)
endif()
# Search for the SDL2_image library
find_library(SDL2_IMAGE_LIBRARY
NAMES SDL2_image
HINTS
ENV SDL2IMAGEDIR
ENV SDL2DIR
${SDL2_IMAGE_NO_DEFAULT_PATH_CMD}
PATH_SUFFIXES lib ${VC_LIB_PATH_SUFFIX}
PATHS ${SDL2_IMAGE_PATH}
DOC "Where the SDL2_image Library can be found"
)
# Read SDL2_image version
if(SDL2_IMAGE_INCLUDE_DIR AND EXISTS "${SDL2_IMAGE_INCLUDE_DIR}/SDL_image.h")
file(STRINGS "${SDL2_IMAGE_INCLUDE_DIR}/SDL_image.h" SDL2_IMAGE_VERSION_MAJOR_LINE REGEX "^#define[ \t]+SDL_IMAGE_MAJOR_VERSION[ \t]+[0-9]+$")
file(STRINGS "${SDL2_IMAGE_INCLUDE_DIR}/SDL_image.h" SDL2_IMAGE_VERSION_MINOR_LINE REGEX "^#define[ \t]+SDL_IMAGE_MINOR_VERSION[ \t]+[0-9]+$")
file(STRINGS "${SDL2_IMAGE_INCLUDE_DIR}/SDL_image.h" SDL2_IMAGE_VERSION_PATCH_LINE REGEX "^#define[ \t]+SDL_IMAGE_PATCHLEVEL[ \t]+[0-9]+$")
string(REGEX REPLACE "^#define[ \t]+SDL_IMAGE_MAJOR_VERSION[ \t]+([0-9]+)$" "\\1" SDL2_IMAGE_VERSION_MAJOR "${SDL2_IMAGE_VERSION_MAJOR_LINE}")
string(REGEX REPLACE "^#define[ \t]+SDL_IMAGE_MINOR_VERSION[ \t]+([0-9]+)$" "\\1" SDL2_IMAGE_VERSION_MINOR "${SDL2_IMAGE_VERSION_MINOR_LINE}")
string(REGEX REPLACE "^#define[ \t]+SDL_IMAGE_PATCHLEVEL[ \t]+([0-9]+)$" "\\1" SDL2_IMAGE_VERSION_PATCH "${SDL2_IMAGE_VERSION_PATCH_LINE}")
set(SDL2_IMAGE_VERSION_STRING ${SDL2_IMAGE_VERSION_MAJOR}.${SDL2_IMAGE_VERSION_MINOR}.${SDL2_IMAGE_VERSION_PATCH})
unset(SDL2_IMAGE_VERSION_MAJOR_LINE)
unset(SDL2_IMAGE_VERSION_MINOR_LINE)
unset(SDL2_IMAGE_VERSION_PATCH_LINE)
unset(SDL2_IMAGE_VERSION_MAJOR)
unset(SDL2_IMAGE_VERSION_MINOR)
unset(SDL2_IMAGE_VERSION_PATCH)
endif()
set(SDL2_IMAGE_LIBRARIES ${SDL2_IMAGE_LIBRARY})
set(SDL2_IMAGE_INCLUDE_DIRS ${SDL2_IMAGE_INCLUDE_DIR})
include(FindPackageHandleStandardArgs)
FIND_PACKAGE_HANDLE_STANDARD_ARGS(SDL2_image
REQUIRED_VARS SDL2_IMAGE_LIBRARIES SDL2_IMAGE_INCLUDE_DIRS
VERSION_VAR SDL2_IMAGE_VERSION_STRING)
mark_as_advanced(SDL2_IMAGE_PATH
SDL2_IMAGE_NO_DEFAULT_PATH
SDL2_IMAGE_LIBRARY
SDL2_IMAGE_INCLUDE_DIR)
if(SDL2_IMAGE_FOUND)
# SDL2::Image target
if(SDL2_IMAGE_LIBRARY AND NOT TARGET SDL2::Image)
add_library(SDL2::Image UNKNOWN IMPORTED)
set_target_properties(SDL2::Image PROPERTIES
IMPORTED_LOCATION "${SDL2_IMAGE_LIBRARY}"
INTERFACE_INCLUDE_DIRECTORIES "${SDL2_IMAGE_INCLUDE_DIR}"
INTERFACE_LINK_LIBRARIES SDL2::Core)
endif()
endif()

View File

@ -0,0 +1,220 @@
# Distributed under the OSI-approved BSD 3-Clause License. See accompanying
# file Copyright.txt or https://cmake.org/licensing for details.
# Copyright 2019 Amine Ben Hassouna <amine.benhassouna@gmail.com>
# Copyright 2000-2019 Kitware, Inc. and Contributors
# All rights reserved.
# Redistribution and use in source and binary forms, with or without
# modification, are permitted provided that the following conditions
# are met:
# * Redistributions of source code must retain the above copyright
# notice, this list of conditions and the following disclaimer.
# * Redistributions in binary form must reproduce the above copyright
# notice, this list of conditions and the following disclaimer in the
# documentation and/or other materials provided with the distribution.
# * Neither the name of Kitware, Inc. nor the names of Contributors
# may be used to endorse or promote products derived from this
# software without specific prior written permission.
# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
# "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
# LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
# A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
# HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
# SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
# LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
# DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
# THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
# (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
# OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
#[=======================================================================[.rst:
FindSDL2_mixer
--------------
Locate SDL2_mixer library
This module defines the following 'IMPORTED' target:
::
SDL2::Mixer
The SDL2_mixer library, if found.
Have SDL2::Core as a link dependency.
This module will set the following variables in your project:
::
SDL2_MIXER_LIBRARIES, the name of the library to link against
SDL2_MIXER_INCLUDE_DIRS, where to find the headers
SDL2_MIXER_FOUND, if false, do not try to link against
SDL2_MIXER_VERSION_STRING - human-readable string containing the
version of SDL2_mixer
This module responds to the following cache variables:
::
SDL2_MIXER_PATH
Set a custom SDL2_mixer Library path (default: empty)
SDL2_MIXER_NO_DEFAULT_PATH
Disable search SDL2_mixer Library in default path.
If SDL2_MIXER_PATH (default: ON)
Else (default: OFF)
SDL2_MIXER_INCLUDE_DIR
SDL2_mixer headers path.
SDL2_MIXER_LIBRARY
SDL2_mixer Library (.dll, .so, .a, etc) path.
Additional Note: If you see an empty SDL2_MIXER_LIBRARY in your project
configuration, it means CMake did not find your SDL2_mixer library
(SDL2_mixer.dll, libsdl2_mixer.so, etc). Set SDL2_MIXER_LIBRARY to point
to your SDL2_mixer library, and configure again. This value is used to
generate the final SDL2_MIXER_LIBRARIES variable and the SDL2::Mixer target,
but when this value is unset, SDL2_MIXER_LIBRARIES and SDL2::Mixer does not
get created.
$SDL2MIXERDIR is an environment variable that would correspond to the
./configure --prefix=$SDL2MIXERDIR used in building SDL2_mixer.
$SDL2DIR is an environment variable that would correspond to the
./configure --prefix=$SDL2DIR used in building SDL2.
Created by Amine Ben Hassouna:
Adapt FindSDL_mixer.cmake to SDL2_mixer (FindSDL2_mixer.cmake).
Add cache variables for more flexibility:
SDL2_MIXER_PATH, SDL2_MIXER_NO_DEFAULT_PATH (for details, see doc above).
Add SDL2 as a required dependency.
Modernize the FindSDL2_mixer.cmake module by creating a specific target:
SDL2::Mixer (for details, see doc above).
Original FindSDL_mixer.cmake module:
Created by Eric Wing. This was influenced by the FindSDL.cmake
module, but with modifications to recognize OS X frameworks and
additional Unix paths (FreeBSD, etc).
#]=======================================================================]
# SDL2 Library required
find_package(SDL2 QUIET)
if(NOT SDL2_FOUND)
set(SDL2_MIXER_SDL2_NOT_FOUND "Could NOT find SDL2 (SDL2 is required by SDL2_mixer).")
if(SDL2_mixer_FIND_REQUIRED)
message(FATAL_ERROR ${SDL2_MIXER_SDL2_NOT_FOUND})
else()
if(NOT SDL2_mixer_FIND_QUIETLY)
message(STATUS ${SDL2_MIXER_SDL2_NOT_FOUND})
endif()
return()
endif()
unset(SDL2_MIXER_SDL2_NOT_FOUND)
endif()
# Define options for searching SDL2_mixer Library in a custom path
set(SDL2_MIXER_PATH "" CACHE STRING "Custom SDL2_mixer Library path")
set(_SDL2_MIXER_NO_DEFAULT_PATH OFF)
if(SDL2_MIXER_PATH)
set(_SDL2_MIXER_NO_DEFAULT_PATH ON)
endif()
set(SDL2_MIXER_NO_DEFAULT_PATH ${_SDL2_MIXER_NO_DEFAULT_PATH}
CACHE BOOL "Disable search SDL2_mixer Library in default path")
unset(_SDL2_MIXER_NO_DEFAULT_PATH)
set(SDL2_MIXER_NO_DEFAULT_PATH_CMD)
if(SDL2_MIXER_NO_DEFAULT_PATH)
set(SDL2_MIXER_NO_DEFAULT_PATH_CMD NO_DEFAULT_PATH)
endif()
# Search for the SDL2_mixer include directory
find_path(SDL2_MIXER_INCLUDE_DIR SDL_mixer.h
HINTS
ENV SDL2MIXERDIR
ENV SDL2DIR
${SDL2_MIXER_NO_DEFAULT_PATH_CMD}
PATH_SUFFIXES SDL2
# path suffixes to search inside ENV{SDL2DIR}
# and ENV{SDL2MIXERDIR}
include/SDL2 include
PATHS ${SDL2_MIXER_PATH}
DOC "Where the SDL2_mixer headers can be found"
)
if(CMAKE_SIZEOF_VOID_P EQUAL 8)
set(VC_LIB_PATH_SUFFIX lib/x64)
else()
set(VC_LIB_PATH_SUFFIX lib/x86)
endif()
# Search for the SDL2_mixer library
find_library(SDL2_MIXER_LIBRARY
NAMES SDL2_mixer
HINTS
ENV SDL2MIXERDIR
ENV SDL2DIR
${SDL2_MIXER_NO_DEFAULT_PATH_CMD}
PATH_SUFFIXES lib ${VC_LIB_PATH_SUFFIX}
PATHS ${SDL2_MIXER_PATH}
DOC "Where the SDL2_mixer Library can be found"
)
# Read SDL2_mixer version
if(SDL2_MIXER_INCLUDE_DIR AND EXISTS "${SDL2_MIXER_INCLUDE_DIR}/SDL_mixer.h")
file(STRINGS "${SDL2_MIXER_INCLUDE_DIR}/SDL_mixer.h" SDL2_MIXER_VERSION_MAJOR_LINE REGEX "^#define[ \t]+SDL_MIXER_MAJOR_VERSION[ \t]+[0-9]+$")
file(STRINGS "${SDL2_MIXER_INCLUDE_DIR}/SDL_mixer.h" SDL2_MIXER_VERSION_MINOR_LINE REGEX "^#define[ \t]+SDL_MIXER_MINOR_VERSION[ \t]+[0-9]+$")
file(STRINGS "${SDL2_MIXER_INCLUDE_DIR}/SDL_mixer.h" SDL2_MIXER_VERSION_PATCH_LINE REGEX "^#define[ \t]+SDL_MIXER_PATCHLEVEL[ \t]+[0-9]+$")
string(REGEX REPLACE "^#define[ \t]+SDL_MIXER_MAJOR_VERSION[ \t]+([0-9]+)$" "\\1" SDL2_MIXER_VERSION_MAJOR "${SDL2_MIXER_VERSION_MAJOR_LINE}")
string(REGEX REPLACE "^#define[ \t]+SDL_MIXER_MINOR_VERSION[ \t]+([0-9]+)$" "\\1" SDL2_MIXER_VERSION_MINOR "${SDL2_MIXER_VERSION_MINOR_LINE}")
string(REGEX REPLACE "^#define[ \t]+SDL_MIXER_PATCHLEVEL[ \t]+([0-9]+)$" "\\1" SDL2_MIXER_VERSION_PATCH "${SDL2_MIXER_VERSION_PATCH_LINE}")
set(SDL2_MIXER_VERSION_STRING ${SDL2_MIXER_VERSION_MAJOR}.${SDL2_MIXER_VERSION_MINOR}.${SDL2_MIXER_VERSION_PATCH})
unset(SDL2_MIXER_VERSION_MAJOR_LINE)
unset(SDL2_MIXER_VERSION_MINOR_LINE)
unset(SDL2_MIXER_VERSION_PATCH_LINE)
unset(SDL2_MIXER_VERSION_MAJOR)
unset(SDL2_MIXER_VERSION_MINOR)
unset(SDL2_MIXER_VERSION_PATCH)
endif()
set(SDL2_MIXER_LIBRARIES ${SDL2_MIXER_LIBRARY})
set(SDL2_MIXER_INCLUDE_DIRS ${SDL2_MIXER_INCLUDE_DIR})
include(FindPackageHandleStandardArgs)
FIND_PACKAGE_HANDLE_STANDARD_ARGS(SDL2_mixer
REQUIRED_VARS SDL2_MIXER_LIBRARIES SDL2_MIXER_INCLUDE_DIRS
VERSION_VAR SDL2_MIXER_VERSION_STRING)
mark_as_advanced(SDL2_MIXER_PATH
SDL2_MIXER_NO_DEFAULT_PATH
SDL2_MIXER_LIBRARY
SDL2_MIXER_INCLUDE_DIR)
if(SDL2_MIXER_FOUND)
# SDL2::Mixer target
if(SDL2_MIXER_LIBRARY AND NOT TARGET SDL2::Mixer)
add_library(SDL2::Mixer UNKNOWN IMPORTED)
set_target_properties(SDL2::Mixer PROPERTIES
IMPORTED_LOCATION "${SDL2_MIXER_LIBRARY}"
INTERFACE_INCLUDE_DIRECTORIES "${SDL2_MIXER_INCLUDE_DIR}"
INTERFACE_LINK_LIBRARIES SDL2::Core)
endif()
endif()

View File

@ -0,0 +1,222 @@
# Distributed under the OSI-approved BSD 3-Clause License. See accompanying
# file Copyright.txt or https://cmake.org/licensing for details.
# Copyright 2019 Amine Ben Hassouna <amine.benhassouna@gmail.com>
# Copyright 2000-2019 Kitware, Inc. and Contributors
# All rights reserved.
# Redistribution and use in source and binary forms, with or without
# modification, are permitted provided that the following conditions
# are met:
# * Redistributions of source code must retain the above copyright
# notice, this list of conditions and the following disclaimer.
# * Redistributions in binary form must reproduce the above copyright
# notice, this list of conditions and the following disclaimer in the
# documentation and/or other materials provided with the distribution.
# * Neither the name of Kitware, Inc. nor the names of Contributors
# may be used to endorse or promote products derived from this
# software without specific prior written permission.
# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
# "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
# LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
# A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
# HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
# SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
# LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
# DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
# THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
# (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
# OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
#[=======================================================================[.rst:
FindSDL2_net
------------
Locate SDL2_net library
This module defines the following 'IMPORTED' target:
::
SDL2::Net
The SDL2_net library, if found.
Have SDL2::Core as a link dependency.
This module will set the following variables in your project:
::
SDL2_NET_LIBRARIES, the name of the library to link against
SDL2_NET_INCLUDE_DIRS, where to find the headers
SDL2_NET_FOUND, if false, do not try to link against
SDL2_NET_VERSION_STRING - human-readable string containing the
version of SDL2_net
This module responds to the following cache variables:
::
SDL2_NET_PATH
Set a custom SDL2_net Library path (default: empty)
SDL2_NET_NO_DEFAULT_PATH
Disable search SDL2_net Library in default path.
If SDL2_NET_PATH (default: ON)
Else (default: OFF)
SDL2_NET_INCLUDE_DIR
SDL2_net headers path.
SDL2_NET_LIBRARY
SDL2_net Library (.dll, .so, .a, etc) path.
Additional Note: If you see an empty SDL2_NET_LIBRARY in your project
configuration, it means CMake did not find your SDL2_net library
(SDL2_net.dll, libsdl2_net.so, etc). Set SDL2_NET_LIBRARY to point
to your SDL2_net library, and configure again. This value is used to
generate the final SDL2_NET_LIBRARIES variable and the SDL2::Net target,
but when this value is unset, SDL2_NET_LIBRARIES and SDL2::Net does not
get created.
$SDL2NETDIR is an environment variable that would correspond to the
./configure --prefix=$SDL2NETDIR used in building SDL2_net.
$SDL2DIR is an environment variable that would correspond to the
./configure --prefix=$SDL2DIR used in building SDL2.
Created by Amine Ben Hassouna:
Adapt FindSDL_net.cmake to SDL2_net (FindSDL2_net.cmake).
Add cache variables for more flexibility:
SDL2_NET_PATH, SDL2_NET_NO_DEFAULT_PATH (for details, see doc above).
Add SDL2 as a required dependency.
Modernize the FindSDL2_net.cmake module by creating a specific target:
SDL2::Net (for details, see doc above).
Original FindSDL_net.cmake module:
Created by Eric Wing. This was influenced by the FindSDL.cmake
module, but with modifications to recognize OS X frameworks and
additional Unix paths (FreeBSD, etc).
#]=======================================================================]
# SDL2 Library required
find_package(SDL2 QUIET)
if(NOT SDL2_FOUND)
set(SDL2_NET_SDL2_NOT_FOUND "Could NOT find SDL2 (SDL2 is required by SDL2_net).")
if(SDL2_net_FIND_REQUIRED)
message(FATAL_ERROR ${SDL2_NET_SDL2_NOT_FOUND})
else()
if(NOT SDL2_net_FIND_QUIETLY)
message(STATUS ${SDL2_NET_SDL2_NOT_FOUND})
endif()
return()
endif()
unset(SDL2_NET_SDL2_NOT_FOUND)
endif()
# Define options for searching SDL2_net Library in a custom path
set(SDL2_NET_PATH "" CACHE STRING "Custom SDL2_net Library path")
set(_SDL2_NET_NO_DEFAULT_PATH OFF)
if(SDL2_NET_PATH)
set(_SDL2_NET_NO_DEFAULT_PATH ON)
endif()
set(SDL2_NET_NO_DEFAULT_PATH ${_SDL2_NET_NO_DEFAULT_PATH}
CACHE BOOL "Disable search SDL2_net Library in default path")
unset(_SDL2_NET_NO_DEFAULT_PATH)
set(SDL2_NET_NO_DEFAULT_PATH_CMD)
if(SDL2_NET_NO_DEFAULT_PATH)
set(SDL2_NET_NO_DEFAULT_PATH_CMD NO_DEFAULT_PATH)
endif()
# Search for the SDL2_net include directory
find_path(SDL2_NET_INCLUDE_DIR SDL_net.h
HINTS
ENV SDL2NETDIR
ENV SDL2DIR
${SDL2_NET_NO_DEFAULT_PATH_CMD}
PATH_SUFFIXES SDL2
# path suffixes to search inside ENV{SDL2DIR}
# and ENV{SDL2NETDIR}
include/SDL2 include
PATHS ${SDL2_NET_PATH}
DOC "Where the SDL2_net headers can be found"
)
if(CMAKE_SIZEOF_VOID_P EQUAL 8)
set(VC_LIB_PATH_SUFFIX lib/x64)
else()
set(VC_LIB_PATH_SUFFIX lib/x86)
endif()
# Search for the SDL2_net library
find_library(SDL2_NET_LIBRARY
NAMES SDL2_net
HINTS
ENV SDL2NETDIR
ENV SDL2DIR
${SDL2_NET_NO_DEFAULT_PATH_CMD}
PATH_SUFFIXES lib ${VC_LIB_PATH_SUFFIX}
PATHS ${SDL2_NET_PATH}
DOC "Where the SDL2_net Library can be found"
)
# Read SDL2_net version
if(SDL2_NET_INCLUDE_DIR AND EXISTS "${SDL2_NET_INCLUDE_DIR}/SDL_net.h")
file(STRINGS "${SDL2_NET_INCLUDE_DIR}/SDL_net.h" SDL2_NET_VERSION_MAJOR_LINE REGEX "^#define[ \t]+SDL_NET_MAJOR_VERSION[ \t]+[0-9]+$")
file(STRINGS "${SDL2_NET_INCLUDE_DIR}/SDL_net.h" SDL2_NET_VERSION_MINOR_LINE REGEX "^#define[ \t]+SDL_NET_MINOR_VERSION[ \t]+[0-9]+$")
file(STRINGS "${SDL2_NET_INCLUDE_DIR}/SDL_net.h" SDL2_NET_VERSION_PATCH_LINE REGEX "^#define[ \t]+SDL_NET_PATCHLEVEL[ \t]+[0-9]+$")
string(REGEX REPLACE "^#define[ \t]+SDL_NET_MAJOR_VERSION[ \t]+([0-9]+)$" "\\1" SDL2_NET_VERSION_MAJOR "${SDL2_NET_VERSION_MAJOR_LINE}")
string(REGEX REPLACE "^#define[ \t]+SDL_NET_MINOR_VERSION[ \t]+([0-9]+)$" "\\1" SDL2_NET_VERSION_MINOR "${SDL2_NET_VERSION_MINOR_LINE}")
string(REGEX REPLACE "^#define[ \t]+SDL_NET_PATCHLEVEL[ \t]+([0-9]+)$" "\\1" SDL2_NET_VERSION_PATCH "${SDL2_NET_VERSION_PATCH_LINE}")
set(SDL2_NET_VERSION_STRING ${SDL2_NET_VERSION_MAJOR}.${SDL2_NET_VERSION_MINOR}.${SDL2_NET_VERSION_PATCH})
unset(SDL2_NET_VERSION_MAJOR_LINE)
unset(SDL2_NET_VERSION_MINOR_LINE)
unset(SDL2_NET_VERSION_PATCH_LINE)
unset(SDL2_NET_VERSION_MAJOR)
unset(SDL2_NET_VERSION_MINOR)
unset(SDL2_NET_VERSION_PATCH)
endif()
set(SDL2_NET_LIBRARIES ${SDL2_NET_LIBRARY})
set(SDL2_NET_INCLUDE_DIRS ${SDL2_NET_INCLUDE_DIR})
include(FindPackageHandleStandardArgs)
FIND_PACKAGE_HANDLE_STANDARD_ARGS(SDL2_net
REQUIRED_VARS SDL2_NET_LIBRARIES SDL2_NET_INCLUDE_DIRS
VERSION_VAR SDL2_NET_VERSION_STRING)
mark_as_advanced(SDL2_NET_PATH
SDL2_NET_NO_DEFAULT_PATH
SDL2_NET_LIBRARY
SDL2_NET_INCLUDE_DIR)
if(SDL2_NET_FOUND)
# SDL2::Net target
if(SDL2_NET_LIBRARY AND NOT TARGET SDL2::Net)
add_library(SDL2::Net UNKNOWN IMPORTED)
set_target_properties(SDL2::Net PROPERTIES
IMPORTED_LOCATION "${SDL2_NET_LIBRARY}"
INTERFACE_INCLUDE_DIRECTORIES "${SDL2_NET_INCLUDE_DIR}"
INTERFACE_LINK_LIBRARIES SDL2::Core)
endif()
endif()

View File

@ -0,0 +1,222 @@
# Distributed under the OSI-approved BSD 3-Clause License. See accompanying
# file Copyright.txt or https://cmake.org/licensing for details.
# Copyright 2019 Amine Ben Hassouna <amine.benhassouna@gmail.com>
# Copyright 2000-2019 Kitware, Inc. and Contributors
# All rights reserved.
# Redistribution and use in source and binary forms, with or without
# modification, are permitted provided that the following conditions
# are met:
# * Redistributions of source code must retain the above copyright
# notice, this list of conditions and the following disclaimer.
# * Redistributions in binary form must reproduce the above copyright
# notice, this list of conditions and the following disclaimer in the
# documentation and/or other materials provided with the distribution.
# * Neither the name of Kitware, Inc. nor the names of Contributors
# may be used to endorse or promote products derived from this
# software without specific prior written permission.
# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
# "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
# LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
# A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
# HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
# SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
# LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
# DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
# THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
# (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
# OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
#[=======================================================================[.rst:
FindSDL2_ttf
------------
Locate SDL2_ttf library
This module defines the following 'IMPORTED' target:
::
SDL2::TTF
The SDL2_ttf library, if found.
Have SDL2::Core as a link dependency.
This module will set the following variables in your project:
::
SDL2_TTF_LIBRARIES, the name of the library to link against
SDL2_TTF_INCLUDE_DIRS, where to find the headers
SDL2_TTF_FOUND, if false, do not try to link against
SDL2_TTF_VERSION_STRING - human-readable string containing the
version of SDL2_ttf
This module responds to the following cache variables:
::
SDL2_TTF_PATH
Set a custom SDL2_ttf Library path (default: empty)
SDL2_TTF_NO_DEFAULT_PATH
Disable search SDL2_ttf Library in default path.
If SDL2_TTF_PATH (default: ON)
Else (default: OFF)
SDL2_TTF_INCLUDE_DIR
SDL2_ttf headers path.
SDL2_TTF_LIBRARY
SDL2_ttf Library (.dll, .so, .a, etc) path.
Additional Note: If you see an empty SDL2_TTF_LIBRARY in your project
configuration, it means CMake did not find your SDL2_ttf library
(SDL2_ttf.dll, libsdl2_ttf.so, etc). Set SDL2_TTF_LIBRARY to point
to your SDL2_ttf library, and configure again. This value is used to
generate the final SDL2_TTF_LIBRARIES variable and the SDL2::TTF target,
but when this value is unset, SDL2_TTF_LIBRARIES and SDL2::TTF does not
get created.
$SDL2TTFDIR is an environment variable that would correspond to the
./configure --prefix=$SDL2TTFDIR used in building SDL2_ttf.
$SDL2DIR is an environment variable that would correspond to the
./configure --prefix=$SDL2DIR used in building SDL2.
Created by Amine Ben Hassouna:
Adapt FindSDL_ttf.cmake to SDL2_ttf (FindSDL2_ttf.cmake).
Add cache variables for more flexibility:
SDL2_TTF_PATH, SDL2_TTF_NO_DEFAULT_PATH (for details, see doc above).
Add SDL2 as a required dependency.
Modernize the FindSDL2_ttf.cmake module by creating a specific target:
SDL2::TTF (for details, see doc above).
Original FindSDL_ttf.cmake module:
Created by Eric Wing. This was influenced by the FindSDL.cmake
module, but with modifications to recognize OS X frameworks and
additional Unix paths (FreeBSD, etc).
#]=======================================================================]
# SDL2 Library required
find_package(SDL2 QUIET)
if(NOT SDL2_FOUND)
set(SDL2_TTF_SDL2_NOT_FOUND "Could NOT find SDL2 (SDL2 is required by SDL2_ttf).")
if(SDL2_ttf_FIND_REQUIRED)
message(FATAL_ERROR ${SDL2_TTF_SDL2_NOT_FOUND})
else()
if(NOT SDL2_ttf_FIND_QUIETLY)
message(STATUS ${SDL2_TTF_SDL2_NOT_FOUND})
endif()
return()
endif()
unset(SDL2_TTF_SDL2_NOT_FOUND)
endif()
# Define options for searching SDL2_ttf Library in a custom path
set(SDL2_TTF_PATH "" CACHE STRING "Custom SDL2_ttf Library path")
set(_SDL2_TTF_NO_DEFAULT_PATH OFF)
if(SDL2_TTF_PATH)
set(_SDL2_TTF_NO_DEFAULT_PATH ON)
endif()
set(SDL2_TTF_NO_DEFAULT_PATH ${_SDL2_TTF_NO_DEFAULT_PATH}
CACHE BOOL "Disable search SDL2_ttf Library in default path")
unset(_SDL2_TTF_NO_DEFAULT_PATH)
set(SDL2_TTF_NO_DEFAULT_PATH_CMD)
if(SDL2_TTF_NO_DEFAULT_PATH)
set(SDL2_TTF_NO_DEFAULT_PATH_CMD NO_DEFAULT_PATH)
endif()
# Search for the SDL2_ttf include directory
find_path(SDL2_TTF_INCLUDE_DIR SDL_ttf.h
HINTS
ENV SDL2TTFDIR
ENV SDL2DIR
${SDL2_TTF_NO_DEFAULT_PATH_CMD}
PATH_SUFFIXES SDL2
# path suffixes to search inside ENV{SDL2DIR}
# and ENV{SDL2TTFDIR}
include/SDL2 include
PATHS ${SDL2_TTF_PATH}
DOC "Where the SDL2_ttf headers can be found"
)
if(CMAKE_SIZEOF_VOID_P EQUAL 8)
set(VC_LIB_PATH_SUFFIX lib/x64)
else()
set(VC_LIB_PATH_SUFFIX lib/x86)
endif()
# Search for the SDL2_ttf library
find_library(SDL2_TTF_LIBRARY
NAMES SDL2_ttf
HINTS
ENV SDL2TTFDIR
ENV SDL2DIR
${SDL2_TTF_NO_DEFAULT_PATH_CMD}
PATH_SUFFIXES lib ${VC_LIB_PATH_SUFFIX}
PATHS ${SDL2_TTF_PATH}
DOC "Where the SDL2_ttf Library can be found"
)
# Read SDL2_ttf version
if(SDL2_TTF_INCLUDE_DIR AND EXISTS "${SDL2_TTF_INCLUDE_DIR}/SDL_ttf.h")
file(STRINGS "${SDL2_TTF_INCLUDE_DIR}/SDL_ttf.h" SDL2_TTF_VERSION_MAJOR_LINE REGEX "^#define[ \t]+SDL_TTF_MAJOR_VERSION[ \t]+[0-9]+$")
file(STRINGS "${SDL2_TTF_INCLUDE_DIR}/SDL_ttf.h" SDL2_TTF_VERSION_MINOR_LINE REGEX "^#define[ \t]+SDL_TTF_MINOR_VERSION[ \t]+[0-9]+$")
file(STRINGS "${SDL2_TTF_INCLUDE_DIR}/SDL_ttf.h" SDL2_TTF_VERSION_PATCH_LINE REGEX "^#define[ \t]+SDL_TTF_PATCHLEVEL[ \t]+[0-9]+$")
string(REGEX REPLACE "^#define[ \t]+SDL_TTF_MAJOR_VERSION[ \t]+([0-9]+)$" "\\1" SDL2_TTF_VERSION_MAJOR "${SDL2_TTF_VERSION_MAJOR_LINE}")
string(REGEX REPLACE "^#define[ \t]+SDL_TTF_MINOR_VERSION[ \t]+([0-9]+)$" "\\1" SDL2_TTF_VERSION_MINOR "${SDL2_TTF_VERSION_MINOR_LINE}")
string(REGEX REPLACE "^#define[ \t]+SDL_TTF_PATCHLEVEL[ \t]+([0-9]+)$" "\\1" SDL2_TTF_VERSION_PATCH "${SDL2_TTF_VERSION_PATCH_LINE}")
set(SDL2_TTF_VERSION_STRING ${SDL2_TTF_VERSION_MAJOR}.${SDL2_TTF_VERSION_MINOR}.${SDL2_TTF_VERSION_PATCH})
unset(SDL2_TTF_VERSION_MAJOR_LINE)
unset(SDL2_TTF_VERSION_MINOR_LINE)
unset(SDL2_TTF_VERSION_PATCH_LINE)
unset(SDL2_TTF_VERSION_MAJOR)
unset(SDL2_TTF_VERSION_MINOR)
unset(SDL2_TTF_VERSION_PATCH)
endif()
set(SDL2_TTF_LIBRARIES ${SDL2_TTF_LIBRARY})
set(SDL2_TTF_INCLUDE_DIRS ${SDL2_TTF_INCLUDE_DIR})
include(FindPackageHandleStandardArgs)
FIND_PACKAGE_HANDLE_STANDARD_ARGS(SDL2_ttf
REQUIRED_VARS SDL2_TTF_LIBRARIES SDL2_TTF_INCLUDE_DIRS
VERSION_VAR SDL2_TTF_VERSION_STRING)
mark_as_advanced(SDL2_TTF_PATH
SDL2_TTF_NO_DEFAULT_PATH
SDL2_TTF_LIBRARY
SDL2_TTF_INCLUDE_DIR)
if(SDL2_TTF_FOUND)
# SDL2::TTF target
if(SDL2_TTF_LIBRARY AND NOT TARGET SDL2::TTF)
add_library(SDL2::TTF UNKNOWN IMPORTED)
set_target_properties(SDL2::TTF PROPERTIES
IMPORTED_LOCATION "${SDL2_TTF_LIBRARY}"
INTERFACE_INCLUDE_DIRECTORIES "${SDL2_TTF_INCLUDE_DIR}"
INTERFACE_LINK_LIBRARIES SDL2::Core)
endif()
endif()

179
cmake/sdl2/README.md Normal file
View File

@ -0,0 +1,179 @@
# SDL2 CMake modules
This repository contains [CMake][] modules for finding and using the SDL2
library as well as other related libraries:
- [SDL2][]
- [SDL2_image][]
- [SDL2_ttf][]
- [SDL2_net][]
- [SDL2_mixer][]
- [SDL2_gfx][]
These modules are based on the SDL (1.2) modules, with the same names,
distributed with the CMake project. The SDL2_gfx module is also based
on the SDL_image module.
## Details and Improvements
The improvements made to these modules are as follows:
**FindSDL2.cmake**
- Adapt `FindSDL.cmake` to `SDL2` (`FindSDL2.cmake`).
- Add cache variables for more flexibility:<br>
`SDL2_PATH`, `SDL2_NO_DEFAULT_PATH`
- Mark `Threads` as a required dependency for non-OSX systems.
- Modernize the `FindSDL2.cmake` module by creating specific targets:
- `SDL2::Core` : Library project should link to `SDL2::Core`
- `SDL2::Main` : Application project should link to `SDL2::Main`
*For more details, please see the embedded documentation in `FindSDL2.cmake` file.*
**FindSDL2_&lt;COMPONENT&gt;.cmake**
- Adapt `FindSDL_<COMPONENT>.cmake` to `SDL2_<COMPONENT>` (`FindSDL2_<COMPONENT>.cmake`).
- Add cache variables for more flexibility:<br>
`SDL2_<COMPONENT>_PATH`, `SDL2_<COMPONENT>_NO_DEFAULT_PATH`
- Add `SDL2` as a required dependency.
- Modernize the `FindSDL2_<COMPONENT>.cmake` modules by creating specific targets:<br>
`SDL2::Image`, `SDL2::TTF`, `SDL2::Net`, `SDL2::Mixer` and `SDL2::GFX`.
*For more details, please see the embedded documentation in
`FindSDL2_<COMPONENT>.cmake` file.*
## Usage
In order to use the SDL2 CMake modules, we have to clone this repository in a
sud-directory `cmake/sdl2` in our project as follows:
```sh
cd <PROJECT_DIR>
git clone https://gitlab.com/aminosbh/sdl2-cmake-modules.git cmake/sdl2
rm -rf cmake/sdl2/.git
```
Or if we are using git for our project, we can add this repository as a
submodule as follows:
```sh
cd <PROJECT_DIR>
git submodule add https://gitlab.com/aminosbh/sdl2-cmake-modules.git cmake/sdl2
git commit -m "Add SDL2 CMake modules"
```
Then we should specify the modules path in the main CMakeLists.txt file like
the following:
```cmake
list(APPEND CMAKE_MODULE_PATH ${CMAKE_CURRENT_SOURCE_DIR}/cmake/sdl2)
```
Finally, we can use the SDL2 modules. There is two approaches that can be
adopted: A legacy approach and a modern approach. Both of them are supported.
### Modern CMake
We can link to the SDL2:: targets like the following example:<br>
*This example requires the SDL2, SDL2_image and the SDL2_gfx libraries*
```cmake
# Find SDL2, SDL2_image and SDL2_gfx libraries
find_package(SDL2 REQUIRED)
find_package(SDL2_image REQUIRED)
find_package(SDL2_gfx REQUIRED)
# Link SDL2::Main, SDL2::Image and SDL2::GFX to our project
target_link_libraries(${PROJECT_NAME} SDL2::Main SDL2::Image SDL2::GFX)
```
*Use the appropriate packages for you project.*<br>
*Please see above, for the whole list of packages*<br>
*For more details, please see the embedded documentation in modules files*
### Legacy CMake
We can also specify manually the include directories and libraries to link to:
```cmake
# Find and link SDL2
find_package(SDL2 REQUIRED)
target_include_directories(${PROJECT_NAME} PRIVATE ${SDL2_INCLUDE_DIRS})
target_link_libraries(${PROJECT_NAME} ${SDL2_LIBRARIES})
# Find and link SDL2_image
find_package(SDL2_image REQUIRED)
target_include_directories(${PROJECT_NAME} PRIVATE ${SDL2_IMAGE_INCLUDE_DIRS})
target_link_libraries(${PROJECT_NAME} ${SDL2_IMAGE_LIBRARIES})
# Find and link SDL2_gfx
find_package(SDL2_gfx REQUIRED)
target_include_directories(${PROJECT_NAME} PRIVATE ${SDL2_GFX_INCLUDE_DIRS})
target_link_libraries(${PROJECT_NAME} ${SDL2_GFX_LIBRARIES})
```
*For more details, please see the embedded documentation in modules files*
## Special customization variables
Each module have special customization cache variables that can be used to help
the modules find the appropriate libraries:
- `SDL2_PATH` and `SDL2_<COMPONENT>_PATH`:<br>
Can be specified to set the root search path for the `SDL2` and `SDL2_<COMPONENT>`
- `SDL2_NO_DEFAULT_PATH` and `SDL2_<COMPONENT>_NO_DEFAULT_PATH`:<br>
Disable search `SDL2/SDL2_<COMPONENT>` library in default path:<br>
If `SDL2[_<COMPONENT>]_PATH` is set, defaults to ON<br>
Else defaults to OFF
- `SDL2_INCLUDE_DIR` and `SDL2_<COMPONENT>_INCLUDE_DIR`:<br>
Set headers path. (Override)
- `SDL2_LIBRARY` and `SDL2_<COMPONENT>_LIBRARY`:<br>
Set the library (.dll, .so, .a, etc) path. (Override)
- `SDL2MAIN_LIBRAY`:<br>
Set the `SDL2main` library (.a) path. (Override)
These variables could be used in case of Windows projects, and when the
libraries are not localized in a standard pathes. They can be specified when
executing the `cmake` command or when using the [CMake GUI][] (They are marked
as advanced).
**cmake command example:**
```sh
mkdir build
cd build
cmake .. -DSDL2_PATH="/path/to/sdl2"
```
**CMakeLists.txt example:**
If we embed, for example, binaries of the SDL2_ttf in our project, we can
specify the cache variables values just before calling the `find_package`
command as follows:
```cmake
set(SDL2_TTF_PATH "/path/to/sdl2_ttf" CACHE BOOL "" FORCE)
find_package(SDL2_ttf REQUIRED)
```
## License
Maintainer: Amine B. Hassouna [@aminosbh](https://gitlab.com/aminosbh)
The SDL2 CMake modules are based on the SDL (1.2) modules available with the
CMake project which is distributed under the OSI-approved BSD 3-Clause License.
The SDL2 CMake modules are also distributed under the OSI-approved BSD
3-Clause License. See accompanying file [Copyright.txt](Copyright.txt).
[CMake]: https://cmake.org
[CMake GUI]: https://cmake.org/runningcmake
[SDL2]: https://www.libsdl.org
[SDL2_image]: https://www.libsdl.org/projects/SDL_image
[SDL2_ttf]: https://www.libsdl.org/projects/SDL_ttf
[SDL2_net]: https://www.libsdl.org/projects/SDL_net
[SDL2_mixer]: https://www.libsdl.org/projects/SDL_mixer
[SDL2_gfx]: http://www.ferzkopp.net/wordpress/2016/01/02/sdl_gfx-sdl2_gfx

166
main.cpp
View File

@ -4,6 +4,7 @@ and may not be redistributed without written permission.*/
//Using SDL and standard IO //Using SDL and standard IO
#include <SDL.h> #include <SDL.h>
#include <stdio.h> #include <stdio.h>
#include <SDL_mixer.h>
//Screen dimension constants //Screen dimension constants
const int SCREEN_WIDTH = 640; const int SCREEN_WIDTH = 640;
@ -24,19 +25,12 @@ SDL_Window* gWindow = NULL;
//The surface contained by the window //The surface contained by the window
SDL_Surface* gScreenSurface = NULL; SDL_Surface* gScreenSurface = NULL;
SDL_Renderer* gRenderer = NULL;
//The image we will load and show on the screen //The image we will load and show on the screen
SDL_Surface* gHelloWorld = NULL; SDL_Surface* gHelloWorld = NULL;
// char *data_path = NULL; Mix_Music* gMusic = NULL;
//
// void InitializeDataPath() {
// char *base_path = SDL_GetBasePath();
// if (base_path) {
// data_path = base_path;
// } else {
// data_path = SDL_strdup(".");
// }
// }
bool init() bool init()
{ {
@ -44,10 +38,10 @@ bool init()
bool success = true; bool success = true;
char* data_path = NULL; char* data_path = NULL;
data_path = SDL_GetBasePath(); data_path = SDL_GetBasePath();
printf("path: %s",data_path); // printf("path: %s",data_path);
//Initialize SDL //Initialize SDL
if( SDL_Init( SDL_INIT_VIDEO ) < 0 ) if( SDL_Init( SDL_INIT_VIDEO | SDL_INIT_AUDIO ) < 0 )
{ {
printf( "SDL could not initialize! SDL_Error: %s\n", SDL_GetError() ); printf( "SDL could not initialize! SDL_Error: %s\n", SDL_GetError() );
success = false; success = false;
@ -63,9 +57,23 @@ bool init()
} }
else else
{ {
//Create vsynced renderer for window
gRenderer = SDL_CreateRenderer( gWindow, -1, SDL_RENDERER_ACCELERATED | SDL_RENDERER_PRESENTVSYNC );
if( gRenderer == NULL )
{
printf( "Renderer could not be created! SDL Error: %s\n", SDL_GetError() );
success = false;
}
//Get window surface //Get window surface
gScreenSurface = SDL_GetWindowSurface( gWindow ); gScreenSurface = SDL_GetWindowSurface( gWindow );
} }
//Initialize SDL_mixer
if (Mix_OpenAudio(44100, MIX_DEFAULT_FORMAT, 2, 2048)<0)
{
SDL_LogError(SDL_LOG_CATEGORY_ERROR, "Couldn't initialize SDL audio mixer!, Error: %s", SDL_GetError());
}
} }
return success; return success;
@ -84,6 +92,13 @@ bool loadMedia()
success = false; success = false;
} }
gMusic = Mix_LoadMUS("../sillypuppy.ogg");
if(gMusic == NULL)
{
printf("Failed to load music! SDL_mixer Error: %s\n", Mix_GetError());
success = false;
}
return success; return success;
} }
@ -97,6 +112,9 @@ void close()
SDL_DestroyWindow( gWindow ); SDL_DestroyWindow( gWindow );
gWindow = NULL; gWindow = NULL;
Mix_FreeMusic(gMusic);
gMusic = NULL;
//Quit SDL subsystems //Quit SDL subsystems
SDL_Quit(); SDL_Quit();
} }
@ -108,6 +126,7 @@ int main( int argc, char* args[] )
{ {
printf( "Failed to initialize!\n" ); printf( "Failed to initialize!\n" );
} }
else else
{ {
//Load media //Load media
@ -117,16 +136,131 @@ int main( int argc, char* args[] )
} }
else else
{ {
//Main loop flag
bool quit = false;
//Event handler
SDL_Event e;
//While application is running
while( !quit )
{
//Handle events on queue
while( SDL_PollEvent( &e ) != 0 )
{
//User requests quit
if( e.type == SDL_QUIT )
{
quit = true;
}
//Handle key press
else if( e.type == SDL_KEYDOWN )
{
switch( e.key.keysym.sym )
{
// Play high sound effect
// case SDLK_1:
// Mix_PlayChannel( -1, gHigh, 0 );
// break;
//
// Play medium sound effect
// case SDLK_2:
// Mix_PlayChannel( -1, gMedium, 0 );
// break;
//
// Play low sound effect
// case SDLK_3:
// Mix_PlayChannel( -1, gLow, 0 );
// break;
//
// Play scratch sound effect
// case SDLK_4:
// Mix_PlayChannel( -1, gScratch, 0 );
// break;
case SDLK_9:
//If there is no music playing
if( Mix_PlayingMusic() == 0 )
{
//Play the music
Mix_PlayMusic( gMusic, -1 );
}
//If music is being played
else
{
//If the music is paused
if( Mix_PausedMusic() == 1 )
{
//Resume the music
Mix_ResumeMusic();
}
//If the music is playing
else
{
//Pause the music
Mix_PauseMusic();
}
}
break;
case SDLK_0:
//Stop the music
Mix_HaltMusic();
break;
}
}
}
//Clear screen
SDL_SetRenderDrawColor( gRenderer, 0xFF, 0xFF, 0xFF, 0xFF );
SDL_RenderClear( gRenderer );
// Apply the image // Apply the image
SDL_BlitSurface( gHelloWorld, NULL, gScreenSurface, NULL ); SDL_BlitSurface( gHelloWorld, NULL, gScreenSurface, NULL );
//
// Update the surface // Update the surface
SDL_UpdateWindowSurface( gWindow ); SDL_UpdateWindowSurface( gWindow );
//Render prompt
// gPromptTexture.render( 0, 0 );
//Update screen
SDL_RenderPresent( gRenderer );
}
}
}
// else
// {
// Load media
// if( !loadMedia() )
// {
// printf( "Failed to load media!\n" );
// }
// else
// {
// Apply the image
// SDL_BlitSurface( gHelloWorld, NULL, gScreenSurface, NULL );
//
// Update the surface
// SDL_UpdateWindowSurface( gWindow );
//
// Hack to get window to stay up // Hack to get window to stay up
SDL_Event e; bool quit = false; while( quit == false ){ while( SDL_PollEvent( &e ) ){ if( e.type == SDL_QUIT ) quit = true; } } // SDL_Event e; bool quit = false; while( quit == false ){ while( SDL_PollEvent( &e ) ){ if( e.type == SDL_QUIT ) quit = true; } }
} //
} // if (Mix_PlayingMusic() == 0)
// {
// printf("Playing Music...");
//
// gMusic = Mix_LoadMUS("../sillypuppy.ogg");
// Mix_PlayMusic(gMusic, -1);
// }
// if (Mix_PlayingMusic() != 0)
// {
// Mix_HaltMusic();
// }
// }
// }
//Free resources and close SDL //Free resources and close SDL
close(); close();

BIN
sillypuppy.ogg Normal file

Binary file not shown.