Files
itgmania212121/CMake/SetupFfmpeg.cmake
T
Rafał Florczak 90aabddc7f Drop libbz2 dependency
Dynamic linking against libbz2 was problematic on some distributions.
We only needed it for pcre's CLI (which we don't use) and ffmpeg's mkv
decompression in case a user forced encoder to use it, because its usage
is discouraged by the standard.

See https://github.com/itgmania/itgmania/issues/217 for the related
discussion.
2024-06-18 05:39:51 -07:00

72 lines
2.4 KiB
CMake

if(CMAKE_GENERATOR MATCHES "Ninja")
message(
FATAL_ERROR
"You cannot use the Ninja generator when building the bundled ffmpeg library."
)
endif()
set(SM_FFMPEG_SRC_DIR "${SM_EXTERN_DIR}/ffmpeg")
set(SM_FFMPEG_CONFIGURE_EXE "${SM_FFMPEG_SRC_DIR}/configure")
list(APPEND FFMPEG_CONFIGURE
"${SM_FFMPEG_CONFIGURE_EXE}"
"--disable-autodetect"
"--disable-avdevice"
"--disable-avfilter"
"--disable-devices"
"--disable-doc"
"--disable-filters"
"--disable-lzma"
"--disable-network"
"--disable-postproc"
"--disable-programs"
"--disable-swresample"
"--disable-vaapi"
"--disable-bzlib"
"--enable-gpl"
"--enable-pthreads"
"--enable-static"
"--enable-zlib"
"--prefix=/")
if(CMAKE_POSITION_INDEPENDENT_CODE)
list(APPEND FFMPEG_CONFIGURE "--enable-pic")
endif()
if(MACOSX)
list(APPEND FFMPEG_CONFIGURE "--enable-cross-compile")
list(APPEND FFMPEG_CONFIGURE "--enable-videotoolbox")
list(APPEND FFMPEG_CONFIGURE "--extra-cflags=-mmacosx-version-min=11")
if(CMAKE_OSX_ARCHITECTURES STREQUAL "arm64")
list(APPEND FFMPEG_CONFIGURE "--arch=arm64" "--extra-cflags=-arch arm64" "--extra-ldflags=-arch arm64")
elseif(CMAKE_OSX_ARCHITECTURES STREQUAL "x86_64")
list(APPEND FFMPEG_CONFIGURE "--arch=x86_64" "--extra-cflags=-arch x86_64" "--extra-ldflags=-arch x86_64")
else()
message(FATAL_ERROR
"Unsupported macOS architecture: ${CMAKE_OSX_ARCHITECTURES}, set CMAKE_OSX_ARCHITECTURES to either arm64 or x86_64"
)
endif()
endif()
if(NOT WITH_EXTERNAL_WARNINGS)
list(APPEND FFMPEG_CONFIGURE "--extra-cflags=-w")
endif()
list(APPEND SM_FFMPEG_MAKE $(MAKE))
if(WITH_FFMPEG_JOBS GREATER 0)
list(APPEND SM_FFMPEG_MAKE "-j${WITH_FFMPEG_JOBS}")
endif()
list(APPEND SM_FFMPEG_MAKE "&&" "make" "DESTDIR=./dest" "install")
externalproject_add("ffmpeg"
SOURCE_DIR "${SM_FFMPEG_SRC_DIR}"
CONFIGURE_COMMAND ${FFMPEG_CONFIGURE}
BUILD_COMMAND "${SM_FFMPEG_MAKE}"
UPDATE_COMMAND ""
INSTALL_COMMAND ""
TEST_COMMAND "")
externalproject_get_property("ffmpeg" BINARY_DIR)
set(SM_FFMPEG_LIB ${BINARY_DIR}/dest/lib)
set(SM_FFMPEG_INCLUDE ${BINARY_DIR}/dest/include)