cmake_minimum_required(VERSION 2.8)

set(Freetype_SRCS
    src/autofit/autofit.c
    src/bdf/bdf.c
    src/cff/cff.c
    src/base/ftbase.c
    src/base/ftbitmap.c
    src/cache/ftcache.c
    src/base/ftfstype.c
    src/base/ftgasp.c
    src/base/ftglyph.c
    src/gzip/ftgzip.c
    src/base/ftinit.c
    src/lzw/ftlzw.c
    src/base/ftstroke.c
    src/smooth/smooth.c
    src/base/ftbbox.c
    src/base/ftmm.c
    src/base/ftpfr.c
    src/base/ftsynth.c
    src/base/fttype1.c
    src/base/ftwinfnt.c
    src/pcf/pcf.c
    src/pfr/pfr.c
    src/psaux/psaux.c
    src/pshinter/pshinter.c
    src/psnames/psmodule.c
    src/raster/raster.c
    src/sfnt/sfnt.c
    src/truetype/truetype.c
    src/type1/type1.c
    src/cid/type1cid.c
    src/type42/type42.c
    src/winfonts/winfnt.c
    include/ft2build.h
    include/freetype/config/ftconfig.h
    include/freetype/config/ftheader.h
    include/freetype/config/ftmodule.h
    include/freetype/config/ftoption.h
    include/freetype/config/ftstdlib.h
)

if(CONST_CGISTUDIO_BUILD_SYSTEM) # not Candera build force disable configuration.
	SET(FREETYPE2_CUSTOMIZE FALSE CACHE BOOL "When true alows to customize freetype options, modules, and usage of standard library")
else(CONST_CGISTUDIO_BUILD_SYSTEM)
	UNSET(FREETYPE2_CUSTOMIZE CACHE)
endif(CONST_CGISTUDIO_BUILD_SYSTEM)

if (FREETYPE2_CUSTOMIZE)
	include("configure.cmake")
	
	set(FREETYPE2_OPTIONS <FtCdaCustomOptions.h>)
	set(FREETYPE2_MODULES <FtCdaCustomModules.h>)
	set(FREETYPE2_SYSTEM  <FtCdaCustomSystem.h>)
	set(FREETYPE2_CONFIG  <FtCdaCustomConfig.h>)
else (FREETYPE2_CUSTOMIZE)
	set(FREETYPE2_OPTIONS <Candera/TextEngine/Freetype/FtCdaOptions.h>)
	set(FREETYPE2_MODULES <Candera/TextEngine/Freetype/FtCdaModules.h>)
	set(FREETYPE2_SYSTEM  <Candera/TextEngine/Freetype/FtCdaSystem.h>)
	set(FREETYPE2_CONFIG  <Candera/TextEngine/Freetype/FtCdaConfig.h>)
endif (FREETYPE2_CUSTOMIZE)

if(CONST_CGISTUDIO_BUILD_SYSTEM) # Candera build
	if (CMAKE_BUILD_TYPE STREQUAL "Debug" OR CMAKE_BUILD_TYPE STREQUAL "RelWithDebInfo")
		CgiAddDefinitions(
			-DFT_DEBUG_LEVEL_ERROR
			-DFT_DEBUG_LEVEL_TRACE
		)
	endif()

	CgiAddDefinitions(
		-DFT2_BUILD_LIBRARY
		-DFT_CONFIG_OPTIONS_H=${FREETYPE2_OPTIONS}
		-DFT_CONFIG_MODULES_H=${FREETYPE2_MODULES}
		-DFT_CONFIG_STANDARD_LIBRARY_H=${FREETYPE2_SYSTEM}
		-DFT_CONFIG_CONFIG_H=${FREETYPE2_CONFIG}
	)
		
	CgiGetCurrentDir(TMP_THIS_DIR)
	CgiAddIncludeDirs("${TMP_THIS_DIR}/include")
    
    if(${CGI_CANDERA_PACKAGE_TYPE} STREQUAL ${CONST_CGI_PACKAGE_TYPE_PROTOTYPE})
        CgiAddPrebuiltLib("Freetype")
    else()
        CgiAddStaticLibrary(PRV_FREETYPE_LIB_NAME "Freetype" ${Freetype_SRCS})
    endif()

else() # Standalone build    

	project(Freetype)
	# OS abstraction: Win32, Linux
	set(CGISTUDIO_OS "Win32" CACHE STRING
		"Defines the target operating system. See CanderaPlatform/OS subdirectory for valid values."
	)

	# CPU abstraction: x86, ARM
	set(CGISTUDIO_CPU "x86" CACHE STRING "Defines the used CPU. Supported CPUs: x86, ARM")

	# Compiler abstraction: MSVC, GCC
	set(CGISTUDIO_COMPILER "MSVC" CACHE STRING "Defines the used compiler. Supported compilers: MSVC, GCC")

	find_path(CGISTUDIO_PATH_CANDERA NAMES "src/Candera" PATHS "../../../cgi_studio_candera" "../../../ic01_cgi_studio_candera" 
		DOC "Location of Candera.")
	file(TO_CMAKE_PATH ${CGISTUDIO_PATH_CANDERA} CGISTUDIO_PATH_CANDERA)

	find_path(CGISTUDIO_PATH_3PSW NAMES "src" PATHS "../../../cgi_studio_3psw" "../../../ic01_cgi_studio_3psw" 
	  DOC "Location of 3PSW.")
	file(TO_CMAKE_PATH ${CGISTUDIO_PATH_3PSW} CGISTUDIO_PATH_3PSW)


	include_directories(include
						${CGISTUDIO_PATH_CANDERA}/src
	)

	if (CMAKE_BUILD_TYPE STREQUAL "Debug" OR CMAKE_BUILD_TYPE STREQUAL "RelWithDebInfo")
		add_definitions(-DFT_DEBUG_LEVEL_ERROR
						-DFT_DEBUG_LEVEL_TRACE
						)
	endif()

	add_definitions(-DFT2_BUILD_LIBRARY
					-DFT_CONFIG_OPTIONS_H=${FREETYPE2_OPTIONS}
					-DFT_CONFIG_MODULES_H=${FREETYPE2_MODULES}
					-DFT_CONFIG_STANDARD_LIBRARY_H=${FREETYPE2_SYSTEM}
					-DFT_CONFIG_CONFIG_H=${FREETYPE2_CONFIG})
					

	set(LIBRARY_OUTPUT_PATH ${CGISTUDIO_PATH_3PSW}/lib/freetype/${CGISTUDIO_OS})

	add_library(freetype_${CGISTUDIO_CPU}_${CGISTUDIO_COMPILER}  STATIC ${Freetype_SRCS})
	
endif()
