cmake_minimum_required(VERSION 2.8)

if(NOT CMAKE_BUILD_TYPE)
	set(CMAKE_BUILD_TYPE Release CACHE STRING "Choose the type of build, options are: None Debug Release RelWithDebInfo MinSizeRel")
endif()

project(TheIDE)

#set(CMAKE_VERBOSE_MAKEFILE 1)

# Add path for custom modules
set(CMAKE_MODULE_PATH
	${CMAKE_MODULE_PATH}
	"${CMAKE_CURRENT_SOURCE_DIR}/cmake/modules"
)

# Include and library directories
include_directories(BEFORE ${CMAKE_CURRENT_SOURCE_DIR})

if(NOT WIN32)
	find_package(Freetype)
	if(FREETYPE_FOUND)
		include_directories(${FREETYPE_INCLUDE_DIRS})
	endif()

	find_package(EXPAT)
	if(EXPAT_FOUND)
		include_directories(${EXPAT_INCLUDE_DIRS})
	endif()

	if(NOT BUILD_WITHOUT_GTK)
		find_package(GTK2 2.6 REQUIRED gtk)

		if(GTK2_FOUND)
			include_directories(${GTK2_INCLUDE_DIRS})
		endif()
	endif()

	find_package(X11)
	if(X11_FOUND)
		include_directories(${X11_INCLUDE_DIR})
	endif()
	
	find_package(PNG)
	if(PNG_FOUND)
		include_directories(${PNG_INCLUDE_DIR})
	endif()

	link_directories(/usr/local/lib)
endif()

add_definitions(-DflagGUI)
include(AddUppDefinitions)
include(UppProcessSources)

if(CMAKE_COMPILER_IS_GNUCC)
	set(CMAKE_CXX_FLAGS_RELEASE "${CMAKE_CXX_FLAGS_RELEASE} -fexceptions -ffunction-sections -fdata-sections")
elseif(MSVC)
	set(CMAKE_CXX_FLAGS_RELEASE "${CMAKE_CXX_FLAGS_RELEASE} -GS-")
endif()

if(MINGW)
  # The -O3 might be unreliable on MinGW. Use -Os instead.
	replace_compiler_option(CMAKE_C_FLAGS_RELEASE "-O3" "-Os")
	replace_compiler_option(CMAKE_CXX_FLAGS_RELEASE "-O3" "-Os")
endif()

# Libraries
add_subdirectory(plugin/z)
add_subdirectory(Core)
add_subdirectory(coff)
add_subdirectory(CppBase)
add_subdirectory(Draw)
add_subdirectory(Esc)
add_subdirectory(plugin/astyle)
add_subdirectory(plugin/bz2)
add_subdirectory(plugin/ndisasm)
add_subdirectory(Web)
add_subdirectory(coff/binobj)
add_subdirectory(plugin/bmp)
add_subdirectory(plugin/gif)
add_subdirectory(plugin/jpg)
add_subdirectory(plugin/png)
add_subdirectory(PdfDraw)
add_subdirectory(RichText)
add_subdirectory(CtrlCore)
add_subdirectory(CtrlLib)
add_subdirectory(ide/Core)
add_subdirectory(ide/Builders)
add_subdirectory(ide/Common)
add_subdirectory(IconDes)
add_subdirectory(ide/IconDes)
add_subdirectory(art/BlueBar)
add_subdirectory(CodeEditor)
add_subdirectory(HexView)
add_subdirectory(RichEdit)
add_subdirectory(TabBar)
add_subdirectory(TextDiffCtrl)
add_subdirectory(ide/Debuggers)
add_subdirectory(ide/LayDes)
add_subdirectory(ide/Browser)
add_subdirectory(usvn)
if(UNIX OR APPLE)
	add_subdirectory(ide/SrcUpdater)
endif()
# Executable
add_subdirectory(ide)
