mirror of
https://github.com/hrydgard/ppsspp.git
synced 2026-10-01 14:58:14 +00:00
Add experimental cmake port of ppsspp-ffmpeg as a standard module built from source
This commit is contained in:
1 parent
736dfc458e
commit
bc2648edb1
11 files changed
+3341
-70
No files matched your search
@@ -60,6 +60,10 @@ if(NOT USE_SYSTEM_LIBCHDR)
|
||||
add_subdirectory(libchdr-build)
|
||||
endif()
|
||||
|
||||
if(BUILD_BUNDLED_FFMPEG)
|
||||
add_subdirectory(ffmpeg-build)
|
||||
endif()
|
||||
|
||||
if(ANDROID)
|
||||
if (ARM64)
|
||||
add_subdirectory(libadrenotools)
|
||||
|
||||
@@ -0,0 +1,109 @@
|
||||
cmake_minimum_required (VERSION 3.13.0)
|
||||
project (ffmpeg)
|
||||
|
||||
include(FindPkgConfig)
|
||||
|
||||
# Threads are required
|
||||
find_package(Threads REQUIRED)
|
||||
|
||||
set(SRC_DIR ../../ffmpeg)
|
||||
set(LIBAVCODEC_SRC_DIR ${SRC_DIR}/libavcodec)
|
||||
set(LIBAVFORMAT_SRC_DIR ${SRC_DIR}/libavformat)
|
||||
set(LIBAVUTIL_SRC_DIR ${SRC_DIR}/libavutil)
|
||||
set(LIBSWRESAMPLE_SRC_DIR ${SRC_DIR}/libswresample)
|
||||
set(LIBSWSCALE_SRC_DIR ${SRC_DIR}/libswscale)
|
||||
|
||||
# Check for exotic cross-compiling configurations such as MinGW sysroot with clang compiler
|
||||
if(WIN32 AND NOT MSVC)
|
||||
set(MINGW_SYSROOT TRUE)
|
||||
elseif(CMAKE_SYSTEM_NAME STREQUAL "Windows" AND CMAKE_C_COMPILER_TARGET MATCHES "mingw")
|
||||
set(MINGW_SYSROOT TRUE)
|
||||
endif()
|
||||
|
||||
# Additional lib and include dirs for configure checks
|
||||
set(ADDL_INCLUDES "")
|
||||
set(ADDL_LIB_DIRS "")
|
||||
|
||||
# For cross-compiling, let CMake handle the sysroot via search paths (although toolchains probably already do this)
|
||||
if(CMAKE_CROSSCOMPILING)
|
||||
set(CMAKE_FIND_ROOT_PATH_MODE_PROGRAM NEVER)
|
||||
set(CMAKE_FIND_ROOT_PATH_MODE_LIBRARY ONLY)
|
||||
set(CMAKE_FIND_ROOT_PATH_MODE_INCLUDE ONLY)
|
||||
set(CMAKE_FIND_ROOT_PATH_MODE_PACKAGE ONLY)
|
||||
else()
|
||||
if(NOT CMAKE_OSX_SYSROOT AND UNIX AND NOT APPLE)
|
||||
list(APPEND ADDL_INCLUDES "/usr/local/include")
|
||||
list(APPEND ADDL_LIB_DIRS "/usr/local/lib")
|
||||
endif()
|
||||
endif()
|
||||
|
||||
# Silence warnings due to design philosophy differences between ffmpeg and modern compilers
|
||||
# Taken primarily from meson-ports/ffmpeg's meson.build script at
|
||||
# https://gitlab.freedesktop.org/gstreamer/meson-ports/ffmpeg/-/blob/meson-4.4/meson.build?ref_type=heads
|
||||
if (MSVC AND NOT (CMAKE_C_COMPILER_ID STREQUAL "Clang"))
|
||||
add_compile_options(/wd4005 /wd4018 /wd4146 /wd4244 /wd4305 /wd4554 /wd4114 /wd4028 /wd4090 /wd4133)
|
||||
else() # Compiler options for both clang and gcc (includes clang-cl in MSVC mode)
|
||||
add_compile_options(-D_LARGEFILE_SOURCE -DPIC -Wno-parentheses -Wno-pointer-sign -Wno-switch -Wno-format-truncation -Wno-deprecated-declarations -Wno-unused-function -Wno-uninitialized -Wno-ignored-qualifiers -Wno-unused-variable -Wno-bool-operation -Wno-incompatible-pointer-types -Wno-address -Wno-empty-body)
|
||||
endif()
|
||||
if (CMAKE_C_COMPILER_ID STREQUAL "Clang") # additional options not recognized by gcc
|
||||
add_compile_options(-Wno-string-plus-int -Wno-implicit-const-int-float-conversion)
|
||||
endif()
|
||||
|
||||
# Run an abbreviated version of ffmpeg's configure script's checks required to generate usable config.h,
|
||||
# libavutil/avconfig.h, and libavutil/ffversion.h headers with hardcoded minimal features required by PPSSPP
|
||||
include(configure_checks.cmake)
|
||||
|
||||
# libavcodec
|
||||
include(libs/libavcodec.cmake)
|
||||
add_library(avcodec STATIC ${LIBAVCODEC_SOURCE_FILES})
|
||||
set_target_properties(avcodec PROPERTIES POSITION_INDEPENDENT_CODE TRUE) # Enable PIC
|
||||
target_precompile_headers(avcodec PRIVATE ${LIBAVUTIL_SRC_DIR}/internal.h ${LIBAVUTIL_SRC_DIR}/intmath.h)
|
||||
target_link_libraries(avcodec)
|
||||
target_include_directories(avcodec PRIVATE ${SRC_DIR} ${CMAKE_CURRENT_BINARY_DIR})
|
||||
target_include_directories(avcodec INTERFACE ${LIBAVCODEC_HEADERS}) # expose libavcodec headers to PPSSPP build
|
||||
set(LIBAVCODEC_LIBRARY avcodec)
|
||||
|
||||
# libavformat
|
||||
include(libs/libavformat.cmake)
|
||||
add_library(avformat STATIC ${LIBAVFORMAT_SOURCE_FILES})
|
||||
set_target_properties(avformat PROPERTIES POSITION_INDEPENDENT_CODE TRUE) # Enable PIC
|
||||
target_precompile_headers(avformat PRIVATE ${CMAKE_CURRENT_BINARY_DIR}/config.h ${LIBAVUTIL_SRC_DIR}/internal.h)
|
||||
target_link_libraries(avformat PUBLIC avcodec)
|
||||
target_include_directories(avformat PRIVATE ${SRC_DIR} ${CMAKE_CURRENT_BINARY_DIR})
|
||||
target_include_directories(avformat INTERFACE ${LIBAVFORMAT_HEADERS})
|
||||
set(LIBAVFORMAT_LIBRARY avformat)
|
||||
|
||||
# libavutil
|
||||
include(libs/libavutil.cmake)
|
||||
add_library(avutil STATIC ${LIBAVUTIL_SOURCE_FILES})
|
||||
target_precompile_headers(avutil PRIVATE
|
||||
${CMAKE_CURRENT_BINARY_DIR}/libavutil/ffversion.h
|
||||
${CMAKE_CURRENT_BINARY_DIR}/libavutil/avconfig.h
|
||||
${LIBAVUTIL_SRC_DIR}/internal.h
|
||||
)
|
||||
set_target_properties(avutil PROPERTIES POSITION_INDEPENDENT_CODE TRUE) # Enable PIC
|
||||
target_link_libraries(avutil)
|
||||
target_include_directories(avutil PRIVATE ${SRC_DIR} ${CMAKE_CURRENT_BINARY_DIR})
|
||||
target_include_directories(avutil INTERFACE ${LIBAVUTIL_HEADERS})
|
||||
set(LIBAVUTIL_LIBRARY avutil)
|
||||
|
||||
# libswresample
|
||||
include(libs/libswresample.cmake)
|
||||
add_library(swresample STATIC ${LIBSWRESAMPLE_SOURCE_FILES})
|
||||
set_target_properties(swresample PROPERTIES POSITION_INDEPENDENT_CODE TRUE) # Enable PIC
|
||||
target_precompile_headers(swresample PRIVATE ${LIBAVUTIL_SRC_DIR}/cpu.h ${LIBAVUTIL_SRC_DIR}/internal.h)
|
||||
target_link_libraries(swresample)
|
||||
target_include_directories(swresample PUBLIC ${SRC_DIR} ${CMAKE_CURRENT_BINARY_DIR})
|
||||
target_include_directories(swresample INTERFACE ${LIBSWRESAMPLE_HEADERS})
|
||||
set(LIBSWRESAMPLE_LIBRARY swresample)
|
||||
|
||||
# libswscale
|
||||
include(libs/libswscale.cmake)
|
||||
add_library(swscale STATIC ${LIBSWSCALE_SOURCE_FILES})
|
||||
set_target_properties(swscale PROPERTIES POSITION_INDEPENDENT_CODE TRUE) # Enable PIC
|
||||
target_precompile_headers(swscale PRIVATE ${LIBAVUTIL_SRC_DIR}/internal.h)
|
||||
target_link_libraries(swscale)
|
||||
target_include_directories(swscale PRIVATE ${SRC_DIR} ${CMAKE_CURRENT_BINARY_DIR})
|
||||
target_include_directories(swscale INTERFACE ${LIBSWSCALE_HEADERS})
|
||||
set(LIBSWSCALE_LIBRARY swscale)
|
||||
|
||||
File diff suppressed because it is too large.
Load diff
@@ -0,0 +1,349 @@
|
||||
# Before we compile ffmpeg libs, we need to generate config.h, (config.asm if enabling Assembly optimizations), libavutil/avconfig.h, and libavutil/ffversion.h.
|
||||
|
||||
include(configure_functions.cmake)
|
||||
|
||||
# Check for extern_prefix
|
||||
check_cc(ffextern "int ff_extern;" HAVE_ff_extern)
|
||||
execute_process(
|
||||
COMMAND nm "${CONFIG_TESTS_DIR}/ffextern.o"
|
||||
OUTPUT_VARIABLE NM_RESULT
|
||||
OUTPUT_STRIP_TRAILING_WHITESPACE
|
||||
)
|
||||
file(WRITE "${CONFIG_TESTS_DIR}/nm_ff_extern" "${NM_RESULT}")
|
||||
execute_process(
|
||||
COMMAND awk "/ff_extern/{ print substr($0, match($0, /[^ \t]*ff_extern/)) }" "${CONFIG_TESTS_DIR}/nm_ff_extern"
|
||||
OUTPUT_VARIABLE AWK_RESULT
|
||||
OUTPUT_STRIP_TRAILING_WHITESPACE
|
||||
)
|
||||
set(extern_prefix_orig \"${AWK_RESULT}\")
|
||||
string(REGEX REPLACE "ff_extern" "" extern_prefix "${extern_prefix_orig}")
|
||||
set(extern_asm_orig "${AWK_RESULT}")
|
||||
string(REGEX REPLACE "ff_extern" "" extern_asm "${extern_asm_orig}")
|
||||
|
||||
set(build_suffix \"\")
|
||||
|
||||
set(SLIBSUF \"${CMAKE_SHARED_LIBRARY_SUFFIX}\")
|
||||
|
||||
# See line 3055 of ffmpeg configure script, where 256 is hardcoded as the default
|
||||
set(sws_max_filter_size 256)
|
||||
|
||||
# Check the restrict keyword and assign accordingly
|
||||
set(_RESTRICT)
|
||||
check_cc(restrict "void foo(char * restrict p);" restrict)
|
||||
check_cc(__restrict__ "void foo(char * __restrict__ p);" __restrict__)
|
||||
check_cc(__restrict "void foo(char * __restrict p);" __restrict)
|
||||
if (restrict)
|
||||
set(_RESTRICT "restrict")
|
||||
elseif (__restrict__)
|
||||
set(_RESTRICT "__restrict__")
|
||||
elseif (__restrict)
|
||||
set(_RESTRICT "__restrict")
|
||||
else()
|
||||
message(STATUS "restrict keyword not found!")
|
||||
endif()
|
||||
if (NOT _RESTRICT STREQUAL "restrict")
|
||||
check_cc(restrict_cflags "__declspec(${_RESTRICT}) void* foo(int);" stdlib_cflag)
|
||||
if (stdlib_cflag)
|
||||
# Primarily needed with MSVC
|
||||
add_compile_options(-FIstdlib.h)
|
||||
endif()
|
||||
endif()
|
||||
|
||||
# Get the compiler ident string in the same format as ffmpeg's configure script--retaining only the first line
|
||||
if (MSVC AND NOT (CMAKE_C_COMPILER_ID STREQUAL "Clang")) # Real MSVC, not clang-cl emulating MSVC
|
||||
execute_process(
|
||||
COMMAND cl
|
||||
ERROR_VARIABLE CC_VERSION
|
||||
OUTPUT_STRIP_TRAILING_WHITESPACE
|
||||
)
|
||||
else() # clang (including clang-cl) and gcc
|
||||
execute_process(
|
||||
COMMAND cc "--version"
|
||||
OUTPUT_VARIABLE CC_VERSION
|
||||
OUTPUT_STRIP_TRAILING_WHITESPACE
|
||||
)
|
||||
endif()
|
||||
string(REGEX REPLACE "\n.*" "" CC_IDENT "${CC_VERSION}")
|
||||
set(CC_IDENT \"${CC_IDENT}\")
|
||||
|
||||
# Check for PIC - see line 4845 of ffmpeg's configure script
|
||||
set(CONFIG_PIC 1)
|
||||
#check_cpp_condition(pic "stdlib.h" "defined(__PIC__) || defined(__pic__) || defined(PIC)" CONFIG_PIC)
|
||||
# Note: the above check PASSES if cross-compiling for Windows targets, but fails for FreeBSD host; enabling always
|
||||
|
||||
# Line 4933
|
||||
check_cc(pragma_deprecated [[void foo(void) { _Pragma("GCC diagnostic ignored \"-Wdeprecated-declarations\"") }]] HAVE_PRAGMA_DEPRECATED)
|
||||
|
||||
check_cc(attribute_packed "struct { int x; } __attribute__((packed)) x;" HAVE_ATTRIBUTE_PACKED)
|
||||
|
||||
check_cc(attribute_may_alias "union { int x; } __attribute__((may_alias)) x;" HAVE_ATTRIBUTE_MAY_ALIAS)
|
||||
|
||||
check_func(dlopen "dlopen" HAVE_DLOPEN)
|
||||
|
||||
check_builtin(atomic_cas_ptr "<atomic.h>" "void **ptr; void *oldval, *newval; atomic_cas_ptr(ptr, oldval, newval)" HAVE_ATOMIC_CAS_PTR)
|
||||
check_builtin(atomic_compare_exchange "" "int *ptr, *oldval; int newval; __atomic_compare_exchange_n(ptr, oldval, newval, 0, __ATOMIC_SEQ_CST, __ATOMIC_SEQ_CST)" HAVE_ATOMIC_COMPARE_EXCHANGE)
|
||||
check_builtin(machine_rw_barrier "<mbarrier.h>" "__machine_rw_barrier()" HAVE_MACHINE_RW_BARRIER)
|
||||
check_builtin(MemoryBarrier "<windows.h>" "MemoryBarrier()" HAVE_MEMORYBARRIER)
|
||||
check_builtin(sarestart "<signal.h>" "SA_RESTART" HAVE_SARESTART)
|
||||
check_builtin(sync_val_compare_and_swap "" "int *ptr; int oldval, newval; __sync_val_compare_and_swap(ptr, oldval, newval)" HAVE_SYNC_VAL_COMPARE_AND_SWAP)
|
||||
check_builtin(gmtime_r "<time.h>" "time_t *time; struct tm *tm; gmtime_r(time, tm)" HAVE_GMTIME_R)
|
||||
check_builtin(localtime_r "<time.h>" "time_t *time; struct tm *tm; localtime_r(time, tm)" HAVE_LOCALTIME_R)
|
||||
|
||||
check_func_headers(aligned_malloc "<malloc.h>" "_aligned_malloc" "" HAVE_ALIGNED_MALLOC)
|
||||
# Note: we don't have a 'custom_allocator' option set, so we don't need a malloc_prefix
|
||||
check_func(memalign "memalign" HAVE_MEMALIGN)
|
||||
if (NOT MINGW AND NOT MINGW_SYSROOT) # First of many MinGW-specific conditionals to prevent false-positives
|
||||
check_func(posix_memalign "posix_memalign" HAVE_POSIX_MEMALIGN)
|
||||
endif()
|
||||
check_func(access "access" HAVE_ACCESS)
|
||||
check_func_headers(arc4random "<stdlib.h>" "arc4random" "" HAVE_ARC4RANDOM)
|
||||
check_func_headers(clock_gettime "<time.h>" "clock_gettime" "" HAVE_CLOCK_GETTIME)
|
||||
if (NOT HAVE_CLOCK_GETTIME)
|
||||
check_func_headers(clock_gettime "<time.h>" "clock_gettime" "-lrt" HAVE_CLOCK_GETTIME)
|
||||
if (HAVE_CLOCK_GETTIME)
|
||||
add_link_options(-lrt)
|
||||
endif()
|
||||
endif()
|
||||
if (NOT MINGW AND NOT MINGW_SYSROOT)
|
||||
check_func(fcntl "fcntl" HAVE_FCNTL)
|
||||
endif()
|
||||
check_func(flt_lim "flt_lim" HAVE_FLT_LIM) # Note: if this check fails, a second check is run later that can pass
|
||||
check_func(fork "fork" HAVE_FORK)
|
||||
if (NOT MINGW AND NOT MINGW_SYSROOT)
|
||||
check_func(gethrtime "gethrtime" HAVE_GETHRTIME)
|
||||
endif()
|
||||
check_func(getopt "getopt" HAVE_GETOPT)
|
||||
check_func(getrusage "getrusage" HAVE_GETRUSAGE)
|
||||
check_func(gettimeofday "gettimeofday" HAVE_GETTIMEOFDAY)
|
||||
check_func(isatty "isatty" HAVE_ISATTY)
|
||||
if (NOT MINGW AND NOT MINGW_SYSROOT)
|
||||
check_func(mach_absolute_time "mach_absolute_time" HAVE_MACH_ABSOLUTE_TIME)
|
||||
endif()
|
||||
check_func(mkstemp "mkstemp" HAVE_MKSTEMP)
|
||||
if (NOT MINGW AND NOT MINGW_SYSROOT)
|
||||
check_func(mmap "mmap" HAVE_MMAP)
|
||||
endif()
|
||||
check_func(mprotect "mprotect" HAVE_MPROTECT)
|
||||
check_func_headers(nanosleep "<time.h>" "nanosleep" "" HAVE_NANOSLEEP)
|
||||
if (NOT HAVE_NANOSLEEP)
|
||||
check_func_headers(nanosleep "<time.h>" "nanosleep" "-lrt" HAVE_NANOSLEEP)
|
||||
if (HAVE_NANOSLEEP)
|
||||
add_link_options(-lrt)
|
||||
endif()
|
||||
endif()
|
||||
if (NOT MINGW AND NOT MINGW_SYSROOT) # Failsafe against breaking MinGW builds at libavutil/cpu.c
|
||||
check_func(sched_getaffinity "sched_getaffinity" HAVE_SCHED_GETAFFINITY)
|
||||
endif()
|
||||
check_func(setrlimit "setrlimit" HAVE_SETRLIMIT)
|
||||
check_struct(st_mtim.tv_nsec "<sys/stat.h>" "struct stat" st_mtim.tv_nsec HAVE_STRUCT_STAT_ST_MTIM_TV_NSEC "-D_DEFAULT_SOURCE")
|
||||
# Note: -D_DEFAULT_SOURCE replaced -D_BSD_SOURCE as a flag to enable various extensions to POSIX in 2014
|
||||
# Note 2: on Arch Linux at least, this is already defined in features.h, resulting in a -Wmacro-redefined warning
|
||||
if (NOT MINGW AND NOT MINGW_SYSROOT)
|
||||
check_func(strerror_r "strerror_r" HAVE_STRERROR_R)
|
||||
endif()
|
||||
check_func(sysconf "sysconf" HAVE_SYSCONF)
|
||||
if (NOT MINGW AND NOT MINGW_SYSROOT AND NOT CMAKE_SYSTEM_NAME MATCHES "SunOS")
|
||||
check_func(sysctl "sysctl" HAVE_SYSCTL)
|
||||
endif()
|
||||
check_func(usleep "usleep" HAVE_USLEEP)
|
||||
|
||||
check_func_headers(kbhit "<conio.h>" "kbhit" "" HAVE_KBHIT)
|
||||
check_func_headers(setmode "<io.h>" "setmode" "" HAVE_SETMODE)
|
||||
check_func_headers(lzo1x_999_compress "<lzo/lzo1x.h>" "lzo1x_999_compress" "" HAVE_LZO1X_999_COMPRESS)
|
||||
check_func_headers(getenv "<stdlib.h>" "getenv" "" HAVE_GETENV)
|
||||
check_func_headers(lstat "<sys/stat.h>" "lstat" "" HAVE_LSTAT)
|
||||
|
||||
# Note: lines 5318-5328 all rely on windows.h header--skip irrelevant checks if windows.h not found
|
||||
check_header(windows "windows.h" "" HAVE_WINDOWS_H)
|
||||
if (HAVE_WINDOWS_H)
|
||||
check_func_headers(cotaskmemfree "<windows.h>" "CoTaskMemFree" "-lole32" HAVE_COTASKMEMFREE)
|
||||
check_func_headers(getprocessaffinitymask "<windows.h>" "GetProcessAffinityMask" "" HAVE_GETPROCESSAFFINITYMASK)
|
||||
check_func_headers(getprocesstimes "<windows.h>" "GetProcessTimes" "" HAVE_GETPROCESSTIMES)
|
||||
check_func_headers(getsystemtimeasfiletime "<windows.h>" "GetSystemTimeAsFileTime" "" HAVE_GETSYSTEMTIMEASFILETIME)
|
||||
check_func_headers(mapviewoffile "<windows.h>" "MapViewOfFile" "" HAVE_MAPVIEWOFFILE)
|
||||
check_func_headers(peeknamedpipe "<windows.h>" "PeekNamedPipe" "" HAVE_PEEKNAMEDPIPE)
|
||||
check_func_headers(setconsoletextattribute "<windows.h>" "SetConsoleTextAttribute" "" HAVE_SETCONSOLETEXTATTRIBUTE)
|
||||
check_func_headers(setconsolectrlhandler "<windows.h>" "SetConsoleCtrlHandler" "" HAVE_SETCONSOLECTRLHANDLER)
|
||||
check_func_headers(sleep "<windows.h>" "Sleep" "" HAVE_SLEEP)
|
||||
check_func_headers(virtualalloc "<windows.h>" "VirtualAlloc" "" HAVE_VIRTUALALLOC)
|
||||
check_struct(condition_variable_ptr "<windows.h>" "CONDITION_VARIABLE" "Ptr" HAVE_CONDITION_VARIABLE_PTR)
|
||||
endif()
|
||||
check_func_headers(glob "<glob.h>" "glob" "" HAVE_GLOB)
|
||||
|
||||
# Xlib check at lines 5330-5331
|
||||
check_func_headers(xlib "<X11/Xlib.h>;<X11/extensions/Xvlib.h>" "XvGetPortAttribute" "-lXv;-lX11;-lXext" CONFIG_XLIB)
|
||||
|
||||
check_header(direct "direct.h" "" HAVE_DIRECT_H)
|
||||
check_header(dirent "dirent.h" "" HAVE_DIRENT_H)
|
||||
check_header(dlfcn "dlfcn.h" "" HAVE_DLFCN_H)
|
||||
check_header(d3d11 "d3d11.h" "" HAVE_D3D11_H)
|
||||
check_header(dxva "dxva.h" "" HAVE_DXVA_H)
|
||||
check_header(dxva2api "windows.h;d3d9.h;dxva2api.h" "-D_WIN32_WINNT=0x0600" CONFIG_DXVA2)
|
||||
check_header(io "io.h" "" HAVE_IO_H)
|
||||
check_header(mach_time "mach/mach_time.h" "" HAVE_MACH_MACH_TIME_H)
|
||||
check_header(malloc "malloc.h" "" HAVE_MALLOC_H)
|
||||
check_header(udplite "net/udplite.h" "" HAVE_UDPLITE_H)
|
||||
check_header(poll "poll.h" "" HAVE_POLL_H)
|
||||
check_header(mman "sys/mman.h" "" HAVE_SYS_MMAN_H)
|
||||
check_header(param "sys/param.h" "" HAVE_SYS_PARAM_H)
|
||||
check_header(resource "sys/resource.h" "" HAVE_SYS_RESOURCE_H)
|
||||
check_header(select "sys/select.h" "" HAVE_SYS_SELECT_H)
|
||||
check_header(time "sys/time.h" "" HAVE_SYS_TIME_H)
|
||||
check_header(un "sys/un.h" "" HAVE_SYS_UN_H)
|
||||
check_header(termios "sys/termios.h" "" HAVE_TERMIOS_H)
|
||||
check_header(unistd "sys/unistd.h" "" HAVE_UNISTD_H)
|
||||
check_header(valgrind "valgrind/valgrind.h" "" HAVE_VALGRIND_VALGRIND_H)
|
||||
|
||||
# Line 5362 # NOTE: on Windows, "shell32.lib" does NOT start with "lib" or "-l", but for my check we need this
|
||||
check_lib2(commandlinetoargvw "<windows.h>;<shellapi.h>" "CommandLineToArgvW" "-lshell32" HAVE_COMMANDLINETOARGVW)
|
||||
check_lib2(cryptgenrandom "<windows.h>;<wincrypt.h>" "CryptGenRandom" "-ladvapi32" HAVE_CRYPTGENRANDOM)
|
||||
check_lib2(getprocessmemoryinfo "<windows.h>;<psapi.h>" "GetProcessMemoryInfo" "-lpsapi" HAVE_GETPROCESSMEMORYINFO)
|
||||
check_lib(utgetostypefromstring "CoreServices/CoreServices.h" "UTGetOSTypeFromString" "-framework CoreServices" HAVE_UTGETOSTYPEFROMSTRING)
|
||||
|
||||
check_struct(ru_maxrss "<sys/time.h>;<sys/resource.h>" "struct rusage" ru_maxrss HAVE_STRUCT_RUSAGE_RU_MAXRSS)
|
||||
|
||||
check_cpp_condition(winrt "windows.h" "!WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_DESKTOP)" HAVE_WINRT)
|
||||
|
||||
# pthreads vs w32threads - see lines 5382-5389. Note: since we're hardcoding configure 'options', slight change here
|
||||
if (HAVE_WINDOWS_H) # Enable w32threads if either of configure script's conditions are met; deal with pthreads later
|
||||
check_func_headers(beginthreadex "<windows.h>;<process.h>" "_beginthreadex" "" HAVE_W32THREADS)
|
||||
if (NOT HAVE_W32THREADS)
|
||||
if (HAVE_WINRT)
|
||||
check_func_headers(createthread "<windows.h>" "CreateThread" "" HAVE_W32THREADS)
|
||||
endif()
|
||||
endif()
|
||||
endif()
|
||||
|
||||
# pthreads - see lines 5391-5414
|
||||
if (NOT HAVE_W32THREADS AND NOT HAVE_OS2THREADS)
|
||||
check_func(pthread_join "pthread_join" HAVE_PTHREAD_JOIN)
|
||||
if (ANDROID) # workaround for older Android omitting pthread_cancel for optimization purposes
|
||||
set(HAVE_PTHREAD_CANCEL 1)
|
||||
else()
|
||||
check_func(pthread_cancel "pthread_cancel" HAVE_PTHREAD_CANCEL)
|
||||
endif()
|
||||
if (HAVE_PTHREAD_JOIN AND HAVE_PTHREAD_CANCEL)
|
||||
set(HAVE_PTHREADS 1)
|
||||
endif()
|
||||
endif()
|
||||
|
||||
check_lib2(zlibversion "<zlib.h>" "zlibVersion" "-lz" CONFIG_ZLIB)
|
||||
|
||||
# check all listed math_funcs - see lines 5434-5436
|
||||
set(mathfuncs "atanf;atan2f;cbrt;cbrtf;copysign;cosf;erf;exp2;exp2f;expf;hypot;isfinite;isinf;isnan;ldexpf;llrint;llrintf;log2;log2f;log10f;lrint;lrintf;powf;rint;round;roundf;sinf;trunc;truncf")
|
||||
|
||||
foreach(func IN LISTS mathfuncs)
|
||||
string(TOUPPER ${func} uppercase_func)
|
||||
if (MSVC)
|
||||
check_mathfunc(${func} ${func} "-lmsvcrt" HAVE_${uppercase_func})
|
||||
else()
|
||||
check_mathfunc(${func} ${func} "-lm" HAVE_${uppercase_func})
|
||||
endif()
|
||||
endforeach()
|
||||
|
||||
# check all listed complex_funcs - see lines 5438-5440
|
||||
check_complexfunc(cabs cabs HAVE_CABS)
|
||||
check_complexfunc(cexp cexp HAVE_CEXP)
|
||||
|
||||
check_header(sys_videoio "sys/videoio.h" "" HAVE_SYS_VIDEOIO_H)
|
||||
|
||||
check_type(ibasefilter "<dshow.h>" "IBaseFilter" CONFIG_DSHOW_INDEV) # Note: not sure this is the right variable
|
||||
|
||||
# FIXME (or don't, as both CONFIG_SNDIO_INDEV and CONFIG_SNDIO_OUTDEV are set to "0"). The simplified check doesn't
|
||||
# look in /usr/local/include and therefore fails on some targets like FreeBSD, albeit harmlessly
|
||||
check_header(sndio "sndio.h" "" HAVE_SNDIO_H)
|
||||
check_struct(audio_buf_info "<sys/soundcard.h>" "audio_buf_info bytes;" "audio_buf_info bytes" HAVE_SYS_SOUNDCARD_H)
|
||||
if (NOT HAVE_SYS_SOUNDCARD_H)
|
||||
check_cc(sys_soundcard "#include <sys/soundcard.h>\naudio_buf_info abc;" HAVE_SYS_SOUNDCARD_H "-D__BSD_VISIBLE;-D__XSI_VISIBLE")
|
||||
endif()
|
||||
check_header(soundcard "soundcard.h" "" HAVE_SOUNDCARD_H)
|
||||
|
||||
# Xlib: see lines 5718-5719
|
||||
check_lib2(xopendisplay "<X11/Xlib.h>" "XOpenDisplay" "-lX11" HAVE_XLIB)
|
||||
if (CONFIG_XLIB)
|
||||
set(HAVE_XLIB 1)
|
||||
endif()
|
||||
|
||||
# dxva2api_cobj - see line 5755
|
||||
check_cc(dxva2api_cobj "#define _WIN32_WINNT 0x0600\n#define COBJMACROS\n#include <windows.h>\n#include <d3d9.h>\n#include <dxva2api.h>\nint main(void) { IDirectXVideoDecoder *o = NULL;\nIDirectXVideoDecoder_Release(o);\nreturn 0; }" HAVE_DXVA2API_COBJ)
|
||||
|
||||
# dxva2_lib - see line 6053
|
||||
if (CONFIG_DXVA2 AND HAVE_DXVA2API_COBJ AND HAVE_COTASKMEMFREE)
|
||||
set(HAVE_DXVA2_LIB 1)
|
||||
endif()
|
||||
|
||||
# Threads - see line 6045
|
||||
if (HAVE_SYNC_VAL_COMPARE_AND_SWAP OR HAVE_ATOMIC_COMPARE_EXCHANGE)
|
||||
set(HAVE_ATOMICS_GCC 1)
|
||||
endif()
|
||||
if (HAVE_ATOMIC_CAS_PTR OR HAVE_MACHINE_RW_BARRIER)
|
||||
set(HAVE_ATOMICS_SUNCC 1)
|
||||
endif()
|
||||
if (HAVE_MEMORYBARRIER)
|
||||
set(HAVE_ATOMICS_WIN32 1)
|
||||
endif()
|
||||
if (HAVE_PTHREADS OR HAVE_OS2THREADS OR HAVE_W32THREADS)
|
||||
set(HAVE_ATOMICS_NATIVE 1)
|
||||
set(HAVE_THREADS 1)
|
||||
endif()
|
||||
|
||||
# Backup/second test for flt_lim, see lines 4836-4837
|
||||
check_code(flt_lim cc "<float.h>;<limits.h>" "char c[2 * !!(DBL_MAX == (double)DBL_MAX) - 1]" HAVE_FLT_LIM)
|
||||
|
||||
# Run convenience function to set "0" for any variables not set to "1"
|
||||
set(settings-list "ARCH_AARCH64;ARCH_ALPHA;ARCH_AMD64;ARCH_ARM;ARCH_AVR32;ARCH_AVR32_AP;ARCH_AVR32_UC;ARCH_BFIN;ARCH_IA64;ARCH_M68K;ARCH_MIPS;ARCH_MIPS64;ARCH_PARISC;ARCH_PPC;ARCH_PPC64;ARCH_S390;ARCH_SH4;ARCH_SPARC;ARCH_SPARC64;ARCH_TILEGX;ARCH_TILEPRO;ARCH_TOMI;ARCH_X86;ARCH_X86_32;ARCH_X86_64;HAVE_ARMV5TE;HAVE_ARMV6;HAVE_ARMV6T2;HAVE_ARMV8;HAVE_NEON;HAVE_VFP;HAVE_VFPV3;HAVE_SETEND;HAVE_ALTIVEC;HAVE_DCBZL;HAVE_LDBRX;HAVE_POWER8;HAVE_PPC4XX;HAVE_VSX;HAVE_AESNI;HAVE_AMD3DNOW;HAVE_AMD3DNOWEXT;HAVE_AVX;HAVE_AVX2;HAVE_FMA3;HAVE_FMA4;HAVE_MMX;HAVE_MMXEXT;HAVE_SSE;HAVE_SSE2;HAVE_SSE3;HAVE_SSE4;HAVE_SSE42;HAVE_SSSE3;HAVE_XOP;HAVE_CPUNOP;HAVE_I686;HAVE_MIPSFPU;HAVE_MIPS32R2;HAVE_MIPS32R5;HAVE_MIPS64R2;HAVE_MIPS32R6;HAVE_MIPS64R6;HAVE_MIPSDSP;HAVE_MIPSDSPR2;HAVE_MSA;HAVE_LOONGSON2;HAVE_LOONGSON3;HAVE_MMI;HAVE_ARMV5TE_EXTERNAL;HAVE_ARMV6_EXTERNAL;HAVE_ARMV6T2_EXTERNAL;HAVE_ARMV8_EXTERNAL;HAVE_NEON_EXTERNAL;HAVE_VFP_EXTERNAL;HAVE_VFPV3_EXTERNAL;HAVE_SETEND_EXTERNAL;HAVE_ALTIVEC_EXTERNAL;HAVE_DCBZL_EXTERNAL;HAVE_LDBRX_EXTERNAL;HAVE_POWER8_EXTERNAL;HAVE_PPC4XX_EXTERNAL;HAVE_VSX_EXTERNAL;HAVE_AESNI_EXTERNAL;HAVE_AMD3DNOW_EXTERNAL;HAVE_AMD3DNOWEXT_EXTERNAL;HAVE_AVX_EXTERNAL;HAVE_AVX2_EXTERNAL;HAVE_FMA3_EXTERNAL;HAVE_FMA4_EXTERNAL;HAVE_MMX_EXTERNAL;HAVE_MMXEXT_EXTERNAL;HAVE_SSE_EXTERNAL;HAVE_SSE2_EXTERNAL;HAVE_SSE3_EXTERNAL;HAVE_SSE4_EXTERNAL;HAVE_SSE42_EXTERNAL;HAVE_SSSE3_EXTERNAL;HAVE_XOP_EXTERNAL;HAVE_CPUNOP_EXTERNAL;HAVE_I686_EXTERNAL;HAVE_MIPSFPU_EXTERNAL;HAVE_MIPS32R2_EXTERNAL;HAVE_MIPS32R5_EXTERNAL;HAVE_MIPS64R2_EXTERNAL;HAVE_MIPS32R6_EXTERNAL;HAVE_MIPS64R6_EXTERNAL;HAVE_MIPSDSP_EXTERNAL;HAVE_MIPSDSPR2_EXTERNAL;HAVE_MSA_EXTERNAL;HAVE_LOONGSON2_EXTERNAL;HAVE_LOONGSON3_EXTERNAL;HAVE_MMI_EXTERNAL;HAVE_ARMV5TE_INLINE;HAVE_ARMV6_INLINE;HAVE_ARMV6T2_INLINE;HAVE_ARMV8_INLINE;HAVE_NEON_INLINE;HAVE_VFP_INLINE;HAVE_VFPV3_INLINE;HAVE_SETEND_INLINE;HAVE_ALTIVEC_INLINE;HAVE_DCBZL_INLINE;HAVE_LDBRX_INLINE;HAVE_POWER8_INLINE;HAVE_PPC4XX_INLINE;HAVE_VSX_INLINE;HAVE_AESNI_INLINE;HAVE_AMD3DNOW_INLINE;HAVE_AMD3DNOWEXT_INLINE;HAVE_AVX_INLINE;HAVE_AVX2_INLINE;HAVE_FMA3_INLINE;HAVE_FMA4_INLINE;HAVE_MMX_INLINE;HAVE_MMXEXT_INLINE;HAVE_SSE_INLINE;HAVE_SSE2_INLINE;HAVE_SSE3_INLINE;HAVE_SSE4_INLINE;HAVE_SSE42_INLINE;HAVE_SSSE3_INLINE;HAVE_XOP_INLINE;HAVE_CPUNOP_INLINE;HAVE_I686_INLINE;HAVE_MIPSFPU_INLINE;HAVE_MIPS32R2_INLINE;HAVE_MIPS32R5_INLINE;HAVE_MIPS64R2_INLINE;HAVE_MIPS32R6_INLINE;HAVE_MIPS64R6_INLINE;HAVE_MIPSDSP_INLINE;HAVE_MIPSDSPR2_INLINE;HAVE_MSA_INLINE;HAVE_LOONGSON2_INLINE;HAVE_LOONGSON3_INLINE;HAVE_MMI_INLINE;HAVE_ALIGNED_STACK;HAVE_FAST_64BIT;HAVE_FAST_CLZ;HAVE_FAST_CMOV;HAVE_LOCAL_ALIGNED_8;HAVE_LOCAL_ALIGNED_16;HAVE_LOCAL_ALIGNED_32;HAVE_SIMD_ALIGN_16;HAVE_ATOMICS_GCC;HAVE_ATOMICS_SUNCC;HAVE_ATOMICS_WIN32;HAVE_ATOMIC_CAS_PTR;HAVE_ATOMIC_COMPARE_EXCHANGE;HAVE_MACHINE_RW_BARRIER;HAVE_MEMORYBARRIER;HAVE_MM_EMPTY;HAVE_RDTSC;HAVE_SARESTART;HAVE_SYNC_VAL_COMPARE_AND_SWAP;HAVE_CABS;HAVE_CEXP;HAVE_INLINE_ASM;HAVE_SYMVER;HAVE_YASM;HAVE_BIGENDIAN;HAVE_FAST_UNALIGNED;HAVE_INCOMPATIBLE_LIBAV_ABI;HAVE_ALSA_ASOUNDLIB_H;HAVE_ALTIVEC_H;HAVE_ARPA_INET_H;HAVE_ASM_TYPES_H;HAVE_CDIO_PARANOIA_H;HAVE_CDIO_PARANOIA_PARANOIA_H;HAVE_DEV_BKTR_IOCTL_BT848_H;HAVE_DEV_BKTR_IOCTL_METEOR_H;HAVE_DEV_IC_BT8XX_H;HAVE_DEV_VIDEO_BKTR_IOCTL_BT848_H;HAVE_DEV_VIDEO_METEOR_IOCTL_METEOR_H;HAVE_DIRECT_H;HAVE_DIRENT_H;HAVE_DLFCN_H;HAVE_D3D11_H;HAVE_DXVA_H;HAVE_ES2_GL_H;HAVE_GSM_H;HAVE_IO_H;HAVE_MACH_MACH_TIME_H;HAVE_MACHINE_IOCTL_BT848_H;HAVE_MACHINE_IOCTL_METEOR_H;HAVE_MALLOC_H;HAVE_OPENCV2_CORE_CORE_C_H;HAVE_OPENJPEG_2_1_OPENJPEG_H;HAVE_OPENJPEG_2_0_OPENJPEG_H;HAVE_OPENJPEG_1_5_OPENJPEG_H;HAVE_OPENGL_GL3_H;HAVE_POLL_H;HAVE_SNDIO_H;HAVE_SOUNDCARD_H;HAVE_SYS_MMAN_H;HAVE_SYS_PARAM_H;HAVE_SYS_RESOURCE_H;HAVE_SYS_SELECT_H;HAVE_SYS_SOUNDCARD_H;HAVE_SYS_TIME_H;HAVE_SYS_UN_H;HAVE_SYS_VIDEOIO_H;HAVE_TERMIOS_H;HAVE_UDPLITE_H;HAVE_UNISTD_H;HAVE_VALGRIND_VALGRIND_H;HAVE_WINDOWS_H;HAVE_WINSOCK2_H;HAVE_INTRINSICS_NEON;HAVE_ATANF;HAVE_ATAN2F;HAVE_CBRT;HAVE_CBRTF;HAVE_COPYSIGN;HAVE_COSF;HAVE_ERF;HAVE_EXP2;HAVE_EXP2F;HAVE_EXPF;HAVE_HYPOT;HAVE_ISFINITE;HAVE_ISINF;HAVE_ISNAN;HAVE_LDEXPF;HAVE_LLRINT;HAVE_LLRINTF;HAVE_LOG2;HAVE_LOG2F;HAVE_LOG10F;HAVE_LRINT;HAVE_LRINTF;HAVE_POWF;HAVE_RINT;HAVE_ROUND;HAVE_ROUNDF;HAVE_SINF;HAVE_TRUNC;HAVE_TRUNCF;HAVE_ACCESS;HAVE_ALIGNED_MALLOC;HAVE_ARC4RANDOM;HAVE_CLOCK_GETTIME;HAVE_CLOSESOCKET;HAVE_COMMANDLINETOARGVW;HAVE_COTASKMEMFREE;HAVE_CRYPTGENRANDOM;HAVE_DLOPEN;HAVE_FCNTL;HAVE_FLT_LIM;HAVE_FORK;HAVE_GETADDRINFO;HAVE_GETHRTIME;HAVE_GETOPT;HAVE_GETPROCESSAFFINITYMASK;HAVE_GETPROCESSMEMORYINFO;HAVE_GETPROCESSTIMES;HAVE_GETRUSAGE;HAVE_GETSYSTEMTIMEASFILETIME;HAVE_GETTIMEOFDAY;HAVE_GLOB;HAVE_GLXGETPROCADDRESS;HAVE_GMTIME_R;HAVE_INET_ATON;HAVE_ISATTY;HAVE_JACK_PORT_GET_LATENCY_RANGE;HAVE_KBHIT;HAVE_LOCALTIME_R;HAVE_LSTAT;HAVE_LZO1X_999_COMPRESS;HAVE_MACH_ABSOLUTE_TIME;HAVE_MAPVIEWOFFILE;HAVE_MEMALIGN;HAVE_MKSTEMP;HAVE_MMAP;HAVE_MPROTECT;HAVE_NANOSLEEP;HAVE_PEEKNAMEDPIPE;HAVE_POSIX_MEMALIGN;HAVE_PTHREAD_CANCEL;HAVE_SCHED_GETAFFINITY;HAVE_SETCONSOLETEXTATLine truncated
|
||||
|
||||
foreach(option IN LISTS settings-list)
|
||||
set_disabled_to_zero(${option})
|
||||
endforeach()
|
||||
|
||||
# Generate config.h file
|
||||
configure_file(config.h.in config.h @ONLY)
|
||||
|
||||
# Generate avconfig.h file
|
||||
# Test for BIGENDIAN
|
||||
if(CMAKE_C_BYTE_ORDER STREQUAL "BIG_ENDIAN")
|
||||
set(IS_BIGENDIAN 1)
|
||||
else()
|
||||
set(IS_BIGENDIAN 0)
|
||||
endif()
|
||||
|
||||
file(CONFIGURE
|
||||
OUTPUT "${CMAKE_CURRENT_BINARY_DIR}/libavutil/avconfig.h"
|
||||
CONTENT
|
||||
"
|
||||
/* Generated by cmake for use with ppsspp-ffmpeg module */
|
||||
#ifndef AVUTIL_AVCONFIG_H
|
||||
#define AVUTIL_AVCONFIG_H
|
||||
#define AV_HAVE_BIGENDIAN ${IS_BIGENDIAN}
|
||||
#define AV_HAVE_FAST_UNALIGNED 0
|
||||
#define AV_HAVE_INCOMPATIBLE_LIBAV_ABI 0
|
||||
#endif /* AVUTIL_AVCONFIG_H */
|
||||
"
|
||||
NEWLINE_STYLE LF
|
||||
)
|
||||
|
||||
# Generate ffversion.h header file
|
||||
# In ffmpeg's version.sh script, 'git' is used, but that's an external dependency we don't otherwise need
|
||||
# we can just output say the first 7 digits of .git/refs/heads/master, assuming it exists, with hardcoded fallback
|
||||
set(FILE_PATH "${SRC_DIR}/.git/refs/heads/master")
|
||||
if(EXISTS ${FILE_PATH})
|
||||
file(READ "${FILE_PATH}" GIT_HASH)
|
||||
string(SUBSTRING "${GIT_HASH}" 0 7 GIT_HASH)
|
||||
set(GIT_HASH \"${GIT_HASH}\")
|
||||
else()
|
||||
set(GIT_HASH \"1e3b496\")
|
||||
endif()
|
||||
|
||||
file(CONFIGURE
|
||||
OUTPUT "${CMAKE_CURRENT_BINARY_DIR}/libavutil/ffversion.h"
|
||||
CONTENT
|
||||
"
|
||||
/* Automatically generated by cmake for use with ppsspp-ffmpeg module */
|
||||
#ifndef AVUTIL_FFVERSION_H
|
||||
#define AVUTIL_FFVERSION_H
|
||||
#define FFMPEG_VERSION ${GIT_HASH}
|
||||
#endif /* AVUTIL_FFVERSION_H */
|
||||
"
|
||||
NEWLINE_STYLE LF
|
||||
)
|
||||
@@ -0,0 +1,289 @@
|
||||
# configure_functions.cmake - various functions from ffmpeg's configure script rewritten for cmake
|
||||
|
||||
# Note: in order to not break ffmpeg, we need to arrive at the same result as ffmpeg's configure script's checks, so instead of relying solely on cmake modules, I ported ffmpeg's configure script's functions needed below.
|
||||
|
||||
# Create a directory to store all of our tests
|
||||
set(CONFIG_TESTS_DIR "${CMAKE_CURRENT_BINARY_DIR}/configure_checks")
|
||||
file(MAKE_DIRECTORY ${CONFIG_TESTS_DIR})
|
||||
|
||||
include(CheckIncludeFile)
|
||||
include(CheckIncludeFiles)
|
||||
|
||||
# Rewrite of ffmpeg's check_cc function at line 866 of configure script
|
||||
function(check_cc target ARGUMENTS RESULT_VAR)
|
||||
set(EXTRA_LIBS "")
|
||||
set(EXTRA_FLAGS "")
|
||||
set(ADDL_LIB_DIRS_CLEAN "")
|
||||
set(COMPILE_INCLUDES "")
|
||||
|
||||
foreach(arg IN ITEMS ${ARGN} ${ADDL_LIB_DIRS} ${ADDL_INCLUDES})
|
||||
# Windows-specific libs
|
||||
if(MSVC AND arg MATCHES "^-l(msvcrt|shell32|advapi32|user32|gdi32|kernel32|psapi|ws2_32)")
|
||||
string(REGEX REPLACE "^-l" "" clean_lib "${arg}")
|
||||
list(APPEND EXTRA_LIBS "${clean_lib}.lib")
|
||||
|
||||
# Standard UNIX linker flags
|
||||
elseif(arg MATCHES "^-l")
|
||||
list(APPEND EXTRA_LIBS "${arg}")
|
||||
|
||||
# Absolute library paths (.lib, .a, .so, etc.)
|
||||
elseif(IS_ABSOLUTE "${arg}" AND arg MATCHES "\\.(lib|a|so|dylib)$")
|
||||
list(APPEND EXTRA_LIBS "${arg}")
|
||||
|
||||
# Library Directory flags (Unix: -L, MSVC: /LIBPATH: or -libpath:)
|
||||
elseif(arg MATCHES "^-L")
|
||||
string(SUBSTRING "${arg}" 2 -1 clean_dir)
|
||||
list(APPEND ADDL_LIB_DIRS_CLEAN "${clean_dir}")
|
||||
elseif(arg MATCHES "^[-/][Ll][Ii][Bb][Pp][Aa][Tt][Hh]:")
|
||||
string(REGEX REPLACE "^[-/][Ll][Ii][Bb][Pp][Aa][Tt][Hh]:" "" clean_dir "${arg}")
|
||||
list(APPEND ADDL_LIB_DIRS_CLEAN "${clean_dir}")
|
||||
|
||||
# Include Directory flags (Unix: -I, MSVC: /I or -I) or raw paths from ADDL_INCLUDES
|
||||
elseif(arg MATCHES "^[-/]I")
|
||||
string(REGEX REPLACE "^[-/]I" "" clean_dir "${arg}")
|
||||
list(APPEND COMPILE_INCLUDES "${clean_dir}")
|
||||
|
||||
# Deal with raw paths if they didn't match any of the above patterns
|
||||
elseif(IS_DIRECTORY "${arg}")
|
||||
if(arg IN_LIST ADDL_INCLUDES)
|
||||
list(APPEND COMPILE_INCLUDES "${arg}")
|
||||
else()
|
||||
list(APPEND ADDL_LIB_DIRS_CLEAN "${arg}")
|
||||
endif()
|
||||
|
||||
# Everything else is a compiler option flag
|
||||
else()
|
||||
list(APPEND EXTRA_FLAGS "${arg}")
|
||||
endif()
|
||||
endforeach()
|
||||
|
||||
# Clean up duplicate paths/extra libs
|
||||
foreach(list_var IN ITEMS EXTRA_LIBS ADDL_LIB_DIRS_CLEAN EXTRA_FLAGS COMPILE_INCLUDES)
|
||||
if(${list_var})
|
||||
list(REMOVE_DUPLICATES ${list_var})
|
||||
endif()
|
||||
endforeach()
|
||||
|
||||
# Check if ARGUMENTS contains a variation of main function definition
|
||||
string(REGEX MATCH "int[ \t\r\n]+main[ \t\r\n]*\\(" HAS_MAIN "${ARGUMENTS}")
|
||||
if(NOT HAS_MAIN)
|
||||
# Append a standard int main() block to the end of the existing source code as a failsafe
|
||||
string(APPEND ARGUMENTS "\n\nint main(void) {\n return 0;\n}\n")
|
||||
endif()
|
||||
|
||||
set(TEST_SOURCE "${CONFIG_TESTS_DIR}/${target}.c")
|
||||
file(WRITE "${TEST_SOURCE}" "${ARGUMENTS}")
|
||||
set(OUTPUT_OBJ "${CONFIG_TESTS_DIR}/${target}.o")
|
||||
try_compile(COMPILE_RESULT
|
||||
"${CONFIG_TESTS_DIR}"
|
||||
"${TEST_SOURCE}"
|
||||
COMPILE_DEFINITIONS ${EXTRA_FLAGS}
|
||||
LINK_LIBRARIES ${EXTRA_LIBS}
|
||||
CMAKE_FLAGS
|
||||
"-DINCLUDE_DIRECTORIES:PATH=${COMPILE_INCLUDES}"
|
||||
"-DLINK_DIRECTORIES:PATH=${ADDL_LIB_DIRS_CLEAN}"
|
||||
COPY_FILE "${OUTPUT_OBJ}"
|
||||
OUTPUT_VARIABLE COMPILE_OUTPUT
|
||||
)
|
||||
|
||||
if(COMPILE_RESULT)
|
||||
message(STATUS "${target} check passed")
|
||||
set(${RESULT_VAR} 1 PARENT_SCOPE)
|
||||
else()
|
||||
message(STATUS "${target} check failed") # Standard message to not clutter build logs overmuch
|
||||
# message(STATUS "${target} check failed. Error:\n${COMPILE_OUTPUT}")
|
||||
# message(STATUS "${target} check failed. See ${target}_error.log for details")
|
||||
# file(WRITE "${CONFIG_TESTS_DIR}/${target}_error.log" "${COMPILE_OUTPUT}")
|
||||
endif()
|
||||
endfunction()
|
||||
|
||||
# Rewrite of fmpeg's check_ld function at line 953 of configure script
|
||||
function(check_ld target ARGUMENTS EXTERNAL_LIB RESULT_VAR)
|
||||
set(ALL_ARGS ${ARGN})
|
||||
list(APPEND ALL_ARGS "${EXTERNAL_LIB}")
|
||||
check_cc("${target}" "${ARGUMENTS}" CC_RESULT ${ALL_ARGS})
|
||||
if(CC_RESULT)
|
||||
set(${RESULT_VAR} 1 PARENT_SCOPE)
|
||||
endif()
|
||||
endfunction()
|
||||
|
||||
# Rewrite of ffmpeg's check_code function at line 972 of configure script
|
||||
function(check_code target compiler headers ARGUMENTS RESULT_VAR)
|
||||
set(EXTRA_FLAGS "")
|
||||
foreach(arg IN ITEMS ${ARGN})
|
||||
# Append to EXTRA_FLAGS
|
||||
if(EXTRA_FLAGS STREQUAL "")
|
||||
set(EXTRA_FLAGS "${arg}")
|
||||
else()
|
||||
list(APPEND EXTRA_FLAGS "${arg}")
|
||||
endif()
|
||||
endforeach()
|
||||
# Check whether more than 1 header file was passed as a function argument
|
||||
list(LENGTH headers len)
|
||||
if (len GREATER 1)
|
||||
foreach(header IN LISTS headers)
|
||||
string(APPEND HEADERS_STRING "#include ${header}\n")
|
||||
endforeach()
|
||||
elseif (headers STREQUAL "")
|
||||
set(HEADERS_STRING "")
|
||||
else()
|
||||
set(HEADERS_STRING "#include ${headers}")
|
||||
endif()
|
||||
set(test_func "check_${compiler}")
|
||||
if (NOT ${test_func} STREQUAL "check_ld")
|
||||
set(TEST_CODE "${HEADERS_STRING}\nint main(void) { ${ARGUMENTS};\nreturn 0; }")
|
||||
cmake_language(CALL ${test_func} ${target} "${TEST_CODE}" ${RESULT_VAR} ${EXTRA_FLAGS})
|
||||
else()
|
||||
set(TEST_CODE "${HEADERS_STRING}\nint main(void) { ${ARGUMENTS};\nreturn 0; }")
|
||||
cmake_language(CALL ${test_func} ${target} "${TEST_CODE}" "" ${RESULT_VAR} ${EXTRA_FLAGS})
|
||||
endif()
|
||||
set(${RESULT_VAR} "${${RESULT_VAR}}" PARENT_SCOPE)
|
||||
endfunction()
|
||||
|
||||
# Rewrite of ffmpeg's check_header function at line 1053 of configure script
|
||||
function(check_header target header flag RESULT_VAR)
|
||||
set(Backup_Flags ${CMAKE_REQUIRED_FLAGS})
|
||||
if(flag)
|
||||
string(APPEND CMAKE_REQUIRED_FLAGS " ${flag}")
|
||||
endif()
|
||||
if (header MATCHES ";")
|
||||
check_include_files("${header}" ${RESULT_VAR})
|
||||
else()
|
||||
check_include_file(${header} ${RESULT_VAR} "${flag}")
|
||||
endif()
|
||||
set(CMAKE_REQUIRED_FLAGS ${Backup_Flags})
|
||||
set(${RESULT_VAR} "${${RESULT_VAR}}" PARENT_SCOPE)
|
||||
endfunction()
|
||||
|
||||
# Rewrite of ffmpeg's check_func function at line 1076 of configure script
|
||||
function(check_func target func RESULT_VAR)
|
||||
set(EXTRA_FLAGS "")
|
||||
foreach(arg IN ITEMS ${ARGN})
|
||||
# Append to EXTRA_FLAGS
|
||||
if(EXTRA_FLAGS STREQUAL "")
|
||||
set(EXTRA_FLAGS "${arg}")
|
||||
else()
|
||||
list(APPEND EXTRA_FLAGS "${arg}")
|
||||
endif()
|
||||
endforeach()
|
||||
set(TEST_CODE "extern int ${func}();\nint main(void){ ${func}(); }")
|
||||
check_ld(${target} "${TEST_CODE}" "" ${RESULT_VAR} ${EXTRA_FLAGS})
|
||||
set(${RESULT_VAR} "${${RESULT_VAR}}" PARENT_SCOPE)
|
||||
endfunction()
|
||||
|
||||
# Rewrite of ffmpeg's check_complexfunc function at line 1087 of configure script
|
||||
function(check_complexfunc target func RESULT_VAR)
|
||||
set(TEST_CODE "#include <complex.h>\n#include <math.h>\nfloat foo(complex float f, complex float g) { return ${func}(f * I); \}\nint main(void){ return (int) foo; \}")
|
||||
if(MSVC)
|
||||
check_ld(${target} "${TEST_CODE}" "-lmsvcrt" ${RESULT_VAR})
|
||||
else()
|
||||
check_ld(${target} "${TEST_CODE}" "-lm" ${RESULT_VAR})
|
||||
endif()
|
||||
set(${RESULT_VAR} "${${RESULT_VAR}}" PARENT_SCOPE)
|
||||
endfunction()
|
||||
|
||||
# Rewrite of ffmpeg's check_mathfunc function at line 1102 of configure script
|
||||
function(check_mathfunc target func lib RESULT_VAR)
|
||||
set(args1 "f, g")
|
||||
set(args2 "f")
|
||||
if ("${target}" MATCHES "atan2f|copysign|hypot|ldexpf|powf")
|
||||
set(TEST_CODE "#include <math.h>\nfloat foo(float f, float g) { return ${func}(${args1}); }\nint main(void){ return (int) foo; }")
|
||||
else()
|
||||
set(TEST_CODE "#include <math.h>\nfloat foo(float f, float g) { return ${func}(${args2}); }\nint main(void){ return (int) foo; }")
|
||||
endif()
|
||||
check_ld(${target} "${TEST_CODE}" "${lib}" ${RESULT_VAR})
|
||||
if (${RESULT_VAR} EQUAL 1)
|
||||
set(${RESULT_VAR} "${${RESULT_VAR}}" PARENT_SCOPE)
|
||||
endif()
|
||||
endfunction()
|
||||
|
||||
# Rewrite of ffmpeg's check_func_headers function at line 1116 of configure script
|
||||
function(check_func_headers target headers funcs lib RESULT_VAR)
|
||||
# Check whether more than 1 header file was passed as an argument
|
||||
list(LENGTH headers len)
|
||||
if (len GREATER 1)
|
||||
foreach(header IN LISTS headers)
|
||||
string(APPEND HEADERS_STRING "#include ${header}\n")
|
||||
endforeach()
|
||||
else()
|
||||
set(HEADERS_STRING "#include ${headers}")
|
||||
endif()
|
||||
# Check whether more than 1 function to test was passed as an argument
|
||||
list(LENGTH funcs len)
|
||||
if (len GREATER 1)
|
||||
foreach(func IN LISTS funcs)
|
||||
string(APPEND FUNCS_STRING "long check_${func}(void) { return (long) ${func}; }\n")
|
||||
endforeach()
|
||||
else()
|
||||
set(FUNCS_STRING "long check_${funcs}(void) { return (long) ${funcs}; }\n")
|
||||
endif()
|
||||
set(TEST_CODE "${HEADERS_STRING}\n${FUNCS_STRING}\nint main(void) { return 0; }")
|
||||
check_ld(${target} "${TEST_CODE}" "${lib}" ${RESULT_VAR})
|
||||
set(${RESULT_VAR} "${${RESULT_VAR}}" PARENT_SCOPE)
|
||||
# To Do: in ffmpeg's configure script, some results prompt adding additional system libs.
|
||||
endfunction()
|
||||
|
||||
# Rewrite of ffmpeg's check_cpp_condition function at line 1151 of configure script
|
||||
function(check_cpp_condition target header condition RESULT_VAR)
|
||||
set(HEADER_STRING "#include <${header}>")
|
||||
set(CONDITION_STRING "#if !\(${condition})\n#error \"unsatisfied condition: ${condition}\"\n#endif")
|
||||
set(TEST_CODE "${HEADER_STRING}\n${CONDITION_STRING}\nint x;")
|
||||
check_cc(${target} "${TEST_CODE}" ${RESULT_VAR})
|
||||
set(${RESULT_VAR} "${${RESULT_VAR}}" PARENT_SCOPE)
|
||||
endfunction()
|
||||
|
||||
# Rewrite of ffmpeg's check_lib function at line 1164 of configure script
|
||||
function(check_lib target header func flag RESULT_VAR)
|
||||
set(HEADER_STRING "${header}")
|
||||
set(FUNC_STRING "${func}")
|
||||
set(HEADER_RESULT_VAR "HEADER_${RESULT_VAR}")
|
||||
check_header("${target}_header" "${HEADER_STRING}" "${flag}" ${HEADER_RESULT_VAR})
|
||||
if (${HEADER_RESULT_VAR} EQUAL 1)
|
||||
check_func(${target} "${func}" ${RESULT_VAR} ${flag})
|
||||
endif()
|
||||
set(${RESULT_VAR} "${${RESULT_VAR}}" PARENT_SCOPE)
|
||||
endfunction()
|
||||
|
||||
# Rewrite of ffmpeg's check_lib2 function at line 1164 of configure script
|
||||
function(check_lib2 target headers funcs lib RESULT_VAR)
|
||||
check_func_headers(${target} "${headers}" "${funcs}" "${lib}" ${RESULT_VAR})
|
||||
set(${RESULT_VAR} "${${RESULT_VAR}}" PARENT_SCOPE)
|
||||
endfunction()
|
||||
|
||||
# Rewrite of ffmpeg's check_type function at line 1237 of configure script
|
||||
function(check_type target headers type RESULT_VAR)
|
||||
check_code(${target} cc "${headers}" "${type} v" ${RESULT_VAR})
|
||||
set(${RESULT_VAR} "${${RESULT_VAR}}" PARENT_SCOPE)
|
||||
endfunction()
|
||||
|
||||
# Rewrite of ffmpeg's check_struct function at line 1246 of configure script
|
||||
function(check_struct target headers struct member RESULT_VAR)
|
||||
set(EXTRA_FLAGS "")
|
||||
foreach(arg IN ITEMS ${ARGN})
|
||||
# Append to EXTRA_FLAGS
|
||||
if(EXTRA_FLAGS STREQUAL "")
|
||||
set(EXTRA_FLAGS "${arg}")
|
||||
else()
|
||||
list(APPEND EXTRA_FLAGS "${arg}")
|
||||
endif()
|
||||
endforeach()
|
||||
check_code(${target} cc "${headers}" "const void *p = &((${struct} *)0)->${member}" ${RESULT_VAR} ${EXTRA_FLAGS})
|
||||
set(${RESULT_VAR} "${${RESULT_VAR}}" PARENT_SCOPE)
|
||||
endfunction()
|
||||
|
||||
# Rewrite of ffmpeg's check_builtin function at line 1257 of configure script
|
||||
function(check_builtin target headers builtin RESULT_VAR)
|
||||
check_code(${target} ld "${headers}" "${builtin}" ${RESULT_VAR})
|
||||
set(${RESULT_VAR} "${${RESULT_VAR}}" PARENT_SCOPE)
|
||||
# Note: configure actually invokes check_code with an extra argument!
|
||||
# Now that we've refactored check_cc to accept optional arguments, we could deal with this here if needed
|
||||
endfunction()
|
||||
|
||||
# convenience function at the end that sets any truthy variables to "1" and any falsy variables to "0"
|
||||
function(set_disabled_to_zero option)
|
||||
if(${option})
|
||||
set(${option} 1 PARENT_SCOPE)
|
||||
else()
|
||||
set(${option} 0 PARENT_SCOPE)
|
||||
endif()
|
||||
endfunction()
|
||||
@@ -0,0 +1,184 @@
|
||||
# libavcodec source files (all platforms)
|
||||
set(LIBAVCODEC_SOURCE_FILES
|
||||
${LIBAVCODEC_SRC_DIR}/aac_ac3_parser.c
|
||||
${LIBAVCODEC_SRC_DIR}/aac_parser.c
|
||||
${LIBAVCODEC_SRC_DIR}/aacadtsdec.c
|
||||
${LIBAVCODEC_SRC_DIR}/aacdec.c
|
||||
${LIBAVCODEC_SRC_DIR}/aacps_float.c
|
||||
${LIBAVCODEC_SRC_DIR}/aacpsdsp_float.c
|
||||
${LIBAVCODEC_SRC_DIR}/aacsbr.c
|
||||
${LIBAVCODEC_SRC_DIR}/aactab.c
|
||||
${LIBAVCODEC_SRC_DIR}/aandcttab.c
|
||||
${LIBAVCODEC_SRC_DIR}/allcodecs.c
|
||||
${LIBAVCODEC_SRC_DIR}/audioconvert.c
|
||||
${LIBAVCODEC_SRC_DIR}/avdct.c
|
||||
${LIBAVCODEC_SRC_DIR}/avfft.c
|
||||
${LIBAVCODEC_SRC_DIR}/avpacket.c
|
||||
${LIBAVCODEC_SRC_DIR}/avpicture.c
|
||||
${LIBAVCODEC_SRC_DIR}/bitstream_filter.c
|
||||
${LIBAVCODEC_SRC_DIR}/bitstream.c
|
||||
${LIBAVCODEC_SRC_DIR}/blockdsp.c
|
||||
${LIBAVCODEC_SRC_DIR}/bswapdsp.c
|
||||
${LIBAVCODEC_SRC_DIR}/cabac.c
|
||||
${LIBAVCODEC_SRC_DIR}/codec_desc.c
|
||||
${LIBAVCODEC_SRC_DIR}/d3d11va.c
|
||||
${LIBAVCODEC_SRC_DIR}/dct.c
|
||||
${LIBAVCODEC_SRC_DIR}/dct32_fixed.c
|
||||
${LIBAVCODEC_SRC_DIR}/dct32_float.c
|
||||
${LIBAVCODEC_SRC_DIR}/dirac.c
|
||||
${LIBAVCODEC_SRC_DIR}/dv_profile.c
|
||||
${LIBAVCODEC_SRC_DIR}/error_resilience.c
|
||||
${LIBAVCODEC_SRC_DIR}/exif.c
|
||||
${LIBAVCODEC_SRC_DIR}/faandct.c
|
||||
${LIBAVCODEC_SRC_DIR}/faanidct.c
|
||||
${LIBAVCODEC_SRC_DIR}/fdctdsp.c
|
||||
${LIBAVCODEC_SRC_DIR}/fft_fixed_32.c
|
||||
${LIBAVCODEC_SRC_DIR}/fft_fixed.c
|
||||
${LIBAVCODEC_SRC_DIR}/fft_float.c
|
||||
${LIBAVCODEC_SRC_DIR}/fft_init_table.c
|
||||
${LIBAVCODEC_SRC_DIR}/ffv1.c
|
||||
${LIBAVCODEC_SRC_DIR}/ffv1enc.c
|
||||
${LIBAVCODEC_SRC_DIR}/flvdec.c
|
||||
${LIBAVCODEC_SRC_DIR}/flvenc.c
|
||||
${LIBAVCODEC_SRC_DIR}/frame_thread_encoder.c
|
||||
${LIBAVCODEC_SRC_DIR}/golomb.c
|
||||
${LIBAVCODEC_SRC_DIR}/h263_parser.c
|
||||
${LIBAVCODEC_SRC_DIR}/h263.c
|
||||
${LIBAVCODEC_SRC_DIR}/h263data.c
|
||||
${LIBAVCODEC_SRC_DIR}/h263dec.c
|
||||
${LIBAVCODEC_SRC_DIR}/h263dsp.c
|
||||
${LIBAVCODEC_SRC_DIR}/h264_cabac.c
|
||||
${LIBAVCODEC_SRC_DIR}/h264_cavlc.c
|
||||
${LIBAVCODEC_SRC_DIR}/h264_direct.c
|
||||
${LIBAVCODEC_SRC_DIR}/h264_loopfilter.c
|
||||
${LIBAVCODEC_SRC_DIR}/h264_mb.c
|
||||
${LIBAVCODEC_SRC_DIR}/h264_parser.c
|
||||
${LIBAVCODEC_SRC_DIR}/h264_picture.c
|
||||
${LIBAVCODEC_SRC_DIR}/h264_ps.c
|
||||
${LIBAVCODEC_SRC_DIR}/h264_refs.c
|
||||
${LIBAVCODEC_SRC_DIR}/h264_sei.c
|
||||
${LIBAVCODEC_SRC_DIR}/h264_slice.c
|
||||
${LIBAVCODEC_SRC_DIR}/h264.c
|
||||
${LIBAVCODEC_SRC_DIR}/h264chroma.c
|
||||
${LIBAVCODEC_SRC_DIR}/h264dsp.c
|
||||
${LIBAVCODEC_SRC_DIR}/h264idct.c
|
||||
${LIBAVCODEC_SRC_DIR}/h264pred.c
|
||||
${LIBAVCODEC_SRC_DIR}/h264qpel.c
|
||||
${LIBAVCODEC_SRC_DIR}/hpeldsp.c
|
||||
${LIBAVCODEC_SRC_DIR}/huffman.c
|
||||
${LIBAVCODEC_SRC_DIR}/huffyuv.c
|
||||
${LIBAVCODEC_SRC_DIR}/huffyuvenc.c
|
||||
${LIBAVCODEC_SRC_DIR}/huffyuvencdsp.c
|
||||
${LIBAVCODEC_SRC_DIR}/idctdsp.c
|
||||
${LIBAVCODEC_SRC_DIR}/imdct15.c
|
||||
${LIBAVCODEC_SRC_DIR}/imgconvert.c
|
||||
${LIBAVCODEC_SRC_DIR}/intelh263dec.c
|
||||
${LIBAVCODEC_SRC_DIR}/ituh263dec.c
|
||||
${LIBAVCODEC_SRC_DIR}/ituh263enc.c
|
||||
${LIBAVCODEC_SRC_DIR}/jfdctfst.c
|
||||
${LIBAVCODEC_SRC_DIR}/jfdctint.c
|
||||
${LIBAVCODEC_SRC_DIR}/jpegtables.c
|
||||
${LIBAVCODEC_SRC_DIR}/jrevdct.c
|
||||
${LIBAVCODEC_SRC_DIR}/kbdwin.c
|
||||
${LIBAVCODEC_SRC_DIR}/latm_parser.c
|
||||
${LIBAVCODEC_SRC_DIR}/lossless_videodsp.c
|
||||
${LIBAVCODEC_SRC_DIR}/mathtables.c
|
||||
${LIBAVCODEC_SRC_DIR}/mdct_fixed_32.c
|
||||
${LIBAVCODEC_SRC_DIR}/mdct_fixed.c
|
||||
${LIBAVCODEC_SRC_DIR}/mdct_float.c
|
||||
${LIBAVCODEC_SRC_DIR}/me_cmp.c
|
||||
${LIBAVCODEC_SRC_DIR}/mjpegbdec.c
|
||||
${LIBAVCODEC_SRC_DIR}/mjpegdec.c
|
||||
${LIBAVCODEC_SRC_DIR}/motion_est.c
|
||||
${LIBAVCODEC_SRC_DIR}/mpeg_er.c
|
||||
${LIBAVCODEC_SRC_DIR}/mpeg12.c
|
||||
${LIBAVCODEC_SRC_DIR}/mpeg12data.c
|
||||
${LIBAVCODEC_SRC_DIR}/mpeg12dec.c
|
||||
${LIBAVCODEC_SRC_DIR}/mpeg4audio.c
|
||||
${LIBAVCODEC_SRC_DIR}/mpeg4video_parser.c
|
||||
${LIBAVCODEC_SRC_DIR}/mpeg4video.c
|
||||
${LIBAVCODEC_SRC_DIR}/mpeg4videodec.c
|
||||
${LIBAVCODEC_SRC_DIR}/mpeg4videoenc.c
|
||||
${LIBAVCODEC_SRC_DIR}/mpegaudio_parser.c
|
||||
${LIBAVCODEC_SRC_DIR}/mpegaudio.c
|
||||
${LIBAVCODEC_SRC_DIR}/mpegaudiodata.c
|
||||
${LIBAVCODEC_SRC_DIR}/mpegaudiodec_fixed.c
|
||||
${LIBAVCODEC_SRC_DIR}/mpegaudiodecheader.c
|
||||
${LIBAVCODEC_SRC_DIR}/mpegaudiodsp_data.c
|
||||
${LIBAVCODEC_SRC_DIR}/mpegaudiodsp_fixed.c
|
||||
${LIBAVCODEC_SRC_DIR}/mpegaudiodsp_float.c
|
||||
${LIBAVCODEC_SRC_DIR}/mpegaudiodsp.c
|
||||
${LIBAVCODEC_SRC_DIR}/mpegpicture.c
|
||||
${LIBAVCODEC_SRC_DIR}/mpegutils.c
|
||||
${LIBAVCODEC_SRC_DIR}/mpegvideo_enc.c
|
||||
${LIBAVCODEC_SRC_DIR}/mpegvideo_motion.c
|
||||
${LIBAVCODEC_SRC_DIR}/mpegvideo_parser.c
|
||||
${LIBAVCODEC_SRC_DIR}/mpegvideo.c
|
||||
${LIBAVCODEC_SRC_DIR}/mpegvideodata.c
|
||||
${LIBAVCODEC_SRC_DIR}/mpegvideodsp.c
|
||||
${LIBAVCODEC_SRC_DIR}/mpegvideoencdsp.c
|
||||
${LIBAVCODEC_SRC_DIR}/options.c
|
||||
${LIBAVCODEC_SRC_DIR}/parser.c
|
||||
${LIBAVCODEC_SRC_DIR}/pcm.c
|
||||
${LIBAVCODEC_SRC_DIR}/pixblockdsp.c
|
||||
${LIBAVCODEC_SRC_DIR}/profiles.c
|
||||
${LIBAVCODEC_SRC_DIR}/qpeldsp.c
|
||||
${LIBAVCODEC_SRC_DIR}/qsv_api.c
|
||||
${LIBAVCODEC_SRC_DIR}/rangecoder.c
|
||||
${LIBAVCODEC_SRC_DIR}/ratecontrol.c
|
||||
${LIBAVCODEC_SRC_DIR}/raw.c
|
||||
${LIBAVCODEC_SRC_DIR}/rdft.c
|
||||
${LIBAVCODEC_SRC_DIR}/resample.c
|
||||
${LIBAVCODEC_SRC_DIR}/resample2.c
|
||||
${LIBAVCODEC_SRC_DIR}/rl.c
|
||||
${LIBAVCODEC_SRC_DIR}/sbrdsp.c
|
||||
${LIBAVCODEC_SRC_DIR}/simple_idct.c
|
||||
${LIBAVCODEC_SRC_DIR}/sinewin_fixed.c
|
||||
${LIBAVCODEC_SRC_DIR}/sinewin.c
|
||||
${LIBAVCODEC_SRC_DIR}/startcode.c
|
||||
${LIBAVCODEC_SRC_DIR}/tiff_common.c
|
||||
${LIBAVCODEC_SRC_DIR}/utils.c
|
||||
${LIBAVCODEC_SRC_DIR}/videodsp.c
|
||||
${LIBAVCODEC_SRC_DIR}/vorbis_parser.c
|
||||
${LIBAVCODEC_SRC_DIR}/xiph.c
|
||||
${LIBAVCODEC_SRC_DIR}/xvididct.c
|
||||
)
|
||||
|
||||
# includes to ship with libavcodec
|
||||
set(LIBAVCODEC_HEADERS
|
||||
${LIBAVCODEC_SRC_DIR}/avcodec.h
|
||||
${LIBAVCODEC_SRC_DIR}/avdct.h
|
||||
${LIBAVCODEC_SRC_DIR}/avfft.h
|
||||
${LIBAVCODEC_SRC_DIR}/dv_profile.h
|
||||
${LIBAVCODEC_SRC_DIR}/d3d11va.h
|
||||
${LIBAVCODEC_SRC_DIR}/dirac.h
|
||||
${LIBAVCODEC_SRC_DIR}/dxva2.h
|
||||
${LIBAVCODEC_SRC_DIR}/qsv.h
|
||||
${LIBAVCODEC_SRC_DIR}/vaapi.h
|
||||
${LIBAVCODEC_SRC_DIR}/vda.h
|
||||
${LIBAVCODEC_SRC_DIR}/vdpau.h
|
||||
${LIBAVCODEC_SRC_DIR}/version.h
|
||||
${LIBAVCODEC_SRC_DIR}/videotoolbox.h
|
||||
${LIBAVCODEC_SRC_DIR}/vorbis_parser.h
|
||||
${LIBAVCODEC_SRC_DIR}/xvmc.h
|
||||
)
|
||||
|
||||
# OS and configure option/check specific additional sources
|
||||
if (WIN32)
|
||||
list(APPEND LIBAVCODEC_SOURCE_FILES ${LIBAVCODEC_SRC_DIR}/file_open.c)
|
||||
if (CONFIG_DXVA2 AND HAVE_DXVA2_LIB)
|
||||
list(APPEND LIBAVCODEC_SOURCE_FILES ${LIBAVCODEC_SRC_DIR}/dxva2.c)
|
||||
endif()
|
||||
endif()
|
||||
|
||||
if (Threads_FOUND)
|
||||
list(APPEND LIBAVCODEC_SOURCE_FILES ${LIBAVCODEC_SRC_DIR}/pthread.c)
|
||||
list(APPEND LIBAVCODEC_SOURCE_FILES ${LIBAVCODEC_SRC_DIR}/pthread_slice.c)
|
||||
list(APPEND LIBAVCODEC_SOURCE_FILES ${LIBAVCODEC_SRC_DIR}/pthread_frame.c)
|
||||
endif()
|
||||
|
||||
# Experimental addition to troubleshoot stubborn builds that inject ARCH_X86
|
||||
if (ARCH_X86)
|
||||
list(APPEND LIBAVCODEC_SOURCE_FILES ${LIBAVCODEC_SRC_DIR}/x86/lossless_videodsp_init.c)
|
||||
endif()
|
||||
|
||||
@@ -0,0 +1,51 @@
|
||||
# libavformat source files (all platforms)
|
||||
set(LIBAVFORMAT_SOURCE_FILES
|
||||
${LIBAVFORMAT_SRC_DIR}/aacdec.c
|
||||
${LIBAVFORMAT_SRC_DIR}/allformats.c
|
||||
${LIBAVFORMAT_SRC_DIR}/apetag.c
|
||||
${LIBAVFORMAT_SRC_DIR}/avidec.c
|
||||
${LIBAVFORMAT_SRC_DIR}/avienc.c
|
||||
${LIBAVFORMAT_SRC_DIR}/avio.c
|
||||
${LIBAVFORMAT_SRC_DIR}/aviobuf.c
|
||||
${LIBAVFORMAT_SRC_DIR}/avlanguage.c
|
||||
${LIBAVFORMAT_SRC_DIR}/cutils.c
|
||||
${LIBAVFORMAT_SRC_DIR}/dump.c
|
||||
${LIBAVFORMAT_SRC_DIR}/file.c
|
||||
${LIBAVFORMAT_SRC_DIR}/format.c
|
||||
${LIBAVFORMAT_SRC_DIR}/h263dec.c
|
||||
${LIBAVFORMAT_SRC_DIR}/h264dec.c
|
||||
${LIBAVFORMAT_SRC_DIR}/id3v1.c
|
||||
${LIBAVFORMAT_SRC_DIR}/id3v2.c
|
||||
${LIBAVFORMAT_SRC_DIR}/img2.c
|
||||
${LIBAVFORMAT_SRC_DIR}/isom.c
|
||||
${LIBAVFORMAT_SRC_DIR}/m4vdec.c
|
||||
${LIBAVFORMAT_SRC_DIR}/metadata.c
|
||||
${LIBAVFORMAT_SRC_DIR}/mp3dec.c
|
||||
${LIBAVFORMAT_SRC_DIR}/mpeg.c
|
||||
${LIBAVFORMAT_SRC_DIR}/mpegtsenc.c
|
||||
${LIBAVFORMAT_SRC_DIR}/mpegvideodec.c
|
||||
${LIBAVFORMAT_SRC_DIR}/mux.c
|
||||
${LIBAVFORMAT_SRC_DIR}/oma.c
|
||||
${LIBAVFORMAT_SRC_DIR}/omadec.c
|
||||
${LIBAVFORMAT_SRC_DIR}/options.c
|
||||
${LIBAVFORMAT_SRC_DIR}/os_support.c
|
||||
${LIBAVFORMAT_SRC_DIR}/pcm.c
|
||||
${LIBAVFORMAT_SRC_DIR}/pcmdec.c
|
||||
${LIBAVFORMAT_SRC_DIR}/pmpdec.c
|
||||
${LIBAVFORMAT_SRC_DIR}/qtpalette.c
|
||||
${LIBAVFORMAT_SRC_DIR}/rawdec.c
|
||||
${LIBAVFORMAT_SRC_DIR}/replaygain.c
|
||||
${LIBAVFORMAT_SRC_DIR}/riff.c
|
||||
${LIBAVFORMAT_SRC_DIR}/riffdec.c
|
||||
${LIBAVFORMAT_SRC_DIR}/riffenc.c
|
||||
${LIBAVFORMAT_SRC_DIR}/sdp.c
|
||||
${LIBAVFORMAT_SRC_DIR}/url.c
|
||||
${LIBAVFORMAT_SRC_DIR}/utils.c
|
||||
${LIBAVFORMAT_SRC_DIR}/wavdec.c
|
||||
)
|
||||
|
||||
set(LIBAVFORMAT_HEADERS
|
||||
${LIBAVFORMAT_SRC_DIR}/avformat.h
|
||||
${LIBAVFORMAT_SRC_DIR}/avio.h
|
||||
${LIBAVFORMAT_SRC_DIR}/version.h
|
||||
)
|
||||
@@ -0,0 +1,141 @@
|
||||
# libavutil source files (all platforms)
|
||||
set(LIBAVUTIL_SOURCE_FILES
|
||||
${LIBAVUTIL_SRC_DIR}/adler32.c
|
||||
${LIBAVUTIL_SRC_DIR}/aes_ctr.c
|
||||
${LIBAVUTIL_SRC_DIR}/aes.c
|
||||
${LIBAVUTIL_SRC_DIR}/audio_fifo.c
|
||||
${LIBAVUTIL_SRC_DIR}/avstring.c
|
||||
${LIBAVUTIL_SRC_DIR}/base64.c
|
||||
${LIBAVUTIL_SRC_DIR}/blowfish.c
|
||||
${LIBAVUTIL_SRC_DIR}/bprint.c
|
||||
${LIBAVUTIL_SRC_DIR}/buffer.c
|
||||
${LIBAVUTIL_SRC_DIR}/camellia.c
|
||||
${LIBAVUTIL_SRC_DIR}/cast5.c
|
||||
${LIBAVUTIL_SRC_DIR}/channel_layout.c
|
||||
${LIBAVUTIL_SRC_DIR}/color_utils.c
|
||||
${LIBAVUTIL_SRC_DIR}/cpu.c
|
||||
${LIBAVUTIL_SRC_DIR}/crc.c
|
||||
${LIBAVUTIL_SRC_DIR}/des.c
|
||||
${LIBAVUTIL_SRC_DIR}/dict.c
|
||||
${LIBAVUTIL_SRC_DIR}/display.c
|
||||
${LIBAVUTIL_SRC_DIR}/downmix_info.c
|
||||
${LIBAVUTIL_SRC_DIR}/error.c
|
||||
${LIBAVUTIL_SRC_DIR}/eval.c
|
||||
${LIBAVUTIL_SRC_DIR}/fifo.c
|
||||
${LIBAVUTIL_SRC_DIR}/file_open.c
|
||||
${LIBAVUTIL_SRC_DIR}/file.c
|
||||
${LIBAVUTIL_SRC_DIR}/fixed_dsp.c
|
||||
${LIBAVUTIL_SRC_DIR}/float_dsp.c
|
||||
${LIBAVUTIL_SRC_DIR}/frame.c
|
||||
${LIBAVUTIL_SRC_DIR}/hash.c
|
||||
${LIBAVUTIL_SRC_DIR}/hmac.c
|
||||
${LIBAVUTIL_SRC_DIR}/imgutils.c
|
||||
${LIBAVUTIL_SRC_DIR}/integer.c
|
||||
${LIBAVUTIL_SRC_DIR}/intmath.c
|
||||
${LIBAVUTIL_SRC_DIR}/lfg.c
|
||||
${LIBAVUTIL_SRC_DIR}/lls.c
|
||||
${LIBAVUTIL_SRC_DIR}/log.c
|
||||
${LIBAVUTIL_SRC_DIR}/log2_tab.c
|
||||
${LIBAVUTIL_SRC_DIR}/mastering_display_metadata.c
|
||||
${LIBAVUTIL_SRC_DIR}/mathematics.c
|
||||
${LIBAVUTIL_SRC_DIR}/md5.c
|
||||
${LIBAVUTIL_SRC_DIR}/mem.c
|
||||
${LIBAVUTIL_SRC_DIR}/murmur3.c
|
||||
${LIBAVUTIL_SRC_DIR}/opt.c
|
||||
${LIBAVUTIL_SRC_DIR}/parseutils.c
|
||||
${LIBAVUTIL_SRC_DIR}/pixdesc.c
|
||||
${LIBAVUTIL_SRC_DIR}/pixelutils.c
|
||||
${LIBAVUTIL_SRC_DIR}/random_seed.c
|
||||
${LIBAVUTIL_SRC_DIR}/rational.c
|
||||
${LIBAVUTIL_SRC_DIR}/rc4.c
|
||||
${LIBAVUTIL_SRC_DIR}/reverse.c
|
||||
${LIBAVUTIL_SRC_DIR}/ripemd.c
|
||||
${LIBAVUTIL_SRC_DIR}/samplefmt.c
|
||||
${LIBAVUTIL_SRC_DIR}/sha.c
|
||||
${LIBAVUTIL_SRC_DIR}/sha512.c
|
||||
${LIBAVUTIL_SRC_DIR}/stereo3d.c
|
||||
${LIBAVUTIL_SRC_DIR}/tea.c
|
||||
${LIBAVUTIL_SRC_DIR}/threadmessage.c
|
||||
${LIBAVUTIL_SRC_DIR}/time.c
|
||||
${LIBAVUTIL_SRC_DIR}/timecode.c
|
||||
${LIBAVUTIL_SRC_DIR}/tree.c
|
||||
${LIBAVUTIL_SRC_DIR}/twofish.c
|
||||
${LIBAVUTIL_SRC_DIR}/utils.c
|
||||
${LIBAVUTIL_SRC_DIR}/xga_font_data.c
|
||||
${LIBAVUTIL_SRC_DIR}/xtea.c
|
||||
)
|
||||
|
||||
set(LIBAVUTIL_HEADERS
|
||||
${LIBAVUTIL_SRC_DIR}/adler32.h
|
||||
${LIBAVUTIL_SRC_DIR}/aes.h
|
||||
${LIBAVUTIL_SRC_DIR}/aes_ctr.h
|
||||
${LIBAVUTIL_SRC_DIR}/attributes.h
|
||||
${LIBAVUTIL_SRC_DIR}/audio_fifo.h
|
||||
${LIBAVUTIL_SRC_DIR}/avassert.h
|
||||
${LIBAVUTIL_SRC_DIR}/avstring.h
|
||||
${LIBAVUTIL_SRC_DIR}/avutil.h
|
||||
${LIBAVUTIL_SRC_DIR}/base64.h
|
||||
${LIBAVUTIL_SRC_DIR}/blowfish.h
|
||||
${LIBAVUTIL_SRC_DIR}/bprint.h
|
||||
${LIBAVUTIL_SRC_DIR}/bswap.h
|
||||
${LIBAVUTIL_SRC_DIR}/buffer.h
|
||||
${LIBAVUTIL_SRC_DIR}/cast5.h
|
||||
${LIBAVUTIL_SRC_DIR}/camellia.h
|
||||
${LIBAVUTIL_SRC_DIR}/channel_layout.h
|
||||
${LIBAVUTIL_SRC_DIR}/common.h
|
||||
${LIBAVUTIL_SRC_DIR}/cpu.h
|
||||
${LIBAVUTIL_SRC_DIR}/crc.h
|
||||
${LIBAVUTIL_SRC_DIR}/des.h
|
||||
${LIBAVUTIL_SRC_DIR}/display.h
|
||||
${LIBAVUTIL_SRC_DIR}/downmix_info.h
|
||||
${LIBAVUTIL_SRC_DIR}/error.h
|
||||
${LIBAVUTIL_SRC_DIR}/eval.h
|
||||
${LIBAVUTIL_SRC_DIR}/fifo.h
|
||||
${LIBAVUTIL_SRC_DIR}/file.h
|
||||
${LIBAVUTIL_SRC_DIR}/frame.h
|
||||
${LIBAVUTIL_SRC_DIR}/hash.h
|
||||
${LIBAVUTIL_SRC_DIR}/hmac.h
|
||||
${LIBAVUTIL_SRC_DIR}/imgutils.h
|
||||
${LIBAVUTIL_SRC_DIR}/intfloat.h
|
||||
${LIBAVUTIL_SRC_DIR}/intreadwrite.h
|
||||
${LIBAVUTIL_SRC_DIR}/lfg.h
|
||||
${LIBAVUTIL_SRC_DIR}/log.h
|
||||
${LIBAVUTIL_SRC_DIR}/macros.h
|
||||
${LIBAVUTIL_SRC_DIR}/mathematics.h
|
||||
${LIBAVUTIL_SRC_DIR}/mastering_display_metadata.h
|
||||
${LIBAVUTIL_SRC_DIR}/md5.h
|
||||
${LIBAVUTIL_SRC_DIR}/mem.h
|
||||
${LIBAVUTIL_SRC_DIR}/motion_vector.h
|
||||
${LIBAVUTIL_SRC_DIR}/murmur3.h
|
||||
${LIBAVUTIL_SRC_DIR}/dict.h
|
||||
${LIBAVUTIL_SRC_DIR}/opt.h
|
||||
${LIBAVUTIL_SRC_DIR}/parseutils.h
|
||||
${LIBAVUTIL_SRC_DIR}/pixdesc.h
|
||||
${LIBAVUTIL_SRC_DIR}/pixelutils.h
|
||||
${LIBAVUTIL_SRC_DIR}/pixfmt.h
|
||||
${LIBAVUTIL_SRC_DIR}/random_seed.h
|
||||
${LIBAVUTIL_SRC_DIR}/rc4.h
|
||||
${LIBAVUTIL_SRC_DIR}/replaygain.h
|
||||
${LIBAVUTIL_SRC_DIR}/rational.h
|
||||
${LIBAVUTIL_SRC_DIR}/ripemd.h
|
||||
${LIBAVUTIL_SRC_DIR}/samplefmt.h
|
||||
${LIBAVUTIL_SRC_DIR}/sha.h
|
||||
${LIBAVUTIL_SRC_DIR}/sha512.h
|
||||
${LIBAVUTIL_SRC_DIR}/stereo3d.h
|
||||
${LIBAVUTIL_SRC_DIR}/threadmessage.h
|
||||
${LIBAVUTIL_SRC_DIR}/time.h
|
||||
${LIBAVUTIL_SRC_DIR}/timecode.h
|
||||
${LIBAVUTIL_SRC_DIR}/timestamp.h
|
||||
${LIBAVUTIL_SRC_DIR}/tree.h
|
||||
${LIBAVUTIL_SRC_DIR}/twofish.h
|
||||
${LIBAVUTIL_SRC_DIR}/version.h
|
||||
${LIBAVUTIL_SRC_DIR}/xtea.h
|
||||
${LIBAVUTIL_SRC_DIR}/tea.h
|
||||
${CMAKE_CURRENT_BINARY_DIR}/libavutil/ffversion.h
|
||||
${CMAKE_CURRENT_BINARY_DIR}/libavutil/avconfig.h
|
||||
)
|
||||
|
||||
# Experimental addition to troubleshoot stubborn builds that inject ARCH_X86
|
||||
if (ARCH_X86)
|
||||
list(APPEND LIBAVUTIL_SOURCE_FILES ${LIBAVUTIL_SRC_DIR}/x86/cpu.c)
|
||||
endif()
|
||||
@@ -0,0 +1,22 @@
|
||||
# libswresample source files (all platforms)
|
||||
set(LIBSWRESAMPLE_SOURCE_FILES
|
||||
${LIBSWRESAMPLE_SRC_DIR}/swresample.h
|
||||
${LIBSWRESAMPLE_SRC_DIR}/audioconvert.c
|
||||
${LIBSWRESAMPLE_SRC_DIR}/dither.c
|
||||
${LIBSWRESAMPLE_SRC_DIR}/options.c
|
||||
${LIBSWRESAMPLE_SRC_DIR}/rematrix.c
|
||||
${LIBSWRESAMPLE_SRC_DIR}/resample_dsp.c
|
||||
${LIBSWRESAMPLE_SRC_DIR}/resample.c
|
||||
${LIBSWRESAMPLE_SRC_DIR}/swresample_frame.c
|
||||
${LIBSWRESAMPLE_SRC_DIR}/swresample.c
|
||||
)
|
||||
|
||||
set(LIBSWRESAMPLE_HEADERS
|
||||
${LIBSWRESAMPLE_SRC_DIR}/swresample.h
|
||||
${LIBSWRESAMPLE_SRC_DIR}/version.h
|
||||
)
|
||||
|
||||
# Experimental addition to troubleshoot stubborn builds that inject ARCH_X86
|
||||
if (ARCH_X86)
|
||||
list(APPEND LIBSWRESAMPLE_SOURCE_FILES ${LIBSWRESAMPLE_SRC_DIR}/x86/resample_init.c)
|
||||
endif()
|
||||
@@ -0,0 +1,22 @@
|
||||
# libswscale source files (all platforms)
|
||||
set(LIBSWSCALE_SOURCE_FILES
|
||||
${LIBSWSCALE_SRC_DIR}/alphablend.c
|
||||
${LIBSWSCALE_SRC_DIR}/gamma.c
|
||||
${LIBSWSCALE_SRC_DIR}/hscale_fast_bilinear.c
|
||||
${LIBSWSCALE_SRC_DIR}/hscale.c
|
||||
${LIBSWSCALE_SRC_DIR}/input.c
|
||||
${LIBSWSCALE_SRC_DIR}/options.c
|
||||
${LIBSWSCALE_SRC_DIR}/output.c
|
||||
${LIBSWSCALE_SRC_DIR}/rgb2rgb.c
|
||||
${LIBSWSCALE_SRC_DIR}/slice.c
|
||||
${LIBSWSCALE_SRC_DIR}/swscale_unscaled.c
|
||||
${LIBSWSCALE_SRC_DIR}/swscale.c
|
||||
${LIBSWSCALE_SRC_DIR}/utils.c
|
||||
${LIBSWSCALE_SRC_DIR}/vscale.c
|
||||
${LIBSWSCALE_SRC_DIR}/yuv2rgb.c
|
||||
)
|
||||
|
||||
set(LIBSWSCALE_HEADERS
|
||||
${LIBSWSCALE_SRC_DIR}/swscale.h
|
||||
${LIBSWSCALE_SRC_DIR}/version.h
|
||||
)
|
||||
Reference in new issue
Block a user