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")
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")
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})
121set(CPACK_DEBIAN_PACKAGE_DEPENDS "${CPACK_DEBIAN_PACKAGE_DEPENDS}" PARENT_SCOPE)
122
123install(TARGETS ${BINARY_NAME}-qt
124 RUNTIME DESTINATION bin COMPONENT ${BINARY_NAME}-qt
125 BUNDLE DESTINATION Applications COMPONENT ${BINARY_NAME}-qt)
126if(APPLE OR WIN32)
127 set_target_properties(${BINARY_NAME}-qt PROPERTIES OUTPUT_NAME ${PROJECT_NAME})
128endif()
129if(APPLE)
130 set(DEPLOY_OPTIONS -p platforms/libqcocoa.dylib,audio/libqtaudio_coreaudio.dylib)
131 if(NOT CMAKE_INSTALL_NAME_TOOL EQUAL "install_name_tool")
132 set(DEPLOY_OPTIONS ${DEPLOY_OPTIONS} -I ${CMAKE_INSTALL_NAME_TOOL})
133 endif()
134 if(DEFINED CMAKE_OTOOL AND NOT CMAKE_OTOOL EQUAL "otool")
135 set(DEPLOY_OPTIONS ${DEPLOY_OPTIONS} -O ${CMAKE_OTOOL})
136 endif()
137 if(DEFINED CROSS_ROOT)
138 set(DEPLOY_OPTIONS ${DEPLOY_OPTIONS} -R ${CROSS_ROOT})
139 endif()
140 add_custom_command(TARGET ${BINARY_NAME}-qt POST_BUILD COMMAND ${CMAKE_SOURCE_DIR}/tools/deploy-mac.py ${DEPLOY_OPTIONS} ${PROJECT_NAME}.app)
141endif()