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 OverrideView.cpp
55 SavestateButton.cpp
56 SensorView.cpp
57 SettingsView.cpp
58 ShortcutController.cpp
59 ShortcutView.cpp
60 Window.cpp
61 VFileDevice.cpp
62 VideoView.cpp)
63
64qt5_wrap_ui(UI_FILES
65 CheatsView.ui
66 GIFView.ui
67 LoadSaveState.ui
68 LogView.ui
69 OverrideView.ui
70 SensorView.ui
71 SettingsView.ui
72 ShortcutView.ui
73 VideoView.ui)
74
75set(QT_LIBRARIES)
76set(CPACK_DEBIAN_PACKAGE_DEPENDS "${CPACK_DEBIAN_PACKAGE_DEPENDS},libqt5widgets5,libqt5opengl5" PARENT_SCOPE)
77
78set(AUDIO_SRC)
79if(BUILD_SDL)
80 list(APPEND AUDIO_SRC AudioProcessorSDL.cpp)
81endif()
82
83if(Qt5Multimedia_FOUND)
84 list(APPEND AUDIO_SRC
85 AudioProcessorQt.cpp
86 AudioDevice.cpp)
87 list(APPEND QT_LIBRARIES Qt5::Multimedia)
88 add_definitions(-DBUILD_QT_MULTIMEDIA)
89 set(CPACK_DEBIAN_PACKAGE_DEPENDS "${CPACK_DEBIAN_PACKAGE_DEPENDS},libqt5multimedia5" PARENT_SCOPE)
90endif()
91
92if(NOT AUDIO_SRC)
93 message(WARNING "No supported audio modules found")
94 set(BUILD_QT OFF PARENT_SCOPE)
95 return()
96endif()
97
98if(USE_GDB_STUB)
99 list(APPEND PLATFORM_SRC GDBController.cpp GDBWindow.cpp)
100endif()
101set(MACOSX_BUNDLE_ICON_FILE mgba.icns)
102set(MACOSX_BUNDLE_BUNDLE_VERSION ${LIB_VERSION_STRING})
103set(MACOSX_BUNDLE_BUNDLE_NAME ${PROJECT_NAME})
104set(MACOSX_BUNDLE_GUI_IDENTIFIER com.endrift.${BINARY_NAME}-qt)
105set_source_files_properties(${CMAKE_SOURCE_DIR}/res/mgba.icns PROPERTIES MACOSX_PACKAGE_LOCATION Resources)
106
107qt5_add_resources(RESOURCES resources.qrc)
108if(WIN32)
109 list(APPEND RESOURCES ${CMAKE_SOURCE_DIR}/res/mgba.rc)
110endif()
111add_executable(${BINARY_NAME}-qt WIN32 MACOSX_BUNDLE main.cpp ${CMAKE_SOURCE_DIR}/res/mgba.icns ${SOURCE_FILES} ${PLATFORM_SRC} ${UI_FILES} ${AUDIO_SRC} ${RESOURCES})
112target_compile_definitions(${BINARY_NAME}-qt PRIVATE ${FEATURE_DEFINES})
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()