####################################################################
# The required CMAKE version
# with 2.4.6 check-build-system on Cygwin is extremely slow
####################################################################
CMAKE_MINIMUM_REQUIRED( VERSION 2.6 )

####################################################################
# building process verbosity
####################################################################
SET( CMAKE_VERBOSE_MAKEFILE TRUE CACHE BOOL "compiler verbosity")

####################################################################
# cross-compiling settings
####################################################################
MESSAGE( "-- Setting up cross-compiler environment" )

SET( FOO_ROOT     "${CMAKE_BINARY_DIR}" )
SET( FOO_BIN      "${FOO_ROOT}/bin" )
SET( FOO_EXT      ".exe" )

SET( CMAKE_LINKER   "${FOO_BIN}/foo-elf-ld"                 CACHE FILEPATH "FOO ld" )
SET( CMAKE_NM       "${FOO_BIN}/foo-elf-nm"                 CACHE FILEPATH "FOO nm" )
SET( CMAKE_AR       "${FOO_BIN}/foo-elf-ar${FOO_EXT}"       CACHE FILEPATH "FOO ar" )
SET( CMAKE_RANLIB   "${FOO_BIN}/foo-elf-ranlib${FOO_EXT}"   CACHE FILEPATH "FOO ranlib" )
SET( CMAKE_OBJDUMP  "${FOO_BIN}/foo-elf-objdump${FOO_EXT}"  CACHE FILEPATH "FOO objdump" )
SET( CMAKE_OBJCOPY  "${FOO_BIN}/foo-elf-objcopy${FOO_EXT}"  CACHE FILEPATH "FOO objcopy" )

INCLUDE( CMakeForceCompiler )
SET( CMAKE_SYSTEM_NAME Generic )
SET( UNIX TRUE CACHE BOOL "UNIX flag" )

CMAKE_FORCE_C_COMPILER(   "${FOO_BIN}/foo-elf-gcc${FOO_EXT}" foo-elf )
CMAKE_FORCE_CXX_COMPILER( "${FOO_BIN}/foo-elf-gcc${FOO_EXT}" foo-elf )

SET( CMAKE_ASMFOO_COMPILER "${FOO_BIN}/foo-elf-as" )
SET( CMAKE_ASMFOO_COMPILER_WORKS TRUE )
SET( CMAKE_ASMFOO_COMPILER_FORCED TRUE )

# where is the target environment 
SET( CMAKE_FIND_ROOT_PATH "${FOO_ROOT}" )

# search for programs in the build host directories
SET( CMAKE_FIND_ROOT_PATH_MODE_PROGRAM NEVER )
# for libraries and headers in the target directories
SET( CMAKE_FIND_ROOT_PATH_MODE_LIBRARY ONLY )
SET( CMAKE_FIND_ROOT_PATH_MODE_INCLUDE ONLY )

####################################################################
# very important - tell cmake to replace source file extension with
# the one specified for the object file. If this is not set the
# object files would have e.g. .c.o extension instead of .o
####################################################################
SET( CMAKE_C_OUTPUT_EXTENSION_REPLACE 1 )
SET( CMAKE_CXX_OUTPUT_EXTENSION_REPLACE 1 )

ENABLE_LANGUAGE( C CXX )

####################################################################
# preprocess definition file for the FOO assembler compiler
####################################################################
CONFIGURE_FILE(
  ${CMAKE_SOURCE_DIR}/utils/CMakeASMFOOCompiler.cmake.in
  ${CMAKE_BINARY_DIR}/CMakeFiles/CMakeASMFOOCompiler.cmake
  IMMEDIATE
)
SET( CMAKE_ASMFOO_OUTPUT_EXTENSION_REPLACE 1 )
SET( CMAKE_ASMFOO_COMPILER_ENV_VAR "ASMFOO" )

####################################################################
# This is required to have the right dependencies when CMakeASMFOOInformation.cmake is missing
####################################################################
SET( CMAKE_ASMFOO_INFORMATION_LOADED TRUE )

ENABLE_LANGUAGE( ASMFOO )

####################################################################
# setup project name, also enables C and CXX
####################################################################
PROJECT( FOO_PROJ )

ADD_LIBRARY( test src/test.c )
