# Project generated by builder 0.7.2
CMAKE_MINIMUM_REQUIRED(VERSION 3.2)
SET(CMAKE_CXX_STANDARD 11)
PROJECT(ivm CXX)
# Hide symbols automatically, if this is GNU-compatible compiler
IF(
    ("${CMAKE_CXX_COMPILER_ID}" STREQUAL GNU)
    OR ("${CMAKE_CXX_COMPILER_ID}" STREQUAL Clang)
    OR ("${CMAKE_CXX_COMPILER_ID}" STREQUAL AppleClang)
)
    set(IVM_AUTO_HIDE_SYMBOLS YES)
ELSE()
    set(IVM_AUTO_HIDE_SYMBOLS NO)
ENDIF()
OPTION(
    IVM_HIDE_SYMBOLS
    "Hide non-API symbols of library"
    ${IVM_AUTO_HIDE_SYMBOLS}
)
OPTION(
    IVM_STATIC_STD_LIBS
    "Link libgcc and libstdc++ statically, if available"
    NO
)
IF(${IVM_HIDE_SYMBOLS})
    set(
        CMAKE_SHARED_LINKER_FLAGS
        ${CMAKE_SHARED_LINKER_FLAGS}
        "-Wl,--version-script=${CMAKE_CURRENT_SOURCE_DIR}/gcc_export_symbols"
    )
ELSE()
    MESSAGE(
        WARNING
        "Will not hide non-API symbols of library. Note, on some platforms it may cause segmentation faults."
    )
ENDIF()
IF(${CMAKE_SYSTEM_NAME} STREQUAL Darwin)
    # It is required to build a rpath framework
    CMAKE_POLICY(SET CMP0042 NEW)
ENDIF()
IF(${CMAKE_SYSTEM_NAME} STREQUAL Darwin)
    # It is required to build a rpath framework
    CMAKE_POLICY(SET CMP0042 NEW)
ENDIF()
ADD_LIBRARY(ivm SHARED ivm.h commands.cpp logging.cpp profiles.cpp)
SET_TARGET_PROPERTIES(ivm PROPERTIES C_VISIBILITY_PRESET hidden)
SET_TARGET_PROPERTIES(ivm PROPERTIES CXX_VISIBILITY_PRESET hidden)
SET_TARGET_PROPERTIES(ivm PROPERTIES VISIBILITY_INLINES_HIDDEN TRUE)
SET_TARGET_PROPERTIES(ivm PROPERTIES COMPILE_DEFINITIONS "IVM_URPC_BUILDING_STAGE")
FUNCTION(ADD_LIBRARY_URPC)
    SET(CMAKE_POSITION_INDEPENDENT_CODE ON)
    SET(BUILD_SHARED_LIBS OFF CACHE INTERNAL "")
    SET(URPC_ENABLE_XINET ON CACHE INTERNAL "")
    SET(URPC_ENABLE_SERIAL ON CACHE INTERNAL "")
    SET(ZF_LOG_LIBRARY_PREFIX "ivm_" CACHE INTERNAL "")
    SET(ZF_LOG_OPTIMIZE_SIZE OFF CACHE INTERNAL "")
    SET(ZF_LOG_USE_ANDROID_LOG OFF CACHE INTERNAL "")
    SET(ZF_LOG_USE_DEBUGSTRING OFF CACHE INTERNAL "")
    SET(ZF_LOG_USE_NSLOG OFF CACHE INTERNAL "")
    ADD_SUBDIRECTORY(vendor/liburpc)
ENDFUNCTION()
ADD_LIBRARY_URPC()
SET_TARGET_PROPERTIES(zf_log PROPERTIES COMPILE_DEFINITIONS ZF_LOG_EXTERN_GLOBAL_OUTPUT)
TARGET_INCLUDE_DIRECTORIES(ivm PRIVATE vendor vendor/liburpc)
set(IVM_LINK_LIBRARIES urpc)
IF(
    (${IVM_STATIC_STD_LIBS})
    AND (
        ("${CMAKE_CXX_COMPILER_ID}" STREQUAL GNU)
        OR ("${CMAKE_CXX_COMPILER_ID}" STREQUAL Clang)
        OR ("${CMAKE_CXX_COMPILER_ID}" STREQUAL AppleClang)
    )
)
    SET(
        IVM_LINK_LIBRARIES
        "${IVM_LINK_LIBRARIES}" -static-libgcc -static-libstdc++
    )
ENDIF()
TARGET_LINK_LIBRARIES(ivm ${IVM_LINK_LIBRARIES})
