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 configure_file(${CMAKE_SOURCE_DIR}/res/mgba.rc.in ${CMAKE_BINARY_DIR}/res/mgba.rc)
111 list(APPEND RESOURCES ${CMAKE_BINARY_DIR}/res/mgba.rc)
112endif()
113add_executable(${BINARY_NAME}-qt WIN32 MACOSX_BUNDLE main.cpp ${CMAKE_SOURCE_DIR}/res/mgba.icns ${SOURCE_FILES} ${PLATFORM_SRC} ${UI_FILES} ${AUDIO_SRC} ${RESOURCES})
114set_target_properties(${BINARY_NAME}-qt PROPERTIES MACOSX_BUNDLE_INFO_PLIST ${CMAKE_SOURCE_DIR}/res/info.plist.in COMPILE_DEFINITIONS "${FEATURE_DEFINES}")
115
116list(APPEND QT_LIBRARIES Qt5::Widgets Qt5::OpenGL)
117target_link_libraries(${BINARY_NAME}-qt ${PLATFORM_LIBRARY} ${OPENGL_LIBRARY} ${BINARY_NAME} ${QT_LIBRARIES})
118
119install(TARGETS ${BINARY_NAME}-qt
120 RUNTIME DESTINATION bin COMPONENT ${BINARY_NAME}-qt
121 BUNDLE DESTINATION Applications COMPONENT ${BINARY_NAME}-qt)
122if(APPLE OR WIN32)
123 set_target_properties(${BINARY_NAME}-qt PROPERTIES OUTPUT_NAME ${PROJECT_NAME})
124endif()
125if(APPLE)
126 set(DEPLOY_OPTIONS -p platforms/libqcocoa.dylib,audio/libqtaudio_coreaudio.dylib)
127 if(NOT CMAKE_INSTALL_NAME_TOOL EQUAL "install_name_tool")
128 set(DEPLOY_OPTIONS ${DEPLOY_OPTIONS} -I ${CMAKE_INSTALL_NAME_TOOL})
129 endif()
130 if(DEFINED CMAKE_OTOOL AND NOT CMAKE_OTOOL EQUAL "otool")
131 set(DEPLOY_OPTIONS ${DEPLOY_OPTIONS} -O ${CMAKE_OTOOL})
132 endif()
133 if(DEFINED CROSS_ROOT)
134 set(DEPLOY_OPTIONS ${DEPLOY_OPTIONS} -R ${CROSS_ROOT})
135 endif()
136 add_custom_command(TARGET ${BINARY_NAME}-qt POST_BUILD COMMAND ${CMAKE_SOURCE_DIR}/tools/deploy-mac.py ${DEPLOY_OPTIONS} ${PROJECT_NAME}.app)
137endif()