project(R3)
cmake_minimum_required(VERSION 2.6)

# setup project-specific variables
set(R3_VENDOR_DIR ${R3_SOURCE_DIR}/vendor)
if(CMAKE_HOST_UNIX)
        set(R3_REBOL_PLATFORM Linux-libc6-x86)
        set(R3_PLATFORM_SOURCE_DIR posix)
        set(R3_TO_TARGET LINUX)
elseif(CMAKE_HOST_WIN32)
        set(R3_REBOL_PLATFORM Windows-win32-x86)
        set(R3_PLATFORM_SOURCE_DIR win32)
        set(R3_TO_TARGET WIN32)
endif()

# generate a header file to pass settings to the source code
configure_file(
        ${R3_SOURCE_DIR}/src/include/reb-to.h.in
        ${R3_BINARY_DIR}/src/include/reb-to.h)

set(R3_SOURCES
        src/os/host-main.c
        src/os/host-args.c
        src/os/host-device.c
        src/os/host-stdio.c
        src/os/dev-dns.c
        src/os/dev-net.c
        src/os/${R3_PLATFORM_SOURCE_DIR}/host-init.c
        src/os/${R3_PLATFORM_SOURCE_DIR}/host-lib.c
        src/os/${R3_PLATFORM_SOURCE_DIR}/dev-file.c
        src/os/${R3_PLATFORM_SOURCE_DIR}/dev-stdio.c)

if(CMAKE_HOST_UNIX)
        set(R3_PLATFORM_SOURCES
                src/os/${R3_PLATFORM_SOURCE_DIR}/host-readline.c)
elseif(CMAKE_HOST_WIN32)
        set(R3_PLATFORM_SOURCES
                src/os/${R3_PLATFORM_SOURCE_DIR}/dev-event.c
                src/os/${R3_PLATFORM_SOURCE_DIR}/dev-clipboard.c)
endif()

include_directories(
        ${R3_SOURCE_DIR}/src/include
        ${R3_SOURCE_DIR}/src/include/${R3_PLATFORM_SOURCE_DIR}
        ${R3_BINARY_DIR}/src/include)

link_directories(
        ${R3_VENDOR_DIR}/r3-host-a96/lib/${R3_REBOL_PLATFORM})

# our primary target: the R3 core executable
add_executable(core
        ${R3_SOURCES}
        ${R3_PLATFORM_SOURCES})


# platform-specific flags
if(CMAKE_HOST_UNIX)
        target_link_libraries(core
                r3)
        set_target_properties(core PROPERTIES
                COMPILE_FLAGS "-m32 -O1 -D_FILE_OFFSET_BITS=64"
                LINK_FLAGS "-m32")
elseif(CMAKE_HOST_WIN32)
        target_link_libraries(core
                r3lib
                wsock32)
        set_target_properties(core PROPERTIES
                COMPILE_FLAGS "/DUNICODE"
                LINK_FLAGS "/SUBSYSTEM:WINDOWS")
endif()