diff --git a/cmake/CMakeLists.txt b/cmake/CMakeLists.txt index 828615929..5979b9dab 100644 --- a/cmake/CMakeLists.txt +++ b/cmake/CMakeLists.txt @@ -1,4 +1,4 @@ INCLUDE(../cmake/macros.cmake) SD_INSTALL_FILES(DATA cmake FILES splitargn.cmake robot.def.in.cmake FindENET.cmake FindPLIB.cmake FindSOLID.cmake - FindOGG.cmake FindVORBISFILE.cmake FindVORBIS.cmake FindSQLITE3.cmake) + FindOGG.cmake FindVORBISFILE.cmake FindVORBIS.cmake FindSQLITE3.cmake FindSDL2.cmake) diff --git a/cmake/FindSDL2.cmake b/cmake/FindSDL2.cmake new file mode 100644 index 000000000..bc72d6407 --- /dev/null +++ b/cmake/FindSDL2.cmake @@ -0,0 +1,321 @@ +# 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# +# +# 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). + +SET(SDL2_SEARCH_PATHS +~/Library/Frameworks +/Library/Frameworks +/usr/local +/usr +/sw # Fink +/opt/local # DarwinPorts +/opt/csw # Blastwave +/opt +) + +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 +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 +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) +# 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_LIBRARY_TEMP} CACHE STRING "Where the SDL2 Library can be found") +# Set the temp variable to INTERNAL so it is not seen in the CMake GUI +SET(SDL2_LIBRARY_TEMP "${SDL2_LIBRARY_TEMP}" CACHE INTERNAL "") +ENDIF(SDL2_LIBRARY_TEMP) + +INCLUDE(FindPackageHandleStandardArgs) + +FIND_PACKAGE_HANDLE_STANDARD_ARGS(SDL2 REQUIRED_VARS SDL2_LIBRARY SDL2_INCLUDE_DIR) +# 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# +# +# 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). + +SET(SDL2_SEARCH_PATHS +~/Library/Frameworks +/Library/Frameworks +/usr/local +/usr +/sw # Fink +/opt/local # DarwinPorts +/opt/csw # Blastwave +/opt +) + +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 +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 +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) +# 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_LIBRARY_TEMP} CACHE STRING "Where the SDL2 Library can be found") +# Set the temp variable to INTERNAL so it is not seen in the CMake GUI +SET(SDL2_LIBRARY_TEMP "${SDL2_LIBRARY_TEMP}" CACHE INTERNAL "") +ENDIF(SDL2_LIBRARY_TEMP) + +INCLUDE(FindPackageHandleStandardArgs) + +FIND_PACKAGE_HANDLE_STANDARD_ARGS(SDL2 REQUIRED_VARS SDL2_LIBRARY SDL2_INCLUDE_DIR) +# 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# +# +# 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). + +SET(SDL2_SEARCH_PATHS +~/Library/Frameworks +/Library/Frameworks +/usr/local +/usr +/sw # Fink +/opt/local # DarwinPorts +/opt/csw # Blastwave +/opt +) + +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 +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 +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) +# 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_LIBRARY_TEMP} CACHE STRING "Where the SDL2 Library can be found") +# Set the temp variable to INTERNAL so it is not seen in the CMake GUI +SET(SDL2_LIBRARY_TEMP "${SDL2_LIBRARY_TEMP}" CACHE INTERNAL "") +ENDIF(SDL2_LIBRARY_TEMP) + +INCLUDE(FindPackageHandleStandardArgs) + +FIND_PACKAGE_HANDLE_STANDARD_ARGS(SDL2 REQUIRED_VARS SDL2_LIBRARY SDL2_INCLUDE_DIR) diff --git a/cmake/checks.cmake b/cmake/checks.cmake index 221fc6da1..20e3d66fa 100644 --- a/cmake/checks.cmake +++ b/cmake/checks.cmake @@ -245,6 +245,20 @@ MACRO(CHECK_LIBRARIES) MESSAGE(STATUS "Looking for library SDL - NOT found") ENDIF(SDL_FOUND) + # SDL2 + IF(OPTION_SDL2) + IF(NOT SDL2_FOUND) + Find_Package(SDL2) + ENDIF() + + IF(SDL2_FOUND) + SET(HAVE_LIBSDL2 1) + MESSAGE(STATUS "Looking for library SDL2 - found") + ELSE(SDL2_FOUND) + MESSAGE(STATUS "Looking for library SDL2 - NOT found") + ENDIF(SDL2_FOUND) + ENDIF(OPTION_SDL2) + # OSG IF(OPTION_OSGGRAPH) diff --git a/cmake/customthirdparty.cmake b/cmake/customthirdparty.cmake index 033e7caac..eefe280c0 100644 --- a/cmake/customthirdparty.cmake +++ b/cmake/customthirdparty.cmake @@ -88,11 +88,17 @@ ENDMACRO(_FIND_3RDPARTY_DEPENDENCY DEP_NAME INCLUDE_FILE INCLUDE_SUBDIRS LIBRARY MACRO(_FIND_3RDPARTY_DEPENDENCIES ROOT_DIR) # SDL. - _FIND_3RDPARTY_DEPENDENCY(SDLMAIN sdl_main.h "SDL;SDL2" sdlmain "${ROOT_DIR}" "") - _FIND_3RDPARTY_DEPENDENCY(SDL sdl.h "SDL;SDL2" sdl "${ROOT_DIR}" "") - IF(SDL_FOUND) # Dirty hack to make FindPackage(SDL) work later. - SET(SDL_LIBRARY_TEMP ${SDL_LIBRARY} CACHE FILEPATH "") - ENDIF(SDL_FOUND) + IF(OPTION_SDL2) + _FIND_3RDPARTY_DEPENDENCY(SDL2MAIN sdl_main.h "SDL2" "sdl2main" "${ROOT_DIR}" "") + _FIND_3RDPARTY_DEPENDENCY(SDL2 sdl.h "SDL2" "sdl2" "${ROOT_DIR}" "") + + #IF(SDL_FOUND) # Dirty hack to make FindPackage(SDL) work later. + # SET(SDL_LIBRARY_TEMP ${SDL_LIBRARY} CACHE FILEPATH "") + #ENDIF(SDL_FOUND) + ELSE() + _FIND_3RDPARTY_DEPENDENCY(SDLMAIN sdl_main.h "SDL" "sdlmain" "${ROOT_DIR}" "") + _FIND_3RDPARTY_DEPENDENCY(SDL sdl.h "SDL" "sdl" "${ROOT_DIR}" "") + ENDIF() # PLib. _FIND_3RDPARTY_DEPENDENCY(PLIB plib/sg.h "" "sg;plibsg" ${ROOT_DIR} "") @@ -307,8 +313,13 @@ MACRO(SD_INSTALL_CUSTOM_3RDPARTY TARGET_NAME) LIST(APPEND _THIRDPARTY_DLL_PATHNAMES "${_DLL_PATHNAME}") - _FIND_3RDPARTY_DLL("${SDL_LIBRARY}" "SDL" ";lib" _DLL_PATHNAME) - LIST(APPEND _THIRDPARTY_DLL_PATHNAMES "${_DLL_PATHNAME}") + IF(OPTION_SDL2) + _FIND_3RDPARTY_DLL("${SDL2_LIBRARY}" "SDL2" ";lib" _DLL_PATHNAME) + LIST(APPEND _THIRDPARTY_DLL_PATHNAMES "${_DLL_PATHNAME}") + ELSE() + _FIND_3RDPARTY_DLL("${SDL_LIBRARY}" "SDL" ";lib" _DLL_PATHNAME) + LIST(APPEND _THIRDPARTY_DLL_PATHNAMES "${_DLL_PATHNAME}") + ENDIF() IF(OPTION_3RDPARTY_EXPAT) diff --git a/cmake/options.cmake b/cmake/options.cmake index dea07ff46..5eb4dc211 100644 --- a/cmake/options.cmake +++ b/cmake/options.cmake @@ -95,7 +95,9 @@ MACRO(ADD_SD_COMPILE_OPTIONS) SET(OPTION_UNLOAD_SSGGRAPH true CACHE BOOL "If false, never unload ssggraph module (useful on some Linuxes to avoid XOrg crashes)") ENDIF(UNIX) - SET(OPTION_OSGGRAPH false CACHE BOOL "Build OpenScenGraph-based WIP osggraph graphics module") + SET(OPTION_OSGGRAPH false CACHE BOOL "Build OpenScenGraph-based WIP osggraph graphics module") + + SET(OPTION_SDL2 false CACHE BOOL "Build with SDL2 instead lib SDL 1.2") SET(OPTION_AUTOVERSION true CACHE BOOL "Enable automatic computation of the version from SVN source tree") diff --git a/cmake/thirdpartydeps.cmake b/cmake/thirdpartydeps.cmake index a8b563eb2..577f13d59 100644 --- a/cmake/thirdpartydeps.cmake +++ b/cmake/thirdpartydeps.cmake @@ -154,6 +154,33 @@ MACRO(ADD_SDL_LIBRARY TARGET) ENDMACRO(ADD_SDL_LIBRARY TARGET) +MACRO(ADD_SDL2_INCLUDEDIR) + + FIND_PACKAGE(SDL2) + + IF(SDL2_FOUND) + INCLUDE_DIRECTORIES(${SDL2_INCLUDE_DIR}) + ELSE(SDL2_FOUND) + MESSAGE(FATAL_ERROR "Cannot find SDL2 header files") + ENDIF(SDL2_FOUND) + +ENDMACRO(ADD_SDL2_INCLUDEDIR) + +MACRO(ADD_SDL2_LIBRARY TARGET) + + FIND_PACKAGE(SDL2) + + IF(SDL2_FOUND) + IF(SDL2MAIN_LIBRARY) + TARGET_LINK_LIBRARIES(${TARGET} ${SDL2MAIN_LIBRARY}) + ENDIF(SDL2MAIN_LIBRARY) + TARGET_LINK_LIBRARIES(${TARGET} ${SDL2_LIBRARY}) + ELSE(SDL2_FOUND) + MESSAGE(FATAL_ERROR "Cannot find SDL2 library") + ENDIF(SDL2_FOUND) + +ENDMACRO(ADD_SDL2_LIBRARY TARGET) + MACRO(ADD_OPENGL_INCLUDEDIR) FIND_PACKAGE(OpenGL) diff --git a/src/drivers/networkhuman/CMakeLists.txt b/src/drivers/networkhuman/CMakeLists.txt index 67ef892cd..37a0c24fc 100644 --- a/src/drivers/networkhuman/CMakeLists.txt +++ b/src/drivers/networkhuman/CMakeLists.txt @@ -5,7 +5,11 @@ SET(ROBOT_INTERFACE WELCOME) SET(ROBOT_SOURCES ${ROBOT_NAME}.cpp) ADD_SDLIB_INCLUDEDIR(portability tgfclient networking) -ADD_SDL_INCLUDEDIR() +IF(OPTION_SDL2) + ADD_SDL2_INCLUDEDIR() +ELSE(OPTION_SDL2) + ADD_SDL_INCLUDEDIR() +ENDIF(OPTION_SDL2) ROBOT_MODULE(NAME ${ROBOT_NAME} VERSION ${VERSION} SOVERSION 0.0.0 INTERFACE ${ROBOT_INTERFACE} diff --git a/src/libs/robottools/CMakeLists.txt b/src/libs/robottools/CMakeLists.txt index 63ab2c314..6b164e0b6 100644 --- a/src/libs/robottools/CMakeLists.txt +++ b/src/libs/robottools/CMakeLists.txt @@ -4,7 +4,13 @@ INCLUDE(../../../cmake/macros.cmake) ADD_INTERFACE_INCLUDEDIR() ADD_SDLIB_INCLUDEDIR(portability tgf math tgfclient) -ADD_SDL_INCLUDEDIR() + +IF(OPTION_SDL2) + ADD_SDL2_INCLUDEDIR() +ELSE(OPTION_SDL2) + ADD_SDL_INCLUDEDIR() +ENDIF(OPTION_SDL2) + ADD_PLIB_INCLUDEDIR() SET(ROBOTTOOLS_SOURCES rtteammanager.cpp rttelem.cpp rttimeanalysis.cpp rttrack.cpp rtutil.cpp rthumandriver.cpp) diff --git a/src/libs/tgf/CMakeLists.txt b/src/libs/tgf/CMakeLists.txt index 9902b4fca..10000cba3 100644 --- a/src/libs/tgf/CMakeLists.txt +++ b/src/libs/tgf/CMakeLists.txt @@ -2,8 +2,11 @@ INCLUDE(../../../cmake/macros.cmake) #PROJECT(tgf) -ADD_SDL_INCLUDEDIR() - +IF(OPTION_SDL2) + ADD_SDL2_INCLUDEDIR() +ELSE(OPTION_SDL2) + ADD_SDL_INCLUDEDIR() +ENDIF(OPTION_SDL2) ADD_EXPAT_INCLUDEDIR() ADD_SDLIB_INCLUDEDIR(txml portability) @@ -45,7 +48,11 @@ ENDIF(CMAKE_SKIP_RPATH OR CMAKE_SKIP_BUILD_RPATH) ADD_SDLIB_LIBRARY(tgf portability txml) # txml ignored if OPTION_3RDPARTY_EXPAT ADD_DL_LIBRARY(tgf) -ADD_SDL_LIBRARY(tgf) +IF(OPTION_SDL2) + ADD_SDL2_LIBRARY(tgf) +ELSE(OPTION_SDL2) + ADD_SDL_LIBRARY(tgf) +ENDIF(OPTION_SDL2) ADD_EXPAT_LIBRARY(tgf) # Ignored if not OPTION_3RDPARTY_EXPAT IF(WIN32) diff --git a/src/libs/tgfclient/CMakeLists.txt b/src/libs/tgfclient/CMakeLists.txt index fa581b222..2f7700fd5 100644 --- a/src/libs/tgfclient/CMakeLists.txt +++ b/src/libs/tgfclient/CMakeLists.txt @@ -4,7 +4,11 @@ INCLUDE(../../../cmake/macros.cmake) ADD_INTERFACE_INCLUDEDIR() ADD_SDLIB_INCLUDEDIR(tgf math portability) -ADD_SDL_INCLUDEDIR() +IF(OPTION_SDL2) + ADD_SDL2_INCLUDEDIR() +ELSE(OPTION_SDL2) + ADD_SDL_INCLUDEDIR() +ENDIF(OPTION_SDL2) ADD_JPEG_INCLUDEDIR() ADD_PLIB_INCLUDEDIR() ADD_OPENAL_INCLUDEDIR() @@ -75,7 +79,12 @@ IF(OGG_FOUND) ENDIF(OGG_FOUND) ADD_PLIB_LIBRARY(tgfclient ul sg js) -ADD_SDL_LIBRARY(tgfclient) + +IF(OPTION_SDL2) + ADD_SDL2_LIBRARY(tgfclient) +ELSE(OPTION_SDL2) + ADD_SDL_LIBRARY(tgfclient) +ENDIF(OPTION_SDL2) IF(WIN32) #joystick library diff --git a/src/main/CMakeLists.txt b/src/main/CMakeLists.txt index 576c304ce..682b2cb60 100644 --- a/src/main/CMakeLists.txt +++ b/src/main/CMakeLists.txt @@ -12,7 +12,12 @@ ENDIF(MSVC) ADD_INTERFACE_INCLUDEDIR() ADD_SDLIB_INCLUDEDIR(tgf tgfclient tgfdata math portability) -ADD_SDL_INCLUDEDIR() +IF(OPTION_SDL2) + ADD_SDL2_INCLUDEDIR() +ELSE(OPTION_SDL2) + ADD_SDL_INCLUDEDIR() +ENDIF(OPTION_SDL2) + ADD_PLIB_INCLUDEDIR() # Disable developer warning diff --git a/src/modules/graphic/ssggraph/CMakeLists.txt b/src/modules/graphic/ssggraph/CMakeLists.txt index 79229f273..f8a74c0d8 100644 --- a/src/modules/graphic/ssggraph/CMakeLists.txt +++ b/src/modules/graphic/ssggraph/CMakeLists.txt @@ -38,7 +38,12 @@ ADD_INTERFACE_INCLUDEDIR() ADD_SDLIB_INCLUDEDIR(portability math tgf tgfclient robottools) ADD_PLIB_INCLUDEDIR() -ADD_SDL_INCLUDEDIR() + +IF(OPTION_SDL2) + ADD_SDL2_INCLUDEDIR() +ELSE(OPTION_SDL2) + ADD_SDL_INCLUDEDIR() +ENDIF(OPTION_SDL2) IF(COMMAND CMAKE_POLICY) CMAKE_POLICY(SET CMP0003 NEW) @@ -65,7 +70,13 @@ SD_ADD_LIBRARY(ssggraph MODULE ${SSGGRAPH_SOURCES} ${SSGGRAPH_HEADERS} ${SSGGRAP #SET_TARGET_PROPERTIES(ssggraph PROPERTIES VERSION ${VERSION} SOVERSION 0.0.0) ADD_PLIB_LIBRARY(ssggraph ul sg sl ssg ssgaux) -ADD_SDL_LIBRARY(ssggraph) + +IF(OPTION_SDL2) + ADD_SDL2_LIBRARY(ssggraph) +ELSE(OPTION_SDL2) + ADD_SDL_LIBRARY(ssggraph) +ENDIF(OPTION_SDL2) + ADD_OPENGL_LIBRARY(ssggraph) ADD_SDLIB_LIBRARY(ssggraph portability tgf tgfclient robottools) diff --git a/src/modules/networking/CMakeLists.txt b/src/modules/networking/CMakeLists.txt index ba457a638..5f72fd4cb 100644 --- a/src/modules/networking/CMakeLists.txt +++ b/src/modules/networking/CMakeLists.txt @@ -18,14 +18,25 @@ SD_ADD_LIBRARY(networking SHARED ${SD_NETWORK_SOURCES} ${SD_NETWORK_HEADERS}) #SET_TARGET_PROPERTIES(networking PROPERTIES VERSION ${VERSION} SOVERSION 0.0.0) ADD_INTERFACE_INCLUDEDIR() -ADD_SDL_INCLUDEDIR() + +IF(OPTION_SDL2) + ADD_SDL2_INCLUDEDIR() +ELSE(OPTION_SDL2) + ADD_SDL_INCLUDEDIR() +ENDIF(OPTION_SDL2) + ADD_SDLIB_INCLUDEDIR(networking portability tgf math) ADD_PLIB_INCLUDEDIR() ADD_ENET_INCLUDEDIR() ADD_PLIB_LIBRARY(networking ul sg) ADD_ENET_LIBRARY(networking) -ADD_SDL_LIBRARY(networking) + +IF(OPTION_SDL2) + ADD_SDL2_LIBRARY(networking) +ELSE(OPTION_SDL2) + ADD_SDL_LIBRARY(networking) +ENDIF(OPTION_SDL2) IF(WIN32) TARGET_LINK_LIBRARIES(networking Winmm ws2_32) diff --git a/src/modules/racing/genparoptv1/CMakeLists.txt b/src/modules/racing/genparoptv1/CMakeLists.txt index e88d39b03..7755e90bf 100644 --- a/src/modules/racing/genparoptv1/CMakeLists.txt +++ b/src/modules/racing/genparoptv1/CMakeLists.txt @@ -21,7 +21,12 @@ ADD_INTERFACE_INCLUDEDIR() ADD_SDLIB_INCLUDEDIR(math portability robottools tgf tgfclient tgfdata) ADD_PLIB_INCLUDEDIR() -ADD_SDL_INCLUDEDIR() + +IF(OPTION_SDL2) + ADD_SDL2_INCLUDEDIR() +ELSE(OPTION_SDL2) + ADD_SDL_INCLUDEDIR() +ENDIF(OPTION_SDL2) # Disable developer warning IF (COMMAND CMAKE_POLICY) diff --git a/src/modules/racing/standardgame/CMakeLists.txt b/src/modules/racing/standardgame/CMakeLists.txt index 20283c5c8..a3814acb0 100644 --- a/src/modules/racing/standardgame/CMakeLists.txt +++ b/src/modules/racing/standardgame/CMakeLists.txt @@ -21,7 +21,12 @@ ADD_INTERFACE_INCLUDEDIR() ADD_SDLIB_INCLUDEDIR(math portability robottools tgf tgfdata networking) ADD_PLIB_INCLUDEDIR() -ADD_SDL_INCLUDEDIR() + +IF(OPTION_SDL2) + ADD_SDL2_INCLUDEDIR() +ELSE(OPTION_SDL2) + ADD_SDL_INCLUDEDIR() +ENDIF(OPTION_SDL2) IF(OPTION_3RDPARTY_SQLITE3) ADD_SQLITE3_INCLUDEDIR() diff --git a/src/modules/sound/snddefault/CMakeLists.txt b/src/modules/sound/snddefault/CMakeLists.txt index 89f02403e..5309593dc 100644 --- a/src/modules/sound/snddefault/CMakeLists.txt +++ b/src/modules/sound/snddefault/CMakeLists.txt @@ -19,7 +19,13 @@ SET(_OTHER_SOURCES ) ADD_INTERFACE_INCLUDEDIR() ADD_SDLIB_INCLUDEDIR(portability math tgf tgfclient robottools) ADD_PLIB_INCLUDEDIR() -ADD_SDL_INCLUDEDIR() + +IF(OPTION_SDL2) + ADD_SDL2_INCLUDEDIR() +ELSE(OPTION_SDL2) + ADD_SDL_INCLUDEDIR() +ENDIF(OPTION_SDL2) + ADD_OPENAL_INCLUDEDIR() IF(COMMAND CMAKE_POLICY) @@ -46,7 +52,12 @@ SD_ADD_LIBRARY(snddefault MODULE ${_SOURCES} ${_HEADERS} ${_OTHER_SOURCES}) #SET_TARGET_PROPERTIES(snddefault PROPERTIES VERSION ${VERSION} SOVERSION 0.0.0) ADD_PLIB_LIBRARY(snddefault ul sg sl ssg ssgaux) -ADD_SDL_LIBRARY(snddefault) + +IF(OPTION_SDL2) + ADD_SDL2_LIBRARY(snddefault) +ELSE(OPTION_SDL2) + ADD_SDL_LIBRARY(snddefault) +ENDIF(OPTION_SDL2) ADD_SDLIB_LIBRARY(snddefault portability tgf tgfclient robottools) diff --git a/src/modules/userinterface/legacymenu/CMakeLists.txt b/src/modules/userinterface/legacymenu/CMakeLists.txt index 4128ab893..fdff52262 100644 --- a/src/modules/userinterface/legacymenu/CMakeLists.txt +++ b/src/modules/userinterface/legacymenu/CMakeLists.txt @@ -54,7 +54,13 @@ INCLUDE_DIRECTORIES(. ${MS} ${CS} ${RS}) ADD_INTERFACE_INCLUDEDIR() ADD_SDLIB_INCLUDEDIR(math portability tgf tgfclient tgfdata networking) ADD_PLIB_INCLUDEDIR() -ADD_SDL_INCLUDEDIR() + +IF(OPTION_SDL2) + ADD_SDL2_INCLUDEDIR() +ELSE(OPTION_SDL2) + ADD_SDL_INCLUDEDIR() +ENDIF(OPTION_SDL2) + ADD_ENET_INCLUDEDIR() IF(WIN32) diff --git a/src/modules/userinterface/textonly/CMakeLists.txt b/src/modules/userinterface/textonly/CMakeLists.txt index 61cf8a251..5856c777a 100644 --- a/src/modules/userinterface/textonly/CMakeLists.txt +++ b/src/modules/userinterface/textonly/CMakeLists.txt @@ -7,7 +7,13 @@ SET(_HEADERS textonly.h) ADD_INTERFACE_INCLUDEDIR() ADD_SDLIB_INCLUDEDIR(math portability tgf tgfclient tgfdata networking) ADD_PLIB_INCLUDEDIR() -ADD_SDL_INCLUDEDIR() + +IF(OPTION_SDL2) + ADD_SDL2_INCLUDEDIR() +ELSE(OPTION_SDL2) + ADD_SDL_INCLUDEDIR() +ENDIF(OPTION_SDL2) + ADD_ENET_INCLUDEDIR() IF(WIN32) diff --git a/src/tools/menuview/CMakeLists.txt b/src/tools/menuview/CMakeLists.txt index 57c9d6bb5..927d1284b 100644 --- a/src/tools/menuview/CMakeLists.txt +++ b/src/tools/menuview/CMakeLists.txt @@ -1,52 +1,57 @@ -INCLUDE(../../../cmake/macros.cmake) - -PROJECT(menuview) - -SET(_TARGET_NAME ${SD_TOOLS_EXECPREFIX}menuview) - -SET(_SOURCES main.cpp previewmenu.cpp) -SET(_HEADERS previewmenu.h) - -ADD_INTERFACE_INCLUDEDIR() -ADD_SDLIB_INCLUDEDIR(robottools tgf tgfclient math portability) -ADD_SDL_INCLUDEDIR() -ADD_PLIB_INCLUDEDIR() - -#disable developer warning -IF(COMMAND CMAKE_POLICY) - CMAKE_POLICY(SET CMP0003 NEW) -ENDIF(COMMAND CMAKE_POLICY) - -IF(MSVC) - # Ignore some run-time libs to avoid link time warnings and sometimes even crashes. - SET(CMAKE_EXE_LINKER_FLAGS_DEBUG - "${CMAKE_EXE_LINKER_FLAGS_DEBUG} /NODEFAULTLIB:msvcrt.lib /NODEFAULTLIB:libcmt.lib") - SET(CMAKE_EXE_LINKER_FLAGS_RELEASE - "${CMAKE_EXE_LINKER_FLAGS_RELEASE} /NODEFAULTLIB:libcmt.lib") -ENDIF(MSVC) - -# Note: Headers needed for having them available in IDEs. -SD_ADD_EXECUTABLE(${_TARGET_NAME} ${_SOURCES} ${_HEADERS}) - -ADD_SDLIB_LIBRARY(${_TARGET_NAME} portability robottools tgf tgfclient) - -IF(OPENGL_FOUND) - TARGET_LINK_LIBRARIES(${_TARGET_NAME} ${OPENGL_LIBRARY}) -ENDIF(OPENGL_FOUND) - -ADD_PNG_LIBRARY(${_TARGET_NAME}) -ADD_SDL_LIBRARY(${_TARGET_NAME}) -ADD_PLIB_LIBRARY(${_TARGET_NAME} sg ssg ul) -ADD_DL_LIBRARY(${_TARGET_NAME}) - -# Needed when using the "MinGW Makefiles" CMake generator (but not with the "MSYS Makefiles" one !?) -IF(MINGW) - TARGET_LINK_LIBRARIES(${_TARGET_NAME} ${MINGW32_LIBRARY}) -ENDIF(MINGW) - -IF(UNIX) - SD_INSTALL_FILES(MAN man6 PREFIX ${SOURCE_DIR}/doc/man FILES ${_TARGET_NAME}.6) -ENDIF(UNIX) - -SD_INSTALL_FILES(BIN TARGETS ${_TARGET_NAME}) - +INCLUDE(../../../cmake/macros.cmake) + +PROJECT(menuview) + +SET(_TARGET_NAME ${SD_TOOLS_EXECPREFIX}menuview) + +SET(_SOURCES main.cpp previewmenu.cpp) +SET(_HEADERS previewmenu.h) + +ADD_INTERFACE_INCLUDEDIR() +ADD_SDLIB_INCLUDEDIR(robottools tgf tgfclient math portability) + +IF(OPTION_SDL2) + ADD_SDL2_INCLUDEDIR() +ELSE(OPTION_SDL2) + ADD_SDL_INCLUDEDIR() +ENDIF(OPTION_SDL2) +ADD_PLIB_INCLUDEDIR() + +#disable developer warning +IF(COMMAND CMAKE_POLICY) + CMAKE_POLICY(SET CMP0003 NEW) +ENDIF(COMMAND CMAKE_POLICY) + +IF(MSVC) + # Ignore some run-time libs to avoid link time warnings and sometimes even crashes. + SET(CMAKE_EXE_LINKER_FLAGS_DEBUG + "${CMAKE_EXE_LINKER_FLAGS_DEBUG} /NODEFAULTLIB:msvcrt.lib /NODEFAULTLIB:libcmt.lib") + SET(CMAKE_EXE_LINKER_FLAGS_RELEASE + "${CMAKE_EXE_LINKER_FLAGS_RELEASE} /NODEFAULTLIB:libcmt.lib") +ENDIF(MSVC) + +# Note: Headers needed for having them available in IDEs. +SD_ADD_EXECUTABLE(${_TARGET_NAME} ${_SOURCES} ${_HEADERS}) + +ADD_SDLIB_LIBRARY(${_TARGET_NAME} portability robottools tgf tgfclient) + +IF(OPENGL_FOUND) + TARGET_LINK_LIBRARIES(${_TARGET_NAME} ${OPENGL_LIBRARY}) +ENDIF(OPENGL_FOUND) + +ADD_PNG_LIBRARY(${_TARGET_NAME}) +ADD_SDL_LIBRARY(${_TARGET_NAME}) +ADD_PLIB_LIBRARY(${_TARGET_NAME} sg ssg ul) +ADD_DL_LIBRARY(${_TARGET_NAME}) + +# Needed when using the "MinGW Makefiles" CMake generator (but not with the "MSYS Makefiles" one !?) +IF(MINGW) + TARGET_LINK_LIBRARIES(${_TARGET_NAME} ${MINGW32_LIBRARY}) +ENDIF(MINGW) + +IF(UNIX) + SD_INSTALL_FILES(MAN man6 PREFIX ${SOURCE_DIR}/doc/man FILES ${_TARGET_NAME}.6) +ENDIF(UNIX) + +SD_INSTALL_FILES(BIN TARGETS ${_TARGET_NAME}) + diff --git a/src/tools/trackgen/CMakeLists.txt b/src/tools/trackgen/CMakeLists.txt index aceb7ed62..ab3a9bcae 100644 --- a/src/tools/trackgen/CMakeLists.txt +++ b/src/tools/trackgen/CMakeLists.txt @@ -11,7 +11,13 @@ SET(_OTHER_SOURCES trackgen.xml) ADD_INTERFACE_INCLUDEDIR() ADD_SDLIB_INCLUDEDIR(robottools tgf tgfclient math portability) -ADD_SDL_INCLUDEDIR() + +IF(OPTION_SDL2) + ADD_SDL2_INCLUDEDIR() +ELSE(OPTION_SDL2) + ADD_SDL_INCLUDEDIR() +ENDIF(OPTION_SDL2) + ADD_PLIB_INCLUDEDIR() #disable developer warning @@ -37,7 +43,13 @@ IF(OPENGL_FOUND) ENDIF(OPENGL_FOUND) ADD_PNG_LIBRARY(${_TARGET_NAME}) -ADD_SDL_LIBRARY(${_TARGET_NAME}) + +IF(OPTION_SDL2) + ADD_SDL2_LIBRARY(${_TARGET_NAME}) +ELSE(OPTION_SDL2) + ADD_SDL_LIBRARY(${_TARGET_NAME}) +ENDIF(OPTION_SDL2) + ADD_PLIB_LIBRARY(${_TARGET_NAME} sg ssg ul) ADD_DL_LIBRARY(${_TARGET_NAME})