90aabddc7f
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.
72 lines
2.4 KiB
CMake
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)
|