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 GBAApp.cpp
48 GBAKeyEditor.cpp
49 GIFView.cpp
50 GameController.cpp
51 GamepadAxisEvent.cpp
52 GamepadButtonEvent.cpp
53 InputController.cpp
54 KeyEditor.cpp
55 LoadSaveState.cpp
56 LogView.cpp
57 MultiplayerController.cpp
58 OverrideView.cpp
59 SavestateButton.cpp
60 SensorView.cpp
61 SettingsView.cpp
62 ShortcutController.cpp
63 ShortcutView.cpp
64 Window.cpp
65 VFileDevice.cpp
66 VideoView.cpp)
67
68qt5_wrap_ui(UI_FILES
69 CheatsView.ui
70 GIFView.ui
71 LoadSaveState.ui
72 LogView.ui
73 OverrideView.ui
74 SensorView.ui
75 SettingsView.ui
76 ShortcutView.ui
77 VideoView.ui)
78
79set(QT_LIBRARIES)
80set(CPACK_DEBIAN_PACKAGE_DEPENDS "${CPACK_DEBIAN_PACKAGE_DEPENDS},libqt5widgets5,libqt5opengl5" PARENT_SCOPE)
81
82set(AUDIO_SRC)
83if(BUILD_SDL)
84 list(APPEND AUDIO_SRC AudioProcessorSDL.cpp)
85endif()
86
87if(Qt5Multimedia_FOUND)
88 list(APPEND AUDIO_SRC
89 AudioProcessorQt.cpp
90 AudioDevice.cpp)
91 list(APPEND QT_LIBRARIES Qt5::Multimedia)
92 add_definitions(-DBUILD_QT_MULTIMEDIA)
93 set(CPACK_DEBIAN_PACKAGE_DEPENDS "${CPACK_DEBIAN_PACKAGE_DEPENDS},libqt5multimedia5" PARENT_SCOPE)
94endif()
95
96if(NOT AUDIO_SRC)
97 message(WARNING "No supported audio modules found")
98 set(BUILD_QT OFF PARENT_SCOPE)
99 return()
100endif()
101
102if(USE_GDB_STUB)
103 list(APPEND PLATFORM_SRC GDBController.cpp GDBWindow.cpp)
104endif()
105set(MACOSX_BUNDLE_ICON_FILE mgba.icns)
106set(MACOSX_BUNDLE_BUNDLE_VERSION ${LIB_VERSION_STRING})
107set(MACOSX_BUNDLE_BUNDLE_NAME ${PROJECT_NAME})
108set(MACOSX_BUNDLE_GUI_IDENTIFIER com.endrift.${BINARY_NAME}-qt)
109set_source_files_properties(${CMAKE_SOURCE_DIR}/res/mgba.icns PROPERTIES MACOSX_PACKAGE_LOCATION Resources)
110
111qt5_add_resources(RESOURCES resources.qrc)
112if(WIN32)
113 configure_file(${CMAKE_SOURCE_DIR}/res/mgba.rc.in ${CMAKE_BINARY_DIR}/res/mgba.rc)
114 list(APPEND RESOURCES ${CMAKE_BINARY_DIR}/res/mgba.rc)
115endif()
116add_executable(${BINARY_NAME}-qt WIN32 MACOSX_BUNDLE main.cpp ${CMAKE_SOURCE_DIR}/res/mgba.icns ${SOURCE_FILES} ${PLATFORM_SRC} ${UI_FILES} ${AUDIO_SRC} ${RESOURCES})
117set_target_properties(${BINARY_NAME}-qt PROPERTIES MACOSX_BUNDLE_INFO_PLIST ${CMAKE_SOURCE_DIR}/res/info.plist.in COMPILE_DEFINITIONS "${FEATURE_DEFINES}")
118
119list(APPEND QT_LIBRARIES Qt5::Widgets Qt5::OpenGL)
120target_link_libraries(${BINARY_NAME}-qt ${PLATFORM_LIBRARY} ${OPENGL_LIBRARY} ${BINARY_NAME} ${QT_LIBRARIES})
121
122install(TARGETS ${BINARY_NAME}-qt
123 RUNTIME DESTINATION bin COMPONENT ${BINARY_NAME}-qt
124 BUNDLE DESTINATION Applications COMPONENT ${BINARY_NAME}-qt)
125if(APPLE OR WIN32)
126 set_target_properties(${BINARY_NAME}-qt PROPERTIES OUTPUT_NAME ${PROJECT_NAME})
127endif()
128if(APPLE)
129 set(DEPLOY_OPTIONS -p platforms/libqcocoa.dylib,audio/libqtaudio_coreaudio.dylib)
130 if(NOT CMAKE_INSTALL_NAME_TOOL EQUAL "install_name_tool")
131 set(DEPLOY_OPTIONS ${DEPLOY_OPTIONS} -I ${CMAKE_INSTALL_NAME_TOOL})
132 endif()
133 if(DEFINED CMAKE_OTOOL AND NOT CMAKE_OTOOL EQUAL "otool")
134 set(DEPLOY_OPTIONS ${DEPLOY_OPTIONS} -O ${CMAKE_OTOOL})
135 endif()
136 if(DEFINED CROSS_ROOT)
137 set(DEPLOY_OPTIONS ${DEPLOY_OPTIONS} -R ${CROSS_ROOT})
138 endif()
139 add_custom_command(TARGET ${BINARY_NAME}-qt POST_BUILD COMMAND ${CMAKE_SOURCE_DIR}/tools/deploy-mac.py ${DEPLOY_OPTIONS} ${PROJECT_NAME}.app)
140endif()