cmake_minimum_required(VERSION 3.9) project( SecMedia LANGUAGES C CXX VERSION 0.0.1 DESCRIPTION "Security Media Package") set(CMAKE_CXX_STANDARD 11) if(${CMAKE_BUILD_TYPE} MATCHES "Release") message(STATUS "Release版本") set(BuildType "Release") add_definitions(-DNDEBUG) elseif(${CMAKE_BUILD_TYPE} MATCHES "MinSizeRel") message(STATUS "MinSizeRel版本") set(BuildType "MinSizeRel") else() set(BuildType "Debug") message(STATUS "Debug版本") add_definitions(-DDEBUG_LOG) add_definitions(-DNDEBUG) add_definitions(-DDUMP_FILE) endif() # 加载自定义模块 add_definitions(-DSIGN_ENABLE) set(CMAKE_MODULE_PATH ${CMAKE_MODULE_PATH} "${CMAKE_CURRENT_SOURCE_DIR}/cmake") set(LIBRARY_OUTPUT_PATH ${CMAKE_CURRENT_SOURCE_DIR}/release/lib/${BuildType}) set(EXECUTABLE_OUTPUT_PATH ${CMAKE_CURRENT_SOURCE_DIR}/release/out) set(CMAKE_C_VISIBILITY_PRESET hidden) set(CMAKE_CXX_VISIBILITY_PRESET hidden) # set(CMAKE_C_FLAGS$ "${CMAKE_C_FLAGS} -fvisibility = hidden") # set(CMAKE_CXX_FLAGS$ "${CMAKE_CXX_FLAGS} -fvisibility = hidden") # set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -fsanitize=address # -fno-omit-frame-pointer") set(SecMedia_Root ${CMAKE_CURRENT_SOURCE_DIR}/src) add_compile_options(-fPIC) # add_compile_options(-fvisibility=hidden) add_compile_options(-std=c++11) # add_compile_options(-mcpu=cortex-a7 -mfloat-abi=softfp -mfpu=neon-vfpv4 # -mno-unaligned-access -fno-aggressive-loop-optimizations -Wcast-align) include(GNUInstallDirs) include(GenerateExportHeader) # media-server ps dec enc set(MediaServer_Root ${SecMedia_Root}/3rdpart/media-server) add_library(rtp STATIC "") aux_source_directory(${MediaServer_Root}/libmpeg/include src_rtp) aux_source_directory(${MediaServer_Root}/libmpeg/source src_rtp) aux_source_directory(${MediaServer_Root}/librtp/include src_rtp) aux_source_directory(${MediaServer_Root}/librtp/source src_rtp) aux_source_directory(${MediaServer_Root}/librtp/payload src_rtp) target_sources(rtp PRIVATE ${src_rtp}) foreach(src ${src_rtp}) message(STATUS "rtp src: ${src}") endforeach() target_include_directories( rtp PUBLIC ${MediaServer_Root}/librtp/include ${MediaServer_Root}/libmpeg/include ${MediaServer_Root}/libmpeg/source) include_directories(${SecMedia_Root}/SVAC/src/svac_src) # 添加svac解密 aux_source_directory(${SecMedia_Root}/SVAC/src/sm2sm3 src_DEC) aux_source_directory(${SecMedia_Root}/SVAC/src/svac_src src_DEC) add_library(SVAC_DEC STATIC ${src_DEC}) # 添加svac加密 include_directories(${DEC_ENC_Algoruithm}/SVAC/svac_enc) file(GLOB # src_DEC_ENC ${DEC_ENC_Algorithm}/SVAC/svac_enc/*/*.c # ${DEC_ENC_Algorithm}/SVAC/svac_enc/*/*.h) aux_source_directory(${SecMedia_Root}/SVAC/src/sm2sm3_enc src_ENC) aux_source_directory(${SecMedia_Root}/SVAC/src/svac_src src_ENC) add_library(SVAC_ENC STATIC ${src_ENC}) list(APPEND LINK_LIB_SVAC_LIST SVAC_DEC) list(APPEND LINK_LIB_SVAC_LIST SVAC_ENC) # 添加密码卡库 add_definitions(-DENABLE_HARDWARE_SIGN) list(APPEND LINK_LIB_SVAC_LIST # sm.so) include_directories(include src) # add_definitions(-DGENERATE_EXPORT) # file(GLOB SecMedia_src_list ${SecMedia_Root}/SVAC/./*.c # ${SecMedia_Root}/SVAC/./*.h) macro(append_srcs out_var root_dir) file(GLOB_RECURSE srcs ${root_dir}/*.c ${root_dir}/*.cpp) list(APPEND ${out_var} ${srcs}) endmacro(append_srcs) append_srcs(SecMedia_src_list ${SecMedia_Root}/DecEnc) append_srcs(SecMedia_src_list ${SecMedia_Root}/Decrypt) append_srcs(SecMedia_src_list ${SecMedia_Root}/Encrypt) append_srcs(SecMedia_src_list ${SecMedia_Root}/GB28181) append_srcs(SecMedia_src_list ${SecMedia_Root}/HuaWei) # append_srcs(SecMedia_src_list ${SecMedia_Root}/SVAC) append_srcs(SecMedia_src_list ${SecMedia_Root}/base) # message(STATUS "SRCS: ${SecMedia_src_list}") # file( GLOB SecMedia_src_list ${SecMedia_Root}/*/*.cpp ${SecMedia_Root}/*/*.h # ${SecMedia_Root}/*/*.c ${SecMedia_Root}/*/*/*.cpp ${SecMedia_Root}/*/*/*.h # ${SecMedia_Root}/*/*/*.c ) file(GLOB SecMedia_api_list ${CMAKE_CURRENT_SOURCE_DIR}/include/common.h) # # target_compile_options(${PROJECT_NAME} PRIVATE -fvisibility=hidden) # list(APPEND LINK_LIB_LIST ${LINK_LIB_SVAC_LIST}) # find_package(Threads REQUIRED) add_library(${PROJECT_NAME} SHARED ${SecMedia_src_list}) # add_library(${PROJECT_NAME} STATIC ${SecMedia_src_list}) target_link_libraries(${PROJECT_NAME} PUBLIC ${LINK_LIB_SVAC_LIST} rtp Threads::Threads) target_include_directories( ${PROJECT_NAME} PRIVATE ${SecMedia_Root} ${SecMedia_Root}/3rdpart/media-server/libdash/include ${SecMedia_Root}/3rdpart/media-server/libflv/include ${SecMedia_Root}/3rdpart/media-server/libhls/include ${SecMedia_Root}/3rdpart/media-server/libmov/include ${SecMedia_Root}/3rdpart/media-server/libmpeg/include ${SecMedia_Root}/3rdpart/media-server/librtmp/include ${SecMedia_Root}/3rdpart/media-server/librtp/include ${SecMedia_Root}/3rdpart/media-server/librtsp/include ${SecMedia_Root}/3rdpart/media-server/libsip/include) # set_target_properties(${PROJECT_NAME} PROPERTIES VERSION ${PROJECT_VERSION} # SOVERSION 1 PUBLIC_HEADER ${SecMedia_api_list} ) CXX_VISIBILITY_PRESET hidden # CMAKE_C_FLAGS hidden) list(APPEND LINK_LIB_LIST ${PROJECT_NAME}) list(APPEND LINK_LIB_LIST pthread) # 查找jemalloc是否安装 find_package(JEMALLOC QUIET) if(JEMALLOC_FOUND) message(STATUS "found library:\"${JEMALLOC_LIBRARIES}\"") include_directories(${JEMALLOC_INCLUDE_DIR}) list(APPEND LINK_LIB_LIST ${JEMALLOC_LIBRARIES}) else() message(WARNING "JEMALLOC not found") endif() # set(LINK_LIB_LIST ) MESSAGE(STATUS ${SecMedia_api_list}) # configure_file(SecMedia.pc.in SecMedia.pc @ONLY) # install(TARGETS ${PROJECT_NAME} LIBRARY DESTINATION ${CMAKE_INSTALL_LIBDIR} # PUBLIC_HEADER DESTINATION ${CMAKE_INSTALL_INCLUDEDIR}) install(FILES # ${CMAKE_BINARY_DIR}/${PROJECT_NAME}.pc DESTINATION # ${CMAKE_INSTALL_DATAROOTDIR}/pkgconfig) if(BUILD_TOOLS) add_subdirectory(test) add_subdirectory(PcapSender) add_subdirectory(PcapRawSender) add_subdirectory(SecSetGen) endif(BUILD_TOOLS)