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 (SDL2_FOUND)
7 set(SDL_INCLUDE_DIR ${SDL2_INCLUDE_DIRS})
8 set(SDL_LIBRARY ${SDL2_LIBRARIES})
9 set(SDLMAIN_LIBRARY "")
10 link_directories(${SDL2_LIBDIR})
11 set(SDL_VERSION_DEBIAN "2-2.0-0")
12 endif()
13endif()
14
15if(SDL_VERSION EQUAL "1.2" OR NOT SDL2_FOUND)
16 find_package(SDL 1.2)
17 set(SDL_VERSION "1.2" PARENT_SCOPE)
18 set(SDL_VERSION_DEBIAN "1.2debian")
19 set(USE_PIXMAN ON)
20endif()
21
22if (NOT SDL2_FOUND AND NOT SDL_FOUND)
23 set(BUILD_SDL OFF PARENT_SCOPE)
24 return()
25endif()
26
27add_definitions(-DBUILD_SDL)
28
29find_feature(USE_PIXMAN "pixman-1")
30if(USE_PIXMAN)
31 add_definitions(-DUSE_PIXMAN)
32 set(CPACK_DEBIAN_PACKAGE_DEPENDS "${CPACK_DEBIAN_PACKAGE_DEPENDS},libpixman-1.0" PARENT_SCOPE)
33endif()
34
35if(WIN32)
36 list(APPEND SDL_LIBRARY imm32 version winmm)
37elseif(APPLE)
38 set(CMAKE_EXE_LINKER_FLAGS "${CMAKE_EXE_LINKER_FLAGS} -framework AppKit -framework AudioUnit -framework Carbon -framework CoreAudio -framework ForceFeedback -framework IOKit")
39 set(CMAKE_EXE_LINKER_FLAGS "${CMAKE_EXE_LINKER_FLAGS}" PARENT_SCOPE)
40endif()
41
42if(NOT SDLMAIN_LIBRARY)
43 set(SDLMAIN_LIBRARY "")
44endif()
45
46set(CPACK_DEBIAN_PACKAGE_DEPENDS "${CPACK_DEBIAN_PACKAGE_DEPENDS},libsdl${SDL_VERSION_DEBIAN}" PARENT_SCOPE)
47
48file(GLOB PLATFORM_SRC ${CMAKE_SOURCE_DIR}/src/platform/sdl/sdl-*.c)
49set(PLATFORM_LIBRARY ${SDL_LIBRARY} ${SDLMAIN_LIBRARY} ${PIXMAN-1_LIBRARIES})
50include_directories(${CMAKE_SOURCE_DIR}/src/platform/sdl ${PIXMAN-1_INCLUDE_DIRS} ${SDL_INCLUDE_DIR})
51
52set(SDL_INCLUDE_DIR "${SDL_INCLUDE_DIR}" PARENT_SCOPE)
53set(SDL_LIBRARY "${SDL_LIBRARY}" PARENT_SCOPE)
54set(SDLMAIN_LIBRARY "${SDLMAIN_LIBRARY}" PARENT_SCOPE)
55
56set(MAIN_SRC ${CMAKE_SOURCE_DIR}/src/platform/sdl/main.c)
57
58if(BUILD_RASPI)
59 add_definitions(-DBUILD_RASPI)
60 list(APPEND PLATFORM_SRC ${CMAKE_SOURCE_DIR}/src/platform/opengl/gles2.c ${CMAKE_SOURCE_DIR}/src/platform/sdl/gl-common.c)
61 list(APPEND MAIN_SRC ${CMAKE_SOURCE_DIR}/src/platform/sdl/gles2-sdl.c)
62 set(OPENGLES2_LIBRARY "-lEGL -lGLESv2 -lbcm_host")
63 set(BUILD_GLES2 ON CACHE BOOL "Using OpenGL|ES 2" FORCE)
64 set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -fgnu89-inline")
65 add_executable(${BINARY_NAME}-rpi ${PLATFORM_SRC} ${MAIN_SRC})
66 set_target_properties(${BINARY_NAME}-rpi PROPERTIES COMPILE_DEFINITIONS "${FEATURE_DEFINES};${FUNCTION_DEFINES}")
67 target_link_libraries(${BINARY_NAME}-rpi ${BINARY_NAME} ${PLATFORM_LIBRARY} ${OPENGLES2_LIBRARY})
68 install(TARGETS ${BINARY_NAME}-rpi DESTINATION bin COMPONENT ${BINARY_NAME}-rpi)
69 unset(OPENGLES2_INCLUDE_DIR} CACHE) # Clear NOTFOUND
70endif()
71
72if(BUILD_PANDORA)
73 list(APPEND MAIN_SRC ${CMAKE_SOURCE_DIR}/src/platform/sdl/pandora-sdl.c)
74else()
75 if(BUILD_GL)
76 list(APPEND MAIN_SRC ${CMAKE_SOURCE_DIR}/src/platform/sdl/gl-sdl.c)
77 list(APPEND PLATFORM_SRC ${CMAKE_SOURCE_DIR}/src/platform/opengl/gl.c ${CMAKE_SOURCE_DIR}/src/platform/sdl/gl-common.c)
78 include_directories(${OPENGL_INCLUDE_DIR})
79 endif()
80 if(BUILD_GLES2)
81 list(APPEND MAIN_SRC ${CMAKE_SOURCE_DIR}/src/platform/sdl/gles2-sdl.c)
82 list(APPEND PLATFORM_SRC ${CMAKE_SOURCE_DIR}/src/platform/opengl/gles2.c ${CMAKE_SOURCE_DIR}/src/platform/sdl/gl-common.c)
83 include_directories(${OPENGLES2_INCLUDE_DIR})
84 endif()
85 if(NOT BUILD_GL AND NOT BUILD_GLES2)
86 list(APPEND MAIN_SRC ${CMAKE_SOURCE_DIR}/src/platform/sdl/sw-sdl.c)
87 endif()
88endif()
89
90add_executable(${BINARY_NAME}-sdl WIN32 ${PLATFORM_SRC} ${MAIN_SRC})
91set_target_properties(${BINARY_NAME}-sdl PROPERTIES COMPILE_DEFINITIONS "${FEATURE_DEFINES};${FUNCTION_DEFINES}")
92target_link_libraries(${BINARY_NAME}-sdl ${BINARY_NAME} ${PLATFORM_LIBRARY} ${OPENGL_LIBRARY} ${OPENGLES2_LIBRARY})
93set_target_properties(${BINARY_NAME}-sdl PROPERTIES OUTPUT_NAME ${BINARY_NAME})
94install(TARGETS ${BINARY_NAME}-sdl DESTINATION bin COMPONENT ${BINARY_NAME}-sdl)
95if(UNIX)
96 install(FILES ${CMAKE_SOURCE_DIR}/doc/mgba.6 DESTINATION ${MANDIR}/man6 COMPONENT ${BINARY_NAME}-sdl)
97endif()