From bc0bd462cbe5f4b5ddaa5570137e0328fddc0177 Mon Sep 17 00:00:00 2001 From: Stephen Birarda Date: Fri, 20 Feb 2015 15:26:16 -0800 Subject: [PATCH] add an external project for SDL 2 --- CMakeLists.txt | 3 ++ cmake/externals/sdl2/CMakeLists.txt | 50 +++++++++++++++++++++++++++++ cmake/modules/FindSDL2.cmake | 49 ---------------------------- interface/CMakeLists.txt | 2 ++ 4 files changed, 55 insertions(+), 49 deletions(-) create mode 100644 cmake/externals/sdl2/CMakeLists.txt diff --git a/CMakeLists.txt b/CMakeLists.txt index 563ece524f..574bf0a344 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -126,6 +126,9 @@ set(EXTERNAL_PROJECT_PREFIX "project") set_property(DIRECTORY PROPERTY EP_PREFIX ${EXTERNAL_PROJECT_PREFIX}) setup_externals_binary_dir() +# setup for optional external project dependencies +option(GET_SDL2 "Download SDL2 as external project" 0) + if (WIN32) add_paths_to_lib_paths("${QT_DIR}/bin") endif () diff --git a/cmake/externals/sdl2/CMakeLists.txt b/cmake/externals/sdl2/CMakeLists.txt new file mode 100644 index 0000000000..00936a8320 --- /dev/null +++ b/cmake/externals/sdl2/CMakeLists.txt @@ -0,0 +1,50 @@ +set(EXTERNAL_NAME sdl2) + +include(ExternalProject) + +if (WIN32) + ExternalProject_Add( + ${EXTERNAL_NAME} + URL http://www.libsdl.org/release/SDL2-devel-2.0.3-VC.zip + URL_MD5 30a333bcbe94bc5016e8799c73e86233 + CONFIGURE_COMMAND "" + BUILD_COMMAND "" + INSTALL_COMMAND "" + LOG_DOWNLOAD 1 + ) +else () + if (ANDROID) + set(ANDROID_CMAKE_ARGS "-DCMAKE_TOOLCHAIN_FILE=${CMAKE_TOOLCHAIN_FILE}" "-DANDROID_NATIVE_API_LEVEL=19") + endif () + + ExternalProject_Add( + ${EXTERNAL_NAME} + URL http://www.libsdl.org/release/SDL2-2.0.3.tar.gz + URL_MD5 fe6c61d2e9df9ef570e7e80c6e822537 + CMAKE_ARGS ${ANDROID_CMAKE_ARGS} -DCMAKE_INSTALL_PREFIX:PATH= + LOG_DOWNLOAD 1 + LOG_CONFIGURE 1 + LOG_BUILD 1 + ) +endif () + +string(TOUPPER ${EXTERNAL_NAME} EXTERNAL_NAME_UPPER) + +if (WIN32) + ExternalProject_Get_Property(${EXTERNAL_NAME} SOURCE_DIR) + set(_ROOT_DIR ${SOURCE_DIR}) + set(_LIB_DIR "${SOURCE_DIR}/lib/x86") + set(_LIB_EXT "lib") + + set(${EXTERNAL_NAME_UPPER}_DLL_PATH ${_LIB_DIR} CACHE PATH "Location of SDL2 DLL") +else () + ExternalProject_Get_Property(${EXTERNAL_NAME} INSTALL_DIR) + set(_ROOT_DIR ${INSTALL_DIR}) + + set(_LIB_DIR ${INSTALL_DIR}/lib) + set(_LIB_EXT "so") + set(_LIB_PREFIX "lib") +endif () + +set(${EXTERNAL_NAME_UPPER}_INCLUDE_DIR ${_ROOT_DIR}/include/SDL2 CACHE PATH "Location of SDL2 include directory") +set(${EXTERNAL_NAME_UPPER}_LIBRARY_TEMP ${_LIB_DIR}/${_LIB_PREFIX}SDL2.${_LIB_EXT} CACHE FILEPATH "Path to SDL2 library") \ No newline at end of file diff --git a/cmake/modules/FindSDL2.cmake b/cmake/modules/FindSDL2.cmake index 55dae82f82..8c7c0c581b 100644 --- a/cmake/modules/FindSDL2.cmake +++ b/cmake/modules/FindSDL2.cmake @@ -163,48 +163,6 @@ ELSE(CMAKE_SIZEOF_VOID_P EQUAL 8) endif () ENDIF(CMAKE_SIZEOF_VOID_P EQUAL 8) -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. - # Lookup the 64 bit libs on x64 - IF(CMAKE_SIZEOF_VOID_P EQUAL 8) - FIND_LIBRARY(SDL2MAIN_LIBRARY - NAMES SDL2main - HINTS - ${SDL2_SEARCH_DIRS} - $ENV{SDL2} - PATH_SUFFIXES lib64 lib - lib/x64 - x86_64-w64-mingw32/lib - PATHS - /sw - /opt/local - /opt/csw - /opt - ) - # On 32bit build find the 32bit libs - ELSE(CMAKE_SIZEOF_VOID_P EQUAL 8) - FIND_LIBRARY(SDL2MAIN_LIBRARY - NAMES SDL2main - HINTS - ${SDL2_SEARCH_DIRS} - $ENV{SDL2} - PATH_SUFFIXES lib - lib/x86 - i686-w64-mingw32/lib - PATHS - /sw - /opt/local - /opt/csw - /opt - ) - ENDIF(CMAKE_SIZEOF_VOID_P EQUAL 8) - 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. @@ -222,13 +180,6 @@ ENDIF(MINGW) SET(SDL2_FOUND "NO") 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. diff --git a/interface/CMakeLists.txt b/interface/CMakeLists.txt index 446a816d1b..0cff232f26 100644 --- a/interface/CMakeLists.txt +++ b/interface/CMakeLists.txt @@ -119,6 +119,8 @@ link_hifi_libraries(shared octree environment gpu model fbx metavoxels networkin audio audio-client animation script-engine physics render-utils entities-renderer) +add_dependency_external_projects(sdl2) + # perform standard include and linking for found externals foreach(EXTERNAL ${OPTIONAL_EXTERNALS})