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")
8 if (CMAKE_CXX_COMPILER_ID MATCHES "Clang")
9 set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -stdlib=libc++")
10 endif()
11endif()
12
13set(PLATFORM_SRC)
14
15if(BUILD_SDL)
16 if(NOT SDL_FOUND AND NOT SDL2_FOUND)
17 find_package(SDL 1.2 REQUIRED)
18 endif()
19 if(SDL2_FOUND)
20 link_directories(${SDL2_LIBDIR})
21 endif()
22 list(APPEND PLATFORM_LIBRARY ${SDL_LIBRARY} ${SDLMAIN_LIBRARY})
23 list(APPEND PLATFORM_SRC ${PLATFORM_SRC} ${CMAKE_SOURCE_DIR}/src/platform/sdl/sdl-events.c ${CMAKE_SOURCE_DIR}/src/platform/sdl/sdl-audio.c)
24 include_directories(${SDL_INCLUDE_DIR} ${CMAKE_SOURCE_DIR}/src/platform/sdl)
25endif()
26
27set(CMAKE_AUTOMOC ON)
28set(CMAKE_INCLUDE_CURRENT_DIR ON)
29
30find_package(Qt5Multimedia)
31find_package(Qt5OpenGL)
32find_package(Qt5Widgets)
33find_package(OpenGL)
34
35if(NOT Qt5OpenGL_FOUND OR NOT Qt5Widgets_FOUND OR NOT OPENGL_FOUND)
36 message(WARNING "Cannot find Qt modules")
37 set(BUILD_QT OFF PARENT_SCOPE)
38 return()
39endif()
40
41set(SOURCE_FILES
42 AudioProcessor.cpp
43 CheatsModel.cpp
44 CheatsView.cpp
45 ConfigController.cpp
46 Display.cpp
47 DisplayGL.cpp
48 DisplayQt.cpp
49 GBAApp.cpp
50 GBAKeyEditor.cpp
51 GIFView.cpp
52 GameController.cpp
53 GamepadAxisEvent.cpp
54 GamepadButtonEvent.cpp
55 InputController.cpp
56 KeyEditor.cpp
57 LoadSaveState.cpp
58 LogView.cpp
59 MultiplayerController.cpp
60 OverrideView.cpp
61 PaletteView.cpp
62 SavestateButton.cpp
63 SensorView.cpp
64 SettingsView.cpp
65 ShortcutController.cpp
66 ShortcutView.cpp
67 Swatch.cpp
68 Window.cpp
69 VFileDevice.cpp
70 VideoView.cpp)
71
72qt5_wrap_ui(UI_FILES
73 CheatsView.ui
74 GIFView.ui
75 LoadSaveState.ui
76 LogView.ui
77 OverrideView.ui
78 PaletteView.ui
79 SensorView.ui
80 SettingsView.ui
81 ShortcutView.ui
82 VideoView.ui)
83
84set(QT_LIBRARIES)
85set(CPACK_DEBIAN_PACKAGE_DEPENDS "${CPACK_DEBIAN_PACKAGE_DEPENDS},libqt5widgets5,libqt5opengl5")
86
87set(AUDIO_SRC)
88if(BUILD_SDL)
89 list(APPEND AUDIO_SRC AudioProcessorSDL.cpp)
90endif()
91
92if(Qt5Multimedia_FOUND)
93 list(APPEND AUDIO_SRC
94 AudioProcessorQt.cpp
95 AudioDevice.cpp)
96 list(APPEND QT_LIBRARIES Qt5::Multimedia)
97 add_definitions(-DBUILD_QT_MULTIMEDIA)
98 set(CPACK_DEBIAN_PACKAGE_DEPENDS "${CPACK_DEBIAN_PACKAGE_DEPENDS},libqt5multimedia5")
99endif()
100
101if(NOT AUDIO_SRC)
102 message(WARNING "No supported audio modules found")
103 set(BUILD_QT OFF PARENT_SCOPE)
104 return()
105endif()
106
107if(USE_GDB_STUB)
108 list(APPEND PLATFORM_SRC GDBController.cpp GDBWindow.cpp)
109endif()
110set(MACOSX_BUNDLE_ICON_FILE mgba.icns)
111set(MACOSX_BUNDLE_BUNDLE_VERSION ${LIB_VERSION_STRING})
112set(MACOSX_BUNDLE_BUNDLE_NAME ${PROJECT_NAME})
113set(MACOSX_BUNDLE_GUI_IDENTIFIER com.endrift.${BINARY_NAME}-qt)
114set_source_files_properties(${CMAKE_SOURCE_DIR}/res/mgba.icns PROPERTIES MACOSX_PACKAGE_LOCATION Resources)
115
116qt5_add_resources(RESOURCES resources.qrc)
117if(WIN32)
118 configure_file(${CMAKE_SOURCE_DIR}/res/mgba.rc.in ${CMAKE_BINARY_DIR}/res/mgba.rc)
119 list(APPEND RESOURCES ${CMAKE_BINARY_DIR}/res/mgba.rc)
120endif()
121add_executable(${BINARY_NAME}-qt WIN32 MACOSX_BUNDLE main.cpp ${CMAKE_SOURCE_DIR}/res/mgba.icns ${SOURCE_FILES} ${PLATFORM_SRC} ${UI_FILES} ${AUDIO_SRC} ${RESOURCES})
122set_target_properties(${BINARY_NAME}-qt PROPERTIES MACOSX_BUNDLE_INFO_PLIST ${CMAKE_SOURCE_DIR}/res/info.plist.in COMPILE_DEFINITIONS "${FEATURE_DEFINES}")
123
124list(APPEND QT_LIBRARIES Qt5::Widgets Qt5::OpenGL)
125target_link_libraries(${BINARY_NAME}-qt ${PLATFORM_LIBRARY} ${OPENGL_LIBRARY} ${BINARY_NAME} ${QT_LIBRARIES})
126set(CPACK_DEBIAN_PACKAGE_DEPENDS "${CPACK_DEBIAN_PACKAGE_DEPENDS}" PARENT_SCOPE)
127
128install(TARGETS ${BINARY_NAME}-qt
129 RUNTIME DESTINATION bin COMPONENT ${BINARY_NAME}-qt
130 BUNDLE DESTINATION Applications COMPONENT ${BINARY_NAME}-qt)
131if(APPLE OR WIN32)
132 set_target_properties(${BINARY_NAME}-qt PROPERTIES OUTPUT_NAME ${PROJECT_NAME})
133endif()
134if(APPLE)
135 set(DEPLOY_OPTIONS -p platforms/libqcocoa.dylib,audio/libqtaudio_coreaudio.dylib)
136 if(NOT CMAKE_INSTALL_NAME_TOOL EQUAL "install_name_tool")
137 set(DEPLOY_OPTIONS ${DEPLOY_OPTIONS} -I ${CMAKE_INSTALL_NAME_TOOL})
138 endif()
139 if(DEFINED CMAKE_OTOOL AND NOT CMAKE_OTOOL EQUAL "otool")
140 set(DEPLOY_OPTIONS ${DEPLOY_OPTIONS} -O ${CMAKE_OTOOL})
141 endif()
142 if(DEFINED CROSS_ROOT)
143 set(DEPLOY_OPTIONS ${DEPLOY_OPTIONS} -R ${CROSS_ROOT})
144 endif()
145 add_custom_command(TARGET ${BINARY_NAME}-qt POST_BUILD COMMAND ${CMAKE_SOURCE_DIR}/tools/deploy-mac.py ${DEPLOY_OPTIONS} ${PROJECT_NAME}.app)
146endif()