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