xref: /aosp_15_r20/external/libmpeg2/CMakeLists.txt (revision a97c2a1f0a796dc32bed80d3353c69c5fc07c750)
1*a97c2a1fSXin Licmake_minimum_required(VERSION 3.9.1)
2*a97c2a1fSXin Liproject(libmpeg2 C CXX)
3*a97c2a1fSXin Lienable_language(ASM)
4*a97c2a1fSXin Li
5*a97c2a1fSXin Liset(MPEG2_ROOT "${CMAKE_CURRENT_SOURCE_DIR}")
6*a97c2a1fSXin Liset(MPEG2_CONFIG_DIR "${CMAKE_CURRENT_BINARY_DIR}")
7*a97c2a1fSXin Li
8*a97c2a1fSXin Liif("${MPEG2_ROOT}" STREQUAL "${MPEG2_CONFIG_DIR}")
9*a97c2a1fSXin Li  message(
10*a97c2a1fSXin Li    FATAL_ERROR
11*a97c2a1fSXin Li      "Building from within the libmpeg2 source tree is not supported.\n"
12*a97c2a1fSXin Li      "Hint: Run these commands\n"
13*a97c2a1fSXin Li      "$ rm -rf CMakeCache.txt CMakeFiles\n"
14*a97c2a1fSXin Li      "$ mkdir -p ./build\n"
15*a97c2a1fSXin Li      "$ cd ./build\n"
16*a97c2a1fSXin Li      "And re-run CMake from the build directory.")
17*a97c2a1fSXin Liendif()
18*a97c2a1fSXin Li
19*a97c2a1fSXin Liset(THREADS_PREFER_PTHREAD_FLAG ON)
20*a97c2a1fSXin Lifind_package(Threads REQUIRED)
21*a97c2a1fSXin Liset(CMAKE_STATIC_LIBRARY_PREFIX "")
22*a97c2a1fSXin Li
23*a97c2a1fSXin Liinclude("${MPEG2_ROOT}/cmake/utils.cmake")
24*a97c2a1fSXin Lilibmpeg2_add_compile_options()
25*a97c2a1fSXin Lilibmpeg2_add_definitions()
26*a97c2a1fSXin Lilibmpeg2_set_link_libraries()
27*a97c2a1fSXin Li
28*a97c2a1fSXin Lilist(APPEND LIBMPEG2DEC_SRCS
29*a97c2a1fSXin Li            "${MPEG2_ROOT}/common/impeg2_buf_mgr.c"
30*a97c2a1fSXin Li            "${MPEG2_ROOT}/common/impeg2_disp_mgr.c"
31*a97c2a1fSXin Li            "${MPEG2_ROOT}/common/impeg2_format_conv.c"
32*a97c2a1fSXin Li            "${MPEG2_ROOT}/common/impeg2_globals.c"
33*a97c2a1fSXin Li            "${MPEG2_ROOT}/common/impeg2_idct.c"
34*a97c2a1fSXin Li            "${MPEG2_ROOT}/common/impeg2_inter_pred.c"
35*a97c2a1fSXin Li            "${MPEG2_ROOT}/common/impeg2_job_queue.c"
36*a97c2a1fSXin Li            "${MPEG2_ROOT}/common/impeg2_mem_func.c"
37*a97c2a1fSXin Li            "${MPEG2_ROOT}/common/ithread.c"
38*a97c2a1fSXin Li            "${MPEG2_ROOT}/decoder/impeg2d_api_main.c"
39*a97c2a1fSXin Li            "${MPEG2_ROOT}/decoder/impeg2d_bitstream.c"
40*a97c2a1fSXin Li            "${MPEG2_ROOT}/decoder/impeg2d_debug.c"
41*a97c2a1fSXin Li            "${MPEG2_ROOT}/decoder/impeg2d_dec_hdr.c"
42*a97c2a1fSXin Li            "${MPEG2_ROOT}/decoder/impeg2d_decoder.c"
43*a97c2a1fSXin Li            "${MPEG2_ROOT}/decoder/impeg2d_d_pic.c"
44*a97c2a1fSXin Li            "${MPEG2_ROOT}/decoder/impeg2d_function_selector_generic.c"
45*a97c2a1fSXin Li            "${MPEG2_ROOT}/decoder/impeg2d_globals.c"
46*a97c2a1fSXin Li            "${MPEG2_ROOT}/decoder/impeg2d_i_pic.c"
47*a97c2a1fSXin Li            "${MPEG2_ROOT}/decoder/impeg2d_mc.c"
48*a97c2a1fSXin Li            "${MPEG2_ROOT}/decoder/impeg2d_mv_dec.c"
49*a97c2a1fSXin Li            "${MPEG2_ROOT}/decoder/impeg2d_pic_proc.c"
50*a97c2a1fSXin Li            "${MPEG2_ROOT}/decoder/impeg2d_pnb_pic.c"
51*a97c2a1fSXin Li            "${MPEG2_ROOT}/decoder/impeg2d_vld.c"
52*a97c2a1fSXin Li            "${MPEG2_ROOT}/decoder/impeg2d_vld_tables.c"
53*a97c2a1fSXin Li            "${MPEG2_ROOT}/decoder/impeg2d_deinterlace.c"
54*a97c2a1fSXin Li            "${MPEG2_ROOT}/common/icv_sad.c"
55*a97c2a1fSXin Li            "${MPEG2_ROOT}/common/icv_variance.c"
56*a97c2a1fSXin Li            "${MPEG2_ROOT}/common/ideint.c"
57*a97c2a1fSXin Li            "${MPEG2_ROOT}/common/ideint_cac.c"
58*a97c2a1fSXin Li            "${MPEG2_ROOT}/common/ideint_debug.c"
59*a97c2a1fSXin Li            "${MPEG2_ROOT}/common/ideint_function_selector_generic.c"
60*a97c2a1fSXin Li            "${MPEG2_ROOT}/common/ideint_utils.c")
61*a97c2a1fSXin Li
62*a97c2a1fSXin Lilist(APPEND LIBMPEG2DEC_X86_SRCS
63*a97c2a1fSXin Li            "${MPEG2_ROOT}/decoder/x86/impeg2d_function_selector.c"
64*a97c2a1fSXin Li            "${MPEG2_ROOT}/decoder/x86/impeg2d_function_selector_avx2.c"
65*a97c2a1fSXin Li            "${MPEG2_ROOT}/decoder/x86/impeg2d_function_selector_ssse3.c"
66*a97c2a1fSXin Li            "${MPEG2_ROOT}/decoder/x86/impeg2d_function_selector_sse42.c"
67*a97c2a1fSXin Li            "${MPEG2_ROOT}/common/x86/ideint_function_selector.c"
68*a97c2a1fSXin Li            "${MPEG2_ROOT}/common/x86/ideint_function_selector_ssse3.c"
69*a97c2a1fSXin Li            "${MPEG2_ROOT}/common/x86/ideint_function_selector_sse42.c"
70*a97c2a1fSXin Li            "${MPEG2_ROOT}/common/x86/icv_variance_ssse3.c"
71*a97c2a1fSXin Li            "${MPEG2_ROOT}/common/x86/icv_sad_ssse3.c"
72*a97c2a1fSXin Li            "${MPEG2_ROOT}/common/x86/ideint_cac_ssse3.c"
73*a97c2a1fSXin Li            "${MPEG2_ROOT}/common/x86/ideint_spatial_filter_ssse3.c"
74*a97c2a1fSXin Li            "${MPEG2_ROOT}/common/x86/impeg2_idct_recon_sse42_intr.c"
75*a97c2a1fSXin Li            "${MPEG2_ROOT}/common/x86/impeg2_inter_pred_sse42_intr.c"
76*a97c2a1fSXin Li            "${MPEG2_ROOT}/common/x86/impeg2_mem_func_sse42_intr.c")
77*a97c2a1fSXin Li
78*a97c2a1fSXin Liset(LIBMPEG2DEC_INCLUDES ${MPEG2_ROOT}/common ${MPEG2_ROOT}/decoder)
79*a97c2a1fSXin Li
80*a97c2a1fSXin Liset(LIBMPEG2DEC_X86_C_FLAGS "-DX86 -DDISABLE_AVX2 -msse4.2 -mno-avx \
81*a97c2a1fSXin Li  -DDEFAULT_ARCH=D_ARCH_X86_SSE42 -DMULTICORE")
82*a97c2a1fSXin Liset(LIBMPEG2DEC_X86_INCLUDES ${MPEG2_ROOT}/common/x86 ${MPEG2_ROOT}/decoder/x86)
83*a97c2a1fSXin Liset(LIBMPEG2DEC_C_FLAGS "${LIBMPEG2DEC_X86_C_FLAGS}")
84*a97c2a1fSXin Li
85*a97c2a1fSXin Liinclude_directories(${LIBMPEG2DEC_INCLUDES} ${LIBMPEG2DEC_X86_INCLUDES})
86*a97c2a1fSXin Liadd_library(libmpeg2dec ${LIBMPEG2DEC_SRCS} ${LIBMPEG2DEC_X86_SRCS})
87*a97c2a1fSXin Liset_target_properties(libmpeg2dec
88*a97c2a1fSXin Li                      PROPERTIES COMPILE_FLAGS "${LIBMPEG2DEC_C_FLAGS}")
89*a97c2a1fSXin Li
90*a97c2a1fSXin Lilibmpeg2_add_executable(mpeg2dec libmpeg2dec SOURCES ${MPEG2_ROOT}/test/decoder/main.c)
91*a97c2a1fSXin Litarget_compile_definitions(mpeg2dec PRIVATE PROFILE_ENABLE MD5_DISABLE)
92*a97c2a1fSXin Li
93*a97c2a1fSXin Lilibmpeg2_add_fuzzer(mpeg2_dec_fuzzer libmpeg2dec SOURCES ${MPEG2_ROOT}/fuzzer/mpeg2_dec_fuzzer.cpp)
94