src/platform/sdl/CMakeLists.txt (view raw)
1set(SDL_VERSION "2" CACHE STRING "Version of SDL to use (1.2 or 2)")
2
3if (SDL_VERSION EQUAL "2")
4 include(FindPkgConfig)
5 pkg_search_module(SDL2 sdl2)
6 if (NOT SDL2_FOUND)
7 find_package(SDL2)
8 endif()
9
10 if (SDL2_FOUND)
11 set(SDL_INCLUDE_DIR ${SDL2_INCLUDE_DIRS})
12 set(SDL_LIBRARY ${SDL2_LIBRARIES})
13 link_directories(${SDL2_LIBDIR})
14 set(SDL_VERSION_DEBIAN "2-2.0-0")
15 set(SDL_FOUND ON PARENT_SCOPE)
16 endif()
17endif()
18
19if(SDL_VERSION EQUAL "1.2" OR NOT SDL2_FOUND)
20 find_package(SDL 1.2)
21 if(SDL_FOUND)
22 set(SDL_VERSION "1.2")
23 set(SDL_VERSION_DEBIAN "1.2debian")
24 set(USE_PIXMAN ON)
25 endif()
26endif()
27
28if (NOT SDL2_FOUND AND NOT SDL_FOUND)
29 set(SDL_FOUND OFF PARENT_SCOPE)
30 return()
31endif()
32
33set(SDL_VERSION "${SDL_VERSION}" PARENT_SCOPE)
34add_definitions(-DBUILD_SDL)
35
36find_feature(USE_PIXMAN "pixman-1")
37if(USE_PIXMAN)
38 add_definitions(-DUSE_PIXMAN)
39 set(CPACK_DEBIAN_PACKAGE_DEPENDS "${CPACK_DEBIAN_PACKAGE_DEPENDS},libpixman-1.0" PARENT_SCOPE)
40endif()
41
42if(WIN32)
43 list(APPEND SDL_LIBRARY imm32 version winmm)
44elseif(APPLE)
45 set(CMAKE_EXE_LINKER_FLAGS "${CMAKE_EXE_LINKER_FLAGS} -framework AppKit -framework AudioUnit -framework Carbon -framework CoreAudio -framework AudioToolbox -framework ForceFeedback -framework IOKit")
46 set(CMAKE_EXE_LINKER_FLAGS "${CMAKE_EXE_LINKER_FLAGS}" PARENT_SCOPE)
47endif()
48
49if(NOT SDLMAIN_LIBRARY)
50 set(SDLMAIN_LIBRARY "")
51endif()
52
53set(CPACK_DEBIAN_PACKAGE_DEPENDS "${CPACK_DEBIAN_PACKAGE_DEPENDS},libsdl${SDL_VERSION_DEBIAN}" PARENT_SCOPE)
54
55file(GLOB PLATFORM_SRC ${CMAKE_SOURCE_DIR}/src/platform/sdl/sdl-*.c)
56set(PLATFORM_LIBRARY ${SDL_LIBRARY} ${SDLMAIN_LIBRARY} ${PIXMAN-1_LIBRARIES})
57include_directories(${CMAKE_SOURCE_DIR}/src/platform/sdl ${PIXMAN-1_INCLUDE_DIRS} ${SDL_INCLUDE_DIR})
58
59set(SDL_INCLUDE_DIR "${SDL_INCLUDE_DIR}" PARENT_SCOPE)
60set(SDL_LIBRARY "${SDL_LIBRARY}" PARENT_SCOPE)
61set(SDLMAIN_LIBRARY "${SDLMAIN_LIBRARY}" PARENT_SCOPE)
62
63set(MAIN_SRC ${CMAKE_SOURCE_DIR}/src/platform/sdl/main.c)
64
65if(BUILD_RASPI)
66 add_definitions(-DBUILD_RASPI)
67 list(APPEND PLATFORM_SRC ${CMAKE_SOURCE_DIR}/src/platform/opengl/gles2.c ${CMAKE_SOURCE_DIR}/src/platform/sdl/gl-common.c ${CMAKE_SOURCE_DIR}/src/platform/sdl/rpi-common.c)
68 list(APPEND MAIN_SRC ${CMAKE_SOURCE_DIR}/src/platform/sdl/gles2-sdl.c)
69 set(OPENGLES2_LIBRARY "-lEGL -lGLESv2 -lbcm_host")
70 set(BUILD_GLES2 ON CACHE BOOL "Using OpenGL|ES 2" FORCE)
71 set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -fgnu89-inline")
72 add_executable(${BINARY_NAME}-rpi ${PLATFORM_SRC} ${MAIN_SRC})
73 set_target_properties(${BINARY_NAME}-rpi PROPERTIES COMPILE_DEFINITIONS "${FEATURE_DEFINES};${FUNCTION_DEFINES}")
74 target_link_libraries(${BINARY_NAME}-rpi ${BINARY_NAME} ${PLATFORM_LIBRARY} ${OPENGLES2_LIBRARY})
75 install(TARGETS ${BINARY_NAME}-rpi DESTINATION ${CMAKE_INSTALL_BINDIR} COMPONENT ${BINARY_NAME}-rpi)
76 unset(OPENGLES2_INCLUDE_DIR CACHE) # Clear NOTFOUND
77endif()
78
79if(BUILD_PANDORA)
80 list(APPEND MAIN_SRC ${CMAKE_SOURCE_DIR}/src/platform/sdl/pandora-sdl.c)
81else()
82 if(BUILD_GL)
83 list(APPEND MAIN_SRC ${CMAKE_SOURCE_DIR}/src/platform/sdl/gl-sdl.c)
84 list(APPEND PLATFORM_SRC ${CMAKE_SOURCE_DIR}/src/platform/sdl/gl-common.c)
85 endif()
86 if(BUILD_GLES2)
87 list(APPEND MAIN_SRC ${CMAKE_SOURCE_DIR}/src/platform/sdl/gles2-sdl.c)
88 list(APPEND PLATFORM_SRC ${CMAKE_SOURCE_DIR}/src/platform/sdl/gl-common.c)
89 include_directories(${OPENGLES2_INCLUDE_DIR})
90 endif()
91 if(NOT BUILD_GL AND NOT BUILD_GLES2)
92 if(SDL_VERSION EQUAL "2")
93 list(APPEND MAIN_SRC ${CMAKE_SOURCE_DIR}/src/platform/sdl/sw-sdl2.c)
94 else()
95 list(APPEND MAIN_SRC ${CMAKE_SOURCE_DIR}/src/platform/sdl/sw-sdl1.c)
96 endif()
97 endif()
98endif()
99
100if(ENABLE_SCRIPTING)
101 if(BUILD_PYTHON)
102 list(APPEND PLATFORM_LIBRARY ${BINARY_NAME}-pylib)
103 endif()
104endif()
105
106add_executable(${BINARY_NAME}-sdl WIN32 ${PLATFORM_SRC} ${MAIN_SRC})
107set_target_properties(${BINARY_NAME}-sdl PROPERTIES COMPILE_DEFINITIONS "${FEATURE_DEFINES};${FUNCTION_DEFINES}")
108target_link_libraries(${BINARY_NAME}-sdl ${BINARY_NAME} ${PLATFORM_LIBRARY} ${OPENGL_LIBRARY} ${OPENGLES2_LIBRARY})
109if(NOT WIN32)
110 set_target_properties(${BINARY_NAME}-sdl PROPERTIES OUTPUT_NAME ${BINARY_NAME})
111endif()
112if (WIN32 AND MSVC)
113 set_target_properties(${BINARY_NAME}-sdl PROPERTIES LINK_FLAGS "/SUBSYSTEM:CONSOLE")
114endif()
115install(TARGETS ${BINARY_NAME}-sdl DESTINATION ${CMAKE_INSTALL_BINDIR} COMPONENT ${BINARY_NAME}-sdl)
116if(UNIX)
117 install(FILES ${CMAKE_SOURCE_DIR}/doc/mgba.6 DESTINATION ${MANDIR}/man6 COMPONENT ${BINARY_NAME}-sdl)
118endif()
119
120if(DISTBUILD AND CMAKE_BUILD_TYPE STREQUAL "RelWithDebInfo")
121 if(NOT APPLE)
122 add_custom_command(TARGET ${BINARY_NAME}-sdl POST_BUILD COMMAND "${OBJCOPY}" --only-keep-debug "$<TARGET_FILE:${BINARY_NAME}-sdl>" "$<TARGET_FILE:${BINARY_NAME}-sdl>.dSYM")
123 add_custom_command(TARGET ${BINARY_NAME}-sdl POST_BUILD COMMAND "${STRIP}" -S "$<TARGET_FILE:${BINARY_NAME}-sdl>")
124 install(FILES "$<TARGET_FILE:${BINARY_NAME}-sdl>.dSYM" DESTINATION ${CMAKE_INSTALL_BINDIR} COMPONENT ${BINARY_NAME}-sdl-dbg)
125 endif()
126endif()