Files
2026-08-24 10:03:24 +08:00

243 lines
6.2 KiB
CMake

cmake_minimum_required (VERSION 3.5)
project(aml_mp_sdk)
#Version
execute_process(
COMMAND bash -c "cd ${PROJECT_SOURCE_DIR}; git rev-parse --verify --abbrev-ref HEAD"
OUTPUT_VARIABLE BRANCH
OUTPUT_STRIP_TRAILING_WHITESPACE
)
execute_process(
COMMAND bash -c "cd ${PROJECT_SOURCE_DIR}; git rev-parse --verify @{0}"
OUTPUT_VARIABLE COMMIT
OUTPUT_STRIP_TRAILING_WHITESPACE
)
execute_process(
COMMAND bash -c "cd ${PROJECT_SOURCE_DIR}; git log -1 --pretty=format:%cd"
OUTPUT_VARIABLE COMMIT_DATE
OUTPUT_STRIP_TRAILING_WHITESPACE
)
execute_process(
COMMAND bash -c "TZ='CST-8' date +'%a %b %d %H:%M:%S %Y %z'"
OUTPUT_VARIABLE BUILD_TIME
OUTPUT_STRIP_TRAILING_WHITESPACE
)
execute_process(
COMMAND bash -c "cd ${PROJECT_SOURCE_DIR}; id -un"
OUTPUT_VARIABLE BUILD_NAME
OUTPUT_STRIP_TRAILING_WHITESPACE
)
execute_process(
COMMAND bash -c "cd ${PROJECT_SOURCE_DIR}; git log -10 | grep 'Change-Id:' -m 1 | cut -d':' -f 2 | tr -d ' '"
OUTPUT_VARIABLE CHANGE_ID
OUTPUT_STRIP_TRAILING_WHITESPACE
)
execute_process(
COMMAND bash -c "cd ${PROJECT_SOURCE_DIR}; git diff --numstat | wc -l"
OUTPUT_VARIABLE MODIFIED_FILES
OUTPUT_STRIP_TRAILING_WHITESPACE
)
execute_process(
COMMAND bash -c "cd ${PROJECT_SOURCE_DIR}; git diff --cached --numstat | wc -l"
OUTPUT_VARIABLE STAGED_FILES
OUTPUT_STRIP_TRAILING_WHITESPACE
)
math(EXPR WORKDIR_STATUS "${MODIFIED_FILES} + ${STAGED_FILES}")
#Version
OPTION(HAVE_CTC "CTC player" OFF)
OPTION(HAVE_SUBTITLE "subtitle" ON)
OPTION(HAVE_VMXIPTV "verimatrix iptv" ON)
OPTION(HAVE_VMXWEB "verimatrix web" ON)
OPTION(HAVE_NAGRAWEB "nagra web" ON)
OPTION(HAVE_WVCAS "widevine cas" OFF)
OPTION(HAVE_CAS_HAL "CAS HAL" ON)
OPTION(HAVE_LIBDVR "libdvr" ON)
OPTION(HAVE_DEMO "tests" ON)
OPTION(HAVE_MEDIAPLAYER "mediaplayer" ON)
SET(AML_MP_PLAYER_SRC
player/Aml_MP.cpp
player/Aml_MP_Player.cpp
player/Aml_MP_PlayerImpl.cpp
player/AmlPlayerBase.cpp
player/AmlTsPlayer.cpp
player/AmlDummyTsPlayer.cpp
)
SET(AML_MP_CAS_SRC
cas/Aml_MP_CAS.cpp
cas/AmlCasBase.cpp
cas/AmlDvbCasHal.cpp
cas/AmCasLibWrapper.cpp
)
SET(AML_MP_DVR_SRC
dvr/Aml_MP_DVR.cpp
dvr/AmlDVRPlayer.cpp
dvr/AmlDVRRecorder.cpp
)
SET(AML_MP_UTILS_SRC
utils/AmlMpAtomizer.cpp
utils/AmlMpBitReader.cpp
utils/AmlMpBuffer.cpp
utils/AmlMpConfig.cpp
utils/AmlMpEventHandler.cpp
utils/AmlMpEventLooper.cpp
utils/AmlMpEventLooperRoster.cpp
utils/AmlMpLooper.cpp
utils/AmlMpMessage.cpp
utils/AmlMpRefBase.cpp
utils/AmlMpStrongPointer.cpp
utils/AmlMpThread.cpp
utils/AmlMpUtils.cpp
utils/AmlMpChunkFifo.cpp
utils/Amlsysfsutils.cpp
utils/AmlMpPlayerRoster.cpp
utils/json/lib_json/json_reader.cpp
utils/json/lib_json/json_value.cpp
utils/json/lib_json/json_writer.cpp
utils/AmlMpCodecCapability.cpp
utils/AmlMpSignalHandler.cpp
)
SET(AML_MP_DEMUX_SRC
demux/AmlDemuxBase.cpp
demux/AmlHwDemux.cpp
demux/AmlSwDemux.cpp
demux/AmlTsParser.cpp
demux/AmlESQueue.cpp
)
#OPTION SETTING START
SET(AML_MP_DEFINITIONS JSON_USE_EXCEPTION=0 JSONCPP_NO_LOCALE_SUPPORT)
IF(HAVE_VMXIPTV)
LIST(APPEND AML_MP_CAS_SRC cas/vmx_iptvcas/AmlVMXIptvCas_V2.cpp)
LIST(APPEND AML_MP_DEFINITIONS HAVE_VMXIPTV_CAS_V2)
ENDIF()
IF(HAVE_VMXWEB)
LIST(APPEND AML_MP_CAS_SRC cas/vmx_webcas/AmlVMXWebCas.cpp)
LIST(APPEND AML_MP_DEFINITIONS HAVE_VMXWEB_CAS)
ENDIF()
IF(HAVE_NAGRAWEB)
LIST(APPEND AML_MP_CAS_SRC cas/nagra_webcas/AmlNagraWebCas.cpp)
LIST(APPEND AML_MP_DEFINITIONS HAVE_NAGRAWEB_CAS)
ENDIF()
IF(HAVE_WVCAS)
LIST(APPEND AML_MP_CAS_SRC cas/wv_iptvcas/AmlWVIptvCas_V2.cpp)
LIST(APPEND AML_MP_DEFINITIONS HAVE_WVIPTV_CAS_V2)
ENDIF()
IF(HAVE_SUBTITLE)
LIST(APPEND AML_MP_DEFINITIONS HAVE_SUBTITLE)
LIST(APPEND subtitle_LINK_LIBRARIES subtitleclient)
ENDIF()
IF(HAVE_CTC)
LIST(APPEND AML_MP_DEFINITIONS HAVE_CTC)
ENDIF()
IF(HAVE_CAS_HAL)
LIST(APPEND AML_MP_DEFINITIONS HAVE_CAS_HAL)
FIND_PATH(libamcas_INCLUDE_DIRS am_cas.h PATH_SUFFIXES libamcas REQUIRED)
LIST(APPEND libcas_LINK_LIBRARIES amcas)
ENDIF()
IF(HAVE_LIBDVR)
LIST(APPEND AML_MP_DEFINITIONS HAVE_LIBDVR)
FIND_PATH(libdvr_INCLUDE_DIRS dvr_wrapper.h PATH_SUFFIXES libdvr REQUIRED)
LIST(APPEND libdvr_LINK_LIBRARIES amdvr)
ENDIF()
#OPTION SETTING DONE
IF(CMAKE_SYSTEM_NAME MATCHES "Linux")
LIST(APPEND AML_MP_DEFINITIONS HAVE_VERSION_INFO)
LIST(APPEND AML_MP_DEFINITIONS MODULE_BRANCH_NAME="${BRANCH}")
LIST(APPEND AML_MP_DEFINITIONS MODULE_GIT_VERSION="${COMMIT}")
LIST(APPEND AML_MP_DEFINITIONS MODULE_CHANGE_ID="${CHANGE_ID}")
LIST(APPEND AML_MP_DEFINITIONS MODULE_COMMIT_DATE="${COMMIT_DATE}")
LIST(APPEND AML_MP_DEFINITIONS MODULE_BUILD_TIME="${BUILD_TIME}")
LIST(APPEND AML_MP_DEFINITIONS MODULE_BUILD_NAME="${BUILD_NAME}")
LIST(APPEND AML_MP_DEFINITIONS MODULE_GIT_UNCOMMIT_FILE_NUM=${WORKDIR_STATUS})
ENDIF()
SET(AML_MP_SRCS
${AML_MP_PLAYER_SRC}
${AML_MP_DVR_SRC}
${AML_MP_UTILS_SRC}
${AML_MP_DEMUX_SRC}
${AML_MP_CAS_SRC}
)
SET(AML_MP_PUBLIC_HEADERS
include/Aml_MP/Aml_MP.h
include/Aml_MP/Cas.h
include/Aml_MP/Common.h
include/Aml_MP/Dvr.h
include/Aml_MP/Aml_MediaPlayer.h
)
SET(TARGET aml_mp_sdk)
ADD_LIBRARY(${TARGET} SHARED ${AML_MP_SRCS})
TARGET_INCLUDE_DIRECTORIES(${TARGET} PUBLIC
${PROJECT_SOURCE_DIR}/include
${PROJECT_SOURCE_DIR}
${libamcas_INCLUDE_DIRS}
${libdvr_INCLUDE_DIRS}
)
TARGET_COMPILE_OPTIONS(${TARGET} PUBLIC -std=c++17 -fpermissive -Werror -Wsign-compare
-Wno-unused-result -Wno-multichar -Wno-deprecated-declarations -Wno-psabi)
TARGET_COMPILE_DEFINITIONS(${TARGET} PUBLIC __unused= )
TARGET_COMPILE_DEFINITIONS(${TARGET} PUBLIC ${AML_MP_DEFINITIONS})
TARGET_LINK_LIBRARIES(${TARGET} PUBLIC
${subtitle_LINK_LIBRARIES}
mediahal_tsplayer
${libdvr_LINK_LIBRARIES}
${libcas_LINK_LIBRARIES}
log
cutils
pthread
dl
)
INSTALL(
TARGETS ${TARGET}
)
INSTALL(
FILES ${AML_MP_PUBLIC_HEADERS} DESTINATION include/Aml_MP
)
IF(HAVE_DEMO)
ADD_SUBDIRECTORY(tests/amlMpTestSupporter)
ADD_SUBDIRECTORY(tests/amlMpPlayerDemo)
ADD_SUBDIRECTORY(tests/amlMpMediaPlayerDemo)
ADD_SUBDIRECTORY(tests/unitTest)
ENDIF()
IF(HAVE_MEDIAPLAYER)
ADD_SUBDIRECTORY(mediaplayer)
ENDIF()