cmake_minimum_required(VERSION 2.8) project(rkaiq_tool_server C CXX) add_compile_options(${ISP_HW_VERSION}) set(CMAKE_VERBOSE_MAKEFILE OFF) include_directories( ${PROJECT_SOURCE_DIR}/ ${PROJECT_SOURCE_DIR}/netserver/ ${PROJECT_SOURCE_DIR}/rkaiq/ ${PROJECT_SOURCE_DIR}/camera/ ${PROJECT_SOURCE_DIR}/mediactl/) if(CMAKE_COMPILER_IS_GNUCXX) set(CMAKE_CXX_FLAGS "-std=c++11 -fno-rtti ${CMAKE_CXX_FLAGS}") endif(CMAKE_COMPILER_IS_GNUCXX) aux_source_directory(${PROJECT_SOURCE_DIR}/logger/ LOGGER_SOURCE) aux_source_directory(${PROJECT_SOURCE_DIR}/netserver NET_SERVER_SOURCE) set(RKAIQ_SOURCE ${PROJECT_SOURCE_DIR}/rkaiq/rkaiq_api/rkaiq_media.cpp ${PROJECT_SOURCE_DIR}/rkaiq/rkaiq_api/rkaiq_socket.cpp ${PROJECT_SOURCE_DIR}/rkaiq/multiframe_process.cpp ${PROJECT_SOURCE_DIR}/rkaiq/rkaiq_online_protocol.cpp ${PROJECT_SOURCE_DIR}/rkaiq/rkaiq_raw_protocol.cpp ${PROJECT_SOURCE_DIR}/rkaiq/rkaiq_protocol.cpp ) aux_source_directory(${PROJECT_SOURCE_DIR}/camera/ CAMERA_SOURCE) aux_source_directory(${PROJECT_SOURCE_DIR}/mediactl/ MEDIACTL_SOURCE) option(BUILD_SANITIZER_STATIC "compile with sanitizer (static library linker)" OFF) if(BUILD_SANITIZER_STATIC) add_definitions(-fsanitize=address -static-libasan -g -ggdb -gdwarf -funwind-tables -rdynamic -O0 ) link_libraries(libasan.a dl m rt) endif() option(BUILD_DEBUG "compile with debug" OFF) if(BUILD_SANITIZER_STATIC) add_definitions(-g -ggdb -gdwarf -funwind-tables -rdynamic -O0 ) endif() option(BUILD_RKAIQ_API "depend on rkaiq api library" OFF) if(BUILD_RKAIQ_API) aux_source_directory(${PROJECT_SOURCE_DIR}/rkaiq/rkaiq_api RKAIQ_SOURCE) link_libraries(rkaiq) add_definitions(-DENABLE_RKAIQ_UAPI) endif() find_path(RKAIQ_API_INCLUDE_DIR NAMES rk_aiq_user_api_imgproc.h HINTS ${CMAKE_FIND_ROOT_PATH} PATH_SUFFIXES rkaiq/uAPI) include_directories(${RKAIQ_API_INCLUDE_DIR}/) include_directories(${RKAIQ_API_INCLUDE_DIR}/..) include_directories(${RKAIQ_API_INCLUDE_DIR}/../xcore) include_directories(${RKAIQ_API_INCLUDE_DIR}/../common) include_directories(${RKAIQ_API_INCLUDE_DIR}/../algos) include_directories(${RKAIQ_API_INCLUDE_DIR}/../iq_parser) include_directories(${RKAIQ_API_INCLUDE_DIR}/../iq_parser_v2) include_directories(${PROJECT_SOURCE_DIR}/rkaiq/rkaiq_api) option(BUILD_RKMEDIA "depend on rkmedia library" ON) option(BUILD_RKMEDIA_INDE "depend on rkmedia library independent" ON) if(BUILD_RKMEDIA) add_definitions(-DENABLE_RSTP_SERVER) if(BUILD_RKMEDIA_INDE) include_directories(${PROJECT_SOURCE_DIR}/rkmedia) include_directories(${PROJECT_SOURCE_DIR}/rkmedia/include) include_directories(${PROJECT_SOURCE_DIR}/rkmedia/librkmedia/include) include_directories(${PROJECT_SOURCE_DIR}/rkmedia/librkmedia/include/easymedia) add_subdirectory(rkmedia/librkmedia) set(RKMEDIA_SOURCE ${RKMEDIA_SOURCE} rkmedia/link_flow.cc rkmedia/sink_flow.cc rkmedia/source_flow.cc rkmedia/rtsp_server.cpp) link_libraries(rkmedia) else() find_package(PkgConfig QUIET) pkg_check_modules(PKG_EASYMEDIA QUIET "libeasymedia") set(EASYMEDIA_DEFINITIONS ${PKG_EASYMEDIA_CFLAGS_OTHER}) find_path(EASYMEDIA_INCLUDE_DIR NAMES buffer.h HINTS ${PKG_EASYMEDIA_INCLUDEDIR} ${PKG_EASYMEDIA_INCLUDE_DIRS} ${PROJECT_SOURCE_DIR}/rkmedia/include PATH_SUFFIXES easymedia) include_directories(${PROJECT_SOURCE_DIR}/rkmedia/) link_libraries(easymedia) include_directories(${EASYMEDIA_INCLUDE_DIR}/) aux_source_directory(${PROJECT_SOURCE_DIR}/rkmedia/ RKMEDIA_SOURCE) endif() endif() file(GLOB_RECURSE ALL_SOURCE_FILES *.cpp *.cc *.h) add_custom_target( clangformat COMMAND /usr/bin/clang-format -style=LLVM -i ${ALL_SOURCE_FILES}) set(RKAIQ_TOOL_SERVER_SOURCE ${LOGGER_SOURCE} ${NET_SERVER_SOURCE} ${RKAIQ_SOURCE} ${CAMERA_SOURCE} ${RKMEDIA_SOURCE} ${MEDIACTL_SOURCE} rkaiq_tool_server.cpp) add_executable(rkaiq_tool_server ${RKAIQ_TOOL_SERVER_SOURCE}) if(BUILD_RKMEDIA_INDE) add_dependencies(rkaiq_tool_server rkmedia) endif() target_link_libraries(rkaiq_tool_server pthread) install(TARGETS rkaiq_tool_server RUNTIME DESTINATION bin) option(BUILD_TEST "build test demo" OFF) if(BUILD_TEST) add_subdirectory(test) endif()