xref: /rockchip-linux_mpp/mpp/CMakeLists.txt (revision 437bfbeb9567cca9cd9080e3f6954aa9d6a94f18)
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