# @file:<dictaolib-root>/CMakeLists.txt

# TODO
# - Move defs XX_INCLUDE_DIR, XX_LIBRARIES, XX_LIBRARY_DIRS to the subdirectories
#   scripts. I could not find a way to export variables defined in a subscript
#   so as a workaround, I define the variables myself in the top script. This is
#   not optimal.
#

cmake_minimum_required(VERSION 3.4)

PROJECT(Notepad++)

SET(projIncludDir	../../scintilla/include/
					./
					./WinControls/AboutDlg/
					./WinControls/
					./WinControls/ImageListSet/
					./WinControls/OpenSaveFileDialog/
					./WinControls/SplitterContainer/
					./WinControls/StaticDialog/
					./WinControls/TabBar/
					./WinControls/ToolBar/
					./MISC/Process/
					./ScitillaComponent/
					./MISC/
					./MISC/SysMsg/
					./WinControls/StatusBar/
					./WinControls/StaticDialog/RunDlg/
					./tinyxml/
					./WinControls/ColourPicker/
					./Win32Explr/
					./MISC/RegExt/
					./WinControls/TrayIcon/
					./WinControls/shortcut/
					./WinControls/Grid/
					./WinControls/ContextMenu/
					./MISC/PluginsManager/
					./WinControls/Preference/
					./WinControls/WindowsDlg/
					./WinControls/TaskList/
					./WinControls/DockingWnd/
					./WinControls/ToolTip/
					./MISC/Exception/
					./MISC/Common/
					./tinyxml/tinyXmlA/
					./WinControls/AnsiCharPanel/
					./WinControls/ClipboardHistory/
					./WinControls/FindCharsInRange/
					./WinControls/VerticalFileSwitcher/
					./WinControls/ProjectPanel/
					./WinControls/DocumentMap/
					./WinControls/FunctionList/
					./uchardet/
					./WinControls/FileBrowser/
					./WinControls/ReadDirectoryChanges/)


SET(src_files
			./MISC/Common/LongRunningOperation.cpp
			./MISC/Common/mutex.cpp
			./MISC/Process/Processus.cpp
			./WinControls/AboutDlg/AboutDlg.cpp
			./WinControls/AnsiCharPanel/ansiCharPanel.cpp
			./ScitillaComponent/AutoCompletion.cpp
			./WinControls/FileBrowser/fileBrowser.cpp
			./WinControls/Grid/BabyGrid.cpp
			./WinControls/Grid/BabyGridWrapper.cpp
			./ScitillaComponent/Buffer.cpp
			./uchardet/CharDistribution.cpp
			./WinControls/ClipboardHistory/clipboardHistoryPanel.cpp
			./WinControls/ColourPicker/ColourPicker.cpp
			./WinControls/ColourPicker/ColourPopup.cpp
			./ScitillaComponent/columnEditor.cpp
			./MISC/Common/Common.cpp
			./WinControls/ContextMenu/ContextMenu.cpp
			./WinControls/ReadDirectoryChanges/ReadDirectoryChanges.cpp
			./WinControls/ReadDirectoryChanges/ReadDirectoryChangesPrivate.cpp
			./WinControls/TabBar/ControlsTab.cpp
			./WinControls/DockingWnd/DockingCont.cpp
			./WinControls/DockingWnd/DockingManager.cpp
			./WinControls/DockingWnd/DockingSplitter.cpp
			./ScitillaComponent/DocTabView.cpp
			./WinControls/DocumentMap/documentMap.cpp
			./EncodingMapper.cpp
			./WinControls/OpenSaveFileDialog/FileDialog.cpp
			./WinControls/FindCharsInRange/FindCharsInRange.cpp
			./ScitillaComponent/FindReplaceDlg.cpp
			./ScitillaComponent/FunctionCallTip.cpp
			./WinControls/FunctionList/functionListPanel.cpp
			./WinControls/FunctionList/functionParser.cpp
			./ScitillaComponent/GoToLineDlg.cpp
			./WinControls/DockingWnd/Gripper.cpp
			./MISC/PluginsManager/IDAllocator.cpp
			./WinControls/ImageListSet/ImageListSet.cpp
			./uchardet/JpCntx.cpp
			./uchardet/LangBulgarianModel.cpp
			./uchardet/LangCyrillicModel.cpp
			./uchardet/LangGreekModel.cpp
			./uchardet/LangHebrewModel.cpp
			./uchardet/LangHungarianModel.cpp
			./uchardet/LangThaiModel.cpp
			./lastRecentFileList.cpp
			./lesDlgs.cpp
			./WinControls/AnsiCharPanel/ListView.cpp
			./localization.cpp
			./MISC/Exception/MiniDumper.cpp
			./Notepad_plus.cpp
			./Notepad_plus_Window.cpp
			./NppBigSwitch.cpp
			./NppCommands.cpp
			./NppIO.cpp
			./NppNotification.cpp
			./uchardet/nsBig5Prober.cpp
			./uchardet/nsCharSetProber.cpp
			./uchardet/nsEscCharsetProber.cpp
			./uchardet/nsEscSM.cpp
			./uchardet/nsEUCJPProber.cpp
			./uchardet/nsEUCKRProber.cpp
			./uchardet/nsEUCTWProber.cpp
			./uchardet/nsGB2312Prober.cpp
			./uchardet/nsHebrewProber.cpp
			./uchardet/nsLatin1Prober.cpp
			./uchardet/nsMBCSGroupProber.cpp
			./uchardet/nsMBCSSM.cpp
			./uchardet/nsSBCharSetProber.cpp
			./uchardet/nsSBCSGroupProber.cpp
			./uchardet/nsSJISProber.cpp
			./uchardet/nsUniversalDetector.cpp
			./uchardet/nsUTF8Prober.cpp
			./Parameters.cpp
			./Misc/PluginsManager/PluginsManager.cpp
			./WinControls/Preference/preferenceDlg.cpp
			./ScitillaComponent/Printer.cpp
			./WinControls/ProjectPanel/ProjectPanel.cpp
			./MISC/RegExt/regExtDlg.cpp
			./WinControls/StaticDialog/RunDlg/RunDlg.cpp
			./WinControls/shortcut/RunMacroDlg.cpp
			./ScitillaComponent/ScintillaCtrls.cpp
			./ScitillaComponent/ScintillaEditView.cpp
			./WinControls/shortcut/shortcut.cpp
			./WinControls/Grid/ShortcutMapper.cpp
			./WinControls/WindowsDlg/SizeableDlg.cpp
			./ScitillaComponent/SmartHighlighter.cpp
			./WinControls/SplitterContainer/Splitter.cpp
			./WinControls/SplitterContainer/SplitterContainer.cpp
			./WinControls/StaticDialog/StaticDialog.cpp
			./WinControls/StatusBar/StatusBar.cpp
			./WinControls/TabBar/TabBar.cpp
			./WinControls/TaskList/TaskList.cpp
			./WinControls/TaskList/TaskListDlg.cpp
			./TinyXml/tinystr.cpp
			./TinyXml/tinyXmlA/tinystrA.cpp
			./TinyXml/tinyxml.cpp
			./TinyXml/tinyXmlA/tinyxmlA.cpp
			./TinyXml/tinyxmlerror.cpp
			./TinyXml/tinyXmlA/tinyxmlerrorA.cpp
			./TinyXml/tinyxmlparser.cpp
			./TinyXml/tinyXmlA/tinyxmlparserA.cpp
			./WinControls/ToolBar/ToolBar.cpp
			./WinControls/ToolTip/ToolTip.cpp
			./WinControls/TrayIcon/trayIconControler.cpp
			./WinControls/ProjectPanel/TreeView.cpp
			./uchardet/uchardet.cpp
			./UniConversion.cpp
			./WinControls/AboutDlg/URLCtrl.cpp
			./ScitillaComponent/UserDefineDialog.cpp
			./Utf8_16.cpp
			./WinControls/VerticalFileSwitcher/VerticalFileSwitcher.cpp
			./WinControls/VerticalFileSwitcher/VerticalFileSwitcherListView.cpp
			./MISC/Exception/Win32Exception.cpp
			./WinControls/WindowsDlg/WindowsDlg.cpp
			./winmain.cpp
			./WinControls/WindowsDlg/WinMgr.cpp
			./WinControls/WindowsDlg/WinRect.cpp
			./WinControls/ColourPicker/WordStyleDlg.cpp
			./ScitillaComponent/xmlMatchedTagsHighlighter.cpp
			./dpiAware.manifest
			./notepad++.exe.manifest
)

SET(include_files
			./MISC/Common/LongRunningOperation.h
			./MISC/Common/mutex.h
			./MISC/Common/mutex.hxx
			./MISC/Process/Processus.h
			./WinControls/AboutDlg/AboutDlg.h
			./WinControls/AnsiCharPanel/ansiCharPanel.h
			./ScitillaComponent/AutoCompletion.h
			./WinControls/FileBrowser/fileBrowser.h
			./WinControls/FileBrowser/fileBrowser_rc.h
			./WinControls/Grid/BabyGrid.h
			./WinControls/Grid/BabyGridWrapper.h
			./ScitillaComponent/Buffer.h
			./uchardet/CharDistribution.h
			./WinControls/ClipboardHistory/clipboardHistoryPanel.h
			./WinControls/ClipboardHistory/clipboardHistoryPanel_rc.h
			./ScitillaComponent/colors.h
			./WinControls/ColourPicker/ColourPicker.h
			./WinControls/ColourPicker/ColourPopup.h
			./ScitillaComponent/columnEditor.h
			./MISC/Common/Common.h
			./WinControls/ContextMenu/ContextMenu.h
			./WinControls/ReadDirectoryChanges/ReadDirectoryChanges.h
			./WinControls/ReadDirectoryChanges/ReadDirectoryChangesPrivate.h
			./WinControls/ReadDirectoryChanges/ThreadSafeQueue.h
			./WinControls/TabBar/ControlsTab.h
			./WinControls/DockingWnd/Docking.h
			./WinControls/DockingWnd/DockingCont.h
			./WinControls/DockingWnd/DockingDlgInterface.h
			./WinControls/DockingWnd/DockingManager.h
			./WinControls/DockingWnd/dockingResource.h
			./WinControls/DockingWnd/DockingSplitter.h
			./ScitillaComponent/DocTabView.h
			./WinControls/DocumentMap/documentMap.h
			./EncodingMapper.h
			./WinControls/OpenSaveFileDialog/FileDialog.h
			./MISC/FileNameStringSplitter.h
			./WinControls/FindCharsInRange/FindCharsInRange.h
			./ScitillaComponent/FindReplaceDlg.h
			./ScitillaComponent/FunctionCallTip.h
			./WinControls/FunctionList/functionListPanel.h
			./WinControls/FunctionList/functionListPanel_rc.h
			./WinControls/FunctionList/functionParser.h
			./ScitillaComponent/GoToLineDlg.h
			./WinControls/DockingWnd/Gripper.h
			./MISC/PluginsManager/IDAllocator.h
			./WinControls/ImageListSet/ImageListSet.h
			./uchardet/JpCntx.h
			./lastRecentFileList.h
			./lesDlgs.h
			./WinControls/AnsiCharPanel/ListView.h
			./localization.h
			./localizationstring.h
			./menuCmdID.h
			./MISC/Exception/MiniDumper.h
			./Notepad_plus.h
			./MISC/PluginsManager/Notepad_plus_msgs.h
			./Notepad_plus_Window.h
			./uchardet/nsBig5Prober.h
			./uchardet/nsCharSetProber.h
			./uchardet/nsCodingStateMachine.h
			./uchardet/nscore.h
			./uchardet/nsEscCharsetProber.h
			./uchardet/nsEUCJPProber.h
			./uchardet/nsEUCKRProber.h
			./uchardet/nsEUCTWProber.h
			./uchardet/nsGB2312Prober.h
			./uchardet/nsHebrewProber.h
			./uchardet/nsLatin1Prober.h
			./uchardet/nsMBCSGroupProber.h
			./uchardet/nsPkgInt.h
			./uchardet/nsSBCharSetProber.h
			./uchardet/nsSBCSGroupProber.h
			./uchardet/nsSJISProber.h
			./uchardet/nsUniversalDetector.h
			./uchardet/nsUTF8Prober.h
			./Parameters.h
			./MISC/PluginsManager/PluginInterface.h
			./MISC/PluginsManager/PluginsManager.h
			./WinControls/Preference/preferenceDlg.h
			./ScitillaComponent/Printer.h
			./uchardet/prmem.h
			./WinControls/ProjectPanel/ProjectPanel.h
			./WinControls/ProjectPanel/ProjectPanel_rc.h
			./MISC/RegExt/regExtDlg.h
			./MISC/RegExt/regExtDlgRc.h
			./resource.h
			./WinControls/StaticDialog/RunDlg/RunDlg.h
			./WinControls/shortcut/RunMacroDlg.h
			./WinControls/shortcut/RunMacroDlg_rc.h
			./ScitillaComponent/ScintillaCtrls.h
			./ScitillaComponent/ScintillaEditView.h
			./WinControls/shortcut/shortcut.h
			./WinControls/Grid/ShortcutMapper.h
			./WinControls/Grid/ShortcutMapper_rc.h
			./WinControls/WindowsDlg/SizeableDlg.h
			./ScitillaComponent/SmartHighlighter.h
			./WinControls/SplitterContainer/Splitter.h
			./WinControls/SplitterContainer/SplitterContainer.h
			./WinControls/StaticDialog/StaticDialog.h
			./WinControls/StatusBar/StatusBar.h
			./WinControls/TabBar/TabBar.h
			./WinControls/TaskList/TaskList.h
			./WinControls/TaskList/TaskListDlg.h
			./WinControls/TaskList/TaskListDlg_rc.h
			./TinyXml/tinystr.h
			./TinyXml/tinyXmlA/tinystrA.h
			./TinyXml/tinyxml.h
			./TinyXml/tinyXmlA/tinyxmlA.h
			./WinControls/ToolBar/ToolBar.h
			./WinControls/ToolTip/ToolTip.h
			./WinControls/TrayIcon/trayIconControler.h
			./WinControls/ProjectPanel/TreeView.h
			./uchardet/uchardet.h
			./UniConversion.h
			./WinControls/AboutDlg/URLCtrl.h
			./ScitillaComponent/UserDefineDialog.h
			./ScitillaComponent/UserDefineLangReference.h
			./ScitillaComponent/UserDefineResource.h
			./Utf8_16.h
			./WinControls/VerticalFileSwitcher/VerticalFileSwitcher.h
			./WinControls/VerticalFileSwitcher/VerticalFileSwitcher_rc.h
			./WinControls/VerticalFileSwitcher/VerticalFileSwitcherListView.h
			./MISC/Exception/Win32Exception.h
			./WinControls/Window.h
			./WinControls/WindowsDlg/WindowsDlg.h
			./WinControls/WindowsDlg/WindowsDlgRc.h
			./WinControls/WindowsDlg/WinMgr.h
			./WinControls/ColourPicker/WordStyleDlg.h
			./ScitillaComponent/xmlMatchedTagsHighlighter.h
			./rgba_icons.h
)


SET(rcFiles
			./WinControls/AnsiCharPanel/ansiCharPanel.rc
			./WinControls/ClipboardHistory/clipboardHistoryPanel.rc
			./WinControls/ColourPicker/ColourPopup.rc
			./ScitillaComponent/columnEditor.rc
			./WinControls/DockingWnd/DockingGUIWidget.rc
			./WinControls/DocumentMap/documentMap.rc
			./WinControls/FileBrowser/fileBrowser.rc
			./WinControls/FindCharsInRange/findCharsInRange.rc
			./ScitillaComponent/FindReplaceDlg.rc
			./WinControls/FunctionList/functionListPanel.rc
			./Notepad_plus.rc
			./WinControls/Preference/preference.rc
			./WinControls/ProjectPanel/ProjectPanel.rc
			./MISC/RegExt/regExtDlg.rc
			./WinControls/StaticDialog/RunDlg/RunDlg.rc
			./WinControls/shortcut/RunMacroDlg.rc
			./WinControls/shortcut/shortcut.rc
			./WinControls/Grid/ShortcutMapper.rc
			./WinControls/TaskList/TaskListDlg.rc
			./ScitillaComponent/UserDefineDialog.rc
			./WinControls/VerticalFileSwitcher/VerticalFileSwitcher.rc
			./WinControls/WindowsDlg/WindowsDlg.rc
			./WinControls/ColourPicker/WordStyleDlg.rc
)

IF (WIN32)
	SET(option WIN32)
	SET(win32_LIBRARIES comctl32 shlwapi dbghelp)
if ( MSVC )
	#do not use for mingw builds
	SET(CMAKE_CXX_FLAGS "/EHa /MP /W4")
	SET(defs -DUNICODE -D_UNICODE -D_WIN32_WINNT=0x501 -D_USE_64BIT_TIME_T -DTIXML_USE_STL -DTIXMLA_USE_STL -D_CRT_NONSTDC_NO_DEPRECATE -D_CRT_SECURE_NO_WARNINGS -D_CRT_NON_CONFORMING_SWPRINTFS )
else ( MSVC )
	# For possible MinGW compilation
	SET(CMAKE_CXX_FLAGS "-include../gcc/include/various.h -std=c++14 -fpermissive")
	SET(defs -DUNICODE -D_UNICODE -D_USE_64BIT_TIME_T -DTIXML_USE_STL -DTIXMLA_USE_STL )
endif ( MSVC )
ENDIF (WIN32)

ADD_DEFINITIONS(${defs})

INCLUDE_DIRECTORIES(${projIncludDir})

ADD_EXECUTABLE(notepad++ ${option} ${src_files} ${include_files} ${rcFiles})

TARGET_LINK_LIBRARIES (notepad++ ${win32_LIBRARIES})

