set(QTLIBS Qt5::Network Qt5::Svg Qt5::Widgets)

include_directories(.. shellwidget)
qt5_add_resources(NEOVIM_RCC_SOURCES data.qrc)
if(WIN32)
	set(SRCS_PLATFORM
		app_runtime.cpp
		arguments_qwindowgeometry.cpp
		input_win32.cpp
		printinfo_msgbox.cpp
		)
	if (USE_STATIC_QT)
		add_definitions(-DUSE_STATIC_QT)
		link_directories(${CMAKE_PREFIX_PATH}/share/qt5/plugins/platforms)
		set(QTLIBS ${QTLIBS} Qt5PlatformCompositorSupport qwindows)
	endif()
	set(RES_FILE "data.rc")
	enable_language(RC)
elseif(APPLE)
	set(SRCS_PLATFORM
		app_runtime_mac.cpp
		arguments_qwindowgeometry.cpp
		input_mac.cpp
		printinfo_stdout.cpp
		)
	set(ICON_PATH ${PROJECT_SOURCE_DIR}/third-party/neovim.icns)
	set_source_files_properties(${ICON_PATH} PROPERTIES MACOSX_PACKAGE_LOCATION "Resources")

	set(MACOSX_BUNDLE_INFO_PLIST ${PROJECT_SOURCE_DIR}/cmake/MacOSXBundleInfo.plist.in)
else()
	set(SRCS_PLATFORM
		app_runtime.cpp
		arguments_geometry.cpp
		input_unix.cpp
		printinfo_stdout.cpp
		)
endif()

add_subdirectory(shellwidget)

include(GNUInstallDirs)
set(RUNTIME_PATH )

add_library(neovim-qt-gui
	app.cpp
	errorwidget.cpp
	input.cpp
	mainwindow.cpp
	popupmenu.cpp
	popupmenumodel.cpp
	scrollbar.cpp
	shell.cpp
	treeview.cpp
	${SRCS_PLATFORM}
	${NEOVIM_RCC_SOURCES})
target_link_libraries(neovim-qt-gui ${QTLIBS} qshellwidget neovim-qt)

if(NOT APPLE)
	set_property(SOURCE app_runtime.cpp PROPERTY COMPILE_DEFINITIONS
		NVIM_QT_RUNTIME_PATH="${CMAKE_INSTALL_FULL_DATADIR}/nvim-qt/runtime")
endif()

add_executable(nvim-qt WIN32 MACOSX_BUNDLE main.cpp
	${NEOVIM_RCC_SOURCES}
	${RES_FILE}
	${ICON_PATH})

target_link_libraries(nvim-qt ${QTLIBS} ${MSGPACK_LIBRARIES} neovim-qt-gui)

if(APPLE)
	add_custom_command(TARGET nvim-qt COMMAND ${CMAKE_COMMAND} -E copy_directory
		${CMAKE_CURRENT_SOURCE_DIR}/runtime/
		${CMAKE_RUNTIME_OUTPUT_DIRECTORY}/nvim-qt.app/Contents/Resources/runtime
		COMMENT "Copying runtime into bundle")
#	TODO: Bundle Qt, currently conflicts with brew Qt
#	add_custom_command(TARGET nvim-qt COMMAND macdeployqt
#		ARGS ${CMAKE_RUNTIME_OUTPUT_DIRECTORY}/nvim-qt.app
#		COMMENT "Bundling Qt libraries")
endif()

install(TARGETS nvim-qt DESTINATION ${CMAKE_INSTALL_BINDIR})
if(NOT APPLE)
	install(DIRECTORY runtime
		DESTINATION ${CMAKE_INSTALL_DATADIR}/nvim-qt/)
	install(FILES nvim-qt.desktop DESTINATION ${CMAKE_INSTALL_DATADIR}/applications)
	install(FILES ${CMAKE_SOURCE_DIR}/third-party/neovim.png
			RENAME nvim-qt.png
			DESTINATION ${CMAKE_INSTALL_DATADIR}/icons/hicolor/192x192/apps/)
endif()

if(WIN32 AND NOT CMAKE_CROSSCOMPILING)
	if(Qt5Core_VERSION VERSION_LESS 5.3)
		message(WARNING "Cannot use windeployqt in Qt 5.2 and earlier")
	elseif(NOT DEFINED USE_STATIC_QT)
		include(WinDeployQt)
		WinDeployQt(TARGET nvim-qt COMPILER_RUNTIME INCLUDE_MODULES ${QTLIBS} EXCLUDE_MODULES webkit webkit2)
		install(DIRECTORY ${PROJECT_BINARY_DIR}/windeployqt/
			DESTINATION ${CMAKE_INSTALL_BINDIR})
	endif()
endif()

# Generate help tags
add_custom_command(
	OUTPUT "${CMAKE_CURRENT_SOURCE_DIR}/runtime/doc/tags"
	COMMAND ${NEOVIM_EXEC} -i NONE -u NONE -e --headless
	-c "helptags ${CMAKE_CURRENT_SOURCE_DIR}/runtime/doc" -c "quit"
	COMMENT "Generating helptags")

add_custom_target(helptags ALL
	DEPENDS "${CMAKE_CURRENT_SOURCE_DIR}/runtime/doc/tags")
