cmake_minimum_required (VERSION 2.8)

if (NOT WIN32)
	message (FATAL_ERROR "Only Win32 supported")
endif()

set (CMAKE_CONFIGURATION_TYPES "Debug;Release" CACHE STRING "Reset the configurations to what we need" FORCE)
	
project (RealTimeApp)

if (NOT MSVC)
	message (FATAL_ERROR "Only Microsoft Visual Studio supported")
endif()

# setting dependencies
set (BOOST_INCLUDE_DIR "" CACHE PATH "Boost include folder")
if (NOT EXISTS ${BOOST_INCLUDE_DIR})
	message (SEND_ERROR "${BOOST_INCLUDE_DIR} doesn't exist")
endif()

set (GLEW_INCLUDE_DIR "" CACHE PATH "Glew include folder")
if (NOT EXISTS ${GLEW_INCLUDE_DIR})
	message (SEND_ERROR "${GLEW_INCLUDE_DIR} doesn't exist")
endif()

set (COMMON_INCLUDE_DIR "${CMAKE_SOURCE_DIR}/libs/Common/include")
set (MATH_INCLUDE_DIR "${CMAKE_SOURCE_DIR}/libs/Math/include")
set (OPENGLDRIVER_INCLUDE_DIR "${CMAKE_SOURCE_DIR}/libs/OpenglDriver/include")

if (CMAKE_CL_64)
	set (PLATFORM_NAME "x64")
else()
	set (PLATFORM_NAME "Win32")
endif()

file (GLOB SRCS src/*.cpp)

# Right now msvc its the only platform supported 
# but I want to be explicit here just in case
# in the future I want to support another compiler
if (MSVC)
 
	file (GLOB HDRS include/*.h)
	set (SRCS ${SRCS} ${HDRS})
		
	string (REPLACE "/D_WINDOWS" "" CMAKE_CXX_FLAGS ${CMAKE_CXX_FLAGS})

	if (CMAKE_CL_64)
		set (CMAKE_CXX_FLAGS_DEBUG "/Zi /nologo /W4 /WX /Od -D_DEBUG -DUNICODE -D_UNICODE -DWIN32 -D_LIB /Gm /EHsc /RTC1 /MDd /GS /fp:precise /Zc:wchar_t /Zc:forScope /Gd /errorReport:queue /wd4127")
		set (CMAKE_CXX_FLAGS_RELEASE "/Zi /nologo /W4 /WX /O2 /Oi /Ot /GL -DNDEBUG -DUNICODE -D_UNICODE -DWIN32 -D_LIB /Gm- /EHsc /MD /GS /Gy /fp:precise /Zc:wchar_t /Zc:forScope /Gd /errorReport:queue /wd4127")
	else()
		set (CMAKE_CXX_FLAGS_DEBUG "/ZI /nologo /W4 /WX /Od /Oy- -D_DEBUG -DUNICODE -D_UNICODE -DWIN32 -D_LIB /Gm /EHsc /RTC1 /MDd /GS /fp:precise /Zc:wchar_t /Zc:forScope /Gd /analyze- /errorReport:queue /wd4127")
		set (CMAKE_CXX_FLAGS_RELEASE "/Zi /nologo /W4 /WX /O2 /Oi /Ot /Oy- /GL -DNDEBUG -DUNICODE -D_UNICODE -DWIN32 -D_LIB /Gm- /EHsc /MD /GS /Gy /fp:precise /Zc:wchar_t /Gd /analyze- /errorReport:queue /wd4127")
	endif()
	
endif()

# Adding library
add_library (RealTimeApp STATIC ${SRCS})

# Setting libraries
include_directories ("include" ${BOOST_INCLUDE_DIR} ${GLEW_INCLUDE_DIR} ${COMMON_INCLUDE_DIR} ${MATH_INCLUDE_DIR} ${OPENGLDRIVER_INCLUDE_DIR})
target_link_libraries (RealTimeApp)



