project(opencv_ffmpeg)

include_directories("${CMAKE_CURRENT_SOURCE_DIR}")
include_directories(
    "${CMAKE_SOURCE_DIR}/3rdparty/include"
    "${CMAKE_SOURCE_DIR}/3rdparty/include/ffmpeg_"
    )
include_directories(
    "${CMAKE_SOURCE_DIR}/modules/highgui/src"
    "${CMAKE_SOURCE_DIR}/modules/core/include"
    "${CMAKE_SOURCE_DIR}/modules/imgproc/include"
    "${CMAKE_SOURCE_DIR}/modules/highgui/include"
    )
link_directories("${CMAKE_SOURCE_DIR}/3rdparty/lib")

set(the_target opencv_ffmpeg)
add_library(${the_target} ffopencv.cpp ffopencv.h)

add_dependencies(${the_target} opencv_core)
target_link_libraries(${the_target} opencv_core)

if (NOT MSVC)
    #target_link_libraries(${the_target}
    #                  ${CMAKE_SOURCE_DIR}/3rdparty/lib/libgcc_.a
    #                  ${CMAKE_SOURCE_DIR}/3rdparty/lib/libmingwex_.a)
    if(WIN32 AND MINGW64)
        target_link_libraries(${the_target} ${CMAKE_SOURCE_DIR}/3rdparty/lib/libavformat64.a
                              ${CMAKE_SOURCE_DIR}/3rdparty/lib/libavcodec64.a
                              ${CMAKE_SOURCE_DIR}/3rdparty/lib/libavutil64.a
                              ${CMAKE_SOURCE_DIR}/3rdparty/lib/libswscale64.a
                              libws2_32.a)
    else()
        target_link_libraries(${the_target} ${CMAKE_SOURCE_DIR}/3rdparty/lib/libavformat.a
                              ${CMAKE_SOURCE_DIR}/3rdparty/lib/libavcodec.a
                              ${CMAKE_SOURCE_DIR}/3rdparty/lib/libavutil.a
                              ${CMAKE_SOURCE_DIR}/3rdparty/lib/libswscale.a
                              ${CMAKE_SOURCE_DIR}/3rdparty/lib/libwsock32_.a)
    endif()
endif ()

set_target_properties(${the_target} PROPERTIES
                      DEBUG_POSTFIX "${OPENCV_DEBUG_POSTFIX}"
                      VERSION ${OPENCV_VERSION}
                      OUTPUT_NAME "${the_target}${OPENCV_DLLVERSION}"
                      DEFINE_SYMBOL "CVAPI_EXPORTS"
                      ARCHIVE_OUTPUT_DIRECTORY "${CMAKE_BINARY_DIR}/lib/"
                      RUNTIME_OUTPUT_DIRECTORY "${CMAKE_BINARY_DIR}/bin/"
                      )

install(TARGETS ${the_target}
    RUNTIME DESTINATION bin COMPONENT main
    ARCHIVE DESTINATION lib COMPONENT main
    LIBRARY DESTINATION lib COMPONENT main
    )