1# vim: syntax=cmake 2# ---------------------------------------------------------------------------- 3# setup mpp codec config first 4# ---------------------------------------------------------------------------- 5include(codecs.cmake) 6include(vproc.cmake) 7 8# ---------------------------------------------------------------------------- 9# add include directory 10# ---------------------------------------------------------------------------- 11include_directories(inc) 12include_directories(common) 13include_directories(base/inc) 14include_directories(codec/inc) 15include_directories(hal/inc) 16include_directories(hal/common) 17include_directories(vproc/inc) 18 19# ---------------------------------------------------------------------------- 20# add mpp base component 21# ---------------------------------------------------------------------------- 22add_subdirectory(base) 23 24# ---------------------------------------------------------------------------- 25# add codec parsers 26# ---------------------------------------------------------------------------- 27add_subdirectory(codec) 28 29# ---------------------------------------------------------------------------- 30# add video processor 31# ---------------------------------------------------------------------------- 32add_subdirectory(vproc) 33 34# ---------------------------------------------------------------------------- 35# add register generation hal 36# ---------------------------------------------------------------------------- 37add_subdirectory(hal) 38 39# ---------------------------------------------------------------------------- 40# add mpp implement 41# ---------------------------------------------------------------------------- 42set (MPP_SRC 43 mpp_info.c 44 mpp.c 45 mpp_impl.c 46 mpi.c 47 ) 48 49set(MPP_VERSION "0") 50set(MPP_ABI_VERSION "1") 51 52add_library(${MPP_SHARED} SHARED ${MPP_SRC}) 53target_link_libraries(${MPP_SHARED} ${ASAN_LIB}) 54set_target_properties(${MPP_SHARED} PROPERTIES C_VISIBILITY_PRESET default) 55set_target_properties(${MPP_SHARED} PROPERTIES CXX_VISIBILITY_PRESET default) 56 57# NOTE: due to legacy libray naming issue we can not support version on Android 58if (NOT ANDROID) 59set_target_properties(${MPP_SHARED} PROPERTIES VERSION ${MPP_VERSION}) 60set_target_properties(${MPP_SHARED} PROPERTIES SOVERSION ${MPP_ABI_VERSION}) 61endif() 62 63set_target_properties(${MPP_SHARED} PROPERTIES FOLDER "mpp") 64set_target_properties(${MPP_SHARED} PROPERTIES CLEAN_DIRECT_OUTPUT 1) 65target_link_libraries(${MPP_SHARED} mpp_codec mpp_hal mpp_vproc kmpp 66 ${BEGIN_WHOLE_ARCHIVE} mpp_base kmpp_base osal ${END_WHOLE_ARCHIVE} ${LIBM}) 67 68# build static library 69add_library(${MPP_STATIC} STATIC ${MPP_SRC}) 70set_target_properties(${MPP_STATIC} PROPERTIES FOLDER "mpp" OUTPUT_NAME "${MPP_SHARED}") 71set_target_properties(${MPP_STATIC} PROPERTIES CLEAN_DIRECT_OUTPUT 1) 72target_link_libraries(${MPP_STATIC} mpp_codec mpp_hal mpp_vproc kmpp 73 ${BEGIN_WHOLE_ARCHIVE} mpp_base kmpp_base osal ${END_WHOLE_ARCHIVE}) 74 75add_custom_command(TARGET ${MPP_STATIC} POST_BUILD 76 COMMAND ${CMAKE_AR} x $<TARGET_FILE:${MPP_STATIC}> 77 COMMAND ${CMAKE_AR} rcs lib${MPP_SHARED}.a *.o 78 COMMAND ${CMAKE_SOURCE_DIR}/merge_static_lib.sh ${CMAKE_BINARY_DIR} ${MPP_SHARED} 79 COMMAND ${CMAKE_STRIP} --strip-debug lib${MPP_SHARED}.a 80 COMMAND pwd 81 COMMAND rm *.o 82 ) 83 84add_subdirectory(legacy) 85 86install(TARGETS ${MPP_SHARED} LIBRARY DESTINATION "${CMAKE_INSTALL_LIBDIR}") 87install(TARGETS ${MPP_STATIC} ARCHIVE DESTINATION "${CMAKE_INSTALL_LIBDIR}") 88