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 DisplayGL.cpp
45 DisplayQt.cpp
46 GBAApp.cpp
47 GBAKeyEditor.cpp
48 GIFView.cpp
49 GameController.cpp
50 GamepadAxisEvent.cpp
51 GamepadButtonEvent.cpp
52 InputController.cpp
53 KeyEditor.cpp
54 LoadSaveState.cpp
55 LogView.cpp
56 MultiplayerController.cpp
57 OverrideView.cpp
58 SavestateButton.cpp
59 SensorView.cpp
60 SettingsView.cpp
61 ShortcutController.cpp
62 ShortcutView.cpp
63 Window.cpp
64 VFileDevice.cpp
65 VideoView.cpp)
66
67qt5_wrap_ui(UI_FILES
68 CheatsView.ui
69 GIFView.ui
70 LoadSaveState.ui
71 LogView.ui
72 OverrideView.ui
73 SensorView.ui
74 SettingsView.ui
75 ShortcutView.ui
76 VideoView.ui)
77
78set(QT_LIBRARIES)
79set(CPACK_DEBIAN_PACKAGE_DEPENDS "${CPACK_DEBIAN_PACKAGE_DEPENDS},libqt5widgets5,libqt5opengl5" PARENT_SCOPE)
80
81set(AUDIO_SRC)
82if(BUILD_SDL)
83 list(APPEND AUDIO_SRC AudioProcessorSDL.cpp)
84endif()
85
86if(Qt5Multimedia_FOUND)
87 list(APPEND AUDIO_SRC
88 AudioProcessorQt.cpp
89 AudioDevice.cpp)
90 list(APPEND QT_LIBRARIES Qt5::Multimedia)
91 add_definitions(-DBUILD_QT_MULTIMEDIA)
92 set(CPACK_DEBIAN_PACKAGE_DEPENDS "${CPACK_DEBIAN_PACKAGE_DEPENDS},libqt5multimedia5" PARENT_SCOPE)
93endif()
94
95if(NOT AUDIO_SRC)
96 message(WARNING "No supported audio modules found")
97 set(BUILD_QT OFF PARENT_SCOPE)
98 return()
99endif()
100
101if(USE_GDB_STUB)
102 list(APPEND PLATFORM_SRC GDBController.cpp GDBWindow.cpp)
103endif()
104set(MACOSX_BUNDLE_ICON_FILE mgba.icns)
105set(MACOSX_BUNDLE_BUNDLE_VERSION ${LIB_VERSION_STRING})
106set(MACOSX_BUNDLE_BUNDLE_NAME ${PROJECT_NAME})
107set(MACOSX_BUNDLE_GUI_IDENTIFIER com.endrift.${BINARY_NAME}-qt)
108set_source_files_properties(${CMAKE_SOURCE_DIR}/res/mgba.icns PROPERTIES MACOSX_PACKAGE_LOCATION Resources)
109
110qt5_add_resources(RESOURCES resources.qrc)
111if(WIN32)
112 configure_file(${CMAKE_SOURCE_DIR}/res/mgba.rc.in ${CMAKE_BINARY_DIR}/res/mgba.rc)
113 list(APPEND RESOURCES ${CMAKE_BINARY_DIR}/res/mgba.rc)
114endif()
115add_executable(${BINARY_NAME}-qt WIN32 MACOSX_BUNDLE main.cpp ${CMAKE_SOURCE_DIR}/res/mgba.icns ${SOURCE_FILES} ${PLATFORM_SRC} ${UI_FILES} ${AUDIO_SRC} ${RESOURCES})
116set_target_properties(${BINARY_NAME}-qt PROPERTIES MACOSX_BUNDLE_INFO_PLIST ${CMAKE_SOURCE_DIR}/res/info.plist.in COMPILE_DEFINITIONS "${FEATURE_DEFINES}")
117
118list(APPEND QT_LIBRARIES Qt5::Widgets Qt5::OpenGL)
119target_link_libraries(${BINARY_NAME}-qt ${PLATFORM_LIBRARY} ${OPENGL_LIBRARY} ${BINARY_NAME} ${QT_LIBRARIES})
120
121install(TARGETS ${BINARY_NAME}-qt
122 RUNTIME DESTINATION bin COMPONENT ${BINARY_NAME}-qt
123 BUNDLE DESTINATION Applications COMPONENT ${BINARY_NAME}-qt)
124if(APPLE OR WIN32)
125 set_target_properties(${BINARY_NAME}-qt PROPERTIES OUTPUT_NAME ${PROJECT_NAME})
126endif()
127if(APPLE)
128 set(DEPLOY_OPTIONS -p platforms/libqcocoa.dylib,audio/libqtaudio_coreaudio.dylib)
129 if(NOT CMAKE_INSTALL_NAME_TOOL EQUAL "install_name_tool")
130 set(DEPLOY_OPTIONS ${DEPLOY_OPTIONS} -I ${CMAKE_INSTALL_NAME_TOOL})
131 endif()
132 if(DEFINED CMAKE_OTOOL AND NOT CMAKE_OTOOL EQUAL "otool")
133 set(DEPLOY_OPTIONS ${DEPLOY_OPTIONS} -O ${CMAKE_OTOOL})
134 endif()
135 if(DEFINED CROSS_ROOT)
136 set(DEPLOY_OPTIONS ${DEPLOY_OPTIONS} -R ${CROSS_ROOT})
137 endif()
138 add_custom_command(TARGET ${BINARY_NAME}-qt POST_BUILD COMMAND ${CMAKE_SOURCE_DIR}/tools/deploy-mac.py ${DEPLOY_OPTIONS} ${PROJECT_NAME}.app)
139endif()