cmake_minimum_required(VERSION 3.16)

# appveyor does not build modorganizer in its standard location, so use
# DEPENDENCIES_DIR to find cmake_common
if(DEFINED DEPENDENCIES_DIR)
	include(${DEPENDENCIES_DIR}/modorganizer_super/cmake_common/src.cmake)
else()
	include(../cmake_common/src.cmake)
endif()


add_filter(NAME src/application GROUPS
	iuserinterface
	main
	moapplication
	moshortcut
	sanitychecks
	selfupdater
	singleinstance
)

add_filter(NAME src/browser GROUPS
	browserdialog
	browserview
)

add_filter(NAME src/core GROUPS
	categories
	archivefiletree
	installationmanager
	instancemanager
	loadmechanism
	nexusinterface
	nxmaccessmanager
	organizercore
	organizerproxy
	apiuseraccount
	processrunner
	qdirfiletree
	uilocker
)

add_filter(NAME src/dialogs GROUPS
	aboutdialog
	activatemodsdialog
	categoriesdialog
	credentialsdialog
	filedialogmemory
	forcedloaddialog
	forcedloaddialogwidget
	listdialog
	messagedialog
	motddialog
	overwriteinfodialog
	queryoverwritedialog
	problemsdialog
	savetextasdialog
	selectiondialog
	syncoverwritedialog
	transfersavesdialog
	waitingonclosedialog
)

add_filter(NAME src/downloads GROUPS
	downloadlist
	downloadlistsortproxy
	downloadlistwidget
	downloadmanager
)

add_filter(NAME src/env GROUPS
	env
	envfs
	envmetrics
	envmodule
	envsecurity
	envshell
	envshortcut
	envwindows
)

add_filter(NAME src/executables GROUPS
	executableslist
	editexecutablesdialog
)

add_filter(NAME src/loot GROUPS
	loot
	lootdialog
)

add_filter(NAME src/mainwindow GROUPS
	datatab
	iconfetcher
	filetree
	filetreeitem
	filetreemodel
	filterlist
	mainwindow
	statusbar
)

add_filter(NAME src/modinfo GROUPS
	modinfo
	modinfobackup
	modinfoforeign
	modinfooverwrite
	modinforegular
	modinfoseparator
	modinfowithconflictinfo
)

add_filter(NAME src/modinfo/dialog GROUPS
	modinfodialog
	modinfodialogcategories
	modinfodialogconflicts
	modinfodialogconflictsmodels
	modinfodialogesps
	modinfodialogfiletree
	modinfodialogfwd
	modinfodialogimages
	modinfodialognexus
	modinfodialogtab
	modinfodialogtextfiles
)
add_filter(NAME src/modlist GROUPS
	modlist
	modlistsortproxy
	modlistview
)

add_filter(NAME src/plugins GROUPS
	plugincontainer
	pluginlist
	pluginlistsortproxy
	pluginlistview
)

add_filter(NAME src/previews GROUPS
	previewdialog
	previewgenerator
)

add_filter(NAME src/profiles GROUPS
	profile
	profileinputdialog
	profilesdialog
)

add_filter(NAME src/register GROUPS
	shared/directoryentry
	shared/fileentry
	shared/filesorigin
	shared/fileregister
	shared/fileregisterfwd
	shared/originconnection
	directoryrefresher
)

add_filter(NAME src/settings GROUPS
	settings
	settingsutilities
)

add_filter(NAME src/settingsdialog GROUPS
	settingsdialog
	settingsdialogdiagnostics
	settingsdialoggeneral
	settingsdialognexus
	settingsdialogpaths
	settingsdialogplugins
	settingsdialogsteam
	settingsdialogworkarounds
)

add_filter(NAME src/utilities GROUPS
	shared/appconfig
	bbcode
	csvbuilder
	shared/error_report
	shared/leaktrace
	persistentcookiejar
	serverinfo
	spawn
	shared/stackdata
	shared/util
	usvfsconnector
	shared/windows_error
	thread_utils
	json
)

add_filter(NAME src/widgets GROUPS
	colortable
	genericicondelegate
	filerenamer
	icondelegate
	lcdnumber
	loglist
	loghighlighter
	modflagicondelegate
	modconflicticondelegate
	modidlineedit
	noeditdelegate
	qtgroupingproxy
	texteditor
	viewmarkingscrollbar
)


requires_project(game_features githubpp bsatk esptk archive usvfs)

target_include_directories(${CMAKE_PROJECT_NAME} PRIVATE
	${modorganizer_super_path}/lootcli/include
)


install(FILES ${CMAKE_CURRENT_SOURCE_DIR}/dlls.manifest.qt5
        DESTINATION bin/dlls
        RENAME dlls.manifest)

install(FILES ${qm_files} DESTINATION bin/translations)

install(DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR}/stylesheets
                  ${CMAKE_CURRENT_SOURCE_DIR}/tutorials
        DESTINATION bin)

deploy_qt(BINARIES ModOrganizer.exe uibase.dll plugins/bsa_packer.dll)

install(FILES ${CMAKE_CURRENT_SOURCE_DIR}/../qdds.dll DESTINATION bin/dlls/imageformats)
install(FILES ${CMAKE_CURRENT_SOURCE_DIR}/resources/markdown.html DESTINATION bin/resources)
