CMAKE_MINIMUM_REQUIRED(VERSION 2.6.0)
PROJECT(Recast)

INCLUDE(CheckCSourceCompiles)
INCLUDE(CheckCCompilerFlag)

# I hate that they define "WIN32" ... we're about to move to Win64...I hope!
IF(WIN32 AND NOT WINDOWS)
    SET(WINDOWS TRUE)
ENDIF(WIN32 AND NOT WINDOWS)

# Bleh, let's do it for "APPLE" too.
IF(APPLE AND NOT MACOSX)
    SET(MACOSX TRUE)
ENDIF(APPLE AND NOT MACOSX)

# ...and Linux...
IF(CMAKE_SYSTEM_NAME STREQUAL "Linux")
    SET(LINUX TRUE)
ENDIF(CMAKE_SYSTEM_NAME STREQUAL "Linux")

IF(CMAKE_COMPILER_IS_GNUCC)
    SET(GCC TRUE)
ENDIF(CMAKE_COMPILER_IS_GNUCC)

ADD_DEFINITIONS(-w)  # !!! FIXME

IF(GCC)
    ADD_DEFINITIONS(-pipe -Wall -fsigned-char)

    # See if -fno-stack-protector is available to us.
    # It doesn't seem to work well, and it adds bulk to the binary.
    CHECK_C_COMPILER_FLAG("-fno-stack-protector" OVERGROWTH_GCC_HAS_STACKPROT)
    IF(OVERGROWTH_GCC_HAS_STACKPROT)
        ADD_DEFINITIONS(-fno-stack-protector)
    ENDIF(OVERGROWTH_GCC_HAS_STACKPROT)

    # CMake mailing list had this hack for getting rid of -rdynamic:
    #   http://public.kitware.com/pipermail/cmake/2006-July/010404.html
    IF(CMAKE_SYSTEM_NAME STREQUAL "Linux")
        SET(CMAKE_SHARED_LIBRARY_LINK_C_FLAGS)
        SET(CMAKE_SHARED_LIBRARY_LINK_CXX_FLAGS)
    ENDIF(CMAKE_SYSTEM_NAME STREQUAL "Linux")
ENDIF(GCC)

IF(UNIX)  # This is Linux _and_ Mac OS X (and other things, too!).
    ADD_DEFINITIONS(-DPLATFORM_UNIX=1)
ENDIF(UNIX)

IF(LINUX)
    ADD_DEFINITIONS(-DPLATFORM_LINUX=1)
ENDIF(LINUX)

IF(MACOSX)
    ADD_DEFINITIONS(-DPLATFORM_LINUX=1)
ENDIF(MACOSX)

IF(WINDOWS)
    ADD_DEFINITIONS(-DPLATFORM_WINDOWS=1)
ENDIF(WINDOWS)

SET(SRCDIR "${CMAKE_SOURCE_DIR}/../Source")
SET(LIBDIR "${CMAKE_SOURCE_DIR}/../Libraries")

INCLUDE_DIRECTORIES(
    ${SRCDIR}/Recast
    ${LIBDIR}/Linux/include
)

FILE(GLOB RECAST_SRCS
    ${SRCDIR}/Recast/*.cpp
)

ADD_LIBRARY(Recast STATIC ${RECAST_SRCS})

