# This a minimum required for project
cmake_minimum_required(VERSION 2.6)

###################################################################################################
# Name of the project
PROJECT (AstroNav)

##########################################################
# ************* tools used during build ******************
IF (NOT DEFINED COMMON)
    MESSAGE (FATAL_ERROR "COMMON path is not defined!")
ENDIF (NOT DEFINED COMMON)

#######################################
#  perl 
#######################################
FIND_PACKAGE(Perl REQUIRED)

#######################################
# bison
#######################################
message(status " common ${COMMON}")
FIND_PROGRAM (BISON_EXECUTABLE NAMES bison PATHS ${COMMON}/bin NO_DEFAULT_PATH)

IF (NOT BISON_EXECUTABLE)
    MESSAGE (FATAL_ERROR "Could not find bison, cannot create AstroNav without it, you need to get/update the sdk/common repository")
ENDIF (NOT BISON_EXECUTABLE)

#######################################
# flex
#######################################
FIND_PROGRAM (FLEX_EXECUTABLE NAMES flex PATHS ${COMMON}/bin NO_DEFAULT_PATH)

IF (NOT FLEX_EXECUTABLE)    
    MESSAGE (FATAL_ERROR "Could not find flex, cannot create AstroNav without it, you need to get/update the sdk/common repository")
ENDIF (NOT FLEX_EXECUTABLE)

#######################################
# gperf
#######################################
FIND_PROGRAM (GPERF_EXECUTABLE NAMES gperf)

IF (NOT GPERF_EXECUTABLE)
    MESSAGE (FATAL_ERROR "Could not find gperf, cannot create AstroNav without it, you need to get/update the sdk/common repository")
ENDIF (NOT GPERF_EXECUTABLE)

# ************* tools used during build ******************

SET(CMAKE_ARCHIVE_OUTPUT_DIRECTORY "${CMAKE_BINARY_DIR}")
MESSAGE(STATUS "$$$$$ CMAKE_ARCHIVE_OUTPUT_DIRECTORY = ${CMAKE_ARCHIVE_OUTPUT_DIRECTORY}")


###################################################################################################
# Default Options used by cMake, be careful when changing after here.
###################################################################################################
# Used in order to provide simple conditionals ending (IF/ELSE)
SET(CMAKE_ALLOW_LOOSE_LOOP_CONSTRUCTS true)

SET(MAIN_LIBRARY tqtvd_astronav)

IF (NOT DEFINED TQTVD_TARGET)
	MESSAGE (STATUS "#################################################################################: ${TQTVD_TARGET}")
	MESSAGE (FATAL_ERROR "TQTVD_TARGET not set. Add TQTVD_TARGET setting to your Toolchain.cmake.")
ENDIF()

IF(NOT DEFINED TQTVD_DEBUG_ENABLED)
  SET (TQTVD_DEBUG_ENABLED "0")
ENDIF(NOT DEFINED TQTVD_DEBUG_ENABLED)

IF(${TQTVD_DEBUG_ENABLED} STREQUAL "1")
  SET(CMAKE_CXX_FLAGS  "${CMAKE_CXX_FLAGS_CUSTOM_DEBUG}")
  SET(CMAKE_C_FLAGS    "${CMAKE_C_FLAGS_CUSTOM_DEBUG}")
  SET(WEBKIT_BUILD "DEBUG")
MESSAGE(status " <<< 1 CMAKE_C_FLAGS_CUSTOM_DEBUG = ${CMAKE_C_FLAGS_CUSTOM_DEBUG}")
ELSEIF(${TQTVD_DEBUG_ENABLED} STREQUAL "2")
  SET(CMAKE_CXX_FLAGS  "${CMAKE_CXX_FLAGS_CUSTOM_DBGINFO}")
  SET(CMAKE_C_FLAGS    "${CMAKE_C_FLAGS_CUSTOM_DBGINFO}")
  SET(WEBKIT_BUILD "DEBUG")
MESSAGE(status " <<< 2 CMAKE_C_FLAGS_CUSTOM_DBGINFO = ${CMAKE_C_FLAGS_CUSTOM_DBGINFO}")
ELSE()
  SET(CMAKE_CXX_FLAGS  "${CMAKE_CXX_FLAGS} ${CMAKE_CXX_FLAGS_CUSTOM}")
  SET(CMAKE_C_FLAGS    "${CMAKE_C_FLAGS} ${CMAKE_C_FLAGS_CUSTOM}")
  SET(WEBKIT_BUILD "RELEASE")
  ADD_DEFINITIONS(-DNDEBUG)
  SET(TQTVD_STRIP_LIBRARIES "_")
MESSAGE(status " <<< 0 CMAKE_C_FLAGS_CUSTOM = ${CMAKE_C_FLAGS_CUSTOM}")
ENDIF()

if (DEFINED TQTVD_PLATFORM)
  add_definitions(-DTQTVD_PLATFORM="${TQTVD_PLATFORM}")
endif()

IF(NOT DEFINED TQTVD_STRIP_LIBRARIES)
  SET(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -rdynamic")
  SET(CMAKE_C_FLAGS   "${CMAKE_C_FLAGS} -rdynamic")
  SET(CMAKE_SHARED_LINKER_FLAGS  "${CMAKE_SHARED_LINKER_FLAGS} -rdynamic")
  SET(CMAKE_EXE_LINKER_FLAGS     "${CMAKE_EXE_LINKER_FLAGS} -rdynamic")
ENDIF(NOT DEFINED TQTVD_STRIP_LIBRARIES)

MESSAGE(STATUS "================================================================================")
MESSAGE(STATUS " ")
MESSAGE(STATUS " Build for platform..        : ${TQTVD_PLATFORM}")
MESSAGE(STATUS " CMAKE_TOOLCHAIN_FILE        : ${CMAKE_TOOLCHAIN_FILE}")
MESSAGE(STATUS " DEPLOY_DIRECTORY            : ${DEPLOY_DIRECTORY}")


IF(${CMAKE_CXX_FLAGS} MATCHES ".*-Werror.*" OR ${CMAKE_C_FLAGS}   MATCHES ".*-Werror.*")
  MESSAGE(STATUS " TREATING WARNING AS ERROR   : Enabled (-Werror)")
ELSE()
  MESSAGE(STATUS " TREATING WARNING AS ERROR   : Disabled (-Werror)")
ENDIF()

IF (DEFINED TQTVD_PLATFORM_USES_STATIC_LIBRARIES)
	SET(PLATFORM_STATIC_LIBS_STRING "${TQTVD_PLATFORM_STATIC_LINK_LIBRARIES}")
ENDIF()

SET(ASTRONAV_LIB tqtvd_astronav)
ADD_SUBDIRECTORY(astronav) 

SET(CMAKE_SHARED_LINKER_FLAGS "${SHARED_LINKER_FLAGS_CUSTOM} ${CMAKE_SHARED_LINKER_FLAGS_CUSTOM} ${CMAKE_SHARED_LINKER_FLAGS}")

SET(CMAKE_EXE_LINKER_FLAGS "${EXE_LINKER_FLAGS_CUSTOM} ${CMAKE_EXE_LINKER_FLAGS_CUSTOM} ${CMAKE_EXE_LINKER_FLAGS}")
SET(CMAKE_STRIP "${CMAKE_STRIP_CUSTOM}")

MESSAGE(STATUS "================================================================================")
MESSAGE(STATUS "- Compiler Flags")
MESSAGE(STATUS "================================================================================")
MESSAGE(STATUS " + CMAKE_C_FLAGS   = '${CMAKE_C_FLAGS}'")
MESSAGE(STATUS " + CMAKE_C_FLAGS_CUSTOM   = '${CMAKE_C_FLAGS_CUSTOM}'")
MESSAGE(STATUS " + CMAKE_CXX_FLAGS = '${CMAKE_CXX_FLAGS}'")
MESSAGE(STATUS " + CMAKE_CXX_FLAGS_CUSTOM = '${CMAKE_CXX_FLAGS_CUSTOM}'")
MESSAGE(STATUS "================================================================================")
MESSAGE(STATUS "================================================================================")
MESSAGE(STATUS " + CMAKE_SHARED_LINKER_FLAGS    = '${CMAKE_SHARED_LINKER_FLAGS}'")
MESSAGE(STATUS " + CMAKE_EXE_LINKER_FLAGS = '${CMAKE_EXE_LINKER_FLAGS}'")
MESSAGE(STATUS "================================================================================")
