src/platform/qt/CMakeLists.txt (view raw)
1cmake_minimum_required(VERSION 2.8.11)
2enable_language(CXX)
3
4set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} --std=c++11")
5
6if(APPLE)
7 set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -mmacosx-version-min=10.7 -stdlib=libc++")
8endif()
9
10set(PLATFORM_SRC)
11
12if(BUILD_SDL)
13 if(NOT SDL_FOUND AND NOT SDL2_FOUND)
14 find_package(SDL 1.2 REQUIRED)
15 endif()
16 if(SDL2_FOUND)
17 link_directories(${SDL2_LIBDIR})
18 endif()
19 list(APPEND PLATFORM_LIBRARY ${SDL_LIBRARY} ${SDLMAIN_LIBRARY})
20 list(APPEND PLATFORM_SRC ${PLATFORM_SRC} ${CMAKE_SOURCE_DIR}/src/platform/sdl/sdl-events.c ${CMAKE_SOURCE_DIR}/src/platform/sdl/sdl-audio.c)
21 include_directories(${SDL_INCLUDE_DIR} ${CMAKE_SOURCE_DIR}/src/platform/sdl)
22endif()
23
24set(CMAKE_AUTOMOC ON)
25set(CMAKE_INCLUDE_CURRENT_DIR ON)
26
27find_package(Qt5Multimedia)
28find_package(Qt5OpenGL)
29find_package(Qt5Widgets)
30find_package(OpenGL)
31
32if(NOT Qt5OpenGL_FOUND OR NOT Qt5Widgets_FOUND OR NOT OPENGL_FOUND)
33 message(WARNING "Cannot find Qt modules")
34 set(BUILD_QT OFF PARENT_SCOPE)
35 return()
36endif()
37
38set(SOURCE_FILES
39 AudioProcessor.cpp
40 CheatsModel.cpp
41 CheatsView.cpp
42 ConfigController.cpp
43 Display.cpp
44 GBAApp.cpp
45 GBAKeyEditor.cpp
46 GIFView.cpp
47 GameController.cpp
48 GamepadAxisEvent.cpp
49 GamepadButtonEvent.cpp
50 InputController.cpp
51 KeyEditor.cpp
52 LoadSaveState.cpp
53 LogView.cpp
54 MultiplayerController.cpp
55 OverrideView.cpp
56 SavestateButton.cpp
57 SensorView.cpp
58 SettingsView.cpp
59 ShortcutController.cpp
60 ShortcutView.cpp
61 Window.cpp
62 VFileDevice.cpp
63 VideoView.cpp)
64
65qt5_wrap_ui(UI_FILES
66 CheatsView.ui
67 GIFView.ui
68 LoadSaveState.ui
69 LogView.ui
70 OverrideView.ui
71 SensorView.ui
72 SettingsView.ui
73 ShortcutView.ui
74 VideoView.ui)
75
76set(QT_LIBRARIES)
77set(CPACK_DEBIAN_PACKAGE_DEPENDS "${CPACK_DEBIAN_PACKAGE_DEPENDS},libqt5widgets5,libqt5opengl5" PARENT_SCOPE)
78
79set(AUDIO_SRC)
80if(BUILD_SDL)
81 list(APPEND AUDIO_SRC AudioProcessorSDL.cpp)
82endif()
83
84if(Qt5Multimedia_FOUND)
85 list(APPEND AUDIO_SRC
86 AudioProcessorQt.cpp
87 AudioDevice.cpp)
88 list(APPEND QT_LIBRARIES Qt5::Multimedia)
89 add_definitions(-DBUILD_QT_MULTIMEDIA)
90 set(CPACK_DEBIAN_PACKAGE_DEPENDS "${CPACK_DEBIAN_PACKAGE_DEPENDS},libqt5multimedia5" PARENT_SCOPE)
91endif()
92
93if(NOT AUDIO_SRC)
94 message(WARNING "No supported audio modules found")
95 set(BUILD_QT OFF PARENT_SCOPE)
96 return()
97endif()
98
99if(USE_GDB_STUB)
100 list(APPEND PLATFORM_SRC GDBController.cpp GDBWindow.cpp)
101endif()
102set(MACOSX_BUNDLE_ICON_FILE mgba.icns)
103set(MACOSX_BUNDLE_BUNDLE_VERSION ${LIB_VERSION_STRING})
104set(MACOSX_BUNDLE_BUNDLE_NAME ${PROJECT_NAME})
105set(MACOSX_BUNDLE_GUI_IDENTIFIER com.endrift.${BINARY_NAME}-qt)
106set_source_files_properties(${CMAKE_SOURCE_DIR}/res/mgba.icns PROPERTIES MACOSX_PACKAGE_LOCATION Resources)
107
108qt5_add_resources(RESOURCES resources.qrc)
109if(WIN32)
110 list(APPEND RESOURCES ${CMAKE_SOURCE_DIR}/res/mgba.rc)
111endif()
112add_executable(${BINARY_NAME}-qt WIN32 MACOSX_BUNDLE main.cpp ${CMAKE_SOURCE_DIR}/res/mgba.icns ${SOURCE_FILES} ${PLATFORM_SRC} ${UI_FILES} ${AUDIO_SRC} ${RESOURCES})
113set_target_properties(${BINARY_NAME}-qt PROPERTIES MACOSX_BUNDLE_INFO_PLIST ${CMAKE_SOURCE_DIR}/res/info.plist.in)
114
115list(APPEND QT_LIBRARIES Qt5::Widgets Qt5::OpenGL)
116target_link_libraries(${BINARY_NAME}-qt ${PLATFORM_LIBRARY} ${OPENGL_LIBRARY} ${BINARY_NAME} ${QT_LIBRARIES})
117
118install(TARGETS ${BINARY_NAME}-qt
119 RUNTIME DESTINATION bin COMPONENT ${BINARY_NAME}-qt
120 BUNDLE DESTINATION Applications COMPONENT ${BINARY_NAME}-qt)
121if(APPLE OR WIN32)
122 set_target_properties(${BINARY_NAME}-qt PROPERTIES OUTPUT_NAME ${PROJECT_NAME})
123endif()
124if(APPLE)
125 set(DEPLOY_OPTIONS -p platforms/libqcocoa.dylib,audio/libqtaudio_coreaudio.dylib)
126 if(NOT CMAKE_INSTALL_NAME_TOOL EQUAL "install_name_tool")
127 set(DEPLOY_OPTIONS ${DEPLOY_OPTIONS} -I ${CMAKE_INSTALL_NAME_TOOL})
128 endif()
129 if(DEFINED CMAKE_OTOOL AND NOT CMAKE_OTOOL EQUAL "otool")
130 set(DEPLOY_OPTIONS ${DEPLOY_OPTIONS} -O ${CMAKE_OTOOL})
131 endif()
132 if(DEFINED CROSS_ROOT)
133 set(DEPLOY_OPTIONS ${DEPLOY_OPTIONS} -R ${CROSS_ROOT})
134 endif()
135 add_custom_command(TARGET ${BINARY_NAME}-qt POST_BUILD COMMAND ${CMAKE_SOURCE_DIR}/tools/deploy-mac.py ${DEPLOY_OPTIONS} ${PROJECT_NAME}.app)
136endif()