early-access version 1988
This commit is contained in:
134
externals/SDL/CMakeLists.txt
vendored
134
externals/SDL/CMakeLists.txt
vendored
@@ -1,5 +1,5 @@
|
||||
if(${CMAKE_SOURCE_DIR} STREQUAL ${CMAKE_BINARY_DIR})
|
||||
message(FATAL_ERROR "Prevented in-tree built. Please create a build directory outside of the SDL source code and call cmake from there")
|
||||
if(${CMAKE_CURRENT_SOURCE_DIR} STREQUAL ${CMAKE_CURRENT_BINARY_DIR})
|
||||
message(FATAL_ERROR "Prevented in-tree build. Please create a build directory outside of the SDL source code and run \"cmake -S ${CMAKE_SOURCE_DIR} -B .\" from there")
|
||||
endif()
|
||||
|
||||
cmake_minimum_required(VERSION 3.0.0)
|
||||
@@ -10,6 +10,10 @@ if(WINDOWS_STORE)
|
||||
add_definitions(-DSDL_BUILDING_WINRT=1 -ZW)
|
||||
endif()
|
||||
|
||||
if (HAIKU)
|
||||
set(LINKER_LANGUAGE CXX)
|
||||
endif()
|
||||
|
||||
# !!! FIXME: this should probably do "MACOSX_RPATH ON" as a target property
|
||||
# !!! FIXME: for the SDL2 shared library (so you get an
|
||||
# !!! FIXME: install_name ("soname") of "@rpath/libSDL-whatever.dylib"
|
||||
@@ -47,12 +51,12 @@ include(${SDL2_SOURCE_DIR}/cmake/sdlchecks.cmake)
|
||||
# set SDL_BINARY_AGE and SDL_INTERFACE_AGE to 0.
|
||||
set(SDL_MAJOR_VERSION 2)
|
||||
set(SDL_MINOR_VERSION 0)
|
||||
set(SDL_MICRO_VERSION 15)
|
||||
set(SDL_INTERFACE_AGE 1)
|
||||
set(SDL_BINARY_AGE 15)
|
||||
set(SDL_MICRO_VERSION 16)
|
||||
set(SDL_INTERFACE_AGE 0)
|
||||
set(SDL_BINARY_AGE 16)
|
||||
set(SDL_VERSION "${SDL_MAJOR_VERSION}.${SDL_MINOR_VERSION}.${SDL_MICRO_VERSION}")
|
||||
# the following should match the versions in Xcode project file:
|
||||
set(DYLIB_CURRENT_VERSION 15.1.0)
|
||||
set(DYLIB_CURRENT_VERSION 17.0.0)
|
||||
set(DYLIB_COMPATIBILITY_VERSION 1.0.0)
|
||||
|
||||
# Set defaults preventing destination file conflicts
|
||||
@@ -204,7 +208,7 @@ if(APPLE OR ARCH_64)
|
||||
set(OPT_DEF_SSEMATH ON)
|
||||
endif()
|
||||
endif()
|
||||
if(UNIX OR MINGW OR MSYS OR USE_CLANG OR VITA)
|
||||
if(UNIX OR MINGW OR MSYS OR (USE_CLANG AND NOT WINDOWS) OR VITA)
|
||||
set(OPT_DEF_LIBC ON)
|
||||
endif()
|
||||
|
||||
@@ -388,6 +392,8 @@ set_option(CLOCK_GETTIME "Use clock_gettime() instead of gettimeofday()" O
|
||||
set_option(VIDEO_X11 "Use X11 video driver" ${UNIX_SYS})
|
||||
set_option(VIDEO_WAYLAND "Use Wayland video driver" ${UNIX_SYS})
|
||||
dep_option(WAYLAND_SHARED "Dynamically load Wayland support" ON "VIDEO_WAYLAND" OFF)
|
||||
dep_option(WAYLAND_LIBDECOR "Use client-side window decorations on Wayland" ON "VIDEO_WAYLAND" ON)
|
||||
dep_option(LIBDECOR_SHARED "Dynamically load libdecor support" ON "WAYLAND_LIBDECOR" OFF)
|
||||
dep_option(VIDEO_WAYLAND_QT_TOUCH "QtWayland server support for Wayland video driver" ON "VIDEO_WAYLAND" OFF)
|
||||
set_option(VIDEO_RPI "Use Raspberry Pi video driver" ${UNIX_SYS})
|
||||
dep_option(X11_SHARED "Dynamically load X11 support" ON "VIDEO_X11" OFF)
|
||||
@@ -420,6 +426,10 @@ set(SDL_STATIC ${SDL_STATIC_ENABLED_BY_DEFAULT} CACHE BOOL "Build a static versi
|
||||
dep_option(SDL_STATIC_PIC "Static version of the library should be built with Position Independent Code" OFF "SDL_STATIC" OFF)
|
||||
set_option(SDL_TEST "Build the test directory" OFF)
|
||||
|
||||
if(VITA)
|
||||
set_option(VIDEO_VITA_PIB "Build with PSVita piglet gles2 support" OFF)
|
||||
endif()
|
||||
|
||||
# General source files
|
||||
file(GLOB SOURCE_FILES
|
||||
${SDL2_SOURCE_DIR}/src/*.c
|
||||
@@ -769,6 +779,7 @@ if(ASSEMBLY)
|
||||
set(HAVE_SSE TRUE)
|
||||
set(HAVE_SSE2 TRUE)
|
||||
set(HAVE_SSE3 TRUE)
|
||||
check_include_file("immintrin.h" HAVE_IMMINTRIN_H)
|
||||
set(SDL_ASSEMBLY_ROUTINES 1)
|
||||
endif()
|
||||
endif()
|
||||
@@ -1166,7 +1177,7 @@ elseif(EMSCRIPTEN)
|
||||
|
||||
CheckPTHREAD()
|
||||
|
||||
elseif(UNIX AND NOT APPLE AND NOT ANDROID AND NOT RISCOS)
|
||||
elseif(UNIX AND NOT APPLE AND NOT ANDROID AND NOT RISCOS AND NOT HAIKU)
|
||||
if(SDL_AUDIO)
|
||||
if(SYSV5 OR SOLARIS OR HPUX)
|
||||
set(SDL_AUDIO_DRIVER_SUNAUDIO 1)
|
||||
@@ -1680,6 +1691,9 @@ elseif(WINDOWS)
|
||||
if(HAVE_HIDAPI)
|
||||
set(SOURCE_FILES ${SOURCE_FILES} ${SDL2_SOURCE_DIR}/src/hidapi/windows/hid.c)
|
||||
endif()
|
||||
if(NOT WINDOWS_STORE)
|
||||
set(SDL_JOYSTICK_RAWINPUT 1)
|
||||
endif()
|
||||
file(GLOB JOYSTICK_SOURCES ${SDL2_SOURCE_DIR}/src/joystick/windows/*.c)
|
||||
set(SOURCE_FILES ${SOURCE_FILES} ${JOYSTICK_SOURCES})
|
||||
if(HAVE_DINPUT_H)
|
||||
@@ -1899,7 +1913,7 @@ elseif(APPLE)
|
||||
#import <Metal/Metal.h>
|
||||
#import <QuartzCore/CAMetalLayer.h>
|
||||
|
||||
#if TARGET_OS_SIMULATOR || (!TARGET_CPU_X86_64 && !TARGET_CPU_ARM64)
|
||||
#if (!TARGET_CPU_X86_64 && !TARGET_CPU_ARM64)
|
||||
#error Metal doesn't work on this configuration
|
||||
#endif
|
||||
int main()
|
||||
@@ -2018,30 +2032,46 @@ elseif(APPLE)
|
||||
CheckPTHREAD()
|
||||
|
||||
elseif(HAIKU)
|
||||
if(SDL_AUDIO)
|
||||
set(SDL_AUDIO_DRIVER_HAIKU 1)
|
||||
file(GLOB HAIKU_AUDIO_SOURCES ${SDL2_SOURCE_DIR}/src/audio/haiku/*.cc)
|
||||
set(SOURCE_FILES ${SOURCE_FILES} ${HAIKU_AUDIO_SOURCES})
|
||||
set(HAVE_SDL_AUDIO TRUE)
|
||||
endif()
|
||||
|
||||
if(SDL_JOYSTICK)
|
||||
set(SDL_JOYSTICK_HAIKU 1)
|
||||
file(GLOB HAIKU_JOYSTICK_SOURCES ${SDL2_SOURCE_DIR}/src/joystick/haiku/*.cc)
|
||||
set(SOURCE_FILES ${SOURCE_FILES} ${HAIKU_JOYSTICK_SOURCES})
|
||||
set(HAVE_SDL_JOYSTICK TRUE)
|
||||
endif()
|
||||
|
||||
file(GLOB MISC_SOURCES ${SDL2_SOURCE_DIR}/src/misc/haiku/*.cc)
|
||||
set(SOURCE_FILES ${SOURCE_FILES} ${MISC_SOURCES})
|
||||
set(HAVE_SDL_MISC TRUE)
|
||||
|
||||
if(SDL_VIDEO)
|
||||
set(SDL_VIDEO_DRIVER_HAIKU 1)
|
||||
file(GLOB HAIKUVIDEO_SOURCES ${SDL2_SOURCE_DIR}/src/video/haiku/*.c)
|
||||
file(GLOB HAIKUVIDEO_SOURCES ${SDL2_SOURCE_DIR}/src/video/haiku/*.cc)
|
||||
set(SOURCE_FILES ${SOURCE_FILES} ${HAIKUVIDEO_SOURCES})
|
||||
set(HAVE_SDL_VIDEO TRUE)
|
||||
|
||||
if(VIDEO_OPENGL)
|
||||
# TODO: Use FIND_PACKAGE(OpenGL) instead
|
||||
set(SDL_VIDEO_OPENGL 1)
|
||||
set(SDL_VIDEO_OPENGL_BGL 1)
|
||||
set(SDL_VIDEO_OPENGL_HAIKU 1)
|
||||
set(SDL_VIDEO_RENDER_OGL 1)
|
||||
list(APPEND EXTRA_LIBS GL)
|
||||
set(HAVE_VIDEO_OPENGL TRUE)
|
||||
endif()
|
||||
endif()
|
||||
|
||||
set(SDL_FILESYSTEM_HAIKU 1)
|
||||
file(GLOB FILESYSTEM_SOURCES ${SDL2_SOURCE_DIR}/src/filesystem/haiku/*.cc)
|
||||
set(SOURCE_FILES ${SOURCE_FILES} ${FILESYSTEM_SOURCES})
|
||||
set(HAVE_SDL_FILESYSTEM TRUE)
|
||||
if(SDL_FILESYSTEM)
|
||||
set(SDL_FILESYSTEM_HAIKU 1)
|
||||
file(GLOB FILESYSTEM_SOURCES ${SDL2_SOURCE_DIR}/src/filesystem/haiku/*.cc)
|
||||
set(SOURCE_FILES ${SOURCE_FILES} ${FILESYSTEM_SOURCES})
|
||||
set(HAVE_SDL_FILESYSTEM TRUE)
|
||||
endif()
|
||||
|
||||
if(SDL_TIMERS)
|
||||
set(SDL_TIMER_HAIKU 1)
|
||||
@@ -2050,13 +2080,24 @@ elseif(HAIKU)
|
||||
set(HAVE_SDL_TIMERS TRUE)
|
||||
endif()
|
||||
|
||||
if(SDL_POWER)
|
||||
set(SDL_POWER_HAIKU 1)
|
||||
file(GLOB HAIKU_POWER_SOURCES ${SDL2_SOURCE_DIR}/src/power/haiku/*.c)
|
||||
set(SOURCE_FILES ${SOURCE_FILES} ${HAIKU_POWER_SOURCES})
|
||||
set(HAVE_SDL_POWER TRUE)
|
||||
endif()
|
||||
|
||||
if(SDL_LOCALE)
|
||||
file(GLOB LOCALE_SOURCES ${SDL2_SOURCE_DIR}/src/locale/haiku/*.cc)
|
||||
set(SOURCE_FILES ${SOURCE_FILES} ${LOCALE_SOURCES})
|
||||
set(HAVE_SDL_LOCALE TRUE)
|
||||
endif()
|
||||
|
||||
file(GLOB MAIN_SOURCES ${SDL2_SOURCE_DIR}/src/main/haiku/*.cc)
|
||||
set(SOURCE_FILES ${SOURCE_FILES} ${MAIN_SOURCES})
|
||||
|
||||
CheckPTHREAD()
|
||||
list(APPEND EXTRA_LIBS root be media game device textencoding)
|
||||
|
||||
elseif(RISCOS)
|
||||
file(GLOB MISC_SOURCES ${SDL2_SOURCE_DIR}/src/misc/riscos/*.c)
|
||||
@@ -2142,16 +2183,22 @@ elseif(VITA)
|
||||
set(SOURCE_FILES ${SOURCE_FILES} ${VITA_VIDEO_SOURCES})
|
||||
set(HAVE_SDL_VIDEO TRUE)
|
||||
|
||||
check_include_file(pib.h HAVE_PIGS_IN_BLANKET_H)
|
||||
|
||||
if(VIDEO_VITA_PIB)
|
||||
check_include_file(pib.h HAVE_PIGS_IN_BLANKET_H)
|
||||
|
||||
if(HAVE_PIGS_IN_BLANKET_H)
|
||||
set(SDL_VIDEO_OPENGL_ES2 1)
|
||||
list(APPEND EXTRA_LIBS
|
||||
pib
|
||||
)
|
||||
|
||||
if(HAVE_PIGS_IN_BLANKET_H)
|
||||
set(SDL_VIDEO_OPENGL_ES2 1)
|
||||
list(APPEND EXTRA_LIBS
|
||||
pib
|
||||
)
|
||||
set(HAVE_VIDEO_VITA_PIB ON)
|
||||
set(SDL_VIDEO_VITA_PIB 1)
|
||||
else()
|
||||
set(HAVE_VIDEO_VITA_PIB OFF)
|
||||
endif()
|
||||
endif()
|
||||
|
||||
set(SDL_VIDEO_RENDER_VITA_GXM 1)
|
||||
|
||||
list(APPEND EXTRA_LIBS
|
||||
@@ -2168,8 +2215,18 @@ elseif(VITA)
|
||||
SceTouch_stub
|
||||
SceHid_stub
|
||||
SceMotion_stub
|
||||
ScePower_stub
|
||||
m
|
||||
)
|
||||
if(HAVE_VIDEO_VITA_PIB)
|
||||
list(PREPEND EXTRA_LIBS
|
||||
pib
|
||||
libScePiglet_stub
|
||||
SceShaccCg_stub
|
||||
taihen_stub
|
||||
)
|
||||
endif()
|
||||
|
||||
endif()
|
||||
|
||||
set(HAVE_ARMSIMD TRUE)
|
||||
@@ -2291,14 +2348,14 @@ if(NOT CMAKE_HOST_WIN32)
|
||||
execute_process(COMMAND sh ${SDL2_SOURCE_DIR}/build-scripts/updaterev.sh
|
||||
WORKING_DIRECTORY ${SDL2_BINARY_DIR})
|
||||
endif()
|
||||
if(NOT WINDOWS OR CYGWIN)
|
||||
if(NOT WINDOWS OR CYGWIN OR MINGW)
|
||||
|
||||
set(prefix ${CMAKE_INSTALL_PREFIX})
|
||||
|
||||
set(exec_prefix "\${prefix}")
|
||||
set(libdir "\${exec_prefix}/lib${LIB_SUFFIX}")
|
||||
set(bindir "\${exec_prefix}/bin")
|
||||
set(includedir "\${prefix}/include")
|
||||
set(libdir "${CMAKE_INSTALL_FULL_LIBDIR}")
|
||||
set(bindir "${CMAKE_INSTALL_FULL_BINDIR}")
|
||||
set(includedir "${CMAKE_INSTALL_FULL_INCLUDEDIR}")
|
||||
if(SDL_STATIC)
|
||||
set(ENABLE_STATIC_TRUE "")
|
||||
set(ENABLE_STATIC_FALSE "#")
|
||||
@@ -2488,7 +2545,7 @@ if(NOT WINDOWS_STORE)
|
||||
add_library(SDL2main STATIC ${SDLMAIN_SOURCES})
|
||||
# alias target for in-tree builds
|
||||
add_library(SDL2::SDL2main ALIAS SDL2main)
|
||||
target_include_directories(SDL2main PUBLIC "$<BUILD_INTERFACE:${SDL2_SOURCE_DIR}/include>" $<INSTALL_INTERFACE:include> $<INSTALL_INTERFACE:include/SDL2>)
|
||||
target_include_directories(SDL2main PUBLIC "$<BUILD_INTERFACE:${SDL2_SOURCE_DIR}/include>" $<INSTALL_INTERFACE:${CMAKE_INSTALL_INCLUDEDIR}> $<INSTALL_INTERFACE:${CMAKE_INSTALL_INCLUDEDIR}/SDL2>)
|
||||
set(_INSTALL_LIBS "SDL2main")
|
||||
if (NOT ANDROID)
|
||||
set_target_properties(SDL2main PROPERTIES DEBUG_POSTFIX "${SDL_CMAKE_DEBUG_POSTFIX}")
|
||||
@@ -2510,7 +2567,7 @@ if(SDL_SHARED)
|
||||
elseif(UNIX AND NOT ANDROID)
|
||||
set_target_properties(SDL2 PROPERTIES
|
||||
VERSION ${LT_VERSION}
|
||||
SOVERSION ${LT_REVISION}
|
||||
SOVERSION ${LT_MAJOR}
|
||||
OUTPUT_NAME "SDL2-${LT_RELEASE}")
|
||||
else()
|
||||
if(WINDOWS OR CYGWIN)
|
||||
@@ -2532,7 +2589,7 @@ if(SDL_SHARED)
|
||||
endif()
|
||||
set(_INSTALL_LIBS "SDL2" ${_INSTALL_LIBS})
|
||||
target_link_libraries(SDL2 PRIVATE ${EXTRA_LIBS} ${EXTRA_LDFLAGS})
|
||||
target_include_directories(SDL2 PUBLIC "$<BUILD_INTERFACE:${SDL2_SOURCE_DIR}/include>" $<INSTALL_INTERFACE:include> $<INSTALL_INTERFACE:include/SDL2>)
|
||||
target_include_directories(SDL2 PUBLIC "$<BUILD_INTERFACE:${SDL2_SOURCE_DIR}/include>" $<INSTALL_INTERFACE:${CMAKE_INSTALL_INCLUDEDIR}> $<INSTALL_INTERFACE:${CMAKE_INSTALL_INCLUDEDIR}/SDL2>)
|
||||
if(ANDROID)
|
||||
target_include_directories(SDL2 PRIVATE ${ANDROID_NDK}/sources/android/cpufeatures)
|
||||
else()
|
||||
@@ -2540,7 +2597,6 @@ if(SDL_SHARED)
|
||||
endif()
|
||||
if(IOS OR TVOS)
|
||||
set_property(TARGET SDL2 APPEND_STRING PROPERTY COMPILE_FLAGS "-fobjc-arc")
|
||||
target_compile_definitions(SDL2 PRIVATE IOS_DYLIB=1)
|
||||
endif()
|
||||
endif()
|
||||
|
||||
@@ -2606,15 +2662,15 @@ endif()
|
||||
|
||||
##### Installation targets #####
|
||||
install(TARGETS ${_INSTALL_LIBS} EXPORT SDL2Targets
|
||||
LIBRARY DESTINATION "lib${LIB_SUFFIX}"
|
||||
ARCHIVE DESTINATION "lib${LIB_SUFFIX}"
|
||||
RUNTIME DESTINATION bin)
|
||||
LIBRARY DESTINATION "${CMAKE_INSTALL_LIBDIR}${LIB_SUFFIX}"
|
||||
ARCHIVE DESTINATION "${CMAKE_INSTALL_LIBDIR}${LIB_SUFFIX}"
|
||||
RUNTIME DESTINATION "${CMAKE_INSTALL_BINDIR}")
|
||||
|
||||
##### Export files #####
|
||||
if (WINDOWS)
|
||||
set(PKG_PREFIX "cmake")
|
||||
else ()
|
||||
set(PKG_PREFIX "lib${LIB_SUFFIX}/cmake/SDL2")
|
||||
set(PKG_PREFIX "${CMAKE_INSTALL_LIBDIR}${LIB_SUFFIX}/cmake/SDL2")
|
||||
endif ()
|
||||
|
||||
include(CMakePackageConfigHelpers)
|
||||
@@ -2643,7 +2699,7 @@ foreach(_FNAME ${BIN_INCLUDE_FILES})
|
||||
list(REMOVE_ITEM INCLUDE_FILES ${SDL2_SOURCE_DIR}/include/${_INCNAME})
|
||||
endforeach()
|
||||
list(APPEND INCLUDE_FILES ${BIN_INCLUDE_FILES})
|
||||
install(FILES ${INCLUDE_FILES} DESTINATION include/SDL2)
|
||||
install(FILES ${INCLUDE_FILES} DESTINATION ${CMAKE_INSTALL_INCLUDEDIR}/SDL2)
|
||||
|
||||
string(TOUPPER "${CMAKE_BUILD_TYPE}" UPPER_BUILD_TYPE)
|
||||
if (UPPER_BUILD_TYPE MATCHES DEBUG)
|
||||
@@ -2652,7 +2708,7 @@ else()
|
||||
set(SOPOSTFIX "")
|
||||
endif()
|
||||
|
||||
if(NOT (WINDOWS OR CYGWIN))
|
||||
if(NOT (WINDOWS OR CYGWIN OR MINGW))
|
||||
if(SDL_SHARED)
|
||||
set(SOEXT ${CMAKE_SHARED_LIBRARY_SUFFIX}) # ".so", ".dylib", etc.
|
||||
get_target_property(SONAME SDL2 OUTPUT_NAME)
|
||||
@@ -2661,7 +2717,7 @@ if(NOT (WINDOWS OR CYGWIN))
|
||||
execute_process(COMMAND ${CMAKE_COMMAND} -E create_symlink
|
||||
\"lib${SONAME}${SOPOSTFIX}${SOEXT}\" \"libSDL2${SOPOSTFIX}${SOEXT}\"
|
||||
WORKING_DIRECTORY \"${SDL2_BINARY_DIR}\")")
|
||||
install(FILES ${SDL2_BINARY_DIR}/libSDL2${SOPOSTFIX}${SOEXT} DESTINATION "lib${LIB_SUFFIX}")
|
||||
install(FILES ${SDL2_BINARY_DIR}/libSDL2${SOPOSTFIX}${SOEXT} DESTINATION "${CMAKE_INSTALL_LIBDIR}${LIB_SUFFIX}")
|
||||
endif()
|
||||
endif()
|
||||
if(FREEBSD)
|
||||
@@ -2669,9 +2725,9 @@ if(NOT (WINDOWS OR CYGWIN))
|
||||
install(FILES ${SDL2_BINARY_DIR}/sdl2.pc DESTINATION "libdata/pkgconfig")
|
||||
else()
|
||||
install(FILES ${SDL2_BINARY_DIR}/sdl2.pc
|
||||
DESTINATION "lib${LIB_SUFFIX}/pkgconfig")
|
||||
DESTINATION "${CMAKE_INSTALL_LIBDIR}${LIB_SUFFIX}/pkgconfig")
|
||||
endif()
|
||||
install(PROGRAMS ${SDL2_BINARY_DIR}/sdl2-config DESTINATION bin)
|
||||
install(PROGRAMS ${SDL2_BINARY_DIR}/sdl2-config DESTINATION "${CMAKE_INSTALL_BINDIR}")
|
||||
# TODO: what about the .spec file? Is it only needed for RPM creation?
|
||||
install(FILES "${SDL2_SOURCE_DIR}/sdl2.m4" DESTINATION "${CMAKE_INSTALL_FULL_DATAROOTDIR}/aclocal")
|
||||
endif()
|
||||
|
Reference in New Issue
Block a user