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