set(HEADERS
    asynctransfer.h
    imageprotocol.h
    imagetransfer.h
    common.h
    reconstruct3d.h
    reconstruct3d-pcl.h
    alignedallocator.h
    datablockprotocol.h
    imagepair.h
    imagepair-opencv.h
    bitconversions.h
    deviceinfo.h
    deviceenumeration.h
    internalinformation.h
    parameterinfo.h
    parametertransfer.h
    parametertransferdata.h
    scenescanparameters.h
    standardparameterids.h
    networking.h
)

set(SOURCES
    asynctransfer.cpp
    imageprotocol.cpp
    imagetransfer.cpp
    reconstruct3d.cpp
    datablockprotocol.cpp
    imagepair.cpp
    bitconversions.cpp
    deviceenumeration.cpp
    internalinformation.cpp
    parameterinfo.cpp
    parametertransfer.cpp
    scenescanparameters.cpp
    standardparameterids.cpp
    networking.cpp
)

if(NOT WIN32 OR MINGW)
    include(CheckCXXCompilerFlag)

    # Some useful flags
    set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -O3 -Wall")
    CHECK_CXX_COMPILER_FLAG("-march=native" NATIVE_ARCH_SUPPORT)
    if(NATIVE_ARCH_SUPPORT AND NOT DISABLE_NATIVE)
        set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -march=native")
    endif()

    # Activate c++11 support
    CHECK_CXX_COMPILER_FLAG("-std=c++11" COMPILER_SUPPORTS_CXX11)
    CHECK_CXX_COMPILER_FLAG("-std=c++0x" COMPILER_SUPPORTS_CXX0X)
    if(COMPILER_SUPPORTS_CXX11)
        set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -std=c++11")
    elseif(COMPILER_SUPPORTS_CXX0X)
        set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -std=c++0x")
    else()
        message(WARNING "The compiler ${CMAKE_CXX_COMPILER} has no C++11 support. Please use a different C++ compiler.")
    endif()
else()
    # Visual studio settings
    foreach(flag
            CMAKE_C_FLAGS_RELEASE CMAKE_C_FLAGS_RELWITHDEBINFO
            CMAKE_C_FLAGS_DEBUG CMAKE_C_FLAGS_DEBUG_INIT
            CMAKE_CXX_FLAGS_RELEASE  CMAKE_CXX_FLAGS_RELWITHDEBINFO
            CMAKE_CXX_FLAGS_DEBUG  CMAKE_CXX_FLAGS_DEBUG_INIT)
        string(REPLACE "/MD"  "/MT" "${flag}" "${${flag}}")
        set("${flag}" "${${flag}} /EHsc /arch:SSE4.1 /D__SSE__ /D__SSE2__ /D__SSE3__ /D__SSE4_1__")
    endforeach()
endif()


# Build static and shared version
add_library(visiontransfer${LIB_SUFFIX} SHARED
    ${HEADERS}
    ${SOURCES}
)

add_library(visiontransfer-static${LIB_SUFFIX} STATIC
    ${HEADERS}
    ${SOURCES}
)

if(WIN32)
    target_link_libraries(visiontransfer${LIB_SUFFIX} ws2_32 Iphlpapi)
    target_link_libraries(visiontransfer-static${LIB_SUFFIX} ws2_32 Iphlpapi)
else()
    set_target_properties(visiontransfer-static${LIB_SUFFIX}
       PROPERTIES COMPILE_FLAGS "-fPIC")
endif()

install(TARGETS visiontransfer${LIB_SUFFIX} DESTINATION lib)
install(TARGETS visiontransfer-static${LIB_SUFFIX} DESTINATION lib)
install(FILES ${HEADERS} DESTINATION include/visiontransfer)
