# Project generated by builder 0.10.23
CMAKE_MINIMUM_REQUIRED(VERSION 3.2)
SET(CMAKE_CXX_STANDARD 11)
PROJECT(usbadc10 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(USBADC10_AUTO_HIDE_SYMBOLS YES)
ELSE()
    set(USBADC10_AUTO_HIDE_SYMBOLS NO)
ENDIF()
OPTION(
    USBADC10_HIDE_SYMBOLS
    "Hide non-API symbols of library"
    ${USBADC10_AUTO_HIDE_SYMBOLS}
)
OPTION(
    USBADC10_STATIC_STD_LIBS
    "Link libgcc and libstdc++ statically, if available"
    NO
)
OPTION(
    USBADC10_BUILD_EXAMPLE
    "Build console example"
    OFF
)
IF(${USBADC10_HIDE_SYMBOLS})
    IF(${CMAKE_SYSTEM_NAME} STREQUAL Darwin)
        set(
            CMAKE_SHARED_LINKER_FLAGS
            ${CMAKE_SHARED_LINKER_FLAGS}
            "-exported_symbols_list ${CMAKE_CURRENT_SOURCE_DIR}/macos_export_symbols"
        )
    ELSE()
        set(
            CMAKE_SHARED_LINKER_FLAGS
            ${CMAKE_SHARED_LINKER_FLAGS}
            "-Wl,--version-script=${CMAKE_CURRENT_SOURCE_DIR}/gcc_export_symbols"
        )
    ENDIF()
ELSE()
    MESSAGE(
        NOTICE: " Won't hide non-API library symbols. Оn 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 Windows)
    add_definitions( -D_CRT_SECURE_NO_WARNINGS)
endif()
ADD_LIBRARY(usbadc10 SHARED usbadc10.h commands.cpp logging.cpp profiles.cpp version.rc)
SET_TARGET_PROPERTIES(usbadc10 PROPERTIES C_VISIBILITY_PRESET hidden)
SET_TARGET_PROPERTIES(usbadc10 PROPERTIES CXX_VISIBILITY_PRESET hidden)
SET_TARGET_PROPERTIES(usbadc10 PROPERTIES VISIBILITY_INLINES_HIDDEN TRUE)
SET_TARGET_PROPERTIES(usbadc10 PROPERTIES COMPILE_DEFINITIONS "USBADC10_URPC_BUILDING_STAGE")
SET_TARGET_PROPERTIES(usbadc10 PROPERTIES PUBLIC_HEADER usbadc10.h)

IF(UNIX)
    include(GNUInstallDirs)
    INSTALL(TARGETS usbadc10
        LIBRARY DESTINATION ${CMAKE_INSTALL_LIBDIR}
        PUBLIC_HEADER DESTINATION ${CMAKE_INSTALL_INCLUDEDIR})
ENDIF()

if(MSVC)
    target_compile_options(usbadc10 PRIVATE /W3 /WX)
else()
    target_compile_options(usbadc10 PRIVATE -Wall -Wextra -Werror)
endif()

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(URPC_ENABLE_UDP ON CACHE INTERNAL "")
    SET(ZF_LOG_LIBRARY_PREFIX "usbadc10_" 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(usbadc10 PRIVATE vendor vendor/liburpc vendor/liburpc/vendor/zf_log/zf_log)
IF(${CMAKE_SYSTEM_NAME} STREQUAL Windows)
    set(USBADC10_LINK_LIBRARIES urpc  Ws2_32)
ELSE ()
    set(USBADC10_LINK_LIBRARIES urpc)
ENDIF()
IF(
    (${USBADC10_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(
        USBADC10_LINK_LIBRARIES
        "${USBADC10_LINK_LIBRARIES}" -static-libgcc -static-libstdc++
    )
ENDIF()
TARGET_LINK_LIBRARIES(usbadc10 ${USBADC10_LINK_LIBRARIES})

SET(USBADC10_INCLUDE_DIRS ${CMAKE_INSTALL_INCLUDEDIR})
SET(USBADC10_LIBRARIES
    ${CMAKE_INSTALL_LIBDIR}/${CMAKE_SHARED_LIBRARY_PREFIX}usbadc10${CMAKE_SHARED_LIBRARY_SUFFIX})
INCLUDE(CMakePackageConfigHelpers)
CONFIGURE_PACKAGE_CONFIG_FILE(
    "${PROJECT_SOURCE_DIR}/cmake/usbadc10Config.cmake.in"
    "${PROJECT_BINARY_DIR}/usbadc10Config.cmake"
    INSTALL_DESTINATION ${CMAKE_INSTALL_DATAROOTDIR}/usbadc10/cmake
    PATH_VARS USBADC10_INCLUDE_DIRS USBADC10_LIBRARIES
    NO_CHECK_REQUIRED_COMPONENTS_MACRO
)
INSTALL(FILES "${PROJECT_BINARY_DIR}/usbadc10Config.cmake"
        DESTINATION ${CMAKE_INSTALL_DATAROOTDIR}/usbadc10/cmake)

IF(USBADC10_BUILD_EXAMPLE)
    ADD_EXECUTABLE(USBADC10_example example.cpp)
    TARGET_LINK_LIBRARIES(USBADC10_example usbadc10)
    IF(WIN32)
        SET_PROPERTY(DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR}
                     PROPERTY VS_STARTUP_PROJECT USBADC10_example)
    ENDIF()
ENDIF()
