CMAKE_MINIMUM_REQUIRED(VERSION 2.8)

add_definitions( -DZF_LOG_LEVEL=ZF_LOG_WARN )

macro(use_cxx11)
  if (CMAKE_VERSION VERSION_LESS "3.1")
    if (CMAKE_CXX_COMPILER_ID STREQUAL "GNU")
      set (CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -std=gnu++11")
    endif ()
  else ()
    set (CMAKE_CXX_STANDARD 11)
  endif ()
endmacro(use_cxx11)

use_cxx11()

FUNCTION(ADD_SUBDIRECTORY_BINDY)
    SET(BUILD_SHARED_LIBS OFF CACHE INTERNAL "")
    SET(BUILD_EXAMPLE OFF CACHE INTERNAL "")
    ADD_SUBDIRECTORY(vendor/bindy)
ENDFUNCTION()
ADD_SUBDIRECTORY_BINDY()
INCLUDE_DIRECTORIES(vendor)

GET_DIRECTORY_PROPERTY(HAS_PARENT PARENT_DIRECTORY)
IF(NOT HAS_PARENT)
    PROJECT(urpc-xinet-server CXX)
    FUNCTION(ADD_SUBDIRECTORY_LIBURPC)
        SET(BUILD_SHARED_LIBS OFF CACHE INTERNAL "")
        SET(URPC_ENABLE_SERIAL ON CACHE INTERNAL "")
        SET(URPC_ENABLE_XINET OFF CACHE INTERNAL "")
        ADD_SUBDIRECTORY(.. liburpc)
    ENDFUNCTION()
    ADD_SUBDIRECTORY_LIBURPC()
    ADD_EXECUTABLE(urpc-xinet-server common.cpp server.cpp supervisor.cpp)
    TARGET_LINK_LIBRARIES(urpc-xinet-server zf_log urpc bindy)
ELSE()
    PROJECT(urpc-xinet CXX)
    ADD_LIBRARY(urpc-xinet STATIC common.cpp devxinet.cpp)
    TARGET_LINK_LIBRARIES(urpc-xinet bindy)
ENDIF()
