diff --git a/.kdev4/sdl2forthewin.kdev4 b/.kdev4/sdl2forthewin.kdev4 index 384cf42..19ff796 100644 --- a/.kdev4/sdl2forthewin.kdev4 +++ b/.kdev4/sdl2forthewin.kdev4 @@ -9,7 +9,7 @@ CMake Binary=C:/Program Files/CMake/bin/cmake.exe CMake Executable=C:/Program Files/CMake/bin/cmake.exe Environment Profile= Extra Arguments= -Install Directory= +Install Directory=C:/Program Files (x86)/sdl2forthewin Runtime=Host System [Project] diff --git a/CMakeLists.txt b/CMakeLists.txt index acd251e..51f6300 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -2,10 +2,11 @@ project(sdl2forthewin) cmake_minimum_required(VERSION 2.8) # 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_package(SDL2 REQUIRED) +find_package(SDL2_mixer REQUIRED) # Add global definitions add_definitions("-Wall") @@ -13,4 +14,4 @@ include_directories(${SDL2_INCLUDE_DIR}) add_executable(sdl2forthewin main.cpp) install(TARGETS sdl2forthewin DESTINATION bin) -target_link_libraries(sdl2forthewin ${SDL2_LIBRARIES}) +target_link_libraries(sdl2forthewin ${SDL2_LIBRARIES} SDL2::Mixer) diff --git a/CMakeModules/FindSDL2.cmake b/CMakeModules/FindSDL2.cmake deleted file mode 100644 index 77e77dd..0000000 --- a/CMakeModules/FindSDL2.cmake +++ /dev/null @@ -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 . 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) diff --git a/build/CMakeCache.txt b/build/CMakeCache.txt index 787c26a..94929b8 100644 --- a/build/CMakeCache.txt +++ b/build/CMakeCache.txt @@ -14,6 +14,8 @@ # EXTERNAL cache entries ######################## +:STRING= + //Path to a program. CMAKE_ADDR2LINE:FILEPATH=C:/ProgramData/chocolatey/bin/addr2line.exe @@ -242,8 +244,8 @@ MINGW32_LIBRARY:STRING=mingw32 //Path to a library. SDL2MAIN_LIBRARY:FILEPATH=C:/mingw_dev_lib/sdl2/lib/libSDL2main.a -//Path to a file. -SDL2_INCLUDE_DIR:PATH=C:/mingw_dev_lib/sdl2/include/SDL2 +//No help, variable specified on the command line. +SDL2_INCLUDE_DIR:PATH=c:/mingw_dev_lib/sdl2/include/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 @@ -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 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 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 ######################## +-ADVANCED:INTERNAL=1 //ADVANCED property for variable: CMAKE_ADDR2LINE CMAKE_ADDR2LINE-ADVANCED:INTERNAL=1 //ADVANCED property for variable: CMAKE_AR @@ -426,8 +456,36 @@ CMAKE_STRIP-ADVANCED:INTERNAL=1 //ADVANCED property for variable: CMAKE_VERBOSE_MAKEFILE CMAKE_VERBOSE_MAKEFILE-ADVANCED:INTERNAL=1 //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 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 +//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 diff --git a/build/CMakeFiles/Makefile.cmake b/build/CMakeFiles/Makefile.cmake index f96f390..94eeefc 100644 --- a/build/CMakeFiles/Makefile.cmake +++ b/build/CMakeFiles/Makefile.cmake @@ -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/WindowsPaths.cmake" "../CMakeLists.txt" - "../CMakeModules/FindSDL2.cmake" "CMakeFiles/3.23.2/CMakeCCompiler.cmake" "CMakeFiles/3.23.2/CMakeCXXCompiler.cmake" "CMakeFiles/3.23.2/CMakeRCCompiler.cmake" "CMakeFiles/3.23.2/CMakeSystem.cmake" + "../cmake/sdl2/FindSDL2.cmake" + "../cmake/sdl2/FindSDL2_mixer.cmake" ) # The corresponding makefile is: diff --git a/build/CMakeFiles/sdl2forthewin.dir/build.make b/build/CMakeFiles/sdl2forthewin.dir/build.make index e91cfec..f9cc811 100644 --- a/build/CMakeFiles/sdl2forthewin.dir/build.make +++ b/build/CMakeFiles/sdl2forthewin.dir/build.make @@ -94,6 +94,8 @@ sdl2forthewin.exe: CMakeFiles/sdl2forthewin.dir/main.cpp.obj 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/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/objects1.rsp sdl2forthewin.exe: CMakeFiles/sdl2forthewin.dir/link.txt diff --git a/build/CMakeFiles/sdl2forthewin.dir/compiler_depend.internal b/build/CMakeFiles/sdl2forthewin.dir/compiler_depend.internal index a35629a..7a288a9 100644 --- a/build/CMakeFiles/sdl2forthewin.dir/compiler_depend.internal +++ b/build/CMakeFiles/sdl2forthewin.dir/compiler_depend.internal @@ -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/swprintf.inl 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 diff --git a/build/CMakeFiles/sdl2forthewin.dir/compiler_depend.make b/build/CMakeFiles/sdl2forthewin.dir/compiler_depend.make index 5a8fc95..e415f6c 100644 --- a/build/CMakeFiles/sdl2forthewin.dir/compiler_depend.make +++ b/build/CMakeFiles/sdl2forthewin.dir/compiler_depend.make @@ -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/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/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: @@ -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/swprintf.inl: + +C:/mingw_dev_lib/sdl2_mixer/include/SDL2/SDL_mixer.h: diff --git a/build/CMakeFiles/sdl2forthewin.dir/includes_CXX.rsp b/build/CMakeFiles/sdl2forthewin.dir/includes_CXX.rsp index 7ecdb28..a30dd6d 100644 --- a/build/CMakeFiles/sdl2forthewin.dir/includes_CXX.rsp +++ b/build/CMakeFiles/sdl2forthewin.dir/includes_CXX.rsp @@ -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 diff --git a/build/CMakeFiles/sdl2forthewin.dir/linklibs.rsp b/build/CMakeFiles/sdl2forthewin.dir/linklibs.rsp index 1f5d243..4db33a6 100644 --- a/build/CMakeFiles/sdl2forthewin.dir/linklibs.rsp +++ b/build/CMakeFiles/sdl2forthewin.dir/linklibs.rsp @@ -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 diff --git a/build/CMakeFiles/sdl2forthewin.dir/main.cpp.obj b/build/CMakeFiles/sdl2forthewin.dir/main.cpp.obj index be2a89b..495f844 100644 Binary files a/build/CMakeFiles/sdl2forthewin.dir/main.cpp.obj and b/build/CMakeFiles/sdl2forthewin.dir/main.cpp.obj differ diff --git a/build/CMakeFiles/sdl2forthewin.dir/main.cpp.obj.d b/build/CMakeFiles/sdl2forthewin.dir/main.cpp.obj.d index 578b346..79101fe 100644 --- a/build/CMakeFiles/sdl2forthewin.dir/main.cpp.obj.d +++ b/build/CMakeFiles/sdl2forthewin.dir/main.cpp.obj.d @@ -1,12 +1,12 @@ CMakeFiles/sdl2forthewin.dir/main.cpp.obj: \ C:\Users\Admin\projects\sdl2forthewin\main.cpp \ - 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_stdinc.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/begin_code.h \ - C:/mingw_dev_lib/sdl2/include/SDL2/close_code.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_stdinc.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/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\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\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\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:/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_audio.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_mutex.h \ - C:/mingw_dev_lib/sdl2/include/SDL2/SDL_thread.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_audio.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_mutex.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\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\_mingw_off_t.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_cpuinfo.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_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\setjmp.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\ammintrin.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_video.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_surface.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_keycode.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_joystick.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_sensor.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_touch.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_hidapi.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_log.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_power.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_system.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_locale.h \ - C:/mingw_dev_lib/sdl2/include/SDL2/SDL_misc.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_pixels.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_blendmode.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_scancode.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_guid.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_quit.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_filesystem.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_hints.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_messagebox.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_render.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_timer.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_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\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\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 diff --git a/build/CMakeFiles/sdl2forthewin.dir/objects.a b/build/CMakeFiles/sdl2forthewin.dir/objects.a index d3e9b3f..7513f54 100644 Binary files a/build/CMakeFiles/sdl2forthewin.dir/objects.a and b/build/CMakeFiles/sdl2forthewin.dir/objects.a differ diff --git a/build/sdl2forthewin.exe b/build/sdl2forthewin.exe index ca082be..53d91c8 100644 Binary files a/build/sdl2forthewin.exe and b/build/sdl2forthewin.exe differ diff --git a/cmake/sdl2/Copyright.txt b/cmake/sdl2/Copyright.txt new file mode 100644 index 0000000..d17e35d --- /dev/null +++ b/cmake/sdl2/Copyright.txt @@ -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 +* Adriaan de Groot +* Aleksey Avdeev +* Alexander Neundorf +* Alexander Smorkalov +* Alexey Sokolov +* Alex Merry +* Alex Turbov +* Amine Ben Hassouna +* Andreas Pakulat +* Andreas Schneider +* André Rigland Brodtkorb +* Axel Huebl, Helmholtz-Zentrum Dresden - Rossendorf +* Benjamin Eikel +* Bjoern Ricks +* Brad Hards +* Christopher Harvey +* Christoph Grüninger +* Clement Creusot +* Daniel Blezek +* Daniel Pfeifer +* Enrico Scholz +* Eran Ifrah +* Esben Mose Hansen, Ange Optimization ApS +* Geoffrey Viola +* Google Inc +* Gregor Jasny +* Helio Chissini de Castro +* Ilya Lavrenov +* Insight Software Consortium +* Jan Woetzel +* Julien Schueller +* Kelly Thompson +* Laurent Montel +* Konstantin Podsvirov +* Mario Bensi +* Martin Gräßlin +* Mathieu Malaterre +* Matthaeus G. Chajdas +* Matthias Kretz +* Matthias Maennich +* Michael Hirsch, Ph.D. +* Michael Stürmer +* Miguel A. Figueroa-Villanueva +* Mike Jackson +* Mike McQuaid +* Nicolas Bock +* Nicolas Despres +* Nikita Krupen'ko +* NVIDIA Corporation +* OpenGamma Ltd. +* Patrick Stotko +* Per Øyvind Karlsen +* Peter Collingbourne +* Petr Gotthard +* Philip Lowman +* Philippe Proulx +* Raffi Enficiaud, Max Planck Society +* Raumfeld +* Roger Leigh +* Rolf Eike Beer +* Roman Donchenko +* Roman Kharitonov +* Ruslan Baratov +* Sebastian Holtermann +* Stephen Kelly +* Sylvain Joubert +* Thomas Sondergaard +* Tobias Hunger +* Todd Gamblin +* Tristan Carel +* University of Dundee +* Vadim Zhukov +* Will Dicharry + +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. diff --git a/cmake/sdl2/FindSDL2.cmake b/cmake/sdl2/FindSDL2.cmake new file mode 100644 index 0000000..2445d36 --- /dev/null +++ b/cmake/sdl2/FindSDL2.cmake @@ -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 +# 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 . 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() diff --git a/cmake/sdl2/FindSDL2_gfx.cmake b/cmake/sdl2/FindSDL2_gfx.cmake new file mode 100644 index 0000000..970a92d --- /dev/null +++ b/cmake/sdl2/FindSDL2_gfx.cmake @@ -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 +# 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() diff --git a/cmake/sdl2/FindSDL2_image.cmake b/cmake/sdl2/FindSDL2_image.cmake new file mode 100644 index 0000000..624e915 --- /dev/null +++ b/cmake/sdl2/FindSDL2_image.cmake @@ -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 +# 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() diff --git a/cmake/sdl2/FindSDL2_mixer.cmake b/cmake/sdl2/FindSDL2_mixer.cmake new file mode 100644 index 0000000..a71f26a --- /dev/null +++ b/cmake/sdl2/FindSDL2_mixer.cmake @@ -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 +# 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() diff --git a/cmake/sdl2/FindSDL2_net.cmake b/cmake/sdl2/FindSDL2_net.cmake new file mode 100644 index 0000000..74c765b --- /dev/null +++ b/cmake/sdl2/FindSDL2_net.cmake @@ -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 +# 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() diff --git a/cmake/sdl2/FindSDL2_ttf.cmake b/cmake/sdl2/FindSDL2_ttf.cmake new file mode 100644 index 0000000..2ab9a76 --- /dev/null +++ b/cmake/sdl2/FindSDL2_ttf.cmake @@ -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 +# 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() diff --git a/cmake/sdl2/README.md b/cmake/sdl2/README.md new file mode 100644 index 0000000..9c53490 --- /dev/null +++ b/cmake/sdl2/README.md @@ -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:
+ `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_<COMPONENT>.cmake** + +- Adapt `FindSDL_.cmake` to `SDL2_` (`FindSDL2_.cmake`). +- Add cache variables for more flexibility:
+ `SDL2__PATH`, `SDL2__NO_DEFAULT_PATH` +- Add `SDL2` as a required dependency. +- Modernize the `FindSDL2_.cmake` modules by creating specific targets:
+ `SDL2::Image`, `SDL2::TTF`, `SDL2::Net`, `SDL2::Mixer` and `SDL2::GFX`. + +*For more details, please see the embedded documentation in +`FindSDL2_.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 +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 +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:
+*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.*
+*Please see above, for the whole list of packages*
+*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__PATH`:
+ Can be specified to set the root search path for the `SDL2` and `SDL2_` +- `SDL2_NO_DEFAULT_PATH` and `SDL2__NO_DEFAULT_PATH`:
+ Disable search `SDL2/SDL2_` library in default path:
+ If `SDL2[_]_PATH` is set, defaults to ON
+ Else defaults to OFF +- `SDL2_INCLUDE_DIR` and `SDL2__INCLUDE_DIR`:
+ Set headers path. (Override) +- `SDL2_LIBRARY` and `SDL2__LIBRARY`:
+ Set the library (.dll, .so, .a, etc) path. (Override) +- `SDL2MAIN_LIBRAY`:
+ 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 diff --git a/main.cpp b/main.cpp index 8ede96b..da3076f 100644 --- a/main.cpp +++ b/main.cpp @@ -4,6 +4,7 @@ and may not be redistributed without written permission.*/ //Using SDL and standard IO #include #include +#include //Screen dimension constants const int SCREEN_WIDTH = 640; @@ -24,19 +25,12 @@ SDL_Window* gWindow = NULL; //The surface contained by the window SDL_Surface* gScreenSurface = NULL; +SDL_Renderer* gRenderer = NULL; + //The image we will load and show on the screen SDL_Surface* gHelloWorld = NULL; -// char *data_path = NULL; -// -// void InitializeDataPath() { -// char *base_path = SDL_GetBasePath(); -// if (base_path) { -// data_path = base_path; -// } else { -// data_path = SDL_strdup("."); -// } -// } +Mix_Music* gMusic = NULL; bool init() { @@ -44,10 +38,10 @@ bool init() bool success = true; char* data_path = NULL; data_path = SDL_GetBasePath(); - printf("path: %s",data_path); +// printf("path: %s",data_path); //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() ); success = false; @@ -63,11 +57,25 @@ bool init() } else { - //Get window surface - gScreenSurface = SDL_GetWindowSurface( gWindow ); + //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 + 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; } @@ -84,6 +92,13 @@ bool loadMedia() 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; } @@ -96,6 +111,9 @@ void close() //Destroy window SDL_DestroyWindow( gWindow ); gWindow = NULL; + + Mix_FreeMusic(gMusic); + gMusic = NULL; //Quit SDL subsystems SDL_Quit(); @@ -108,6 +126,7 @@ int main( int argc, char* args[] ) { printf( "Failed to initialize!\n" ); } + else { //Load media @@ -116,18 +135,133 @@ int main( int argc, char* args[] ) printf( "Failed to load media!\n" ); } else - { - //Apply the image - SDL_BlitSurface( gHelloWorld, NULL, gScreenSurface, NULL ); - - //Update the surface - SDL_UpdateWindowSurface( gWindow ); + { + //Main loop flag + bool quit = false; - //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; } } + //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 + SDL_BlitSurface( gHelloWorld, NULL, gScreenSurface, NULL ); +// +// Update the surface + 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 +// 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 close(); diff --git a/sillypuppy.ogg b/sillypuppy.ogg new file mode 100644 index 0000000..c2622a2 Binary files /dev/null and b/sillypuppy.ogg differ