##############################################################################
# CMakeLists.txt for 'MIRA'
##############################################################################

CMAKE_MINIMUM_REQUIRED(VERSION 3.16.0)

##############################################################################

PROJECT(MIRA 
	VERSION      1.0.0
	DESCRIPTION  "MIRA - Middleware for Robotic Applications"
	HOMEPAGE_URL "https://www.mira-project.org")

##############################################################################
# General settings

SET(CMAKE_VERBOSE_MAKEFILE OFF) # Disable verbose Makefiles
SET(CMAKE_COLOR_MAKEFILE ON)    # Coloured outputs

##############################################################################
# Enable CTest framework

ENABLE_TESTING()
INCLUDE(CTest)

##############################################################################
# main make system components

SET(MIRA_ROOT_DIR ${CMAKE_SOURCE_DIR})

# change INSTALL_PREFIX (/usr/local by default) to /opt/MIRA if not set explicity
IF (CMAKE_INSTALL_PREFIX STREQUAL "/usr/local")
	SET(CMAKE_INSTALL_PREFIX "/opt/MIRA")
ENDIF()

INCLUDE(make/GlobalConfig.cmake)
INCLUDE(make/Prerequisites.cmake)
INCLUDE(make/Dependencies.cmake)

##############################################################################

# the main documentation
MIRA_ADD_DOCUMENTATION(MIRA
	DIRS
		make/documentation/
		base/include/
		base/doc/
		framework/include/
		framework/doc/
		gui/include/ 
		gui/doc/ 
		tools/miracenter/doc
		tools/mira/doc
		tools/miragui/doc
		tools/mirapackage/doc
		tools/mirawizard/doc
		tools/mirasvn/doc
		tools/miratape/doc
	RESOURCES
		make/documentation/MainPage.css
		make/documentation/sidebargrad.gif
		make/documentation/GenerateDocRefTable.js
	EXAMPLE_DIRS
		base/examples
		framework/examples
		gui/examples
	IMAGE_DIRS
		framework/doc/tutorials/img
		make/documentation/img
		tools/miracenter/doc
		tools/mirapackage/doc
)

##############################################################################
# Our subdirectories

if (NOT MIRA_GEN_MANIFESTS_ONLY)
	ADD_SUBDIR(make)
	ADD_SUBDIR(base)
	ADD_SUBDIR(framework)
	if (NOT WITHOUT_GUI)
		ADD_SUBDIR(gui)
	endif()
	ADD_SUBDIR(toolboxes)
	ADD_SUBDIR(domains)
	ADD_SUBDIR(tools)
	ADD_SUBDIR(scripts)
	ADD_SUBDIR(etc)
endif()

##############################################################################

MIRA_INSTALL(
	FILES
		LICENSE.GPL3
		mira.root
		ReleaseNotes
		MIRAenvironment.package
		MIRAenvironment.changelog
	DESTINATION .
	PACKAGE MIRAenvironment)

# create and empty directories 'domains', 'toolboxes' and 'tools'
MIRA_INSTALL(
	DIRECTORY domains toolboxes tools
	DESTINATION .
	PACKAGE MIRAenvironment
	PATTERN "domains/*" EXCLUDE
	PATTERN "toolboxes/*" EXCLUDE
	PATTERN "tools/*" EXCLUDE)

if (CMAKE_CROSSCOMPILING)
	MIRA_INSTALL(
		FILES
			CMakeLists.txt
			Makefile
			ManifestPostBuild.txt
		DESTINATION .
		PACKAGE MIRAenvironment)
endif()

##############################################################################

MIRA_ADD_INSTALLERS()
POST_GENERATE_MANIFESTS()
