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