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)
77if(BUILD_SDL)
78 list(APPEND SOURCE_FILES AudioProcessorSDL.cpp)
79elseif(Qt5Multimedia_FOUND)
80 list(APPEND SOURCE_FILES
81 AudioProcessorQt.cpp
82 AudioDevice.cpp)
83 list(APPEND QT_LIBRARIES Qt5::Multimedia)
84 set(CPACK_DEBIAN_PACKAGE_DEPENDS "${CPACK_DEBIAN_PACKAGE_DEPENDS},libqt5multimedia5" PARENT_SCOPE)
85else()
86 message(WARNING "No supported audio modules found")
87 set(BUILD_QT OFF PARENT_SCOPE)
88 return()
89endif()
90
91if(USE_GDB_STUB)
92 list(APPEND PLATFORM_SRC GDBController.cpp GDBWindow.cpp)
93endif()
94set(MACOSX_BUNDLE_ICON_FILE mgba.icns)
95set(MACOSX_BUNDLE_BUNDLE_VERSION ${LIB_VERSION_STRING})
96set(MACOSX_BUNDLE_BUNDLE_NAME ${PROJECT_NAME})
97set(MACOSX_BUNDLE_GUI_IDENTIFIER com.endrift.${BINARY_NAME}-qt)
98set_source_files_properties(${CMAKE_SOURCE_DIR}/res/mgba.icns PROPERTIES MACOSX_PACKAGE_LOCATION Resources)
99
100qt5_add_resources(RESOURCES resources.qrc)
101if(WIN32)
102 list(APPEND RESOURCES ${CMAKE_SOURCE_DIR}/res/mgba.rc)
103endif()
104add_executable(${BINARY_NAME}-qt WIN32 MACOSX_BUNDLE main.cpp ${CMAKE_SOURCE_DIR}/res/mgba.icns ${SOURCE_FILES} ${PLATFORM_SRC} ${UI_FILES} ${RESOURCES})
105set_target_properties(${BINARY_NAME}-qt PROPERTIES MACOSX_BUNDLE_INFO_PLIST ${CMAKE_SOURCE_DIR}/res/info.plist.in)
106
107list(APPEND QT_LIBRARIES Qt5::Widgets Qt5::OpenGL)
108target_link_libraries(${BINARY_NAME}-qt ${PLATFORM_LIBRARY} ${OPENGL_LIBRARY} ${BINARY_NAME} ${QT_LIBRARIES})
109
110install(TARGETS ${BINARY_NAME}-qt
111 RUNTIME DESTINATION bin COMPONENT ${BINARY_NAME}-qt
112 BUNDLE DESTINATION Applications COMPONENT ${BINARY_NAME}-qt)
113if(APPLE OR WIN32)
114 set_target_properties(${BINARY_NAME}-qt PROPERTIES OUTPUT_NAME ${PROJECT_NAME})
115endif()
116if(APPLE)
117 set(DEPLOY_OPTIONS -p platforms/libqcocoa.dylib,audio/libqtaudio_coreaudio.dylib)
118 if(NOT CMAKE_INSTALL_NAME_TOOL EQUAL "install_name_tool")
119 set(DEPLOY_OPTIONS ${DEPLOY_OPTIONS} -I ${CMAKE_INSTALL_NAME_TOOL})
120 endif()
121 if(DEFINED CMAKE_OTOOL AND NOT CMAKE_OTOOL EQUAL "otool")
122 set(DEPLOY_OPTIONS ${DEPLOY_OPTIONS} -O ${CMAKE_OTOOL})
123 endif()
124 if(DEFINED CROSS_ROOT)
125 set(DEPLOY_OPTIONS ${DEPLOY_OPTIONS} -R ${CROSS_ROOT})
126 endif()
127 add_custom_command(TARGET ${BINARY_NAME}-qt POST_BUILD COMMAND ${CMAKE_SOURCE_DIR}/tools/deploy-mac.py ${DEPLOY_OPTIONS} ${PROJECT_NAME}.app)
128endif()