all repos — mgba @ 7cc903a217ebad9f1fff885a28cd973639a8d66e

mGBA Game Boy Advance Emulator

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