From fb0a2105a0edaacca1c7cc7ff347a5a35e6d1d54 Mon Sep 17 00:00:00 2001 From: Taner Sener Date: Thu, 7 Oct 2021 01:17:15 +0100 Subject: [PATCH 01/45] clear sessionHistoryMap in clearSessions(), fixes #171 --- .github/FUNDING.yml | 3 ++- .../src/main/java/com/arthenica/ffmpegkit/FFmpegKitConfig.java | 1 + apple/src/FFmpegKitConfig.m | 1 + 3 files changed, 4 insertions(+), 1 deletion(-) diff --git a/.github/FUNDING.yml b/.github/FUNDING.yml index 606d6c4..0c08990 100644 --- a/.github/FUNDING.yml +++ b/.github/FUNDING.yml @@ -1,2 +1,3 @@ patreon: tanersener -custom: [ 'https://www.patreon.com/tanersener','https://opencollective.com/ffmpeg-kit','https://buymeacoff.ee/tanersener','https://paypal.me/teodosiyminchev' ] \ No newline at end of file +open_collective: ffmpeg-kit +custom: [ 'https://buymeacoff.ee/tanersener' ] \ No newline at end of file diff --git a/android/ffmpeg-kit-android-lib/src/main/java/com/arthenica/ffmpegkit/FFmpegKitConfig.java b/android/ffmpeg-kit-android-lib/src/main/java/com/arthenica/ffmpegkit/FFmpegKitConfig.java index 8ec348d..5e36e0c 100644 --- a/android/ffmpeg-kit-android-lib/src/main/java/com/arthenica/ffmpegkit/FFmpegKitConfig.java +++ b/android/ffmpeg-kit-android-lib/src/main/java/com/arthenica/ffmpegkit/FFmpegKitConfig.java @@ -1027,6 +1027,7 @@ public class FFmpegKitConfig { public static void clearSessions() { synchronized (sessionHistoryLock) { sessionHistoryList.clear(); + sessionHistoryMap.clear(); } } diff --git a/apple/src/FFmpegKitConfig.m b/apple/src/FFmpegKitConfig.m index b1ecd9c..00cc4a2 100644 --- a/apple/src/FFmpegKitConfig.m +++ b/apple/src/FFmpegKitConfig.m @@ -1076,6 +1076,7 @@ int executeFFprobe(long sessionId, NSArray* arguments) { [sessionHistoryLock lock]; [sessionHistoryList removeAllObjects]; + [sessionHistoryMap removeAllObjects]; [sessionHistoryLock unlock]; } From d0ddcaf4dfdc49a690e9fc40e0452d3b611ab136 Mon Sep 17 00:00:00 2001 From: Taner Sener Date: Thu, 7 Oct 2021 20:58:42 +0100 Subject: [PATCH 02/45] use x86-64 ndk toolchain on arm64 darwin hosts, fixes #175 --- android.sh | 6 +++++- scripts/function-android.sh | 17 +++++++++++++++++ 2 files changed, 22 insertions(+), 1 deletion(-) diff --git a/android.sh b/android.sh index 8245737..bf94df5 100755 --- a/android.sh +++ b/android.sh @@ -296,7 +296,11 @@ if [[ -n ${ANDROID_ARCHITECTURES} ]]; then # BUILD NATIVE LIBRARY if [[ ${SKIP_ffmpeg_kit} -ne 1 ]]; then - "${ANDROID_NDK_ROOT}"/ndk-build -B 1>>"${BASEDIR}"/build.log 2>&1 + if [ "$(is_darwin_arm64)" == "1" ]; then + arch -x86_64 "${ANDROID_NDK_ROOT}"/ndk-build -B 1>>"${BASEDIR}"/build.log 2>&1 + else + "${ANDROID_NDK_ROOT}"/ndk-build -B 1>>"${BASEDIR}"/build.log 2>&1 + fi if [ $? -eq 0 ]; then echo "ok" diff --git a/scripts/function-android.sh b/scripts/function-android.sh index bc4775f..8272186 100755 --- a/scripts/function-android.sh +++ b/scripts/function-android.sh @@ -109,6 +109,17 @@ get_clang_host() { esac } +is_darwin_arm64() { + HOST_OS=$(uname -s) + HOST_ARCH=$(uname -m) + + if [ "${HOST_OS}" == "Darwin" ] && [ "${HOST_ARCH}" == "arm64" ]; then + echo "1" + else + echo "0" + fi +} + get_toolchain() { HOST_OS=$(uname -s) case ${HOST_OS} in @@ -124,6 +135,12 @@ get_toolchain() { x86_64 | amd64) HOST_ARCH=x86_64 ;; esac + if [ "$(is_darwin_arm64)" == "1" ]; then + # NDK DOESNT HAVE AN ARM64 TOOLCHAIN ON DARWIN + # WE USE x86-64 WITH ROSETTA INSTEAD + HOST_ARCH=x86_64 + fi + echo "${HOST_OS}-${HOST_ARCH}" } From 72e8fa4612b7ad85799e0c9992dcc5ada5316230 Mon Sep 17 00:00:00 2001 From: Taner Sener Date: Sat, 9 Oct 2021 15:14:44 +0100 Subject: [PATCH 03/45] allow overriding sdk version while building apple platforms, improves #168 --- .github/workflows/ios-build-scripts.yml | 25 ++++++++++++++++-- .github/workflows/macos-build-scripts.yml | 25 ++++++++++++++++-- .github/workflows/tvos-build-scripts.yml | 25 ++++++++++++++++-- ios.sh | 10 ++++++++ macos.sh | 5 ++++ scripts/function-apple.sh | 26 +++++++++---------- scripts/function-ios.sh | 6 ++++- scripts/function-macos.sh | 2 +- scripts/function-tvos.sh | 2 +- scripts/function.sh | 31 +++++++++++++++++++++++ scripts/main-ios.sh | 4 +-- scripts/main-macos.sh | 4 +-- scripts/main-tvos.sh | 4 +-- tvos.sh | 5 ++++ 14 files changed, 146 insertions(+), 28 deletions(-) diff --git a/.github/workflows/ios-build-scripts.yml b/.github/workflows/ios-build-scripts.yml index 4450515..1613e88 100644 --- a/.github/workflows/ios-build-scripts.yml +++ b/.github/workflows/ios-build-scripts.yml @@ -3,8 +3,29 @@ name: ios build scripts on: [ push, pull_request ] jobs: - build-main-on-macos: - name: ios main + build-main-on-macos-bigsur: + name: ios main on big sur + runs-on: macos-11 + strategy: + matrix: + xcode: [ '12.5.1', '13.0' ] + defaults: + run: + shell: bash + steps: + - uses: actions/checkout@v2 + - name: set up xcode + run: echo "export DEVELOPER_DIR=/Applications/Xcode_${{ matrix.xcode }}.app/Contents/Developer" > ~/.xcode.for.ffmpeg.kit.sh + - name: run the build script + run: ./ios.sh --xcframework --enable-ios-audiotoolbox --enable-ios-avfoundation --enable-ios-bzip2 --enable-ios-libiconv --enable-ios-videotoolbox --enable-ios-zlib + - name: print build logs + if: ${{ always() }} + run: cat build.log + - name: print ffbuild logs + if: ${{ failure() }} + run: '[[ -f ./src/ffmpeg/ffbuild/config.log ]] && tail -50 ./src/ffmpeg/ffbuild/config.log' + build-main-on-macos-catalina: + name: ios main on catalina runs-on: macos-10.15 strategy: matrix: diff --git a/.github/workflows/macos-build-scripts.yml b/.github/workflows/macos-build-scripts.yml index 23d2537..4606f0f 100644 --- a/.github/workflows/macos-build-scripts.yml +++ b/.github/workflows/macos-build-scripts.yml @@ -3,8 +3,29 @@ name: macos build scripts on: [ push, pull_request ] jobs: - build-main-on-macos: - name: macos main + build-main-on-macos-bigsur: + name: macos main on big sur + runs-on: macos-11 + strategy: + matrix: + xcode: [ '12.5.1', '13.0' ] + defaults: + run: + shell: bash + steps: + - uses: actions/checkout@v2 + - name: set up xcode + run: echo "export DEVELOPER_DIR=/Applications/Xcode_${{ matrix.xcode }}.app/Contents/Developer" > ~/.xcode.for.ffmpeg.kit.sh + - name: run the build script + run: ./macos.sh --xcframework --enable-macos-audiotoolbox --enable-macos-avfoundation --enable-macos-bzip2 --enable-macos-coreimage --enable-macos-libiconv --enable-macos-opencl --enable-macos-opengl --enable-macos-videotoolbox --enable-macos-zlib + - name: print build logs + if: ${{ always() }} + run: cat build.log + - name: print ffbuild logs + if: ${{ failure() }} + run: '[[ -f ./src/ffmpeg/ffbuild/config.log ]] && tail -50 ./src/ffmpeg/ffbuild/config.log' + build-main-on-macos-catalina: + name: macos main on catalina runs-on: macos-10.15 strategy: matrix: diff --git a/.github/workflows/tvos-build-scripts.yml b/.github/workflows/tvos-build-scripts.yml index 041d5e8..6767cad 100644 --- a/.github/workflows/tvos-build-scripts.yml +++ b/.github/workflows/tvos-build-scripts.yml @@ -3,8 +3,29 @@ name: tvos build scripts on: [ push, pull_request ] jobs: - build-main-on-macos: - name: tvos main + build-main-on-macos-bigsur: + name: tvos main on big sur + runs-on: macos-11 + strategy: + matrix: + xcode: [ '12.5.1', '13.0' ] + defaults: + run: + shell: bash + steps: + - uses: actions/checkout@v2 + - name: set up xcode + run: echo "export DEVELOPER_DIR=/Applications/Xcode_${{ matrix.xcode }}.app/Contents/Developer" > ~/.xcode.for.ffmpeg.kit.sh + - name: run the build script + run: ./tvos.sh --xcframework --enable-tvos-bzip2 --enable-tvos-audiotoolbox --enable-tvos-libiconv --enable-tvos-videotoolbox --enable-tvos-zlib + - name: print build logs + if: ${{ always() }} + run: cat build.log + - name: print ffbuild logs + if: ${{ failure() }} + run: '[[ -f ./src/ffmpeg/ffbuild/config.log ]] && tail -50 ./src/ffmpeg/ffbuild/config.log' + build-main-on-macos-catalina: + name: tvos main on catalina runs-on: macos-10.15 strategy: matrix: diff --git a/ios.sh b/ios.sh index f6e5cf8..82ba165 100755 --- a/ios.sh +++ b/ios.sh @@ -123,6 +123,16 @@ while [ ! $# -eq 0 ]; do disable_arch "${DISABLED_ARCH}" ;; + --target=*) + TARGET=$(echo $1 | sed -e 's/^--[A-Za-z]*=//g') + + export IOS_MIN_VERSION=${TARGET} + ;; + --mac-catalyst-target=*) + TARGET=$(echo $1 | sed -e 's/^--[A-Za-z]*-[A-Za-z]*-[A-Za-z]*=//g') + + export MAC_CATALYST_MIN_VERSION=${TARGET} + ;; *) print_unknown_option "$1" ;; diff --git a/macos.sh b/macos.sh index a7ecf01..0ebbaf5 100755 --- a/macos.sh +++ b/macos.sh @@ -123,6 +123,11 @@ while [ ! $# -eq 0 ]; do disable_arch "${DISABLED_ARCH}" ;; + --target=*) + TARGET=$(echo $1 | sed -e 's/^--[A-Za-z]*=//g') + + export MACOS_MIN_VERSION=${TARGET} + ;; *) print_unknown_option "$1" ;; diff --git a/scripts/function-apple.sh b/scripts/function-apple.sh index bc62a11..05bb2ec 100755 --- a/scripts/function-apple.sh +++ b/scripts/function-apple.sh @@ -31,16 +31,16 @@ disable_ios_architecture_not_supported_on_detected_sdk_version() { armv7 | armv7s | i386) # SUPPORTED UNTIL IOS SDK 10.3.1 - if [[ $(echo "$2 > 10.4" | bc) -eq 1 ]]; then - local SUPPORTED=0 - else + if [[ $(compare_versions "$2" "10.3.1") -le 0 ]]; then local SUPPORTED=1 + else + local SUPPORTED=0 fi ;; arm64e) # INTRODUCED IN IOS SDK 10.1 - if [[ $(echo "$2 > 10" | bc) -eq 1 ]]; then + if [[ $(compare_versions "$2" "10.1") -ge 1 ]]; then local SUPPORTED=1 else local SUPPORTED=0 @@ -48,8 +48,8 @@ disable_ios_architecture_not_supported_on_detected_sdk_version() { ;; x86-64-mac-catalyst) - # INTRODUCED IN IOS SDK 13 - if [[ $(echo "$2 > 12.4" | bc) -eq 1 ]]; then + # INTRODUCED IN IOS SDK 13.0 + if [[ $(compare_versions "$2" "13") -ge 1 ]]; then local SUPPORTED=1 else local SUPPORTED=0 @@ -57,8 +57,8 @@ disable_ios_architecture_not_supported_on_detected_sdk_version() { ;; arm64-*) - # INTRODUCED IN IOS SDK 14 - if [[ $(echo "$2 > 13.7" | bc) -eq 1 ]]; then + # INTRODUCED IN IOS SDK 14.0 + if [[ $(compare_versions "$2" "14") -ge 1 ]]; then local SUPPORTED=1 else local SUPPORTED=0 @@ -87,8 +87,8 @@ disable_tvos_architecture_not_supported_on_detected_sdk_version() { case ${ARCH_NAME} in arm64-simulator) - # INTRODUCED IN TVOS SDK 14 - if [[ $(echo "$2 > 13.4" | bc) -eq 1 ]]; then + # INTRODUCED IN TVOS SDK 14.0 + if [[ $(compare_versions "$2" "14") -ge 1 ]]; then local SUPPORTED=1 else local SUPPORTED=0 @@ -117,8 +117,8 @@ disable_macos_architecture_not_supported_on_detected_sdk_version() { case ${ARCH_NAME} in arm64) - # INTRODUCED IN MACOS SDK 11 - if [[ $(echo "$2 > 10.16" | bc) -eq 1 ]]; then + # INTRODUCED IN MACOS SDK 11.0 + if [[ $(compare_versions "$2" "11") -ge 1 ]]; then local SUPPORTED=1 else local SUPPORTED=0 @@ -1235,7 +1235,7 @@ get_min_version_cflags() { get_min_sdk_version() { case ${ARCH} in *-mac-catalyst) - echo "13.0" + echo "${MAC_CATALYST_MIN_VERSION}" ;; *) case ${FFMPEG_KIT_BUILD_TYPE} in diff --git a/scripts/function-ios.sh b/scripts/function-ios.sh index 7379070..d7b8d35 100755 --- a/scripts/function-ios.sh +++ b/scripts/function-ios.sh @@ -25,7 +25,7 @@ libraries are created under the prebuilt folder.\n" echo -e "Usage: ./$COMMAND [OPTION]...\n" echo -e "Specify environment variables as VARIABLE=VALUE to override default build options.\n" - display_help_options " -x, --xcframework\t\tbuild xcframework bundles instead of framework bundles and universal libraries" " -l, --lts build lts packages to support sdk 9.3+ devices" + display_help_options " -x, --xcframework\t\tbuild xcframework bundles instead of framework bundles and universal libraries" " -l, --lts build lts packages to support sdk 9.3+ devices" " --target=ios sdk version\t\t\toverride minimum deployment target" " --mac-catalyst-target=ios sdk version\toverride minimum deployment target for mac catalyst" display_help_licensing echo -e "Architectures:" @@ -60,6 +60,7 @@ libraries are created under the prebuilt folder.\n" enable_main_build() { export IOS_MIN_VERSION=12.1 + export MAC_CATALYST_MIN_VERSION=14.0 } enable_lts_build() { @@ -68,6 +69,9 @@ enable_lts_build() { # XCODE 7.3 HAS IOS SDK 9.3 export IOS_MIN_VERSION=9.3 + # MAC CATALYST IS INTRODUCED IN 13.0 + export MAC_CATALYST_MIN_VERSION=13.0 + # IOS SDK 9.3 SUPPORTS VIDEOTOOLBOX # HOWEVER, THE LATEST FFMPEG VERSION USES SDK 11.0 APIS # THEREFORE, VIDEOTOOLBOX IS DISABLED IN LTS RELEASES diff --git a/scripts/function-macos.sh b/scripts/function-macos.sh index 1c2b30b..5a226f6 100755 --- a/scripts/function-macos.sh +++ b/scripts/function-macos.sh @@ -17,7 +17,7 @@ When compilation ends, libraries are created under the prebuilt folder.\n" echo -e "Usage: ./$COMMAND [OPTION]...\n" echo -e "Specify environment variables as VARIABLE=VALUE to override default build options.\n" - display_help_options " -x, --xcframework\t\tbuild xcframework bundles instead of framework bundles and universal libraries" " -l, --lts build lts packages to support sdk 10.11+ devices" + display_help_options " -x, --xcframework\t\tbuild xcframework bundles instead of framework bundles and universal libraries" " -l, --lts build lts packages to support sdk 10.11+ devices" " --target=macos sdk version\toverride minimum deployment target" display_help_licensing echo -e "Architectures:" diff --git a/scripts/function-tvos.sh b/scripts/function-tvos.sh index fc2fb68..57ea64f 100755 --- a/scripts/function-tvos.sh +++ b/scripts/function-tvos.sh @@ -18,7 +18,7 @@ set explicitly. When compilation ends, libraries are created under the prebuilt echo -e "Usage: ./$COMMAND [OPTION]...\n" echo -e "Specify environment variables as VARIABLE=VALUE to override default build options.\n" - display_help_options " -x, --xcframework\t\tbuild xcframework bundles instead of framework bundles and universal libraries" " -l, --lts build lts packages to support sdk 9.2+ devices" + display_help_options " -x, --xcframework\t\tbuild xcframework bundles instead of framework bundles and universal libraries" " -l, --lts build lts packages to support sdk 9.2+ devices" " --target=tvos sdk version\toverride minimum deployment target" display_help_licensing echo -e "Architectures:" diff --git a/scripts/function.sh b/scripts/function.sh index db3a155..85b23c4 100755 --- a/scripts/function.sh +++ b/scripts/function.sh @@ -587,6 +587,9 @@ display_help_options() { if [ -n "$3" ]; then echo -e "$3" fi + if [ -n "$4" ]; then + echo -e "$4" + fi echo -e "" } @@ -1814,3 +1817,31 @@ create_file() { rm -f "$1" echo "" > "$1" 1>>"${BASEDIR}"/build.log 2>&1 } + +compare_versions() { + VERSION_PARTS_1=($(echo $1 | tr "." " ")) + VERSION_PARTS_2=($(echo $2 | tr "." " ")) + + for((i=0;(i<${#VERSION_PARTS_1[@]})&&(i<${#VERSION_PARTS_2[@]});i++)) + do + + if [[ ${VERSION_PARTS_1[$i]} -gt ${VERSION_PARTS_2[$i]} ]]; then + echo "1" + return; + elif [[ ${VERSION_PARTS_1[$i]} -lt ${VERSION_PARTS_2[$i]} ]]; then + echo "-1" + return; + fi + done + + if [[ ${#VERSION_PARTS_1[@]} -gt ${#VERSION_PARTS_2[@]} ]]; then + echo "1" + return; + elif [[ ${#VERSION_PARTS_1[@]} -lt ${#VERSION_PARTS_2[@]} ]]; then + echo "-1" + return; + else + echo "0" + return; + fi +} diff --git a/scripts/main-ios.sh b/scripts/main-ios.sh index f978ad0..1eb1ca6 100755 --- a/scripts/main-ios.sh +++ b/scripts/main-ios.sh @@ -23,8 +23,8 @@ fi # ENABLE COMMON FUNCTIONS source "${BASEDIR}"/scripts/function-"${FFMPEG_KIT_BUILD_TYPE}".sh 1>>"${BASEDIR}"/build.log 2>&1 || exit 1 -echo -e "\nBuilding ${ARCH} platform\n" -echo -e "\nINFO: Starting new build for ${ARCH} at $(date)\n" 1>>"${BASEDIR}"/build.log 2>&1 +echo -e "\nBuilding ${ARCH} platform targeting iOS SDK ${IOS_MIN_VERSION} and Mac Catalyst ${MAC_CATALYST_MIN_VERSION}\n" +echo -e "\nINFO: Starting new build for ${ARCH} targeting iOS SDK ${IOS_MIN_VERSION} and Mac Catalyst ${MAC_CATALYST_MIN_VERSION} at $(date)\n" 1>>"${BASEDIR}"/build.log 2>&1 # SET BASE INSTALLATION DIRECTORY FOR THIS ARCHITECTURE export LIB_INSTALL_BASE="${BASEDIR}/prebuilt/$(get_build_directory)" diff --git a/scripts/main-macos.sh b/scripts/main-macos.sh index ba8bf03..ac25bb7 100755 --- a/scripts/main-macos.sh +++ b/scripts/main-macos.sh @@ -23,8 +23,8 @@ fi # ENABLE COMMON FUNCTIONS source "${BASEDIR}"/scripts/function-"${FFMPEG_KIT_BUILD_TYPE}".sh 1>>"${BASEDIR}"/build.log 2>&1 || exit 1 -echo -e "\nBuilding ${ARCH} platform\n" -echo -e "\nINFO: Starting new build for ${ARCH} at $(date)\n" 1>>"${BASEDIR}"/build.log 2>&1 +echo -e "\nBuilding ${ARCH} platform targeting macOS SDK ${MACOS_MIN_VERSION}\n" +echo -e "\nINFO: Starting new build for ${ARCH} targeting macOS SDK ${MACOS_MIN_VERSION} at $(date)\n" 1>>"${BASEDIR}"/build.log 2>&1 # SET BASE INSTALLATION DIRECTORY FOR THIS ARCHITECTURE export LIB_INSTALL_BASE="${BASEDIR}/prebuilt/$(get_build_directory)" diff --git a/scripts/main-tvos.sh b/scripts/main-tvos.sh index c76c4fd..da6b876 100755 --- a/scripts/main-tvos.sh +++ b/scripts/main-tvos.sh @@ -23,8 +23,8 @@ fi # ENABLE COMMON FUNCTIONS source "${BASEDIR}"/scripts/function-"${FFMPEG_KIT_BUILD_TYPE}".sh 1>>"${BASEDIR}"/build.log 2>&1 || exit 1 -echo -e "\nBuilding ${ARCH} platform\n" -echo -e "\nINFO: Starting new build for ${ARCH} at $(date)\n" 1>>"${BASEDIR}"/build.log 2>&1 +echo -e "\nBuilding ${ARCH} platform targeting tvOS SDK ${TVOS_MIN_VERSION}\n" +echo -e "\nINFO: Starting new build for ${ARCH} targeting tvOS SDK ${TVOS_MIN_VERSION} at $(date)\n" 1>>"${BASEDIR}"/build.log 2>&1 # SET BASE INSTALLATION DIRECTORY FOR THIS ARCHITECTURE export LIB_INSTALL_BASE="${BASEDIR}/prebuilt/$(get_build_directory)" diff --git a/tvos.sh b/tvos.sh index b64ae30..51e9a91 100755 --- a/tvos.sh +++ b/tvos.sh @@ -123,6 +123,11 @@ while [ ! $# -eq 0 ]; do disable_arch "${DISABLED_ARCH}" ;; + --target=*) + TARGET=$(echo $1 | sed -e 's/^--[A-Za-z]*=//g') + + export TVOS_MIN_VERSION=${TARGET} + ;; *) print_unknown_option "$1" ;; From 99c405d0f88ae35cfd561edd5c372be5fc42ed5f Mon Sep 17 00:00:00 2001 From: Taner Sener Date: Sun, 10 Oct 2021 11:36:46 +0100 Subject: [PATCH 04/45] update ffmpeg to n4.5-dev-2655-gb4d665bf69, improves #178 --- scripts/source.sh | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/scripts/source.sh b/scripts/source.sh index 9e4e1fd..f59045e 100755 --- a/scripts/source.sh +++ b/scripts/source.sh @@ -33,9 +33,9 @@ get_library_source() { ;; ffmpeg) SOURCE_REPO_URL="https://github.com/tanersener/FFmpeg" - SOURCE_ID="90da43557f7257d72e95504f63ae6504406d6eab" + SOURCE_ID="b4d665bf69b7470ada5213128ec4c2a39a3e4fde" SOURCE_TYPE="COMMIT" - SOURCE_GIT_DESCRIBE="n4.5-dev-2008-g90da43557f" # git describe --tags + SOURCE_GIT_DESCRIBE="n4.5-dev-2655-gb4d665bf69" # git describe --tags ;; fontconfig) SOURCE_REPO_URL="https://github.com/tanersener/fontconfig" From a72e3f501d58529c04b8fb21bacb375a71fa09f5 Mon Sep 17 00:00:00 2001 From: Taner Sener Date: Tue, 19 Oct 2021 23:33:19 +0100 Subject: [PATCH 05/45] use av_bprint methods to convert char* to nsstring, fixes #192 --- apple/src/FFmpegKitConfig.m | 116 +++++++++++++++++++++++++++++++----- 1 file changed, 101 insertions(+), 15 deletions(-) diff --git a/apple/src/FFmpegKitConfig.m b/apple/src/FFmpegKitConfig.m index 00cc4a2..e125c0e 100644 --- a/apple/src/FFmpegKitConfig.m +++ b/apple/src/FFmpegKitConfig.m @@ -21,6 +21,7 @@ #import #import #import "libavutil/ffversion.h" +#import "libavutil/bprint.h" #import "fftools_ffmpeg.h" #import "ArchDetect.h" #import "AtomicLong.h" @@ -138,7 +139,7 @@ void addSessionToSessionHistory(id session) { long _sessionId; // session id int _logLevel; // log level - NSString* _logData; // log data + AVBPrint _logData; // log data int _statisticsFrameNumber; // statistics frame number float _statisticsFps; // statistics fps @@ -149,13 +150,14 @@ void addSessionToSessionHistory(id session) { double _statisticsSpeed; // statistics speed } - - (instancetype)init:(long)sessionId logLevel:(int)logLevel data:(NSString*)logData { + - (instancetype)init:(long)sessionId logLevel:(int)logLevel data:(AVBPrint*)data { self = [super init]; if (self) { _type = LogType; _sessionId = sessionId; _logLevel = logLevel; - _logData = logData; + av_bprint_init(&_logData, 0, AV_BPRINT_SIZE_UNLIMITED); + av_bprintf(&_logData, "%s", data->str); } return self; @@ -197,8 +199,8 @@ void addSessionToSessionHistory(id session) { return _logLevel; } -- (NSString*)getLogData { - return _logData; +- (AVBPrint*)getLogData { + return &_logData; } - (int)getStatisticsFrameNumber { @@ -247,15 +249,80 @@ void callbackNotify() { dispatch_semaphore_signal(semaphore); } +static const char *avutil_log_get_level_str(int level) { + switch (level) { + case AV_LOG_STDERR: + return "stderr"; + case AV_LOG_QUIET: + return "quiet"; + case AV_LOG_DEBUG: + return "debug"; + case AV_LOG_VERBOSE: + return "verbose"; + case AV_LOG_INFO: + return "info"; + case AV_LOG_WARNING: + return "warning"; + case AV_LOG_ERROR: + return "error"; + case AV_LOG_FATAL: + return "fatal"; + case AV_LOG_PANIC: + return "panic"; + default: + return ""; + } +} + +static void avutil_log_format_line(void *avcl, int level, const char *fmt, va_list vl, AVBPrint part[4], int *print_prefix) { + int flags = av_log_get_flags(); + AVClass* avc = avcl ? *(AVClass **) avcl : NULL; + av_bprint_init(part+0, 0, 1); + av_bprint_init(part+1, 0, 1); + av_bprint_init(part+2, 0, 1); + av_bprint_init(part+3, 0, 65536); + + if (*print_prefix && avc) { + if (avc->parent_log_context_offset) { + AVClass** parent = *(AVClass ***) (((uint8_t *) avcl) + + avc->parent_log_context_offset); + if (parent && *parent) { + av_bprintf(part+0, "[%s @ %p] ", + (*parent)->item_name(parent), parent); + } + } + av_bprintf(part+1, "[%s @ %p] ", + avc->item_name(avcl), avcl); + } + + if (*print_prefix && (level > AV_LOG_QUIET) && (flags & AV_LOG_PRINT_LEVEL)) + av_bprintf(part+2, "[%s] ", avutil_log_get_level_str(level)); + + av_vbprintf(part+3, fmt, vl); + + if(*part[0].str || *part[1].str || *part[2].str || *part[3].str) { + char lastc = part[3].len && part[3].len <= part[3].size ? part[3].str[part[3].len - 1] : 0; + *print_prefix = lastc == '\n' || lastc == '\r'; + } +} + +static void avutil_log_sanitize(uint8_t *line) { + while(*line){ + if(*line < 0x08 || (*line > 0x0D && *line < 0x20)) + *line='?'; + line++; + } +} + /** * Adds log data to the end of callback data list. * * @param level log level - * @param logData log data + * @param data log data */ -void logCallbackDataAdd(int level, NSString *logData) { - CallbackData* callbackData = [[CallbackData alloc] init:globalSessionId logLevel:level data:logData]; - +void logCallbackDataAdd(int level, AVBPrint *data) { + CallbackData* callbackData = [[CallbackData alloc] init:globalSessionId logLevel:level data:data]; + [lock lock]; [callbackDataArray addObject:callbackData]; [lock unlock]; @@ -361,6 +428,9 @@ void resetMessagesInTransmit(long sessionId) { * @param vargs arguments */ void ffmpegkit_log_callback_function(void *ptr, int level, const char* format, va_list vargs) { + AVBPrint fullLine; + AVBPrint part[4]; + int print_prefix = 1; // DO NOT PROCESS UNWANTED LOGS if (level >= 0) { @@ -373,11 +443,26 @@ void ffmpegkit_log_callback_function(void *ptr, int level, const char* format, v return; } - NSString *logData = [[NSString alloc] initWithFormat:[NSString stringWithCString:format encoding:NSUTF8StringEncoding] arguments:vargs]; + av_bprint_init(&fullLine, 0, AV_BPRINT_SIZE_UNLIMITED); + + avutil_log_format_line(ptr, level, format, vargs, part, &print_prefix); + avutil_log_sanitize(part[0].str); + avutil_log_sanitize(part[1].str); + avutil_log_sanitize(part[2].str); + avutil_log_sanitize(part[3].str); - if (logData.length > 0) { - logCallbackDataAdd(level, logData); + // COMBINE ALL 4 LOG PARTS + av_bprintf(&fullLine, "%s%s%s%s", part[0].str, part[1].str, part[2].str, part[3].str); + + if (fullLine.len > 0) { + logCallbackDataAdd(level, &fullLine); } + + av_bprint_finalize(part, NULL); + av_bprint_finalize(part+1, NULL); + av_bprint_finalize(part+2, NULL); + av_bprint_finalize(part+3, NULL); + av_bprint_finalize(&fullLine, NULL); } /** @@ -395,9 +480,9 @@ void ffmpegkit_statistics_callback_function(int frameNumber, float fps, float qu statisticsCallbackDataAdd(frameNumber, fps, quality, size, time, bitrate, speed); } -void process_log(long sessionId, int levelValue, NSString* logMessage) { +void process_log(long sessionId, int levelValue, AVBPrint* logMessage) { int activeLogLevel = av_log_get_level(); - Log* log = [[Log alloc] init:sessionId:levelValue:logMessage]; + Log* log = [[Log alloc] init:sessionId:levelValue:[NSString stringWithCString:logMessage->str encoding:NSUTF8StringEncoding]]; BOOL globalCallbackDefined = false; BOOL sessionCallbackDefined = false; LogRedirectionStrategy activeLogRedirectionStrategy = globalLogRedirectionStrategy; @@ -472,7 +557,7 @@ void process_log(long sessionId, int levelValue, NSString* logMessage) { break; default: // WRITE TO NSLOG - NSLog(@"%@: %@", [FFmpegKitConfig logLevelToString:levelValue], logMessage); + NSLog(@"%@: %@", [FFmpegKitConfig logLevelToString:levelValue], [NSString stringWithCString:logMessage->str encoding:NSUTF8StringEncoding]); break; } } @@ -526,6 +611,7 @@ void callbackBlockFunction() { if ([callbackData getType] == LogType) { process_log([callbackData getSessionId], [callbackData getLogLevel], [callbackData getLogData]); + av_bprint_finalize([callbackData getLogData], NULL); } else { process_statistics([callbackData getSessionId], [callbackData getStatisticsFrameNumber], From a22a44886795d449b6de545173ec7a3ed8961f39 Mon Sep 17 00:00:00 2001 From: Taner Sener Date: Tue, 26 Oct 2021 13:24:51 +0100 Subject: [PATCH 06/45] disable bitcode in macos scripts --- scripts/function-macos.sh | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/scripts/function-macos.sh b/scripts/function-macos.sh index 5a226f6..a8b9031 100755 --- a/scripts/function-macos.sh +++ b/scripts/function-macos.sh @@ -70,7 +70,7 @@ get_common_cflags() { case ${ARCH} in arm64) - echo "-fstrict-aliasing -fembed-bitcode -DMACOSX ${LTS_BUILD_FLAG}${BUILD_DATE} -isysroot ${SDK_PATH}" + echo "-fstrict-aliasing -DMACOSX ${LTS_BUILD_FLAG}${BUILD_DATE} -isysroot ${SDK_PATH}" ;; *) echo "-fstrict-aliasing -DMACOSX ${LTS_BUILD_FLAG}${BUILD_DATE} -isysroot ${SDK_PATH}" @@ -209,7 +209,7 @@ get_cxxflags() { local OPTIMIZATION_FLAGS="${FFMPEG_KIT_DEBUG}" fi - local BITCODE_FLAGS="-fembed-bitcode" + local BITCODE_FLAGS="" case $1 in x265) @@ -262,7 +262,7 @@ get_size_optimization_ldflags() { get_arch_specific_ldflags() { case ${ARCH} in arm64) - echo "-arch arm64 -march=armv8-a+crc+crypto -fembed-bitcode -target $(get_target)" + echo "-arch arm64 -march=armv8-a+crc+crypto -target $(get_target)" ;; x86-64) echo "-arch x86_64 -march=x86-64 -target $(get_target)" @@ -284,7 +284,7 @@ get_ldflags() { ffmpeg-kit) case ${ARCH} in arm64) - echo "${ARCH_FLAGS} ${LINKED_LIBRARIES} ${COMMON_FLAGS} -fembed-bitcode -Wc,-fembed-bitcode ${OPTIMIZATION_FLAGS}" + echo "${ARCH_FLAGS} ${LINKED_LIBRARIES} ${COMMON_FLAGS} ${OPTIMIZATION_FLAGS}" ;; x86-64) echo "${ARCH_FLAGS} ${LINKED_LIBRARIES} ${COMMON_FLAGS} ${OPTIMIZATION_FLAGS}" From bab2b67f30ec0d009767ab083127667f1ff9c8b3 Mon Sep 17 00:00:00 2001 From: Taner Sener Date: Tue, 26 Oct 2021 13:34:21 +0100 Subject: [PATCH 07/45] redirect autoreconf_library output to build.log --- scripts/android/expat.sh | 2 +- scripts/android/fontconfig.sh | 2 +- scripts/android/fribidi.sh | 2 +- scripts/android/giflib.sh | 2 +- scripts/android/gmp.sh | 2 +- scripts/android/kvazaar.sh | 2 +- scripts/android/lame.sh | 2 +- scripts/android/leptonica.sh | 2 +- scripts/android/libass.sh | 2 +- scripts/android/libiconv.sh | 2 +- scripts/android/libilbc.sh | 2 +- scripts/android/libogg.sh | 2 +- scripts/android/libpng.sh | 2 +- scripts/android/libsamplerate.sh | 2 +- scripts/android/libsndfile.sh | 2 +- scripts/android/libuuid.sh | 2 +- scripts/android/libvorbis.sh | 2 +- scripts/android/libwebp.sh | 2 +- scripts/android/libxml2.sh | 2 +- scripts/android/nettle.sh | 2 +- scripts/android/opencore-amr.sh | 2 +- scripts/android/opus.sh | 2 +- scripts/android/rubberband.sh | 2 +- scripts/android/sdl.sh | 2 +- scripts/android/shine.sh | 2 +- scripts/android/speex.sh | 2 +- scripts/android/tesseract.sh | 2 +- scripts/android/tiff.sh | 2 +- scripts/android/vo-amrwbenc.sh | 2 +- scripts/android/x264.sh | 2 +- scripts/apple/expat.sh | 2 +- scripts/apple/fontconfig.sh | 2 +- scripts/apple/fribidi.sh | 2 +- scripts/apple/giflib.sh | 2 +- scripts/apple/gmp.sh | 2 +- scripts/apple/kvazaar.sh | 2 +- scripts/apple/lame.sh | 2 +- scripts/apple/leptonica.sh | 2 +- scripts/apple/libass.sh | 2 +- scripts/apple/libilbc.sh | 2 +- scripts/apple/libogg.sh | 2 +- scripts/apple/libpng.sh | 2 +- scripts/apple/libsamplerate.sh | 2 +- scripts/apple/libsndfile.sh | 2 +- scripts/apple/libvorbis.sh | 2 +- scripts/apple/libwebp.sh | 2 +- scripts/apple/libxml2.sh | 2 +- scripts/apple/nettle.sh | 2 +- scripts/apple/opencore-amr.sh | 2 +- scripts/apple/opus.sh | 2 +- scripts/apple/rubberband.sh | 2 +- scripts/apple/shine.sh | 2 +- scripts/apple/speex.sh | 2 +- scripts/apple/tesseract.sh | 2 +- scripts/apple/tiff.sh | 2 +- scripts/apple/vo-amrwbenc.sh | 2 +- scripts/apple/x264.sh | 2 +- 57 files changed, 57 insertions(+), 57 deletions(-) diff --git a/scripts/android/expat.sh b/scripts/android/expat.sh index 71d1989..62794bb 100755 --- a/scripts/android/expat.sh +++ b/scripts/android/expat.sh @@ -7,7 +7,7 @@ make distclean 2>/dev/null 1>/dev/null # REGENERATE BUILD FILES IF NECESSARY OR REQUESTED if [[ ! -f "${BASEDIR}"/src/"${LIB_NAME}"/"${LIB_NAME}"/configure ]] || [[ ${RECONF_expat} -eq 1 ]]; then - autoreconf_library "${LIB_NAME}" + autoreconf_library "${LIB_NAME}" 1>>"${BASEDIR}"/build.log 2>&1 || exit 1 fi ./configure \ diff --git a/scripts/android/fontconfig.sh b/scripts/android/fontconfig.sh index 0b9237f..695728c 100755 --- a/scripts/android/fontconfig.sh +++ b/scripts/android/fontconfig.sh @@ -5,7 +5,7 @@ make distclean 2>/dev/null 1>/dev/null # REGENERATE BUILD FILES IF NECESSARY OR REQUESTED if [[ ! -f "${BASEDIR}"/src/"${LIB_NAME}"/configure ]] || [[ ${RECONF_fontconfig} -eq 1 ]]; then - autoreconf_library "${LIB_NAME}" + autoreconf_library "${LIB_NAME}" 1>>"${BASEDIR}"/build.log 2>&1 || exit 1 fi # WORKAROUND TO FIX NOT-APPLIED HAVE_POSIX_FADVISE define ON MACOS diff --git a/scripts/android/fribidi.sh b/scripts/android/fribidi.sh index 9d5f9bb..845377f 100755 --- a/scripts/android/fribidi.sh +++ b/scripts/android/fribidi.sh @@ -5,7 +5,7 @@ make distclean 2>/dev/null 1>/dev/null # REGENERATE BUILD FILES IF NECESSARY OR REQUESTED if [[ ! -f "${BASEDIR}"/src/"${LIB_NAME}"/configure ]] || [[ ${RECONF_fribidi} -eq 1 ]]; then - autoreconf_library "${LIB_NAME}" + autoreconf_library "${LIB_NAME}" 1>>"${BASEDIR}"/build.log 2>&1 || exit 1 fi ./configure \ diff --git a/scripts/android/giflib.sh b/scripts/android/giflib.sh index d7c47ba..ebf1ff2 100755 --- a/scripts/android/giflib.sh +++ b/scripts/android/giflib.sh @@ -8,7 +8,7 @@ make distclean 2>/dev/null 1>/dev/null # REGENERATE BUILD FILES IF NECESSARY OR REQUESTED if [[ ! -f "${BASEDIR}"/src/"${LIB_NAME}"/configure ]] || [[ ${RECONF_giflib} -eq 1 ]]; then - autoreconf_library "${LIB_NAME}" + autoreconf_library "${LIB_NAME}" 1>>"${BASEDIR}"/build.log 2>&1 || exit 1 fi ./configure \ diff --git a/scripts/android/gmp.sh b/scripts/android/gmp.sh index 7967177..4b1edd2 100755 --- a/scripts/android/gmp.sh +++ b/scripts/android/gmp.sh @@ -5,7 +5,7 @@ make distclean 2>/dev/null 1>/dev/null # REGENERATE BUILD FILES IF NECESSARY OR REQUESTED if [[ ! -f "${BASEDIR}"/src/"${LIB_NAME}"/configure ]] || [[ ${RECONF_gmp} -eq 1 ]]; then - autoreconf_library "${LIB_NAME}" + autoreconf_library "${LIB_NAME}" 1>>"${BASEDIR}"/build.log 2>&1 || exit 1 fi ./configure \ diff --git a/scripts/android/kvazaar.sh b/scripts/android/kvazaar.sh index a8be508..5793862 100755 --- a/scripts/android/kvazaar.sh +++ b/scripts/android/kvazaar.sh @@ -5,7 +5,7 @@ make distclean 2>/dev/null 1>/dev/null # REGENERATE BUILD FILES IF NECESSARY OR REQUESTED if [[ ! -f "${BASEDIR}"/src/"${LIB_NAME}"/configure ]] || [[ ${RECONF_kvazaar} -eq 1 ]]; then - autoreconf_library "${LIB_NAME}" + autoreconf_library "${LIB_NAME}" 1>>"${BASEDIR}"/build.log 2>&1 || exit 1 fi # UPDATE BUILD FLAGS diff --git a/scripts/android/lame.sh b/scripts/android/lame.sh index f2b9b04..5352851 100755 --- a/scripts/android/lame.sh +++ b/scripts/android/lame.sh @@ -7,7 +7,7 @@ make distclean 2>/dev/null 1>/dev/null # REGENERATE BUILD FILES IF NECESSARY OR REQUESTED if [[ ! -f "${BASEDIR}"/src/"${LIB_NAME}"/configure ]] || [[ ${RECONF_lame} -eq 1 ]]; then - autoreconf_library "${LIB_NAME}" + autoreconf_library "${LIB_NAME}" 1>>"${BASEDIR}"/build.log 2>&1 || exit 1 fi ./configure \ diff --git a/scripts/android/leptonica.sh b/scripts/android/leptonica.sh index df10530..610f59d 100755 --- a/scripts/android/leptonica.sh +++ b/scripts/android/leptonica.sh @@ -23,7 +23,7 @@ make distclean 2>/dev/null 1>/dev/null # REGENERATE BUILD FILES IF NECESSARY OR REQUESTED if [[ ! -f "${BASEDIR}"/src/"${LIB_NAME}"/configure ]] || [[ ${RECONF_leptonica} -eq 1 ]]; then - autoreconf_library "${LIB_NAME}" + autoreconf_library "${LIB_NAME}" 1>>"${BASEDIR}"/build.log 2>&1 || exit 1 fi ./configure \ diff --git a/scripts/android/libass.sh b/scripts/android/libass.sh index c11b433..02e5c14 100755 --- a/scripts/android/libass.sh +++ b/scripts/android/libass.sh @@ -19,7 +19,7 @@ make distclean 2>/dev/null 1>/dev/null # REGENERATE BUILD FILES IF NECESSARY OR REQUESTED if [[ ! -f "${BASEDIR}"/src/"${LIB_NAME}"/configure ]] || [[ ${RECONF_libass} -eq 1 ]]; then - autoreconf_library "${LIB_NAME}" + autoreconf_library "${LIB_NAME}" 1>>"${BASEDIR}"/build.log 2>&1 || exit 1 fi ./configure \ diff --git a/scripts/android/libiconv.sh b/scripts/android/libiconv.sh index a81cfc0..db36b77 100755 --- a/scripts/android/libiconv.sh +++ b/scripts/android/libiconv.sh @@ -8,7 +8,7 @@ make distclean 2>/dev/null 1>/dev/null # REGENERATE BUILD FILES IF NECESSARY OR REQUESTED if [[ ! -f "${BASEDIR}"/src/"${LIB_NAME}"/configure ]] || [[ ${RECONF_libiconv} -eq 1 ]]; then - autoreconf_library "${LIB_NAME}" + autoreconf_library "${LIB_NAME}" 1>>"${BASEDIR}"/build.log 2>&1 || exit 1 fi ./configure \ diff --git a/scripts/android/libilbc.sh b/scripts/android/libilbc.sh index 40e44a6..f1361d7 100755 --- a/scripts/android/libilbc.sh +++ b/scripts/android/libilbc.sh @@ -5,7 +5,7 @@ make distclean 2>/dev/null 1>/dev/null # REGENERATE BUILD FILES IF NECESSARY OR REQUESTED if [[ ! -f "${BASEDIR}"/src/"${LIB_NAME}"/configure ]] || [[ ${RECONF_libilbc} -eq 1 ]]; then - autoreconf_library "${LIB_NAME}" + autoreconf_library "${LIB_NAME}" 1>>"${BASEDIR}"/build.log 2>&1 || exit 1 fi ./configure \ diff --git a/scripts/android/libogg.sh b/scripts/android/libogg.sh index f327ad0..ec9816e 100755 --- a/scripts/android/libogg.sh +++ b/scripts/android/libogg.sh @@ -5,7 +5,7 @@ make distclean 2>/dev/null 1>/dev/null # REGENERATE BUILD FILES IF NECESSARY OR REQUESTED if [[ ! -f "${BASEDIR}"/src/"${LIB_NAME}"/configure ]] || [[ ${RECONF_libogg} -eq 1 ]]; then - autoreconf_library "${LIB_NAME}" + autoreconf_library "${LIB_NAME}" 1>>"${BASEDIR}"/build.log 2>&1 || exit 1 fi ./configure \ diff --git a/scripts/android/libpng.sh b/scripts/android/libpng.sh index 8d20888..c1f1509 100755 --- a/scripts/android/libpng.sh +++ b/scripts/android/libpng.sh @@ -22,7 +22,7 @@ make distclean 2>/dev/null 1>/dev/null # REGENERATE BUILD FILES IF NECESSARY OR REQUESTED if [[ ! -f "${BASEDIR}"/src/"${LIB_NAME}"/configure ]] || [[ ${RECONF_libpng} -eq 1 ]]; then - autoreconf_library "${LIB_NAME}" + autoreconf_library "${LIB_NAME}" 1>>"${BASEDIR}"/build.log 2>&1 || exit 1 fi ./configure \ diff --git a/scripts/android/libsamplerate.sh b/scripts/android/libsamplerate.sh index 55210f3..3609c3f 100755 --- a/scripts/android/libsamplerate.sh +++ b/scripts/android/libsamplerate.sh @@ -5,7 +5,7 @@ make distclean 2>/dev/null 1>/dev/null # REGENERATE BUILD FILES IF NECESSARY OR REQUESTED if [[ ! -f "${BASEDIR}"/src/"${LIB_NAME}"/configure ]] || [[ ${RECONF_libsamplerate} -eq 1 ]]; then - autoreconf_library "${LIB_NAME}" + autoreconf_library "${LIB_NAME}" 1>>"${BASEDIR}"/build.log 2>&1 || exit 1 fi ./configure \ diff --git a/scripts/android/libsndfile.sh b/scripts/android/libsndfile.sh index 573093c..2508a08 100755 --- a/scripts/android/libsndfile.sh +++ b/scripts/android/libsndfile.sh @@ -5,7 +5,7 @@ make distclean 2>/dev/null 1>/dev/null # REGENERATE BUILD FILES IF NECESSARY OR REQUESTED if [[ ! -f "${BASEDIR}"/src/"${LIB_NAME}"/configure ]] || [[ ${RECONF_libsndfile} -eq 1 ]]; then - autoreconf_library "${LIB_NAME}" + autoreconf_library "${LIB_NAME}" 1>>"${BASEDIR}"/build.log 2>&1 || exit 1 fi ./configure \ diff --git a/scripts/android/libuuid.sh b/scripts/android/libuuid.sh index b395818..94e1429 100755 --- a/scripts/android/libuuid.sh +++ b/scripts/android/libuuid.sh @@ -5,7 +5,7 @@ make distclean 2>/dev/null 1>/dev/null # REGENERATE BUILD FILES IF NECESSARY OR REQUESTED if [[ ! -f "${BASEDIR}"/src/"${LIB_NAME}"/configure ]] || [[ ${RECONF_libuuid} -eq 1 ]]; then - autoreconf_library "${LIB_NAME}" + autoreconf_library "${LIB_NAME}" 1>>"${BASEDIR}"/build.log 2>&1 || exit 1 fi ./configure \ diff --git a/scripts/android/libvorbis.sh b/scripts/android/libvorbis.sh index 1b31497..6f0d87b 100755 --- a/scripts/android/libvorbis.sh +++ b/scripts/android/libvorbis.sh @@ -9,7 +9,7 @@ if [[ ! -f "${BASEDIR}"/src/"${LIB_NAME}"/configure ]] || [[ ${RECONF_libvorbis} # -mno-ieee-fp OPTION IS NOT COMPATIBLE WITH clang. REMOVING IT ${SED_INLINE} 's/\-mno-ieee-fp//g' "${BASEDIR}"/src/"${LIB_NAME}"/configure.ac || return 1 - autoreconf_library "${LIB_NAME}" + autoreconf_library "${LIB_NAME}" 1>>"${BASEDIR}"/build.log 2>&1 || exit 1 fi PKG_CONFIG= ./configure \ diff --git a/scripts/android/libwebp.sh b/scripts/android/libwebp.sh index f4b5a24..183fb63 100755 --- a/scripts/android/libwebp.sh +++ b/scripts/android/libwebp.sh @@ -19,7 +19,7 @@ make distclean 2>/dev/null 1>/dev/null # REGENERATE BUILD FILES IF NECESSARY OR REQUESTED if [[ ! -f "${BASEDIR}"/src/"${LIB_NAME}"/configure ]] || [[ ${RECONF_libwebp} -eq 1 ]]; then - autoreconf_library "${LIB_NAME}" + autoreconf_library "${LIB_NAME}" 1>>"${BASEDIR}"/build.log 2>&1 || exit 1 fi ./configure \ diff --git a/scripts/android/libxml2.sh b/scripts/android/libxml2.sh index 62650b2..2007321 100755 --- a/scripts/android/libxml2.sh +++ b/scripts/android/libxml2.sh @@ -11,7 +11,7 @@ make distclean 2>/dev/null 1>/dev/null # REGENERATE BUILD FILES IF NECESSARY OR REQUESTED if [[ ! -f "${BASEDIR}"/src/"${LIB_NAME}"/configure ]] || [[ ${RECONF_libxml2} -eq 1 ]]; then - autoreconf_library "${LIB_NAME}" + autoreconf_library "${LIB_NAME}" 1>>"${BASEDIR}"/build.log 2>&1 || exit 1 fi ./configure \ diff --git a/scripts/android/nettle.sh b/scripts/android/nettle.sh index a083552..1061111 100755 --- a/scripts/android/nettle.sh +++ b/scripts/android/nettle.sh @@ -20,7 +20,7 @@ if [[ ! -f "${BASEDIR}"/src/"${LIB_NAME}"/configure ]] || [[ ${RECONF_nettle} -e # WORKAROUND TO FIX BUILD SYSTEM COMPILER ON macOS overwrite_file "${BASEDIR}"/tools/patch/make/nettle/aclocal.m4 "${BASEDIR}"/src/"${LIB_NAME}"/aclocal.m4 - autoreconf_library "${LIB_NAME}" + autoreconf_library "${LIB_NAME}" 1>>"${BASEDIR}"/build.log 2>&1 || exit 1 fi ./configure \ diff --git a/scripts/android/opencore-amr.sh b/scripts/android/opencore-amr.sh index 8d1d55b..3d4b863 100755 --- a/scripts/android/opencore-amr.sh +++ b/scripts/android/opencore-amr.sh @@ -5,7 +5,7 @@ make distclean 2>/dev/null 1>/dev/null # REGENERATE BUILD FILES IF NECESSARY OR REQUESTED if [[ ! -f "${BASEDIR}"/src/"${LIB_NAME}"/configure ]] || [[ ${RECONF_opencore_amr} -eq 1 ]]; then - autoreconf_library "${LIB_NAME}" + autoreconf_library "${LIB_NAME}" 1>>"${BASEDIR}"/build.log 2>&1 || exit 1 fi ./configure \ diff --git a/scripts/android/opus.sh b/scripts/android/opus.sh index 92720cd..89e14b7 100755 --- a/scripts/android/opus.sh +++ b/scripts/android/opus.sh @@ -5,7 +5,7 @@ make distclean 2>/dev/null 1>/dev/null # REGENERATE BUILD FILES IF NECESSARY OR REQUESTED if [[ ! -f "${BASEDIR}"/src/"${LIB_NAME}"/configure ]] || [[ ${RECONF_opus} -eq 1 ]]; then - autoreconf_library "${LIB_NAME}" + autoreconf_library "${LIB_NAME}" 1>>"${BASEDIR}"/build.log 2>&1 || exit 1 fi ./configure \ diff --git a/scripts/android/rubberband.sh b/scripts/android/rubberband.sh index b17ac13..b4dde77 100755 --- a/scripts/android/rubberband.sh +++ b/scripts/android/rubberband.sh @@ -12,7 +12,7 @@ overwrite_file "${BASEDIR}"/tools/patch/make/rubberband/rubberband.pc.in "${BASE ${SED_INLINE} 's/%DEPENDENCIES%/sndfile, samplerate/g' "${BASEDIR}"/src/"${LIB_NAME}"/rubberband.pc.in || return 1 # ALWAYS REGENERATE BUILD FILES - NECESSARY TO APPLY THE WORKAROUNDS -autoreconf_library "${LIB_NAME}" +autoreconf_library "${LIB_NAME}" 1>>"${BASEDIR}"/build.log 2>&1 || exit 1 ./configure \ --prefix="${LIB_INSTALL_PREFIX}" \ diff --git a/scripts/android/sdl.sh b/scripts/android/sdl.sh index c71bb1f..4a728b0 100755 --- a/scripts/android/sdl.sh +++ b/scripts/android/sdl.sh @@ -5,7 +5,7 @@ make distclean 2>/dev/null 1>/dev/null # REGENERATE BUILD FILES IF NECESSARY OR REQUESTED if [[ ! -f "${BASEDIR}"/src/"${LIB_NAME}"/configure ]] || [[ ${RECONF_sdl} -eq 1 ]]; then - autoreconf_library "${LIB_NAME}" + autoreconf_library "${LIB_NAME}" 1>>"${BASEDIR}"/build.log 2>&1 || exit 1 fi ./configure \ diff --git a/scripts/android/shine.sh b/scripts/android/shine.sh index 33153f9..5be2f29 100755 --- a/scripts/android/shine.sh +++ b/scripts/android/shine.sh @@ -5,7 +5,7 @@ make distclean 2>/dev/null 1>/dev/null # REGENERATE BUILD FILES IF NECESSARY OR REQUESTED if [[ ! -f "${BASEDIR}"/src/"${LIB_NAME}"/configure ]] || [[ ${RECONF_shine} -eq 1 ]]; then - autoreconf_library "${LIB_NAME}" + autoreconf_library "${LIB_NAME}" 1>>"${BASEDIR}"/build.log 2>&1 || exit 1 fi ./configure \ diff --git a/scripts/android/speex.sh b/scripts/android/speex.sh index a90a17f..3187784 100755 --- a/scripts/android/speex.sh +++ b/scripts/android/speex.sh @@ -13,7 +13,7 @@ make distclean 2>/dev/null 1>/dev/null # REGENERATE BUILD FILES IF NECESSARY OR REQUESTED if [[ ! -f "${BASEDIR}"/src/"${LIB_NAME}"/configure ]] || [[ ${RECONF_soxr} -eq 1 ]]; then - autoreconf_library "${LIB_NAME}" + autoreconf_library "${LIB_NAME}" 1>>"${BASEDIR}"/build.log 2>&1 || exit 1 fi ./configure \ diff --git a/scripts/android/tesseract.sh b/scripts/android/tesseract.sh index a491efd..c96c8ba 100755 --- a/scripts/android/tesseract.sh +++ b/scripts/android/tesseract.sh @@ -9,7 +9,7 @@ make distclean 2>/dev/null 1>/dev/null # REGENERATE BUILD FILES IF NECESSARY OR REQUESTED if [[ ! -f "${BASEDIR}"/src/"${LIB_NAME}"/configure ]] || [[ ${RECONF_tesseract} -eq 1 ]]; then - autoreconf_library "${LIB_NAME}" + autoreconf_library "${LIB_NAME}" 1>>"${BASEDIR}"/build.log 2>&1 || exit 1 fi # WORKAROUND TO MANUALLY SET ENDIANNESS diff --git a/scripts/android/tiff.sh b/scripts/android/tiff.sh index 36d9390..beeaf13 100755 --- a/scripts/android/tiff.sh +++ b/scripts/android/tiff.sh @@ -5,7 +5,7 @@ make distclean 2>/dev/null 1>/dev/null # REGENERATE BUILD FILES IF NECESSARY OR REQUESTED if [[ ! -f "${BASEDIR}"/src/"${LIB_NAME}"/configure ]] || [[ ${RECONF_tiff} -eq 1 ]]; then - autoreconf_library "${LIB_NAME}" + autoreconf_library "${LIB_NAME}" 1>>"${BASEDIR}"/build.log 2>&1 || exit 1 fi ./configure \ diff --git a/scripts/android/vo-amrwbenc.sh b/scripts/android/vo-amrwbenc.sh index 763dea5..778af4e 100755 --- a/scripts/android/vo-amrwbenc.sh +++ b/scripts/android/vo-amrwbenc.sh @@ -13,7 +13,7 @@ make distclean 2>/dev/null 1>/dev/null # REGENERATE BUILD FILES IF NECESSARY OR REQUESTED if [[ ! -f "${BASEDIR}"/src/"${LIB_NAME}"/configure ]] || [[ ${RECONF_vo_amrwbenc} -eq 1 ]]; then - autoreconf_library "${LIB_NAME}" + autoreconf_library "${LIB_NAME}" 1>>"${BASEDIR}"/build.log 2>&1 || exit 1 fi ./configure \ diff --git a/scripts/android/x264.sh b/scripts/android/x264.sh index 0ae23a3..0e41ba0 100755 --- a/scripts/android/x264.sh +++ b/scripts/android/x264.sh @@ -28,7 +28,7 @@ make distclean 2>/dev/null 1>/dev/null # REGENERATE BUILD FILES IF NECESSARY OR REQUESTED if [[ ! -f "${BASEDIR}"/src/"${LIB_NAME}"/configure ]] || [[ ${RECONF_x264} -eq 1 ]]; then - autoreconf_library "${LIB_NAME}" + autoreconf_library "${LIB_NAME}" 1>>"${BASEDIR}"/build.log 2>&1 || exit 1 fi ./configure \ diff --git a/scripts/apple/expat.sh b/scripts/apple/expat.sh index add98e4..d2b4a18 100755 --- a/scripts/apple/expat.sh +++ b/scripts/apple/expat.sh @@ -7,7 +7,7 @@ make distclean 2>/dev/null 1>/dev/null # REGENERATE BUILD FILES IF NECESSARY OR REQUESTED if [[ ! -f "${BASEDIR}"/src/"${LIB_NAME}"/"${LIB_NAME}"/configure ]] || [[ ${RECONF_expat} -eq 1 ]]; then - autoreconf_library "${LIB_NAME}" + autoreconf_library "${LIB_NAME}" 1>>"${BASEDIR}"/build.log 2>&1 || exit 1 fi ./configure \ diff --git a/scripts/apple/fontconfig.sh b/scripts/apple/fontconfig.sh index 3d8d0c6..3cbd24d 100755 --- a/scripts/apple/fontconfig.sh +++ b/scripts/apple/fontconfig.sh @@ -5,7 +5,7 @@ make distclean 2>/dev/null 1>/dev/null # REGENERATE BUILD FILES IF NECESSARY OR REQUESTED if [[ ! -f "${BASEDIR}"/src/"${LIB_NAME}"/configure ]] || [[ ${RECONF_fontconfig} -eq 1 ]]; then - autoreconf_library "${LIB_NAME}" + autoreconf_library "${LIB_NAME}" 1>>"${BASEDIR}"/build.log 2>&1 || exit 1 fi ./configure \ diff --git a/scripts/apple/fribidi.sh b/scripts/apple/fribidi.sh index 32840c8..2ec2e83 100755 --- a/scripts/apple/fribidi.sh +++ b/scripts/apple/fribidi.sh @@ -5,7 +5,7 @@ make distclean 2>/dev/null 1>/dev/null # REGENERATE BUILD FILES IF NECESSARY OR REQUESTED if [[ ! -f "${BASEDIR}"/src/"${LIB_NAME}"/configure ]] || [[ ${RECONF_fribidi} -eq 1 ]]; then - autoreconf_library "${LIB_NAME}" + autoreconf_library "${LIB_NAME}" 1>>"${BASEDIR}"/build.log 2>&1 || exit 1 fi ./configure \ diff --git a/scripts/apple/giflib.sh b/scripts/apple/giflib.sh index 110af90..e8b474e 100755 --- a/scripts/apple/giflib.sh +++ b/scripts/apple/giflib.sh @@ -8,7 +8,7 @@ make distclean 2>/dev/null 1>/dev/null # REGENERATE BUILD FILES IF NECESSARY OR REQUESTED if [[ ! -f "${BASEDIR}"/src/"${LIB_NAME}"/configure ]] || [[ ${RECONF_giflib} -eq 1 ]]; then - autoreconf_library "${LIB_NAME}" + autoreconf_library "${LIB_NAME}" 1>>"${BASEDIR}"/build.log 2>&1 || exit 1 fi ./configure \ diff --git a/scripts/apple/gmp.sh b/scripts/apple/gmp.sh index 00ddda4..053ce77 100755 --- a/scripts/apple/gmp.sh +++ b/scripts/apple/gmp.sh @@ -17,7 +17,7 @@ make distclean 2>/dev/null 1>/dev/null # REGENERATE BUILD FILES IF NECESSARY OR REQUESTED if [[ ! -f "${BASEDIR}"/src/"${LIB_NAME}"/configure ]] || [[ ${RECONF_gmp} -eq 1 ]]; then - autoreconf_library "${LIB_NAME}" + autoreconf_library "${LIB_NAME}" 1>>"${BASEDIR}"/build.log 2>&1 || exit 1 fi # UPDATE CONFIG FILES TO SUPPORT APPLE ARCHITECTURES diff --git a/scripts/apple/kvazaar.sh b/scripts/apple/kvazaar.sh index e0d6bef..fefb229 100755 --- a/scripts/apple/kvazaar.sh +++ b/scripts/apple/kvazaar.sh @@ -16,7 +16,7 @@ make distclean 2>/dev/null 1>/dev/null # REGENERATE BUILD FILES IF NECESSARY OR REQUESTED if [[ ! -f "${BASEDIR}"/src/"${LIB_NAME}"/configure ]] || [[ ${RECONF_kvazaar} -eq 1 ]]; then - autoreconf_library "${LIB_NAME}" + autoreconf_library "${LIB_NAME}" 1>>"${BASEDIR}"/build.log 2>&1 || exit 1 fi ./configure \ diff --git a/scripts/apple/lame.sh b/scripts/apple/lame.sh index a82704a..a28e996 100755 --- a/scripts/apple/lame.sh +++ b/scripts/apple/lame.sh @@ -7,7 +7,7 @@ make distclean 2>/dev/null 1>/dev/null # REGENERATE BUILD FILES IF NECESSARY OR REQUESTED if [[ ! -f "${BASEDIR}"/src/"${LIB_NAME}"/configure ]] || [[ ${RECONF_lame} -eq 1 ]]; then - autoreconf_library "${LIB_NAME}" + autoreconf_library "${LIB_NAME}" 1>>"${BASEDIR}"/build.log 2>&1 || exit 1 fi ./configure \ diff --git a/scripts/apple/leptonica.sh b/scripts/apple/leptonica.sh index 87832d9..3c67b60 100755 --- a/scripts/apple/leptonica.sh +++ b/scripts/apple/leptonica.sh @@ -27,7 +27,7 @@ make distclean 2>/dev/null 1>/dev/null # REGENERATE BUILD FILES IF NECESSARY OR REQUESTED if [[ ! -f "${BASEDIR}"/src/"${LIB_NAME}"/configure ]] || [[ ${RECONF_leptonica} -eq 1 ]]; then - autoreconf_library "${LIB_NAME}" + autoreconf_library "${LIB_NAME}" 1>>"${BASEDIR}"/build.log 2>&1 || exit 1 fi ./configure \ diff --git a/scripts/apple/libass.sh b/scripts/apple/libass.sh index 68949a5..53374c2 100755 --- a/scripts/apple/libass.sh +++ b/scripts/apple/libass.sh @@ -13,7 +13,7 @@ make distclean 2>/dev/null 1>/dev/null # REGENERATE BUILD FILES IF NECESSARY OR REQUESTED if [[ ! -f "${BASEDIR}"/src/"${LIB_NAME}"/configure ]] || [[ ${RECONF_libass} -eq 1 ]]; then - autoreconf_library "${LIB_NAME}" + autoreconf_library "${LIB_NAME}" 1>>"${BASEDIR}"/build.log 2>&1 || exit 1 fi ./configure \ diff --git a/scripts/apple/libilbc.sh b/scripts/apple/libilbc.sh index 37c9b23..98cc7cb 100755 --- a/scripts/apple/libilbc.sh +++ b/scripts/apple/libilbc.sh @@ -5,7 +5,7 @@ make distclean 2>/dev/null 1>/dev/null # REGENERATE BUILD FILES IF NECESSARY OR REQUESTED if [[ ! -f "${BASEDIR}"/src/"${LIB_NAME}"/configure ]] || [[ ${RECONF_libilbc} -eq 1 ]]; then - autoreconf_library "${LIB_NAME}" + autoreconf_library "${LIB_NAME}" 1>>"${BASEDIR}"/build.log 2>&1 || exit 1 fi ./configure \ diff --git a/scripts/apple/libogg.sh b/scripts/apple/libogg.sh index 09e537c..5154d6c 100755 --- a/scripts/apple/libogg.sh +++ b/scripts/apple/libogg.sh @@ -5,7 +5,7 @@ make distclean 2>/dev/null 1>/dev/null # REGENERATE BUILD FILES IF NECESSARY OR REQUESTED if [[ ! -f "${BASEDIR}"/src/"${LIB_NAME}"/configure ]] || [[ ${RECONF_libogg} -eq 1 ]]; then - autoreconf_library "${LIB_NAME}" + autoreconf_library "${LIB_NAME}" 1>>"${BASEDIR}"/build.log 2>&1 || exit 1 fi # FIX INCLUDE PATHS diff --git a/scripts/apple/libpng.sh b/scripts/apple/libpng.sh index b49df51..0035ed8 100755 --- a/scripts/apple/libpng.sh +++ b/scripts/apple/libpng.sh @@ -21,7 +21,7 @@ if [[ ! -f "${BASEDIR}"/src/"${LIB_NAME}"/configure ]] || [[ ${RECONF_libpng} -e overwrite_file "${FFMPEG_KIT_TMPDIR}"/source/config/config.guess "${BASEDIR}"/src/"${LIB_NAME}"/config.guess || return 1 overwrite_file "${FFMPEG_KIT_TMPDIR}"/source/config/config.sub "${BASEDIR}"/src/"${LIB_NAME}"/config.sub || return 1 - autoreconf_library "${LIB_NAME}" + autoreconf_library "${LIB_NAME}" 1>>"${BASEDIR}"/build.log 2>&1 || exit 1 fi ./configure \ diff --git a/scripts/apple/libsamplerate.sh b/scripts/apple/libsamplerate.sh index f9abe2b..3f7f843 100755 --- a/scripts/apple/libsamplerate.sh +++ b/scripts/apple/libsamplerate.sh @@ -5,7 +5,7 @@ make distclean 2>/dev/null 1>/dev/null # REGENERATE BUILD FILES IF NECESSARY OR REQUESTED if [[ ! -f "${BASEDIR}"/src/"${LIB_NAME}"/configure ]] || [[ ${RECONF_libsamplerate} -eq 1 ]]; then - autoreconf_library "${LIB_NAME}" + autoreconf_library "${LIB_NAME}" 1>>"${BASEDIR}"/build.log 2>&1 || exit 1 fi ./configure \ diff --git a/scripts/apple/libsndfile.sh b/scripts/apple/libsndfile.sh index a61a4c7..3fe0675 100755 --- a/scripts/apple/libsndfile.sh +++ b/scripts/apple/libsndfile.sh @@ -5,7 +5,7 @@ make distclean 2>/dev/null 1>/dev/null # REGENERATE BUILD FILES IF NECESSARY OR REQUESTED if [[ ! -f "${BASEDIR}"/src/"${LIB_NAME}"/configure ]] || [[ ${RECONF_libsndfile} -eq 1 ]]; then - autoreconf_library "${LIB_NAME}" + autoreconf_library "${LIB_NAME}" 1>>"${BASEDIR}"/build.log 2>&1 || exit 1 fi ./configure \ diff --git a/scripts/apple/libvorbis.sh b/scripts/apple/libvorbis.sh index d72ab69..058baac 100755 --- a/scripts/apple/libvorbis.sh +++ b/scripts/apple/libvorbis.sh @@ -9,7 +9,7 @@ if [[ ! -f "${BASEDIR}"/src/"${LIB_NAME}"/configure ]] || [[ ${RECONF_libvorbis} # -mno-ieee-fp OPTION IS NOT COMPATIBLE WITH clang. REMOVING IT ${SED_INLINE} 's/\-mno-ieee-fp//g' "${BASEDIR}"/src/"${LIB_NAME}"/configure.ac || return 1 - autoreconf_library "${LIB_NAME}" + autoreconf_library "${LIB_NAME}" 1>>"${BASEDIR}"/build.log 2>&1 || exit 1 fi # WORKAROUND TO REMOVE -force_cpusubtype_ALL FLAG DUE TO THE FOLLOWING ERROR diff --git a/scripts/apple/libwebp.sh b/scripts/apple/libwebp.sh index de0013f..9ead71d 100755 --- a/scripts/apple/libwebp.sh +++ b/scripts/apple/libwebp.sh @@ -19,7 +19,7 @@ make distclean 2>/dev/null 1>/dev/null # REGENERATE BUILD FILES IF NECESSARY OR REQUESTED if [[ ! -f "${BASEDIR}"/src/"${LIB_NAME}"/configure ]] || [[ ${RECONF_libwebp} -eq 1 ]]; then - autoreconf_library "${LIB_NAME}" + autoreconf_library "${LIB_NAME}" 1>>"${BASEDIR}"/build.log 2>&1 || exit 1 fi ./configure \ diff --git a/scripts/apple/libxml2.sh b/scripts/apple/libxml2.sh index 1b93826..6a5401c 100755 --- a/scripts/apple/libxml2.sh +++ b/scripts/apple/libxml2.sh @@ -5,7 +5,7 @@ make distclean 2>/dev/null 1>/dev/null # REGENERATE BUILD FILES IF NECESSARY OR REQUESTED if [[ ! -f "${BASEDIR}"/src/"${LIB_NAME}"/configure ]] || [[ ${RECONF_libxml2} -eq 1 ]]; then - autoreconf_library "${LIB_NAME}" + autoreconf_library "${LIB_NAME}" 1>>"${BASEDIR}"/build.log 2>&1 || exit 1 fi ./configure \ diff --git a/scripts/apple/nettle.sh b/scripts/apple/nettle.sh index 126ac36..0abe399 100755 --- a/scripts/apple/nettle.sh +++ b/scripts/apple/nettle.sh @@ -20,7 +20,7 @@ if [[ ! -f "${BASEDIR}"/src/"${LIB_NAME}"/configure ]] || [[ ${RECONF_nettle} -e # WORKAROUND TO FIX BUILD SYSTEM COMPILER ON macOS overwrite_file "${BASEDIR}"/tools/patch/make/nettle/aclocal.m4 "${BASEDIR}"/src/"${LIB_NAME}"/aclocal.m4 - autoreconf_library "${LIB_NAME}" + autoreconf_library "${LIB_NAME}" 1>>"${BASEDIR}"/build.log 2>&1 || exit 1 fi # UPDATE CONFIG FILES TO SUPPORT APPLE ARCHITECTURES diff --git a/scripts/apple/opencore-amr.sh b/scripts/apple/opencore-amr.sh index 02fbb99..b110ec5 100755 --- a/scripts/apple/opencore-amr.sh +++ b/scripts/apple/opencore-amr.sh @@ -18,7 +18,7 @@ make distclean 2>/dev/null 1>/dev/null # REGENERATE BUILD FILES IF NECESSARY OR REQUESTED if [[ ! -f "${BASEDIR}"/src/"${LIB_NAME}"/configure ]] || [[ ${RECONF_opencore_amr} -eq 1 ]]; then - autoreconf_library "${LIB_NAME}" + autoreconf_library "${LIB_NAME}" 1>>"${BASEDIR}"/build.log 2>&1 || exit 1 fi ./configure \ diff --git a/scripts/apple/opus.sh b/scripts/apple/opus.sh index 25710f1..faa1ad1 100755 --- a/scripts/apple/opus.sh +++ b/scripts/apple/opus.sh @@ -5,7 +5,7 @@ make distclean 2>/dev/null 1>/dev/null # REGENERATE BUILD FILES IF NECESSARY OR REQUESTED if [[ ! -f "${BASEDIR}"/src/"${LIB_NAME}"/configure ]] || [[ ${RECONF_opus} -eq 1 ]]; then - autoreconf_library "${LIB_NAME}" + autoreconf_library "${LIB_NAME}" 1>>"${BASEDIR}"/build.log 2>&1 || exit 1 fi ./configure \ diff --git a/scripts/apple/rubberband.sh b/scripts/apple/rubberband.sh index 2849944..bad41ee 100755 --- a/scripts/apple/rubberband.sh +++ b/scripts/apple/rubberband.sh @@ -12,7 +12,7 @@ overwrite_file "${BASEDIR}"/tools/patch/make/rubberband/rubberband.pc.in "${BASE ${SED_INLINE} 's/%DEPENDENCIES%/sndfile, samplerate/g' "${BASEDIR}"/src/"${LIB_NAME}"/rubberband.pc.in || return 1 # ALWAYS REGENERATE BUILD FILES - NECESSARY TO APPLY THE WORKAROUNDS -autoreconf_library "${LIB_NAME}" +autoreconf_library "${LIB_NAME}" 1>>"${BASEDIR}"/build.log 2>&1 || exit 1 ./configure \ --prefix="${LIB_INSTALL_PREFIX}" \ diff --git a/scripts/apple/shine.sh b/scripts/apple/shine.sh index b2b176d..d9b10d0 100755 --- a/scripts/apple/shine.sh +++ b/scripts/apple/shine.sh @@ -5,7 +5,7 @@ make distclean 2>/dev/null 1>/dev/null # REGENERATE BUILD FILES IF NECESSARY OR REQUESTED if [[ ! -f "${BASEDIR}"/src/"${LIB_NAME}"/configure ]] || [[ ${RECONF_shine} -eq 1 ]]; then - autoreconf_library "${LIB_NAME}" + autoreconf_library "${LIB_NAME}" 1>>"${BASEDIR}"/build.log 2>&1 || exit 1 fi ./configure \ diff --git a/scripts/apple/speex.sh b/scripts/apple/speex.sh index b67c065..058e0fa 100755 --- a/scripts/apple/speex.sh +++ b/scripts/apple/speex.sh @@ -13,7 +13,7 @@ make distclean 2>/dev/null 1>/dev/null # REGENERATE BUILD FILES IF NECESSARY OR REQUESTED if [[ ! -f "${BASEDIR}"/src/"${LIB_NAME}"/configure ]] || [[ ${RECONF_soxr} -eq 1 ]]; then - autoreconf_library "${LIB_NAME}" + autoreconf_library "${LIB_NAME}" 1>>"${BASEDIR}"/build.log 2>&1 || exit 1 fi ./configure \ diff --git a/scripts/apple/tesseract.sh b/scripts/apple/tesseract.sh index caa75c9..1da751d 100755 --- a/scripts/apple/tesseract.sh +++ b/scripts/apple/tesseract.sh @@ -9,7 +9,7 @@ make distclean 2>/dev/null 1>/dev/null # REGENERATE BUILD FILES IF NECESSARY OR REQUESTED if [[ ! -f "${BASEDIR}"/src/"${LIB_NAME}"/configure ]] || [[ ${RECONF_tesseract} -eq 1 ]]; then - autoreconf_library "${LIB_NAME}" + autoreconf_library "${LIB_NAME}" 1>>"${BASEDIR}"/build.log 2>&1 || exit 1 fi ./configure \ diff --git a/scripts/apple/tiff.sh b/scripts/apple/tiff.sh index 46fe9ce..c782a59 100755 --- a/scripts/apple/tiff.sh +++ b/scripts/apple/tiff.sh @@ -10,7 +10,7 @@ if [[ ! -f "${BASEDIR}"/src/"${LIB_NAME}"/configure ]] || [[ ${RECONF_tiff} -eq overwrite_file "${FFMPEG_KIT_TMPDIR}"/source/config/config.guess "${BASEDIR}"/src/"${LIB_NAME}"/config.guess || return 1 overwrite_file "${FFMPEG_KIT_TMPDIR}"/source/config/config.sub "${BASEDIR}"/src/"${LIB_NAME}"/config.sub || return 1 - autoreconf_library "${LIB_NAME}" + autoreconf_library "${LIB_NAME}" 1>>"${BASEDIR}"/build.log 2>&1 || exit 1 fi ./configure \ diff --git a/scripts/apple/vo-amrwbenc.sh b/scripts/apple/vo-amrwbenc.sh index d95f6a4..40ce136 100755 --- a/scripts/apple/vo-amrwbenc.sh +++ b/scripts/apple/vo-amrwbenc.sh @@ -15,7 +15,7 @@ make distclean 2>/dev/null 1>/dev/null # REGENERATE BUILD FILES IF NECESSARY OR REQUESTED if [[ ! -f "${BASEDIR}"/src/"${LIB_NAME}"/configure ]] || [[ ${RECONF_vo_amrwbenc} -eq 1 ]]; then - autoreconf_library "${LIB_NAME}" + autoreconf_library "${LIB_NAME}" 1>>"${BASEDIR}"/build.log 2>&1 || exit 1 fi ./configure \ diff --git a/scripts/apple/x264.sh b/scripts/apple/x264.sh index 4ab7fba..d3a3922 100755 --- a/scripts/apple/x264.sh +++ b/scripts/apple/x264.sh @@ -20,7 +20,7 @@ make distclean 2>/dev/null 1>/dev/null # REGENERATE BUILD FILES IF NECESSARY OR REQUESTED if [[ ! -f "${BASEDIR}"/src/"${LIB_NAME}"/configure ]] || [[ ${RECONF_x264} -eq 1 ]]; then - autoreconf_library "${LIB_NAME}" + autoreconf_library "${LIB_NAME}" 1>>"${BASEDIR}"/build.log 2>&1 || exit 1 fi # UPDATE CONFIG FILES TO SUPPORT APPLE ARCHITECTURES From 2afdbd88af59443a323d404a0d838adfe8a15063 Mon Sep 17 00:00:00 2001 From: Taner Sener Date: Thu, 28 Oct 2021 12:22:29 +0100 Subject: [PATCH 08/45] generate shared libraries on apple platforms --- apple/.gitignore | 2 + apple/Makefile.in | 19 +- apple/aclocal.m4 | 72 +- apple/ar-lib | 2 +- apple/compile | 2 +- apple/config.guess | 1143 +-- apple/config.sub | 91 +- apple/configure | 6347 ++++++++++------- apple/configure.ac | 13 +- apple/depcomp | 2 +- apple/libtool | 64 +- apple/missing | 2 +- apple/src/Makefile.am | 2 +- apple/src/Makefile.in | 16 +- ios.sh | 2 +- macos.sh | 2 +- scripts/android/ffmpeg.sh | 7 + scripts/apple/ffmpeg-kit.sh | 35 +- scripts/apple/ffmpeg.sh | 107 +- scripts/apple/harfbuzz.sh | 9 +- scripts/apple/leptonica.sh | 2 +- scripts/apple/libvorbis.sh | 19 +- scripts/apple/tesseract.sh | 9 +- scripts/apple/xvidcore.sh | 10 +- scripts/function-apple.sh | 426 +- scripts/function-ios.sh | 47 +- scripts/function-macos.sh | 30 - scripts/function-tvos.sh | 33 +- scripts/function.sh | 164 +- tools/create_ios_universal_test_package.sh | 2 +- tools/create_macos_universal_test_package.sh | 2 +- tools/create_tvos_universal_test_package.sh | 2 +- .../apple/ffmpeg-kit-ios-audio.podspec | 2 +- .../apple/ffmpeg-kit-ios-full-gpl.podspec | 2 +- .../release/apple/ffmpeg-kit-ios-full.podspec | 2 +- .../apple/ffmpeg-kit-ios-https-gpl.podspec | 2 +- .../apple/ffmpeg-kit-ios-https.podspec | 2 +- .../apple/ffmpeg-kit-ios-min-gpl.podspec | 2 +- .../release/apple/ffmpeg-kit-ios-min.podspec | 2 +- .../apple/ffmpeg-kit-ios-video.podspec | 2 +- .../apple/ffmpeg-kit-macos-audio.podspec | 2 +- .../apple/ffmpeg-kit-macos-full-gpl.podspec | 2 +- .../apple/ffmpeg-kit-macos-full.podspec | 2 +- .../apple/ffmpeg-kit-macos-https-gpl.podspec | 2 +- .../apple/ffmpeg-kit-macos-https.podspec | 2 +- .../apple/ffmpeg-kit-macos-min-gpl.podspec | 2 +- .../apple/ffmpeg-kit-macos-min.podspec | 2 +- .../apple/ffmpeg-kit-macos-video.podspec | 2 +- .../apple/ffmpeg-kit-tvos-audio.podspec | 2 +- .../apple/ffmpeg-kit-tvos-full-gpl.podspec | 2 +- .../apple/ffmpeg-kit-tvos-full.podspec | 2 +- .../apple/ffmpeg-kit-tvos-https-gpl.podspec | 2 +- .../apple/ffmpeg-kit-tvos-https.podspec | 2 +- .../apple/ffmpeg-kit-tvos-min-gpl.podspec | 2 +- .../release/apple/ffmpeg-kit-tvos-min.podspec | 2 +- .../apple/ffmpeg-kit-tvos-video.podspec | 2 +- tools/release/ios.lts.sh | 2 +- tools/release/macos.lts.sh | 2 +- tools/release/tvos.lts.sh | 2 +- tvos.sh | 2 +- 60 files changed, 4815 insertions(+), 3926 deletions(-) diff --git a/apple/.gitignore b/apple/.gitignore index 3e4e1c5..adc4268 100644 --- a/apple/.gitignore +++ b/apple/.gitignore @@ -2,9 +2,11 @@ /Makefile /config.status /configure.tmp +/configure~ /.deps/ /.libs/ *.trs /unittests /test-driver /config.log +/*.tmp diff --git a/apple/Makefile.in b/apple/Makefile.in index 044d789..f2c68c0 100644 --- a/apple/Makefile.in +++ b/apple/Makefile.in @@ -1,7 +1,7 @@ -# Makefile.in generated by automake 1.16.3 from Makefile.am. +# Makefile.in generated by automake 1.16.5 from Makefile.am. # @configure_input@ -# Copyright (C) 1994-2020 Free Software Foundation, Inc. +# Copyright (C) 1994-2021 Free Software Foundation, Inc. # This Makefile.in is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, @@ -154,12 +154,9 @@ am__define_uniq_tagged_files = \ unique=`for i in $$list; do \ if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ done | $(am__uniquify_input)` -ETAGS = etags -CTAGS = ctags -CSCOPE = cscope DIST_SUBDIRS = $(SUBDIRS) -am__DIST_COMMON = $(srcdir)/Makefile.in ar-lib compile config.guess \ - config.sub install-sh ltmain.sh missing +am__DIST_COMMON = $(srcdir)/Makefile.in README.md ar-lib compile \ + config.guess config.sub install-sh ltmain.sh missing DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) distdir = $(PACKAGE)-$(VERSION) top_distdir = $(distdir) @@ -215,8 +212,9 @@ AWK = @AWK@ CC = @CC@ CCDEPMODE = @CCDEPMODE@ CFLAGS = @CFLAGS@ -CPP = @CPP@ CPPFLAGS = @CPPFLAGS@ +CSCOPE = @CSCOPE@ +CTAGS = @CTAGS@ CYGPATH_W = @CYGPATH_W@ DEFS = @DEFS@ DEPDIR = @DEPDIR@ @@ -227,8 +225,9 @@ ECHO_C = @ECHO_C@ ECHO_N = @ECHO_N@ ECHO_T = @ECHO_T@ EGREP = @EGREP@ +ETAGS = @ETAGS@ EXEEXT = @EXEEXT@ -FFMPEG_LIBS = @FFMPEG_LIBS@ +FFMPEG_FRAMEWORKS = @FFMPEG_FRAMEWORKS@ FGREP = @FGREP@ GREP = @GREP@ INSTALL = @INSTALL@ @@ -317,6 +316,7 @@ pdfdir = @pdfdir@ prefix = @prefix@ program_transform_name = @program_transform_name@ psdir = @psdir@ +runstatedir = @runstatedir@ sbindir = @sbindir@ sharedstatedir = @sharedstatedir@ srcdir = @srcdir@ @@ -478,7 +478,6 @@ cscopelist-am: $(am__tagged_files) distclean-tags: -rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags -rm -f cscope.out cscope.in.out cscope.po.out cscope.files - distdir: $(BUILT_SOURCES) $(MAKE) $(AM_MAKEFLAGS) distdir-am diff --git a/apple/aclocal.m4 b/apple/aclocal.m4 index 7afd8cc..aef2b1c 100644 --- a/apple/aclocal.m4 +++ b/apple/aclocal.m4 @@ -1,6 +1,6 @@ -# generated automatically by aclocal 1.16.3 -*- Autoconf -*- +# generated automatically by aclocal 1.16.5 -*- Autoconf -*- -# Copyright (C) 1996-2020 Free Software Foundation, Inc. +# Copyright (C) 1996-2021 Free Software Foundation, Inc. # This file is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, @@ -14,13 +14,13 @@ m4_ifndef([AC_CONFIG_MACRO_DIRS], [m4_defun([_AM_CONFIG_MACRO_DIRS], [])m4_defun([AC_CONFIG_MACRO_DIRS], [_AM_CONFIG_MACRO_DIRS($@)])]) m4_ifndef([AC_AUTOCONF_VERSION], [m4_copy([m4_PACKAGE_VERSION], [AC_AUTOCONF_VERSION])])dnl -m4_if(m4_defn([AC_AUTOCONF_VERSION]), [2.69],, -[m4_warning([this file was generated for autoconf 2.69. +m4_if(m4_defn([AC_AUTOCONF_VERSION]), [2.71],, +[m4_warning([this file was generated for autoconf 2.71. You have another version of autoconf. It may work, but is not guaranteed to. If you have problems, you may need to regenerate the build system entirely. To do so, use the procedure documented by the package, typically 'autoreconf'.])]) -# Copyright (C) 2002-2020 Free Software Foundation, Inc. +# Copyright (C) 2002-2021 Free Software Foundation, Inc. # # This file is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, @@ -35,7 +35,7 @@ AC_DEFUN([AM_AUTOMAKE_VERSION], [am__api_version='1.16' dnl Some users find AM_AUTOMAKE_VERSION and mistake it for a way to dnl require some minimum version. Point them to the right macro. -m4_if([$1], [1.16.3], [], +m4_if([$1], [1.16.5], [], [AC_FATAL([Do not call $0, use AM_INIT_AUTOMAKE([$1]).])])dnl ]) @@ -51,12 +51,12 @@ m4_define([_AM_AUTOCONF_VERSION], []) # Call AM_AUTOMAKE_VERSION and AM_AUTOMAKE_VERSION so they can be traced. # This function is AC_REQUIREd by AM_INIT_AUTOMAKE. AC_DEFUN([AM_SET_CURRENT_AUTOMAKE_VERSION], -[AM_AUTOMAKE_VERSION([1.16.3])dnl +[AM_AUTOMAKE_VERSION([1.16.5])dnl m4_ifndef([AC_AUTOCONF_VERSION], [m4_copy([m4_PACKAGE_VERSION], [AC_AUTOCONF_VERSION])])dnl _AM_AUTOCONF_VERSION(m4_defn([AC_AUTOCONF_VERSION]))]) -# Copyright (C) 2011-2020 Free Software Foundation, Inc. +# Copyright (C) 2011-2021 Free Software Foundation, Inc. # # This file is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, @@ -118,7 +118,7 @@ AC_SUBST([AR])dnl # AM_AUX_DIR_EXPAND -*- Autoconf -*- -# Copyright (C) 2001-2020 Free Software Foundation, Inc. +# Copyright (C) 2001-2021 Free Software Foundation, Inc. # # This file is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, @@ -170,7 +170,7 @@ am_aux_dir=`cd "$ac_aux_dir" && pwd` # AM_CONDITIONAL -*- Autoconf -*- -# Copyright (C) 1997-2020 Free Software Foundation, Inc. +# Copyright (C) 1997-2021 Free Software Foundation, Inc. # # This file is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, @@ -201,7 +201,7 @@ AC_CONFIG_COMMANDS_PRE( Usually this means the macro was only invoked conditionally.]]) fi])]) -# Copyright (C) 1999-2020 Free Software Foundation, Inc. +# Copyright (C) 1999-2021 Free Software Foundation, Inc. # # This file is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, @@ -392,7 +392,7 @@ _AM_SUBST_NOTMAKE([am__nodep])dnl # Generate code to set up dependency tracking. -*- Autoconf -*- -# Copyright (C) 1999-2020 Free Software Foundation, Inc. +# Copyright (C) 1999-2021 Free Software Foundation, Inc. # # This file is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, @@ -460,7 +460,7 @@ AC_DEFUN([AM_OUTPUT_DEPENDENCY_COMMANDS], # Do all the work for Automake. -*- Autoconf -*- -# Copyright (C) 1996-2020 Free Software Foundation, Inc. +# Copyright (C) 1996-2021 Free Software Foundation, Inc. # # This file is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, @@ -488,6 +488,10 @@ m4_defn([AC_PROG_CC]) # release and drop the old call support. AC_DEFUN([AM_INIT_AUTOMAKE], [AC_PREREQ([2.65])dnl +m4_ifdef([_$0_ALREADY_INIT], + [m4_fatal([$0 expanded multiple times +]m4_defn([_$0_ALREADY_INIT]))], + [m4_define([_$0_ALREADY_INIT], m4_expansion_stack)])dnl dnl Autoconf wants to disallow AM_ names. We explicitly allow dnl the ones we care about. m4_pattern_allow([^AM_[A-Z]+FLAGS$])dnl @@ -524,7 +528,7 @@ m4_ifval([$3], [_AM_SET_OPTION([no-define])])dnl [_AM_SET_OPTIONS([$1])dnl dnl Diagnose old-style AC_INIT with new-style AM_AUTOMAKE_INIT. m4_if( - m4_ifdef([AC_PACKAGE_NAME], [ok]):m4_ifdef([AC_PACKAGE_VERSION], [ok]), + m4_ifset([AC_PACKAGE_NAME], [ok]):m4_ifset([AC_PACKAGE_VERSION], [ok]), [ok:ok],, [m4_fatal([AC_INIT should be called with package and version arguments])])dnl AC_SUBST([PACKAGE], ['AC_PACKAGE_TARNAME'])dnl @@ -576,6 +580,20 @@ AC_PROVIDE_IFELSE([AC_PROG_OBJCXX], [m4_define([AC_PROG_OBJCXX], m4_defn([AC_PROG_OBJCXX])[_AM_DEPENDENCIES([OBJCXX])])])dnl ]) +# Variables for tags utilities; see am/tags.am +if test -z "$CTAGS"; then + CTAGS=ctags +fi +AC_SUBST([CTAGS]) +if test -z "$ETAGS"; then + ETAGS=etags +fi +AC_SUBST([ETAGS]) +if test -z "$CSCOPE"; then + CSCOPE=cscope +fi +AC_SUBST([CSCOPE]) + AC_REQUIRE([AM_SILENT_RULES])dnl dnl The testsuite driver may need to know about EXEEXT, so add the dnl 'am__EXEEXT' conditional if _AM_COMPILER_EXEEXT was seen. This @@ -657,7 +675,7 @@ for _am_header in $config_headers :; do done echo "timestamp for $_am_arg" >`AS_DIRNAME(["$_am_arg"])`/stamp-h[]$_am_stamp_count]) -# Copyright (C) 2001-2020 Free Software Foundation, Inc. +# Copyright (C) 2001-2021 Free Software Foundation, Inc. # # This file is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, @@ -678,7 +696,7 @@ if test x"${install_sh+set}" != xset; then fi AC_SUBST([install_sh])]) -# Copyright (C) 2003-2020 Free Software Foundation, Inc. +# Copyright (C) 2003-2021 Free Software Foundation, Inc. # # This file is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, @@ -700,7 +718,7 @@ AC_SUBST([am__leading_dot])]) # Add --enable-maintainer-mode option to configure. -*- Autoconf -*- # From Jim Meyering -# Copyright (C) 1996-2020 Free Software Foundation, Inc. +# Copyright (C) 1996-2021 Free Software Foundation, Inc. # # This file is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, @@ -735,7 +753,7 @@ AC_MSG_CHECKING([whether to enable maintainer-specific portions of Makefiles]) # Check to see how 'make' treats includes. -*- Autoconf -*- -# Copyright (C) 2001-2020 Free Software Foundation, Inc. +# Copyright (C) 2001-2021 Free Software Foundation, Inc. # # This file is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, @@ -778,7 +796,7 @@ AC_SUBST([am__quote])]) # Fake the existence of programs that GNU maintainers use. -*- Autoconf -*- -# Copyright (C) 1997-2020 Free Software Foundation, Inc. +# Copyright (C) 1997-2021 Free Software Foundation, Inc. # # This file is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, @@ -812,7 +830,7 @@ fi # Helper functions for option handling. -*- Autoconf -*- -# Copyright (C) 2001-2020 Free Software Foundation, Inc. +# Copyright (C) 2001-2021 Free Software Foundation, Inc. # # This file is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, @@ -841,7 +859,7 @@ AC_DEFUN([_AM_SET_OPTIONS], AC_DEFUN([_AM_IF_OPTION], [m4_ifset(_AM_MANGLE_OPTION([$1]), [$2], [$3])]) -# Copyright (C) 1999-2020 Free Software Foundation, Inc. +# Copyright (C) 1999-2021 Free Software Foundation, Inc. # # This file is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, @@ -888,7 +906,7 @@ AC_LANG_POP([C])]) # For backward compatibility. AC_DEFUN_ONCE([AM_PROG_CC_C_O], [AC_REQUIRE([AC_PROG_CC])]) -# Copyright (C) 2001-2020 Free Software Foundation, Inc. +# Copyright (C) 2001-2021 Free Software Foundation, Inc. # # This file is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, @@ -907,7 +925,7 @@ AC_DEFUN([AM_RUN_LOG], # Check to make sure that the build environment is sane. -*- Autoconf -*- -# Copyright (C) 1996-2020 Free Software Foundation, Inc. +# Copyright (C) 1996-2021 Free Software Foundation, Inc. # # This file is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, @@ -988,7 +1006,7 @@ AC_CONFIG_COMMANDS_PRE( rm -f conftest.file ]) -# Copyright (C) 2009-2020 Free Software Foundation, Inc. +# Copyright (C) 2009-2021 Free Software Foundation, Inc. # # This file is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, @@ -1048,7 +1066,7 @@ AC_SUBST([AM_BACKSLASH])dnl _AM_SUBST_NOTMAKE([AM_BACKSLASH])dnl ]) -# Copyright (C) 2001-2020 Free Software Foundation, Inc. +# Copyright (C) 2001-2021 Free Software Foundation, Inc. # # This file is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, @@ -1076,7 +1094,7 @@ fi INSTALL_STRIP_PROGRAM="\$(install_sh) -c -s" AC_SUBST([INSTALL_STRIP_PROGRAM])]) -# Copyright (C) 2006-2020 Free Software Foundation, Inc. +# Copyright (C) 2006-2021 Free Software Foundation, Inc. # # This file is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, @@ -1095,7 +1113,7 @@ AC_DEFUN([AM_SUBST_NOTMAKE], [_AM_SUBST_NOTMAKE($@)]) # Check how to create a tarball. -*- Autoconf -*- -# Copyright (C) 2004-2020 Free Software Foundation, Inc. +# Copyright (C) 2004-2021 Free Software Foundation, Inc. # # This file is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, diff --git a/apple/ar-lib b/apple/ar-lib index 1e9388e..c349042 100755 --- a/apple/ar-lib +++ b/apple/ar-lib @@ -4,7 +4,7 @@ me=ar-lib scriptversion=2019-07-04.01; # UTC -# Copyright (C) 2010-2020 Free Software Foundation, Inc. +# Copyright (C) 2010-2021 Free Software Foundation, Inc. # Written by Peter Rosin . # # This program is free software; you can redistribute it and/or modify diff --git a/apple/compile b/apple/compile index 23fcba0..df363c8 100755 --- a/apple/compile +++ b/apple/compile @@ -3,7 +3,7 @@ scriptversion=2018-03-07.03; # UTC -# Copyright (C) 1999-2020 Free Software Foundation, Inc. +# Copyright (C) 1999-2021 Free Software Foundation, Inc. # Written by Tom Tromey . # # This program is free software; you can redistribute it and/or modify diff --git a/apple/config.guess b/apple/config.guess index 9aff91c..e81d3ae 100755 --- a/apple/config.guess +++ b/apple/config.guess @@ -1,8 +1,10 @@ #! /bin/sh # Attempt to guess a canonical system name. -# Copyright 1992-2020 Free Software Foundation, Inc. +# Copyright 1992-2021 Free Software Foundation, Inc. -timestamp='2020-08-17' +# shellcheck disable=SC2006,SC2268 # see below for rationale + +timestamp='2021-06-03' # This file is free software; you can redistribute it and/or modify it # under the terms of the GNU General Public License as published by @@ -27,11 +29,19 @@ timestamp='2020-08-17' # Originally written by Per Bothner; maintained since 2000 by Ben Elliston. # # You can get the latest version of this script from: -# https://git.savannah.gnu.org/gitweb/?p=config.git;a=blob_plain;f=config.guess +# https://git.savannah.gnu.org/cgit/config.git/plain/config.guess # # Please send patches to . +# The "shellcheck disable" line above the timestamp inhibits complaints +# about features and limitations of the classic Bourne shell that were +# superseded or lifted in POSIX. However, this script identifies a wide +# variety of pre-POSIX systems that do not have POSIX shells at all, and +# even some reasonably current systems (Solaris 10 as case-in-point) still +# have a pre-POSIX /bin/sh. + + me=`echo "$0" | sed -e 's,.*/,,'` usage="\ @@ -50,7 +60,7 @@ version="\ GNU config.guess ($timestamp) Originally written by Per Bothner. -Copyright 1992-2020 Free Software Foundation, Inc. +Copyright 1992-2021 Free Software Foundation, Inc. This is free software; see the source for copying conditions. There is NO warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE." @@ -84,6 +94,9 @@ if test $# != 0; then exit 1 fi +# Just in case it came from the environment. +GUESS= + # CC_FOR_BUILD -- compiler used by this script. Note that the use of a # compiler to aid in system detection is discouraged as it requires # temporary files to be created and, as you can see below, it is a @@ -102,7 +115,7 @@ set_cc_for_build() { # prevent multiple calls if $tmp is already set test "$tmp" && return 0 : "${TMPDIR=/tmp}" - # shellcheck disable=SC2039 + # shellcheck disable=SC2039,SC3028 { tmp=`(umask 077 && mktemp -d "$TMPDIR/cgXXXXXX") 2>/dev/null` && test -n "$tmp" && test -d "$tmp" ; } || { test -n "$RANDOM" && tmp=$TMPDIR/cg$$-$RANDOM && (umask 077 && mkdir "$tmp" 2>/dev/null) ; } || { tmp=$TMPDIR/cg-$$ && (umask 077 && mkdir "$tmp" 2>/dev/null) && echo "Warning: creating insecure temp directory" >&2 ; } || @@ -112,7 +125,7 @@ set_cc_for_build() { ,,) echo "int x;" > "$dummy.c" for driver in cc gcc c89 c99 ; do if ($driver -c -o "$dummy.o" "$dummy.c") >/dev/null 2>&1 ; then - CC_FOR_BUILD="$driver" + CC_FOR_BUILD=$driver break fi done @@ -133,14 +146,12 @@ fi UNAME_MACHINE=`(uname -m) 2>/dev/null` || UNAME_MACHINE=unknown UNAME_RELEASE=`(uname -r) 2>/dev/null` || UNAME_RELEASE=unknown -UNAME_SYSTEM=`(uname -s) 2>/dev/null` || UNAME_SYSTEM=unknown +UNAME_SYSTEM=`(uname -s) 2>/dev/null` || UNAME_SYSTEM=unknown UNAME_VERSION=`(uname -v) 2>/dev/null` || UNAME_VERSION=unknown -case "$UNAME_SYSTEM" in +case $UNAME_SYSTEM in Linux|GNU|GNU/*) - # If the system lacks a compiler, then just pick glibc. - # We could probably try harder. - LIBC=gnu + LIBC=unknown set_cc_for_build cat <<-EOF > "$dummy.c" @@ -149,24 +160,37 @@ Linux|GNU|GNU/*) LIBC=uclibc #elif defined(__dietlibc__) LIBC=dietlibc - #else + #elif defined(__GLIBC__) LIBC=gnu + #else + #include + /* First heuristic to detect musl libc. */ + #ifdef __DEFINED_va_list + LIBC=musl + #endif #endif EOF - eval "`$CC_FOR_BUILD -E "$dummy.c" 2>/dev/null | grep '^LIBC' | sed 's, ,,g'`" + cc_set_libc=`$CC_FOR_BUILD -E "$dummy.c" 2>/dev/null | grep '^LIBC' | sed 's, ,,g'` + eval "$cc_set_libc" - # If ldd exists, use it to detect musl libc. - if command -v ldd >/dev/null && \ - ldd --version 2>&1 | grep -q ^musl - then - LIBC=musl + # Second heuristic to detect musl libc. + if [ "$LIBC" = unknown ] && + command -v ldd >/dev/null && + ldd --version 2>&1 | grep -q ^musl; then + LIBC=musl + fi + + # If the system lacks a compiler, then just pick glibc. + # We could probably try harder. + if [ "$LIBC" = unknown ]; then + LIBC=gnu fi ;; esac # Note: order is significant - the case branches are not exclusive. -case "$UNAME_MACHINE:$UNAME_SYSTEM:$UNAME_RELEASE:$UNAME_VERSION" in +case $UNAME_MACHINE:$UNAME_SYSTEM:$UNAME_RELEASE:$UNAME_VERSION in *:NetBSD:*:*) # NetBSD (nbsd) targets should (where applicable) match one or # more of the tuples: *-*-netbsdelf*, *-*-netbsdaout*, @@ -178,12 +202,12 @@ case "$UNAME_MACHINE:$UNAME_SYSTEM:$UNAME_RELEASE:$UNAME_VERSION" in # # Note: NetBSD doesn't particularly care about the vendor # portion of the name. We always set it to "unknown". - sysctl="sysctl -n hw.machine_arch" UNAME_MACHINE_ARCH=`(uname -p 2>/dev/null || \ - "/sbin/$sysctl" 2>/dev/null || \ - "/usr/sbin/$sysctl" 2>/dev/null || \ + /sbin/sysctl -n hw.machine_arch 2>/dev/null || \ + /usr/sbin/sysctl -n hw.machine_arch 2>/dev/null || \ echo unknown)` - case "$UNAME_MACHINE_ARCH" in + case $UNAME_MACHINE_ARCH in + aarch64eb) machine=aarch64_be-unknown ;; armeb) machine=armeb-unknown ;; arm*) machine=arm-unknown ;; sh3el) machine=shl-unknown ;; @@ -192,13 +216,13 @@ case "$UNAME_MACHINE:$UNAME_SYSTEM:$UNAME_RELEASE:$UNAME_VERSION" in earmv*) arch=`echo "$UNAME_MACHINE_ARCH" | sed -e 's,^e\(armv[0-9]\).*$,\1,'` endian=`echo "$UNAME_MACHINE_ARCH" | sed -ne 's,^.*\(eb\)$,\1,p'` - machine="${arch}${endian}"-unknown + machine=${arch}${endian}-unknown ;; - *) machine="$UNAME_MACHINE_ARCH"-unknown ;; + *) machine=$UNAME_MACHINE_ARCH-unknown ;; esac # The Operating System including object format, if it has switched # to ELF recently (or will in the future) and ABI. - case "$UNAME_MACHINE_ARCH" in + case $UNAME_MACHINE_ARCH in earm*) os=netbsdelf ;; @@ -219,7 +243,7 @@ case "$UNAME_MACHINE:$UNAME_SYSTEM:$UNAME_RELEASE:$UNAME_VERSION" in ;; esac # Determine ABI tags. - case "$UNAME_MACHINE_ARCH" in + case $UNAME_MACHINE_ARCH in earm*) expr='s/^earmv[0-9]/-eabi/;s/eb$//' abi=`echo "$UNAME_MACHINE_ARCH" | sed -e "$expr"` @@ -230,7 +254,7 @@ case "$UNAME_MACHINE:$UNAME_SYSTEM:$UNAME_RELEASE:$UNAME_VERSION" in # thus, need a distinct triplet. However, they do not need # kernel version information, so it can be replaced with a # suitable tag, in the style of linux-gnu. - case "$UNAME_VERSION" in + case $UNAME_VERSION in Debian*) release='-gnu' ;; @@ -241,51 +265,57 @@ case "$UNAME_MACHINE:$UNAME_SYSTEM:$UNAME_RELEASE:$UNAME_VERSION" in # Since CPU_TYPE-MANUFACTURER-KERNEL-OPERATING_SYSTEM: # contains redundant information, the shorter form: # CPU_TYPE-MANUFACTURER-OPERATING_SYSTEM is used. - echo "$machine-${os}${release}${abi-}" - exit ;; + GUESS=$machine-${os}${release}${abi-} + ;; *:Bitrig:*:*) UNAME_MACHINE_ARCH=`arch | sed 's/Bitrig.//'` - echo "$UNAME_MACHINE_ARCH"-unknown-bitrig"$UNAME_RELEASE" - exit ;; + GUESS=$UNAME_MACHINE_ARCH-unknown-bitrig$UNAME_RELEASE + ;; *:OpenBSD:*:*) UNAME_MACHINE_ARCH=`arch | sed 's/OpenBSD.//'` - echo "$UNAME_MACHINE_ARCH"-unknown-openbsd"$UNAME_RELEASE" - exit ;; + GUESS=$UNAME_MACHINE_ARCH-unknown-openbsd$UNAME_RELEASE + ;; + *:SecBSD:*:*) + UNAME_MACHINE_ARCH=`arch | sed 's/SecBSD.//'` + GUESS=$UNAME_MACHINE_ARCH-unknown-secbsd$UNAME_RELEASE + ;; *:LibertyBSD:*:*) UNAME_MACHINE_ARCH=`arch | sed 's/^.*BSD\.//'` - echo "$UNAME_MACHINE_ARCH"-unknown-libertybsd"$UNAME_RELEASE" - exit ;; + GUESS=$UNAME_MACHINE_ARCH-unknown-libertybsd$UNAME_RELEASE + ;; *:MidnightBSD:*:*) - echo "$UNAME_MACHINE"-unknown-midnightbsd"$UNAME_RELEASE" - exit ;; + GUESS=$UNAME_MACHINE-unknown-midnightbsd$UNAME_RELEASE + ;; *:ekkoBSD:*:*) - echo "$UNAME_MACHINE"-unknown-ekkobsd"$UNAME_RELEASE" - exit ;; + GUESS=$UNAME_MACHINE-unknown-ekkobsd$UNAME_RELEASE + ;; *:SolidBSD:*:*) - echo "$UNAME_MACHINE"-unknown-solidbsd"$UNAME_RELEASE" - exit ;; + GUESS=$UNAME_MACHINE-unknown-solidbsd$UNAME_RELEASE + ;; *:OS108:*:*) - echo "$UNAME_MACHINE"-unknown-os108_"$UNAME_RELEASE" - exit ;; + GUESS=$UNAME_MACHINE-unknown-os108_$UNAME_RELEASE + ;; macppc:MirBSD:*:*) - echo powerpc-unknown-mirbsd"$UNAME_RELEASE" - exit ;; + GUESS=powerpc-unknown-mirbsd$UNAME_RELEASE + ;; *:MirBSD:*:*) - echo "$UNAME_MACHINE"-unknown-mirbsd"$UNAME_RELEASE" - exit ;; + GUESS=$UNAME_MACHINE-unknown-mirbsd$UNAME_RELEASE + ;; *:Sortix:*:*) - echo "$UNAME_MACHINE"-unknown-sortix - exit ;; + GUESS=$UNAME_MACHINE-unknown-sortix + ;; *:Twizzler:*:*) - echo "$UNAME_MACHINE"-unknown-twizzler - exit ;; + GUESS=$UNAME_MACHINE-unknown-twizzler + ;; *:Redox:*:*) - echo "$UNAME_MACHINE"-unknown-redox - exit ;; + GUESS=$UNAME_MACHINE-unknown-redox + ;; mips:OSF1:*.*) - echo mips-dec-osf1 - exit ;; + GUESS=mips-dec-osf1 + ;; alpha:OSF1:*:*) + # Reset EXIT trap before exiting to avoid spurious non-zero exit code. + trap '' 0 case $UNAME_RELEASE in *4.0) UNAME_RELEASE=`/usr/sbin/sizer -v | awk '{print $3}'` @@ -299,7 +329,7 @@ case "$UNAME_MACHINE:$UNAME_SYSTEM:$UNAME_RELEASE:$UNAME_VERSION" in # covers most systems running today. This code pipes the CPU # types through head -n 1, so we only detect the type of CPU 0. ALPHA_CPU_TYPE=`/usr/sbin/psrinfo -v | sed -n -e 's/^ The alpha \(.*\) processor.*$/\1/p' | head -n 1` - case "$ALPHA_CPU_TYPE" in + case $ALPHA_CPU_TYPE in "EV4 (21064)") UNAME_MACHINE=alpha ;; "EV4.5 (21064)") @@ -336,68 +366,69 @@ case "$UNAME_MACHINE:$UNAME_SYSTEM:$UNAME_RELEASE:$UNAME_VERSION" in # A Tn.n version is a released field test version. # A Xn.n version is an unreleased experimental baselevel. # 1.2 uses "1.2" for uname -r. - echo "$UNAME_MACHINE"-dec-osf"`echo "$UNAME_RELEASE" | sed -e 's/^[PVTX]//' | tr ABCDEFGHIJKLMNOPQRSTUVWXYZ abcdefghijklmnopqrstuvwxyz`" - # Reset EXIT trap before exiting to avoid spurious non-zero exit code. - exitcode=$? - trap '' 0 - exit $exitcode ;; + OSF_REL=`echo "$UNAME_RELEASE" | sed -e 's/^[PVTX]//' | tr ABCDEFGHIJKLMNOPQRSTUVWXYZ abcdefghijklmnopqrstuvwxyz` + GUESS=$UNAME_MACHINE-dec-osf$OSF_REL + ;; Amiga*:UNIX_System_V:4.0:*) - echo m68k-unknown-sysv4 - exit ;; + GUESS=m68k-unknown-sysv4 + ;; *:[Aa]miga[Oo][Ss]:*:*) - echo "$UNAME_MACHINE"-unknown-amigaos - exit ;; + GUESS=$UNAME_MACHINE-unknown-amigaos + ;; *:[Mm]orph[Oo][Ss]:*:*) - echo "$UNAME_MACHINE"-unknown-morphos - exit ;; + GUESS=$UNAME_MACHINE-unknown-morphos + ;; *:OS/390:*:*) - echo i370-ibm-openedition - exit ;; + GUESS=i370-ibm-openedition + ;; *:z/VM:*:*) - echo s390-ibm-zvmoe - exit ;; + GUESS=s390-ibm-zvmoe + ;; *:OS400:*:*) - echo powerpc-ibm-os400 - exit ;; + GUESS=powerpc-ibm-os400 + ;; arm:RISC*:1.[012]*:*|arm:riscix:1.[012]*:*) - echo arm-acorn-riscix"$UNAME_RELEASE" - exit ;; + GUESS=arm-acorn-riscix$UNAME_RELEASE + ;; arm*:riscos:*:*|arm*:RISCOS:*:*) - echo arm-unknown-riscos - exit ;; + GUESS=arm-unknown-riscos + ;; SR2?01:HI-UX/MPP:*:* | SR8000:HI-UX/MPP:*:*) - echo hppa1.1-hitachi-hiuxmpp - exit ;; + GUESS=hppa1.1-hitachi-hiuxmpp + ;; Pyramid*:OSx*:*:* | MIS*:OSx*:*:* | MIS*:SMP_DC-OSx*:*:*) # akee@wpdis03.wpafb.af.mil (Earle F. Ake) contributed MIS and NILE. - if test "`(/bin/universe) 2>/dev/null`" = att ; then - echo pyramid-pyramid-sysv3 - else - echo pyramid-pyramid-bsd - fi - exit ;; + case `(/bin/universe) 2>/dev/null` in + att) GUESS=pyramid-pyramid-sysv3 ;; + *) GUESS=pyramid-pyramid-bsd ;; + esac + ;; NILE*:*:*:dcosx) - echo pyramid-pyramid-svr4 - exit ;; + GUESS=pyramid-pyramid-svr4 + ;; DRS?6000:unix:4.0:6*) - echo sparc-icl-nx6 - exit ;; + GUESS=sparc-icl-nx6 + ;; DRS?6000:UNIX_SV:4.2*:7* | DRS?6000:isis:4.2*:7*) case `/usr/bin/uname -p` in - sparc) echo sparc-icl-nx7; exit ;; - esac ;; + sparc) GUESS=sparc-icl-nx7 ;; + esac + ;; s390x:SunOS:*:*) - echo "$UNAME_MACHINE"-ibm-solaris2"`echo "$UNAME_RELEASE" | sed -e 's/[^.]*//'`" - exit ;; + SUN_REL=`echo "$UNAME_RELEASE" | sed -e 's/[^.]*//'` + GUESS=$UNAME_MACHINE-ibm-solaris2$SUN_REL + ;; sun4H:SunOS:5.*:*) - echo sparc-hal-solaris2"`echo "$UNAME_RELEASE"|sed -e 's/[^.]*//'`" - exit ;; + SUN_REL=`echo "$UNAME_RELEASE" | sed -e 's/[^.]*//'` + GUESS=sparc-hal-solaris2$SUN_REL + ;; sun4*:SunOS:5.*:* | tadpole*:SunOS:5.*:*) - echo sparc-sun-solaris2"`echo "$UNAME_RELEASE" | sed -e 's/[^.]*//'`" - exit ;; + SUN_REL=`echo "$UNAME_RELEASE" | sed -e 's/[^.]*//'` + GUESS=sparc-sun-solaris2$SUN_REL + ;; i86pc:AuroraUX:5.*:* | i86xen:AuroraUX:5.*:*) - echo i386-pc-auroraux"$UNAME_RELEASE" - exit ;; + GUESS=i386-pc-auroraux$UNAME_RELEASE + ;; i86pc:SunOS:5.*:* | i86xen:SunOS:5.*:*) set_cc_for_build SUN_ARCH=i386 @@ -412,41 +443,44 @@ case "$UNAME_MACHINE:$UNAME_SYSTEM:$UNAME_RELEASE:$UNAME_VERSION" in SUN_ARCH=x86_64 fi fi - echo "$SUN_ARCH"-pc-solaris2"`echo "$UNAME_RELEASE"|sed -e 's/[^.]*//'`" - exit ;; + SUN_REL=`echo "$UNAME_RELEASE" | sed -e 's/[^.]*//'` + GUESS=$SUN_ARCH-pc-solaris2$SUN_REL + ;; sun4*:SunOS:6*:*) # According to config.sub, this is the proper way to canonicalize # SunOS6. Hard to guess exactly what SunOS6 will be like, but # it's likely to be more like Solaris than SunOS4. - echo sparc-sun-solaris3"`echo "$UNAME_RELEASE"|sed -e 's/[^.]*//'`" - exit ;; + SUN_REL=`echo "$UNAME_RELEASE" | sed -e 's/[^.]*//'` + GUESS=sparc-sun-solaris3$SUN_REL + ;; sun4*:SunOS:*:*) - case "`/usr/bin/arch -k`" in + case `/usr/bin/arch -k` in Series*|S4*) UNAME_RELEASE=`uname -v` ;; esac # Japanese Language versions have a version number like `4.1.3-JL'. - echo sparc-sun-sunos"`echo "$UNAME_RELEASE"|sed -e 's/-/_/'`" - exit ;; + SUN_REL=`echo "$UNAME_RELEASE" | sed -e 's/-/_/'` + GUESS=sparc-sun-sunos$SUN_REL + ;; sun3*:SunOS:*:*) - echo m68k-sun-sunos"$UNAME_RELEASE" - exit ;; + GUESS=m68k-sun-sunos$UNAME_RELEASE + ;; sun*:*:4.2BSD:*) UNAME_RELEASE=`(sed 1q /etc/motd | awk '{print substr($5,1,3)}') 2>/dev/null` test "x$UNAME_RELEASE" = x && UNAME_RELEASE=3 - case "`/bin/arch`" in + case `/bin/arch` in sun3) - echo m68k-sun-sunos"$UNAME_RELEASE" + GUESS=m68k-sun-sunos$UNAME_RELEASE ;; sun4) - echo sparc-sun-sunos"$UNAME_RELEASE" + GUESS=sparc-sun-sunos$UNAME_RELEASE ;; esac - exit ;; + ;; aushp:SunOS:*:*) - echo sparc-auspex-sunos"$UNAME_RELEASE" - exit ;; + GUESS=sparc-auspex-sunos$UNAME_RELEASE + ;; # The situation for MiNT is a little confusing. The machine name # can be virtually everything (everything which is not # "atarist" or "atariste" at least should have a processor @@ -456,41 +490,41 @@ case "$UNAME_MACHINE:$UNAME_SYSTEM:$UNAME_RELEASE:$UNAME_VERSION" in # MiNT. But MiNT is downward compatible to TOS, so this should # be no problem. atarist[e]:*MiNT:*:* | atarist[e]:*mint:*:* | atarist[e]:*TOS:*:*) - echo m68k-atari-mint"$UNAME_RELEASE" - exit ;; + GUESS=m68k-atari-mint$UNAME_RELEASE + ;; atari*:*MiNT:*:* | atari*:*mint:*:* | atarist[e]:*TOS:*:*) - echo m68k-atari-mint"$UNAME_RELEASE" - exit ;; + GUESS=m68k-atari-mint$UNAME_RELEASE + ;; *falcon*:*MiNT:*:* | *falcon*:*mint:*:* | *falcon*:*TOS:*:*) - echo m68k-atari-mint"$UNAME_RELEASE" - exit ;; + GUESS=m68k-atari-mint$UNAME_RELEASE + ;; milan*:*MiNT:*:* | milan*:*mint:*:* | *milan*:*TOS:*:*) - echo m68k-milan-mint"$UNAME_RELEASE" - exit ;; + GUESS=m68k-milan-mint$UNAME_RELEASE + ;; hades*:*MiNT:*:* | hades*:*mint:*:* | *hades*:*TOS:*:*) - echo m68k-hades-mint"$UNAME_RELEASE" - exit ;; + GUESS=m68k-hades-mint$UNAME_RELEASE + ;; *:*MiNT:*:* | *:*mint:*:* | *:*TOS:*:*) - echo m68k-unknown-mint"$UNAME_RELEASE" - exit ;; + GUESS=m68k-unknown-mint$UNAME_RELEASE + ;; m68k:machten:*:*) - echo m68k-apple-machten"$UNAME_RELEASE" - exit ;; + GUESS=m68k-apple-machten$UNAME_RELEASE + ;; powerpc:machten:*:*) - echo powerpc-apple-machten"$UNAME_RELEASE" - exit ;; + GUESS=powerpc-apple-machten$UNAME_RELEASE + ;; RISC*:Mach:*:*) - echo mips-dec-mach_bsd4.3 - exit ;; + GUESS=mips-dec-mach_bsd4.3 + ;; RISC*:ULTRIX:*:*) - echo mips-dec-ultrix"$UNAME_RELEASE" - exit ;; + GUESS=mips-dec-ultrix$UNAME_RELEASE + ;; VAX*:ULTRIX*:*:*) - echo vax-dec-ultrix"$UNAME_RELEASE" - exit ;; + GUESS=vax-dec-ultrix$UNAME_RELEASE + ;; 2020:CLIX:*:* | 2430:CLIX:*:*) - echo clipper-intergraph-clix"$UNAME_RELEASE" - exit ;; + GUESS=clipper-intergraph-clix$UNAME_RELEASE + ;; mips:*:*:UMIPS | mips:*:*:RISCos) set_cc_for_build sed 's/^ //' << EOF > "$dummy.c" @@ -518,29 +552,29 @@ EOF dummyarg=`echo "$UNAME_RELEASE" | sed -n 's/\([0-9]*\).*/\1/p'` && SYSTEM_NAME=`"$dummy" "$dummyarg"` && { echo "$SYSTEM_NAME"; exit; } - echo mips-mips-riscos"$UNAME_RELEASE" - exit ;; + GUESS=mips-mips-riscos$UNAME_RELEASE + ;; Motorola:PowerMAX_OS:*:*) - echo powerpc-motorola-powermax - exit ;; + GUESS=powerpc-motorola-powermax + ;; Motorola:*:4.3:PL8-*) - echo powerpc-harris-powermax - exit ;; + GUESS=powerpc-harris-powermax + ;; Night_Hawk:*:*:PowerMAX_OS | Synergy:PowerMAX_OS:*:*) - echo powerpc-harris-powermax - exit ;; + GUESS=powerpc-harris-powermax + ;; Night_Hawk:Power_UNIX:*:*) - echo powerpc-harris-powerunix - exit ;; + GUESS=powerpc-harris-powerunix + ;; m88k:CX/UX:7*:*) - echo m88k-harris-cxux7 - exit ;; + GUESS=m88k-harris-cxux7 + ;; m88k:*:4*:R4*) - echo m88k-motorola-sysv4 - exit ;; + GUESS=m88k-motorola-sysv4 + ;; m88k:*:3*:R3*) - echo m88k-motorola-sysv3 - exit ;; + GUESS=m88k-motorola-sysv3 + ;; AViiON:dgux:*:*) # DG/UX returns AViiON for all architectures UNAME_PROCESSOR=`/usr/bin/uname -p` @@ -549,44 +583,45 @@ EOF if test "$TARGET_BINARY_INTERFACE"x = m88kdguxelfx || \ test "$TARGET_BINARY_INTERFACE"x = x then - echo m88k-dg-dgux"$UNAME_RELEASE" + GUESS=m88k-dg-dgux$UNAME_RELEASE else - echo m88k-dg-dguxbcs"$UNAME_RELEASE" + GUESS=m88k-dg-dguxbcs$UNAME_RELEASE fi else - echo i586-dg-dgux"$UNAME_RELEASE" + GUESS=i586-dg-dgux$UNAME_RELEASE fi - exit ;; + ;; M88*:DolphinOS:*:*) # DolphinOS (SVR3) - echo m88k-dolphin-sysv3 - exit ;; + GUESS=m88k-dolphin-sysv3 + ;; M88*:*:R3*:*) # Delta 88k system running SVR3 - echo m88k-motorola-sysv3 - exit ;; + GUESS=m88k-motorola-sysv3 + ;; XD88*:*:*:*) # Tektronix XD88 system running UTekV (SVR3) - echo m88k-tektronix-sysv3 - exit ;; + GUESS=m88k-tektronix-sysv3 + ;; Tek43[0-9][0-9]:UTek:*:*) # Tektronix 4300 system running UTek (BSD) - echo m68k-tektronix-bsd - exit ;; + GUESS=m68k-tektronix-bsd + ;; *:IRIX*:*:*) - echo mips-sgi-irix"`echo "$UNAME_RELEASE"|sed -e 's/-/_/g'`" - exit ;; + IRIX_REL=`echo "$UNAME_RELEASE" | sed -e 's/-/_/g'` + GUESS=mips-sgi-irix$IRIX_REL + ;; ????????:AIX?:[12].1:2) # AIX 2.2.1 or AIX 2.1.1 is RT/PC AIX. - echo romp-ibm-aix # uname -m gives an 8 hex-code CPU id - exit ;; # Note that: echo "'`uname -s`'" gives 'AIX ' + GUESS=romp-ibm-aix # uname -m gives an 8 hex-code CPU id + ;; # Note that: echo "'`uname -s`'" gives 'AIX ' i*86:AIX:*:*) - echo i386-ibm-aix - exit ;; + GUESS=i386-ibm-aix + ;; ia64:AIX:*:*) if test -x /usr/bin/oslevel ; then IBM_REV=`/usr/bin/oslevel` else - IBM_REV="$UNAME_VERSION.$UNAME_RELEASE" + IBM_REV=$UNAME_VERSION.$UNAME_RELEASE fi - echo "$UNAME_MACHINE"-ibm-aix"$IBM_REV" - exit ;; + GUESS=$UNAME_MACHINE-ibm-aix$IBM_REV + ;; *:AIX:2:3) if grep bos325 /usr/include/stdio.h >/dev/null 2>&1; then set_cc_for_build @@ -603,16 +638,16 @@ EOF EOF if $CC_FOR_BUILD -o "$dummy" "$dummy.c" && SYSTEM_NAME=`"$dummy"` then - echo "$SYSTEM_NAME" + GUESS=$SYSTEM_NAME else - echo rs6000-ibm-aix3.2.5 + GUESS=rs6000-ibm-aix3.2.5 fi elif grep bos324 /usr/include/stdio.h >/dev/null 2>&1; then - echo rs6000-ibm-aix3.2.4 + GUESS=rs6000-ibm-aix3.2.4 else - echo rs6000-ibm-aix3.2 + GUESS=rs6000-ibm-aix3.2 fi - exit ;; + ;; *:AIX:*:[4567]) IBM_CPU_ID=`/usr/sbin/lsdev -C -c processor -S available | sed 1q | awk '{ print $1 }'` if /usr/sbin/lsattr -El "$IBM_CPU_ID" | grep ' POWER' >/dev/null 2>&1; then @@ -621,48 +656,48 @@ EOF IBM_ARCH=powerpc fi if test -x /usr/bin/lslpp ; then - IBM_REV=`/usr/bin/lslpp -Lqc bos.rte.libc | + IBM_REV=`/usr/bin/lslpp -Lqc bos.rte.libc | \ awk -F: '{ print $3 }' | sed s/[0-9]*$/0/` else - IBM_REV="$UNAME_VERSION.$UNAME_RELEASE" + IBM_REV=$UNAME_VERSION.$UNAME_RELEASE fi - echo "$IBM_ARCH"-ibm-aix"$IBM_REV" - exit ;; + GUESS=$IBM_ARCH-ibm-aix$IBM_REV + ;; *:AIX:*:*) - echo rs6000-ibm-aix - exit ;; + GUESS=rs6000-ibm-aix + ;; ibmrt:4.4BSD:*|romp-ibm:4.4BSD:*) - echo romp-ibm-bsd4.4 - exit ;; + GUESS=romp-ibm-bsd4.4 + ;; ibmrt:*BSD:*|romp-ibm:BSD:*) # covers RT/PC BSD and - echo romp-ibm-bsd"$UNAME_RELEASE" # 4.3 with uname added to - exit ;; # report: romp-ibm BSD 4.3 + GUESS=romp-ibm-bsd$UNAME_RELEASE # 4.3 with uname added to + ;; # report: romp-ibm BSD 4.3 *:BOSX:*:*) - echo rs6000-bull-bosx - exit ;; + GUESS=rs6000-bull-bosx + ;; DPX/2?00:B.O.S.:*:*) - echo m68k-bull-sysv3 - exit ;; + GUESS=m68k-bull-sysv3 + ;; 9000/[34]??:4.3bsd:1.*:*) - echo m68k-hp-bsd - exit ;; + GUESS=m68k-hp-bsd + ;; hp300:4.4BSD:*:* | 9000/[34]??:4.3bsd:2.*:*) - echo m68k-hp-bsd4.4 - exit ;; + GUESS=m68k-hp-bsd4.4 + ;; 9000/[34678]??:HP-UX:*:*) - HPUX_REV=`echo "$UNAME_RELEASE"|sed -e 's/[^.]*.[0B]*//'` - case "$UNAME_MACHINE" in + HPUX_REV=`echo "$UNAME_RELEASE" | sed -e 's/[^.]*.[0B]*//'` + case $UNAME_MACHINE in 9000/31?) HP_ARCH=m68000 ;; 9000/[34]??) HP_ARCH=m68k ;; 9000/[678][0-9][0-9]) if test -x /usr/bin/getconf; then sc_cpu_version=`/usr/bin/getconf SC_CPU_VERSION 2>/dev/null` sc_kernel_bits=`/usr/bin/getconf SC_KERNEL_BITS 2>/dev/null` - case "$sc_cpu_version" in + case $sc_cpu_version in 523) HP_ARCH=hppa1.0 ;; # CPU_PA_RISC1_0 528) HP_ARCH=hppa1.1 ;; # CPU_PA_RISC1_1 532) # CPU_PA_RISC2_0 - case "$sc_kernel_bits" in + case $sc_kernel_bits in 32) HP_ARCH=hppa2.0n ;; 64) HP_ARCH=hppa2.0w ;; '') HP_ARCH=hppa2.0 ;; # HP-UX 10.20 @@ -729,12 +764,12 @@ EOF HP_ARCH=hppa64 fi fi - echo "$HP_ARCH"-hp-hpux"$HPUX_REV" - exit ;; + GUESS=$HP_ARCH-hp-hpux$HPUX_REV + ;; ia64:HP-UX:*:*) - HPUX_REV=`echo "$UNAME_RELEASE"|sed -e 's/[^.]*.[0B]*//'` - echo ia64-hp-hpux"$HPUX_REV" - exit ;; + HPUX_REV=`echo "$UNAME_RELEASE" | sed -e 's/[^.]*.[0B]*//'` + GUESS=ia64-hp-hpux$HPUX_REV + ;; 3050*:HI-UX:*:*) set_cc_for_build sed 's/^ //' << EOF > "$dummy.c" @@ -764,36 +799,36 @@ EOF EOF $CC_FOR_BUILD -o "$dummy" "$dummy.c" && SYSTEM_NAME=`"$dummy"` && { echo "$SYSTEM_NAME"; exit; } - echo unknown-hitachi-hiuxwe2 - exit ;; + GUESS=unknown-hitachi-hiuxwe2 + ;; 9000/7??:4.3bsd:*:* | 9000/8?[79]:4.3bsd:*:*) - echo hppa1.1-hp-bsd - exit ;; + GUESS=hppa1.1-hp-bsd + ;; 9000/8??:4.3bsd:*:*) - echo hppa1.0-hp-bsd - exit ;; + GUESS=hppa1.0-hp-bsd + ;; *9??*:MPE/iX:*:* | *3000*:MPE/iX:*:*) - echo hppa1.0-hp-mpeix - exit ;; + GUESS=hppa1.0-hp-mpeix + ;; hp7??:OSF1:*:* | hp8?[79]:OSF1:*:*) - echo hppa1.1-hp-osf - exit ;; + GUESS=hppa1.1-hp-osf + ;; hp8??:OSF1:*:*) - echo hppa1.0-hp-osf - exit ;; + GUESS=hppa1.0-hp-osf + ;; i*86:OSF1:*:*) if test -x /usr/sbin/sysversion ; then - echo "$UNAME_MACHINE"-unknown-osf1mk + GUESS=$UNAME_MACHINE-unknown-osf1mk else - echo "$UNAME_MACHINE"-unknown-osf1 + GUESS=$UNAME_MACHINE-unknown-osf1 fi - exit ;; + ;; parisc*:Lites*:*:*) - echo hppa1.1-hp-lites - exit ;; + GUESS=hppa1.1-hp-lites + ;; C1*:ConvexOS:*:* | convex:ConvexOS:C1*:*) - echo c1-convex-bsd - exit ;; + GUESS=c1-convex-bsd + ;; C2*:ConvexOS:*:* | convex:ConvexOS:C2*:*) if getsysinfo -f scalar_acc then echo c32-convex-bsd @@ -801,17 +836,18 @@ EOF fi exit ;; C34*:ConvexOS:*:* | convex:ConvexOS:C34*:*) - echo c34-convex-bsd - exit ;; + GUESS=c34-convex-bsd + ;; C38*:ConvexOS:*:* | convex:ConvexOS:C38*:*) - echo c38-convex-bsd - exit ;; + GUESS=c38-convex-bsd + ;; C4*:ConvexOS:*:* | convex:ConvexOS:C4*:*) - echo c4-convex-bsd - exit ;; + GUESS=c4-convex-bsd + ;; CRAY*Y-MP:*:*:*) - echo ymp-cray-unicos"$UNAME_RELEASE" | sed -e 's/\.[^.]*$/.X/' - exit ;; + CRAY_REL=`echo "$UNAME_RELEASE" | sed -e 's/\.[^.]*$/.X/'` + GUESS=ymp-cray-unicos$CRAY_REL + ;; CRAY*[A-Z]90:*:*:*) echo "$UNAME_MACHINE"-cray-unicos"$UNAME_RELEASE" \ | sed -e 's/CRAY.*\([A-Z]90\)/\1/' \ @@ -819,112 +855,124 @@ EOF -e 's/\.[^.]*$/.X/' exit ;; CRAY*TS:*:*:*) - echo t90-cray-unicos"$UNAME_RELEASE" | sed -e 's/\.[^.]*$/.X/' - exit ;; + CRAY_REL=`echo "$UNAME_RELEASE" | sed -e 's/\.[^.]*$/.X/'` + GUESS=t90-cray-unicos$CRAY_REL + ;; CRAY*T3E:*:*:*) - echo alphaev5-cray-unicosmk"$UNAME_RELEASE" | sed -e 's/\.[^.]*$/.X/' - exit ;; + CRAY_REL=`echo "$UNAME_RELEASE" | sed -e 's/\.[^.]*$/.X/'` + GUESS=alphaev5-cray-unicosmk$CRAY_REL + ;; CRAY*SV1:*:*:*) - echo sv1-cray-unicos"$UNAME_RELEASE" | sed -e 's/\.[^.]*$/.X/' - exit ;; + CRAY_REL=`echo "$UNAME_RELEASE" | sed -e 's/\.[^.]*$/.X/'` + GUESS=sv1-cray-unicos$CRAY_REL + ;; *:UNICOS/mp:*:*) - echo craynv-cray-unicosmp"$UNAME_RELEASE" | sed -e 's/\.[^.]*$/.X/' - exit ;; + CRAY_REL=`echo "$UNAME_RELEASE" | sed -e 's/\.[^.]*$/.X/'` + GUESS=craynv-cray-unicosmp$CRAY_REL + ;; F30[01]:UNIX_System_V:*:* | F700:UNIX_System_V:*:*) FUJITSU_PROC=`uname -m | tr ABCDEFGHIJKLMNOPQRSTUVWXYZ abcdefghijklmnopqrstuvwxyz` FUJITSU_SYS=`uname -p | tr ABCDEFGHIJKLMNOPQRSTUVWXYZ abcdefghijklmnopqrstuvwxyz | sed -e 's/\///'` FUJITSU_REL=`echo "$UNAME_RELEASE" | sed -e 's/ /_/'` - echo "${FUJITSU_PROC}-fujitsu-${FUJITSU_SYS}${FUJITSU_REL}" - exit ;; + GUESS=${FUJITSU_PROC}-fujitsu-${FUJITSU_SYS}${FUJITSU_REL} + ;; 5000:UNIX_System_V:4.*:*) FUJITSU_SYS=`uname -p | tr ABCDEFGHIJKLMNOPQRSTUVWXYZ abcdefghijklmnopqrstuvwxyz | sed -e 's/\///'` FUJITSU_REL=`echo "$UNAME_RELEASE" | tr ABCDEFGHIJKLMNOPQRSTUVWXYZ abcdefghijklmnopqrstuvwxyz | sed -e 's/ /_/'` - echo "sparc-fujitsu-${FUJITSU_SYS}${FUJITSU_REL}" - exit ;; + GUESS=sparc-fujitsu-${FUJITSU_SYS}${FUJITSU_REL} + ;; i*86:BSD/386:*:* | i*86:BSD/OS:*:* | *:Ascend\ Embedded/OS:*:*) - echo "$UNAME_MACHINE"-pc-bsdi"$UNAME_RELEASE" - exit ;; + GUESS=$UNAME_MACHINE-pc-bsdi$UNAME_RELEASE + ;; sparc*:BSD/OS:*:*) - echo sparc-unknown-bsdi"$UNAME_RELEASE" - exit ;; + GUESS=sparc-unknown-bsdi$UNAME_RELEASE + ;; *:BSD/OS:*:*) - echo "$UNAME_MACHINE"-unknown-bsdi"$UNAME_RELEASE" - exit ;; + GUESS=$UNAME_MACHINE-unknown-bsdi$UNAME_RELEASE + ;; arm:FreeBSD:*:*) UNAME_PROCESSOR=`uname -p` set_cc_for_build if echo __ARM_PCS_VFP | $CC_FOR_BUILD -E - 2>/dev/null \ | grep -q __ARM_PCS_VFP then - echo "${UNAME_PROCESSOR}"-unknown-freebsd"`echo ${UNAME_RELEASE}|sed -e 's/[-(].*//'`"-gnueabi + FREEBSD_REL=`echo "$UNAME_RELEASE" | sed -e 's/[-(].*//'` + GUESS=$UNAME_PROCESSOR-unknown-freebsd$FREEBSD_REL-gnueabi else - echo "${UNAME_PROCESSOR}"-unknown-freebsd"`echo ${UNAME_RELEASE}|sed -e 's/[-(].*//'`"-gnueabihf + FREEBSD_REL=`echo "$UNAME_RELEASE" | sed -e 's/[-(].*//'` + GUESS=$UNAME_PROCESSOR-unknown-freebsd$FREEBSD_REL-gnueabihf fi - exit ;; + ;; *:FreeBSD:*:*) UNAME_PROCESSOR=`/usr/bin/uname -p` - case "$UNAME_PROCESSOR" in + case $UNAME_PROCESSOR in amd64) UNAME_PROCESSOR=x86_64 ;; i386) UNAME_PROCESSOR=i586 ;; esac - echo "$UNAME_PROCESSOR"-unknown-freebsd"`echo "$UNAME_RELEASE"|sed -e 's/[-(].*//'`" - exit ;; + FREEBSD_REL=`echo "$UNAME_RELEASE" | sed -e 's/[-(].*//'` + GUESS=$UNAME_PROCESSOR-unknown-freebsd$FREEBSD_REL + ;; i*:CYGWIN*:*) - echo "$UNAME_MACHINE"-pc-cygwin - exit ;; + GUESS=$UNAME_MACHINE-pc-cygwin + ;; *:MINGW64*:*) - echo "$UNAME_MACHINE"-pc-mingw64 - exit ;; + GUESS=$UNAME_MACHINE-pc-mingw64 + ;; *:MINGW*:*) - echo "$UNAME_MACHINE"-pc-mingw32 - exit ;; + GUESS=$UNAME_MACHINE-pc-mingw32 + ;; *:MSYS*:*) - echo "$UNAME_MACHINE"-pc-msys - exit ;; + GUESS=$UNAME_MACHINE-pc-msys + ;; i*:PW*:*) - echo "$UNAME_MACHINE"-pc-pw32 - exit ;; + GUESS=$UNAME_MACHINE-pc-pw32 + ;; *:Interix*:*) - case "$UNAME_MACHINE" in + case $UNAME_MACHINE in x86) - echo i586-pc-interix"$UNAME_RELEASE" - exit ;; + GUESS=i586-pc-interix$UNAME_RELEASE + ;; authenticamd | genuineintel | EM64T) - echo x86_64-unknown-interix"$UNAME_RELEASE" - exit ;; + GUESS=x86_64-unknown-interix$UNAME_RELEASE + ;; IA64) - echo ia64-unknown-interix"$UNAME_RELEASE" - exit ;; + GUESS=ia64-unknown-interix$UNAME_RELEASE + ;; esac ;; i*:UWIN*:*) - echo "$UNAME_MACHINE"-pc-uwin - exit ;; + GUESS=$UNAME_MACHINE-pc-uwin + ;; amd64:CYGWIN*:*:* | x86_64:CYGWIN*:*:*) - echo x86_64-pc-cygwin - exit ;; + GUESS=x86_64-pc-cygwin + ;; prep*:SunOS:5.*:*) - echo powerpcle-unknown-solaris2"`echo "$UNAME_RELEASE"|sed -e 's/[^.]*//'`" - exit ;; + SUN_REL=`echo "$UNAME_RELEASE" | sed -e 's/[^.]*//'` + GUESS=powerpcle-unknown-solaris2$SUN_REL + ;; *:GNU:*:*) # the GNU system - echo "`echo "$UNAME_MACHINE"|sed -e 's,[-/].*$,,'`-unknown-$LIBC`echo "$UNAME_RELEASE"|sed -e 's,/.*$,,'`" - exit ;; + GNU_ARCH=`echo "$UNAME_MACHINE" | sed -e 's,[-/].*$,,'` + GNU_REL=`echo "$UNAME_RELEASE" | sed -e 's,/.*$,,'` + GUESS=$GNU_ARCH-unknown-$LIBC$GNU_REL + ;; *:GNU/*:*:*) # other systems with GNU libc and userland - echo "$UNAME_MACHINE-unknown-`echo "$UNAME_SYSTEM" | sed 's,^[^/]*/,,' | tr "[:upper:]" "[:lower:]"``echo "$UNAME_RELEASE"|sed -e 's/[-(].*//'`-$LIBC" - exit ;; + GNU_SYS=`echo "$UNAME_SYSTEM" | sed 's,^[^/]*/,,' | tr "[:upper:]" "[:lower:]"` + GNU_REL=`echo "$UNAME_RELEASE" | sed -e 's/[-(].*//'` + GUESS=$UNAME_MACHINE-unknown-$GNU_SYS$GNU_REL-$LIBC + ;; *:Minix:*:*) - echo "$UNAME_MACHINE"-unknown-minix - exit ;; + GUESS=$UNAME_MACHINE-unknown-minix + ;; aarch64:Linux:*:*) - echo "$UNAME_MACHINE"-unknown-linux-"$LIBC" - exit ;; + GUESS=$UNAME_MACHINE-unknown-linux-$LIBC + ;; aarch64_be:Linux:*:*) UNAME_MACHINE=aarch64_be - echo "$UNAME_MACHINE"-unknown-linux-"$LIBC" - exit ;; + GUESS=$UNAME_MACHINE-unknown-linux-$LIBC + ;; alpha:Linux:*:*) case `sed -n '/^cpu model/s/^.*: \(.*\)/\1/p' /proc/cpuinfo 2>/dev/null` in EV5) UNAME_MACHINE=alphaev5 ;; @@ -937,60 +985,63 @@ EOF esac objdump --private-headers /bin/sh | grep -q ld.so.1 if test "$?" = 0 ; then LIBC=gnulibc1 ; fi - echo "$UNAME_MACHINE"-unknown-linux-"$LIBC" - exit ;; - arc:Linux:*:* | arceb:Linux:*:*) - echo "$UNAME_MACHINE"-unknown-linux-"$LIBC" - exit ;; + GUESS=$UNAME_MACHINE-unknown-linux-$LIBC + ;; + arc:Linux:*:* | arceb:Linux:*:* | arc32:Linux:*:* | arc64:Linux:*:*) + GUESS=$UNAME_MACHINE-unknown-linux-$LIBC + ;; arm*:Linux:*:*) set_cc_for_build if echo __ARM_EABI__ | $CC_FOR_BUILD -E - 2>/dev/null \ | grep -q __ARM_EABI__ then - echo "$UNAME_MACHINE"-unknown-linux-"$LIBC" + GUESS=$UNAME_MACHINE-unknown-linux-$LIBC else if echo __ARM_PCS_VFP | $CC_FOR_BUILD -E - 2>/dev/null \ | grep -q __ARM_PCS_VFP then - echo "$UNAME_MACHINE"-unknown-linux-"$LIBC"eabi + GUESS=$UNAME_MACHINE-unknown-linux-${LIBC}eabi else - echo "$UNAME_MACHINE"-unknown-linux-"$LIBC"eabihf + GUESS=$UNAME_MACHINE-unknown-linux-${LIBC}eabihf fi fi - exit ;; + ;; avr32*:Linux:*:*) - echo "$UNAME_MACHINE"-unknown-linux-"$LIBC" - exit ;; + GUESS=$UNAME_MACHINE-unknown-linux-$LIBC + ;; cris:Linux:*:*) - echo "$UNAME_MACHINE"-axis-linux-"$LIBC" - exit ;; + GUESS=$UNAME_MACHINE-axis-linux-$LIBC + ;; crisv32:Linux:*:*) - echo "$UNAME_MACHINE"-axis-linux-"$LIBC" - exit ;; + GUESS=$UNAME_MACHINE-axis-linux-$LIBC + ;; e2k:Linux:*:*) - echo "$UNAME_MACHINE"-unknown-linux-"$LIBC" - exit ;; + GUESS=$UNAME_MACHINE-unknown-linux-$LIBC + ;; frv:Linux:*:*) - echo "$UNAME_MACHINE"-unknown-linux-"$LIBC" - exit ;; + GUESS=$UNAME_MACHINE-unknown-linux-$LIBC + ;; hexagon:Linux:*:*) - echo "$UNAME_MACHINE"-unknown-linux-"$LIBC" - exit ;; + GUESS=$UNAME_MACHINE-unknown-linux-$LIBC + ;; i*86:Linux:*:*) - echo "$UNAME_MACHINE"-pc-linux-"$LIBC" - exit ;; + GUESS=$UNAME_MACHINE-pc-linux-$LIBC + ;; ia64:Linux:*:*) - echo "$UNAME_MACHINE"-unknown-linux-"$LIBC" - exit ;; + GUESS=$UNAME_MACHINE-unknown-linux-$LIBC + ;; k1om:Linux:*:*) - echo "$UNAME_MACHINE"-unknown-linux-"$LIBC" - exit ;; + GUESS=$UNAME_MACHINE-unknown-linux-$LIBC + ;; + loongarch32:Linux:*:* | loongarch64:Linux:*:* | loongarchx32:Linux:*:*) + GUESS=$UNAME_MACHINE-unknown-linux-$LIBC + ;; m32r*:Linux:*:*) - echo "$UNAME_MACHINE"-unknown-linux-"$LIBC" - exit ;; + GUESS=$UNAME_MACHINE-unknown-linux-$LIBC + ;; m68*:Linux:*:*) - echo "$UNAME_MACHINE"-unknown-linux-"$LIBC" - exit ;; + GUESS=$UNAME_MACHINE-unknown-linux-$LIBC + ;; mips:Linux:*:* | mips64:Linux:*:*) set_cc_for_build IS_GLIBC=0 @@ -1035,65 +1086,66 @@ EOF #endif #endif EOF - eval "`$CC_FOR_BUILD -E "$dummy.c" 2>/dev/null | grep '^CPU\|^MIPS_ENDIAN\|^LIBCABI'`" + cc_set_vars=`$CC_FOR_BUILD -E "$dummy.c" 2>/dev/null | grep '^CPU\|^MIPS_ENDIAN\|^LIBCABI'` + eval "$cc_set_vars" test "x$CPU" != x && { echo "$CPU${MIPS_ENDIAN}-unknown-linux-$LIBCABI"; exit; } ;; mips64el:Linux:*:*) - echo "$UNAME_MACHINE"-unknown-linux-"$LIBC" - exit ;; + GUESS=$UNAME_MACHINE-unknown-linux-$LIBC + ;; openrisc*:Linux:*:*) - echo or1k-unknown-linux-"$LIBC" - exit ;; + GUESS=or1k-unknown-linux-$LIBC + ;; or32:Linux:*:* | or1k*:Linux:*:*) - echo "$UNAME_MACHINE"-unknown-linux-"$LIBC" - exit ;; + GUESS=$UNAME_MACHINE-unknown-linux-$LIBC + ;; padre:Linux:*:*) - echo sparc-unknown-linux-"$LIBC" - exit ;; + GUESS=sparc-unknown-linux-$LIBC + ;; parisc64:Linux:*:* | hppa64:Linux:*:*) - echo hppa64-unknown-linux-"$LIBC" - exit ;; + GUESS=hppa64-unknown-linux-$LIBC + ;; parisc:Linux:*:* | hppa:Linux:*:*) # Look for CPU level case `grep '^cpu[^a-z]*:' /proc/cpuinfo 2>/dev/null | cut -d' ' -f2` in - PA7*) echo hppa1.1-unknown-linux-"$LIBC" ;; - PA8*) echo hppa2.0-unknown-linux-"$LIBC" ;; - *) echo hppa-unknown-linux-"$LIBC" ;; + PA7*) GUESS=hppa1.1-unknown-linux-$LIBC ;; + PA8*) GUESS=hppa2.0-unknown-linux-$LIBC ;; + *) GUESS=hppa-unknown-linux-$LIBC ;; esac - exit ;; + ;; ppc64:Linux:*:*) - echo powerpc64-unknown-linux-"$LIBC" - exit ;; + GUESS=powerpc64-unknown-linux-$LIBC + ;; ppc:Linux:*:*) - echo powerpc-unknown-linux-"$LIBC" - exit ;; + GUESS=powerpc-unknown-linux-$LIBC + ;; ppc64le:Linux:*:*) - echo powerpc64le-unknown-linux-"$LIBC" - exit ;; + GUESS=powerpc64le-unknown-linux-$LIBC + ;; ppcle:Linux:*:*) - echo powerpcle-unknown-linux-"$LIBC" - exit ;; - riscv32:Linux:*:* | riscv64:Linux:*:*) - echo "$UNAME_MACHINE"-unknown-linux-"$LIBC" - exit ;; + GUESS=powerpcle-unknown-linux-$LIBC + ;; + riscv32:Linux:*:* | riscv32be:Linux:*:* | riscv64:Linux:*:* | riscv64be:Linux:*:*) + GUESS=$UNAME_MACHINE-unknown-linux-$LIBC + ;; s390:Linux:*:* | s390x:Linux:*:*) - echo "$UNAME_MACHINE"-ibm-linux-"$LIBC" - exit ;; + GUESS=$UNAME_MACHINE-ibm-linux-$LIBC + ;; sh64*:Linux:*:*) - echo "$UNAME_MACHINE"-unknown-linux-"$LIBC" - exit ;; + GUESS=$UNAME_MACHINE-unknown-linux-$LIBC + ;; sh*:Linux:*:*) - echo "$UNAME_MACHINE"-unknown-linux-"$LIBC" - exit ;; + GUESS=$UNAME_MACHINE-unknown-linux-$LIBC + ;; sparc:Linux:*:* | sparc64:Linux:*:*) - echo "$UNAME_MACHINE"-unknown-linux-"$LIBC" - exit ;; + GUESS=$UNAME_MACHINE-unknown-linux-$LIBC + ;; tile*:Linux:*:*) - echo "$UNAME_MACHINE"-unknown-linux-"$LIBC" - exit ;; + GUESS=$UNAME_MACHINE-unknown-linux-$LIBC + ;; vax:Linux:*:*) - echo "$UNAME_MACHINE"-dec-linux-"$LIBC" - exit ;; + GUESS=$UNAME_MACHINE-dec-linux-$LIBC + ;; x86_64:Linux:*:*) set_cc_for_build LIBCABI=$LIBC @@ -1102,56 +1154,56 @@ EOF (CCOPTS="" $CC_FOR_BUILD -E - 2>/dev/null) | \ grep IS_X32 >/dev/null then - LIBCABI="$LIBC"x32 + LIBCABI=${LIBC}x32 fi fi - echo "$UNAME_MACHINE"-pc-linux-"$LIBCABI" - exit ;; + GUESS=$UNAME_MACHINE-pc-linux-$LIBCABI + ;; xtensa*:Linux:*:*) - echo "$UNAME_MACHINE"-unknown-linux-"$LIBC" - exit ;; + GUESS=$UNAME_MACHINE-unknown-linux-$LIBC + ;; i*86:DYNIX/ptx:4*:*) # ptx 4.0 does uname -s correctly, with DYNIX/ptx in there. # earlier versions are messed up and put the nodename in both # sysname and nodename. - echo i386-sequent-sysv4 - exit ;; + GUESS=i386-sequent-sysv4 + ;; i*86:UNIX_SV:4.2MP:2.*) # Unixware is an offshoot of SVR4, but it has its own version # number series starting with 2... # I am not positive that other SVR4 systems won't match this, # I just have to hope. -- rms. # Use sysv4.2uw... so that sysv4* matches it. - echo "$UNAME_MACHINE"-pc-sysv4.2uw"$UNAME_VERSION" - exit ;; + GUESS=$UNAME_MACHINE-pc-sysv4.2uw$UNAME_VERSION + ;; i*86:OS/2:*:*) # If we were able to find `uname', then EMX Unix compatibility # is probably installed. - echo "$UNAME_MACHINE"-pc-os2-emx - exit ;; + GUESS=$UNAME_MACHINE-pc-os2-emx + ;; i*86:XTS-300:*:STOP) - echo "$UNAME_MACHINE"-unknown-stop - exit ;; + GUESS=$UNAME_MACHINE-unknown-stop + ;; i*86:atheos:*:*) - echo "$UNAME_MACHINE"-unknown-atheos - exit ;; + GUESS=$UNAME_MACHINE-unknown-atheos + ;; i*86:syllable:*:*) - echo "$UNAME_MACHINE"-pc-syllable - exit ;; + GUESS=$UNAME_MACHINE-pc-syllable + ;; i*86:LynxOS:2.*:* | i*86:LynxOS:3.[01]*:* | i*86:LynxOS:4.[02]*:*) - echo i386-unknown-lynxos"$UNAME_RELEASE" - exit ;; + GUESS=i386-unknown-lynxos$UNAME_RELEASE + ;; i*86:*DOS:*:*) - echo "$UNAME_MACHINE"-pc-msdosdjgpp - exit ;; + GUESS=$UNAME_MACHINE-pc-msdosdjgpp + ;; i*86:*:4.*:*) UNAME_REL=`echo "$UNAME_RELEASE" | sed 's/\/MP$//'` if grep Novell /usr/include/link.h >/dev/null 2>/dev/null; then - echo "$UNAME_MACHINE"-univel-sysv"$UNAME_REL" + GUESS=$UNAME_MACHINE-univel-sysv$UNAME_REL else - echo "$UNAME_MACHINE"-pc-sysv"$UNAME_REL" + GUESS=$UNAME_MACHINE-pc-sysv$UNAME_REL fi - exit ;; + ;; i*86:*:5:[678]*) # UnixWare 7.x, OpenUNIX and OpenServer 6. case `/bin/uname -X | grep "^Machine"` in @@ -1159,12 +1211,12 @@ EOF *Pentium) UNAME_MACHINE=i586 ;; *Pent*|*Celeron) UNAME_MACHINE=i686 ;; esac - echo "$UNAME_MACHINE-unknown-sysv${UNAME_RELEASE}${UNAME_SYSTEM}${UNAME_VERSION}" - exit ;; + GUESS=$UNAME_MACHINE-unknown-sysv${UNAME_RELEASE}${UNAME_SYSTEM}${UNAME_VERSION} + ;; i*86:*:3.2:*) if test -f /usr/options/cb.name; then UNAME_REL=`sed -n 's/.*Version //p' /dev/null >/dev/null ; then UNAME_REL=`(/bin/uname -X|grep Release|sed -e 's/.*= //')` (/bin/uname -X|grep i80486 >/dev/null) && UNAME_MACHINE=i486 @@ -1174,11 +1226,11 @@ EOF && UNAME_MACHINE=i686 (/bin/uname -X|grep '^Machine.*Pentium Pro' >/dev/null) \ && UNAME_MACHINE=i686 - echo "$UNAME_MACHINE"-pc-sco"$UNAME_REL" + GUESS=$UNAME_MACHINE-pc-sco$UNAME_REL else - echo "$UNAME_MACHINE"-pc-sysv32 + GUESS=$UNAME_MACHINE-pc-sysv32 fi - exit ;; + ;; pc:*:*:*) # Left here for compatibility: # uname -m prints for DJGPP always 'pc', but it prints nothing about @@ -1186,31 +1238,31 @@ EOF # Note: whatever this is, it MUST be the same as what config.sub # prints for the "djgpp" host, or else GDB configure will decide that # this is a cross-build. - echo i586-pc-msdosdjgpp - exit ;; + GUESS=i586-pc-msdosdjgpp + ;; Intel:Mach:3*:*) - echo i386-pc-mach3 - exit ;; + GUESS=i386-pc-mach3 + ;; paragon:*:*:*) - echo i860-intel-osf1 - exit ;; + GUESS=i860-intel-osf1 + ;; i860:*:4.*:*) # i860-SVR4 if grep Stardent /usr/include/sys/uadmin.h >/dev/null 2>&1 ; then - echo i860-stardent-sysv"$UNAME_RELEASE" # Stardent Vistra i860-SVR4 + GUESS=i860-stardent-sysv$UNAME_RELEASE # Stardent Vistra i860-SVR4 else # Add other i860-SVR4 vendors below as they are discovered. - echo i860-unknown-sysv"$UNAME_RELEASE" # Unknown i860-SVR4 + GUESS=i860-unknown-sysv$UNAME_RELEASE # Unknown i860-SVR4 fi - exit ;; + ;; mini*:CTIX:SYS*5:*) # "miniframe" - echo m68010-convergent-sysv - exit ;; + GUESS=m68010-convergent-sysv + ;; mc68k:UNIX:SYSTEM5:3.51m) - echo m68k-convergent-sysv - exit ;; + GUESS=m68k-convergent-sysv + ;; M680?0:D-NIX:5.3:*) - echo m68k-diab-dnix - exit ;; + GUESS=m68k-diab-dnix + ;; M68*:*:R3V[5678]*:*) test -r /sysV68 && { echo 'm68k-motorola-sysv'; exit; } ;; 3[345]??:*:4.0:3.0 | 3[34]??A:*:4.0:3.0 | 3[34]??,*:*:4.0:3.0 | 3[34]??/*:*:4.0:3.0 | 4400:*:4.0:3.0 | 4850:*:4.0:3.0 | SKA40:*:4.0:3.0 | SDS2:*:4.0:3.0 | SHG2:*:4.0:3.0 | S7501*:*:4.0:3.0) @@ -1235,116 +1287,116 @@ EOF /bin/uname -p 2>/dev/null | /bin/grep pteron >/dev/null \ && { echo i586-ncr-sysv4.3"$OS_REL"; exit; } ;; m68*:LynxOS:2.*:* | m68*:LynxOS:3.0*:*) - echo m68k-unknown-lynxos"$UNAME_RELEASE" - exit ;; + GUESS=m68k-unknown-lynxos$UNAME_RELEASE + ;; mc68030:UNIX_System_V:4.*:*) - echo m68k-atari-sysv4 - exit ;; + GUESS=m68k-atari-sysv4 + ;; TSUNAMI:LynxOS:2.*:*) - echo sparc-unknown-lynxos"$UNAME_RELEASE" - exit ;; + GUESS=sparc-unknown-lynxos$UNAME_RELEASE + ;; rs6000:LynxOS:2.*:*) - echo rs6000-unknown-lynxos"$UNAME_RELEASE" - exit ;; + GUESS=rs6000-unknown-lynxos$UNAME_RELEASE + ;; PowerPC:LynxOS:2.*:* | PowerPC:LynxOS:3.[01]*:* | PowerPC:LynxOS:4.[02]*:*) - echo powerpc-unknown-lynxos"$UNAME_RELEASE" - exit ;; + GUESS=powerpc-unknown-lynxos$UNAME_RELEASE + ;; SM[BE]S:UNIX_SV:*:*) - echo mips-dde-sysv"$UNAME_RELEASE" - exit ;; + GUESS=mips-dde-sysv$UNAME_RELEASE + ;; RM*:ReliantUNIX-*:*:*) - echo mips-sni-sysv4 - exit ;; + GUESS=mips-sni-sysv4 + ;; RM*:SINIX-*:*:*) - echo mips-sni-sysv4 - exit ;; + GUESS=mips-sni-sysv4 + ;; *:SINIX-*:*:*) if uname -p 2>/dev/null >/dev/null ; then UNAME_MACHINE=`(uname -p) 2>/dev/null` - echo "$UNAME_MACHINE"-sni-sysv4 + GUESS=$UNAME_MACHINE-sni-sysv4 else - echo ns32k-sni-sysv + GUESS=ns32k-sni-sysv fi - exit ;; + ;; PENTIUM:*:4.0*:*) # Unisys `ClearPath HMP IX 4000' SVR4/MP effort # says - echo i586-unisys-sysv4 - exit ;; + GUESS=i586-unisys-sysv4 + ;; *:UNIX_System_V:4*:FTX*) # From Gerald Hewes . # How about differentiating between stratus architectures? -djm - echo hppa1.1-stratus-sysv4 - exit ;; + GUESS=hppa1.1-stratus-sysv4 + ;; *:*:*:FTX*) # From seanf@swdc.stratus.com. - echo i860-stratus-sysv4 - exit ;; + GUESS=i860-stratus-sysv4 + ;; i*86:VOS:*:*) # From Paul.Green@stratus.com. - echo "$UNAME_MACHINE"-stratus-vos - exit ;; + GUESS=$UNAME_MACHINE-stratus-vos + ;; *:VOS:*:*) # From Paul.Green@stratus.com. - echo hppa1.1-stratus-vos - exit ;; + GUESS=hppa1.1-stratus-vos + ;; mc68*:A/UX:*:*) - echo m68k-apple-aux"$UNAME_RELEASE" - exit ;; + GUESS=m68k-apple-aux$UNAME_RELEASE + ;; news*:NEWS-OS:6*:*) - echo mips-sony-newsos6 - exit ;; + GUESS=mips-sony-newsos6 + ;; R[34]000:*System_V*:*:* | R4000:UNIX_SYSV:*:* | R*000:UNIX_SV:*:*) if test -d /usr/nec; then - echo mips-nec-sysv"$UNAME_RELEASE" + GUESS=mips-nec-sysv$UNAME_RELEASE else - echo mips-unknown-sysv"$UNAME_RELEASE" + GUESS=mips-unknown-sysv$UNAME_RELEASE fi - exit ;; + ;; BeBox:BeOS:*:*) # BeOS running on hardware made by Be, PPC only. - echo powerpc-be-beos - exit ;; + GUESS=powerpc-be-beos + ;; BeMac:BeOS:*:*) # BeOS running on Mac or Mac clone, PPC only. - echo powerpc-apple-beos - exit ;; + GUESS=powerpc-apple-beos + ;; BePC:BeOS:*:*) # BeOS running on Intel PC compatible. - echo i586-pc-beos - exit ;; + GUESS=i586-pc-beos + ;; BePC:Haiku:*:*) # Haiku running on Intel PC compatible. - echo i586-pc-haiku - exit ;; + GUESS=i586-pc-haiku + ;; x86_64:Haiku:*:*) - echo x86_64-unknown-haiku - exit ;; + GUESS=x86_64-unknown-haiku + ;; SX-4:SUPER-UX:*:*) - echo sx4-nec-superux"$UNAME_RELEASE" - exit ;; + GUESS=sx4-nec-superux$UNAME_RELEASE + ;; SX-5:SUPER-UX:*:*) - echo sx5-nec-superux"$UNAME_RELEASE" - exit ;; + GUESS=sx5-nec-superux$UNAME_RELEASE + ;; SX-6:SUPER-UX:*:*) - echo sx6-nec-superux"$UNAME_RELEASE" - exit ;; + GUESS=sx6-nec-superux$UNAME_RELEASE + ;; SX-7:SUPER-UX:*:*) - echo sx7-nec-superux"$UNAME_RELEASE" - exit ;; + GUESS=sx7-nec-superux$UNAME_RELEASE + ;; SX-8:SUPER-UX:*:*) - echo sx8-nec-superux"$UNAME_RELEASE" - exit ;; + GUESS=sx8-nec-superux$UNAME_RELEASE + ;; SX-8R:SUPER-UX:*:*) - echo sx8r-nec-superux"$UNAME_RELEASE" - exit ;; + GUESS=sx8r-nec-superux$UNAME_RELEASE + ;; SX-ACE:SUPER-UX:*:*) - echo sxace-nec-superux"$UNAME_RELEASE" - exit ;; + GUESS=sxace-nec-superux$UNAME_RELEASE + ;; Power*:Rhapsody:*:*) - echo powerpc-apple-rhapsody"$UNAME_RELEASE" - exit ;; + GUESS=powerpc-apple-rhapsody$UNAME_RELEASE + ;; *:Rhapsody:*:*) - echo "$UNAME_MACHINE"-apple-rhapsody"$UNAME_RELEASE" - exit ;; + GUESS=$UNAME_MACHINE-apple-rhapsody$UNAME_RELEASE + ;; arm64:Darwin:*:*) - echo aarch64-apple-darwin"$UNAME_RELEASE" - exit ;; + GUESS=aarch64-apple-darwin$UNAME_RELEASE + ;; *:Darwin:*:*) UNAME_PROCESSOR=`uname -p` case $UNAME_PROCESSOR in @@ -1380,109 +1432,116 @@ EOF # uname -m returns i386 or x86_64 UNAME_PROCESSOR=$UNAME_MACHINE fi - echo "$UNAME_PROCESSOR"-apple-darwin"$UNAME_RELEASE" - exit ;; + GUESS=$UNAME_PROCESSOR-apple-darwin$UNAME_RELEASE + ;; *:procnto*:*:* | *:QNX:[0123456789]*:*) UNAME_PROCESSOR=`uname -p` if test "$UNAME_PROCESSOR" = x86; then UNAME_PROCESSOR=i386 UNAME_MACHINE=pc fi - echo "$UNAME_PROCESSOR"-"$UNAME_MACHINE"-nto-qnx"$UNAME_RELEASE" - exit ;; + GUESS=$UNAME_PROCESSOR-$UNAME_MACHINE-nto-qnx$UNAME_RELEASE + ;; *:QNX:*:4*) - echo i386-pc-qnx - exit ;; + GUESS=i386-pc-qnx + ;; NEO-*:NONSTOP_KERNEL:*:*) - echo neo-tandem-nsk"$UNAME_RELEASE" - exit ;; + GUESS=neo-tandem-nsk$UNAME_RELEASE + ;; NSE-*:NONSTOP_KERNEL:*:*) - echo nse-tandem-nsk"$UNAME_RELEASE" - exit ;; + GUESS=nse-tandem-nsk$UNAME_RELEASE + ;; NSR-*:NONSTOP_KERNEL:*:*) - echo nsr-tandem-nsk"$UNAME_RELEASE" - exit ;; + GUESS=nsr-tandem-nsk$UNAME_RELEASE + ;; NSV-*:NONSTOP_KERNEL:*:*) - echo nsv-tandem-nsk"$UNAME_RELEASE" - exit ;; + GUESS=nsv-tandem-nsk$UNAME_RELEASE + ;; NSX-*:NONSTOP_KERNEL:*:*) - echo nsx-tandem-nsk"$UNAME_RELEASE" - exit ;; + GUESS=nsx-tandem-nsk$UNAME_RELEASE + ;; *:NonStop-UX:*:*) - echo mips-compaq-nonstopux - exit ;; + GUESS=mips-compaq-nonstopux + ;; BS2000:POSIX*:*:*) - echo bs2000-siemens-sysv - exit ;; + GUESS=bs2000-siemens-sysv + ;; DS/*:UNIX_System_V:*:*) - echo "$UNAME_MACHINE"-"$UNAME_SYSTEM"-"$UNAME_RELEASE" - exit ;; + GUESS=$UNAME_MACHINE-$UNAME_SYSTEM-$UNAME_RELEASE + ;; *:Plan9:*:*) # "uname -m" is not consistent, so use $cputype instead. 386 # is converted to i386 for consistency with other x86 # operating systems. - # shellcheck disable=SC2154 - if test "$cputype" = 386; then + if test "${cputype-}" = 386; then UNAME_MACHINE=i386 - else - UNAME_MACHINE="$cputype" + elif test "x${cputype-}" != x; then + UNAME_MACHINE=$cputype fi - echo "$UNAME_MACHINE"-unknown-plan9 - exit ;; + GUESS=$UNAME_MACHINE-unknown-plan9 + ;; *:TOPS-10:*:*) - echo pdp10-unknown-tops10 - exit ;; + GUESS=pdp10-unknown-tops10 + ;; *:TENEX:*:*) - echo pdp10-unknown-tenex - exit ;; + GUESS=pdp10-unknown-tenex + ;; KS10:TOPS-20:*:* | KL10:TOPS-20:*:* | TYPE4:TOPS-20:*:*) - echo pdp10-dec-tops20 - exit ;; + GUESS=pdp10-dec-tops20 + ;; XKL-1:TOPS-20:*:* | TYPE5:TOPS-20:*:*) - echo pdp10-xkl-tops20 - exit ;; + GUESS=pdp10-xkl-tops20 + ;; *:TOPS-20:*:*) - echo pdp10-unknown-tops20 - exit ;; + GUESS=pdp10-unknown-tops20 + ;; *:ITS:*:*) - echo pdp10-unknown-its - exit ;; + GUESS=pdp10-unknown-its + ;; SEI:*:*:SEIUX) - echo mips-sei-seiux"$UNAME_RELEASE" - exit ;; + GUESS=mips-sei-seiux$UNAME_RELEASE + ;; *:DragonFly:*:*) - echo "$UNAME_MACHINE"-unknown-dragonfly"`echo "$UNAME_RELEASE"|sed -e 's/[-(].*//'`" - exit ;; + DRAGONFLY_REL=`echo "$UNAME_RELEASE" | sed -e 's/[-(].*//'` + GUESS=$UNAME_MACHINE-unknown-dragonfly$DRAGONFLY_REL + ;; *:*VMS:*:*) UNAME_MACHINE=`(uname -p) 2>/dev/null` - case "$UNAME_MACHINE" in - A*) echo alpha-dec-vms ; exit ;; - I*) echo ia64-dec-vms ; exit ;; - V*) echo vax-dec-vms ; exit ;; + case $UNAME_MACHINE in + A*) GUESS=alpha-dec-vms ;; + I*) GUESS=ia64-dec-vms ;; + V*) GUESS=vax-dec-vms ;; esac ;; *:XENIX:*:SysV) - echo i386-pc-xenix - exit ;; + GUESS=i386-pc-xenix + ;; i*86:skyos:*:*) - echo "$UNAME_MACHINE"-pc-skyos"`echo "$UNAME_RELEASE" | sed -e 's/ .*$//'`" - exit ;; + SKYOS_REL=`echo "$UNAME_RELEASE" | sed -e 's/ .*$//'` + GUESS=$UNAME_MACHINE-pc-skyos$SKYOS_REL + ;; i*86:rdos:*:*) - echo "$UNAME_MACHINE"-pc-rdos - exit ;; - i*86:AROS:*:*) - echo "$UNAME_MACHINE"-pc-aros - exit ;; + GUESS=$UNAME_MACHINE-pc-rdos + ;; + *:AROS:*:*) + GUESS=$UNAME_MACHINE-unknown-aros + ;; x86_64:VMkernel:*:*) - echo "$UNAME_MACHINE"-unknown-esx - exit ;; + GUESS=$UNAME_MACHINE-unknown-esx + ;; amd64:Isilon\ OneFS:*:*) - echo x86_64-unknown-onefs - exit ;; + GUESS=x86_64-unknown-onefs + ;; *:Unleashed:*:*) - echo "$UNAME_MACHINE"-unknown-unleashed"$UNAME_RELEASE" - exit ;; + GUESS=$UNAME_MACHINE-unknown-unleashed$UNAME_RELEASE + ;; esac +# Do we have a guess based on uname results? +if test "x$GUESS" != x; then + echo "$GUESS" + exit +fi + # No uname command or uname output not recognized. set_cc_for_build cat > "$dummy.c" </dev/null && SYSTEM_NAME=`$dummy` && +$CC_FOR_BUILD -o "$dummy" "$dummy.c" 2>/dev/null && SYSTEM_NAME=`"$dummy"` && { echo "$SYSTEM_NAME"; exit; } # Apollos put the system type in the environment. @@ -1622,7 +1681,7 @@ test -d /usr/apollo && { echo "$ISP-apollo-$SYSTYPE"; exit; } echo "$0: unable to guess system type" >&2 -case "$UNAME_MACHINE:$UNAME_SYSTEM" in +case $UNAME_MACHINE:$UNAME_SYSTEM in mips:Linux | mips64:Linux) # If we got here on MIPS GNU/Linux, output extra information. cat >&2 <&2 <&2 @@ -1749,8 +1778,12 @@ case $kernel-$os in ;; kfreebsd*-gnu* | kopensolaris*-gnu*) ;; + vxworks-simlinux | vxworks-simwindows | vxworks-spe) + ;; nto-qnx*) ;; + os2-emx) + ;; *-eabi* | *-gnueabi*) ;; -*) diff --git a/apple/configure b/apple/configure index 505c466..8502b08 100755 --- a/apple/configure +++ b/apple/configure @@ -1,11 +1,12 @@ #! /bin/sh # Guess values for system-dependent variables and create Makefiles. -# Generated by GNU Autoconf 2.69 for ffmpeg-kit 4.4. +# Generated by GNU Autoconf 2.71 for ffmpeg-kit 4.5. # # Report bugs to . # # -# Copyright (C) 1992-1996, 1998-2012 Free Software Foundation, Inc. +# Copyright (C) 1992-1996, 1998-2017, 2020-2021 Free Software Foundation, +# Inc. # # # This configure script is free software; the Free Software Foundation @@ -16,14 +17,16 @@ # Be more Bourne compatible DUALCASE=1; export DUALCASE # for MKS sh -if test -n "${ZSH_VERSION+set}" && (emulate sh) >/dev/null 2>&1; then : +as_nop=: +if test ${ZSH_VERSION+y} && (emulate sh) >/dev/null 2>&1 +then : emulate sh NULLCMD=: # Pre-4.2 versions of Zsh do word splitting on ${1+"$@"}, which # is contrary to our usage. Disable this feature. alias -g '${1+"$@"}'='"$@"' setopt NO_GLOB_SUBST -else +else $as_nop case `(set -o) 2>/dev/null` in #( *posix*) : set -o posix ;; #( @@ -33,46 +36,46 @@ esac fi + +# Reset variables that may have inherited troublesome values from +# the environment. + +# IFS needs to be set, to space, tab, and newline, in precisely that order. +# (If _AS_PATH_WALK were called with IFS unset, it would have the +# side effect of setting IFS to empty, thus disabling word splitting.) +# Quoting is to prevent editors from complaining about space-tab. as_nl=' ' export as_nl -# Printing a long string crashes Solaris 7 /usr/bin/printf. -as_echo='\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\' -as_echo=$as_echo$as_echo$as_echo$as_echo$as_echo -as_echo=$as_echo$as_echo$as_echo$as_echo$as_echo$as_echo -# Prefer a ksh shell builtin over an external printf program on Solaris, -# but without wasting forks for bash or zsh. -if test -z "$BASH_VERSION$ZSH_VERSION" \ - && (test "X`print -r -- $as_echo`" = "X$as_echo") 2>/dev/null; then - as_echo='print -r --' - as_echo_n='print -rn --' -elif (test "X`printf %s $as_echo`" = "X$as_echo") 2>/dev/null; then - as_echo='printf %s\n' - as_echo_n='printf %s' -else - if test "X`(/usr/ucb/echo -n -n $as_echo) 2>/dev/null`" = "X-n $as_echo"; then - as_echo_body='eval /usr/ucb/echo -n "$1$as_nl"' - as_echo_n='/usr/ucb/echo -n' - else - as_echo_body='eval expr "X$1" : "X\\(.*\\)"' - as_echo_n_body='eval - arg=$1; - case $arg in #( - *"$as_nl"*) - expr "X$arg" : "X\\(.*\\)$as_nl"; - arg=`expr "X$arg" : ".*$as_nl\\(.*\\)"`;; - esac; - expr "X$arg" : "X\\(.*\\)" | tr -d "$as_nl" - ' - export as_echo_n_body - as_echo_n='sh -c $as_echo_n_body as_echo' - fi - export as_echo_body - as_echo='sh -c $as_echo_body as_echo' -fi +IFS=" "" $as_nl" + +PS1='$ ' +PS2='> ' +PS4='+ ' + +# Ensure predictable behavior from utilities with locale-dependent output. +LC_ALL=C +export LC_ALL +LANGUAGE=C +export LANGUAGE + +# We cannot yet rely on "unset" to work, but we need these variables +# to be unset--not just set to an empty or harmless value--now, to +# avoid bugs in old shells (e.g. pre-3.0 UWIN ksh). This construct +# also avoids known problems related to "unset" and subshell syntax +# in other old shells (e.g. bash 2.01 and pdksh 5.2.14). +for as_var in BASH_ENV ENV MAIL MAILPATH CDPATH +do eval test \${$as_var+y} \ + && ( (unset $as_var) || exit 1) >/dev/null 2>&1 && unset $as_var || : +done + +# Ensure that fds 0, 1, and 2 are open. +if (exec 3>&0) 2>/dev/null; then :; else exec 0&1) 2>/dev/null; then :; else exec 1>/dev/null; fi +if (exec 3>&2) ; then :; else exec 2>/dev/null; fi # The user is always right. -if test "${PATH_SEPARATOR+set}" != set; then +if ${PATH_SEPARATOR+false} :; then PATH_SEPARATOR=: (PATH='/bin;/bin'; FPATH=$PATH; sh -c :) >/dev/null 2>&1 && { (PATH='/bin:/bin'; FPATH=$PATH; sh -c :) >/dev/null 2>&1 || @@ -81,13 +84,6 @@ if test "${PATH_SEPARATOR+set}" != set; then fi -# IFS -# We need space, tab and new line, in precisely that order. Quoting is -# there to prevent editors from complaining about space-tab. -# (If _AS_PATH_WALK were called with IFS unset, it would disable word -# splitting by setting IFS to empty value.) -IFS=" "" $as_nl" - # Find who we are. Look in the path if we contain no directory separator. as_myself= case $0 in #(( @@ -96,8 +92,12 @@ case $0 in #(( for as_dir in $PATH do IFS=$as_save_IFS - test -z "$as_dir" && as_dir=. - test -r "$as_dir/$0" && as_myself=$as_dir/$0 && break + case $as_dir in #((( + '') as_dir=./ ;; + */) ;; + *) as_dir=$as_dir/ ;; + esac + test -r "$as_dir$0" && as_myself=$as_dir$0 && break done IFS=$as_save_IFS @@ -109,30 +109,10 @@ if test "x$as_myself" = x; then as_myself=$0 fi if test ! -f "$as_myself"; then - $as_echo "$as_myself: error: cannot find myself; rerun with an absolute file name" >&2 + printf "%s\n" "$as_myself: error: cannot find myself; rerun with an absolute file name" >&2 exit 1 fi -# Unset variables that we do not need and which cause bugs (e.g. in -# pre-3.0 UWIN ksh). But do not cause bugs in bash 2.01; the "|| exit 1" -# suppresses any "Segmentation fault" message there. '((' could -# trigger a bug in pdksh 5.2.14. -for as_var in BASH_ENV ENV MAIL MAILPATH -do eval test x\${$as_var+set} = xset \ - && ( (unset $as_var) || exit 1) >/dev/null 2>&1 && unset $as_var || : -done -PS1='$ ' -PS2='> ' -PS4='+ ' - -# NLS nuisances. -LC_ALL=C -export LC_ALL -LANGUAGE=C -export LANGUAGE - -# CDPATH. -(unset CDPATH) >/dev/null 2>&1 && unset CDPATH # Use a proper internal environment variable to ensure we don't fall # into an infinite loop, continuously re-executing ourselves. @@ -154,20 +134,22 @@ esac exec $CONFIG_SHELL $as_opts "$as_myself" ${1+"$@"} # Admittedly, this is quite paranoid, since all the known shells bail # out after a failed `exec'. -$as_echo "$0: could not re-execute with $CONFIG_SHELL" >&2 -as_fn_exit 255 +printf "%s\n" "$0: could not re-execute with $CONFIG_SHELL" >&2 +exit 255 fi # We don't want this to propagate to other subprocesses. { _as_can_reexec=; unset _as_can_reexec;} if test "x$CONFIG_SHELL" = x; then - as_bourne_compatible="if test -n \"\${ZSH_VERSION+set}\" && (emulate sh) >/dev/null 2>&1; then : + as_bourne_compatible="as_nop=: +if test \${ZSH_VERSION+y} && (emulate sh) >/dev/null 2>&1 +then : emulate sh NULLCMD=: # Pre-4.2 versions of Zsh do word splitting on \${1+\"\$@\"}, which # is contrary to our usage. Disable this feature. alias -g '\${1+\"\$@\"}'='\"\$@\"' setopt NO_GLOB_SUBST -else +else \$as_nop case \`(set -o) 2>/dev/null\` in #( *posix*) : set -o posix ;; #( @@ -187,18 +169,20 @@ as_fn_success || { exitcode=1; echo as_fn_success failed.; } as_fn_failure && { exitcode=1; echo as_fn_failure succeeded.; } as_fn_ret_success || { exitcode=1; echo as_fn_ret_success failed.; } as_fn_ret_failure && { exitcode=1; echo as_fn_ret_failure succeeded.; } -if ( set x; as_fn_ret_success y && test x = \"\$1\" ); then : +if ( set x; as_fn_ret_success y && test x = \"\$1\" ) +then : -else +else \$as_nop exitcode=1; echo positional parameters were not saved. fi test x\$exitcode = x0 || exit 1 +blah=\$(echo \$(echo blah)) +test x\"\$blah\" = xblah || exit 1 test -x / || exit 1" as_suggested=" as_lineno_1=";as_suggested=$as_suggested$LINENO;as_suggested=$as_suggested" as_lineno_1a=\$LINENO as_lineno_2=";as_suggested=$as_suggested$LINENO;as_suggested=$as_suggested" as_lineno_2a=\$LINENO eval 'test \"x\$as_lineno_1'\$as_run'\" != \"x\$as_lineno_2'\$as_run'\" && test \"x\`expr \$as_lineno_1'\$as_run' + 1\`\" = \"x\$as_lineno_2'\$as_run'\"' || exit 1 -test \$(( 1 + 1 )) = 2 || exit 1 test -n \"\${ZSH_VERSION+set}\${BASH_VERSION+set}\" || ( ECHO='\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\' @@ -206,31 +190,40 @@ test \$(( 1 + 1 )) = 2 || exit 1 ECHO=\$ECHO\$ECHO\$ECHO\$ECHO\$ECHO\$ECHO PATH=/empty FPATH=/empty; export PATH FPATH test \"X\`printf %s \$ECHO\`\" = \"X\$ECHO\" \\ - || test \"X\`print -r -- \$ECHO\`\" = \"X\$ECHO\" ) || exit 1" - if (eval "$as_required") 2>/dev/null; then : + || test \"X\`print -r -- \$ECHO\`\" = \"X\$ECHO\" ) || exit 1 +test \$(( 1 + 1 )) = 2 || exit 1" + if (eval "$as_required") 2>/dev/null +then : as_have_required=yes -else +else $as_nop as_have_required=no fi - if test x$as_have_required = xyes && (eval "$as_suggested") 2>/dev/null; then : + if test x$as_have_required = xyes && (eval "$as_suggested") 2>/dev/null +then : -else +else $as_nop as_save_IFS=$IFS; IFS=$PATH_SEPARATOR as_found=false for as_dir in /bin$PATH_SEPARATOR/usr/bin$PATH_SEPARATOR$PATH do IFS=$as_save_IFS - test -z "$as_dir" && as_dir=. + case $as_dir in #((( + '') as_dir=./ ;; + */) ;; + *) as_dir=$as_dir/ ;; + esac as_found=: case $as_dir in #( /*) for as_base in sh bash ksh sh5; do # Try only shells that exist, to save several forks. - as_shell=$as_dir/$as_base + as_shell=$as_dir$as_base if { test -f "$as_shell" || test -f "$as_shell.exe"; } && - { $as_echo "$as_bourne_compatible""$as_required" | as_run=a "$as_shell"; } 2>/dev/null; then : + as_run=a "$as_shell" -c "$as_bourne_compatible""$as_required" 2>/dev/null +then : CONFIG_SHELL=$as_shell as_have_required=yes - if { $as_echo "$as_bourne_compatible""$as_suggested" | as_run=a "$as_shell"; } 2>/dev/null; then : + if as_run=a "$as_shell" -c "$as_bourne_compatible""$as_suggested" 2>/dev/null +then : break 2 fi fi @@ -238,14 +231,21 @@ fi esac as_found=false done -$as_found || { if { test -f "$SHELL" || test -f "$SHELL.exe"; } && - { $as_echo "$as_bourne_compatible""$as_required" | as_run=a "$SHELL"; } 2>/dev/null; then : - CONFIG_SHELL=$SHELL as_have_required=yes -fi; } IFS=$as_save_IFS +if $as_found +then : + +else $as_nop + if { test -f "$SHELL" || test -f "$SHELL.exe"; } && + as_run=a "$SHELL" -c "$as_bourne_compatible""$as_required" 2>/dev/null +then : + CONFIG_SHELL=$SHELL as_have_required=yes +fi +fi - if test "x$CONFIG_SHELL" != x; then : + if test "x$CONFIG_SHELL" != x +then : export CONFIG_SHELL # We cannot yet assume a decent shell, so we have to provide a # neutralization value for shells without unset; and this also @@ -263,18 +263,19 @@ esac exec $CONFIG_SHELL $as_opts "$as_myself" ${1+"$@"} # Admittedly, this is quite paranoid, since all the known shells bail # out after a failed `exec'. -$as_echo "$0: could not re-execute with $CONFIG_SHELL" >&2 +printf "%s\n" "$0: could not re-execute with $CONFIG_SHELL" >&2 exit 255 fi - if test x$as_have_required = xno; then : - $as_echo "$0: This script requires a shell more modern than all" - $as_echo "$0: the shells that I found on your system." - if test x${ZSH_VERSION+set} = xset ; then - $as_echo "$0: In particular, zsh $ZSH_VERSION has bugs and should" - $as_echo "$0: be upgraded to zsh 4.3.4 or later." + if test x$as_have_required = xno +then : + printf "%s\n" "$0: This script requires a shell more modern than all" + printf "%s\n" "$0: the shells that I found on your system." + if test ${ZSH_VERSION+y} ; then + printf "%s\n" "$0: In particular, zsh $ZSH_VERSION has bugs and should" + printf "%s\n" "$0: be upgraded to zsh 4.3.4 or later." else - $as_echo "$0: Please tell bug-autoconf@gnu.org and + printf "%s\n" "$0: Please tell bug-autoconf@gnu.org and $0: https://github.com/tanersener/ffmpeg-kit/issues/new $0: about your system, including any error possibly output $0: before this message. Then install a modern shell, or @@ -303,6 +304,7 @@ as_fn_unset () } as_unset=as_fn_unset + # as_fn_set_status STATUS # ----------------------- # Set $? to STATUS, without forking. @@ -320,6 +322,14 @@ as_fn_exit () as_fn_set_status $1 exit $1 } # as_fn_exit +# as_fn_nop +# --------- +# Do nothing but, unlike ":", preserve the value of $?. +as_fn_nop () +{ + return $? +} +as_nop=as_fn_nop # as_fn_mkdir_p # ------------- @@ -334,7 +344,7 @@ as_fn_mkdir_p () as_dirs= while :; do case $as_dir in #( - *\'*) as_qdir=`$as_echo "$as_dir" | sed "s/'/'\\\\\\\\''/g"`;; #'( + *\'*) as_qdir=`printf "%s\n" "$as_dir" | sed "s/'/'\\\\\\\\''/g"`;; #'( *) as_qdir=$as_dir;; esac as_dirs="'$as_qdir' $as_dirs" @@ -343,7 +353,7 @@ $as_expr X"$as_dir" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ X"$as_dir" : 'X\(//\)[^/]' \| \ X"$as_dir" : 'X\(//\)$' \| \ X"$as_dir" : 'X\(/\)' \| . 2>/dev/null || -$as_echo X"$as_dir" | +printf "%s\n" X"$as_dir" | sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ s//\1/ q @@ -382,12 +392,13 @@ as_fn_executable_p () # advantage of any shell optimizations that allow amortized linear growth over # repeated appends, instead of the typical quadratic growth present in naive # implementations. -if (eval "as_var=1; as_var+=2; test x\$as_var = x12") 2>/dev/null; then : +if (eval "as_var=1; as_var+=2; test x\$as_var = x12") 2>/dev/null +then : eval 'as_fn_append () { eval $1+=\$2 }' -else +else $as_nop as_fn_append () { eval $1=\$$1\$2 @@ -399,18 +410,27 @@ fi # as_fn_append # Perform arithmetic evaluation on the ARGs, and store the result in the # global $as_val. Take advantage of shells that can avoid forks. The arguments # must be portable across $(()) and expr. -if (eval "test \$(( 1 + 1 )) = 2") 2>/dev/null; then : +if (eval "test \$(( 1 + 1 )) = 2") 2>/dev/null +then : eval 'as_fn_arith () { as_val=$(( $* )) }' -else +else $as_nop as_fn_arith () { as_val=`expr "$@" || test $? -eq 1` } fi # as_fn_arith +# as_fn_nop +# --------- +# Do nothing but, unlike ":", preserve the value of $?. +as_fn_nop () +{ + return $? +} +as_nop=as_fn_nop # as_fn_error STATUS ERROR [LINENO LOG_FD] # ---------------------------------------- @@ -422,9 +442,9 @@ as_fn_error () as_status=$1; test $as_status -eq 0 && as_status=1 if test "$4"; then as_lineno=${as_lineno-"$3"} as_lineno_stack=as_lineno_stack=$as_lineno_stack - $as_echo "$as_me:${as_lineno-$LINENO}: error: $2" >&$4 + printf "%s\n" "$as_me:${as_lineno-$LINENO}: error: $2" >&$4 fi - $as_echo "$as_me: error: $2" >&2 + printf "%s\n" "$as_me: error: $2" >&2 as_fn_exit $as_status } # as_fn_error @@ -451,7 +471,7 @@ as_me=`$as_basename -- "$0" || $as_expr X/"$0" : '.*/\([^/][^/]*\)/*$' \| \ X"$0" : 'X\(//\)$' \| \ X"$0" : 'X\(/\)' \| . 2>/dev/null || -$as_echo X/"$0" | +printf "%s\n" X/"$0" | sed '/^.*\/\([^/][^/]*\)\/*$/{ s//\1/ q @@ -495,7 +515,7 @@ as_cr_alnum=$as_cr_Letters$as_cr_digits s/-\n.*// ' >$as_me.lineno && chmod +x "$as_me.lineno" || - { $as_echo "$as_me: error: cannot create $as_me.lineno; rerun with a POSIX shell" >&2; as_fn_exit 1; } + { printf "%s\n" "$as_me: error: cannot create $as_me.lineno; rerun with a POSIX shell" >&2; as_fn_exit 1; } # If we had to re-execute with $CONFIG_SHELL, we're ensured to have # already done that, so ensure we don't try to do so again and fall @@ -509,6 +529,10 @@ as_cr_alnum=$as_cr_Letters$as_cr_digits exit } + +# Determine whether it's possible to make 'echo' print without a newline. +# These variables are no longer used directly by Autoconf, but are AC_SUBSTed +# for compatibility with existing Makefiles. ECHO_C= ECHO_N= ECHO_T= case `echo -n x` in #((((( -n*) @@ -522,6 +546,13 @@ case `echo -n x` in #((((( ECHO_N='-n';; esac +# For backward compatibility with old third-party macros, we provide +# the shell variables $as_echo and $as_echo_n. New code should use +# AS_ECHO(["message"]) and AS_ECHO_N(["message"]), respectively. +as_echo='printf %s\n' +as_echo_n='printf %s' + + rm -f conf$$ conf$$.exe conf$$.file if test -d conf$$.dir; then rm -f conf$$.dir/conf$$.file @@ -591,48 +622,44 @@ MAKEFLAGS= # Identity of this package. PACKAGE_NAME='ffmpeg-kit' PACKAGE_TARNAME='ffmpeg-kit' -PACKAGE_VERSION='4.4' -PACKAGE_STRING='ffmpeg-kit 4.4' +PACKAGE_VERSION='4.5' +PACKAGE_STRING='ffmpeg-kit 4.5' PACKAGE_BUGREPORT='https://github.com/tanersener/ffmpeg-kit/issues/new' PACKAGE_URL='' ac_unique_file="src/FFmpegKit.m" # Factoring default headers for most tests. ac_includes_default="\ -#include -#ifdef HAVE_SYS_TYPES_H -# include -#endif -#ifdef HAVE_SYS_STAT_H -# include +#include +#ifdef HAVE_STDIO_H +# include #endif -#ifdef STDC_HEADERS +#ifdef HAVE_STDLIB_H # include -# include -#else -# ifdef HAVE_STDLIB_H -# include -# endif #endif #ifdef HAVE_STRING_H -# if !defined STDC_HEADERS && defined HAVE_MEMORY_H -# include -# endif # include #endif -#ifdef HAVE_STRINGS_H -# include -#endif #ifdef HAVE_INTTYPES_H # include #endif #ifdef HAVE_STDINT_H # include #endif +#ifdef HAVE_STRINGS_H +# include +#endif +#ifdef HAVE_SYS_TYPES_H +# include +#endif +#ifdef HAVE_SYS_STAT_H +# include +#endif #ifdef HAVE_UNISTD_H # include #endif" +ac_header_c_list= ac_subst_vars='am__EXEEXT_FALSE am__EXEEXT_TRUE LTLIBOBJS @@ -655,9 +682,11 @@ ac_ct_DUMPBIN DUMPBIN LD FGREP +EGREP +GREP SED LIBTOOL -FFMPEG_LIBS +FFMPEG_FRAMEWORKS am__fastdepOBJC_FALSE am__fastdepOBJC_TRUE OBJCDEPMODE @@ -666,9 +695,6 @@ OBJCFLAGS OBJC ac_ct_AR AR -EGREP -GREP -CPP am__fastdepCC_FALSE am__fastdepCC_TRUE CCDEPMODE @@ -700,6 +726,9 @@ AM_BACKSLASH AM_DEFAULT_VERBOSITY AM_DEFAULT_V AM_V +CSCOPE +ETAGS +CTAGS am__untar am__tar AMTAR @@ -742,6 +771,7 @@ infodir docdir oldincludedir includedir +runstatedir localstatedir sharedstatedir sysconfdir @@ -786,7 +816,6 @@ CFLAGS LDFLAGS LIBS CPPFLAGS -CPP OBJC OBJCFLAGS LT_SYS_LIBRARY_PATH' @@ -828,6 +857,7 @@ datadir='${datarootdir}' sysconfdir='${prefix}/etc' sharedstatedir='${prefix}/com' localstatedir='${prefix}/var' +runstatedir='${localstatedir}/run' includedir='${prefix}/include' oldincludedir='/usr/include' docdir='${datarootdir}/doc/${PACKAGE_TARNAME}' @@ -857,8 +887,6 @@ do *) ac_optarg=yes ;; esac - # Accept the important Cygnus configure options, so we can diagnose typos. - case $ac_dashdash$ac_option in --) ac_dashdash=yes ;; @@ -899,9 +927,9 @@ do ac_useropt=`expr "x$ac_option" : 'x-*disable-\(.*\)'` # Reject names that are not valid shell variable names. expr "x$ac_useropt" : ".*[^-+._$as_cr_alnum]" >/dev/null && - as_fn_error $? "invalid feature name: $ac_useropt" + as_fn_error $? "invalid feature name: \`$ac_useropt'" ac_useropt_orig=$ac_useropt - ac_useropt=`$as_echo "$ac_useropt" | sed 's/[-+.]/_/g'` + ac_useropt=`printf "%s\n" "$ac_useropt" | sed 's/[-+.]/_/g'` case $ac_user_opts in *" "enable_$ac_useropt" @@ -925,9 +953,9 @@ do ac_useropt=`expr "x$ac_option" : 'x-*enable-\([^=]*\)'` # Reject names that are not valid shell variable names. expr "x$ac_useropt" : ".*[^-+._$as_cr_alnum]" >/dev/null && - as_fn_error $? "invalid feature name: $ac_useropt" + as_fn_error $? "invalid feature name: \`$ac_useropt'" ac_useropt_orig=$ac_useropt - ac_useropt=`$as_echo "$ac_useropt" | sed 's/[-+.]/_/g'` + ac_useropt=`printf "%s\n" "$ac_useropt" | sed 's/[-+.]/_/g'` case $ac_user_opts in *" "enable_$ac_useropt" @@ -1080,6 +1108,15 @@ do | -silent | --silent | --silen | --sile | --sil) silent=yes ;; + -runstatedir | --runstatedir | --runstatedi | --runstated \ + | --runstate | --runstat | --runsta | --runst | --runs \ + | --run | --ru | --r) + ac_prev=runstatedir ;; + -runstatedir=* | --runstatedir=* | --runstatedi=* | --runstated=* \ + | --runstate=* | --runstat=* | --runsta=* | --runst=* | --runs=* \ + | --run=* | --ru=* | --r=*) + runstatedir=$ac_optarg ;; + -sbindir | --sbindir | --sbindi | --sbind | --sbin | --sbi | --sb) ac_prev=sbindir ;; -sbindir=* | --sbindir=* | --sbindi=* | --sbind=* | --sbin=* \ @@ -1129,9 +1166,9 @@ do ac_useropt=`expr "x$ac_option" : 'x-*with-\([^=]*\)'` # Reject names that are not valid shell variable names. expr "x$ac_useropt" : ".*[^-+._$as_cr_alnum]" >/dev/null && - as_fn_error $? "invalid package name: $ac_useropt" + as_fn_error $? "invalid package name: \`$ac_useropt'" ac_useropt_orig=$ac_useropt - ac_useropt=`$as_echo "$ac_useropt" | sed 's/[-+.]/_/g'` + ac_useropt=`printf "%s\n" "$ac_useropt" | sed 's/[-+.]/_/g'` case $ac_user_opts in *" "with_$ac_useropt" @@ -1145,9 +1182,9 @@ do ac_useropt=`expr "x$ac_option" : 'x-*without-\(.*\)'` # Reject names that are not valid shell variable names. expr "x$ac_useropt" : ".*[^-+._$as_cr_alnum]" >/dev/null && - as_fn_error $? "invalid package name: $ac_useropt" + as_fn_error $? "invalid package name: \`$ac_useropt'" ac_useropt_orig=$ac_useropt - ac_useropt=`$as_echo "$ac_useropt" | sed 's/[-+.]/_/g'` + ac_useropt=`printf "%s\n" "$ac_useropt" | sed 's/[-+.]/_/g'` case $ac_user_opts in *" "with_$ac_useropt" @@ -1191,9 +1228,9 @@ Try \`$0 --help' for more information" *) # FIXME: should be removed in autoconf 3.0. - $as_echo "$as_me: WARNING: you should use --build, --host, --target" >&2 + printf "%s\n" "$as_me: WARNING: you should use --build, --host, --target" >&2 expr "x$ac_option" : ".*[^-._$as_cr_alnum]" >/dev/null && - $as_echo "$as_me: WARNING: invalid host type: $ac_option" >&2 + printf "%s\n" "$as_me: WARNING: invalid host type: $ac_option" >&2 : "${build_alias=$ac_option} ${host_alias=$ac_option} ${target_alias=$ac_option}" ;; @@ -1209,7 +1246,7 @@ if test -n "$ac_unrecognized_opts"; then case $enable_option_checking in no) ;; fatal) as_fn_error $? "unrecognized options: $ac_unrecognized_opts" ;; - *) $as_echo "$as_me: WARNING: unrecognized options: $ac_unrecognized_opts" >&2 ;; + *) printf "%s\n" "$as_me: WARNING: unrecognized options: $ac_unrecognized_opts" >&2 ;; esac fi @@ -1217,7 +1254,7 @@ fi for ac_var in exec_prefix prefix bindir sbindir libexecdir datarootdir \ datadir sysconfdir sharedstatedir localstatedir includedir \ oldincludedir docdir infodir htmldir dvidir pdfdir psdir \ - libdir localedir mandir + libdir localedir mandir runstatedir do eval ac_val=\$$ac_var # Remove trailing slashes. @@ -1273,7 +1310,7 @@ $as_expr X"$as_myself" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ X"$as_myself" : 'X\(//\)[^/]' \| \ X"$as_myself" : 'X\(//\)$' \| \ X"$as_myself" : 'X\(/\)' \| . 2>/dev/null || -$as_echo X"$as_myself" | +printf "%s\n" X"$as_myself" | sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ s//\1/ q @@ -1330,7 +1367,7 @@ if test "$ac_init_help" = "long"; then # Omit some internal or obsolete options to make the list less imposing. # This message is too long to be a string in the A/UX 3.1 sh. cat <<_ACEOF -\`configure' configures ffmpeg-kit 4.4 to adapt to many kinds of systems. +\`configure' configures ffmpeg-kit 4.5 to adapt to many kinds of systems. Usage: $0 [OPTION]... [VAR=VALUE]... @@ -1370,6 +1407,7 @@ Fine tuning of the installation directories: --sysconfdir=DIR read-only single-machine data [PREFIX/etc] --sharedstatedir=DIR modifiable architecture-independent data [PREFIX/com] --localstatedir=DIR modifiable single-machine data [PREFIX/var] + --runstatedir=DIR modifiable per-process data [LOCALSTATEDIR/run] --libdir=DIR object code libraries [EPREFIX/lib] --includedir=DIR C header files [PREFIX/include] --oldincludedir=DIR C header files for non-gcc [/usr/include] @@ -1400,7 +1438,7 @@ fi if test -n "$ac_init_help"; then case $ac_init_help in - short | recursive ) echo "Configuration of ffmpeg-kit 4.4:";; + short | recursive ) echo "Configuration of ffmpeg-kit 4.5:";; esac cat <<\_ACEOF @@ -1444,7 +1482,6 @@ Some influential environment variables: LIBS libraries to pass to the linker, e.g. -l CPPFLAGS (Objective) C/C++ preprocessor flags, e.g. -I if you have headers in a nonstandard directory - CPP C preprocessor OBJC Objective C compiler command OBJCFLAGS Objective C compiler flags LT_SYS_LIBRARY_PATH @@ -1469,9 +1506,9 @@ if test "$ac_init_help" = "recursive"; then case "$ac_dir" in .) ac_dir_suffix= ac_top_builddir_sub=. ac_top_build_prefix= ;; *) - ac_dir_suffix=/`$as_echo "$ac_dir" | sed 's|^\.[\\/]||'` + ac_dir_suffix=/`printf "%s\n" "$ac_dir" | sed 's|^\.[\\/]||'` # A ".." for each directory in $ac_dir_suffix. - ac_top_builddir_sub=`$as_echo "$ac_dir_suffix" | sed 's|/[^\\/]*|/..|g;s|/||'` + ac_top_builddir_sub=`printf "%s\n" "$ac_dir_suffix" | sed 's|/[^\\/]*|/..|g;s|/||'` case $ac_top_builddir_sub in "") ac_top_builddir_sub=. ac_top_build_prefix= ;; *) ac_top_build_prefix=$ac_top_builddir_sub/ ;; @@ -1499,7 +1536,8 @@ esac ac_abs_srcdir=$ac_abs_top_srcdir$ac_dir_suffix cd "$ac_dir" || { ac_status=$?; continue; } - # Check for guested configure. + # Check for configure.gnu first; this name is used for a wrapper for + # Metaconfig's "Configure" on case-insensitive file systems. if test -f "$ac_srcdir/configure.gnu"; then echo && $SHELL "$ac_srcdir/configure.gnu" --help=recursive @@ -1507,7 +1545,7 @@ ac_abs_srcdir=$ac_abs_top_srcdir$ac_dir_suffix echo && $SHELL "$ac_srcdir/configure" --help=recursive else - $as_echo "$as_me: WARNING: no configuration information is in $ac_dir" >&2 + printf "%s\n" "$as_me: WARNING: no configuration information is in $ac_dir" >&2 fi || ac_status=$? cd "$ac_pwd" || { ac_status=$?; break; } done @@ -1516,10 +1554,10 @@ fi test -n "$ac_init_help" && exit $ac_status if $ac_init_version; then cat <<\_ACEOF -ffmpeg-kit configure 4.4 -generated by GNU Autoconf 2.69 +ffmpeg-kit configure 4.5 +generated by GNU Autoconf 2.71 -Copyright (C) 2012 Free Software Foundation, Inc. +Copyright (C) 2021 Free Software Foundation, Inc. This configure script is free software; the Free Software Foundation gives unlimited permission to copy, distribute and modify it. _ACEOF @@ -1536,14 +1574,14 @@ fi ac_fn_c_try_compile () { as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack - rm -f conftest.$ac_objext + rm -f conftest.$ac_objext conftest.beam if { { ac_try="$ac_compile" case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" -$as_echo "$ac_try_echo"; } >&5 +printf "%s\n" "$ac_try_echo"; } >&5 (eval "$ac_compile") 2>conftest.err ac_status=$? if test -s conftest.err; then @@ -1551,14 +1589,15 @@ $as_echo "$ac_try_echo"; } >&5 cat conftest.er1 >&5 mv -f conftest.er1 conftest.err fi - $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; } && { test -z "$ac_c_werror_flag" || test ! -s conftest.err - } && test -s conftest.$ac_objext; then : + } && test -s conftest.$ac_objext +then : ac_retval=0 -else - $as_echo "$as_me: failed program was:" >&5 +else $as_nop + printf "%s\n" "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 ac_retval=1 @@ -1570,8 +1609,8 @@ fi # ac_fn_c_try_run LINENO # ---------------------- -# Try to link conftest.$ac_ext, and return whether this succeeded. Assumes -# that executables *can* be run. +# Try to run conftest.$ac_ext, and return whether this succeeded. Assumes that +# executables *can* be run. ac_fn_c_try_run () { as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack @@ -1581,25 +1620,26 @@ case "(($ac_try" in *) ac_try_echo=$ac_try;; esac eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" -$as_echo "$ac_try_echo"; } >&5 +printf "%s\n" "$ac_try_echo"; } >&5 (eval "$ac_link") 2>&5 ac_status=$? - $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; } && { ac_try='./conftest$ac_exeext' { { case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" -$as_echo "$ac_try_echo"; } >&5 +printf "%s\n" "$ac_try_echo"; } >&5 (eval "$ac_try") 2>&5 ac_status=$? - $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 - test $ac_status = 0; }; }; then : + printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; }; } +then : ac_retval=0 -else - $as_echo "$as_me: program exited with status $ac_status" >&5 - $as_echo "$as_me: failed program was:" >&5 +else $as_nop + printf "%s\n" "$as_me: program exited with status $ac_status" >&5 + printf "%s\n" "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 ac_retval=$ac_status @@ -1610,43 +1650,6 @@ fi } # ac_fn_c_try_run -# ac_fn_c_try_cpp LINENO -# ---------------------- -# Try to preprocess conftest.$ac_ext, and return whether this succeeded. -ac_fn_c_try_cpp () -{ - as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack - if { { ac_try="$ac_cpp conftest.$ac_ext" -case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" -$as_echo "$ac_try_echo"; } >&5 - (eval "$ac_cpp conftest.$ac_ext") 2>conftest.err - ac_status=$? - if test -s conftest.err; then - grep -v '^ *+' conftest.err >conftest.er1 - cat conftest.er1 >&5 - mv -f conftest.er1 conftest.err - fi - $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 - test $ac_status = 0; } > conftest.i && { - test -z "$ac_c_preproc_warn_flag$ac_c_werror_flag" || - test ! -s conftest.err - }; then : - ac_retval=0 -else - $as_echo "$as_me: failed program was:" >&5 -sed 's/^/| /' conftest.$ac_ext >&5 - - ac_retval=1 -fi - eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno - as_fn_set_status $ac_retval - -} # ac_fn_c_try_cpp - # ac_fn_c_check_header_compile LINENO HEADER VAR INCLUDES # ------------------------------------------------------- # Tests whether HEADER exists and can be compiled using the include files in @@ -1654,26 +1657,28 @@ fi ac_fn_c_check_header_compile () { as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack - { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $2" >&5 -$as_echo_n "checking for $2... " >&6; } -if eval \${$3+:} false; then : - $as_echo_n "(cached) " >&6 -else + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $2" >&5 +printf %s "checking for $2... " >&6; } +if eval test \${$3+y} +then : + printf %s "(cached) " >&6 +else $as_nop cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ $4 #include <$2> _ACEOF -if ac_fn_c_try_compile "$LINENO"; then : +if ac_fn_c_try_compile "$LINENO" +then : eval "$3=yes" -else +else $as_nop eval "$3=no" fi -rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext +rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext fi eval ac_res=\$$3 - { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5 -$as_echo "$ac_res" >&6; } + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5 +printf "%s\n" "$ac_res" >&6; } eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno } # ac_fn_c_check_header_compile @@ -1684,14 +1689,14 @@ $as_echo "$ac_res" >&6; } ac_fn_objc_try_compile () { as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack - rm -f conftest.$ac_objext + rm -f conftest.$ac_objext conftest.beam if { { ac_try="$ac_compile" case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" -$as_echo "$ac_try_echo"; } >&5 +printf "%s\n" "$ac_try_echo"; } >&5 (eval "$ac_compile") 2>conftest.err ac_status=$? if test -s conftest.err; then @@ -1699,14 +1704,15 @@ $as_echo "$ac_try_echo"; } >&5 cat conftest.er1 >&5 mv -f conftest.er1 conftest.err fi - $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; } && { test -z "$ac_objc_werror_flag" || test ! -s conftest.err - } && test -s conftest.$ac_objext; then : + } && test -s conftest.$ac_objext +then : ac_retval=0 -else - $as_echo "$as_me: failed program was:" >&5 +else $as_nop + printf "%s\n" "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 ac_retval=1 @@ -1722,14 +1728,14 @@ fi ac_fn_c_try_link () { as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack - rm -f conftest.$ac_objext conftest$ac_exeext + rm -f conftest.$ac_objext conftest.beam conftest$ac_exeext if { { ac_try="$ac_link" case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" -$as_echo "$ac_try_echo"; } >&5 +printf "%s\n" "$ac_try_echo"; } >&5 (eval "$ac_link") 2>conftest.err ac_status=$? if test -s conftest.err; then @@ -1737,17 +1743,18 @@ $as_echo "$ac_try_echo"; } >&5 cat conftest.er1 >&5 mv -f conftest.er1 conftest.err fi - $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; } && { test -z "$ac_c_werror_flag" || test ! -s conftest.err } && test -s conftest$ac_exeext && { test "$cross_compiling" = yes || test -x conftest$ac_exeext - }; then : + } +then : ac_retval=0 -else - $as_echo "$as_me: failed program was:" >&5 +else $as_nop + printf "%s\n" "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 ac_retval=1 @@ -1768,11 +1775,12 @@ fi ac_fn_c_check_func () { as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack - { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $2" >&5 -$as_echo_n "checking for $2... " >&6; } -if eval \${$3+:} false; then : - $as_echo_n "(cached) " >&6 -else + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $2" >&5 +printf %s "checking for $2... " >&6; } +if eval test \${$3+y} +then : + printf %s "(cached) " >&6 +else $as_nop cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ /* Define $2 to an innocuous variant, in case declares $2. @@ -1780,16 +1788,9 @@ else #define $2 innocuous_$2 /* System header to define __stub macros and hopefully few prototypes, - which can conflict with char $2 (); below. - Prefer to if __STDC__ is defined, since - exists even on freestanding compilers. */ - -#ifdef __STDC__ -# include -#else -# include -#endif + which can conflict with char $2 (); below. */ +#include #undef $2 /* Override any GCC internal prototype to avoid an error. @@ -1807,119 +1808,29 @@ choke me #endif int -main () +main (void) { return $2 (); ; return 0; } _ACEOF -if ac_fn_c_try_link "$LINENO"; then : +if ac_fn_c_try_link "$LINENO" +then : eval "$3=yes" -else +else $as_nop eval "$3=no" fi -rm -f core conftest.err conftest.$ac_objext \ +rm -f core conftest.err conftest.$ac_objext conftest.beam \ conftest$ac_exeext conftest.$ac_ext fi eval ac_res=\$$3 - { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5 -$as_echo "$ac_res" >&6; } + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5 +printf "%s\n" "$ac_res" >&6; } eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno } # ac_fn_c_check_func -# ac_fn_c_check_header_mongrel LINENO HEADER VAR INCLUDES -# ------------------------------------------------------- -# Tests whether HEADER exists, giving a warning if it cannot be compiled using -# the include files in INCLUDES and setting the cache variable VAR -# accordingly. -ac_fn_c_check_header_mongrel () -{ - as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack - if eval \${$3+:} false; then : - { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $2" >&5 -$as_echo_n "checking for $2... " >&6; } -if eval \${$3+:} false; then : - $as_echo_n "(cached) " >&6 -fi -eval ac_res=\$$3 - { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5 -$as_echo "$ac_res" >&6; } -else - # Is the header compilable? -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking $2 usability" >&5 -$as_echo_n "checking $2 usability... " >&6; } -cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ -$4 -#include <$2> -_ACEOF -if ac_fn_c_try_compile "$LINENO"; then : - ac_header_compiler=yes -else - ac_header_compiler=no -fi -rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_header_compiler" >&5 -$as_echo "$ac_header_compiler" >&6; } - -# Is the header present? -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking $2 presence" >&5 -$as_echo_n "checking $2 presence... " >&6; } -cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ -#include <$2> -_ACEOF -if ac_fn_c_try_cpp "$LINENO"; then : - ac_header_preproc=yes -else - ac_header_preproc=no -fi -rm -f conftest.err conftest.i conftest.$ac_ext -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_header_preproc" >&5 -$as_echo "$ac_header_preproc" >&6; } - -# So? What about this header? -case $ac_header_compiler:$ac_header_preproc:$ac_c_preproc_warn_flag in #(( - yes:no: ) - { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $2: accepted by the compiler, rejected by the preprocessor!" >&5 -$as_echo "$as_me: WARNING: $2: accepted by the compiler, rejected by the preprocessor!" >&2;} - { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $2: proceeding with the compiler's result" >&5 -$as_echo "$as_me: WARNING: $2: proceeding with the compiler's result" >&2;} - ;; - no:yes:* ) - { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $2: present but cannot be compiled" >&5 -$as_echo "$as_me: WARNING: $2: present but cannot be compiled" >&2;} - { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $2: check for missing prerequisite headers?" >&5 -$as_echo "$as_me: WARNING: $2: check for missing prerequisite headers?" >&2;} - { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $2: see the Autoconf documentation" >&5 -$as_echo "$as_me: WARNING: $2: see the Autoconf documentation" >&2;} - { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $2: section \"Present But Cannot Be Compiled\"" >&5 -$as_echo "$as_me: WARNING: $2: section \"Present But Cannot Be Compiled\"" >&2;} - { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $2: proceeding with the compiler's result" >&5 -$as_echo "$as_me: WARNING: $2: proceeding with the compiler's result" >&2;} -( $as_echo "## ------------------------------------------------------------------ ## -## Report this to https://github.com/tanersener/ffmpeg-kit/issues/new ## -## ------------------------------------------------------------------ ##" - ) | sed "s/^/$as_me: WARNING: /" >&2 - ;; -esac - { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $2" >&5 -$as_echo_n "checking for $2... " >&6; } -if eval \${$3+:} false; then : - $as_echo_n "(cached) " >&6 -else - eval "$3=\$ac_header_compiler" -fi -eval ac_res=\$$3 - { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5 -$as_echo "$ac_res" >&6; } -fi - eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno - -} # ac_fn_c_check_header_mongrel - # ac_fn_c_find_intX_t LINENO BITS VAR # ----------------------------------- # Finds a signed integer type with width BITS, setting cache variable VAR @@ -1927,11 +1838,12 @@ fi ac_fn_c_find_intX_t () { as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack - { $as_echo "$as_me:${as_lineno-$LINENO}: checking for int$2_t" >&5 -$as_echo_n "checking for int$2_t... " >&6; } -if eval \${$3+:} false; then : - $as_echo_n "(cached) " >&6 -else + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for int$2_t" >&5 +printf %s "checking for int$2_t... " >&6; } +if eval test \${$3+y} +then : + printf %s "(cached) " >&6 +else $as_nop eval "$3=no" # Order is important - never check a type that is potentially smaller # than half of the expected target width. @@ -1942,7 +1854,7 @@ else $ac_includes_default enum { N = $2 / 2 - 1 }; int -main () +main (void) { static int test_array [1 - 2 * !(0 < ($ac_type) ((((($ac_type) 1 << N) << N) - 1) * 2 + 1))]; test_array [0] = 0; @@ -1952,13 +1864,14 @@ return test_array [0]; return 0; } _ACEOF -if ac_fn_c_try_compile "$LINENO"; then : +if ac_fn_c_try_compile "$LINENO" +then : cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ $ac_includes_default enum { N = $2 / 2 - 1 }; int -main () +main (void) { static int test_array [1 - 2 * !(($ac_type) ((((($ac_type) 1 << N) << N) - 1) * 2 + 1) < ($ac_type) ((((($ac_type) 1 << N) << N) - 1) * 2 + 2))]; @@ -1969,9 +1882,10 @@ return test_array [0]; return 0; } _ACEOF -if ac_fn_c_try_compile "$LINENO"; then : +if ac_fn_c_try_compile "$LINENO" +then : -else +else $as_nop case $ac_type in #( int$2_t) : eval "$3=yes" ;; #( @@ -1979,19 +1893,20 @@ else eval "$3=\$ac_type" ;; esac fi -rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext +rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext fi -rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext - if eval test \"x\$"$3"\" = x"no"; then : +rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext + if eval test \"x\$"$3"\" = x"no" +then : -else +else $as_nop break fi done fi eval ac_res=\$$3 - { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5 -$as_echo "$ac_res" >&6; } + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5 +printf "%s\n" "$ac_res" >&6; } eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno } # ac_fn_c_find_intX_t @@ -2003,17 +1918,18 @@ $as_echo "$ac_res" >&6; } ac_fn_c_check_type () { as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack - { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $2" >&5 -$as_echo_n "checking for $2... " >&6; } -if eval \${$3+:} false; then : - $as_echo_n "(cached) " >&6 -else + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $2" >&5 +printf %s "checking for $2... " >&6; } +if eval test \${$3+y} +then : + printf %s "(cached) " >&6 +else $as_nop eval "$3=no" cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ $4 int -main () +main (void) { if (sizeof ($2)) return 0; @@ -2021,12 +1937,13 @@ if (sizeof ($2)) return 0; } _ACEOF -if ac_fn_c_try_compile "$LINENO"; then : +if ac_fn_c_try_compile "$LINENO" +then : cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ $4 int -main () +main (void) { if (sizeof (($2))) return 0; @@ -2034,18 +1951,19 @@ if (sizeof (($2))) return 0; } _ACEOF -if ac_fn_c_try_compile "$LINENO"; then : +if ac_fn_c_try_compile "$LINENO" +then : -else +else $as_nop eval "$3=yes" fi -rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext +rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext fi -rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext +rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext fi eval ac_res=\$$3 - { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5 -$as_echo "$ac_res" >&6; } + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5 +printf "%s\n" "$ac_res" >&6; } eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno } # ac_fn_c_check_type @@ -2057,11 +1975,12 @@ $as_echo "$ac_res" >&6; } ac_fn_c_find_uintX_t () { as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack - { $as_echo "$as_me:${as_lineno-$LINENO}: checking for uint$2_t" >&5 -$as_echo_n "checking for uint$2_t... " >&6; } -if eval \${$3+:} false; then : - $as_echo_n "(cached) " >&6 -else + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for uint$2_t" >&5 +printf %s "checking for uint$2_t... " >&6; } +if eval test \${$3+y} +then : + printf %s "(cached) " >&6 +else $as_nop eval "$3=no" # Order is important - never check a type that is potentially smaller # than half of the expected target width. @@ -2071,7 +1990,7 @@ else /* end confdefs.h. */ $ac_includes_default int -main () +main (void) { static int test_array [1 - 2 * !((($ac_type) -1 >> ($2 / 2 - 1)) >> ($2 / 2 - 1) == 3)]; test_array [0] = 0; @@ -2081,7 +2000,8 @@ return test_array [0]; return 0; } _ACEOF -if ac_fn_c_try_compile "$LINENO"; then : +if ac_fn_c_try_compile "$LINENO" +then : case $ac_type in #( uint$2_t) : eval "$3=yes" ;; #( @@ -2089,28 +2009,49 @@ if ac_fn_c_try_compile "$LINENO"; then : eval "$3=\$ac_type" ;; esac fi -rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext - if eval test \"x\$"$3"\" = x"no"; then : +rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext + if eval test \"x\$"$3"\" = x"no" +then : -else +else $as_nop break fi done fi eval ac_res=\$$3 - { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5 -$as_echo "$ac_res" >&6; } + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5 +printf "%s\n" "$ac_res" >&6; } eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno } # ac_fn_c_find_uintX_t +ac_configure_args_raw= +for ac_arg +do + case $ac_arg in + *\'*) + ac_arg=`printf "%s\n" "$ac_arg" | sed "s/'/'\\\\\\\\''/g"` ;; + esac + as_fn_append ac_configure_args_raw " '$ac_arg'" +done + +case $ac_configure_args_raw in + *$as_nl*) + ac_safe_unquote= ;; + *) + ac_unsafe_z='|&;<>()$`\\"*?[ '' ' # This string ends in space, tab. + ac_unsafe_a="$ac_unsafe_z#~" + ac_safe_unquote="s/ '\\([^$ac_unsafe_a][^$ac_unsafe_z]*\\)'/ \\1/g" + ac_configure_args_raw=` printf "%s\n" "$ac_configure_args_raw" | sed "$ac_safe_unquote"`;; +esac + cat >config.log <<_ACEOF This file contains any messages produced by compilers while running configure, to aid debugging if configure makes a mistake. -It was created by ffmpeg-kit $as_me 4.4, which was -generated by GNU Autoconf 2.69. Invocation command line was +It was created by ffmpeg-kit $as_me 4.5, which was +generated by GNU Autoconf 2.71. Invocation command line was - $ $0 $@ + $ $0$ac_configure_args_raw _ACEOF exec 5>>config.log @@ -2143,8 +2084,12 @@ as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS - test -z "$as_dir" && as_dir=. - $as_echo "PATH: $as_dir" + case $as_dir in #((( + '') as_dir=./ ;; + */) ;; + *) as_dir=$as_dir/ ;; + esac + printf "%s\n" "PATH: $as_dir" done IFS=$as_save_IFS @@ -2179,7 +2124,7 @@ do | -silent | --silent | --silen | --sile | --sil) continue ;; *\'*) - ac_arg=`$as_echo "$ac_arg" | sed "s/'/'\\\\\\\\''/g"` ;; + ac_arg=`printf "%s\n" "$ac_arg" | sed "s/'/'\\\\\\\\''/g"` ;; esac case $ac_pass in 1) as_fn_append ac_configure_args0 " '$ac_arg'" ;; @@ -2214,11 +2159,13 @@ done # WARNING: Use '\'' to represent an apostrophe within the trap. # WARNING: Do not start the trap code with a newline, due to a FreeBSD 4.0 bug. trap 'exit_status=$? + # Sanitize IFS. + IFS=" "" $as_nl" # Save into config.log some information that might help in debugging. { echo - $as_echo "## ---------------- ## + printf "%s\n" "## ---------------- ## ## Cache variables. ## ## ---------------- ##" echo @@ -2229,8 +2176,8 @@ trap 'exit_status=$? case $ac_val in #( *${as_nl}*) case $ac_var in #( - *_cv_*) { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: cache variable $ac_var contains a newline" >&5 -$as_echo "$as_me: WARNING: cache variable $ac_var contains a newline" >&2;} ;; + *_cv_*) { printf "%s\n" "$as_me:${as_lineno-$LINENO}: WARNING: cache variable $ac_var contains a newline" >&5 +printf "%s\n" "$as_me: WARNING: cache variable $ac_var contains a newline" >&2;} ;; esac case $ac_var in #( _ | IFS | as_nl) ;; #( @@ -2254,7 +2201,7 @@ $as_echo "$as_me: WARNING: cache variable $ac_var contains a newline" >&2;} ;; ) echo - $as_echo "## ----------------- ## + printf "%s\n" "## ----------------- ## ## Output variables. ## ## ----------------- ##" echo @@ -2262,14 +2209,14 @@ $as_echo "$as_me: WARNING: cache variable $ac_var contains a newline" >&2;} ;; do eval ac_val=\$$ac_var case $ac_val in - *\'\''*) ac_val=`$as_echo "$ac_val" | sed "s/'\''/'\''\\\\\\\\'\'''\''/g"`;; + *\'\''*) ac_val=`printf "%s\n" "$ac_val" | sed "s/'\''/'\''\\\\\\\\'\'''\''/g"`;; esac - $as_echo "$ac_var='\''$ac_val'\''" + printf "%s\n" "$ac_var='\''$ac_val'\''" done | sort echo if test -n "$ac_subst_files"; then - $as_echo "## ------------------- ## + printf "%s\n" "## ------------------- ## ## File substitutions. ## ## ------------------- ##" echo @@ -2277,15 +2224,15 @@ $as_echo "$as_me: WARNING: cache variable $ac_var contains a newline" >&2;} ;; do eval ac_val=\$$ac_var case $ac_val in - *\'\''*) ac_val=`$as_echo "$ac_val" | sed "s/'\''/'\''\\\\\\\\'\'''\''/g"`;; + *\'\''*) ac_val=`printf "%s\n" "$ac_val" | sed "s/'\''/'\''\\\\\\\\'\'''\''/g"`;; esac - $as_echo "$ac_var='\''$ac_val'\''" + printf "%s\n" "$ac_var='\''$ac_val'\''" done | sort echo fi if test -s confdefs.h; then - $as_echo "## ----------- ## + printf "%s\n" "## ----------- ## ## confdefs.h. ## ## ----------- ##" echo @@ -2293,8 +2240,8 @@ $as_echo "$as_me: WARNING: cache variable $ac_var contains a newline" >&2;} ;; echo fi test "$ac_signal" != 0 && - $as_echo "$as_me: caught signal $ac_signal" - $as_echo "$as_me: exit $exit_status" + printf "%s\n" "$as_me: caught signal $ac_signal" + printf "%s\n" "$as_me: exit $exit_status" } >&5 rm -f core *.core core.conftest.* && rm -f -r conftest* confdefs* conf$$* $ac_clean_files && @@ -2308,63 +2255,48 @@ ac_signal=0 # confdefs.h avoids OS command line length limits that DEFS can exceed. rm -f -r conftest* confdefs.h -$as_echo "/* confdefs.h */" > confdefs.h +printf "%s\n" "/* confdefs.h */" > confdefs.h # Predefined preprocessor variables. -cat >>confdefs.h <<_ACEOF -#define PACKAGE_NAME "$PACKAGE_NAME" -_ACEOF +printf "%s\n" "#define PACKAGE_NAME \"$PACKAGE_NAME\"" >>confdefs.h -cat >>confdefs.h <<_ACEOF -#define PACKAGE_TARNAME "$PACKAGE_TARNAME" -_ACEOF +printf "%s\n" "#define PACKAGE_TARNAME \"$PACKAGE_TARNAME\"" >>confdefs.h -cat >>confdefs.h <<_ACEOF -#define PACKAGE_VERSION "$PACKAGE_VERSION" -_ACEOF +printf "%s\n" "#define PACKAGE_VERSION \"$PACKAGE_VERSION\"" >>confdefs.h -cat >>confdefs.h <<_ACEOF -#define PACKAGE_STRING "$PACKAGE_STRING" -_ACEOF +printf "%s\n" "#define PACKAGE_STRING \"$PACKAGE_STRING\"" >>confdefs.h -cat >>confdefs.h <<_ACEOF -#define PACKAGE_BUGREPORT "$PACKAGE_BUGREPORT" -_ACEOF +printf "%s\n" "#define PACKAGE_BUGREPORT \"$PACKAGE_BUGREPORT\"" >>confdefs.h -cat >>confdefs.h <<_ACEOF -#define PACKAGE_URL "$PACKAGE_URL" -_ACEOF +printf "%s\n" "#define PACKAGE_URL \"$PACKAGE_URL\"" >>confdefs.h # Let the site file select an alternate cache file if it wants to. # Prefer an explicitly selected file to automatically selected ones. -ac_site_file1=NONE -ac_site_file2=NONE if test -n "$CONFIG_SITE"; then - # We do not want a PATH search for config.site. - case $CONFIG_SITE in #(( - -*) ac_site_file1=./$CONFIG_SITE;; - */*) ac_site_file1=$CONFIG_SITE;; - *) ac_site_file1=./$CONFIG_SITE;; - esac + ac_site_files="$CONFIG_SITE" elif test "x$prefix" != xNONE; then - ac_site_file1=$prefix/share/config.site - ac_site_file2=$prefix/etc/config.site + ac_site_files="$prefix/share/config.site $prefix/etc/config.site" else - ac_site_file1=$ac_default_prefix/share/config.site - ac_site_file2=$ac_default_prefix/etc/config.site + ac_site_files="$ac_default_prefix/share/config.site $ac_default_prefix/etc/config.site" fi -for ac_site_file in "$ac_site_file1" "$ac_site_file2" + +for ac_site_file in $ac_site_files do - test "x$ac_site_file" = xNONE && continue - if test /dev/null != "$ac_site_file" && test -r "$ac_site_file"; then - { $as_echo "$as_me:${as_lineno-$LINENO}: loading site script $ac_site_file" >&5 -$as_echo "$as_me: loading site script $ac_site_file" >&6;} + case $ac_site_file in #( + */*) : + ;; #( + *) : + ac_site_file=./$ac_site_file ;; +esac + if test -f "$ac_site_file" && test -r "$ac_site_file"; then + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: loading site script $ac_site_file" >&5 +printf "%s\n" "$as_me: loading site script $ac_site_file" >&6;} sed 's/^/| /' "$ac_site_file" >&5 . "$ac_site_file" \ - || { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 -$as_echo "$as_me: error: in \`$ac_pwd':" >&2;} + || { { printf "%s\n" "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 +printf "%s\n" "$as_me: error: in \`$ac_pwd':" >&2;} as_fn_error $? "failed to load site script $ac_site_file See \`config.log' for more details" "$LINENO" 5; } fi @@ -2374,122 +2306,511 @@ if test -r "$cache_file"; then # Some versions of bash will fail to source /dev/null (special files # actually), so we avoid doing that. DJGPP emulates it as a regular file. if test /dev/null != "$cache_file" && test -f "$cache_file"; then - { $as_echo "$as_me:${as_lineno-$LINENO}: loading cache $cache_file" >&5 -$as_echo "$as_me: loading cache $cache_file" >&6;} + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: loading cache $cache_file" >&5 +printf "%s\n" "$as_me: loading cache $cache_file" >&6;} case $cache_file in [\\/]* | ?:[\\/]* ) . "$cache_file";; *) . "./$cache_file";; esac fi else - { $as_echo "$as_me:${as_lineno-$LINENO}: creating cache $cache_file" >&5 -$as_echo "$as_me: creating cache $cache_file" >&6;} + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: creating cache $cache_file" >&5 +printf "%s\n" "$as_me: creating cache $cache_file" >&6;} >$cache_file fi -# Check that the precious variables saved in the cache have kept the same -# value. -ac_cache_corrupted=false -for ac_var in $ac_precious_vars; do - eval ac_old_set=\$ac_cv_env_${ac_var}_set - eval ac_new_set=\$ac_env_${ac_var}_set - eval ac_old_val=\$ac_cv_env_${ac_var}_value - eval ac_new_val=\$ac_env_${ac_var}_value - case $ac_old_set,$ac_new_set in - set,) - { $as_echo "$as_me:${as_lineno-$LINENO}: error: \`$ac_var' was set to \`$ac_old_val' in the previous run" >&5 -$as_echo "$as_me: error: \`$ac_var' was set to \`$ac_old_val' in the previous run" >&2;} - ac_cache_corrupted=: ;; - ,set) - { $as_echo "$as_me:${as_lineno-$LINENO}: error: \`$ac_var' was not set in the previous run" >&5 -$as_echo "$as_me: error: \`$ac_var' was not set in the previous run" >&2;} - ac_cache_corrupted=: ;; - ,);; - *) - if test "x$ac_old_val" != "x$ac_new_val"; then - # differences in whitespace do not lead to failure. - ac_old_val_w=`echo x $ac_old_val` - ac_new_val_w=`echo x $ac_new_val` - if test "$ac_old_val_w" != "$ac_new_val_w"; then - { $as_echo "$as_me:${as_lineno-$LINENO}: error: \`$ac_var' has changed since the previous run:" >&5 -$as_echo "$as_me: error: \`$ac_var' has changed since the previous run:" >&2;} - ac_cache_corrupted=: - else - { $as_echo "$as_me:${as_lineno-$LINENO}: warning: ignoring whitespace changes in \`$ac_var' since the previous run:" >&5 -$as_echo "$as_me: warning: ignoring whitespace changes in \`$ac_var' since the previous run:" >&2;} - eval $ac_var=\$ac_old_val - fi - { $as_echo "$as_me:${as_lineno-$LINENO}: former value: \`$ac_old_val'" >&5 -$as_echo "$as_me: former value: \`$ac_old_val'" >&2;} - { $as_echo "$as_me:${as_lineno-$LINENO}: current value: \`$ac_new_val'" >&5 -$as_echo "$as_me: current value: \`$ac_new_val'" >&2;} - fi;; - esac - # Pass precious variables to config.status. - if test "$ac_new_set" = set; then - case $ac_new_val in - *\'*) ac_arg=$ac_var=`$as_echo "$ac_new_val" | sed "s/'/'\\\\\\\\''/g"` ;; - *) ac_arg=$ac_var=$ac_new_val ;; - esac - case " $ac_configure_args " in - *" '$ac_arg' "*) ;; # Avoid dups. Use of quotes ensures accuracy. - *) as_fn_append ac_configure_args " '$ac_arg'" ;; - esac - fi -done -if $ac_cache_corrupted; then - { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 -$as_echo "$as_me: error: in \`$ac_pwd':" >&2;} - { $as_echo "$as_me:${as_lineno-$LINENO}: error: changes in the environment can compromise the build" >&5 -$as_echo "$as_me: error: changes in the environment can compromise the build" >&2;} - as_fn_error $? "run \`make distclean' and/or \`rm $cache_file' and start over" "$LINENO" 5 -fi -## -------------------- ## -## Main body of script. ## -## -------------------- ## +# Test code for whether the C compiler supports C89 (global declarations) +ac_c_conftest_c89_globals=' +/* Does the compiler advertise C89 conformance? + Do not test the value of __STDC__, because some compilers set it to 0 + while being otherwise adequately conformant. */ +#if !defined __STDC__ +# error "Compiler does not advertise C89 conformance" +#endif -ac_ext=c -ac_cpp='$CPP $CPPFLAGS' -ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' -ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' -ac_compiler_gnu=$ac_cv_c_compiler_gnu +#include +#include +struct stat; +/* Most of the following tests are stolen from RCS 5.7 src/conf.sh. */ +struct buf { int x; }; +struct buf * (*rcsopen) (struct buf *, struct stat *, int); +static char *e (p, i) + char **p; + int i; +{ + return p[i]; +} +static char *f (char * (*g) (char **, int), char **p, ...) +{ + char *s; + va_list v; + va_start (v,p); + s = g (p, va_arg (v,int)); + va_end (v); + return s; +} +/* OSF 4.0 Compaq cc is some sort of almost-ANSI by default. It has + function prototypes and stuff, but not \xHH hex character constants. + These do not provoke an error unfortunately, instead are silently treated + as an "x". The following induces an error, until -std is added to get + proper ANSI mode. Curiously \x00 != x always comes out true, for an + array size at least. It is necessary to write \x00 == 0 to get something + that is true only with -std. */ +int osf4_cc_array ['\''\x00'\'' == 0 ? 1 : -1]; +/* IBM C 6 for AIX is almost-ANSI by default, but it replaces macro parameters + inside strings and character constants. */ +#define FOO(x) '\''x'\'' +int xlc6_cc_array[FOO(a) == '\''x'\'' ? 1 : -1]; +int test (int i, double x); +struct s1 {int (*f) (int a);}; +struct s2 {int (*f) (double a);}; +int pairnames (int, char **, int *(*)(struct buf *, struct stat *, int), + int, int);' +# Test code for whether the C compiler supports C89 (body of main). +ac_c_conftest_c89_main=' +ok |= (argc == 0 || f (e, argv, 0) != argv[0] || f (e, argv, 1) != argv[1]); +' -am__api_version='1.16' +# Test code for whether the C compiler supports C99 (global declarations) +ac_c_conftest_c99_globals=' +// Does the compiler advertise C99 conformance? +#if !defined __STDC_VERSION__ || __STDC_VERSION__ < 199901L +# error "Compiler does not advertise C99 conformance" +#endif -ac_aux_dir= -for ac_dir in "$srcdir" "$srcdir/.." "$srcdir/../.."; do - if test -f "$ac_dir/install-sh"; then - ac_aux_dir=$ac_dir - ac_install_sh="$ac_aux_dir/install-sh -c" - break - elif test -f "$ac_dir/install.sh"; then - ac_aux_dir=$ac_dir - ac_install_sh="$ac_aux_dir/install.sh -c" - break - elif test -f "$ac_dir/shtool"; then - ac_aux_dir=$ac_dir - ac_install_sh="$ac_aux_dir/shtool install -c" - break - fi -done -if test -z "$ac_aux_dir"; then - as_fn_error $? "cannot find install-sh, install.sh, or shtool in \"$srcdir\" \"$srcdir/..\" \"$srcdir/../..\"" "$LINENO" 5 -fi +#include +extern int puts (const char *); +extern int printf (const char *, ...); +extern int dprintf (int, const char *, ...); +extern void *malloc (size_t); + +// Check varargs macros. These examples are taken from C99 6.10.3.5. +// dprintf is used instead of fprintf to avoid needing to declare +// FILE and stderr. +#define debug(...) dprintf (2, __VA_ARGS__) +#define showlist(...) puts (#__VA_ARGS__) +#define report(test,...) ((test) ? puts (#test) : printf (__VA_ARGS__)) +static void +test_varargs_macros (void) +{ + int x = 1234; + int y = 5678; + debug ("Flag"); + debug ("X = %d\n", x); + showlist (The first, second, and third items.); + report (x>y, "x is %d but y is %d", x, y); +} -# These three variables are undocumented and unsupported, +// Check long long types. +#define BIG64 18446744073709551615ull +#define BIG32 4294967295ul +#define BIG_OK (BIG64 / BIG32 == 4294967297ull && BIG64 % BIG32 == 0) +#if !BIG_OK + #error "your preprocessor is broken" +#endif +#if BIG_OK +#else + #error "your preprocessor is broken" +#endif +static long long int bignum = -9223372036854775807LL; +static unsigned long long int ubignum = BIG64; + +struct incomplete_array +{ + int datasize; + double data[]; +}; + +struct named_init { + int number; + const wchar_t *name; + double average; +}; + +typedef const char *ccp; + +static inline int +test_restrict (ccp restrict text) +{ + // See if C++-style comments work. + // Iterate through items via the restricted pointer. + // Also check for declarations in for loops. + for (unsigned int i = 0; *(text+i) != '\''\0'\''; ++i) + continue; + return 0; +} + +// Check varargs and va_copy. +static bool +test_varargs (const char *format, ...) +{ + va_list args; + va_start (args, format); + va_list args_copy; + va_copy (args_copy, args); + + const char *str = ""; + int number = 0; + float fnumber = 0; + + while (*format) + { + switch (*format++) + { + case '\''s'\'': // string + str = va_arg (args_copy, const char *); + break; + case '\''d'\'': // int + number = va_arg (args_copy, int); + break; + case '\''f'\'': // float + fnumber = va_arg (args_copy, double); + break; + default: + break; + } + } + va_end (args_copy); + va_end (args); + + return *str && number && fnumber; +} +' + +# Test code for whether the C compiler supports C99 (body of main). +ac_c_conftest_c99_main=' + // Check bool. + _Bool success = false; + success |= (argc != 0); + + // Check restrict. + if (test_restrict ("String literal") == 0) + success = true; + char *restrict newvar = "Another string"; + + // Check varargs. + success &= test_varargs ("s, d'\'' f .", "string", 65, 34.234); + test_varargs_macros (); + + // Check flexible array members. + struct incomplete_array *ia = + malloc (sizeof (struct incomplete_array) + (sizeof (double) * 10)); + ia->datasize = 10; + for (int i = 0; i < ia->datasize; ++i) + ia->data[i] = i * 1.234; + + // Check named initializers. + struct named_init ni = { + .number = 34, + .name = L"Test wide string", + .average = 543.34343, + }; + + ni.number = 58; + + int dynamic_array[ni.number]; + dynamic_array[0] = argv[0][0]; + dynamic_array[ni.number - 1] = 543; + + // work around unused variable warnings + ok |= (!success || bignum == 0LL || ubignum == 0uLL || newvar[0] == '\''x'\'' + || dynamic_array[ni.number - 1] != 543); +' + +# Test code for whether the C compiler supports C11 (global declarations) +ac_c_conftest_c11_globals=' +// Does the compiler advertise C11 conformance? +#if !defined __STDC_VERSION__ || __STDC_VERSION__ < 201112L +# error "Compiler does not advertise C11 conformance" +#endif + +// Check _Alignas. +char _Alignas (double) aligned_as_double; +char _Alignas (0) no_special_alignment; +extern char aligned_as_int; +char _Alignas (0) _Alignas (int) aligned_as_int; + +// Check _Alignof. +enum +{ + int_alignment = _Alignof (int), + int_array_alignment = _Alignof (int[100]), + char_alignment = _Alignof (char) +}; +_Static_assert (0 < -_Alignof (int), "_Alignof is signed"); + +// Check _Noreturn. +int _Noreturn does_not_return (void) { for (;;) continue; } + +// Check _Static_assert. +struct test_static_assert +{ + int x; + _Static_assert (sizeof (int) <= sizeof (long int), + "_Static_assert does not work in struct"); + long int y; +}; + +// Check UTF-8 literals. +#define u8 syntax error! +char const utf8_literal[] = u8"happens to be ASCII" "another string"; + +// Check duplicate typedefs. +typedef long *long_ptr; +typedef long int *long_ptr; +typedef long_ptr long_ptr; + +// Anonymous structures and unions -- taken from C11 6.7.2.1 Example 1. +struct anonymous +{ + union { + struct { int i; int j; }; + struct { int k; long int l; } w; + }; + int m; +} v1; +' + +# Test code for whether the C compiler supports C11 (body of main). +ac_c_conftest_c11_main=' + _Static_assert ((offsetof (struct anonymous, i) + == offsetof (struct anonymous, w.k)), + "Anonymous union alignment botch"); + v1.i = 2; + v1.w.k = 5; + ok |= v1.i != 5; +' + +# Test code for whether the C compiler supports C11 (complete). +ac_c_conftest_c11_program="${ac_c_conftest_c89_globals} +${ac_c_conftest_c99_globals} +${ac_c_conftest_c11_globals} + +int +main (int argc, char **argv) +{ + int ok = 0; + ${ac_c_conftest_c89_main} + ${ac_c_conftest_c99_main} + ${ac_c_conftest_c11_main} + return ok; +} +" + +# Test code for whether the C compiler supports C99 (complete). +ac_c_conftest_c99_program="${ac_c_conftest_c89_globals} +${ac_c_conftest_c99_globals} + +int +main (int argc, char **argv) +{ + int ok = 0; + ${ac_c_conftest_c89_main} + ${ac_c_conftest_c99_main} + return ok; +} +" + +# Test code for whether the C compiler supports C89 (complete). +ac_c_conftest_c89_program="${ac_c_conftest_c89_globals} + +int +main (int argc, char **argv) +{ + int ok = 0; + ${ac_c_conftest_c89_main} + return ok; +} +" + +as_fn_append ac_header_c_list " stdio.h stdio_h HAVE_STDIO_H" +as_fn_append ac_header_c_list " stdlib.h stdlib_h HAVE_STDLIB_H" +as_fn_append ac_header_c_list " string.h string_h HAVE_STRING_H" +as_fn_append ac_header_c_list " inttypes.h inttypes_h HAVE_INTTYPES_H" +as_fn_append ac_header_c_list " stdint.h stdint_h HAVE_STDINT_H" +as_fn_append ac_header_c_list " strings.h strings_h HAVE_STRINGS_H" +as_fn_append ac_header_c_list " sys/stat.h sys_stat_h HAVE_SYS_STAT_H" +as_fn_append ac_header_c_list " sys/types.h sys_types_h HAVE_SYS_TYPES_H" +as_fn_append ac_header_c_list " unistd.h unistd_h HAVE_UNISTD_H" + +# Auxiliary files required by this configure script. +ac_aux_files="ltmain.sh ar-lib compile config.guess config.sub missing install-sh" + +# Locations in which to look for auxiliary files. +ac_aux_dir_candidates="${srcdir}${PATH_SEPARATOR}${srcdir}/..${PATH_SEPARATOR}${srcdir}/../.." + +# Search for a directory containing all of the required auxiliary files, +# $ac_aux_files, from the $PATH-style list $ac_aux_dir_candidates. +# If we don't find one directory that contains all the files we need, +# we report the set of missing files from the *first* directory in +# $ac_aux_dir_candidates and give up. +ac_missing_aux_files="" +ac_first_candidate=: +printf "%s\n" "$as_me:${as_lineno-$LINENO}: looking for aux files: $ac_aux_files" >&5 +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +as_found=false +for as_dir in $ac_aux_dir_candidates +do + IFS=$as_save_IFS + case $as_dir in #((( + '') as_dir=./ ;; + */) ;; + *) as_dir=$as_dir/ ;; + esac + as_found=: + + printf "%s\n" "$as_me:${as_lineno-$LINENO}: trying $as_dir" >&5 + ac_aux_dir_found=yes + ac_install_sh= + for ac_aux in $ac_aux_files + do + # As a special case, if "install-sh" is required, that requirement + # can be satisfied by any of "install-sh", "install.sh", or "shtool", + # and $ac_install_sh is set appropriately for whichever one is found. + if test x"$ac_aux" = x"install-sh" + then + if test -f "${as_dir}install-sh"; then + printf "%s\n" "$as_me:${as_lineno-$LINENO}: ${as_dir}install-sh found" >&5 + ac_install_sh="${as_dir}install-sh -c" + elif test -f "${as_dir}install.sh"; then + printf "%s\n" "$as_me:${as_lineno-$LINENO}: ${as_dir}install.sh found" >&5 + ac_install_sh="${as_dir}install.sh -c" + elif test -f "${as_dir}shtool"; then + printf "%s\n" "$as_me:${as_lineno-$LINENO}: ${as_dir}shtool found" >&5 + ac_install_sh="${as_dir}shtool install -c" + else + ac_aux_dir_found=no + if $ac_first_candidate; then + ac_missing_aux_files="${ac_missing_aux_files} install-sh" + else + break + fi + fi + else + if test -f "${as_dir}${ac_aux}"; then + printf "%s\n" "$as_me:${as_lineno-$LINENO}: ${as_dir}${ac_aux} found" >&5 + else + ac_aux_dir_found=no + if $ac_first_candidate; then + ac_missing_aux_files="${ac_missing_aux_files} ${ac_aux}" + else + break + fi + fi + fi + done + if test "$ac_aux_dir_found" = yes; then + ac_aux_dir="$as_dir" + break + fi + ac_first_candidate=false + + as_found=false +done +IFS=$as_save_IFS +if $as_found +then : + +else $as_nop + as_fn_error $? "cannot find required auxiliary files:$ac_missing_aux_files" "$LINENO" 5 +fi + + +# These three variables are undocumented and unsupported, # and are intended to be withdrawn in a future Autoconf release. # They can cause serious problems if a builder's source tree is in a directory # whose full name contains unusual characters. -ac_config_guess="$SHELL $ac_aux_dir/config.guess" # Please don't use this var. -ac_config_sub="$SHELL $ac_aux_dir/config.sub" # Please don't use this var. -ac_configure="$SHELL $ac_aux_dir/configure" # Please don't use this var. +if test -f "${ac_aux_dir}config.guess"; then + ac_config_guess="$SHELL ${ac_aux_dir}config.guess" +fi +if test -f "${ac_aux_dir}config.sub"; then + ac_config_sub="$SHELL ${ac_aux_dir}config.sub" +fi +if test -f "$ac_aux_dir/configure"; then + ac_configure="$SHELL ${ac_aux_dir}configure" +fi + +# Check that the precious variables saved in the cache have kept the same +# value. +ac_cache_corrupted=false +for ac_var in $ac_precious_vars; do + eval ac_old_set=\$ac_cv_env_${ac_var}_set + eval ac_new_set=\$ac_env_${ac_var}_set + eval ac_old_val=\$ac_cv_env_${ac_var}_value + eval ac_new_val=\$ac_env_${ac_var}_value + case $ac_old_set,$ac_new_set in + set,) + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: error: \`$ac_var' was set to \`$ac_old_val' in the previous run" >&5 +printf "%s\n" "$as_me: error: \`$ac_var' was set to \`$ac_old_val' in the previous run" >&2;} + ac_cache_corrupted=: ;; + ,set) + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: error: \`$ac_var' was not set in the previous run" >&5 +printf "%s\n" "$as_me: error: \`$ac_var' was not set in the previous run" >&2;} + ac_cache_corrupted=: ;; + ,);; + *) + if test "x$ac_old_val" != "x$ac_new_val"; then + # differences in whitespace do not lead to failure. + ac_old_val_w=`echo x $ac_old_val` + ac_new_val_w=`echo x $ac_new_val` + if test "$ac_old_val_w" != "$ac_new_val_w"; then + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: error: \`$ac_var' has changed since the previous run:" >&5 +printf "%s\n" "$as_me: error: \`$ac_var' has changed since the previous run:" >&2;} + ac_cache_corrupted=: + else + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: warning: ignoring whitespace changes in \`$ac_var' since the previous run:" >&5 +printf "%s\n" "$as_me: warning: ignoring whitespace changes in \`$ac_var' since the previous run:" >&2;} + eval $ac_var=\$ac_old_val + fi + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: former value: \`$ac_old_val'" >&5 +printf "%s\n" "$as_me: former value: \`$ac_old_val'" >&2;} + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: current value: \`$ac_new_val'" >&5 +printf "%s\n" "$as_me: current value: \`$ac_new_val'" >&2;} + fi;; + esac + # Pass precious variables to config.status. + if test "$ac_new_set" = set; then + case $ac_new_val in + *\'*) ac_arg=$ac_var=`printf "%s\n" "$ac_new_val" | sed "s/'/'\\\\\\\\''/g"` ;; + *) ac_arg=$ac_var=$ac_new_val ;; + esac + case " $ac_configure_args " in + *" '$ac_arg' "*) ;; # Avoid dups. Use of quotes ensures accuracy. + *) as_fn_append ac_configure_args " '$ac_arg'" ;; + esac + fi +done +if $ac_cache_corrupted; then + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 +printf "%s\n" "$as_me: error: in \`$ac_pwd':" >&2;} + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: error: changes in the environment can compromise the build" >&5 +printf "%s\n" "$as_me: error: changes in the environment can compromise the build" >&2;} + as_fn_error $? "run \`${MAKE-make} distclean' and/or \`rm $cache_file' + and start over" "$LINENO" 5 +fi +## -------------------- ## +## Main body of script. ## +## -------------------- ## + +ac_ext=c +ac_cpp='$CPP $CPPFLAGS' +ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' +ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' +ac_compiler_gnu=$ac_cv_c_compiler_gnu + -# Find a good install program. We prefer a C program (faster), + + +am__api_version='1.16' + + + + # Find a good install program. We prefer a C program (faster), # so one script is as good as another. But avoid the broken or # incompatible versions: # SysV /etc/install, /usr/sbin/install @@ -2503,20 +2824,25 @@ ac_configure="$SHELL $ac_aux_dir/configure" # Please don't use this var. # OS/2's system install, which has a completely different semantic # ./install, which can be erroneously created by make from ./install.sh. # Reject install programs that cannot install multiple files. -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for a BSD-compatible install" >&5 -$as_echo_n "checking for a BSD-compatible install... " >&6; } +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for a BSD-compatible install" >&5 +printf %s "checking for a BSD-compatible install... " >&6; } if test -z "$INSTALL"; then -if ${ac_cv_path_install+:} false; then : - $as_echo_n "(cached) " >&6 -else +if test ${ac_cv_path_install+y} +then : + printf %s "(cached) " >&6 +else $as_nop as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS - test -z "$as_dir" && as_dir=. - # Account for people who put trailing slashes in PATH elements. -case $as_dir/ in #(( - ./ | .// | /[cC]/* | \ + case $as_dir in #((( + '') as_dir=./ ;; + */) ;; + *) as_dir=$as_dir/ ;; + esac + # Account for fact that we put trailing slashes in our PATH walk. +case $as_dir in #(( + ./ | /[cC]/* | \ /etc/* | /usr/sbin/* | /usr/etc/* | /sbin/* | /usr/afsws/bin/* | \ ?:[\\/]os2[\\/]install[\\/]* | ?:[\\/]OS2[\\/]INSTALL[\\/]* | \ /usr/ucb/* ) ;; @@ -2526,13 +2852,13 @@ case $as_dir/ in #(( # by default. for ac_prog in ginstall scoinst install; do for ac_exec_ext in '' $ac_executable_extensions; do - if as_fn_executable_p "$as_dir/$ac_prog$ac_exec_ext"; then + if as_fn_executable_p "$as_dir$ac_prog$ac_exec_ext"; then if test $ac_prog = install && - grep dspmsg "$as_dir/$ac_prog$ac_exec_ext" >/dev/null 2>&1; then + grep dspmsg "$as_dir$ac_prog$ac_exec_ext" >/dev/null 2>&1; then # AIX install. It has an incompatible calling convention. : elif test $ac_prog = install && - grep pwplus "$as_dir/$ac_prog$ac_exec_ext" >/dev/null 2>&1; then + grep pwplus "$as_dir$ac_prog$ac_exec_ext" >/dev/null 2>&1; then # program-specific install script used by HP pwplus--don't use. : else @@ -2540,12 +2866,12 @@ case $as_dir/ in #(( echo one > conftest.one echo two > conftest.two mkdir conftest.dir - if "$as_dir/$ac_prog$ac_exec_ext" -c conftest.one conftest.two "`pwd`/conftest.dir" && + if "$as_dir$ac_prog$ac_exec_ext" -c conftest.one conftest.two "`pwd`/conftest.dir/" && test -s conftest.one && test -s conftest.two && test -s conftest.dir/conftest.one && test -s conftest.dir/conftest.two then - ac_cv_path_install="$as_dir/$ac_prog$ac_exec_ext -c" + ac_cv_path_install="$as_dir$ac_prog$ac_exec_ext -c" break 3 fi fi @@ -2561,7 +2887,7 @@ IFS=$as_save_IFS rm -rf conftest.one conftest.two conftest.dir fi - if test "${ac_cv_path_install+set}" = set; then + if test ${ac_cv_path_install+y}; then INSTALL=$ac_cv_path_install else # As a last resort, use the slow shell script. Don't cache a @@ -2571,8 +2897,8 @@ fi INSTALL=$ac_install_sh fi fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $INSTALL" >&5 -$as_echo "$INSTALL" >&6; } +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $INSTALL" >&5 +printf "%s\n" "$INSTALL" >&6; } # Use test -z because SunOS4 sh mishandles braces in ${var-val}. # It thinks the first close brace ends the variable substitution. @@ -2582,8 +2908,8 @@ test -z "$INSTALL_SCRIPT" && INSTALL_SCRIPT='${INSTALL}' test -z "$INSTALL_DATA" && INSTALL_DATA='${INSTALL} -m 644' -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether build environment is sane" >&5 -$as_echo_n "checking whether build environment is sane... " >&6; } +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking whether build environment is sane" >&5 +printf %s "checking whether build environment is sane... " >&6; } # Reject unsafe characters in $srcdir or the absolute working directory # name. Accept space and tab only in the latter. am_lf=' @@ -2637,8 +2963,8 @@ else as_fn_error $? "newly created file is older than distributed files! Check your system clock" "$LINENO" 5 fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 -$as_echo "yes" >&6; } +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5 +printf "%s\n" "yes" >&6; } # If we didn't sleep, we still need to ensure time stamps of config.status and # generated files are strictly newer. am_sleep_pid= @@ -2657,12 +2983,14 @@ test "$program_suffix" != NONE && # Double any \ or $. # By default was `s,x,x', remove it if useless. ac_script='s/[\\$]/&&/g;s/;s,x,x,$//' -program_transform_name=`$as_echo "$program_transform_name" | sed "$ac_script"` +program_transform_name=`printf "%s\n" "$program_transform_name" | sed "$ac_script"` + # Expand $ac_aux_dir to an absolute path. am_aux_dir=`cd "$ac_aux_dir" && pwd` -if test x"${MISSING+set}" != xset; then + + if test x"${MISSING+set}" != xset; then MISSING="\${SHELL} '$am_aux_dir/missing'" fi # Use eval to expand $SHELL @@ -2670,8 +2998,8 @@ if eval "$MISSING --is-lightweight"; then am_missing_run="$MISSING " else am_missing_run= - { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: 'missing' script is too old or missing" >&5 -$as_echo "$as_me: WARNING: 'missing' script is too old or missing" >&2;} + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: WARNING: 'missing' script is too old or missing" >&5 +printf "%s\n" "$as_me: WARNING: 'missing' script is too old or missing" >&2;} fi if test x"${install_sh+set}" != xset; then @@ -2691,11 +3019,12 @@ if test "$cross_compiling" != no; then if test -n "$ac_tool_prefix"; then # Extract the first word of "${ac_tool_prefix}strip", so it can be a program name with args. set dummy ${ac_tool_prefix}strip; ac_word=$2 -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 -$as_echo_n "checking for $ac_word... " >&6; } -if ${ac_cv_prog_STRIP+:} false; then : - $as_echo_n "(cached) " >&6 -else +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +printf %s "checking for $ac_word... " >&6; } +if test ${ac_cv_prog_STRIP+y} +then : + printf %s "(cached) " >&6 +else $as_nop if test -n "$STRIP"; then ac_cv_prog_STRIP="$STRIP" # Let the user override the test. else @@ -2703,11 +3032,15 @@ as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS - test -z "$as_dir" && as_dir=. + case $as_dir in #((( + '') as_dir=./ ;; + */) ;; + *) as_dir=$as_dir/ ;; + esac for ac_exec_ext in '' $ac_executable_extensions; do - if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then + if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then ac_cv_prog_STRIP="${ac_tool_prefix}strip" - $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 + printf "%s\n" "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5 break 2 fi done @@ -2718,11 +3051,11 @@ fi fi STRIP=$ac_cv_prog_STRIP if test -n "$STRIP"; then - { $as_echo "$as_me:${as_lineno-$LINENO}: result: $STRIP" >&5 -$as_echo "$STRIP" >&6; } + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $STRIP" >&5 +printf "%s\n" "$STRIP" >&6; } else - { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 -$as_echo "no" >&6; } + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 +printf "%s\n" "no" >&6; } fi @@ -2731,11 +3064,12 @@ if test -z "$ac_cv_prog_STRIP"; then ac_ct_STRIP=$STRIP # Extract the first word of "strip", so it can be a program name with args. set dummy strip; ac_word=$2 -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 -$as_echo_n "checking for $ac_word... " >&6; } -if ${ac_cv_prog_ac_ct_STRIP+:} false; then : - $as_echo_n "(cached) " >&6 -else +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +printf %s "checking for $ac_word... " >&6; } +if test ${ac_cv_prog_ac_ct_STRIP+y} +then : + printf %s "(cached) " >&6 +else $as_nop if test -n "$ac_ct_STRIP"; then ac_cv_prog_ac_ct_STRIP="$ac_ct_STRIP" # Let the user override the test. else @@ -2743,11 +3077,15 @@ as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS - test -z "$as_dir" && as_dir=. + case $as_dir in #((( + '') as_dir=./ ;; + */) ;; + *) as_dir=$as_dir/ ;; + esac for ac_exec_ext in '' $ac_executable_extensions; do - if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then + if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then ac_cv_prog_ac_ct_STRIP="strip" - $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 + printf "%s\n" "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5 break 2 fi done @@ -2758,11 +3096,11 @@ fi fi ac_ct_STRIP=$ac_cv_prog_ac_ct_STRIP if test -n "$ac_ct_STRIP"; then - { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_STRIP" >&5 -$as_echo "$ac_ct_STRIP" >&6; } + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_ct_STRIP" >&5 +printf "%s\n" "$ac_ct_STRIP" >&6; } else - { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 -$as_echo "no" >&6; } + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 +printf "%s\n" "no" >&6; } fi if test "x$ac_ct_STRIP" = x; then @@ -2770,8 +3108,8 @@ fi else case $cross_compiling:$ac_tool_warned in yes:) -{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 -$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 +printf "%s\n" "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} ac_tool_warned=yes ;; esac STRIP=$ac_ct_STRIP @@ -2783,25 +3121,31 @@ fi fi INSTALL_STRIP_PROGRAM="\$(install_sh) -c -s" -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for a thread-safe mkdir -p" >&5 -$as_echo_n "checking for a thread-safe mkdir -p... " >&6; } + + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for a race-free mkdir -p" >&5 +printf %s "checking for a race-free mkdir -p... " >&6; } if test -z "$MKDIR_P"; then - if ${ac_cv_path_mkdir+:} false; then : - $as_echo_n "(cached) " >&6 -else + if test ${ac_cv_path_mkdir+y} +then : + printf %s "(cached) " >&6 +else $as_nop as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH$PATH_SEPARATOR/opt/sfw/bin do IFS=$as_save_IFS - test -z "$as_dir" && as_dir=. + case $as_dir in #((( + '') as_dir=./ ;; + */) ;; + *) as_dir=$as_dir/ ;; + esac for ac_prog in mkdir gmkdir; do for ac_exec_ext in '' $ac_executable_extensions; do - as_fn_executable_p "$as_dir/$ac_prog$ac_exec_ext" || continue - case `"$as_dir/$ac_prog$ac_exec_ext" --version 2>&1` in #( - 'mkdir (GNU coreutils) '* | \ - 'mkdir (coreutils) '* | \ + as_fn_executable_p "$as_dir$ac_prog$ac_exec_ext" || continue + case `"$as_dir$ac_prog$ac_exec_ext" --version 2>&1` in #( + 'mkdir ('*'coreutils) '* | \ + 'BusyBox '* | \ 'mkdir (fileutils) '4.1*) - ac_cv_path_mkdir=$as_dir/$ac_prog$ac_exec_ext + ac_cv_path_mkdir=$as_dir$ac_prog$ac_exec_ext break 3;; esac done @@ -2812,7 +3156,7 @@ IFS=$as_save_IFS fi test -d ./--version && rmdir ./--version - if test "${ac_cv_path_mkdir+set}" = set; then + if test ${ac_cv_path_mkdir+y}; then MKDIR_P="$ac_cv_path_mkdir -p" else # As a last resort, use the slow shell script. Don't cache a @@ -2822,18 +3166,19 @@ fi MKDIR_P="$ac_install_sh -d" fi fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $MKDIR_P" >&5 -$as_echo "$MKDIR_P" >&6; } +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $MKDIR_P" >&5 +printf "%s\n" "$MKDIR_P" >&6; } for ac_prog in gawk mawk nawk awk do # Extract the first word of "$ac_prog", so it can be a program name with args. set dummy $ac_prog; ac_word=$2 -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 -$as_echo_n "checking for $ac_word... " >&6; } -if ${ac_cv_prog_AWK+:} false; then : - $as_echo_n "(cached) " >&6 -else +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +printf %s "checking for $ac_word... " >&6; } +if test ${ac_cv_prog_AWK+y} +then : + printf %s "(cached) " >&6 +else $as_nop if test -n "$AWK"; then ac_cv_prog_AWK="$AWK" # Let the user override the test. else @@ -2841,11 +3186,15 @@ as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS - test -z "$as_dir" && as_dir=. + case $as_dir in #((( + '') as_dir=./ ;; + */) ;; + *) as_dir=$as_dir/ ;; + esac for ac_exec_ext in '' $ac_executable_extensions; do - if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then + if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then ac_cv_prog_AWK="$ac_prog" - $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 + printf "%s\n" "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5 break 2 fi done @@ -2856,24 +3205,25 @@ fi fi AWK=$ac_cv_prog_AWK if test -n "$AWK"; then - { $as_echo "$as_me:${as_lineno-$LINENO}: result: $AWK" >&5 -$as_echo "$AWK" >&6; } + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $AWK" >&5 +printf "%s\n" "$AWK" >&6; } else - { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 -$as_echo "no" >&6; } + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 +printf "%s\n" "no" >&6; } fi test -n "$AWK" && break done -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether ${MAKE-make} sets \$(MAKE)" >&5 -$as_echo_n "checking whether ${MAKE-make} sets \$(MAKE)... " >&6; } +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking whether ${MAKE-make} sets \$(MAKE)" >&5 +printf %s "checking whether ${MAKE-make} sets \$(MAKE)... " >&6; } set x ${MAKE-make} -ac_make=`$as_echo "$2" | sed 's/+/p/g; s/[^a-zA-Z0-9_]/_/g'` -if eval \${ac_cv_prog_make_${ac_make}_set+:} false; then : - $as_echo_n "(cached) " >&6 -else +ac_make=`printf "%s\n" "$2" | sed 's/+/p/g; s/[^a-zA-Z0-9_]/_/g'` +if eval test \${ac_cv_prog_make_${ac_make}_set+y} +then : + printf %s "(cached) " >&6 +else $as_nop cat >conftest.make <<\_ACEOF SHELL = /bin/sh all: @@ -2889,12 +3239,12 @@ esac rm -f conftest.make fi if eval test \$ac_cv_prog_make_${ac_make}_set = yes; then - { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 -$as_echo "yes" >&6; } + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5 +printf "%s\n" "yes" >&6; } SET_MAKE= else - { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 -$as_echo "no" >&6; } + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 +printf "%s\n" "no" >&6; } SET_MAKE="MAKE=${MAKE-make}" fi @@ -2908,7 +3258,8 @@ fi rmdir .tst 2>/dev/null # Check whether --enable-silent-rules was given. -if test "${enable_silent_rules+set}" = set; then : +if test ${enable_silent_rules+y} +then : enableval=$enable_silent_rules; fi @@ -2918,12 +3269,13 @@ case $enable_silent_rules in # ((( *) AM_DEFAULT_VERBOSITY=1;; esac am_make=${MAKE-make} -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether $am_make supports nested variables" >&5 -$as_echo_n "checking whether $am_make supports nested variables... " >&6; } -if ${am_cv_make_support_nested_variables+:} false; then : - $as_echo_n "(cached) " >&6 -else - if $as_echo 'TRUE=$(BAR$(V)) +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking whether $am_make supports nested variables" >&5 +printf %s "checking whether $am_make supports nested variables... " >&6; } +if test ${am_cv_make_support_nested_variables+y} +then : + printf %s "(cached) " >&6 +else $as_nop + if printf "%s\n" 'TRUE=$(BAR$(V)) BAR0=false BAR1=true V=1 @@ -2935,8 +3287,8 @@ else am_cv_make_support_nested_variables=no fi fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $am_cv_make_support_nested_variables" >&5 -$as_echo "$am_cv_make_support_nested_variables" >&6; } +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $am_cv_make_support_nested_variables" >&5 +printf "%s\n" "$am_cv_make_support_nested_variables" >&6; } if test $am_cv_make_support_nested_variables = yes; then AM_V='$(V)' AM_DEFAULT_V='$(AM_DEFAULT_VERBOSITY)' @@ -2968,17 +3320,13 @@ fi # Define the identity of the package. PACKAGE='ffmpeg-kit' - VERSION='4.4' + VERSION='4.5' -cat >>confdefs.h <<_ACEOF -#define PACKAGE "$PACKAGE" -_ACEOF +printf "%s\n" "#define PACKAGE \"$PACKAGE\"" >>confdefs.h -cat >>confdefs.h <<_ACEOF -#define VERSION "$VERSION" -_ACEOF +printf "%s\n" "#define VERSION \"$VERSION\"" >>confdefs.h # Some tools Automake needs. @@ -3018,6 +3366,20 @@ am__tar='$${TAR-tar} chof - "$$tardir"' am__untar='$${TAR-tar} xf -' +# Variables for tags utilities; see am/tags.am +if test -z "$CTAGS"; then + CTAGS=ctags +fi + +if test -z "$ETAGS"; then + ETAGS=etags +fi + +if test -z "$CSCOPE"; then + CSCOPE=cscope +fi + + # POSIX will say in a future version that running "rm -f" with no argument # is OK; and we want to be able to make that assumption in our Makefile @@ -3062,17 +3424,18 @@ END fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether to enable maintainer-specific portions of Makefiles" >&5 -$as_echo_n "checking whether to enable maintainer-specific portions of Makefiles... " >&6; } +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking whether to enable maintainer-specific portions of Makefiles" >&5 +printf %s "checking whether to enable maintainer-specific portions of Makefiles... " >&6; } # Check whether --enable-maintainer-mode was given. -if test "${enable_maintainer_mode+set}" = set; then : +if test ${enable_maintainer_mode+y} +then : enableval=$enable_maintainer_mode; USE_MAINTAINER_MODE=$enableval -else +else $as_nop USE_MAINTAINER_MODE=no fi - { $as_echo "$as_me:${as_lineno-$LINENO}: result: $USE_MAINTAINER_MODE" >&5 -$as_echo "$USE_MAINTAINER_MODE" >&6; } + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $USE_MAINTAINER_MODE" >&5 +printf "%s\n" "$USE_MAINTAINER_MODE" >&6; } if test $USE_MAINTAINER_MODE = yes; then MAINTAINER_MODE_TRUE= MAINTAINER_MODE_FALSE='#' @@ -3088,32 +3451,33 @@ fi # Check for os version VERSION_OS=$(uname -s) -cat >>confdefs.h <<_ACEOF -#define VERSION_OS "$VERSION_OS" -_ACEOF +printf "%s\n" "#define VERSION_OS \"$VERSION_OS\"" >>confdefs.h # Check host so we can infer target CPU (and assembly optimizations) -# Make sure we can run config.sub. -$SHELL "$ac_aux_dir/config.sub" sun4 >/dev/null 2>&1 || - as_fn_error $? "cannot run $SHELL $ac_aux_dir/config.sub" "$LINENO" 5 -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking build system type" >&5 -$as_echo_n "checking build system type... " >&6; } -if ${ac_cv_build+:} false; then : - $as_echo_n "(cached) " >&6 -else + + # Make sure we can run config.sub. +$SHELL "${ac_aux_dir}config.sub" sun4 >/dev/null 2>&1 || + as_fn_error $? "cannot run $SHELL ${ac_aux_dir}config.sub" "$LINENO" 5 + +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking build system type" >&5 +printf %s "checking build system type... " >&6; } +if test ${ac_cv_build+y} +then : + printf %s "(cached) " >&6 +else $as_nop ac_build_alias=$build_alias test "x$ac_build_alias" = x && - ac_build_alias=`$SHELL "$ac_aux_dir/config.guess"` + ac_build_alias=`$SHELL "${ac_aux_dir}config.guess"` test "x$ac_build_alias" = x && as_fn_error $? "cannot guess build type; you must specify one" "$LINENO" 5 -ac_cv_build=`$SHELL "$ac_aux_dir/config.sub" $ac_build_alias` || - as_fn_error $? "$SHELL $ac_aux_dir/config.sub $ac_build_alias failed" "$LINENO" 5 +ac_cv_build=`$SHELL "${ac_aux_dir}config.sub" $ac_build_alias` || + as_fn_error $? "$SHELL ${ac_aux_dir}config.sub $ac_build_alias failed" "$LINENO" 5 fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_build" >&5 -$as_echo "$ac_cv_build" >&6; } +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_build" >&5 +printf "%s\n" "$ac_cv_build" >&6; } case $ac_cv_build in *-*-*) ;; *) as_fn_error $? "invalid value of canonical build" "$LINENO" 5;; @@ -3132,21 +3496,22 @@ IFS=$ac_save_IFS case $build_os in *\ *) build_os=`echo "$build_os" | sed 's/ /-/g'`;; esac -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking host system type" >&5 -$as_echo_n "checking host system type... " >&6; } -if ${ac_cv_host+:} false; then : - $as_echo_n "(cached) " >&6 -else +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking host system type" >&5 +printf %s "checking host system type... " >&6; } +if test ${ac_cv_host+y} +then : + printf %s "(cached) " >&6 +else $as_nop if test "x$host_alias" = x; then ac_cv_host=$ac_cv_build else - ac_cv_host=`$SHELL "$ac_aux_dir/config.sub" $host_alias` || - as_fn_error $? "$SHELL $ac_aux_dir/config.sub $host_alias failed" "$LINENO" 5 + ac_cv_host=`$SHELL "${ac_aux_dir}config.sub" $host_alias` || + as_fn_error $? "$SHELL ${ac_aux_dir}config.sub $host_alias failed" "$LINENO" 5 fi fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_host" >&5 -$as_echo "$ac_cv_host" >&6; } +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_host" >&5 +printf "%s\n" "$ac_cv_host" >&6; } case $ac_cv_host in *-*-*) ;; *) as_fn_error $? "invalid value of canonical host" "$LINENO" 5;; @@ -3167,12 +3532,21 @@ case $host_os in *\ *) host_os=`echo "$host_os" | sed 's/ /-/g'`;; esac # Check for processor characteristics + + + + + + + + + DEPDIR="${am__leading_dot}deps" ac_config_commands="$ac_config_commands depfiles" -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether ${MAKE-make} supports the include directive" >&5 -$as_echo_n "checking whether ${MAKE-make} supports the include directive... " >&6; } +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking whether ${MAKE-make} supports the include directive" >&5 +printf %s "checking whether ${MAKE-make} supports the include directive... " >&6; } cat > confinc.mk << 'END' am__doit: @echo this is the am__doit target >confinc.out @@ -3208,11 +3582,12 @@ esac fi done rm -f confinc.* confmf.* -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: ${_am_result}" >&5 -$as_echo "${_am_result}" >&6; } +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: ${_am_result}" >&5 +printf "%s\n" "${_am_result}" >&6; } # Check whether --enable-dependency-tracking was given. -if test "${enable_dependency_tracking+set}" = set; then : +if test ${enable_dependency_tracking+y} +then : enableval=$enable_dependency_tracking; fi @@ -3238,11 +3613,12 @@ ac_compiler_gnu=$ac_cv_c_compiler_gnu if test -n "$ac_tool_prefix"; then # Extract the first word of "${ac_tool_prefix}gcc", so it can be a program name with args. set dummy ${ac_tool_prefix}gcc; ac_word=$2 -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 -$as_echo_n "checking for $ac_word... " >&6; } -if ${ac_cv_prog_CC+:} false; then : - $as_echo_n "(cached) " >&6 -else +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +printf %s "checking for $ac_word... " >&6; } +if test ${ac_cv_prog_CC+y} +then : + printf %s "(cached) " >&6 +else $as_nop if test -n "$CC"; then ac_cv_prog_CC="$CC" # Let the user override the test. else @@ -3250,11 +3626,15 @@ as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS - test -z "$as_dir" && as_dir=. + case $as_dir in #((( + '') as_dir=./ ;; + */) ;; + *) as_dir=$as_dir/ ;; + esac for ac_exec_ext in '' $ac_executable_extensions; do - if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then + if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then ac_cv_prog_CC="${ac_tool_prefix}gcc" - $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 + printf "%s\n" "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5 break 2 fi done @@ -3265,11 +3645,11 @@ fi fi CC=$ac_cv_prog_CC if test -n "$CC"; then - { $as_echo "$as_me:${as_lineno-$LINENO}: result: $CC" >&5 -$as_echo "$CC" >&6; } + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $CC" >&5 +printf "%s\n" "$CC" >&6; } else - { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 -$as_echo "no" >&6; } + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 +printf "%s\n" "no" >&6; } fi @@ -3278,11 +3658,12 @@ if test -z "$ac_cv_prog_CC"; then ac_ct_CC=$CC # Extract the first word of "gcc", so it can be a program name with args. set dummy gcc; ac_word=$2 -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 -$as_echo_n "checking for $ac_word... " >&6; } -if ${ac_cv_prog_ac_ct_CC+:} false; then : - $as_echo_n "(cached) " >&6 -else +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +printf %s "checking for $ac_word... " >&6; } +if test ${ac_cv_prog_ac_ct_CC+y} +then : + printf %s "(cached) " >&6 +else $as_nop if test -n "$ac_ct_CC"; then ac_cv_prog_ac_ct_CC="$ac_ct_CC" # Let the user override the test. else @@ -3290,11 +3671,15 @@ as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS - test -z "$as_dir" && as_dir=. + case $as_dir in #((( + '') as_dir=./ ;; + */) ;; + *) as_dir=$as_dir/ ;; + esac for ac_exec_ext in '' $ac_executable_extensions; do - if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then + if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then ac_cv_prog_ac_ct_CC="gcc" - $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 + printf "%s\n" "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5 break 2 fi done @@ -3305,11 +3690,11 @@ fi fi ac_ct_CC=$ac_cv_prog_ac_ct_CC if test -n "$ac_ct_CC"; then - { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_CC" >&5 -$as_echo "$ac_ct_CC" >&6; } + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_ct_CC" >&5 +printf "%s\n" "$ac_ct_CC" >&6; } else - { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 -$as_echo "no" >&6; } + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 +printf "%s\n" "no" >&6; } fi if test "x$ac_ct_CC" = x; then @@ -3317,8 +3702,8 @@ fi else case $cross_compiling:$ac_tool_warned in yes:) -{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 -$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 +printf "%s\n" "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} ac_tool_warned=yes ;; esac CC=$ac_ct_CC @@ -3331,11 +3716,12 @@ if test -z "$CC"; then if test -n "$ac_tool_prefix"; then # Extract the first word of "${ac_tool_prefix}cc", so it can be a program name with args. set dummy ${ac_tool_prefix}cc; ac_word=$2 -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 -$as_echo_n "checking for $ac_word... " >&6; } -if ${ac_cv_prog_CC+:} false; then : - $as_echo_n "(cached) " >&6 -else +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +printf %s "checking for $ac_word... " >&6; } +if test ${ac_cv_prog_CC+y} +then : + printf %s "(cached) " >&6 +else $as_nop if test -n "$CC"; then ac_cv_prog_CC="$CC" # Let the user override the test. else @@ -3343,11 +3729,15 @@ as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS - test -z "$as_dir" && as_dir=. + case $as_dir in #((( + '') as_dir=./ ;; + */) ;; + *) as_dir=$as_dir/ ;; + esac for ac_exec_ext in '' $ac_executable_extensions; do - if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then + if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then ac_cv_prog_CC="${ac_tool_prefix}cc" - $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 + printf "%s\n" "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5 break 2 fi done @@ -3358,11 +3748,11 @@ fi fi CC=$ac_cv_prog_CC if test -n "$CC"; then - { $as_echo "$as_me:${as_lineno-$LINENO}: result: $CC" >&5 -$as_echo "$CC" >&6; } + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $CC" >&5 +printf "%s\n" "$CC" >&6; } else - { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 -$as_echo "no" >&6; } + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 +printf "%s\n" "no" >&6; } fi @@ -3371,11 +3761,12 @@ fi if test -z "$CC"; then # Extract the first word of "cc", so it can be a program name with args. set dummy cc; ac_word=$2 -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 -$as_echo_n "checking for $ac_word... " >&6; } -if ${ac_cv_prog_CC+:} false; then : - $as_echo_n "(cached) " >&6 -else +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +printf %s "checking for $ac_word... " >&6; } +if test ${ac_cv_prog_CC+y} +then : + printf %s "(cached) " >&6 +else $as_nop if test -n "$CC"; then ac_cv_prog_CC="$CC" # Let the user override the test. else @@ -3384,15 +3775,19 @@ as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS - test -z "$as_dir" && as_dir=. + case $as_dir in #((( + '') as_dir=./ ;; + */) ;; + *) as_dir=$as_dir/ ;; + esac for ac_exec_ext in '' $ac_executable_extensions; do - if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then - if test "$as_dir/$ac_word$ac_exec_ext" = "/usr/ucb/cc"; then + if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then + if test "$as_dir$ac_word$ac_exec_ext" = "/usr/ucb/cc"; then ac_prog_rejected=yes continue fi ac_cv_prog_CC="cc" - $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 + printf "%s\n" "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5 break 2 fi done @@ -3408,18 +3803,18 @@ if test $ac_prog_rejected = yes; then # However, it has the same basename, so the bogon will be chosen # first if we set CC to just the basename; use the full file name. shift - ac_cv_prog_CC="$as_dir/$ac_word${1+' '}$@" + ac_cv_prog_CC="$as_dir$ac_word${1+' '}$@" fi fi fi fi CC=$ac_cv_prog_CC if test -n "$CC"; then - { $as_echo "$as_me:${as_lineno-$LINENO}: result: $CC" >&5 -$as_echo "$CC" >&6; } + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $CC" >&5 +printf "%s\n" "$CC" >&6; } else - { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 -$as_echo "no" >&6; } + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 +printf "%s\n" "no" >&6; } fi @@ -3430,11 +3825,12 @@ if test -z "$CC"; then do # Extract the first word of "$ac_tool_prefix$ac_prog", so it can be a program name with args. set dummy $ac_tool_prefix$ac_prog; ac_word=$2 -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 -$as_echo_n "checking for $ac_word... " >&6; } -if ${ac_cv_prog_CC+:} false; then : - $as_echo_n "(cached) " >&6 -else +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +printf %s "checking for $ac_word... " >&6; } +if test ${ac_cv_prog_CC+y} +then : + printf %s "(cached) " >&6 +else $as_nop if test -n "$CC"; then ac_cv_prog_CC="$CC" # Let the user override the test. else @@ -3442,11 +3838,15 @@ as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS - test -z "$as_dir" && as_dir=. + case $as_dir in #((( + '') as_dir=./ ;; + */) ;; + *) as_dir=$as_dir/ ;; + esac for ac_exec_ext in '' $ac_executable_extensions; do - if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then + if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then ac_cv_prog_CC="$ac_tool_prefix$ac_prog" - $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 + printf "%s\n" "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5 break 2 fi done @@ -3457,11 +3857,11 @@ fi fi CC=$ac_cv_prog_CC if test -n "$CC"; then - { $as_echo "$as_me:${as_lineno-$LINENO}: result: $CC" >&5 -$as_echo "$CC" >&6; } + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $CC" >&5 +printf "%s\n" "$CC" >&6; } else - { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 -$as_echo "no" >&6; } + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 +printf "%s\n" "no" >&6; } fi @@ -3474,11 +3874,12 @@ if test -z "$CC"; then do # Extract the first word of "$ac_prog", so it can be a program name with args. set dummy $ac_prog; ac_word=$2 -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 -$as_echo_n "checking for $ac_word... " >&6; } -if ${ac_cv_prog_ac_ct_CC+:} false; then : - $as_echo_n "(cached) " >&6 -else +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +printf %s "checking for $ac_word... " >&6; } +if test ${ac_cv_prog_ac_ct_CC+y} +then : + printf %s "(cached) " >&6 +else $as_nop if test -n "$ac_ct_CC"; then ac_cv_prog_ac_ct_CC="$ac_ct_CC" # Let the user override the test. else @@ -3486,11 +3887,15 @@ as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS - test -z "$as_dir" && as_dir=. + case $as_dir in #((( + '') as_dir=./ ;; + */) ;; + *) as_dir=$as_dir/ ;; + esac for ac_exec_ext in '' $ac_executable_extensions; do - if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then + if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then ac_cv_prog_ac_ct_CC="$ac_prog" - $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 + printf "%s\n" "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5 break 2 fi done @@ -3501,11 +3906,11 @@ fi fi ac_ct_CC=$ac_cv_prog_ac_ct_CC if test -n "$ac_ct_CC"; then - { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_CC" >&5 -$as_echo "$ac_ct_CC" >&6; } + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_ct_CC" >&5 +printf "%s\n" "$ac_ct_CC" >&6; } else - { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 -$as_echo "no" >&6; } + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 +printf "%s\n" "no" >&6; } fi @@ -3517,8 +3922,8 @@ done else case $cross_compiling:$ac_tool_warned in yes:) -{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 -$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 +printf "%s\n" "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} ac_tool_warned=yes ;; esac CC=$ac_ct_CC @@ -3526,57 +3931,161 @@ esac fi fi - - -test -z "$CC" && { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 -$as_echo "$as_me: error: in \`$ac_pwd':" >&2;} -as_fn_error $? "no acceptable C compiler found in \$PATH -See \`config.log' for more details" "$LINENO" 5; } - -# Provide some information about the compiler. -$as_echo "$as_me:${as_lineno-$LINENO}: checking for C compiler version" >&5 -set X $ac_compile -ac_compiler=$2 -for ac_option in --version -v -V -qversion; do - { { ac_try="$ac_compiler $ac_option >&5" -case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" -$as_echo "$ac_try_echo"; } >&5 - (eval "$ac_compiler $ac_option >&5") 2>conftest.err - ac_status=$? - if test -s conftest.err; then - sed '10a\ -... rest of stderr output deleted ... - 10q' conftest.err >conftest.er1 - cat conftest.er1 >&5 +if test -z "$CC"; then + if test -n "$ac_tool_prefix"; then + # Extract the first word of "${ac_tool_prefix}clang", so it can be a program name with args. +set dummy ${ac_tool_prefix}clang; ac_word=$2 +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +printf %s "checking for $ac_word... " >&6; } +if test ${ac_cv_prog_CC+y} +then : + printf %s "(cached) " >&6 +else $as_nop + if test -n "$CC"; then + ac_cv_prog_CC="$CC" # Let the user override the test. +else +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + case $as_dir in #((( + '') as_dir=./ ;; + */) ;; + *) as_dir=$as_dir/ ;; + esac + for ac_exec_ext in '' $ac_executable_extensions; do + if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then + ac_cv_prog_CC="${ac_tool_prefix}clang" + printf "%s\n" "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5 + break 2 fi - rm -f conftest.er1 conftest.err - $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 - test $ac_status = 0; } done + done +IFS=$as_save_IFS -cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ +fi +fi +CC=$ac_cv_prog_CC +if test -n "$CC"; then + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $CC" >&5 +printf "%s\n" "$CC" >&6; } +else + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 +printf "%s\n" "no" >&6; } +fi -int -main () -{ - ; - return 0; -} -_ACEOF -ac_clean_files_save=$ac_clean_files -ac_clean_files="$ac_clean_files a.out a.out.dSYM a.exe b.out" -# Try to create an executable without -o first, disregard a.out. +fi +if test -z "$ac_cv_prog_CC"; then + ac_ct_CC=$CC + # Extract the first word of "clang", so it can be a program name with args. +set dummy clang; ac_word=$2 +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +printf %s "checking for $ac_word... " >&6; } +if test ${ac_cv_prog_ac_ct_CC+y} +then : + printf %s "(cached) " >&6 +else $as_nop + if test -n "$ac_ct_CC"; then + ac_cv_prog_ac_ct_CC="$ac_ct_CC" # Let the user override the test. +else +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + case $as_dir in #((( + '') as_dir=./ ;; + */) ;; + *) as_dir=$as_dir/ ;; + esac + for ac_exec_ext in '' $ac_executable_extensions; do + if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then + ac_cv_prog_ac_ct_CC="clang" + printf "%s\n" "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5 + break 2 + fi +done + done +IFS=$as_save_IFS + +fi +fi +ac_ct_CC=$ac_cv_prog_ac_ct_CC +if test -n "$ac_ct_CC"; then + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_ct_CC" >&5 +printf "%s\n" "$ac_ct_CC" >&6; } +else + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 +printf "%s\n" "no" >&6; } +fi + + if test "x$ac_ct_CC" = x; then + CC="" + else + case $cross_compiling:$ac_tool_warned in +yes:) +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 +printf "%s\n" "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} +ac_tool_warned=yes ;; +esac + CC=$ac_ct_CC + fi +else + CC="$ac_cv_prog_CC" +fi + +fi + + +test -z "$CC" && { { printf "%s\n" "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 +printf "%s\n" "$as_me: error: in \`$ac_pwd':" >&2;} +as_fn_error $? "no acceptable C compiler found in \$PATH +See \`config.log' for more details" "$LINENO" 5; } + +# Provide some information about the compiler. +printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for C compiler version" >&5 +set X $ac_compile +ac_compiler=$2 +for ac_option in --version -v -V -qversion -version; do + { { ac_try="$ac_compiler $ac_option >&5" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" +printf "%s\n" "$ac_try_echo"; } >&5 + (eval "$ac_compiler $ac_option >&5") 2>conftest.err + ac_status=$? + if test -s conftest.err; then + sed '10a\ +... rest of stderr output deleted ... + 10q' conftest.err >conftest.er1 + cat conftest.er1 >&5 + fi + rm -f conftest.er1 conftest.err + printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; } +done + +cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + +int +main (void) +{ + + ; + return 0; +} +_ACEOF +ac_clean_files_save=$ac_clean_files +ac_clean_files="$ac_clean_files a.out a.out.dSYM a.exe b.out" +# Try to create an executable without -o first, disregard a.out. # It will help us diagnose broken compilers, and finding out an intuition # of exeext. -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether the C compiler works" >&5 -$as_echo_n "checking whether the C compiler works... " >&6; } -ac_link_default=`$as_echo "$ac_link" | sed 's/ -o *conftest[^ ]*//'` +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking whether the C compiler works" >&5 +printf %s "checking whether the C compiler works... " >&6; } +ac_link_default=`printf "%s\n" "$ac_link" | sed 's/ -o *conftest[^ ]*//'` # The possible output files: ac_files="a.out conftest.exe conftest a.exe a_out.exe b.out conftest.*" @@ -3597,11 +4106,12 @@ case "(($ac_try" in *) ac_try_echo=$ac_try;; esac eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" -$as_echo "$ac_try_echo"; } >&5 +printf "%s\n" "$ac_try_echo"; } >&5 (eval "$ac_link_default") 2>&5 ac_status=$? - $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 - test $ac_status = 0; }; then : + printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; } +then : # Autoconf-2.13 could set the ac_cv_exeext variable to `no'. # So ignore a value of `no', otherwise this would lead to `EXEEXT = no' # in a Makefile. We should not override ac_cv_exeext if it was cached, @@ -3618,7 +4128,7 @@ do # certainly right. break;; *.* ) - if test "${ac_cv_exeext+set}" = set && test "$ac_cv_exeext" != no; + if test ${ac_cv_exeext+y} && test "$ac_cv_exeext" != no; then :; else ac_cv_exeext=`expr "$ac_file" : '[^.]*\(\..*\)'` fi @@ -3634,44 +4144,46 @@ do done test "$ac_cv_exeext" = no && ac_cv_exeext= -else +else $as_nop ac_file='' fi -if test -z "$ac_file"; then : - { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 -$as_echo "no" >&6; } -$as_echo "$as_me: failed program was:" >&5 +if test -z "$ac_file" +then : + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 +printf "%s\n" "no" >&6; } +printf "%s\n" "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 -{ { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 -$as_echo "$as_me: error: in \`$ac_pwd':" >&2;} +{ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 +printf "%s\n" "$as_me: error: in \`$ac_pwd':" >&2;} as_fn_error 77 "C compiler cannot create executables See \`config.log' for more details" "$LINENO" 5; } -else - { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 -$as_echo "yes" >&6; } -fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for C compiler default output file name" >&5 -$as_echo_n "checking for C compiler default output file name... " >&6; } -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_file" >&5 -$as_echo "$ac_file" >&6; } +else $as_nop + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5 +printf "%s\n" "yes" >&6; } +fi +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for C compiler default output file name" >&5 +printf %s "checking for C compiler default output file name... " >&6; } +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_file" >&5 +printf "%s\n" "$ac_file" >&6; } ac_exeext=$ac_cv_exeext rm -f -r a.out a.out.dSYM a.exe conftest$ac_cv_exeext b.out ac_clean_files=$ac_clean_files_save -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for suffix of executables" >&5 -$as_echo_n "checking for suffix of executables... " >&6; } +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for suffix of executables" >&5 +printf %s "checking for suffix of executables... " >&6; } if { { ac_try="$ac_link" case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" -$as_echo "$ac_try_echo"; } >&5 +printf "%s\n" "$ac_try_echo"; } >&5 (eval "$ac_link") 2>&5 ac_status=$? - $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 - test $ac_status = 0; }; then : + printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; } +then : # If both `conftest.exe' and `conftest' are `present' (well, observable) # catch `conftest.exe'. For instance with Cygwin, `ls conftest' will # work properly (i.e., refer to `conftest.exe'), while it won't with @@ -3685,15 +4197,15 @@ for ac_file in conftest.exe conftest conftest.*; do * ) break;; esac done -else - { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 -$as_echo "$as_me: error: in \`$ac_pwd':" >&2;} +else $as_nop + { { printf "%s\n" "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 +printf "%s\n" "$as_me: error: in \`$ac_pwd':" >&2;} as_fn_error $? "cannot compute suffix of executables: cannot compile and link See \`config.log' for more details" "$LINENO" 5; } fi rm -f conftest conftest$ac_cv_exeext -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_exeext" >&5 -$as_echo "$ac_cv_exeext" >&6; } +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_exeext" >&5 +printf "%s\n" "$ac_cv_exeext" >&6; } rm -f conftest.$ac_ext EXEEXT=$ac_cv_exeext @@ -3702,7 +4214,7 @@ cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #include int -main () +main (void) { FILE *f = fopen ("conftest.out", "w"); return ferror (f) || fclose (f) != 0; @@ -3714,8 +4226,8 @@ _ACEOF ac_clean_files="$ac_clean_files conftest.out" # Check that the compiler produces executables we can run. If not, either # the compiler is broken, or we cross compile. -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether we are cross compiling" >&5 -$as_echo_n "checking whether we are cross compiling... " >&6; } +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking whether we are cross compiling" >&5 +printf %s "checking whether we are cross compiling... " >&6; } if test "$cross_compiling" != yes; then { { ac_try="$ac_link" case "(($ac_try" in @@ -3723,10 +4235,10 @@ case "(($ac_try" in *) ac_try_echo=$ac_try;; esac eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" -$as_echo "$ac_try_echo"; } >&5 +printf "%s\n" "$ac_try_echo"; } >&5 (eval "$ac_link") 2>&5 ac_status=$? - $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; } if { ac_try='./conftest$ac_cv_exeext' { { case "(($ac_try" in @@ -3734,39 +4246,40 @@ $as_echo "$ac_try_echo"; } >&5 *) ac_try_echo=$ac_try;; esac eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" -$as_echo "$ac_try_echo"; } >&5 +printf "%s\n" "$ac_try_echo"; } >&5 (eval "$ac_try") 2>&5 ac_status=$? - $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; }; }; then cross_compiling=no else if test "$cross_compiling" = maybe; then cross_compiling=yes else - { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 -$as_echo "$as_me: error: in \`$ac_pwd':" >&2;} -as_fn_error $? "cannot run C compiled programs. + { { printf "%s\n" "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 +printf "%s\n" "$as_me: error: in \`$ac_pwd':" >&2;} +as_fn_error 77 "cannot run C compiled programs. If you meant to cross compile, use \`--host'. See \`config.log' for more details" "$LINENO" 5; } fi fi fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $cross_compiling" >&5 -$as_echo "$cross_compiling" >&6; } +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $cross_compiling" >&5 +printf "%s\n" "$cross_compiling" >&6; } rm -f conftest.$ac_ext conftest$ac_cv_exeext conftest.out ac_clean_files=$ac_clean_files_save -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for suffix of object files" >&5 -$as_echo_n "checking for suffix of object files... " >&6; } -if ${ac_cv_objext+:} false; then : - $as_echo_n "(cached) " >&6 -else +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for suffix of object files" >&5 +printf %s "checking for suffix of object files... " >&6; } +if test ${ac_cv_objext+y} +then : + printf %s "(cached) " >&6 +else $as_nop cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ int -main () +main (void) { ; @@ -3780,11 +4293,12 @@ case "(($ac_try" in *) ac_try_echo=$ac_try;; esac eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" -$as_echo "$ac_try_echo"; } >&5 +printf "%s\n" "$ac_try_echo"; } >&5 (eval "$ac_compile") 2>&5 ac_status=$? - $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 - test $ac_status = 0; }; then : + printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; } +then : for ac_file in conftest.o conftest.obj conftest.*; do test -f "$ac_file" || continue; case $ac_file in @@ -3793,31 +4307,32 @@ $as_echo "$ac_try_echo"; } >&5 break;; esac done -else - $as_echo "$as_me: failed program was:" >&5 +else $as_nop + printf "%s\n" "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 -{ { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 -$as_echo "$as_me: error: in \`$ac_pwd':" >&2;} +{ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 +printf "%s\n" "$as_me: error: in \`$ac_pwd':" >&2;} as_fn_error $? "cannot compute suffix of object files: cannot compile See \`config.log' for more details" "$LINENO" 5; } fi rm -f conftest.$ac_cv_objext conftest.$ac_ext fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_objext" >&5 -$as_echo "$ac_cv_objext" >&6; } +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_objext" >&5 +printf "%s\n" "$ac_cv_objext" >&6; } OBJEXT=$ac_cv_objext ac_objext=$OBJEXT -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether we are using the GNU C compiler" >&5 -$as_echo_n "checking whether we are using the GNU C compiler... " >&6; } -if ${ac_cv_c_compiler_gnu+:} false; then : - $as_echo_n "(cached) " >&6 -else +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking whether the compiler supports GNU C" >&5 +printf %s "checking whether the compiler supports GNU C... " >&6; } +if test ${ac_cv_c_compiler_gnu+y} +then : + printf %s "(cached) " >&6 +else $as_nop cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ int -main () +main (void) { #ifndef __GNUC__ choke me @@ -3827,29 +4342,33 @@ main () return 0; } _ACEOF -if ac_fn_c_try_compile "$LINENO"; then : +if ac_fn_c_try_compile "$LINENO" +then : ac_compiler_gnu=yes -else +else $as_nop ac_compiler_gnu=no fi -rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext +rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext ac_cv_c_compiler_gnu=$ac_compiler_gnu fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_c_compiler_gnu" >&5 -$as_echo "$ac_cv_c_compiler_gnu" >&6; } +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_c_compiler_gnu" >&5 +printf "%s\n" "$ac_cv_c_compiler_gnu" >&6; } +ac_compiler_gnu=$ac_cv_c_compiler_gnu + if test $ac_compiler_gnu = yes; then GCC=yes else GCC= fi -ac_test_CFLAGS=${CFLAGS+set} +ac_test_CFLAGS=${CFLAGS+y} ac_save_CFLAGS=$CFLAGS -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether $CC accepts -g" >&5 -$as_echo_n "checking whether $CC accepts -g... " >&6; } -if ${ac_cv_prog_cc_g+:} false; then : - $as_echo_n "(cached) " >&6 -else +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking whether $CC accepts -g" >&5 +printf %s "checking whether $CC accepts -g... " >&6; } +if test ${ac_cv_prog_cc_g+y} +then : + printf %s "(cached) " >&6 +else $as_nop ac_save_c_werror_flag=$ac_c_werror_flag ac_c_werror_flag=yes ac_cv_prog_cc_g=no @@ -3858,57 +4377,60 @@ else /* end confdefs.h. */ int -main () +main (void) { ; return 0; } _ACEOF -if ac_fn_c_try_compile "$LINENO"; then : +if ac_fn_c_try_compile "$LINENO" +then : ac_cv_prog_cc_g=yes -else +else $as_nop CFLAGS="" cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ int -main () +main (void) { ; return 0; } _ACEOF -if ac_fn_c_try_compile "$LINENO"; then : +if ac_fn_c_try_compile "$LINENO" +then : -else +else $as_nop ac_c_werror_flag=$ac_save_c_werror_flag CFLAGS="-g" cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ int -main () +main (void) { ; return 0; } _ACEOF -if ac_fn_c_try_compile "$LINENO"; then : +if ac_fn_c_try_compile "$LINENO" +then : ac_cv_prog_cc_g=yes fi -rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext +rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext fi -rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext +rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext fi -rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext +rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext ac_c_werror_flag=$ac_save_c_werror_flag fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_prog_cc_g" >&5 -$as_echo "$ac_cv_prog_cc_g" >&6; } -if test "$ac_test_CFLAGS" = set; then +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_prog_cc_g" >&5 +printf "%s\n" "$ac_cv_prog_cc_g" >&6; } +if test $ac_test_CFLAGS; then CFLAGS=$ac_save_CFLAGS elif test $ac_cv_prog_cc_g = yes; then if test "$GCC" = yes; then @@ -3923,94 +4445,144 @@ else CFLAGS= fi fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $CC option to accept ISO C89" >&5 -$as_echo_n "checking for $CC option to accept ISO C89... " >&6; } -if ${ac_cv_prog_cc_c89+:} false; then : - $as_echo_n "(cached) " >&6 -else - ac_cv_prog_cc_c89=no +ac_prog_cc_stdc=no +if test x$ac_prog_cc_stdc = xno +then : + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $CC option to enable C11 features" >&5 +printf %s "checking for $CC option to enable C11 features... " >&6; } +if test ${ac_cv_prog_cc_c11+y} +then : + printf %s "(cached) " >&6 +else $as_nop + ac_cv_prog_cc_c11=no ac_save_CC=$CC cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ -#include -#include -struct stat; -/* Most of the following tests are stolen from RCS 5.7's src/conf.sh. */ -struct buf { int x; }; -FILE * (*rcsopen) (struct buf *, struct stat *, int); -static char *e (p, i) - char **p; - int i; -{ - return p[i]; -} -static char *f (char * (*g) (char **, int), char **p, ...) -{ - char *s; - va_list v; - va_start (v,p); - s = g (p, va_arg (v,int)); - va_end (v); - return s; -} - -/* OSF 4.0 Compaq cc is some sort of almost-ANSI by default. It has - function prototypes and stuff, but not '\xHH' hex character constants. - These don't provoke an error unfortunately, instead are silently treated - as 'x'. The following induces an error, until -std is added to get - proper ANSI mode. Curiously '\x00'!='x' always comes out true, for an - array size at least. It's necessary to write '\x00'==0 to get something - that's true only with -std. */ -int osf4_cc_array ['\x00' == 0 ? 1 : -1]; +$ac_c_conftest_c11_program +_ACEOF +for ac_arg in '' -std=gnu11 +do + CC="$ac_save_CC $ac_arg" + if ac_fn_c_try_compile "$LINENO" +then : + ac_cv_prog_cc_c11=$ac_arg +fi +rm -f core conftest.err conftest.$ac_objext conftest.beam + test "x$ac_cv_prog_cc_c11" != "xno" && break +done +rm -f conftest.$ac_ext +CC=$ac_save_CC +fi -/* IBM C 6 for AIX is almost-ANSI by default, but it replaces macro parameters - inside strings and character constants. */ -#define FOO(x) 'x' -int xlc6_cc_array[FOO(a) == 'x' ? 1 : -1]; +if test "x$ac_cv_prog_cc_c11" = xno +then : + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: unsupported" >&5 +printf "%s\n" "unsupported" >&6; } +else $as_nop + if test "x$ac_cv_prog_cc_c11" = x +then : + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: none needed" >&5 +printf "%s\n" "none needed" >&6; } +else $as_nop + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_prog_cc_c11" >&5 +printf "%s\n" "$ac_cv_prog_cc_c11" >&6; } + CC="$CC $ac_cv_prog_cc_c11" +fi + ac_cv_prog_cc_stdc=$ac_cv_prog_cc_c11 + ac_prog_cc_stdc=c11 +fi +fi +if test x$ac_prog_cc_stdc = xno +then : + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $CC option to enable C99 features" >&5 +printf %s "checking for $CC option to enable C99 features... " >&6; } +if test ${ac_cv_prog_cc_c99+y} +then : + printf %s "(cached) " >&6 +else $as_nop + ac_cv_prog_cc_c99=no +ac_save_CC=$CC +cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +$ac_c_conftest_c99_program +_ACEOF +for ac_arg in '' -std=gnu99 -std=c99 -c99 -qlanglvl=extc1x -qlanglvl=extc99 -AC99 -D_STDC_C99= +do + CC="$ac_save_CC $ac_arg" + if ac_fn_c_try_compile "$LINENO" +then : + ac_cv_prog_cc_c99=$ac_arg +fi +rm -f core conftest.err conftest.$ac_objext conftest.beam + test "x$ac_cv_prog_cc_c99" != "xno" && break +done +rm -f conftest.$ac_ext +CC=$ac_save_CC +fi -int test (int i, double x); -struct s1 {int (*f) (int a);}; -struct s2 {int (*f) (double a);}; -int pairnames (int, char **, FILE *(*)(struct buf *, struct stat *, int), int, int); -int argc; -char **argv; -int -main () -{ -return f (e, argv, 0) != argv[0] || f (e, argv, 1) != argv[1]; - ; - return 0; -} +if test "x$ac_cv_prog_cc_c99" = xno +then : + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: unsupported" >&5 +printf "%s\n" "unsupported" >&6; } +else $as_nop + if test "x$ac_cv_prog_cc_c99" = x +then : + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: none needed" >&5 +printf "%s\n" "none needed" >&6; } +else $as_nop + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_prog_cc_c99" >&5 +printf "%s\n" "$ac_cv_prog_cc_c99" >&6; } + CC="$CC $ac_cv_prog_cc_c99" +fi + ac_cv_prog_cc_stdc=$ac_cv_prog_cc_c99 + ac_prog_cc_stdc=c99 +fi +fi +if test x$ac_prog_cc_stdc = xno +then : + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $CC option to enable C89 features" >&5 +printf %s "checking for $CC option to enable C89 features... " >&6; } +if test ${ac_cv_prog_cc_c89+y} +then : + printf %s "(cached) " >&6 +else $as_nop + ac_cv_prog_cc_c89=no +ac_save_CC=$CC +cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +$ac_c_conftest_c89_program _ACEOF -for ac_arg in '' -qlanglvl=extc89 -qlanglvl=ansi -std \ - -Ae "-Aa -D_HPUX_SOURCE" "-Xc -D__EXTENSIONS__" +for ac_arg in '' -qlanglvl=extc89 -qlanglvl=ansi -std -Ae "-Aa -D_HPUX_SOURCE" "-Xc -D__EXTENSIONS__" do CC="$ac_save_CC $ac_arg" - if ac_fn_c_try_compile "$LINENO"; then : + if ac_fn_c_try_compile "$LINENO" +then : ac_cv_prog_cc_c89=$ac_arg fi -rm -f core conftest.err conftest.$ac_objext +rm -f core conftest.err conftest.$ac_objext conftest.beam test "x$ac_cv_prog_cc_c89" != "xno" && break done rm -f conftest.$ac_ext CC=$ac_save_CC - fi -# AC_CACHE_VAL -case "x$ac_cv_prog_cc_c89" in - x) - { $as_echo "$as_me:${as_lineno-$LINENO}: result: none needed" >&5 -$as_echo "none needed" >&6; } ;; - xno) - { $as_echo "$as_me:${as_lineno-$LINENO}: result: unsupported" >&5 -$as_echo "unsupported" >&6; } ;; - *) - CC="$CC $ac_cv_prog_cc_c89" - { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_prog_cc_c89" >&5 -$as_echo "$ac_cv_prog_cc_c89" >&6; } ;; -esac -if test "x$ac_cv_prog_cc_c89" != xno; then : +if test "x$ac_cv_prog_cc_c89" = xno +then : + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: unsupported" >&5 +printf "%s\n" "unsupported" >&6; } +else $as_nop + if test "x$ac_cv_prog_cc_c89" = x +then : + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: none needed" >&5 +printf "%s\n" "none needed" >&6; } +else $as_nop + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_prog_cc_c89" >&5 +printf "%s\n" "$ac_cv_prog_cc_c89" >&6; } + CC="$CC $ac_cv_prog_cc_c89" +fi + ac_cv_prog_cc_stdc=$ac_cv_prog_cc_c89 + ac_prog_cc_stdc=c89 +fi fi ac_ext=c @@ -4019,21 +4591,23 @@ ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' ac_compiler_gnu=$ac_cv_c_compiler_gnu -ac_ext=c + + ac_ext=c ac_cpp='$CPP $CPPFLAGS' ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' ac_compiler_gnu=$ac_cv_c_compiler_gnu -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether $CC understands -c and -o together" >&5 -$as_echo_n "checking whether $CC understands -c and -o together... " >&6; } -if ${am_cv_prog_cc_c_o+:} false; then : - $as_echo_n "(cached) " >&6 -else +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking whether $CC understands -c and -o together" >&5 +printf %s "checking whether $CC understands -c and -o together... " >&6; } +if test ${am_cv_prog_cc_c_o+y} +then : + printf %s "(cached) " >&6 +else $as_nop cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ int -main () +main (void) { ; @@ -4061,8 +4635,8 @@ _ACEOF rm -f core conftest* unset am_i fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $am_cv_prog_cc_c_o" >&5 -$as_echo "$am_cv_prog_cc_c_o" >&6; } +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $am_cv_prog_cc_c_o" >&5 +printf "%s\n" "$am_cv_prog_cc_c_o" >&6; } if test "$am_cv_prog_cc_c_o" != yes; then # Losing compiler, so override with the script. # FIXME: It is wrong to rewrite CC. @@ -4080,11 +4654,12 @@ ac_compiler_gnu=$ac_cv_c_compiler_gnu depcc="$CC" am_compiler_list= -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking dependency style of $depcc" >&5 -$as_echo_n "checking dependency style of $depcc... " >&6; } -if ${am_cv_CC_dependencies_compiler_type+:} false; then : - $as_echo_n "(cached) " >&6 -else +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking dependency style of $depcc" >&5 +printf %s "checking dependency style of $depcc... " >&6; } +if test ${am_cv_CC_dependencies_compiler_type+y} +then : + printf %s "(cached) " >&6 +else $as_nop if test -z "$AMDEP_TRUE" && test -f "$am_depcomp"; then # We make a subdir and do the tests there. Otherwise we can end up # making bogus files that we don't know about and never remove. For @@ -4191,8 +4766,8 @@ else fi fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $am_cv_CC_dependencies_compiler_type" >&5 -$as_echo "$am_cv_CC_dependencies_compiler_type" >&6; } +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $am_cv_CC_dependencies_compiler_type" >&5 +printf "%s\n" "$am_cv_CC_dependencies_compiler_type" >&6; } CCDEPMODE=depmode=$am_cv_CC_dependencies_compiler_type if @@ -4207,408 +4782,41 @@ fi -ac_ext=c -ac_cpp='$CPP $CPPFLAGS' -ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' -ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' -ac_compiler_gnu=$ac_cv_c_compiler_gnu -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking how to run the C preprocessor" >&5 -$as_echo_n "checking how to run the C preprocessor... " >&6; } -# On Suns, sometimes $CPP names a directory. -if test -n "$CPP" && test -d "$CPP"; then - CPP= -fi -if test -z "$CPP"; then - if ${ac_cv_prog_CPP+:} false; then : - $as_echo_n "(cached) " >&6 -else - # Double quotes because CPP needs to be expanded - for CPP in "$CC -E" "$CC -E -traditional-cpp" "/lib/cpp" - do - ac_preproc_ok=false -for ac_c_preproc_warn_flag in '' yes -do - # Use a header file that comes with gcc, so configuring glibc - # with a fresh cross-compiler works. - # Prefer to if __STDC__ is defined, since - # exists even on freestanding compilers. - # On the NeXT, cc -E runs the code through the compiler's parser, - # not just through cpp. "Syntax error" is here to catch this case. - cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ -#ifdef __STDC__ -# include -#else -# include -#endif - Syntax error -_ACEOF -if ac_fn_c_try_cpp "$LINENO"; then : - -else - # Broken: fails on valid input. -continue -fi -rm -f conftest.err conftest.i conftest.$ac_ext - - # OK, works on sane cases. Now check whether nonexistent headers - # can be detected and how. - cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ -#include -_ACEOF -if ac_fn_c_try_cpp "$LINENO"; then : - # Broken: success on invalid input. -continue -else - # Passes both tests. -ac_preproc_ok=: -break -fi -rm -f conftest.err conftest.i conftest.$ac_ext - -done -# Because of `break', _AC_PREPROC_IFELSE's cleaning code was skipped. -rm -f conftest.i conftest.err conftest.$ac_ext -if $ac_preproc_ok; then : - break -fi - - done - ac_cv_prog_CPP=$CPP - -fi - CPP=$ac_cv_prog_CPP -else - ac_cv_prog_CPP=$CPP -fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $CPP" >&5 -$as_echo "$CPP" >&6; } -ac_preproc_ok=false -for ac_c_preproc_warn_flag in '' yes -do - # Use a header file that comes with gcc, so configuring glibc - # with a fresh cross-compiler works. - # Prefer to if __STDC__ is defined, since - # exists even on freestanding compilers. - # On the NeXT, cc -E runs the code through the compiler's parser, - # not just through cpp. "Syntax error" is here to catch this case. - cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ -#ifdef __STDC__ -# include -#else -# include -#endif - Syntax error -_ACEOF -if ac_fn_c_try_cpp "$LINENO"; then : - -else - # Broken: fails on valid input. -continue -fi -rm -f conftest.err conftest.i conftest.$ac_ext - - # OK, works on sane cases. Now check whether nonexistent headers - # can be detected and how. - cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ -#include -_ACEOF -if ac_fn_c_try_cpp "$LINENO"; then : - # Broken: success on invalid input. -continue -else - # Passes both tests. -ac_preproc_ok=: -break -fi -rm -f conftest.err conftest.i conftest.$ac_ext - -done -# Because of `break', _AC_PREPROC_IFELSE's cleaning code was skipped. -rm -f conftest.i conftest.err conftest.$ac_ext -if $ac_preproc_ok; then : - -else - { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 -$as_echo "$as_me: error: in \`$ac_pwd':" >&2;} -as_fn_error $? "C preprocessor \"$CPP\" fails sanity check -See \`config.log' for more details" "$LINENO" 5; } -fi - -ac_ext=c -ac_cpp='$CPP $CPPFLAGS' -ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' -ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' -ac_compiler_gnu=$ac_cv_c_compiler_gnu - - -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for grep that handles long lines and -e" >&5 -$as_echo_n "checking for grep that handles long lines and -e... " >&6; } -if ${ac_cv_path_GREP+:} false; then : - $as_echo_n "(cached) " >&6 -else - if test -z "$GREP"; then - ac_path_GREP_found=false - # Loop through the user's path and test for each of PROGNAME-LIST - as_save_IFS=$IFS; IFS=$PATH_SEPARATOR -for as_dir in $PATH$PATH_SEPARATOR/usr/xpg4/bin -do - IFS=$as_save_IFS - test -z "$as_dir" && as_dir=. - for ac_prog in grep ggrep; do - for ac_exec_ext in '' $ac_executable_extensions; do - ac_path_GREP="$as_dir/$ac_prog$ac_exec_ext" - as_fn_executable_p "$ac_path_GREP" || continue -# Check for GNU ac_path_GREP and select it if it is found. - # Check for GNU $ac_path_GREP -case `"$ac_path_GREP" --version 2>&1` in -*GNU*) - ac_cv_path_GREP="$ac_path_GREP" ac_path_GREP_found=:;; -*) - ac_count=0 - $as_echo_n 0123456789 >"conftest.in" - while : - do - cat "conftest.in" "conftest.in" >"conftest.tmp" - mv "conftest.tmp" "conftest.in" - cp "conftest.in" "conftest.nl" - $as_echo 'GREP' >> "conftest.nl" - "$ac_path_GREP" -e 'GREP$' -e '-(cannot match)-' < "conftest.nl" >"conftest.out" 2>/dev/null || break - diff "conftest.out" "conftest.nl" >/dev/null 2>&1 || break - as_fn_arith $ac_count + 1 && ac_count=$as_val - if test $ac_count -gt ${ac_path_GREP_max-0}; then - # Best one so far, save it but keep looking for a better one - ac_cv_path_GREP="$ac_path_GREP" - ac_path_GREP_max=$ac_count - fi - # 10*(2^10) chars as input seems more than enough - test $ac_count -gt 10 && break - done - rm -f conftest.in conftest.tmp conftest.nl conftest.out;; -esac - - $ac_path_GREP_found && break 3 - done - done - done -IFS=$as_save_IFS - if test -z "$ac_cv_path_GREP"; then - as_fn_error $? "no acceptable grep could be found in $PATH$PATH_SEPARATOR/usr/xpg4/bin" "$LINENO" 5 - fi -else - ac_cv_path_GREP=$GREP -fi - -fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_path_GREP" >&5 -$as_echo "$ac_cv_path_GREP" >&6; } - GREP="$ac_cv_path_GREP" - - -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for egrep" >&5 -$as_echo_n "checking for egrep... " >&6; } -if ${ac_cv_path_EGREP+:} false; then : - $as_echo_n "(cached) " >&6 -else - if echo a | $GREP -E '(a|b)' >/dev/null 2>&1 - then ac_cv_path_EGREP="$GREP -E" - else - if test -z "$EGREP"; then - ac_path_EGREP_found=false - # Loop through the user's path and test for each of PROGNAME-LIST - as_save_IFS=$IFS; IFS=$PATH_SEPARATOR -for as_dir in $PATH$PATH_SEPARATOR/usr/xpg4/bin +ac_header= ac_cache= +for ac_item in $ac_header_c_list do - IFS=$as_save_IFS - test -z "$as_dir" && as_dir=. - for ac_prog in egrep; do - for ac_exec_ext in '' $ac_executable_extensions; do - ac_path_EGREP="$as_dir/$ac_prog$ac_exec_ext" - as_fn_executable_p "$ac_path_EGREP" || continue -# Check for GNU ac_path_EGREP and select it if it is found. - # Check for GNU $ac_path_EGREP -case `"$ac_path_EGREP" --version 2>&1` in -*GNU*) - ac_cv_path_EGREP="$ac_path_EGREP" ac_path_EGREP_found=:;; -*) - ac_count=0 - $as_echo_n 0123456789 >"conftest.in" - while : - do - cat "conftest.in" "conftest.in" >"conftest.tmp" - mv "conftest.tmp" "conftest.in" - cp "conftest.in" "conftest.nl" - $as_echo 'EGREP' >> "conftest.nl" - "$ac_path_EGREP" 'EGREP$' < "conftest.nl" >"conftest.out" 2>/dev/null || break - diff "conftest.out" "conftest.nl" >/dev/null 2>&1 || break - as_fn_arith $ac_count + 1 && ac_count=$as_val - if test $ac_count -gt ${ac_path_EGREP_max-0}; then - # Best one so far, save it but keep looking for a better one - ac_cv_path_EGREP="$ac_path_EGREP" - ac_path_EGREP_max=$ac_count + if test $ac_cache; then + ac_fn_c_check_header_compile "$LINENO" $ac_header ac_cv_header_$ac_cache "$ac_includes_default" + if eval test \"x\$ac_cv_header_$ac_cache\" = xyes; then + printf "%s\n" "#define $ac_item 1" >> confdefs.h fi - # 10*(2^10) chars as input seems more than enough - test $ac_count -gt 10 && break - done - rm -f conftest.in conftest.tmp conftest.nl conftest.out;; -esac - - $ac_path_EGREP_found && break 3 - done - done - done -IFS=$as_save_IFS - if test -z "$ac_cv_path_EGREP"; then - as_fn_error $? "no acceptable egrep could be found in $PATH$PATH_SEPARATOR/usr/xpg4/bin" "$LINENO" 5 + ac_header= ac_cache= + elif test $ac_header; then + ac_cache=$ac_item + else + ac_header=$ac_item fi -else - ac_cv_path_EGREP=$EGREP -fi - - fi -fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_path_EGREP" >&5 -$as_echo "$ac_cv_path_EGREP" >&6; } - EGREP="$ac_cv_path_EGREP" - - -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for ANSI C header files" >&5 -$as_echo_n "checking for ANSI C header files... " >&6; } -if ${ac_cv_header_stdc+:} false; then : - $as_echo_n "(cached) " >&6 -else - cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ -#include -#include -#include -#include - -int -main () -{ - - ; - return 0; -} -_ACEOF -if ac_fn_c_try_compile "$LINENO"; then : - ac_cv_header_stdc=yes -else - ac_cv_header_stdc=no -fi -rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext - -if test $ac_cv_header_stdc = yes; then - # SunOS 4.x string.h does not declare mem*, contrary to ANSI. - cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ -#include - -_ACEOF -if (eval "$ac_cpp conftest.$ac_ext") 2>&5 | - $EGREP "memchr" >/dev/null 2>&1; then : +done -else - ac_cv_header_stdc=no -fi -rm -f conftest* -fi -if test $ac_cv_header_stdc = yes; then - # ISC 2.0.2 stdlib.h does not declare free, contrary to ANSI. - cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ -#include -_ACEOF -if (eval "$ac_cpp conftest.$ac_ext") 2>&5 | - $EGREP "free" >/dev/null 2>&1; then : -else - ac_cv_header_stdc=no -fi -rm -f conftest* - -fi - -if test $ac_cv_header_stdc = yes; then - # /bin/cc in Irix-4.0.5 gets non-ANSI ctype macros unless using -ansi. - if test "$cross_compiling" = yes; then : - : -else - cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ -#include -#include -#if ((' ' & 0x0FF) == 0x020) -# define ISLOWER(c) ('a' <= (c) && (c) <= 'z') -# define TOUPPER(c) (ISLOWER(c) ? 'A' + ((c) - 'a') : (c)) -#else -# define ISLOWER(c) \ - (('a' <= (c) && (c) <= 'i') \ - || ('j' <= (c) && (c) <= 'r') \ - || ('s' <= (c) && (c) <= 'z')) -# define TOUPPER(c) (ISLOWER(c) ? ((c) | 0x40) : (c)) -#endif - -#define XOR(e, f) (((e) && !(f)) || (!(e) && (f))) -int -main () -{ - int i; - for (i = 0; i < 256; i++) - if (XOR (islower (i), ISLOWER (i)) - || toupper (i) != TOUPPER (i)) - return 2; - return 0; -} -_ACEOF -if ac_fn_c_try_run "$LINENO"; then : - -else - ac_cv_header_stdc=no -fi -rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext \ - conftest.$ac_objext conftest.beam conftest.$ac_ext -fi -fi -fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_header_stdc" >&5 -$as_echo "$ac_cv_header_stdc" >&6; } -if test $ac_cv_header_stdc = yes; then -$as_echo "#define STDC_HEADERS 1" >>confdefs.h -fi +if test $ac_cv_header_stdlib_h = yes && test $ac_cv_header_string_h = yes +then : -# On IRIX 5.3, sys/types and inttypes.h are conflicting. -for ac_header in sys/types.h sys/stat.h stdlib.h string.h memory.h strings.h \ - inttypes.h stdint.h unistd.h -do : - as_ac_Header=`$as_echo "ac_cv_header_$ac_header" | $as_tr_sh` -ac_fn_c_check_header_compile "$LINENO" "$ac_header" "$as_ac_Header" "$ac_includes_default -" -if eval test \"x\$"$as_ac_Header"\" = x"yes"; then : - cat >>confdefs.h <<_ACEOF -#define `$as_echo "HAVE_$ac_header" | $as_tr_cpp` 1 -_ACEOF +printf "%s\n" "#define STDC_HEADERS 1" >>confdefs.h fi - -done - - - { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether byte ordering is bigendian" >&5 -$as_echo_n "checking whether byte ordering is bigendian... " >&6; } -if ${ac_cv_c_bigendian+:} false; then : - $as_echo_n "(cached) " >&6 -else + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking whether byte ordering is bigendian" >&5 +printf %s "checking whether byte ordering is bigendian... " >&6; } +if test ${ac_cv_c_bigendian+y} +then : + printf %s "(cached) " >&6 +else $as_nop ac_cv_c_bigendian=unknown # See if we're dealing with a universal compiler. cat confdefs.h - <<_ACEOF >conftest.$ac_ext @@ -4619,7 +4827,8 @@ else typedef int dummy; _ACEOF -if ac_fn_c_try_compile "$LINENO"; then : +if ac_fn_c_try_compile "$LINENO" +then : # Check for potential -arch flags. It is not universal unless # there are at least two -arch flags with different values. @@ -4643,7 +4852,7 @@ if ac_fn_c_try_compile "$LINENO"; then : fi done fi -rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext +rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext if test $ac_cv_c_bigendian = unknown; then # See if sys/param.h defines the BYTE_ORDER macro. cat confdefs.h - <<_ACEOF >conftest.$ac_ext @@ -4652,7 +4861,7 @@ rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext #include int -main () +main (void) { #if ! (defined BYTE_ORDER && defined BIG_ENDIAN \ && defined LITTLE_ENDIAN && BYTE_ORDER && BIG_ENDIAN \ @@ -4664,7 +4873,8 @@ main () return 0; } _ACEOF -if ac_fn_c_try_compile "$LINENO"; then : +if ac_fn_c_try_compile "$LINENO" +then : # It does; now see whether it defined to BIG_ENDIAN or not. cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ @@ -4672,7 +4882,7 @@ if ac_fn_c_try_compile "$LINENO"; then : #include int -main () +main (void) { #if BYTE_ORDER != BIG_ENDIAN not big endian @@ -4682,14 +4892,15 @@ main () return 0; } _ACEOF -if ac_fn_c_try_compile "$LINENO"; then : +if ac_fn_c_try_compile "$LINENO" +then : ac_cv_c_bigendian=yes -else +else $as_nop ac_cv_c_bigendian=no fi -rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext +rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext fi -rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext +rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext fi if test $ac_cv_c_bigendian = unknown; then # See if defines _LITTLE_ENDIAN or _BIG_ENDIAN (e.g., Solaris). @@ -4698,7 +4909,7 @@ rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext #include int -main () +main (void) { #if ! (defined _LITTLE_ENDIAN || defined _BIG_ENDIAN) bogus endian macros @@ -4708,14 +4919,15 @@ main () return 0; } _ACEOF -if ac_fn_c_try_compile "$LINENO"; then : +if ac_fn_c_try_compile "$LINENO" +then : # It does; now see whether it defined to _BIG_ENDIAN or not. cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #include int -main () +main (void) { #ifndef _BIG_ENDIAN not big endian @@ -4725,31 +4937,33 @@ main () return 0; } _ACEOF -if ac_fn_c_try_compile "$LINENO"; then : +if ac_fn_c_try_compile "$LINENO" +then : ac_cv_c_bigendian=yes -else +else $as_nop ac_cv_c_bigendian=no fi -rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext +rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext fi -rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext +rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext fi if test $ac_cv_c_bigendian = unknown; then # Compile a test program. - if test "$cross_compiling" = yes; then : + if test "$cross_compiling" = yes +then : # Try to guess by grepping values from an object file. cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ -short int ascii_mm[] = +unsigned short int ascii_mm[] = { 0x4249, 0x4765, 0x6E44, 0x6961, 0x6E53, 0x7953, 0 }; - short int ascii_ii[] = + unsigned short int ascii_ii[] = { 0x694C, 0x5454, 0x656C, 0x6E45, 0x6944, 0x6E61, 0 }; int use_ascii (int i) { return ascii_mm[i] + ascii_ii[i]; } - short int ebcdic_ii[] = + unsigned short int ebcdic_ii[] = { 0x89D3, 0xE3E3, 0x8593, 0x95C5, 0x89C4, 0x9581, 0 }; - short int ebcdic_mm[] = + unsigned short int ebcdic_mm[] = { 0xC2C9, 0xC785, 0x95C4, 0x8981, 0x95E2, 0xA8E2, 0 }; int use_ebcdic (int i) { return ebcdic_mm[i] + ebcdic_ii[i]; @@ -4757,14 +4971,15 @@ short int ascii_mm[] = extern int foo; int -main () +main (void) { return use_ascii (foo) == use_ebcdic (foo); ; return 0; } _ACEOF -if ac_fn_c_try_compile "$LINENO"; then : +if ac_fn_c_try_compile "$LINENO" +then : if grep BIGenDianSyS conftest.$ac_objext >/dev/null; then ac_cv_c_bigendian=yes fi @@ -4777,13 +4992,13 @@ if ac_fn_c_try_compile "$LINENO"; then : fi fi fi -rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext -else +rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext +else $as_nop cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ $ac_includes_default int -main () +main (void) { /* Are we little or big endian? From Harbison&Steele. */ @@ -4799,9 +5014,10 @@ main () return 0; } _ACEOF -if ac_fn_c_try_run "$LINENO"; then : +if ac_fn_c_try_run "$LINENO" +then : ac_cv_c_bigendian=no -else +else $as_nop ac_cv_c_bigendian=yes fi rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext \ @@ -4810,18 +5026,18 @@ fi fi fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_c_bigendian" >&5 -$as_echo "$ac_cv_c_bigendian" >&6; } +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_c_bigendian" >&5 +printf "%s\n" "$ac_cv_c_bigendian" >&6; } case $ac_cv_c_bigendian in #( yes) -$as_echo "#define HIGHFIRST 1" >>confdefs.h +printf "%s\n" "#define HIGHFIRST 1" >>confdefs.h ;; #( no) ;; #( universal) -$as_echo "#define AC_APPLE_UNIVERSAL_BUILD 1" >>confdefs.h +printf "%s\n" "#define AC_APPLE_UNIVERSAL_BUILD 1" >>confdefs.h ;; #( *) @@ -4840,11 +5056,12 @@ ac_compiler_gnu=$ac_cv_c_compiler_gnu if test -n "$ac_tool_prefix"; then # Extract the first word of "${ac_tool_prefix}gcc", so it can be a program name with args. set dummy ${ac_tool_prefix}gcc; ac_word=$2 -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 -$as_echo_n "checking for $ac_word... " >&6; } -if ${ac_cv_prog_CC+:} false; then : - $as_echo_n "(cached) " >&6 -else +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +printf %s "checking for $ac_word... " >&6; } +if test ${ac_cv_prog_CC+y} +then : + printf %s "(cached) " >&6 +else $as_nop if test -n "$CC"; then ac_cv_prog_CC="$CC" # Let the user override the test. else @@ -4852,11 +5069,15 @@ as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS - test -z "$as_dir" && as_dir=. + case $as_dir in #((( + '') as_dir=./ ;; + */) ;; + *) as_dir=$as_dir/ ;; + esac for ac_exec_ext in '' $ac_executable_extensions; do - if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then + if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then ac_cv_prog_CC="${ac_tool_prefix}gcc" - $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 + printf "%s\n" "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5 break 2 fi done @@ -4867,11 +5088,11 @@ fi fi CC=$ac_cv_prog_CC if test -n "$CC"; then - { $as_echo "$as_me:${as_lineno-$LINENO}: result: $CC" >&5 -$as_echo "$CC" >&6; } + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $CC" >&5 +printf "%s\n" "$CC" >&6; } else - { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 -$as_echo "no" >&6; } + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 +printf "%s\n" "no" >&6; } fi @@ -4880,11 +5101,12 @@ if test -z "$ac_cv_prog_CC"; then ac_ct_CC=$CC # Extract the first word of "gcc", so it can be a program name with args. set dummy gcc; ac_word=$2 -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 -$as_echo_n "checking for $ac_word... " >&6; } -if ${ac_cv_prog_ac_ct_CC+:} false; then : - $as_echo_n "(cached) " >&6 -else +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +printf %s "checking for $ac_word... " >&6; } +if test ${ac_cv_prog_ac_ct_CC+y} +then : + printf %s "(cached) " >&6 +else $as_nop if test -n "$ac_ct_CC"; then ac_cv_prog_ac_ct_CC="$ac_ct_CC" # Let the user override the test. else @@ -4892,11 +5114,15 @@ as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS - test -z "$as_dir" && as_dir=. + case $as_dir in #((( + '') as_dir=./ ;; + */) ;; + *) as_dir=$as_dir/ ;; + esac for ac_exec_ext in '' $ac_executable_extensions; do - if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then + if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then ac_cv_prog_ac_ct_CC="gcc" - $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 + printf "%s\n" "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5 break 2 fi done @@ -4907,11 +5133,11 @@ fi fi ac_ct_CC=$ac_cv_prog_ac_ct_CC if test -n "$ac_ct_CC"; then - { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_CC" >&5 -$as_echo "$ac_ct_CC" >&6; } + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_ct_CC" >&5 +printf "%s\n" "$ac_ct_CC" >&6; } else - { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 -$as_echo "no" >&6; } + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 +printf "%s\n" "no" >&6; } fi if test "x$ac_ct_CC" = x; then @@ -4919,8 +5145,8 @@ fi else case $cross_compiling:$ac_tool_warned in yes:) -{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 -$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 +printf "%s\n" "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} ac_tool_warned=yes ;; esac CC=$ac_ct_CC @@ -4933,11 +5159,12 @@ if test -z "$CC"; then if test -n "$ac_tool_prefix"; then # Extract the first word of "${ac_tool_prefix}cc", so it can be a program name with args. set dummy ${ac_tool_prefix}cc; ac_word=$2 -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 -$as_echo_n "checking for $ac_word... " >&6; } -if ${ac_cv_prog_CC+:} false; then : - $as_echo_n "(cached) " >&6 -else +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +printf %s "checking for $ac_word... " >&6; } +if test ${ac_cv_prog_CC+y} +then : + printf %s "(cached) " >&6 +else $as_nop if test -n "$CC"; then ac_cv_prog_CC="$CC" # Let the user override the test. else @@ -4945,11 +5172,15 @@ as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS - test -z "$as_dir" && as_dir=. + case $as_dir in #((( + '') as_dir=./ ;; + */) ;; + *) as_dir=$as_dir/ ;; + esac for ac_exec_ext in '' $ac_executable_extensions; do - if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then + if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then ac_cv_prog_CC="${ac_tool_prefix}cc" - $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 + printf "%s\n" "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5 break 2 fi done @@ -4960,11 +5191,11 @@ fi fi CC=$ac_cv_prog_CC if test -n "$CC"; then - { $as_echo "$as_me:${as_lineno-$LINENO}: result: $CC" >&5 -$as_echo "$CC" >&6; } + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $CC" >&5 +printf "%s\n" "$CC" >&6; } else - { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 -$as_echo "no" >&6; } + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 +printf "%s\n" "no" >&6; } fi @@ -4973,11 +5204,12 @@ fi if test -z "$CC"; then # Extract the first word of "cc", so it can be a program name with args. set dummy cc; ac_word=$2 -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 -$as_echo_n "checking for $ac_word... " >&6; } -if ${ac_cv_prog_CC+:} false; then : - $as_echo_n "(cached) " >&6 -else +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +printf %s "checking for $ac_word... " >&6; } +if test ${ac_cv_prog_CC+y} +then : + printf %s "(cached) " >&6 +else $as_nop if test -n "$CC"; then ac_cv_prog_CC="$CC" # Let the user override the test. else @@ -4986,15 +5218,19 @@ as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS - test -z "$as_dir" && as_dir=. + case $as_dir in #((( + '') as_dir=./ ;; + */) ;; + *) as_dir=$as_dir/ ;; + esac for ac_exec_ext in '' $ac_executable_extensions; do - if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then - if test "$as_dir/$ac_word$ac_exec_ext" = "/usr/ucb/cc"; then + if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then + if test "$as_dir$ac_word$ac_exec_ext" = "/usr/ucb/cc"; then ac_prog_rejected=yes continue fi ac_cv_prog_CC="cc" - $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 + printf "%s\n" "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5 break 2 fi done @@ -5010,33 +5246,144 @@ if test $ac_prog_rejected = yes; then # However, it has the same basename, so the bogon will be chosen # first if we set CC to just the basename; use the full file name. shift - ac_cv_prog_CC="$as_dir/$ac_word${1+' '}$@" + ac_cv_prog_CC="$as_dir$ac_word${1+' '}$@" fi fi fi fi CC=$ac_cv_prog_CC if test -n "$CC"; then - { $as_echo "$as_me:${as_lineno-$LINENO}: result: $CC" >&5 -$as_echo "$CC" >&6; } + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $CC" >&5 +printf "%s\n" "$CC" >&6; } +else + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 +printf "%s\n" "no" >&6; } +fi + + +fi +if test -z "$CC"; then + if test -n "$ac_tool_prefix"; then + for ac_prog in cl.exe + do + # Extract the first word of "$ac_tool_prefix$ac_prog", so it can be a program name with args. +set dummy $ac_tool_prefix$ac_prog; ac_word=$2 +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +printf %s "checking for $ac_word... " >&6; } +if test ${ac_cv_prog_CC+y} +then : + printf %s "(cached) " >&6 +else $as_nop + if test -n "$CC"; then + ac_cv_prog_CC="$CC" # Let the user override the test. +else +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + case $as_dir in #((( + '') as_dir=./ ;; + */) ;; + *) as_dir=$as_dir/ ;; + esac + for ac_exec_ext in '' $ac_executable_extensions; do + if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then + ac_cv_prog_CC="$ac_tool_prefix$ac_prog" + printf "%s\n" "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5 + break 2 + fi +done + done +IFS=$as_save_IFS + +fi +fi +CC=$ac_cv_prog_CC +if test -n "$CC"; then + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $CC" >&5 +printf "%s\n" "$CC" >&6; } +else + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 +printf "%s\n" "no" >&6; } +fi + + + test -n "$CC" && break + done +fi +if test -z "$CC"; then + ac_ct_CC=$CC + for ac_prog in cl.exe +do + # Extract the first word of "$ac_prog", so it can be a program name with args. +set dummy $ac_prog; ac_word=$2 +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +printf %s "checking for $ac_word... " >&6; } +if test ${ac_cv_prog_ac_ct_CC+y} +then : + printf %s "(cached) " >&6 +else $as_nop + if test -n "$ac_ct_CC"; then + ac_cv_prog_ac_ct_CC="$ac_ct_CC" # Let the user override the test. +else +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + case $as_dir in #((( + '') as_dir=./ ;; + */) ;; + *) as_dir=$as_dir/ ;; + esac + for ac_exec_ext in '' $ac_executable_extensions; do + if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then + ac_cv_prog_ac_ct_CC="$ac_prog" + printf "%s\n" "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5 + break 2 + fi +done + done +IFS=$as_save_IFS + +fi +fi +ac_ct_CC=$ac_cv_prog_ac_ct_CC +if test -n "$ac_ct_CC"; then + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_ct_CC" >&5 +printf "%s\n" "$ac_ct_CC" >&6; } else - { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 -$as_echo "no" >&6; } + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 +printf "%s\n" "no" >&6; } fi + test -n "$ac_ct_CC" && break +done + + if test "x$ac_ct_CC" = x; then + CC="" + else + case $cross_compiling:$ac_tool_warned in +yes:) +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 +printf "%s\n" "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} +ac_tool_warned=yes ;; +esac + CC=$ac_ct_CC + fi +fi + fi if test -z "$CC"; then if test -n "$ac_tool_prefix"; then - for ac_prog in cl.exe - do - # Extract the first word of "$ac_tool_prefix$ac_prog", so it can be a program name with args. -set dummy $ac_tool_prefix$ac_prog; ac_word=$2 -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 -$as_echo_n "checking for $ac_word... " >&6; } -if ${ac_cv_prog_CC+:} false; then : - $as_echo_n "(cached) " >&6 -else + # Extract the first word of "${ac_tool_prefix}clang", so it can be a program name with args. +set dummy ${ac_tool_prefix}clang; ac_word=$2 +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +printf %s "checking for $ac_word... " >&6; } +if test ${ac_cv_prog_CC+y} +then : + printf %s "(cached) " >&6 +else $as_nop if test -n "$CC"; then ac_cv_prog_CC="$CC" # Let the user override the test. else @@ -5044,11 +5391,15 @@ as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS - test -z "$as_dir" && as_dir=. + case $as_dir in #((( + '') as_dir=./ ;; + */) ;; + *) as_dir=$as_dir/ ;; + esac for ac_exec_ext in '' $ac_executable_extensions; do - if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then - ac_cv_prog_CC="$ac_tool_prefix$ac_prog" - $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 + if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then + ac_cv_prog_CC="${ac_tool_prefix}clang" + printf "%s\n" "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5 break 2 fi done @@ -5059,28 +5410,25 @@ fi fi CC=$ac_cv_prog_CC if test -n "$CC"; then - { $as_echo "$as_me:${as_lineno-$LINENO}: result: $CC" >&5 -$as_echo "$CC" >&6; } + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $CC" >&5 +printf "%s\n" "$CC" >&6; } else - { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 -$as_echo "no" >&6; } + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 +printf "%s\n" "no" >&6; } fi - test -n "$CC" && break - done fi -if test -z "$CC"; then +if test -z "$ac_cv_prog_CC"; then ac_ct_CC=$CC - for ac_prog in cl.exe -do - # Extract the first word of "$ac_prog", so it can be a program name with args. -set dummy $ac_prog; ac_word=$2 -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 -$as_echo_n "checking for $ac_word... " >&6; } -if ${ac_cv_prog_ac_ct_CC+:} false; then : - $as_echo_n "(cached) " >&6 -else + # Extract the first word of "clang", so it can be a program name with args. +set dummy clang; ac_word=$2 +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +printf %s "checking for $ac_word... " >&6; } +if test ${ac_cv_prog_ac_ct_CC+y} +then : + printf %s "(cached) " >&6 +else $as_nop if test -n "$ac_ct_CC"; then ac_cv_prog_ac_ct_CC="$ac_ct_CC" # Let the user override the test. else @@ -5088,11 +5436,15 @@ as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS - test -z "$as_dir" && as_dir=. + case $as_dir in #((( + '') as_dir=./ ;; + */) ;; + *) as_dir=$as_dir/ ;; + esac for ac_exec_ext in '' $ac_executable_extensions; do - if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then - ac_cv_prog_ac_ct_CC="$ac_prog" - $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 + if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then + ac_cv_prog_ac_ct_CC="clang" + printf "%s\n" "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5 break 2 fi done @@ -5103,50 +5455,48 @@ fi fi ac_ct_CC=$ac_cv_prog_ac_ct_CC if test -n "$ac_ct_CC"; then - { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_CC" >&5 -$as_echo "$ac_ct_CC" >&6; } + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_ct_CC" >&5 +printf "%s\n" "$ac_ct_CC" >&6; } else - { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 -$as_echo "no" >&6; } + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 +printf "%s\n" "no" >&6; } fi - - test -n "$ac_ct_CC" && break -done - if test "x$ac_ct_CC" = x; then CC="" else case $cross_compiling:$ac_tool_warned in yes:) -{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 -$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 +printf "%s\n" "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} ac_tool_warned=yes ;; esac CC=$ac_ct_CC fi +else + CC="$ac_cv_prog_CC" fi fi -test -z "$CC" && { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 -$as_echo "$as_me: error: in \`$ac_pwd':" >&2;} +test -z "$CC" && { { printf "%s\n" "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 +printf "%s\n" "$as_me: error: in \`$ac_pwd':" >&2;} as_fn_error $? "no acceptable C compiler found in \$PATH See \`config.log' for more details" "$LINENO" 5; } # Provide some information about the compiler. -$as_echo "$as_me:${as_lineno-$LINENO}: checking for C compiler version" >&5 +printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for C compiler version" >&5 set X $ac_compile ac_compiler=$2 -for ac_option in --version -v -V -qversion; do +for ac_option in --version -v -V -qversion -version; do { { ac_try="$ac_compiler $ac_option >&5" case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" -$as_echo "$ac_try_echo"; } >&5 +printf "%s\n" "$ac_try_echo"; } >&5 (eval "$ac_compiler $ac_option >&5") 2>conftest.err ac_status=$? if test -s conftest.err; then @@ -5156,20 +5506,21 @@ $as_echo "$ac_try_echo"; } >&5 cat conftest.er1 >&5 fi rm -f conftest.er1 conftest.err - $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; } done -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether we are using the GNU C compiler" >&5 -$as_echo_n "checking whether we are using the GNU C compiler... " >&6; } -if ${ac_cv_c_compiler_gnu+:} false; then : - $as_echo_n "(cached) " >&6 -else +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking whether the compiler supports GNU C" >&5 +printf %s "checking whether the compiler supports GNU C... " >&6; } +if test ${ac_cv_c_compiler_gnu+y} +then : + printf %s "(cached) " >&6 +else $as_nop cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ int -main () +main (void) { #ifndef __GNUC__ choke me @@ -5179,29 +5530,33 @@ main () return 0; } _ACEOF -if ac_fn_c_try_compile "$LINENO"; then : +if ac_fn_c_try_compile "$LINENO" +then : ac_compiler_gnu=yes -else +else $as_nop ac_compiler_gnu=no fi -rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext +rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext ac_cv_c_compiler_gnu=$ac_compiler_gnu fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_c_compiler_gnu" >&5 -$as_echo "$ac_cv_c_compiler_gnu" >&6; } +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_c_compiler_gnu" >&5 +printf "%s\n" "$ac_cv_c_compiler_gnu" >&6; } +ac_compiler_gnu=$ac_cv_c_compiler_gnu + if test $ac_compiler_gnu = yes; then GCC=yes else GCC= fi -ac_test_CFLAGS=${CFLAGS+set} +ac_test_CFLAGS=${CFLAGS+y} ac_save_CFLAGS=$CFLAGS -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether $CC accepts -g" >&5 -$as_echo_n "checking whether $CC accepts -g... " >&6; } -if ${ac_cv_prog_cc_g+:} false; then : - $as_echo_n "(cached) " >&6 -else +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking whether $CC accepts -g" >&5 +printf %s "checking whether $CC accepts -g... " >&6; } +if test ${ac_cv_prog_cc_g+y} +then : + printf %s "(cached) " >&6 +else $as_nop ac_save_c_werror_flag=$ac_c_werror_flag ac_c_werror_flag=yes ac_cv_prog_cc_g=no @@ -5210,57 +5565,60 @@ else /* end confdefs.h. */ int -main () +main (void) { ; return 0; } _ACEOF -if ac_fn_c_try_compile "$LINENO"; then : +if ac_fn_c_try_compile "$LINENO" +then : ac_cv_prog_cc_g=yes -else +else $as_nop CFLAGS="" cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ int -main () +main (void) { ; return 0; } _ACEOF -if ac_fn_c_try_compile "$LINENO"; then : +if ac_fn_c_try_compile "$LINENO" +then : -else +else $as_nop ac_c_werror_flag=$ac_save_c_werror_flag CFLAGS="-g" cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ int -main () +main (void) { ; return 0; } _ACEOF -if ac_fn_c_try_compile "$LINENO"; then : +if ac_fn_c_try_compile "$LINENO" +then : ac_cv_prog_cc_g=yes fi -rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext +rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext fi -rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext +rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext fi -rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext +rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext ac_c_werror_flag=$ac_save_c_werror_flag fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_prog_cc_g" >&5 -$as_echo "$ac_cv_prog_cc_g" >&6; } -if test "$ac_test_CFLAGS" = set; then +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_prog_cc_g" >&5 +printf "%s\n" "$ac_cv_prog_cc_g" >&6; } +if test $ac_test_CFLAGS; then CFLAGS=$ac_save_CFLAGS elif test $ac_cv_prog_cc_g = yes; then if test "$GCC" = yes; then @@ -5275,94 +5633,144 @@ else CFLAGS= fi fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $CC option to accept ISO C89" >&5 -$as_echo_n "checking for $CC option to accept ISO C89... " >&6; } -if ${ac_cv_prog_cc_c89+:} false; then : - $as_echo_n "(cached) " >&6 -else - ac_cv_prog_cc_c89=no +ac_prog_cc_stdc=no +if test x$ac_prog_cc_stdc = xno +then : + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $CC option to enable C11 features" >&5 +printf %s "checking for $CC option to enable C11 features... " >&6; } +if test ${ac_cv_prog_cc_c11+y} +then : + printf %s "(cached) " >&6 +else $as_nop + ac_cv_prog_cc_c11=no ac_save_CC=$CC cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ -#include -#include -struct stat; -/* Most of the following tests are stolen from RCS 5.7's src/conf.sh. */ -struct buf { int x; }; -FILE * (*rcsopen) (struct buf *, struct stat *, int); -static char *e (p, i) - char **p; - int i; -{ - return p[i]; -} -static char *f (char * (*g) (char **, int), char **p, ...) -{ - char *s; - va_list v; - va_start (v,p); - s = g (p, va_arg (v,int)); - va_end (v); - return s; -} - -/* OSF 4.0 Compaq cc is some sort of almost-ANSI by default. It has - function prototypes and stuff, but not '\xHH' hex character constants. - These don't provoke an error unfortunately, instead are silently treated - as 'x'. The following induces an error, until -std is added to get - proper ANSI mode. Curiously '\x00'!='x' always comes out true, for an - array size at least. It's necessary to write '\x00'==0 to get something - that's true only with -std. */ -int osf4_cc_array ['\x00' == 0 ? 1 : -1]; +$ac_c_conftest_c11_program +_ACEOF +for ac_arg in '' -std=gnu11 +do + CC="$ac_save_CC $ac_arg" + if ac_fn_c_try_compile "$LINENO" +then : + ac_cv_prog_cc_c11=$ac_arg +fi +rm -f core conftest.err conftest.$ac_objext conftest.beam + test "x$ac_cv_prog_cc_c11" != "xno" && break +done +rm -f conftest.$ac_ext +CC=$ac_save_CC +fi -/* IBM C 6 for AIX is almost-ANSI by default, but it replaces macro parameters - inside strings and character constants. */ -#define FOO(x) 'x' -int xlc6_cc_array[FOO(a) == 'x' ? 1 : -1]; +if test "x$ac_cv_prog_cc_c11" = xno +then : + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: unsupported" >&5 +printf "%s\n" "unsupported" >&6; } +else $as_nop + if test "x$ac_cv_prog_cc_c11" = x +then : + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: none needed" >&5 +printf "%s\n" "none needed" >&6; } +else $as_nop + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_prog_cc_c11" >&5 +printf "%s\n" "$ac_cv_prog_cc_c11" >&6; } + CC="$CC $ac_cv_prog_cc_c11" +fi + ac_cv_prog_cc_stdc=$ac_cv_prog_cc_c11 + ac_prog_cc_stdc=c11 +fi +fi +if test x$ac_prog_cc_stdc = xno +then : + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $CC option to enable C99 features" >&5 +printf %s "checking for $CC option to enable C99 features... " >&6; } +if test ${ac_cv_prog_cc_c99+y} +then : + printf %s "(cached) " >&6 +else $as_nop + ac_cv_prog_cc_c99=no +ac_save_CC=$CC +cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +$ac_c_conftest_c99_program +_ACEOF +for ac_arg in '' -std=gnu99 -std=c99 -c99 -qlanglvl=extc1x -qlanglvl=extc99 -AC99 -D_STDC_C99= +do + CC="$ac_save_CC $ac_arg" + if ac_fn_c_try_compile "$LINENO" +then : + ac_cv_prog_cc_c99=$ac_arg +fi +rm -f core conftest.err conftest.$ac_objext conftest.beam + test "x$ac_cv_prog_cc_c99" != "xno" && break +done +rm -f conftest.$ac_ext +CC=$ac_save_CC +fi -int test (int i, double x); -struct s1 {int (*f) (int a);}; -struct s2 {int (*f) (double a);}; -int pairnames (int, char **, FILE *(*)(struct buf *, struct stat *, int), int, int); -int argc; -char **argv; -int -main () -{ -return f (e, argv, 0) != argv[0] || f (e, argv, 1) != argv[1]; - ; - return 0; -} +if test "x$ac_cv_prog_cc_c99" = xno +then : + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: unsupported" >&5 +printf "%s\n" "unsupported" >&6; } +else $as_nop + if test "x$ac_cv_prog_cc_c99" = x +then : + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: none needed" >&5 +printf "%s\n" "none needed" >&6; } +else $as_nop + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_prog_cc_c99" >&5 +printf "%s\n" "$ac_cv_prog_cc_c99" >&6; } + CC="$CC $ac_cv_prog_cc_c99" +fi + ac_cv_prog_cc_stdc=$ac_cv_prog_cc_c99 + ac_prog_cc_stdc=c99 +fi +fi +if test x$ac_prog_cc_stdc = xno +then : + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $CC option to enable C89 features" >&5 +printf %s "checking for $CC option to enable C89 features... " >&6; } +if test ${ac_cv_prog_cc_c89+y} +then : + printf %s "(cached) " >&6 +else $as_nop + ac_cv_prog_cc_c89=no +ac_save_CC=$CC +cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +$ac_c_conftest_c89_program _ACEOF -for ac_arg in '' -qlanglvl=extc89 -qlanglvl=ansi -std \ - -Ae "-Aa -D_HPUX_SOURCE" "-Xc -D__EXTENSIONS__" +for ac_arg in '' -qlanglvl=extc89 -qlanglvl=ansi -std -Ae "-Aa -D_HPUX_SOURCE" "-Xc -D__EXTENSIONS__" do CC="$ac_save_CC $ac_arg" - if ac_fn_c_try_compile "$LINENO"; then : + if ac_fn_c_try_compile "$LINENO" +then : ac_cv_prog_cc_c89=$ac_arg fi -rm -f core conftest.err conftest.$ac_objext +rm -f core conftest.err conftest.$ac_objext conftest.beam test "x$ac_cv_prog_cc_c89" != "xno" && break done rm -f conftest.$ac_ext CC=$ac_save_CC - fi -# AC_CACHE_VAL -case "x$ac_cv_prog_cc_c89" in - x) - { $as_echo "$as_me:${as_lineno-$LINENO}: result: none needed" >&5 -$as_echo "none needed" >&6; } ;; - xno) - { $as_echo "$as_me:${as_lineno-$LINENO}: result: unsupported" >&5 -$as_echo "unsupported" >&6; } ;; - *) - CC="$CC $ac_cv_prog_cc_c89" - { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_prog_cc_c89" >&5 -$as_echo "$ac_cv_prog_cc_c89" >&6; } ;; -esac -if test "x$ac_cv_prog_cc_c89" != xno; then : +if test "x$ac_cv_prog_cc_c89" = xno +then : + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: unsupported" >&5 +printf "%s\n" "unsupported" >&6; } +else $as_nop + if test "x$ac_cv_prog_cc_c89" = x +then : + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: none needed" >&5 +printf "%s\n" "none needed" >&6; } +else $as_nop + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_prog_cc_c89" >&5 +printf "%s\n" "$ac_cv_prog_cc_c89" >&6; } + CC="$CC $ac_cv_prog_cc_c89" +fi + ac_cv_prog_cc_stdc=$ac_cv_prog_cc_c89 + ac_prog_cc_stdc=c89 +fi fi ac_ext=c @@ -5371,21 +5779,23 @@ ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' ac_compiler_gnu=$ac_cv_c_compiler_gnu -ac_ext=c + + ac_ext=c ac_cpp='$CPP $CPPFLAGS' ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' ac_compiler_gnu=$ac_cv_c_compiler_gnu -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether $CC understands -c and -o together" >&5 -$as_echo_n "checking whether $CC understands -c and -o together... " >&6; } -if ${am_cv_prog_cc_c_o+:} false; then : - $as_echo_n "(cached) " >&6 -else +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking whether $CC understands -c and -o together" >&5 +printf %s "checking whether $CC understands -c and -o together... " >&6; } +if test ${am_cv_prog_cc_c_o+y} +then : + printf %s "(cached) " >&6 +else $as_nop cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ int -main () +main (void) { ; @@ -5413,8 +5823,8 @@ _ACEOF rm -f core conftest* unset am_i fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $am_cv_prog_cc_c_o" >&5 -$as_echo "$am_cv_prog_cc_c_o" >&6; } +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $am_cv_prog_cc_c_o" >&5 +printf "%s\n" "$am_cv_prog_cc_c_o" >&6; } if test "$am_cv_prog_cc_c_o" != yes; then # Losing compiler, so override with the script. # FIXME: It is wrong to rewrite CC. @@ -5432,11 +5842,12 @@ ac_compiler_gnu=$ac_cv_c_compiler_gnu depcc="$CC" am_compiler_list= -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking dependency style of $depcc" >&5 -$as_echo_n "checking dependency style of $depcc... " >&6; } -if ${am_cv_CC_dependencies_compiler_type+:} false; then : - $as_echo_n "(cached) " >&6 -else +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking dependency style of $depcc" >&5 +printf %s "checking dependency style of $depcc... " >&6; } +if test ${am_cv_CC_dependencies_compiler_type+y} +then : + printf %s "(cached) " >&6 +else $as_nop if test -z "$AMDEP_TRUE" && test -f "$am_depcomp"; then # We make a subdir and do the tests there. Otherwise we can end up # making bogus files that we don't know about and never remove. For @@ -5543,8 +5954,8 @@ else fi fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $am_cv_CC_dependencies_compiler_type" >&5 -$as_echo "$am_cv_CC_dependencies_compiler_type" >&6; } +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $am_cv_CC_dependencies_compiler_type" >&5 +printf "%s\n" "$am_cv_CC_dependencies_compiler_type" >&6; } CCDEPMODE=depmode=$am_cv_CC_dependencies_compiler_type if @@ -5558,16 +5969,18 @@ else fi -if test -n "$ac_tool_prefix"; then + + if test -n "$ac_tool_prefix"; then for ac_prog in ar lib "link -lib" do # Extract the first word of "$ac_tool_prefix$ac_prog", so it can be a program name with args. set dummy $ac_tool_prefix$ac_prog; ac_word=$2 -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 -$as_echo_n "checking for $ac_word... " >&6; } -if ${ac_cv_prog_AR+:} false; then : - $as_echo_n "(cached) " >&6 -else +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +printf %s "checking for $ac_word... " >&6; } +if test ${ac_cv_prog_AR+y} +then : + printf %s "(cached) " >&6 +else $as_nop if test -n "$AR"; then ac_cv_prog_AR="$AR" # Let the user override the test. else @@ -5575,11 +5988,15 @@ as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS - test -z "$as_dir" && as_dir=. + case $as_dir in #((( + '') as_dir=./ ;; + */) ;; + *) as_dir=$as_dir/ ;; + esac for ac_exec_ext in '' $ac_executable_extensions; do - if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then + if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then ac_cv_prog_AR="$ac_tool_prefix$ac_prog" - $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 + printf "%s\n" "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5 break 2 fi done @@ -5590,11 +6007,11 @@ fi fi AR=$ac_cv_prog_AR if test -n "$AR"; then - { $as_echo "$as_me:${as_lineno-$LINENO}: result: $AR" >&5 -$as_echo "$AR" >&6; } + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $AR" >&5 +printf "%s\n" "$AR" >&6; } else - { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 -$as_echo "no" >&6; } + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 +printf "%s\n" "no" >&6; } fi @@ -5607,11 +6024,12 @@ if test -z "$AR"; then do # Extract the first word of "$ac_prog", so it can be a program name with args. set dummy $ac_prog; ac_word=$2 -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 -$as_echo_n "checking for $ac_word... " >&6; } -if ${ac_cv_prog_ac_ct_AR+:} false; then : - $as_echo_n "(cached) " >&6 -else +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +printf %s "checking for $ac_word... " >&6; } +if test ${ac_cv_prog_ac_ct_AR+y} +then : + printf %s "(cached) " >&6 +else $as_nop if test -n "$ac_ct_AR"; then ac_cv_prog_ac_ct_AR="$ac_ct_AR" # Let the user override the test. else @@ -5619,11 +6037,15 @@ as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS - test -z "$as_dir" && as_dir=. + case $as_dir in #((( + '') as_dir=./ ;; + */) ;; + *) as_dir=$as_dir/ ;; + esac for ac_exec_ext in '' $ac_executable_extensions; do - if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then + if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then ac_cv_prog_ac_ct_AR="$ac_prog" - $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 + printf "%s\n" "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5 break 2 fi done @@ -5634,11 +6056,11 @@ fi fi ac_ct_AR=$ac_cv_prog_ac_ct_AR if test -n "$ac_ct_AR"; then - { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_AR" >&5 -$as_echo "$ac_ct_AR" >&6; } + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_ct_AR" >&5 +printf "%s\n" "$ac_ct_AR" >&6; } else - { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 -$as_echo "no" >&6; } + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 +printf "%s\n" "no" >&6; } fi @@ -5650,8 +6072,8 @@ done else case $cross_compiling:$ac_tool_warned in yes:) -{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 -$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 +printf "%s\n" "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} ac_tool_warned=yes ;; esac AR=$ac_ct_AR @@ -5660,11 +6082,12 @@ fi : ${AR=ar} -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking the archiver ($AR) interface" >&5 -$as_echo_n "checking the archiver ($AR) interface... " >&6; } -if ${am_cv_ar_interface+:} false; then : - $as_echo_n "(cached) " >&6 -else +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking the archiver ($AR) interface" >&5 +printf %s "checking the archiver ($AR) interface... " >&6; } +if test ${am_cv_ar_interface+y} +then : + printf %s "(cached) " >&6 +else $as_nop ac_ext=c ac_cpp='$CPP $CPPFLAGS' ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' @@ -5676,12 +6099,13 @@ ac_compiler_gnu=$ac_cv_c_compiler_gnu /* end confdefs.h. */ int some_variable = 0; _ACEOF -if ac_fn_c_try_compile "$LINENO"; then : +if ac_fn_c_try_compile "$LINENO" +then : am_ar_try='$AR cru libconftest.a conftest.$ac_objext >&5' { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$am_ar_try\""; } >&5 (eval $am_ar_try) 2>&5 ac_status=$? - $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; } if test "$ac_status" -eq 0; then am_cv_ar_interface=ar @@ -5690,7 +6114,7 @@ if ac_fn_c_try_compile "$LINENO"; then : { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$am_ar_try\""; } >&5 (eval $am_ar_try) 2>&5 ac_status=$? - $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; } if test "$ac_status" -eq 0; then am_cv_ar_interface=lib @@ -5701,7 +6125,7 @@ if ac_fn_c_try_compile "$LINENO"; then : rm -f conftest.lib libconftest.a fi -rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext +rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext ac_ext=c ac_cpp='$CPP $CPPFLAGS' ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' @@ -5709,8 +6133,8 @@ ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $ ac_compiler_gnu=$ac_cv_c_compiler_gnu fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $am_cv_ar_interface" >&5 -$as_echo "$am_cv_ar_interface" >&6; } +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $am_cv_ar_interface" >&5 +printf "%s\n" "$am_cv_ar_interface" >&6; } case $am_cv_ar_interface in ar) @@ -5735,15 +6159,16 @@ ac_compile='$OBJC -c $OBJCFLAGS $CPPFLAGS conftest.$ac_ext >&5' ac_link='$OBJC -o conftest$ac_exeext $OBJCFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' ac_compiler_gnu=$ac_cv_objc_compiler_gnu if test -n "$ac_tool_prefix"; then - for ac_prog in gcc objcc objc cc CC + for ac_prog in gcc objcc objc cc CC clang do # Extract the first word of "$ac_tool_prefix$ac_prog", so it can be a program name with args. set dummy $ac_tool_prefix$ac_prog; ac_word=$2 -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 -$as_echo_n "checking for $ac_word... " >&6; } -if ${ac_cv_prog_OBJC+:} false; then : - $as_echo_n "(cached) " >&6 -else +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +printf %s "checking for $ac_word... " >&6; } +if test ${ac_cv_prog_OBJC+y} +then : + printf %s "(cached) " >&6 +else $as_nop if test -n "$OBJC"; then ac_cv_prog_OBJC="$OBJC" # Let the user override the test. else @@ -5751,11 +6176,15 @@ as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS - test -z "$as_dir" && as_dir=. + case $as_dir in #((( + '') as_dir=./ ;; + */) ;; + *) as_dir=$as_dir/ ;; + esac for ac_exec_ext in '' $ac_executable_extensions; do - if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then + if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then ac_cv_prog_OBJC="$ac_tool_prefix$ac_prog" - $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 + printf "%s\n" "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5 break 2 fi done @@ -5766,11 +6195,11 @@ fi fi OBJC=$ac_cv_prog_OBJC if test -n "$OBJC"; then - { $as_echo "$as_me:${as_lineno-$LINENO}: result: $OBJC" >&5 -$as_echo "$OBJC" >&6; } + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $OBJC" >&5 +printf "%s\n" "$OBJC" >&6; } else - { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 -$as_echo "no" >&6; } + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 +printf "%s\n" "no" >&6; } fi @@ -5779,15 +6208,16 @@ fi fi if test -z "$OBJC"; then ac_ct_OBJC=$OBJC - for ac_prog in gcc objcc objc cc CC + for ac_prog in gcc objcc objc cc CC clang do # Extract the first word of "$ac_prog", so it can be a program name with args. set dummy $ac_prog; ac_word=$2 -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 -$as_echo_n "checking for $ac_word... " >&6; } -if ${ac_cv_prog_ac_ct_OBJC+:} false; then : - $as_echo_n "(cached) " >&6 -else +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +printf %s "checking for $ac_word... " >&6; } +if test ${ac_cv_prog_ac_ct_OBJC+y} +then : + printf %s "(cached) " >&6 +else $as_nop if test -n "$ac_ct_OBJC"; then ac_cv_prog_ac_ct_OBJC="$ac_ct_OBJC" # Let the user override the test. else @@ -5795,11 +6225,15 @@ as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS - test -z "$as_dir" && as_dir=. + case $as_dir in #((( + '') as_dir=./ ;; + */) ;; + *) as_dir=$as_dir/ ;; + esac for ac_exec_ext in '' $ac_executable_extensions; do - if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then + if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then ac_cv_prog_ac_ct_OBJC="$ac_prog" - $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 + printf "%s\n" "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5 break 2 fi done @@ -5810,11 +6244,11 @@ fi fi ac_ct_OBJC=$ac_cv_prog_ac_ct_OBJC if test -n "$ac_ct_OBJC"; then - { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_OBJC" >&5 -$as_echo "$ac_ct_OBJC" >&6; } + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_ct_OBJC" >&5 +printf "%s\n" "$ac_ct_OBJC" >&6; } else - { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 -$as_echo "no" >&6; } + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 +printf "%s\n" "no" >&6; } fi @@ -5826,8 +6260,8 @@ done else case $cross_compiling:$ac_tool_warned in yes:) -{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 -$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 +printf "%s\n" "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} ac_tool_warned=yes ;; esac OBJC=$ac_ct_OBJC @@ -5835,7 +6269,7 @@ esac fi # Provide some information about the compiler. -$as_echo "$as_me:${as_lineno-$LINENO}: checking for Objective C compiler version" >&5 +printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for Objective C compiler version" >&5 set X $ac_compile ac_compiler=$2 for ac_option in --version -v -V -qversion; do @@ -5845,7 +6279,7 @@ case "(($ac_try" in *) ac_try_echo=$ac_try;; esac eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" -$as_echo "$ac_try_echo"; } >&5 +printf "%s\n" "$ac_try_echo"; } >&5 (eval "$ac_compiler $ac_option >&5") 2>conftest.err ac_status=$? if test -s conftest.err; then @@ -5855,20 +6289,21 @@ $as_echo "$ac_try_echo"; } >&5 cat conftest.er1 >&5 fi rm -f conftest.er1 conftest.err - $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; } done -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether we are using the GNU Objective C compiler" >&5 -$as_echo_n "checking whether we are using the GNU Objective C compiler... " >&6; } -if ${ac_cv_objc_compiler_gnu+:} false; then : - $as_echo_n "(cached) " >&6 -else +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking whether the compiler supports GNU Objective C" >&5 +printf %s "checking whether the compiler supports GNU Objective C... " >&6; } +if test ${ac_cv_objc_compiler_gnu+y} +then : + printf %s "(cached) " >&6 +else $as_nop cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ int -main () +main (void) { #ifndef __GNUC__ choke me @@ -5878,29 +6313,33 @@ main () return 0; } _ACEOF -if ac_fn_objc_try_compile "$LINENO"; then : +if ac_fn_objc_try_compile "$LINENO" +then : ac_compiler_gnu=yes -else +else $as_nop ac_compiler_gnu=no fi -rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext +rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext ac_cv_objc_compiler_gnu=$ac_compiler_gnu fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_objc_compiler_gnu" >&5 -$as_echo "$ac_cv_objc_compiler_gnu" >&6; } +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_objc_compiler_gnu" >&5 +printf "%s\n" "$ac_cv_objc_compiler_gnu" >&6; } +ac_compiler_gnu=$ac_cv_objc_compiler_gnu + if test $ac_compiler_gnu = yes; then GOBJC=yes else GOBJC= fi -ac_test_OBJCFLAGS=${OBJCFLAGS+set} +ac_test_OBJCFLAGS=${OBJCFLAGS+y} ac_save_OBJCFLAGS=$OBJCFLAGS -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether $OBJC accepts -g" >&5 -$as_echo_n "checking whether $OBJC accepts -g... " >&6; } -if ${ac_cv_prog_objc_g+:} false; then : - $as_echo_n "(cached) " >&6 -else +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking whether $OBJC accepts -g" >&5 +printf %s "checking whether $OBJC accepts -g... " >&6; } +if test ${ac_cv_prog_objc_g+y} +then : + printf %s "(cached) " >&6 +else $as_nop ac_save_objc_werror_flag=$ac_objc_werror_flag ac_objc_werror_flag=yes ac_cv_prog_objc_g=no @@ -5909,57 +6348,60 @@ else /* end confdefs.h. */ int -main () +main (void) { ; return 0; } _ACEOF -if ac_fn_objc_try_compile "$LINENO"; then : +if ac_fn_objc_try_compile "$LINENO" +then : ac_cv_prog_objc_g=yes -else +else $as_nop OBJCFLAGS="" cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ int -main () +main (void) { ; return 0; } _ACEOF -if ac_fn_objc_try_compile "$LINENO"; then : +if ac_fn_objc_try_compile "$LINENO" +then : -else +else $as_nop ac_objc_werror_flag=$ac_save_objc_werror_flag OBJCFLAGS="-g" cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ int -main () +main (void) { ; return 0; } _ACEOF -if ac_fn_objc_try_compile "$LINENO"; then : +if ac_fn_objc_try_compile "$LINENO" +then : ac_cv_prog_objc_g=yes fi -rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext +rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext fi -rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext +rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext fi -rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext +rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext ac_objc_werror_flag=$ac_save_objc_werror_flag fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_prog_objc_g" >&5 -$as_echo "$ac_cv_prog_objc_g" >&6; } -if test "$ac_test_OBJCFLAGS" = set; then +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_prog_objc_g" >&5 +printf "%s\n" "$ac_cv_prog_objc_g" >&6; } +if test $ac_test_OBJCFLAGS; then OBJCFLAGS=$ac_save_OBJCFLAGS elif test $ac_cv_prog_objc_g = yes; then if test "$GOBJC" = yes; then @@ -5982,11 +6424,12 @@ ac_compiler_gnu=$ac_cv_c_compiler_gnu depcc="$OBJC" am_compiler_list='gcc3 gcc' -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking dependency style of $depcc" >&5 -$as_echo_n "checking dependency style of $depcc... " >&6; } -if ${am_cv_OBJC_dependencies_compiler_type+:} false; then : - $as_echo_n "(cached) " >&6 -else +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking dependency style of $depcc" >&5 +printf %s "checking dependency style of $depcc... " >&6; } +if test ${am_cv_OBJC_dependencies_compiler_type+y} +then : + printf %s "(cached) " >&6 +else $as_nop if test -z "$AMDEP_TRUE" && test -f "$am_depcomp"; then # We make a subdir and do the tests there. Otherwise we can end up # making bogus files that we don't know about and never remove. For @@ -6091,8 +6534,8 @@ else fi fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $am_cv_OBJC_dependencies_compiler_type" >&5 -$as_echo "$am_cv_OBJC_dependencies_compiler_type" >&6; } +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $am_cv_OBJC_dependencies_compiler_type" >&5 +printf "%s\n" "$am_cv_OBJC_dependencies_compiler_type" >&6; } OBJCDEPMODE=depmode=$am_cv_OBJC_dependencies_compiler_type if @@ -6108,13 +6551,13 @@ fi CFLAGS="$cflags_bckup" -FFMPEG_LIBS="-lavcodec -lavfilter -lavformat -lavutil -lswscale -lswresample" +FFMPEG_FRAMEWORKS="-framework libavcodec -framework libavfilter -framework libavformat -framework libavutil -framework libswscale -framework libswresample" case `pwd` in *\ * | *\ *) - { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: Libtool does not cope well with whitespace in \`pwd\`" >&5 -$as_echo "$as_me: WARNING: Libtool does not cope well with whitespace in \`pwd\`" >&2;} ;; + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: WARNING: Libtool does not cope well with whitespace in \`pwd\`" >&5 +printf "%s\n" "$as_me: WARNING: Libtool does not cope well with whitespace in \`pwd\`" >&2;} ;; esac @@ -6134,6 +6577,7 @@ macro_revision='2.4.6' + ltmain=$ac_aux_dir/ltmain.sh # Backslashify metacharacters that are still active within @@ -6157,8 +6601,8 @@ ECHO='\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\ ECHO=$ECHO$ECHO$ECHO$ECHO$ECHO ECHO=$ECHO$ECHO$ECHO$ECHO$ECHO$ECHO -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking how to print strings" >&5 -$as_echo_n "checking how to print strings... " >&6; } +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking how to print strings" >&5 +printf %s "checking how to print strings... " >&6; } # Test print first, because it will be a builtin if present. if test "X`( print -r -- -n ) 2>/dev/null`" = X-n && \ test "X`print -r -- $ECHO 2>/dev/null`" = "X$ECHO"; then @@ -6184,12 +6628,12 @@ func_echo_all () } case $ECHO in - printf*) { $as_echo "$as_me:${as_lineno-$LINENO}: result: printf" >&5 -$as_echo "printf" >&6; } ;; - print*) { $as_echo "$as_me:${as_lineno-$LINENO}: result: print -r" >&5 -$as_echo "print -r" >&6; } ;; - *) { $as_echo "$as_me:${as_lineno-$LINENO}: result: cat" >&5 -$as_echo "cat" >&6; } ;; + printf*) { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: printf" >&5 +printf "%s\n" "printf" >&6; } ;; + print*) { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: print -r" >&5 +printf "%s\n" "print -r" >&6; } ;; + *) { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: cat" >&5 +printf "%s\n" "cat" >&6; } ;; esac @@ -6205,11 +6649,12 @@ esac -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for a sed that does not truncate output" >&5 -$as_echo_n "checking for a sed that does not truncate output... " >&6; } -if ${ac_cv_path_SED+:} false; then : - $as_echo_n "(cached) " >&6 -else +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for a sed that does not truncate output" >&5 +printf %s "checking for a sed that does not truncate output... " >&6; } +if test ${ac_cv_path_SED+y} +then : + printf %s "(cached) " >&6 +else $as_nop ac_script=s/aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa/bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb/ for ac_i in 1 2 3 4 5 6 7; do ac_script="$ac_script$as_nl$ac_script" @@ -6223,10 +6668,15 @@ else for as_dir in $PATH do IFS=$as_save_IFS - test -z "$as_dir" && as_dir=. - for ac_prog in sed gsed; do + case $as_dir in #((( + '') as_dir=./ ;; + */) ;; + *) as_dir=$as_dir/ ;; + esac + for ac_prog in sed gsed + do for ac_exec_ext in '' $ac_executable_extensions; do - ac_path_SED="$as_dir/$ac_prog$ac_exec_ext" + ac_path_SED="$as_dir$ac_prog$ac_exec_ext" as_fn_executable_p "$ac_path_SED" || continue # Check for GNU ac_path_SED and select it if it is found. # Check for GNU $ac_path_SED @@ -6235,13 +6685,13 @@ case `"$ac_path_SED" --version 2>&1` in ac_cv_path_SED="$ac_path_SED" ac_path_SED_found=:;; *) ac_count=0 - $as_echo_n 0123456789 >"conftest.in" + printf %s 0123456789 >"conftest.in" while : do cat "conftest.in" "conftest.in" >"conftest.tmp" mv "conftest.tmp" "conftest.in" cp "conftest.in" "conftest.nl" - $as_echo '' >> "conftest.nl" + printf "%s\n" '' >> "conftest.nl" "$ac_path_SED" -f conftest.sed < "conftest.nl" >"conftest.out" 2>/dev/null || break diff "conftest.out" "conftest.nl" >/dev/null 2>&1 || break as_fn_arith $ac_count + 1 && ac_count=$as_val @@ -6269,29 +6719,172 @@ else fi fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_path_SED" >&5 -$as_echo "$ac_cv_path_SED" >&6; } - SED="$ac_cv_path_SED" - rm -f conftest.sed - -test -z "$SED" && SED=sed -Xsed="$SED -e 1s/^X//" - - - - - - - - - +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_path_SED" >&5 +printf "%s\n" "$ac_cv_path_SED" >&6; } + SED="$ac_cv_path_SED" + rm -f conftest.sed + +test -z "$SED" && SED=sed +Xsed="$SED -e 1s/^X//" + + + + + + + + + + + +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for grep that handles long lines and -e" >&5 +printf %s "checking for grep that handles long lines and -e... " >&6; } +if test ${ac_cv_path_GREP+y} +then : + printf %s "(cached) " >&6 +else $as_nop + if test -z "$GREP"; then + ac_path_GREP_found=false + # Loop through the user's path and test for each of PROGNAME-LIST + as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH$PATH_SEPARATOR/usr/xpg4/bin +do + IFS=$as_save_IFS + case $as_dir in #((( + '') as_dir=./ ;; + */) ;; + *) as_dir=$as_dir/ ;; + esac + for ac_prog in grep ggrep + do + for ac_exec_ext in '' $ac_executable_extensions; do + ac_path_GREP="$as_dir$ac_prog$ac_exec_ext" + as_fn_executable_p "$ac_path_GREP" || continue +# Check for GNU ac_path_GREP and select it if it is found. + # Check for GNU $ac_path_GREP +case `"$ac_path_GREP" --version 2>&1` in +*GNU*) + ac_cv_path_GREP="$ac_path_GREP" ac_path_GREP_found=:;; +*) + ac_count=0 + printf %s 0123456789 >"conftest.in" + while : + do + cat "conftest.in" "conftest.in" >"conftest.tmp" + mv "conftest.tmp" "conftest.in" + cp "conftest.in" "conftest.nl" + printf "%s\n" 'GREP' >> "conftest.nl" + "$ac_path_GREP" -e 'GREP$' -e '-(cannot match)-' < "conftest.nl" >"conftest.out" 2>/dev/null || break + diff "conftest.out" "conftest.nl" >/dev/null 2>&1 || break + as_fn_arith $ac_count + 1 && ac_count=$as_val + if test $ac_count -gt ${ac_path_GREP_max-0}; then + # Best one so far, save it but keep looking for a better one + ac_cv_path_GREP="$ac_path_GREP" + ac_path_GREP_max=$ac_count + fi + # 10*(2^10) chars as input seems more than enough + test $ac_count -gt 10 && break + done + rm -f conftest.in conftest.tmp conftest.nl conftest.out;; +esac + + $ac_path_GREP_found && break 3 + done + done + done +IFS=$as_save_IFS + if test -z "$ac_cv_path_GREP"; then + as_fn_error $? "no acceptable grep could be found in $PATH$PATH_SEPARATOR/usr/xpg4/bin" "$LINENO" 5 + fi +else + ac_cv_path_GREP=$GREP +fi + +fi +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_path_GREP" >&5 +printf "%s\n" "$ac_cv_path_GREP" >&6; } + GREP="$ac_cv_path_GREP" + + +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for egrep" >&5 +printf %s "checking for egrep... " >&6; } +if test ${ac_cv_path_EGREP+y} +then : + printf %s "(cached) " >&6 +else $as_nop + if echo a | $GREP -E '(a|b)' >/dev/null 2>&1 + then ac_cv_path_EGREP="$GREP -E" + else + if test -z "$EGREP"; then + ac_path_EGREP_found=false + # Loop through the user's path and test for each of PROGNAME-LIST + as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH$PATH_SEPARATOR/usr/xpg4/bin +do + IFS=$as_save_IFS + case $as_dir in #((( + '') as_dir=./ ;; + */) ;; + *) as_dir=$as_dir/ ;; + esac + for ac_prog in egrep + do + for ac_exec_ext in '' $ac_executable_extensions; do + ac_path_EGREP="$as_dir$ac_prog$ac_exec_ext" + as_fn_executable_p "$ac_path_EGREP" || continue +# Check for GNU ac_path_EGREP and select it if it is found. + # Check for GNU $ac_path_EGREP +case `"$ac_path_EGREP" --version 2>&1` in +*GNU*) + ac_cv_path_EGREP="$ac_path_EGREP" ac_path_EGREP_found=:;; +*) + ac_count=0 + printf %s 0123456789 >"conftest.in" + while : + do + cat "conftest.in" "conftest.in" >"conftest.tmp" + mv "conftest.tmp" "conftest.in" + cp "conftest.in" "conftest.nl" + printf "%s\n" 'EGREP' >> "conftest.nl" + "$ac_path_EGREP" 'EGREP$' < "conftest.nl" >"conftest.out" 2>/dev/null || break + diff "conftest.out" "conftest.nl" >/dev/null 2>&1 || break + as_fn_arith $ac_count + 1 && ac_count=$as_val + if test $ac_count -gt ${ac_path_EGREP_max-0}; then + # Best one so far, save it but keep looking for a better one + ac_cv_path_EGREP="$ac_path_EGREP" + ac_path_EGREP_max=$ac_count + fi + # 10*(2^10) chars as input seems more than enough + test $ac_count -gt 10 && break + done + rm -f conftest.in conftest.tmp conftest.nl conftest.out;; +esac + + $ac_path_EGREP_found && break 3 + done + done + done +IFS=$as_save_IFS + if test -z "$ac_cv_path_EGREP"; then + as_fn_error $? "no acceptable egrep could be found in $PATH$PATH_SEPARATOR/usr/xpg4/bin" "$LINENO" 5 + fi +else + ac_cv_path_EGREP=$EGREP +fi + + fi +fi +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_path_EGREP" >&5 +printf "%s\n" "$ac_cv_path_EGREP" >&6; } + EGREP="$ac_cv_path_EGREP" -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for fgrep" >&5 -$as_echo_n "checking for fgrep... " >&6; } -if ${ac_cv_path_FGREP+:} false; then : - $as_echo_n "(cached) " >&6 -else +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for fgrep" >&5 +printf %s "checking for fgrep... " >&6; } +if test ${ac_cv_path_FGREP+y} +then : + printf %s "(cached) " >&6 +else $as_nop if echo 'ab*c' | $GREP -F 'ab*c' >/dev/null 2>&1 then ac_cv_path_FGREP="$GREP -F" else @@ -6302,10 +6895,15 @@ else for as_dir in $PATH$PATH_SEPARATOR/usr/xpg4/bin do IFS=$as_save_IFS - test -z "$as_dir" && as_dir=. - for ac_prog in fgrep; do + case $as_dir in #((( + '') as_dir=./ ;; + */) ;; + *) as_dir=$as_dir/ ;; + esac + for ac_prog in fgrep + do for ac_exec_ext in '' $ac_executable_extensions; do - ac_path_FGREP="$as_dir/$ac_prog$ac_exec_ext" + ac_path_FGREP="$as_dir$ac_prog$ac_exec_ext" as_fn_executable_p "$ac_path_FGREP" || continue # Check for GNU ac_path_FGREP and select it if it is found. # Check for GNU $ac_path_FGREP @@ -6314,13 +6912,13 @@ case `"$ac_path_FGREP" --version 2>&1` in ac_cv_path_FGREP="$ac_path_FGREP" ac_path_FGREP_found=:;; *) ac_count=0 - $as_echo_n 0123456789 >"conftest.in" + printf %s 0123456789 >"conftest.in" while : do cat "conftest.in" "conftest.in" >"conftest.tmp" mv "conftest.tmp" "conftest.in" cp "conftest.in" "conftest.nl" - $as_echo 'FGREP' >> "conftest.nl" + printf "%s\n" 'FGREP' >> "conftest.nl" "$ac_path_FGREP" FGREP < "conftest.nl" >"conftest.out" 2>/dev/null || break diff "conftest.out" "conftest.nl" >/dev/null 2>&1 || break as_fn_arith $ac_count + 1 && ac_count=$as_val @@ -6349,8 +6947,8 @@ fi fi fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_path_FGREP" >&5 -$as_echo "$ac_cv_path_FGREP" >&6; } +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_path_FGREP" >&5 +printf "%s\n" "$ac_cv_path_FGREP" >&6; } FGREP="$ac_cv_path_FGREP" @@ -6375,17 +6973,18 @@ test -z "$GREP" && GREP=grep # Check whether --with-gnu-ld was given. -if test "${with_gnu_ld+set}" = set; then : +if test ${with_gnu_ld+y} +then : withval=$with_gnu_ld; test no = "$withval" || with_gnu_ld=yes -else +else $as_nop with_gnu_ld=no fi ac_prog=ld if test yes = "$GCC"; then # Check if gcc -print-prog-name=ld gives a path. - { $as_echo "$as_me:${as_lineno-$LINENO}: checking for ld used by $CC" >&5 -$as_echo_n "checking for ld used by $CC... " >&6; } + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for ld used by $CC" >&5 +printf %s "checking for ld used by $CC... " >&6; } case $host in *-*-mingw*) # gcc leaves a trailing carriage return, which upsets mingw @@ -6414,15 +7013,16 @@ $as_echo_n "checking for ld used by $CC... " >&6; } ;; esac elif test yes = "$with_gnu_ld"; then - { $as_echo "$as_me:${as_lineno-$LINENO}: checking for GNU ld" >&5 -$as_echo_n "checking for GNU ld... " >&6; } + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for GNU ld" >&5 +printf %s "checking for GNU ld... " >&6; } else - { $as_echo "$as_me:${as_lineno-$LINENO}: checking for non-GNU ld" >&5 -$as_echo_n "checking for non-GNU ld... " >&6; } + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for non-GNU ld" >&5 +printf %s "checking for non-GNU ld... " >&6; } fi -if ${lt_cv_path_LD+:} false; then : - $as_echo_n "(cached) " >&6 -else +if test ${lt_cv_path_LD+y} +then : + printf %s "(cached) " >&6 +else $as_nop if test -z "$LD"; then lt_save_ifs=$IFS; IFS=$PATH_SEPARATOR for ac_dir in $PATH; do @@ -6451,18 +7051,19 @@ fi LD=$lt_cv_path_LD if test -n "$LD"; then - { $as_echo "$as_me:${as_lineno-$LINENO}: result: $LD" >&5 -$as_echo "$LD" >&6; } + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $LD" >&5 +printf "%s\n" "$LD" >&6; } else - { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 -$as_echo "no" >&6; } + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 +printf "%s\n" "no" >&6; } fi test -z "$LD" && as_fn_error $? "no acceptable ld found in \$PATH" "$LINENO" 5 -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking if the linker ($LD) is GNU ld" >&5 -$as_echo_n "checking if the linker ($LD) is GNU ld... " >&6; } -if ${lt_cv_prog_gnu_ld+:} false; then : - $as_echo_n "(cached) " >&6 -else +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking if the linker ($LD) is GNU ld" >&5 +printf %s "checking if the linker ($LD) is GNU ld... " >&6; } +if test ${lt_cv_prog_gnu_ld+y} +then : + printf %s "(cached) " >&6 +else $as_nop # I'd rather use --version here, but apparently some GNU lds only accept -v. case `$LD -v 2>&1 &1 &5 -$as_echo "$lt_cv_prog_gnu_ld" >&6; } +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $lt_cv_prog_gnu_ld" >&5 +printf "%s\n" "$lt_cv_prog_gnu_ld" >&6; } with_gnu_ld=$lt_cv_prog_gnu_ld @@ -6485,11 +7086,12 @@ with_gnu_ld=$lt_cv_prog_gnu_ld -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for BSD- or MS-compatible name lister (nm)" >&5 -$as_echo_n "checking for BSD- or MS-compatible name lister (nm)... " >&6; } -if ${lt_cv_path_NM+:} false; then : - $as_echo_n "(cached) " >&6 -else +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for BSD- or MS-compatible name lister (nm)" >&5 +printf %s "checking for BSD- or MS-compatible name lister (nm)... " >&6; } +if test ${lt_cv_path_NM+y} +then : + printf %s "(cached) " >&6 +else $as_nop if test -n "$NM"; then # Let the user override the test. lt_cv_path_NM=$NM @@ -6539,8 +7141,8 @@ else : ${lt_cv_path_NM=no} fi fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_path_NM" >&5 -$as_echo "$lt_cv_path_NM" >&6; } +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $lt_cv_path_NM" >&5 +printf "%s\n" "$lt_cv_path_NM" >&6; } if test no != "$lt_cv_path_NM"; then NM=$lt_cv_path_NM else @@ -6553,11 +7155,12 @@ else do # Extract the first word of "$ac_tool_prefix$ac_prog", so it can be a program name with args. set dummy $ac_tool_prefix$ac_prog; ac_word=$2 -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 -$as_echo_n "checking for $ac_word... " >&6; } -if ${ac_cv_prog_DUMPBIN+:} false; then : - $as_echo_n "(cached) " >&6 -else +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +printf %s "checking for $ac_word... " >&6; } +if test ${ac_cv_prog_DUMPBIN+y} +then : + printf %s "(cached) " >&6 +else $as_nop if test -n "$DUMPBIN"; then ac_cv_prog_DUMPBIN="$DUMPBIN" # Let the user override the test. else @@ -6565,11 +7168,15 @@ as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS - test -z "$as_dir" && as_dir=. + case $as_dir in #((( + '') as_dir=./ ;; + */) ;; + *) as_dir=$as_dir/ ;; + esac for ac_exec_ext in '' $ac_executable_extensions; do - if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then + if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then ac_cv_prog_DUMPBIN="$ac_tool_prefix$ac_prog" - $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 + printf "%s\n" "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5 break 2 fi done @@ -6580,11 +7187,11 @@ fi fi DUMPBIN=$ac_cv_prog_DUMPBIN if test -n "$DUMPBIN"; then - { $as_echo "$as_me:${as_lineno-$LINENO}: result: $DUMPBIN" >&5 -$as_echo "$DUMPBIN" >&6; } + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $DUMPBIN" >&5 +printf "%s\n" "$DUMPBIN" >&6; } else - { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 -$as_echo "no" >&6; } + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 +printf "%s\n" "no" >&6; } fi @@ -6597,11 +7204,12 @@ if test -z "$DUMPBIN"; then do # Extract the first word of "$ac_prog", so it can be a program name with args. set dummy $ac_prog; ac_word=$2 -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 -$as_echo_n "checking for $ac_word... " >&6; } -if ${ac_cv_prog_ac_ct_DUMPBIN+:} false; then : - $as_echo_n "(cached) " >&6 -else +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +printf %s "checking for $ac_word... " >&6; } +if test ${ac_cv_prog_ac_ct_DUMPBIN+y} +then : + printf %s "(cached) " >&6 +else $as_nop if test -n "$ac_ct_DUMPBIN"; then ac_cv_prog_ac_ct_DUMPBIN="$ac_ct_DUMPBIN" # Let the user override the test. else @@ -6609,11 +7217,15 @@ as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS - test -z "$as_dir" && as_dir=. + case $as_dir in #((( + '') as_dir=./ ;; + */) ;; + *) as_dir=$as_dir/ ;; + esac for ac_exec_ext in '' $ac_executable_extensions; do - if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then + if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then ac_cv_prog_ac_ct_DUMPBIN="$ac_prog" - $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 + printf "%s\n" "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5 break 2 fi done @@ -6624,11 +7236,11 @@ fi fi ac_ct_DUMPBIN=$ac_cv_prog_ac_ct_DUMPBIN if test -n "$ac_ct_DUMPBIN"; then - { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_DUMPBIN" >&5 -$as_echo "$ac_ct_DUMPBIN" >&6; } + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_ct_DUMPBIN" >&5 +printf "%s\n" "$ac_ct_DUMPBIN" >&6; } else - { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 -$as_echo "no" >&6; } + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 +printf "%s\n" "no" >&6; } fi @@ -6640,8 +7252,8 @@ done else case $cross_compiling:$ac_tool_warned in yes:) -{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 -$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 +printf "%s\n" "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} ac_tool_warned=yes ;; esac DUMPBIN=$ac_ct_DUMPBIN @@ -6669,11 +7281,12 @@ test -z "$NM" && NM=nm -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking the name lister ($NM) interface" >&5 -$as_echo_n "checking the name lister ($NM) interface... " >&6; } -if ${lt_cv_nm_interface+:} false; then : - $as_echo_n "(cached) " >&6 -else +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking the name lister ($NM) interface" >&5 +printf %s "checking the name lister ($NM) interface... " >&6; } +if test ${lt_cv_nm_interface+y} +then : + printf %s "(cached) " >&6 +else $as_nop lt_cv_nm_interface="BSD nm" echo "int some_variable = 0;" > conftest.$ac_ext (eval echo "\"\$as_me:$LINENO: $ac_compile\"" >&5) @@ -6689,26 +7302,27 @@ else fi rm -f conftest* fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_nm_interface" >&5 -$as_echo "$lt_cv_nm_interface" >&6; } +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $lt_cv_nm_interface" >&5 +printf "%s\n" "$lt_cv_nm_interface" >&6; } -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether ln -s works" >&5 -$as_echo_n "checking whether ln -s works... " >&6; } +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking whether ln -s works" >&5 +printf %s "checking whether ln -s works... " >&6; } LN_S=$as_ln_s if test "$LN_S" = "ln -s"; then - { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 -$as_echo "yes" >&6; } + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5 +printf "%s\n" "yes" >&6; } else - { $as_echo "$as_me:${as_lineno-$LINENO}: result: no, using $LN_S" >&5 -$as_echo "no, using $LN_S" >&6; } + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no, using $LN_S" >&5 +printf "%s\n" "no, using $LN_S" >&6; } fi # find the maximum length of command line arguments -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking the maximum length of command line arguments" >&5 -$as_echo_n "checking the maximum length of command line arguments... " >&6; } -if ${lt_cv_sys_max_cmd_len+:} false; then : - $as_echo_n "(cached) " >&6 -else +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking the maximum length of command line arguments" >&5 +printf %s "checking the maximum length of command line arguments... " >&6; } +if test ${lt_cv_sys_max_cmd_len+y} +then : + printf %s "(cached) " >&6 +else $as_nop i=0 teststring=ABCD @@ -6835,11 +7449,11 @@ else fi if test -n "$lt_cv_sys_max_cmd_len"; then - { $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_sys_max_cmd_len" >&5 -$as_echo "$lt_cv_sys_max_cmd_len" >&6; } + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $lt_cv_sys_max_cmd_len" >&5 +printf "%s\n" "$lt_cv_sys_max_cmd_len" >&6; } else - { $as_echo "$as_me:${as_lineno-$LINENO}: result: none" >&5 -$as_echo "none" >&6; } + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: none" >&5 +printf "%s\n" "none" >&6; } fi max_cmd_len=$lt_cv_sys_max_cmd_len @@ -6883,11 +7497,12 @@ esac -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking how to convert $build file names to $host format" >&5 -$as_echo_n "checking how to convert $build file names to $host format... " >&6; } -if ${lt_cv_to_host_file_cmd+:} false; then : - $as_echo_n "(cached) " >&6 -else +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking how to convert $build file names to $host format" >&5 +printf %s "checking how to convert $build file names to $host format... " >&6; } +if test ${lt_cv_to_host_file_cmd+y} +then : + printf %s "(cached) " >&6 +else $as_nop case $host in *-*-mingw* ) case $build in @@ -6923,18 +7538,19 @@ esac fi to_host_file_cmd=$lt_cv_to_host_file_cmd -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_to_host_file_cmd" >&5 -$as_echo "$lt_cv_to_host_file_cmd" >&6; } +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $lt_cv_to_host_file_cmd" >&5 +printf "%s\n" "$lt_cv_to_host_file_cmd" >&6; } -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking how to convert $build file names to toolchain format" >&5 -$as_echo_n "checking how to convert $build file names to toolchain format... " >&6; } -if ${lt_cv_to_tool_file_cmd+:} false; then : - $as_echo_n "(cached) " >&6 -else +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking how to convert $build file names to toolchain format" >&5 +printf %s "checking how to convert $build file names to toolchain format... " >&6; } +if test ${lt_cv_to_tool_file_cmd+y} +then : + printf %s "(cached) " >&6 +else $as_nop #assume ordinary cross tools, or native build. lt_cv_to_tool_file_cmd=func_convert_file_noop case $host in @@ -6950,22 +7566,23 @@ esac fi to_tool_file_cmd=$lt_cv_to_tool_file_cmd -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_to_tool_file_cmd" >&5 -$as_echo "$lt_cv_to_tool_file_cmd" >&6; } +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $lt_cv_to_tool_file_cmd" >&5 +printf "%s\n" "$lt_cv_to_tool_file_cmd" >&6; } -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $LD option to reload object files" >&5 -$as_echo_n "checking for $LD option to reload object files... " >&6; } -if ${lt_cv_ld_reload_flag+:} false; then : - $as_echo_n "(cached) " >&6 -else +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $LD option to reload object files" >&5 +printf %s "checking for $LD option to reload object files... " >&6; } +if test ${lt_cv_ld_reload_flag+y} +then : + printf %s "(cached) " >&6 +else $as_nop lt_cv_ld_reload_flag='-r' fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_ld_reload_flag" >&5 -$as_echo "$lt_cv_ld_reload_flag" >&6; } +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $lt_cv_ld_reload_flag" >&5 +printf "%s\n" "$lt_cv_ld_reload_flag" >&6; } reload_flag=$lt_cv_ld_reload_flag case $reload_flag in "" | " "*) ;; @@ -6998,11 +7615,12 @@ esac if test -n "$ac_tool_prefix"; then # Extract the first word of "${ac_tool_prefix}objdump", so it can be a program name with args. set dummy ${ac_tool_prefix}objdump; ac_word=$2 -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 -$as_echo_n "checking for $ac_word... " >&6; } -if ${ac_cv_prog_OBJDUMP+:} false; then : - $as_echo_n "(cached) " >&6 -else +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +printf %s "checking for $ac_word... " >&6; } +if test ${ac_cv_prog_OBJDUMP+y} +then : + printf %s "(cached) " >&6 +else $as_nop if test -n "$OBJDUMP"; then ac_cv_prog_OBJDUMP="$OBJDUMP" # Let the user override the test. else @@ -7010,11 +7628,15 @@ as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS - test -z "$as_dir" && as_dir=. + case $as_dir in #((( + '') as_dir=./ ;; + */) ;; + *) as_dir=$as_dir/ ;; + esac for ac_exec_ext in '' $ac_executable_extensions; do - if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then + if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then ac_cv_prog_OBJDUMP="${ac_tool_prefix}objdump" - $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 + printf "%s\n" "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5 break 2 fi done @@ -7025,11 +7647,11 @@ fi fi OBJDUMP=$ac_cv_prog_OBJDUMP if test -n "$OBJDUMP"; then - { $as_echo "$as_me:${as_lineno-$LINENO}: result: $OBJDUMP" >&5 -$as_echo "$OBJDUMP" >&6; } + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $OBJDUMP" >&5 +printf "%s\n" "$OBJDUMP" >&6; } else - { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 -$as_echo "no" >&6; } + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 +printf "%s\n" "no" >&6; } fi @@ -7038,11 +7660,12 @@ if test -z "$ac_cv_prog_OBJDUMP"; then ac_ct_OBJDUMP=$OBJDUMP # Extract the first word of "objdump", so it can be a program name with args. set dummy objdump; ac_word=$2 -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 -$as_echo_n "checking for $ac_word... " >&6; } -if ${ac_cv_prog_ac_ct_OBJDUMP+:} false; then : - $as_echo_n "(cached) " >&6 -else +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +printf %s "checking for $ac_word... " >&6; } +if test ${ac_cv_prog_ac_ct_OBJDUMP+y} +then : + printf %s "(cached) " >&6 +else $as_nop if test -n "$ac_ct_OBJDUMP"; then ac_cv_prog_ac_ct_OBJDUMP="$ac_ct_OBJDUMP" # Let the user override the test. else @@ -7050,11 +7673,15 @@ as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS - test -z "$as_dir" && as_dir=. + case $as_dir in #((( + '') as_dir=./ ;; + */) ;; + *) as_dir=$as_dir/ ;; + esac for ac_exec_ext in '' $ac_executable_extensions; do - if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then + if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then ac_cv_prog_ac_ct_OBJDUMP="objdump" - $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 + printf "%s\n" "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5 break 2 fi done @@ -7065,11 +7692,11 @@ fi fi ac_ct_OBJDUMP=$ac_cv_prog_ac_ct_OBJDUMP if test -n "$ac_ct_OBJDUMP"; then - { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_OBJDUMP" >&5 -$as_echo "$ac_ct_OBJDUMP" >&6; } + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_ct_OBJDUMP" >&5 +printf "%s\n" "$ac_ct_OBJDUMP" >&6; } else - { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 -$as_echo "no" >&6; } + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 +printf "%s\n" "no" >&6; } fi if test "x$ac_ct_OBJDUMP" = x; then @@ -7077,8 +7704,8 @@ fi else case $cross_compiling:$ac_tool_warned in yes:) -{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 -$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 +printf "%s\n" "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} ac_tool_warned=yes ;; esac OBJDUMP=$ac_ct_OBJDUMP @@ -7097,11 +7724,12 @@ test -z "$OBJDUMP" && OBJDUMP=objdump -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking how to recognize dependent libraries" >&5 -$as_echo_n "checking how to recognize dependent libraries... " >&6; } -if ${lt_cv_deplibs_check_method+:} false; then : - $as_echo_n "(cached) " >&6 -else +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking how to recognize dependent libraries" >&5 +printf %s "checking how to recognize dependent libraries... " >&6; } +if test ${lt_cv_deplibs_check_method+y} +then : + printf %s "(cached) " >&6 +else $as_nop lt_cv_file_magic_cmd='$MAGIC_CMD' lt_cv_file_magic_test_file= lt_cv_deplibs_check_method='unknown' @@ -7297,8 +7925,8 @@ os2*) esac fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_deplibs_check_method" >&5 -$as_echo "$lt_cv_deplibs_check_method" >&6; } +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $lt_cv_deplibs_check_method" >&5 +printf "%s\n" "$lt_cv_deplibs_check_method" >&6; } file_magic_glob= want_nocaseglob=no @@ -7342,11 +7970,12 @@ test -z "$deplibs_check_method" && deplibs_check_method=unknown if test -n "$ac_tool_prefix"; then # Extract the first word of "${ac_tool_prefix}dlltool", so it can be a program name with args. set dummy ${ac_tool_prefix}dlltool; ac_word=$2 -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 -$as_echo_n "checking for $ac_word... " >&6; } -if ${ac_cv_prog_DLLTOOL+:} false; then : - $as_echo_n "(cached) " >&6 -else +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +printf %s "checking for $ac_word... " >&6; } +if test ${ac_cv_prog_DLLTOOL+y} +then : + printf %s "(cached) " >&6 +else $as_nop if test -n "$DLLTOOL"; then ac_cv_prog_DLLTOOL="$DLLTOOL" # Let the user override the test. else @@ -7354,11 +7983,15 @@ as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS - test -z "$as_dir" && as_dir=. + case $as_dir in #((( + '') as_dir=./ ;; + */) ;; + *) as_dir=$as_dir/ ;; + esac for ac_exec_ext in '' $ac_executable_extensions; do - if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then + if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then ac_cv_prog_DLLTOOL="${ac_tool_prefix}dlltool" - $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 + printf "%s\n" "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5 break 2 fi done @@ -7369,11 +8002,11 @@ fi fi DLLTOOL=$ac_cv_prog_DLLTOOL if test -n "$DLLTOOL"; then - { $as_echo "$as_me:${as_lineno-$LINENO}: result: $DLLTOOL" >&5 -$as_echo "$DLLTOOL" >&6; } + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $DLLTOOL" >&5 +printf "%s\n" "$DLLTOOL" >&6; } else - { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 -$as_echo "no" >&6; } + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 +printf "%s\n" "no" >&6; } fi @@ -7382,11 +8015,12 @@ if test -z "$ac_cv_prog_DLLTOOL"; then ac_ct_DLLTOOL=$DLLTOOL # Extract the first word of "dlltool", so it can be a program name with args. set dummy dlltool; ac_word=$2 -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 -$as_echo_n "checking for $ac_word... " >&6; } -if ${ac_cv_prog_ac_ct_DLLTOOL+:} false; then : - $as_echo_n "(cached) " >&6 -else +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +printf %s "checking for $ac_word... " >&6; } +if test ${ac_cv_prog_ac_ct_DLLTOOL+y} +then : + printf %s "(cached) " >&6 +else $as_nop if test -n "$ac_ct_DLLTOOL"; then ac_cv_prog_ac_ct_DLLTOOL="$ac_ct_DLLTOOL" # Let the user override the test. else @@ -7394,11 +8028,15 @@ as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS - test -z "$as_dir" && as_dir=. + case $as_dir in #((( + '') as_dir=./ ;; + */) ;; + *) as_dir=$as_dir/ ;; + esac for ac_exec_ext in '' $ac_executable_extensions; do - if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then + if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then ac_cv_prog_ac_ct_DLLTOOL="dlltool" - $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 + printf "%s\n" "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5 break 2 fi done @@ -7409,11 +8047,11 @@ fi fi ac_ct_DLLTOOL=$ac_cv_prog_ac_ct_DLLTOOL if test -n "$ac_ct_DLLTOOL"; then - { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_DLLTOOL" >&5 -$as_echo "$ac_ct_DLLTOOL" >&6; } + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_ct_DLLTOOL" >&5 +printf "%s\n" "$ac_ct_DLLTOOL" >&6; } else - { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 -$as_echo "no" >&6; } + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 +printf "%s\n" "no" >&6; } fi if test "x$ac_ct_DLLTOOL" = x; then @@ -7421,8 +8059,8 @@ fi else case $cross_compiling:$ac_tool_warned in yes:) -{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 -$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 +printf "%s\n" "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} ac_tool_warned=yes ;; esac DLLTOOL=$ac_ct_DLLTOOL @@ -7442,11 +8080,12 @@ test -z "$DLLTOOL" && DLLTOOL=dlltool -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking how to associate runtime and link libraries" >&5 -$as_echo_n "checking how to associate runtime and link libraries... " >&6; } -if ${lt_cv_sharedlib_from_linklib_cmd+:} false; then : - $as_echo_n "(cached) " >&6 -else +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking how to associate runtime and link libraries" >&5 +printf %s "checking how to associate runtime and link libraries... " >&6; } +if test ${lt_cv_sharedlib_from_linklib_cmd+y} +then : + printf %s "(cached) " >&6 +else $as_nop lt_cv_sharedlib_from_linklib_cmd='unknown' case $host_os in @@ -7469,8 +8108,8 @@ cygwin* | mingw* | pw32* | cegcc*) esac fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_sharedlib_from_linklib_cmd" >&5 -$as_echo "$lt_cv_sharedlib_from_linklib_cmd" >&6; } +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $lt_cv_sharedlib_from_linklib_cmd" >&5 +printf "%s\n" "$lt_cv_sharedlib_from_linklib_cmd" >&6; } sharedlib_from_linklib_cmd=$lt_cv_sharedlib_from_linklib_cmd test -z "$sharedlib_from_linklib_cmd" && sharedlib_from_linklib_cmd=$ECHO @@ -7485,11 +8124,12 @@ if test -n "$ac_tool_prefix"; then do # Extract the first word of "$ac_tool_prefix$ac_prog", so it can be a program name with args. set dummy $ac_tool_prefix$ac_prog; ac_word=$2 -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 -$as_echo_n "checking for $ac_word... " >&6; } -if ${ac_cv_prog_AR+:} false; then : - $as_echo_n "(cached) " >&6 -else +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +printf %s "checking for $ac_word... " >&6; } +if test ${ac_cv_prog_AR+y} +then : + printf %s "(cached) " >&6 +else $as_nop if test -n "$AR"; then ac_cv_prog_AR="$AR" # Let the user override the test. else @@ -7497,11 +8137,15 @@ as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS - test -z "$as_dir" && as_dir=. + case $as_dir in #((( + '') as_dir=./ ;; + */) ;; + *) as_dir=$as_dir/ ;; + esac for ac_exec_ext in '' $ac_executable_extensions; do - if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then + if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then ac_cv_prog_AR="$ac_tool_prefix$ac_prog" - $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 + printf "%s\n" "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5 break 2 fi done @@ -7512,11 +8156,11 @@ fi fi AR=$ac_cv_prog_AR if test -n "$AR"; then - { $as_echo "$as_me:${as_lineno-$LINENO}: result: $AR" >&5 -$as_echo "$AR" >&6; } + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $AR" >&5 +printf "%s\n" "$AR" >&6; } else - { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 -$as_echo "no" >&6; } + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 +printf "%s\n" "no" >&6; } fi @@ -7529,11 +8173,12 @@ if test -z "$AR"; then do # Extract the first word of "$ac_prog", so it can be a program name with args. set dummy $ac_prog; ac_word=$2 -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 -$as_echo_n "checking for $ac_word... " >&6; } -if ${ac_cv_prog_ac_ct_AR+:} false; then : - $as_echo_n "(cached) " >&6 -else +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +printf %s "checking for $ac_word... " >&6; } +if test ${ac_cv_prog_ac_ct_AR+y} +then : + printf %s "(cached) " >&6 +else $as_nop if test -n "$ac_ct_AR"; then ac_cv_prog_ac_ct_AR="$ac_ct_AR" # Let the user override the test. else @@ -7541,11 +8186,15 @@ as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS - test -z "$as_dir" && as_dir=. + case $as_dir in #((( + '') as_dir=./ ;; + */) ;; + *) as_dir=$as_dir/ ;; + esac for ac_exec_ext in '' $ac_executable_extensions; do - if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then + if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then ac_cv_prog_ac_ct_AR="$ac_prog" - $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 + printf "%s\n" "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5 break 2 fi done @@ -7556,11 +8205,11 @@ fi fi ac_ct_AR=$ac_cv_prog_ac_ct_AR if test -n "$ac_ct_AR"; then - { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_AR" >&5 -$as_echo "$ac_ct_AR" >&6; } + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_ct_AR" >&5 +printf "%s\n" "$ac_ct_AR" >&6; } else - { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 -$as_echo "no" >&6; } + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 +printf "%s\n" "no" >&6; } fi @@ -7572,8 +8221,8 @@ done else case $cross_compiling:$ac_tool_warned in yes:) -{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 -$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 +printf "%s\n" "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} ac_tool_warned=yes ;; esac AR=$ac_ct_AR @@ -7593,30 +8242,32 @@ fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for archiver @FILE support" >&5 -$as_echo_n "checking for archiver @FILE support... " >&6; } -if ${lt_cv_ar_at_file+:} false; then : - $as_echo_n "(cached) " >&6 -else +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for archiver @FILE support" >&5 +printf %s "checking for archiver @FILE support... " >&6; } +if test ${lt_cv_ar_at_file+y} +then : + printf %s "(cached) " >&6 +else $as_nop lt_cv_ar_at_file=no cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ int -main () +main (void) { ; return 0; } _ACEOF -if ac_fn_c_try_compile "$LINENO"; then : +if ac_fn_c_try_compile "$LINENO" +then : echo conftest.$ac_objext > conftest.lst lt_ar_try='$AR $AR_FLAGS libconftest.a @conftest.lst >&5' { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$lt_ar_try\""; } >&5 (eval $lt_ar_try) 2>&5 ac_status=$? - $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; } if test 0 -eq "$ac_status"; then # Ensure the archiver fails upon bogus file names. @@ -7624,7 +8275,7 @@ if ac_fn_c_try_compile "$LINENO"; then : { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$lt_ar_try\""; } >&5 (eval $lt_ar_try) 2>&5 ac_status=$? - $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; } if test 0 -ne "$ac_status"; then lt_cv_ar_at_file=@ @@ -7633,11 +8284,11 @@ if ac_fn_c_try_compile "$LINENO"; then : rm -f conftest.* libconftest.a fi -rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext +rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_ar_at_file" >&5 -$as_echo "$lt_cv_ar_at_file" >&6; } +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $lt_cv_ar_at_file" >&5 +printf "%s\n" "$lt_cv_ar_at_file" >&6; } if test no = "$lt_cv_ar_at_file"; then archiver_list_spec= @@ -7654,11 +8305,12 @@ fi if test -n "$ac_tool_prefix"; then # Extract the first word of "${ac_tool_prefix}strip", so it can be a program name with args. set dummy ${ac_tool_prefix}strip; ac_word=$2 -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 -$as_echo_n "checking for $ac_word... " >&6; } -if ${ac_cv_prog_STRIP+:} false; then : - $as_echo_n "(cached) " >&6 -else +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +printf %s "checking for $ac_word... " >&6; } +if test ${ac_cv_prog_STRIP+y} +then : + printf %s "(cached) " >&6 +else $as_nop if test -n "$STRIP"; then ac_cv_prog_STRIP="$STRIP" # Let the user override the test. else @@ -7666,11 +8318,15 @@ as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS - test -z "$as_dir" && as_dir=. + case $as_dir in #((( + '') as_dir=./ ;; + */) ;; + *) as_dir=$as_dir/ ;; + esac for ac_exec_ext in '' $ac_executable_extensions; do - if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then + if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then ac_cv_prog_STRIP="${ac_tool_prefix}strip" - $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 + printf "%s\n" "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5 break 2 fi done @@ -7681,11 +8337,11 @@ fi fi STRIP=$ac_cv_prog_STRIP if test -n "$STRIP"; then - { $as_echo "$as_me:${as_lineno-$LINENO}: result: $STRIP" >&5 -$as_echo "$STRIP" >&6; } + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $STRIP" >&5 +printf "%s\n" "$STRIP" >&6; } else - { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 -$as_echo "no" >&6; } + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 +printf "%s\n" "no" >&6; } fi @@ -7694,11 +8350,12 @@ if test -z "$ac_cv_prog_STRIP"; then ac_ct_STRIP=$STRIP # Extract the first word of "strip", so it can be a program name with args. set dummy strip; ac_word=$2 -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 -$as_echo_n "checking for $ac_word... " >&6; } -if ${ac_cv_prog_ac_ct_STRIP+:} false; then : - $as_echo_n "(cached) " >&6 -else +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +printf %s "checking for $ac_word... " >&6; } +if test ${ac_cv_prog_ac_ct_STRIP+y} +then : + printf %s "(cached) " >&6 +else $as_nop if test -n "$ac_ct_STRIP"; then ac_cv_prog_ac_ct_STRIP="$ac_ct_STRIP" # Let the user override the test. else @@ -7706,11 +8363,15 @@ as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS - test -z "$as_dir" && as_dir=. + case $as_dir in #((( + '') as_dir=./ ;; + */) ;; + *) as_dir=$as_dir/ ;; + esac for ac_exec_ext in '' $ac_executable_extensions; do - if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then + if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then ac_cv_prog_ac_ct_STRIP="strip" - $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 + printf "%s\n" "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5 break 2 fi done @@ -7721,11 +8382,11 @@ fi fi ac_ct_STRIP=$ac_cv_prog_ac_ct_STRIP if test -n "$ac_ct_STRIP"; then - { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_STRIP" >&5 -$as_echo "$ac_ct_STRIP" >&6; } + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_ct_STRIP" >&5 +printf "%s\n" "$ac_ct_STRIP" >&6; } else - { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 -$as_echo "no" >&6; } + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 +printf "%s\n" "no" >&6; } fi if test "x$ac_ct_STRIP" = x; then @@ -7733,8 +8394,8 @@ fi else case $cross_compiling:$ac_tool_warned in yes:) -{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 -$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 +printf "%s\n" "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} ac_tool_warned=yes ;; esac STRIP=$ac_ct_STRIP @@ -7753,11 +8414,12 @@ test -z "$STRIP" && STRIP=: if test -n "$ac_tool_prefix"; then # Extract the first word of "${ac_tool_prefix}ranlib", so it can be a program name with args. set dummy ${ac_tool_prefix}ranlib; ac_word=$2 -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 -$as_echo_n "checking for $ac_word... " >&6; } -if ${ac_cv_prog_RANLIB+:} false; then : - $as_echo_n "(cached) " >&6 -else +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +printf %s "checking for $ac_word... " >&6; } +if test ${ac_cv_prog_RANLIB+y} +then : + printf %s "(cached) " >&6 +else $as_nop if test -n "$RANLIB"; then ac_cv_prog_RANLIB="$RANLIB" # Let the user override the test. else @@ -7765,11 +8427,15 @@ as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS - test -z "$as_dir" && as_dir=. + case $as_dir in #((( + '') as_dir=./ ;; + */) ;; + *) as_dir=$as_dir/ ;; + esac for ac_exec_ext in '' $ac_executable_extensions; do - if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then + if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then ac_cv_prog_RANLIB="${ac_tool_prefix}ranlib" - $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 + printf "%s\n" "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5 break 2 fi done @@ -7780,11 +8446,11 @@ fi fi RANLIB=$ac_cv_prog_RANLIB if test -n "$RANLIB"; then - { $as_echo "$as_me:${as_lineno-$LINENO}: result: $RANLIB" >&5 -$as_echo "$RANLIB" >&6; } + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $RANLIB" >&5 +printf "%s\n" "$RANLIB" >&6; } else - { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 -$as_echo "no" >&6; } + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 +printf "%s\n" "no" >&6; } fi @@ -7793,11 +8459,12 @@ if test -z "$ac_cv_prog_RANLIB"; then ac_ct_RANLIB=$RANLIB # Extract the first word of "ranlib", so it can be a program name with args. set dummy ranlib; ac_word=$2 -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 -$as_echo_n "checking for $ac_word... " >&6; } -if ${ac_cv_prog_ac_ct_RANLIB+:} false; then : - $as_echo_n "(cached) " >&6 -else +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +printf %s "checking for $ac_word... " >&6; } +if test ${ac_cv_prog_ac_ct_RANLIB+y} +then : + printf %s "(cached) " >&6 +else $as_nop if test -n "$ac_ct_RANLIB"; then ac_cv_prog_ac_ct_RANLIB="$ac_ct_RANLIB" # Let the user override the test. else @@ -7805,11 +8472,15 @@ as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS - test -z "$as_dir" && as_dir=. + case $as_dir in #((( + '') as_dir=./ ;; + */) ;; + *) as_dir=$as_dir/ ;; + esac for ac_exec_ext in '' $ac_executable_extensions; do - if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then + if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then ac_cv_prog_ac_ct_RANLIB="ranlib" - $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 + printf "%s\n" "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5 break 2 fi done @@ -7820,11 +8491,11 @@ fi fi ac_ct_RANLIB=$ac_cv_prog_ac_ct_RANLIB if test -n "$ac_ct_RANLIB"; then - { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_RANLIB" >&5 -$as_echo "$ac_ct_RANLIB" >&6; } + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_ct_RANLIB" >&5 +printf "%s\n" "$ac_ct_RANLIB" >&6; } else - { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 -$as_echo "no" >&6; } + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 +printf "%s\n" "no" >&6; } fi if test "x$ac_ct_RANLIB" = x; then @@ -7832,8 +8503,8 @@ fi else case $cross_compiling:$ac_tool_warned in yes:) -{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 -$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 +printf "%s\n" "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} ac_tool_warned=yes ;; esac RANLIB=$ac_ct_RANLIB @@ -7922,11 +8593,12 @@ compiler=$CC # Check for command to grab the raw symbol name followed by C symbol from nm. -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking command to parse $NM output from $compiler object" >&5 -$as_echo_n "checking command to parse $NM output from $compiler object... " >&6; } -if ${lt_cv_sys_global_symbol_pipe+:} false; then : - $as_echo_n "(cached) " >&6 -else +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking command to parse $NM output from $compiler object" >&5 +printf %s "checking command to parse $NM output from $compiler object... " >&6; } +if test ${lt_cv_sys_global_symbol_pipe+y} +then : + printf %s "(cached) " >&6 +else $as_nop # These are sane defaults that work on at least a few old systems. # [They come from Ultrix. What could be older than Ultrix?!! ;)] @@ -8078,14 +8750,14 @@ _LT_EOF if { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_compile\""; } >&5 (eval $ac_compile) 2>&5 ac_status=$? - $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; }; then # Now try to grab the symbols. nlist=conftest.nm if { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$NM conftest.$ac_objext \| "$lt_cv_sys_global_symbol_pipe" \> $nlist\""; } >&5 (eval $NM conftest.$ac_objext \| "$lt_cv_sys_global_symbol_pipe" \> $nlist) 2>&5 ac_status=$? - $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; } && test -s "$nlist"; then # Try sorting and uniquifying the output. if sort "$nlist" | uniq > "$nlist"T; then @@ -8154,7 +8826,7 @@ _LT_EOF if { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_link\""; } >&5 (eval $ac_link) 2>&5 ac_status=$? - $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; } && test -s conftest$ac_exeext; then pipe_works=yes fi @@ -8189,11 +8861,11 @@ if test -z "$lt_cv_sys_global_symbol_pipe"; then lt_cv_sys_global_symbol_to_cdecl= fi if test -z "$lt_cv_sys_global_symbol_pipe$lt_cv_sys_global_symbol_to_cdecl"; then - { $as_echo "$as_me:${as_lineno-$LINENO}: result: failed" >&5 -$as_echo "failed" >&6; } + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: failed" >&5 +printf "%s\n" "failed" >&6; } else - { $as_echo "$as_me:${as_lineno-$LINENO}: result: ok" >&5 -$as_echo "ok" >&6; } + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: ok" >&5 +printf "%s\n" "ok" >&6; } fi # Response file support. @@ -8239,13 +8911,14 @@ fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for sysroot" >&5 -$as_echo_n "checking for sysroot... " >&6; } +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for sysroot" >&5 +printf %s "checking for sysroot... " >&6; } # Check whether --with-sysroot was given. -if test "${with_sysroot+set}" = set; then : +if test ${with_sysroot+y} +then : withval=$with_sysroot; -else +else $as_nop with_sysroot=no fi @@ -8263,24 +8936,25 @@ case $with_sysroot in #( no|'') ;; #( *) - { $as_echo "$as_me:${as_lineno-$LINENO}: result: $with_sysroot" >&5 -$as_echo "$with_sysroot" >&6; } + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $with_sysroot" >&5 +printf "%s\n" "$with_sysroot" >&6; } as_fn_error $? "The sysroot must be an absolute path." "$LINENO" 5 ;; esac - { $as_echo "$as_me:${as_lineno-$LINENO}: result: ${lt_sysroot:-no}" >&5 -$as_echo "${lt_sysroot:-no}" >&6; } + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: ${lt_sysroot:-no}" >&5 +printf "%s\n" "${lt_sysroot:-no}" >&6; } -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for a working dd" >&5 -$as_echo_n "checking for a working dd... " >&6; } -if ${ac_cv_path_lt_DD+:} false; then : - $as_echo_n "(cached) " >&6 -else +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for a working dd" >&5 +printf %s "checking for a working dd... " >&6; } +if test ${ac_cv_path_lt_DD+y} +then : + printf %s "(cached) " >&6 +else $as_nop printf 0123456789abcdef0123456789abcdef >conftest.i cat conftest.i conftest.i >conftest2.i : ${lt_DD:=$DD} @@ -8291,10 +8965,15 @@ if test -z "$lt_DD"; then for as_dir in $PATH do IFS=$as_save_IFS - test -z "$as_dir" && as_dir=. - for ac_prog in dd; do + case $as_dir in #((( + '') as_dir=./ ;; + */) ;; + *) as_dir=$as_dir/ ;; + esac + for ac_prog in dd + do for ac_exec_ext in '' $ac_executable_extensions; do - ac_path_lt_DD="$as_dir/$ac_prog$ac_exec_ext" + ac_path_lt_DD="$as_dir$ac_prog$ac_exec_ext" as_fn_executable_p "$ac_path_lt_DD" || continue if "$ac_path_lt_DD" bs=32 count=1 conftest.out 2>/dev/null; then cmp -s conftest.i conftest.out \ @@ -8314,15 +8993,16 @@ fi rm -f conftest.i conftest2.i conftest.out fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_path_lt_DD" >&5 -$as_echo "$ac_cv_path_lt_DD" >&6; } +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_path_lt_DD" >&5 +printf "%s\n" "$ac_cv_path_lt_DD" >&6; } -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking how to truncate binary pipes" >&5 -$as_echo_n "checking how to truncate binary pipes... " >&6; } -if ${lt_cv_truncate_bin+:} false; then : - $as_echo_n "(cached) " >&6 -else +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking how to truncate binary pipes" >&5 +printf %s "checking how to truncate binary pipes... " >&6; } +if test ${lt_cv_truncate_bin+y} +then : + printf %s "(cached) " >&6 +else $as_nop printf 0123456789abcdef0123456789abcdef >conftest.i cat conftest.i conftest.i >conftest2.i lt_cv_truncate_bin= @@ -8333,8 +9013,8 @@ fi rm -f conftest.i conftest2.i conftest.out test -z "$lt_cv_truncate_bin" && lt_cv_truncate_bin="$SED -e 4q" fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_truncate_bin" >&5 -$as_echo "$lt_cv_truncate_bin" >&6; } +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $lt_cv_truncate_bin" >&5 +printf "%s\n" "$lt_cv_truncate_bin" >&6; } @@ -8357,7 +9037,8 @@ func_cc_basename () } # Check whether --enable-libtool-lock was given. -if test "${enable_libtool_lock+set}" = set; then : +if test ${enable_libtool_lock+y} +then : enableval=$enable_libtool_lock; fi @@ -8373,7 +9054,7 @@ ia64-*-hpux*) if { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_compile\""; } >&5 (eval $ac_compile) 2>&5 ac_status=$? - $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; }; then case `/usr/bin/file conftest.$ac_objext` in *ELF-32*) @@ -8393,7 +9074,7 @@ ia64-*-hpux*) if { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_compile\""; } >&5 (eval $ac_compile) 2>&5 ac_status=$? - $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; }; then if test yes = "$lt_cv_prog_gnu_ld"; then case `/usr/bin/file conftest.$ac_objext` in @@ -8431,7 +9112,7 @@ mips64*-*linux*) if { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_compile\""; } >&5 (eval $ac_compile) 2>&5 ac_status=$? - $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; }; then emul=elf case `/usr/bin/file conftest.$ac_objext` in @@ -8472,7 +9153,7 @@ s390*-*linux*|s390*-*tpf*|sparc*-*linux*) if { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_compile\""; } >&5 (eval $ac_compile) 2>&5 ac_status=$? - $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; }; then case `/usr/bin/file conftest.o` in *32-bit*) @@ -8535,11 +9216,12 @@ s390*-*linux*|s390*-*tpf*|sparc*-*linux*) # On SCO OpenServer 5, we need -belf to get full-featured binaries. SAVE_CFLAGS=$CFLAGS CFLAGS="$CFLAGS -belf" - { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether the C compiler needs -belf" >&5 -$as_echo_n "checking whether the C compiler needs -belf... " >&6; } -if ${lt_cv_cc_needs_belf+:} false; then : - $as_echo_n "(cached) " >&6 -else + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking whether the C compiler needs -belf" >&5 +printf %s "checking whether the C compiler needs -belf... " >&6; } +if test ${lt_cv_cc_needs_belf+y} +then : + printf %s "(cached) " >&6 +else $as_nop ac_ext=c ac_cpp='$CPP $CPPFLAGS' ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' @@ -8550,19 +9232,20 @@ ac_compiler_gnu=$ac_cv_c_compiler_gnu /* end confdefs.h. */ int -main () +main (void) { ; return 0; } _ACEOF -if ac_fn_c_try_link "$LINENO"; then : +if ac_fn_c_try_link "$LINENO" +then : lt_cv_cc_needs_belf=yes -else +else $as_nop lt_cv_cc_needs_belf=no fi -rm -f core conftest.err conftest.$ac_objext \ +rm -f core conftest.err conftest.$ac_objext conftest.beam \ conftest$ac_exeext conftest.$ac_ext ac_ext=c ac_cpp='$CPP $CPPFLAGS' @@ -8571,8 +9254,8 @@ ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $ ac_compiler_gnu=$ac_cv_c_compiler_gnu fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_cc_needs_belf" >&5 -$as_echo "$lt_cv_cc_needs_belf" >&6; } +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $lt_cv_cc_needs_belf" >&5 +printf "%s\n" "$lt_cv_cc_needs_belf" >&6; } if test yes != "$lt_cv_cc_needs_belf"; then # this is probably gcc 2.8.0, egcs 1.0 or newer; no need for -belf CFLAGS=$SAVE_CFLAGS @@ -8585,7 +9268,7 @@ $as_echo "$lt_cv_cc_needs_belf" >&6; } if { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_compile\""; } >&5 (eval $ac_compile) 2>&5 ac_status=$? - $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; }; then case `/usr/bin/file conftest.o` in *64-bit*) @@ -8622,11 +9305,12 @@ need_locks=$enable_libtool_lock if test -n "$ac_tool_prefix"; then # Extract the first word of "${ac_tool_prefix}mt", so it can be a program name with args. set dummy ${ac_tool_prefix}mt; ac_word=$2 -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 -$as_echo_n "checking for $ac_word... " >&6; } -if ${ac_cv_prog_MANIFEST_TOOL+:} false; then : - $as_echo_n "(cached) " >&6 -else +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +printf %s "checking for $ac_word... " >&6; } +if test ${ac_cv_prog_MANIFEST_TOOL+y} +then : + printf %s "(cached) " >&6 +else $as_nop if test -n "$MANIFEST_TOOL"; then ac_cv_prog_MANIFEST_TOOL="$MANIFEST_TOOL" # Let the user override the test. else @@ -8634,11 +9318,15 @@ as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS - test -z "$as_dir" && as_dir=. + case $as_dir in #((( + '') as_dir=./ ;; + */) ;; + *) as_dir=$as_dir/ ;; + esac for ac_exec_ext in '' $ac_executable_extensions; do - if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then + if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then ac_cv_prog_MANIFEST_TOOL="${ac_tool_prefix}mt" - $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 + printf "%s\n" "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5 break 2 fi done @@ -8649,11 +9337,11 @@ fi fi MANIFEST_TOOL=$ac_cv_prog_MANIFEST_TOOL if test -n "$MANIFEST_TOOL"; then - { $as_echo "$as_me:${as_lineno-$LINENO}: result: $MANIFEST_TOOL" >&5 -$as_echo "$MANIFEST_TOOL" >&6; } + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $MANIFEST_TOOL" >&5 +printf "%s\n" "$MANIFEST_TOOL" >&6; } else - { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 -$as_echo "no" >&6; } + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 +printf "%s\n" "no" >&6; } fi @@ -8662,11 +9350,12 @@ if test -z "$ac_cv_prog_MANIFEST_TOOL"; then ac_ct_MANIFEST_TOOL=$MANIFEST_TOOL # Extract the first word of "mt", so it can be a program name with args. set dummy mt; ac_word=$2 -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 -$as_echo_n "checking for $ac_word... " >&6; } -if ${ac_cv_prog_ac_ct_MANIFEST_TOOL+:} false; then : - $as_echo_n "(cached) " >&6 -else +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +printf %s "checking for $ac_word... " >&6; } +if test ${ac_cv_prog_ac_ct_MANIFEST_TOOL+y} +then : + printf %s "(cached) " >&6 +else $as_nop if test -n "$ac_ct_MANIFEST_TOOL"; then ac_cv_prog_ac_ct_MANIFEST_TOOL="$ac_ct_MANIFEST_TOOL" # Let the user override the test. else @@ -8674,11 +9363,15 @@ as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS - test -z "$as_dir" && as_dir=. + case $as_dir in #((( + '') as_dir=./ ;; + */) ;; + *) as_dir=$as_dir/ ;; + esac for ac_exec_ext in '' $ac_executable_extensions; do - if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then + if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then ac_cv_prog_ac_ct_MANIFEST_TOOL="mt" - $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 + printf "%s\n" "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5 break 2 fi done @@ -8689,11 +9382,11 @@ fi fi ac_ct_MANIFEST_TOOL=$ac_cv_prog_ac_ct_MANIFEST_TOOL if test -n "$ac_ct_MANIFEST_TOOL"; then - { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_MANIFEST_TOOL" >&5 -$as_echo "$ac_ct_MANIFEST_TOOL" >&6; } + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_ct_MANIFEST_TOOL" >&5 +printf "%s\n" "$ac_ct_MANIFEST_TOOL" >&6; } else - { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 -$as_echo "no" >&6; } + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 +printf "%s\n" "no" >&6; } fi if test "x$ac_ct_MANIFEST_TOOL" = x; then @@ -8701,8 +9394,8 @@ fi else case $cross_compiling:$ac_tool_warned in yes:) -{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 -$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 +printf "%s\n" "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} ac_tool_warned=yes ;; esac MANIFEST_TOOL=$ac_ct_MANIFEST_TOOL @@ -8712,11 +9405,12 @@ else fi test -z "$MANIFEST_TOOL" && MANIFEST_TOOL=mt -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking if $MANIFEST_TOOL is a manifest tool" >&5 -$as_echo_n "checking if $MANIFEST_TOOL is a manifest tool... " >&6; } -if ${lt_cv_path_mainfest_tool+:} false; then : - $as_echo_n "(cached) " >&6 -else +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking if $MANIFEST_TOOL is a manifest tool" >&5 +printf %s "checking if $MANIFEST_TOOL is a manifest tool... " >&6; } +if test ${lt_cv_path_mainfest_tool+y} +then : + printf %s "(cached) " >&6 +else $as_nop lt_cv_path_mainfest_tool=no echo "$as_me:$LINENO: $MANIFEST_TOOL '-?'" >&5 $MANIFEST_TOOL '-?' 2>conftest.err > conftest.out @@ -8726,8 +9420,8 @@ else fi rm -f conftest* fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_path_mainfest_tool" >&5 -$as_echo "$lt_cv_path_mainfest_tool" >&6; } +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $lt_cv_path_mainfest_tool" >&5 +printf "%s\n" "$lt_cv_path_mainfest_tool" >&6; } if test yes != "$lt_cv_path_mainfest_tool"; then MANIFEST_TOOL=: fi @@ -8742,11 +9436,12 @@ fi if test -n "$ac_tool_prefix"; then # Extract the first word of "${ac_tool_prefix}dsymutil", so it can be a program name with args. set dummy ${ac_tool_prefix}dsymutil; ac_word=$2 -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 -$as_echo_n "checking for $ac_word... " >&6; } -if ${ac_cv_prog_DSYMUTIL+:} false; then : - $as_echo_n "(cached) " >&6 -else +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +printf %s "checking for $ac_word... " >&6; } +if test ${ac_cv_prog_DSYMUTIL+y} +then : + printf %s "(cached) " >&6 +else $as_nop if test -n "$DSYMUTIL"; then ac_cv_prog_DSYMUTIL="$DSYMUTIL" # Let the user override the test. else @@ -8754,11 +9449,15 @@ as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS - test -z "$as_dir" && as_dir=. + case $as_dir in #((( + '') as_dir=./ ;; + */) ;; + *) as_dir=$as_dir/ ;; + esac for ac_exec_ext in '' $ac_executable_extensions; do - if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then + if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then ac_cv_prog_DSYMUTIL="${ac_tool_prefix}dsymutil" - $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 + printf "%s\n" "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5 break 2 fi done @@ -8769,11 +9468,11 @@ fi fi DSYMUTIL=$ac_cv_prog_DSYMUTIL if test -n "$DSYMUTIL"; then - { $as_echo "$as_me:${as_lineno-$LINENO}: result: $DSYMUTIL" >&5 -$as_echo "$DSYMUTIL" >&6; } + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $DSYMUTIL" >&5 +printf "%s\n" "$DSYMUTIL" >&6; } else - { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 -$as_echo "no" >&6; } + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 +printf "%s\n" "no" >&6; } fi @@ -8782,11 +9481,12 @@ if test -z "$ac_cv_prog_DSYMUTIL"; then ac_ct_DSYMUTIL=$DSYMUTIL # Extract the first word of "dsymutil", so it can be a program name with args. set dummy dsymutil; ac_word=$2 -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 -$as_echo_n "checking for $ac_word... " >&6; } -if ${ac_cv_prog_ac_ct_DSYMUTIL+:} false; then : - $as_echo_n "(cached) " >&6 -else +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +printf %s "checking for $ac_word... " >&6; } +if test ${ac_cv_prog_ac_ct_DSYMUTIL+y} +then : + printf %s "(cached) " >&6 +else $as_nop if test -n "$ac_ct_DSYMUTIL"; then ac_cv_prog_ac_ct_DSYMUTIL="$ac_ct_DSYMUTIL" # Let the user override the test. else @@ -8794,11 +9494,15 @@ as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS - test -z "$as_dir" && as_dir=. + case $as_dir in #((( + '') as_dir=./ ;; + */) ;; + *) as_dir=$as_dir/ ;; + esac for ac_exec_ext in '' $ac_executable_extensions; do - if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then + if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then ac_cv_prog_ac_ct_DSYMUTIL="dsymutil" - $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 + printf "%s\n" "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5 break 2 fi done @@ -8809,11 +9513,11 @@ fi fi ac_ct_DSYMUTIL=$ac_cv_prog_ac_ct_DSYMUTIL if test -n "$ac_ct_DSYMUTIL"; then - { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_DSYMUTIL" >&5 -$as_echo "$ac_ct_DSYMUTIL" >&6; } + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_ct_DSYMUTIL" >&5 +printf "%s\n" "$ac_ct_DSYMUTIL" >&6; } else - { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 -$as_echo "no" >&6; } + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 +printf "%s\n" "no" >&6; } fi if test "x$ac_ct_DSYMUTIL" = x; then @@ -8821,8 +9525,8 @@ fi else case $cross_compiling:$ac_tool_warned in yes:) -{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 -$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 +printf "%s\n" "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} ac_tool_warned=yes ;; esac DSYMUTIL=$ac_ct_DSYMUTIL @@ -8834,11 +9538,12 @@ fi if test -n "$ac_tool_prefix"; then # Extract the first word of "${ac_tool_prefix}nmedit", so it can be a program name with args. set dummy ${ac_tool_prefix}nmedit; ac_word=$2 -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 -$as_echo_n "checking for $ac_word... " >&6; } -if ${ac_cv_prog_NMEDIT+:} false; then : - $as_echo_n "(cached) " >&6 -else +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +printf %s "checking for $ac_word... " >&6; } +if test ${ac_cv_prog_NMEDIT+y} +then : + printf %s "(cached) " >&6 +else $as_nop if test -n "$NMEDIT"; then ac_cv_prog_NMEDIT="$NMEDIT" # Let the user override the test. else @@ -8846,11 +9551,15 @@ as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS - test -z "$as_dir" && as_dir=. + case $as_dir in #((( + '') as_dir=./ ;; + */) ;; + *) as_dir=$as_dir/ ;; + esac for ac_exec_ext in '' $ac_executable_extensions; do - if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then + if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then ac_cv_prog_NMEDIT="${ac_tool_prefix}nmedit" - $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 + printf "%s\n" "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5 break 2 fi done @@ -8861,11 +9570,11 @@ fi fi NMEDIT=$ac_cv_prog_NMEDIT if test -n "$NMEDIT"; then - { $as_echo "$as_me:${as_lineno-$LINENO}: result: $NMEDIT" >&5 -$as_echo "$NMEDIT" >&6; } + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $NMEDIT" >&5 +printf "%s\n" "$NMEDIT" >&6; } else - { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 -$as_echo "no" >&6; } + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 +printf "%s\n" "no" >&6; } fi @@ -8874,11 +9583,12 @@ if test -z "$ac_cv_prog_NMEDIT"; then ac_ct_NMEDIT=$NMEDIT # Extract the first word of "nmedit", so it can be a program name with args. set dummy nmedit; ac_word=$2 -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 -$as_echo_n "checking for $ac_word... " >&6; } -if ${ac_cv_prog_ac_ct_NMEDIT+:} false; then : - $as_echo_n "(cached) " >&6 -else +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +printf %s "checking for $ac_word... " >&6; } +if test ${ac_cv_prog_ac_ct_NMEDIT+y} +then : + printf %s "(cached) " >&6 +else $as_nop if test -n "$ac_ct_NMEDIT"; then ac_cv_prog_ac_ct_NMEDIT="$ac_ct_NMEDIT" # Let the user override the test. else @@ -8886,11 +9596,15 @@ as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS - test -z "$as_dir" && as_dir=. + case $as_dir in #((( + '') as_dir=./ ;; + */) ;; + *) as_dir=$as_dir/ ;; + esac for ac_exec_ext in '' $ac_executable_extensions; do - if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then + if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then ac_cv_prog_ac_ct_NMEDIT="nmedit" - $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 + printf "%s\n" "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5 break 2 fi done @@ -8901,11 +9615,11 @@ fi fi ac_ct_NMEDIT=$ac_cv_prog_ac_ct_NMEDIT if test -n "$ac_ct_NMEDIT"; then - { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_NMEDIT" >&5 -$as_echo "$ac_ct_NMEDIT" >&6; } + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_ct_NMEDIT" >&5 +printf "%s\n" "$ac_ct_NMEDIT" >&6; } else - { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 -$as_echo "no" >&6; } + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 +printf "%s\n" "no" >&6; } fi if test "x$ac_ct_NMEDIT" = x; then @@ -8913,8 +9627,8 @@ fi else case $cross_compiling:$ac_tool_warned in yes:) -{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 -$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 +printf "%s\n" "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} ac_tool_warned=yes ;; esac NMEDIT=$ac_ct_NMEDIT @@ -8926,11 +9640,12 @@ fi if test -n "$ac_tool_prefix"; then # Extract the first word of "${ac_tool_prefix}lipo", so it can be a program name with args. set dummy ${ac_tool_prefix}lipo; ac_word=$2 -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 -$as_echo_n "checking for $ac_word... " >&6; } -if ${ac_cv_prog_LIPO+:} false; then : - $as_echo_n "(cached) " >&6 -else +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +printf %s "checking for $ac_word... " >&6; } +if test ${ac_cv_prog_LIPO+y} +then : + printf %s "(cached) " >&6 +else $as_nop if test -n "$LIPO"; then ac_cv_prog_LIPO="$LIPO" # Let the user override the test. else @@ -8938,11 +9653,15 @@ as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS - test -z "$as_dir" && as_dir=. + case $as_dir in #((( + '') as_dir=./ ;; + */) ;; + *) as_dir=$as_dir/ ;; + esac for ac_exec_ext in '' $ac_executable_extensions; do - if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then + if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then ac_cv_prog_LIPO="${ac_tool_prefix}lipo" - $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 + printf "%s\n" "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5 break 2 fi done @@ -8953,11 +9672,11 @@ fi fi LIPO=$ac_cv_prog_LIPO if test -n "$LIPO"; then - { $as_echo "$as_me:${as_lineno-$LINENO}: result: $LIPO" >&5 -$as_echo "$LIPO" >&6; } + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $LIPO" >&5 +printf "%s\n" "$LIPO" >&6; } else - { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 -$as_echo "no" >&6; } + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 +printf "%s\n" "no" >&6; } fi @@ -8966,11 +9685,12 @@ if test -z "$ac_cv_prog_LIPO"; then ac_ct_LIPO=$LIPO # Extract the first word of "lipo", so it can be a program name with args. set dummy lipo; ac_word=$2 -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 -$as_echo_n "checking for $ac_word... " >&6; } -if ${ac_cv_prog_ac_ct_LIPO+:} false; then : - $as_echo_n "(cached) " >&6 -else +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +printf %s "checking for $ac_word... " >&6; } +if test ${ac_cv_prog_ac_ct_LIPO+y} +then : + printf %s "(cached) " >&6 +else $as_nop if test -n "$ac_ct_LIPO"; then ac_cv_prog_ac_ct_LIPO="$ac_ct_LIPO" # Let the user override the test. else @@ -8978,11 +9698,15 @@ as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS - test -z "$as_dir" && as_dir=. + case $as_dir in #((( + '') as_dir=./ ;; + */) ;; + *) as_dir=$as_dir/ ;; + esac for ac_exec_ext in '' $ac_executable_extensions; do - if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then + if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then ac_cv_prog_ac_ct_LIPO="lipo" - $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 + printf "%s\n" "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5 break 2 fi done @@ -8993,11 +9717,11 @@ fi fi ac_ct_LIPO=$ac_cv_prog_ac_ct_LIPO if test -n "$ac_ct_LIPO"; then - { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_LIPO" >&5 -$as_echo "$ac_ct_LIPO" >&6; } + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_ct_LIPO" >&5 +printf "%s\n" "$ac_ct_LIPO" >&6; } else - { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 -$as_echo "no" >&6; } + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 +printf "%s\n" "no" >&6; } fi if test "x$ac_ct_LIPO" = x; then @@ -9005,8 +9729,8 @@ fi else case $cross_compiling:$ac_tool_warned in yes:) -{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 -$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 +printf "%s\n" "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} ac_tool_warned=yes ;; esac LIPO=$ac_ct_LIPO @@ -9018,11 +9742,12 @@ fi if test -n "$ac_tool_prefix"; then # Extract the first word of "${ac_tool_prefix}otool", so it can be a program name with args. set dummy ${ac_tool_prefix}otool; ac_word=$2 -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 -$as_echo_n "checking for $ac_word... " >&6; } -if ${ac_cv_prog_OTOOL+:} false; then : - $as_echo_n "(cached) " >&6 -else +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +printf %s "checking for $ac_word... " >&6; } +if test ${ac_cv_prog_OTOOL+y} +then : + printf %s "(cached) " >&6 +else $as_nop if test -n "$OTOOL"; then ac_cv_prog_OTOOL="$OTOOL" # Let the user override the test. else @@ -9030,11 +9755,15 @@ as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS - test -z "$as_dir" && as_dir=. + case $as_dir in #((( + '') as_dir=./ ;; + */) ;; + *) as_dir=$as_dir/ ;; + esac for ac_exec_ext in '' $ac_executable_extensions; do - if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then + if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then ac_cv_prog_OTOOL="${ac_tool_prefix}otool" - $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 + printf "%s\n" "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5 break 2 fi done @@ -9045,11 +9774,11 @@ fi fi OTOOL=$ac_cv_prog_OTOOL if test -n "$OTOOL"; then - { $as_echo "$as_me:${as_lineno-$LINENO}: result: $OTOOL" >&5 -$as_echo "$OTOOL" >&6; } + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $OTOOL" >&5 +printf "%s\n" "$OTOOL" >&6; } else - { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 -$as_echo "no" >&6; } + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 +printf "%s\n" "no" >&6; } fi @@ -9058,11 +9787,12 @@ if test -z "$ac_cv_prog_OTOOL"; then ac_ct_OTOOL=$OTOOL # Extract the first word of "otool", so it can be a program name with args. set dummy otool; ac_word=$2 -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 -$as_echo_n "checking for $ac_word... " >&6; } -if ${ac_cv_prog_ac_ct_OTOOL+:} false; then : - $as_echo_n "(cached) " >&6 -else +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +printf %s "checking for $ac_word... " >&6; } +if test ${ac_cv_prog_ac_ct_OTOOL+y} +then : + printf %s "(cached) " >&6 +else $as_nop if test -n "$ac_ct_OTOOL"; then ac_cv_prog_ac_ct_OTOOL="$ac_ct_OTOOL" # Let the user override the test. else @@ -9070,11 +9800,15 @@ as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS - test -z "$as_dir" && as_dir=. + case $as_dir in #((( + '') as_dir=./ ;; + */) ;; + *) as_dir=$as_dir/ ;; + esac for ac_exec_ext in '' $ac_executable_extensions; do - if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then + if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then ac_cv_prog_ac_ct_OTOOL="otool" - $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 + printf "%s\n" "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5 break 2 fi done @@ -9085,11 +9819,11 @@ fi fi ac_ct_OTOOL=$ac_cv_prog_ac_ct_OTOOL if test -n "$ac_ct_OTOOL"; then - { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_OTOOL" >&5 -$as_echo "$ac_ct_OTOOL" >&6; } + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_ct_OTOOL" >&5 +printf "%s\n" "$ac_ct_OTOOL" >&6; } else - { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 -$as_echo "no" >&6; } + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 +printf "%s\n" "no" >&6; } fi if test "x$ac_ct_OTOOL" = x; then @@ -9097,8 +9831,8 @@ fi else case $cross_compiling:$ac_tool_warned in yes:) -{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 -$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 +printf "%s\n" "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} ac_tool_warned=yes ;; esac OTOOL=$ac_ct_OTOOL @@ -9110,11 +9844,12 @@ fi if test -n "$ac_tool_prefix"; then # Extract the first word of "${ac_tool_prefix}otool64", so it can be a program name with args. set dummy ${ac_tool_prefix}otool64; ac_word=$2 -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 -$as_echo_n "checking for $ac_word... " >&6; } -if ${ac_cv_prog_OTOOL64+:} false; then : - $as_echo_n "(cached) " >&6 -else +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +printf %s "checking for $ac_word... " >&6; } +if test ${ac_cv_prog_OTOOL64+y} +then : + printf %s "(cached) " >&6 +else $as_nop if test -n "$OTOOL64"; then ac_cv_prog_OTOOL64="$OTOOL64" # Let the user override the test. else @@ -9122,11 +9857,15 @@ as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS - test -z "$as_dir" && as_dir=. + case $as_dir in #((( + '') as_dir=./ ;; + */) ;; + *) as_dir=$as_dir/ ;; + esac for ac_exec_ext in '' $ac_executable_extensions; do - if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then + if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then ac_cv_prog_OTOOL64="${ac_tool_prefix}otool64" - $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 + printf "%s\n" "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5 break 2 fi done @@ -9137,11 +9876,11 @@ fi fi OTOOL64=$ac_cv_prog_OTOOL64 if test -n "$OTOOL64"; then - { $as_echo "$as_me:${as_lineno-$LINENO}: result: $OTOOL64" >&5 -$as_echo "$OTOOL64" >&6; } + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $OTOOL64" >&5 +printf "%s\n" "$OTOOL64" >&6; } else - { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 -$as_echo "no" >&6; } + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 +printf "%s\n" "no" >&6; } fi @@ -9150,11 +9889,12 @@ if test -z "$ac_cv_prog_OTOOL64"; then ac_ct_OTOOL64=$OTOOL64 # Extract the first word of "otool64", so it can be a program name with args. set dummy otool64; ac_word=$2 -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 -$as_echo_n "checking for $ac_word... " >&6; } -if ${ac_cv_prog_ac_ct_OTOOL64+:} false; then : - $as_echo_n "(cached) " >&6 -else +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +printf %s "checking for $ac_word... " >&6; } +if test ${ac_cv_prog_ac_ct_OTOOL64+y} +then : + printf %s "(cached) " >&6 +else $as_nop if test -n "$ac_ct_OTOOL64"; then ac_cv_prog_ac_ct_OTOOL64="$ac_ct_OTOOL64" # Let the user override the test. else @@ -9162,11 +9902,15 @@ as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS - test -z "$as_dir" && as_dir=. + case $as_dir in #((( + '') as_dir=./ ;; + */) ;; + *) as_dir=$as_dir/ ;; + esac for ac_exec_ext in '' $ac_executable_extensions; do - if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then + if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then ac_cv_prog_ac_ct_OTOOL64="otool64" - $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 + printf "%s\n" "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5 break 2 fi done @@ -9177,11 +9921,11 @@ fi fi ac_ct_OTOOL64=$ac_cv_prog_ac_ct_OTOOL64 if test -n "$ac_ct_OTOOL64"; then - { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_OTOOL64" >&5 -$as_echo "$ac_ct_OTOOL64" >&6; } + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_ct_OTOOL64" >&5 +printf "%s\n" "$ac_ct_OTOOL64" >&6; } else - { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 -$as_echo "no" >&6; } + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 +printf "%s\n" "no" >&6; } fi if test "x$ac_ct_OTOOL64" = x; then @@ -9189,8 +9933,8 @@ fi else case $cross_compiling:$ac_tool_warned in yes:) -{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 -$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 +printf "%s\n" "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} ac_tool_warned=yes ;; esac OTOOL64=$ac_ct_OTOOL64 @@ -9225,11 +9969,12 @@ fi - { $as_echo "$as_me:${as_lineno-$LINENO}: checking for -single_module linker flag" >&5 -$as_echo_n "checking for -single_module linker flag... " >&6; } -if ${lt_cv_apple_cc_single_mod+:} false; then : - $as_echo_n "(cached) " >&6 -else + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for -single_module linker flag" >&5 +printf %s "checking for -single_module linker flag... " >&6; } +if test ${lt_cv_apple_cc_single_mod+y} +then : + printf %s "(cached) " >&6 +else $as_nop lt_cv_apple_cc_single_mod=no if test -z "$LT_MULTI_MODULE"; then # By default we will add the -single_module flag. You can override @@ -9258,14 +10003,15 @@ else rm -f conftest.* fi fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_apple_cc_single_mod" >&5 -$as_echo "$lt_cv_apple_cc_single_mod" >&6; } +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $lt_cv_apple_cc_single_mod" >&5 +printf "%s\n" "$lt_cv_apple_cc_single_mod" >&6; } - { $as_echo "$as_me:${as_lineno-$LINENO}: checking for -exported_symbols_list linker flag" >&5 -$as_echo_n "checking for -exported_symbols_list linker flag... " >&6; } -if ${lt_cv_ld_exported_symbols_list+:} false; then : - $as_echo_n "(cached) " >&6 -else + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for -exported_symbols_list linker flag" >&5 +printf %s "checking for -exported_symbols_list linker flag... " >&6; } +if test ${lt_cv_ld_exported_symbols_list+y} +then : + printf %s "(cached) " >&6 +else $as_nop lt_cv_ld_exported_symbols_list=no save_LDFLAGS=$LDFLAGS echo "_main" > conftest.sym @@ -9274,31 +10020,33 @@ else /* end confdefs.h. */ int -main () +main (void) { ; return 0; } _ACEOF -if ac_fn_c_try_link "$LINENO"; then : +if ac_fn_c_try_link "$LINENO" +then : lt_cv_ld_exported_symbols_list=yes -else +else $as_nop lt_cv_ld_exported_symbols_list=no fi -rm -f core conftest.err conftest.$ac_objext \ +rm -f core conftest.err conftest.$ac_objext conftest.beam \ conftest$ac_exeext conftest.$ac_ext LDFLAGS=$save_LDFLAGS fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_ld_exported_symbols_list" >&5 -$as_echo "$lt_cv_ld_exported_symbols_list" >&6; } +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $lt_cv_ld_exported_symbols_list" >&5 +printf "%s\n" "$lt_cv_ld_exported_symbols_list" >&6; } - { $as_echo "$as_me:${as_lineno-$LINENO}: checking for -force_load linker flag" >&5 -$as_echo_n "checking for -force_load linker flag... " >&6; } -if ${lt_cv_ld_force_load+:} false; then : - $as_echo_n "(cached) " >&6 -else + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for -force_load linker flag" >&5 +printf %s "checking for -force_load linker flag... " >&6; } +if test ${lt_cv_ld_force_load+y} +then : + printf %s "(cached) " >&6 +else $as_nop lt_cv_ld_force_load=no cat > conftest.c << _LT_EOF int forced_loaded() { return 2;} @@ -9326,8 +10074,8 @@ _LT_EOF rm -rf conftest.dSYM fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_ld_force_load" >&5 -$as_echo "$lt_cv_ld_force_load" >&6; } +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $lt_cv_ld_force_load" >&5 +printf "%s\n" "$lt_cv_ld_force_load" >&6; } case $host_os in rhapsody* | darwin1.[012]) _lt_dar_allow_undefined='$wl-undefined ${wl}suppress' ;; @@ -9393,19 +10141,14 @@ func_munge_path_list () esac } -for ac_header in dlfcn.h -do : - ac_fn_c_check_header_compile "$LINENO" "dlfcn.h" "ac_cv_header_dlfcn_h" "$ac_includes_default +ac_fn_c_check_header_compile "$LINENO" "dlfcn.h" "ac_cv_header_dlfcn_h" "$ac_includes_default " -if test "x$ac_cv_header_dlfcn_h" = xyes; then : - cat >>confdefs.h <<_ACEOF -#define HAVE_DLFCN_H 1 -_ACEOF +if test "x$ac_cv_header_dlfcn_h" = xyes +then : + printf "%s\n" "#define HAVE_DLFCN_H 1" >>confdefs.h fi -done - @@ -9421,7 +10164,8 @@ done # Check whether --enable-shared was given. -if test "${enable_shared+set}" = set; then : +if test ${enable_shared+y} +then : enableval=$enable_shared; p=${PACKAGE-default} case $enableval in yes) enable_shared=yes ;; @@ -9439,7 +10183,7 @@ if test "${enable_shared+set}" = set; then : IFS=$lt_save_ifs ;; esac -else +else $as_nop enable_shared=yes fi @@ -9452,7 +10196,8 @@ fi # Check whether --enable-static was given. -if test "${enable_static+set}" = set; then : +if test ${enable_static+y} +then : enableval=$enable_static; p=${PACKAGE-default} case $enableval in yes) enable_static=yes ;; @@ -9470,7 +10215,7 @@ if test "${enable_static+set}" = set; then : IFS=$lt_save_ifs ;; esac -else +else $as_nop enable_static=yes fi @@ -9484,7 +10229,8 @@ fi # Check whether --with-pic was given. -if test "${with_pic+set}" = set; then : +if test ${with_pic+y} +then : withval=$with_pic; lt_p=${PACKAGE-default} case $withval in yes|no) pic_mode=$withval ;; @@ -9501,7 +10247,7 @@ if test "${with_pic+set}" = set; then : IFS=$lt_save_ifs ;; esac -else +else $as_nop pic_mode=default fi @@ -9513,7 +10259,8 @@ fi # Check whether --enable-fast-install was given. -if test "${enable_fast_install+set}" = set; then : +if test ${enable_fast_install+y} +then : enableval=$enable_fast_install; p=${PACKAGE-default} case $enableval in yes) enable_fast_install=yes ;; @@ -9531,7 +10278,7 @@ if test "${enable_fast_install+set}" = set; then : IFS=$lt_save_ifs ;; esac -else +else $as_nop enable_fast_install=yes fi @@ -9545,11 +10292,12 @@ fi shared_archive_member_spec= case $host,$enable_shared in power*-*-aix[5-9]*,yes) - { $as_echo "$as_me:${as_lineno-$LINENO}: checking which variant of shared library versioning to provide" >&5 -$as_echo_n "checking which variant of shared library versioning to provide... " >&6; } + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking which variant of shared library versioning to provide" >&5 +printf %s "checking which variant of shared library versioning to provide... " >&6; } # Check whether --with-aix-soname was given. -if test "${with_aix_soname+set}" = set; then : +if test ${with_aix_soname+y} +then : withval=$with_aix_soname; case $withval in aix|svr4|both) ;; @@ -9558,18 +10306,19 @@ if test "${with_aix_soname+set}" = set; then : ;; esac lt_cv_with_aix_soname=$with_aix_soname -else - if ${lt_cv_with_aix_soname+:} false; then : - $as_echo_n "(cached) " >&6 -else +else $as_nop + if test ${lt_cv_with_aix_soname+y} +then : + printf %s "(cached) " >&6 +else $as_nop lt_cv_with_aix_soname=aix fi with_aix_soname=$lt_cv_with_aix_soname fi - { $as_echo "$as_me:${as_lineno-$LINENO}: result: $with_aix_soname" >&5 -$as_echo "$with_aix_soname" >&6; } + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $with_aix_soname" >&5 +printf "%s\n" "$with_aix_soname" >&6; } if test aix != "$with_aix_soname"; then # For the AIX way of multilib, we name the shared archive member # based on the bitwidth used, traditionally 'shr.o' or 'shr_64.o', @@ -9651,11 +10400,12 @@ if test -n "${ZSH_VERSION+set}"; then setopt NO_GLOB_SUBST fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for objdir" >&5 -$as_echo_n "checking for objdir... " >&6; } -if ${lt_cv_objdir+:} false; then : - $as_echo_n "(cached) " >&6 -else +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for objdir" >&5 +printf %s "checking for objdir... " >&6; } +if test ${lt_cv_objdir+y} +then : + printf %s "(cached) " >&6 +else $as_nop rm -f .libs 2>/dev/null mkdir .libs 2>/dev/null if test -d .libs; then @@ -9666,17 +10416,15 @@ else fi rmdir .libs 2>/dev/null fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_objdir" >&5 -$as_echo "$lt_cv_objdir" >&6; } +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $lt_cv_objdir" >&5 +printf "%s\n" "$lt_cv_objdir" >&6; } objdir=$lt_cv_objdir -cat >>confdefs.h <<_ACEOF -#define LT_OBJDIR "$lt_cv_objdir/" -_ACEOF +printf "%s\n" "#define LT_OBJDIR \"$lt_cv_objdir/\"" >>confdefs.h @@ -9722,11 +10470,12 @@ test -z "$MAGIC_CMD" && MAGIC_CMD=file case $deplibs_check_method in file_magic*) if test "$file_magic_cmd" = '$MAGIC_CMD'; then - { $as_echo "$as_me:${as_lineno-$LINENO}: checking for ${ac_tool_prefix}file" >&5 -$as_echo_n "checking for ${ac_tool_prefix}file... " >&6; } -if ${lt_cv_path_MAGIC_CMD+:} false; then : - $as_echo_n "(cached) " >&6 -else + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for ${ac_tool_prefix}file" >&5 +printf %s "checking for ${ac_tool_prefix}file... " >&6; } +if test ${lt_cv_path_MAGIC_CMD+y} +then : + printf %s "(cached) " >&6 +else $as_nop case $MAGIC_CMD in [\\/*] | ?:[\\/]*) lt_cv_path_MAGIC_CMD=$MAGIC_CMD # Let the user override the test with a path. @@ -9775,11 +10524,11 @@ fi MAGIC_CMD=$lt_cv_path_MAGIC_CMD if test -n "$MAGIC_CMD"; then - { $as_echo "$as_me:${as_lineno-$LINENO}: result: $MAGIC_CMD" >&5 -$as_echo "$MAGIC_CMD" >&6; } + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $MAGIC_CMD" >&5 +printf "%s\n" "$MAGIC_CMD" >&6; } else - { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 -$as_echo "no" >&6; } + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 +printf "%s\n" "no" >&6; } fi @@ -9788,11 +10537,12 @@ fi if test -z "$lt_cv_path_MAGIC_CMD"; then if test -n "$ac_tool_prefix"; then - { $as_echo "$as_me:${as_lineno-$LINENO}: checking for file" >&5 -$as_echo_n "checking for file... " >&6; } -if ${lt_cv_path_MAGIC_CMD+:} false; then : - $as_echo_n "(cached) " >&6 -else + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for file" >&5 +printf %s "checking for file... " >&6; } +if test ${lt_cv_path_MAGIC_CMD+y} +then : + printf %s "(cached) " >&6 +else $as_nop case $MAGIC_CMD in [\\/*] | ?:[\\/]*) lt_cv_path_MAGIC_CMD=$MAGIC_CMD # Let the user override the test with a path. @@ -9841,11 +10591,11 @@ fi MAGIC_CMD=$lt_cv_path_MAGIC_CMD if test -n "$MAGIC_CMD"; then - { $as_echo "$as_me:${as_lineno-$LINENO}: result: $MAGIC_CMD" >&5 -$as_echo "$MAGIC_CMD" >&6; } + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $MAGIC_CMD" >&5 +printf "%s\n" "$MAGIC_CMD" >&6; } else - { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 -$as_echo "no" >&6; } + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 +printf "%s\n" "no" >&6; } fi @@ -9930,11 +10680,12 @@ if test yes = "$GCC"; then lt_prog_compiler_no_builtin_flag=' -fno-builtin' ;; esac - { $as_echo "$as_me:${as_lineno-$LINENO}: checking if $compiler supports -fno-rtti -fno-exceptions" >&5 -$as_echo_n "checking if $compiler supports -fno-rtti -fno-exceptions... " >&6; } -if ${lt_cv_prog_compiler_rtti_exceptions+:} false; then : - $as_echo_n "(cached) " >&6 -else + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking if $compiler supports -fno-rtti -fno-exceptions" >&5 +printf %s "checking if $compiler supports -fno-rtti -fno-exceptions... " >&6; } +if test ${lt_cv_prog_compiler_rtti_exceptions+y} +then : + printf %s "(cached) " >&6 +else $as_nop lt_cv_prog_compiler_rtti_exceptions=no ac_outfile=conftest.$ac_objext echo "$lt_simple_compile_test_code" > conftest.$ac_ext @@ -9965,8 +10716,8 @@ else $RM conftest* fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_prog_compiler_rtti_exceptions" >&5 -$as_echo "$lt_cv_prog_compiler_rtti_exceptions" >&6; } +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $lt_cv_prog_compiler_rtti_exceptions" >&5 +printf "%s\n" "$lt_cv_prog_compiler_rtti_exceptions" >&6; } if test yes = "$lt_cv_prog_compiler_rtti_exceptions"; then lt_prog_compiler_no_builtin_flag="$lt_prog_compiler_no_builtin_flag -fno-rtti -fno-exceptions" @@ -10323,26 +11074,28 @@ case $host_os in ;; esac -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $compiler option to produce PIC" >&5 -$as_echo_n "checking for $compiler option to produce PIC... " >&6; } -if ${lt_cv_prog_compiler_pic+:} false; then : - $as_echo_n "(cached) " >&6 -else +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $compiler option to produce PIC" >&5 +printf %s "checking for $compiler option to produce PIC... " >&6; } +if test ${lt_cv_prog_compiler_pic+y} +then : + printf %s "(cached) " >&6 +else $as_nop lt_cv_prog_compiler_pic=$lt_prog_compiler_pic fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_prog_compiler_pic" >&5 -$as_echo "$lt_cv_prog_compiler_pic" >&6; } +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $lt_cv_prog_compiler_pic" >&5 +printf "%s\n" "$lt_cv_prog_compiler_pic" >&6; } lt_prog_compiler_pic=$lt_cv_prog_compiler_pic # # Check to make sure the PIC flag actually works. # if test -n "$lt_prog_compiler_pic"; then - { $as_echo "$as_me:${as_lineno-$LINENO}: checking if $compiler PIC flag $lt_prog_compiler_pic works" >&5 -$as_echo_n "checking if $compiler PIC flag $lt_prog_compiler_pic works... " >&6; } -if ${lt_cv_prog_compiler_pic_works+:} false; then : - $as_echo_n "(cached) " >&6 -else + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking if $compiler PIC flag $lt_prog_compiler_pic works" >&5 +printf %s "checking if $compiler PIC flag $lt_prog_compiler_pic works... " >&6; } +if test ${lt_cv_prog_compiler_pic_works+y} +then : + printf %s "(cached) " >&6 +else $as_nop lt_cv_prog_compiler_pic_works=no ac_outfile=conftest.$ac_objext echo "$lt_simple_compile_test_code" > conftest.$ac_ext @@ -10373,8 +11126,8 @@ else $RM conftest* fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_prog_compiler_pic_works" >&5 -$as_echo "$lt_cv_prog_compiler_pic_works" >&6; } +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $lt_cv_prog_compiler_pic_works" >&5 +printf "%s\n" "$lt_cv_prog_compiler_pic_works" >&6; } if test yes = "$lt_cv_prog_compiler_pic_works"; then case $lt_prog_compiler_pic in @@ -10402,11 +11155,12 @@ fi # Check to make sure the static flag actually works. # wl=$lt_prog_compiler_wl eval lt_tmp_static_flag=\"$lt_prog_compiler_static\" -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking if $compiler static flag $lt_tmp_static_flag works" >&5 -$as_echo_n "checking if $compiler static flag $lt_tmp_static_flag works... " >&6; } -if ${lt_cv_prog_compiler_static_works+:} false; then : - $as_echo_n "(cached) " >&6 -else +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking if $compiler static flag $lt_tmp_static_flag works" >&5 +printf %s "checking if $compiler static flag $lt_tmp_static_flag works... " >&6; } +if test ${lt_cv_prog_compiler_static_works+y} +then : + printf %s "(cached) " >&6 +else $as_nop lt_cv_prog_compiler_static_works=no save_LDFLAGS=$LDFLAGS LDFLAGS="$LDFLAGS $lt_tmp_static_flag" @@ -10430,8 +11184,8 @@ else LDFLAGS=$save_LDFLAGS fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_prog_compiler_static_works" >&5 -$as_echo "$lt_cv_prog_compiler_static_works" >&6; } +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $lt_cv_prog_compiler_static_works" >&5 +printf "%s\n" "$lt_cv_prog_compiler_static_works" >&6; } if test yes = "$lt_cv_prog_compiler_static_works"; then : @@ -10445,11 +11199,12 @@ fi - { $as_echo "$as_me:${as_lineno-$LINENO}: checking if $compiler supports -c -o file.$ac_objext" >&5 -$as_echo_n "checking if $compiler supports -c -o file.$ac_objext... " >&6; } -if ${lt_cv_prog_compiler_c_o+:} false; then : - $as_echo_n "(cached) " >&6 -else + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking if $compiler supports -c -o file.$ac_objext" >&5 +printf %s "checking if $compiler supports -c -o file.$ac_objext... " >&6; } +if test ${lt_cv_prog_compiler_c_o+y} +then : + printf %s "(cached) " >&6 +else $as_nop lt_cv_prog_compiler_c_o=no $RM -r conftest 2>/dev/null mkdir conftest @@ -10492,19 +11247,20 @@ else $RM conftest* fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_prog_compiler_c_o" >&5 -$as_echo "$lt_cv_prog_compiler_c_o" >&6; } +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $lt_cv_prog_compiler_c_o" >&5 +printf "%s\n" "$lt_cv_prog_compiler_c_o" >&6; } - { $as_echo "$as_me:${as_lineno-$LINENO}: checking if $compiler supports -c -o file.$ac_objext" >&5 -$as_echo_n "checking if $compiler supports -c -o file.$ac_objext... " >&6; } -if ${lt_cv_prog_compiler_c_o+:} false; then : - $as_echo_n "(cached) " >&6 -else + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking if $compiler supports -c -o file.$ac_objext" >&5 +printf %s "checking if $compiler supports -c -o file.$ac_objext... " >&6; } +if test ${lt_cv_prog_compiler_c_o+y} +then : + printf %s "(cached) " >&6 +else $as_nop lt_cv_prog_compiler_c_o=no $RM -r conftest 2>/dev/null mkdir conftest @@ -10547,8 +11303,8 @@ else $RM conftest* fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_prog_compiler_c_o" >&5 -$as_echo "$lt_cv_prog_compiler_c_o" >&6; } +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $lt_cv_prog_compiler_c_o" >&5 +printf "%s\n" "$lt_cv_prog_compiler_c_o" >&6; } @@ -10556,19 +11312,19 @@ $as_echo "$lt_cv_prog_compiler_c_o" >&6; } hard_links=nottested if test no = "$lt_cv_prog_compiler_c_o" && test no != "$need_locks"; then # do not overwrite the value of need_locks provided by the user - { $as_echo "$as_me:${as_lineno-$LINENO}: checking if we can lock with hard links" >&5 -$as_echo_n "checking if we can lock with hard links... " >&6; } + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking if we can lock with hard links" >&5 +printf %s "checking if we can lock with hard links... " >&6; } hard_links=yes $RM conftest* ln conftest.a conftest.b 2>/dev/null && hard_links=no touch conftest.a ln conftest.a conftest.b 2>&5 || hard_links=no ln conftest.a conftest.b 2>/dev/null && hard_links=no - { $as_echo "$as_me:${as_lineno-$LINENO}: result: $hard_links" >&5 -$as_echo "$hard_links" >&6; } + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $hard_links" >&5 +printf "%s\n" "$hard_links" >&6; } if test no = "$hard_links"; then - { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: '$CC' does not support '-c -o', so 'make -j' may be unsafe" >&5 -$as_echo "$as_me: WARNING: '$CC' does not support '-c -o', so 'make -j' may be unsafe" >&2;} + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: WARNING: '$CC' does not support '-c -o', so 'make -j' may be unsafe" >&5 +printf "%s\n" "$as_me: WARNING: '$CC' does not support '-c -o', so 'make -j' may be unsafe" >&2;} need_locks=warn fi else @@ -10580,8 +11336,8 @@ fi - { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether the $compiler linker ($LD) supports shared libraries" >&5 -$as_echo_n "checking whether the $compiler linker ($LD) supports shared libraries... " >&6; } + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking whether the $compiler linker ($LD) supports shared libraries" >&5 +printf %s "checking whether the $compiler linker ($LD) supports shared libraries... " >&6; } runpath_var= allow_undefined_flag= @@ -11136,21 +11892,23 @@ _LT_EOF if test set = "${lt_cv_aix_libpath+set}"; then aix_libpath=$lt_cv_aix_libpath else - if ${lt_cv_aix_libpath_+:} false; then : - $as_echo_n "(cached) " >&6 -else + if test ${lt_cv_aix_libpath_+y} +then : + printf %s "(cached) " >&6 +else $as_nop cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ int -main () +main (void) { ; return 0; } _ACEOF -if ac_fn_c_try_link "$LINENO"; then : +if ac_fn_c_try_link "$LINENO" +then : lt_aix_libpath_sed=' /Import File Strings/,/^$/ { @@ -11165,7 +11923,7 @@ if ac_fn_c_try_link "$LINENO"; then : lt_cv_aix_libpath_=`dump -HX64 conftest$ac_exeext 2>/dev/null | $SED -n -e "$lt_aix_libpath_sed"` fi fi -rm -f core conftest.err conftest.$ac_objext \ +rm -f core conftest.err conftest.$ac_objext conftest.beam \ conftest$ac_exeext conftest.$ac_ext if test -z "$lt_cv_aix_libpath_"; then lt_cv_aix_libpath_=/usr/lib:/lib @@ -11189,21 +11947,23 @@ fi if test set = "${lt_cv_aix_libpath+set}"; then aix_libpath=$lt_cv_aix_libpath else - if ${lt_cv_aix_libpath_+:} false; then : - $as_echo_n "(cached) " >&6 -else + if test ${lt_cv_aix_libpath_+y} +then : + printf %s "(cached) " >&6 +else $as_nop cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ int -main () +main (void) { ; return 0; } _ACEOF -if ac_fn_c_try_link "$LINENO"; then : +if ac_fn_c_try_link "$LINENO" +then : lt_aix_libpath_sed=' /Import File Strings/,/^$/ { @@ -11218,7 +11978,7 @@ if ac_fn_c_try_link "$LINENO"; then : lt_cv_aix_libpath_=`dump -HX64 conftest$ac_exeext 2>/dev/null | $SED -n -e "$lt_aix_libpath_sed"` fi fi -rm -f core conftest.err conftest.$ac_objext \ +rm -f core conftest.err conftest.$ac_objext conftest.beam \ conftest$ac_exeext conftest.$ac_ext if test -z "$lt_cv_aix_libpath_"; then lt_cv_aix_libpath_=/usr/lib:/lib @@ -11469,11 +12229,12 @@ fi # Older versions of the 11.00 compiler do not understand -b yet # (HP92453-01 A.11.01.20 doesn't, HP92453-01 B.11.X.35175-35176.GP does) - { $as_echo "$as_me:${as_lineno-$LINENO}: checking if $CC understands -b" >&5 -$as_echo_n "checking if $CC understands -b... " >&6; } -if ${lt_cv_prog_compiler__b+:} false; then : - $as_echo_n "(cached) " >&6 -else + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking if $CC understands -b" >&5 +printf %s "checking if $CC understands -b... " >&6; } +if test ${lt_cv_prog_compiler__b+y} +then : + printf %s "(cached) " >&6 +else $as_nop lt_cv_prog_compiler__b=no save_LDFLAGS=$LDFLAGS LDFLAGS="$LDFLAGS -b" @@ -11497,8 +12258,8 @@ else LDFLAGS=$save_LDFLAGS fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_prog_compiler__b" >&5 -$as_echo "$lt_cv_prog_compiler__b" >&6; } +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $lt_cv_prog_compiler__b" >&5 +printf "%s\n" "$lt_cv_prog_compiler__b" >&6; } if test yes = "$lt_cv_prog_compiler__b"; then archive_cmds='$CC -b $wl+h $wl$soname $wl+b $wl$install_libdir -o $lib $libobjs $deplibs $compiler_flags' @@ -11538,28 +12299,30 @@ fi # work, assume that -exports_file does not work either and # implicitly export all symbols. # This should be the same for all languages, so no per-tag cache variable. - { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether the $host_os linker accepts -exported_symbol" >&5 -$as_echo_n "checking whether the $host_os linker accepts -exported_symbol... " >&6; } -if ${lt_cv_irix_exported_symbol+:} false; then : - $as_echo_n "(cached) " >&6 -else + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking whether the $host_os linker accepts -exported_symbol" >&5 +printf %s "checking whether the $host_os linker accepts -exported_symbol... " >&6; } +if test ${lt_cv_irix_exported_symbol+y} +then : + printf %s "(cached) " >&6 +else $as_nop save_LDFLAGS=$LDFLAGS LDFLAGS="$LDFLAGS -shared $wl-exported_symbol ${wl}foo $wl-update_registry $wl/dev/null" cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ int foo (void) { return 0; } _ACEOF -if ac_fn_c_try_link "$LINENO"; then : +if ac_fn_c_try_link "$LINENO" +then : lt_cv_irix_exported_symbol=yes -else +else $as_nop lt_cv_irix_exported_symbol=no fi -rm -f core conftest.err conftest.$ac_objext \ +rm -f core conftest.err conftest.$ac_objext conftest.beam \ conftest$ac_exeext conftest.$ac_ext LDFLAGS=$save_LDFLAGS fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_irix_exported_symbol" >&5 -$as_echo "$lt_cv_irix_exported_symbol" >&6; } +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $lt_cv_irix_exported_symbol" >&5 +printf "%s\n" "$lt_cv_irix_exported_symbol" >&6; } if test yes = "$lt_cv_irix_exported_symbol"; then archive_expsym_cmds='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags $wl-soname $wl$soname `test -n "$verstring" && func_echo_all "$wl-set_version $wl$verstring"` $wl-update_registry $wl$output_objdir/so_locations $wl-exports_file $wl$export_symbols -o $lib' fi @@ -11839,8 +12602,8 @@ $as_echo "$lt_cv_irix_exported_symbol" >&6; } fi fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ld_shlibs" >&5 -$as_echo "$ld_shlibs" >&6; } +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ld_shlibs" >&5 +printf "%s\n" "$ld_shlibs" >&6; } test no = "$ld_shlibs" && can_build_shared=no with_gnu_ld=$with_gnu_ld @@ -11876,18 +12639,19 @@ x|xyes) # Test whether the compiler implicitly links with -lc since on some # systems, -lgcc has to come before -lc. If gcc already passes -lc # to ld, don't add -lc before -lgcc. - { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether -lc should be explicitly linked in" >&5 -$as_echo_n "checking whether -lc should be explicitly linked in... " >&6; } -if ${lt_cv_archive_cmds_need_lc+:} false; then : - $as_echo_n "(cached) " >&6 -else + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking whether -lc should be explicitly linked in" >&5 +printf %s "checking whether -lc should be explicitly linked in... " >&6; } +if test ${lt_cv_archive_cmds_need_lc+y} +then : + printf %s "(cached) " >&6 +else $as_nop $RM conftest* echo "$lt_simple_compile_test_code" > conftest.$ac_ext if { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_compile\""; } >&5 (eval $ac_compile) 2>&5 ac_status=$? - $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; } 2>conftest.err; then soname=conftest lib=conftest @@ -11905,7 +12669,7 @@ else if { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$archive_cmds 2\>\&1 \| $GREP \" -lc \" \>/dev/null 2\>\&1\""; } >&5 (eval $archive_cmds 2\>\&1 \| $GREP \" -lc \" \>/dev/null 2\>\&1) 2>&5 ac_status=$? - $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; } then lt_cv_archive_cmds_need_lc=no @@ -11919,8 +12683,8 @@ else $RM conftest* fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_archive_cmds_need_lc" >&5 -$as_echo "$lt_cv_archive_cmds_need_lc" >&6; } +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $lt_cv_archive_cmds_need_lc" >&5 +printf "%s\n" "$lt_cv_archive_cmds_need_lc" >&6; } archive_cmds_need_lc=$lt_cv_archive_cmds_need_lc ;; esac @@ -12079,8 +12843,8 @@ esac - { $as_echo "$as_me:${as_lineno-$LINENO}: checking dynamic linker characteristics" >&5 -$as_echo_n "checking dynamic linker characteristics... " >&6; } + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking dynamic linker characteristics" >&5 +printf %s "checking dynamic linker characteristics... " >&6; } if test yes = "$GCC"; then case $host_os in @@ -12641,9 +13405,10 @@ linux* | k*bsd*-gnu | kopensolaris*-gnu | gnu*) shlibpath_overrides_runpath=no # Some binutils ld are patched to set DT_RUNPATH - if ${lt_cv_shlibpath_overrides_runpath+:} false; then : - $as_echo_n "(cached) " >&6 -else + if test ${lt_cv_shlibpath_overrides_runpath+y} +then : + printf %s "(cached) " >&6 +else $as_nop lt_cv_shlibpath_overrides_runpath=no save_LDFLAGS=$LDFLAGS save_libdir=$libdir @@ -12653,19 +13418,21 @@ else /* end confdefs.h. */ int -main () +main (void) { ; return 0; } _ACEOF -if ac_fn_c_try_link "$LINENO"; then : - if ($OBJDUMP -p conftest$ac_exeext) 2>/dev/null | grep "RUNPATH.*$libdir" >/dev/null; then : +if ac_fn_c_try_link "$LINENO" +then : + if ($OBJDUMP -p conftest$ac_exeext) 2>/dev/null | grep "RUNPATH.*$libdir" >/dev/null +then : lt_cv_shlibpath_overrides_runpath=yes fi fi -rm -f core conftest.err conftest.$ac_objext \ +rm -f core conftest.err conftest.$ac_objext conftest.beam \ conftest$ac_exeext conftest.$ac_ext LDFLAGS=$save_LDFLAGS libdir=$save_libdir @@ -12897,8 +13664,8 @@ uts4*) dynamic_linker=no ;; esac -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $dynamic_linker" >&5 -$as_echo "$dynamic_linker" >&6; } +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $dynamic_linker" >&5 +printf "%s\n" "$dynamic_linker" >&6; } test no = "$dynamic_linker" && can_build_shared=no variables_saved_for_relink="PATH $shlibpath_var $runpath_var" @@ -13019,8 +13786,8 @@ configure_time_lt_sys_library_path=$LT_SYS_LIBRARY_PATH - { $as_echo "$as_me:${as_lineno-$LINENO}: checking how to hardcode library paths into programs" >&5 -$as_echo_n "checking how to hardcode library paths into programs... " >&6; } + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking how to hardcode library paths into programs" >&5 +printf %s "checking how to hardcode library paths into programs... " >&6; } hardcode_action= if test -n "$hardcode_libdir_flag_spec" || test -n "$runpath_var" || @@ -13044,8 +13811,8 @@ else # directories. hardcode_action=unsupported fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $hardcode_action" >&5 -$as_echo "$hardcode_action" >&6; } +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $hardcode_action" >&5 +printf "%s\n" "$hardcode_action" >&6; } if test relink = "$hardcode_action" || test yes = "$inherit_rpath"; then @@ -13089,11 +13856,12 @@ else darwin*) # if libdl is installed we need to link against it - { $as_echo "$as_me:${as_lineno-$LINENO}: checking for dlopen in -ldl" >&5 -$as_echo_n "checking for dlopen in -ldl... " >&6; } -if ${ac_cv_lib_dl_dlopen+:} false; then : - $as_echo_n "(cached) " >&6 -else + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for dlopen in -ldl" >&5 +printf %s "checking for dlopen in -ldl... " >&6; } +if test ${ac_cv_lib_dl_dlopen+y} +then : + printf %s "(cached) " >&6 +else $as_nop ac_check_lib_save_LIBS=$LIBS LIBS="-ldl $LIBS" cat confdefs.h - <<_ACEOF >conftest.$ac_ext @@ -13102,32 +13870,31 @@ cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* Override any GCC internal prototype to avoid an error. Use char because int might match the return type of a GCC builtin and then its argument prototype would still apply. */ -#ifdef __cplusplus -extern "C" -#endif char dlopen (); int -main () +main (void) { return dlopen (); ; return 0; } _ACEOF -if ac_fn_c_try_link "$LINENO"; then : +if ac_fn_c_try_link "$LINENO" +then : ac_cv_lib_dl_dlopen=yes -else +else $as_nop ac_cv_lib_dl_dlopen=no fi -rm -f core conftest.err conftest.$ac_objext \ +rm -f core conftest.err conftest.$ac_objext conftest.beam \ conftest$ac_exeext conftest.$ac_ext LIBS=$ac_check_lib_save_LIBS fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_dl_dlopen" >&5 -$as_echo "$ac_cv_lib_dl_dlopen" >&6; } -if test "x$ac_cv_lib_dl_dlopen" = xyes; then : +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_dl_dlopen" >&5 +printf "%s\n" "$ac_cv_lib_dl_dlopen" >&6; } +if test "x$ac_cv_lib_dl_dlopen" = xyes +then : lt_cv_dlopen=dlopen lt_cv_dlopen_libs=-ldl -else +else $as_nop lt_cv_dlopen=dyld lt_cv_dlopen_libs= @@ -13147,14 +13914,16 @@ fi *) ac_fn_c_check_func "$LINENO" "shl_load" "ac_cv_func_shl_load" -if test "x$ac_cv_func_shl_load" = xyes; then : +if test "x$ac_cv_func_shl_load" = xyes +then : lt_cv_dlopen=shl_load -else - { $as_echo "$as_me:${as_lineno-$LINENO}: checking for shl_load in -ldld" >&5 -$as_echo_n "checking for shl_load in -ldld... " >&6; } -if ${ac_cv_lib_dld_shl_load+:} false; then : - $as_echo_n "(cached) " >&6 -else +else $as_nop + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for shl_load in -ldld" >&5 +printf %s "checking for shl_load in -ldld... " >&6; } +if test ${ac_cv_lib_dld_shl_load+y} +then : + printf %s "(cached) " >&6 +else $as_nop ac_check_lib_save_LIBS=$LIBS LIBS="-ldld $LIBS" cat confdefs.h - <<_ACEOF >conftest.$ac_ext @@ -13163,41 +13932,42 @@ cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* Override any GCC internal prototype to avoid an error. Use char because int might match the return type of a GCC builtin and then its argument prototype would still apply. */ -#ifdef __cplusplus -extern "C" -#endif char shl_load (); int -main () +main (void) { return shl_load (); ; return 0; } _ACEOF -if ac_fn_c_try_link "$LINENO"; then : +if ac_fn_c_try_link "$LINENO" +then : ac_cv_lib_dld_shl_load=yes -else +else $as_nop ac_cv_lib_dld_shl_load=no fi -rm -f core conftest.err conftest.$ac_objext \ +rm -f core conftest.err conftest.$ac_objext conftest.beam \ conftest$ac_exeext conftest.$ac_ext LIBS=$ac_check_lib_save_LIBS fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_dld_shl_load" >&5 -$as_echo "$ac_cv_lib_dld_shl_load" >&6; } -if test "x$ac_cv_lib_dld_shl_load" = xyes; then : +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_dld_shl_load" >&5 +printf "%s\n" "$ac_cv_lib_dld_shl_load" >&6; } +if test "x$ac_cv_lib_dld_shl_load" = xyes +then : lt_cv_dlopen=shl_load lt_cv_dlopen_libs=-ldld -else +else $as_nop ac_fn_c_check_func "$LINENO" "dlopen" "ac_cv_func_dlopen" -if test "x$ac_cv_func_dlopen" = xyes; then : +if test "x$ac_cv_func_dlopen" = xyes +then : lt_cv_dlopen=dlopen -else - { $as_echo "$as_me:${as_lineno-$LINENO}: checking for dlopen in -ldl" >&5 -$as_echo_n "checking for dlopen in -ldl... " >&6; } -if ${ac_cv_lib_dl_dlopen+:} false; then : - $as_echo_n "(cached) " >&6 -else +else $as_nop + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for dlopen in -ldl" >&5 +printf %s "checking for dlopen in -ldl... " >&6; } +if test ${ac_cv_lib_dl_dlopen+y} +then : + printf %s "(cached) " >&6 +else $as_nop ac_check_lib_save_LIBS=$LIBS LIBS="-ldl $LIBS" cat confdefs.h - <<_ACEOF >conftest.$ac_ext @@ -13206,37 +13976,37 @@ cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* Override any GCC internal prototype to avoid an error. Use char because int might match the return type of a GCC builtin and then its argument prototype would still apply. */ -#ifdef __cplusplus -extern "C" -#endif char dlopen (); int -main () +main (void) { return dlopen (); ; return 0; } _ACEOF -if ac_fn_c_try_link "$LINENO"; then : +if ac_fn_c_try_link "$LINENO" +then : ac_cv_lib_dl_dlopen=yes -else +else $as_nop ac_cv_lib_dl_dlopen=no fi -rm -f core conftest.err conftest.$ac_objext \ +rm -f core conftest.err conftest.$ac_objext conftest.beam \ conftest$ac_exeext conftest.$ac_ext LIBS=$ac_check_lib_save_LIBS fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_dl_dlopen" >&5 -$as_echo "$ac_cv_lib_dl_dlopen" >&6; } -if test "x$ac_cv_lib_dl_dlopen" = xyes; then : +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_dl_dlopen" >&5 +printf "%s\n" "$ac_cv_lib_dl_dlopen" >&6; } +if test "x$ac_cv_lib_dl_dlopen" = xyes +then : lt_cv_dlopen=dlopen lt_cv_dlopen_libs=-ldl -else - { $as_echo "$as_me:${as_lineno-$LINENO}: checking for dlopen in -lsvld" >&5 -$as_echo_n "checking for dlopen in -lsvld... " >&6; } -if ${ac_cv_lib_svld_dlopen+:} false; then : - $as_echo_n "(cached) " >&6 -else +else $as_nop + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for dlopen in -lsvld" >&5 +printf %s "checking for dlopen in -lsvld... " >&6; } +if test ${ac_cv_lib_svld_dlopen+y} +then : + printf %s "(cached) " >&6 +else $as_nop ac_check_lib_save_LIBS=$LIBS LIBS="-lsvld $LIBS" cat confdefs.h - <<_ACEOF >conftest.$ac_ext @@ -13245,37 +14015,37 @@ cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* Override any GCC internal prototype to avoid an error. Use char because int might match the return type of a GCC builtin and then its argument prototype would still apply. */ -#ifdef __cplusplus -extern "C" -#endif char dlopen (); int -main () +main (void) { return dlopen (); ; return 0; } _ACEOF -if ac_fn_c_try_link "$LINENO"; then : +if ac_fn_c_try_link "$LINENO" +then : ac_cv_lib_svld_dlopen=yes -else +else $as_nop ac_cv_lib_svld_dlopen=no fi -rm -f core conftest.err conftest.$ac_objext \ +rm -f core conftest.err conftest.$ac_objext conftest.beam \ conftest$ac_exeext conftest.$ac_ext LIBS=$ac_check_lib_save_LIBS fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_svld_dlopen" >&5 -$as_echo "$ac_cv_lib_svld_dlopen" >&6; } -if test "x$ac_cv_lib_svld_dlopen" = xyes; then : +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_svld_dlopen" >&5 +printf "%s\n" "$ac_cv_lib_svld_dlopen" >&6; } +if test "x$ac_cv_lib_svld_dlopen" = xyes +then : lt_cv_dlopen=dlopen lt_cv_dlopen_libs=-lsvld -else - { $as_echo "$as_me:${as_lineno-$LINENO}: checking for dld_link in -ldld" >&5 -$as_echo_n "checking for dld_link in -ldld... " >&6; } -if ${ac_cv_lib_dld_dld_link+:} false; then : - $as_echo_n "(cached) " >&6 -else +else $as_nop + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for dld_link in -ldld" >&5 +printf %s "checking for dld_link in -ldld... " >&6; } +if test ${ac_cv_lib_dld_dld_link+y} +then : + printf %s "(cached) " >&6 +else $as_nop ac_check_lib_save_LIBS=$LIBS LIBS="-ldld $LIBS" cat confdefs.h - <<_ACEOF >conftest.$ac_ext @@ -13284,30 +14054,29 @@ cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* Override any GCC internal prototype to avoid an error. Use char because int might match the return type of a GCC builtin and then its argument prototype would still apply. */ -#ifdef __cplusplus -extern "C" -#endif char dld_link (); int -main () +main (void) { return dld_link (); ; return 0; } _ACEOF -if ac_fn_c_try_link "$LINENO"; then : +if ac_fn_c_try_link "$LINENO" +then : ac_cv_lib_dld_dld_link=yes -else +else $as_nop ac_cv_lib_dld_dld_link=no fi -rm -f core conftest.err conftest.$ac_objext \ +rm -f core conftest.err conftest.$ac_objext conftest.beam \ conftest$ac_exeext conftest.$ac_ext LIBS=$ac_check_lib_save_LIBS fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_dld_dld_link" >&5 -$as_echo "$ac_cv_lib_dld_dld_link" >&6; } -if test "x$ac_cv_lib_dld_dld_link" = xyes; then : +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_dld_dld_link" >&5 +printf "%s\n" "$ac_cv_lib_dld_dld_link" >&6; } +if test "x$ac_cv_lib_dld_dld_link" = xyes +then : lt_cv_dlopen=dld_link lt_cv_dlopen_libs=-ldld fi @@ -13346,11 +14115,12 @@ fi save_LIBS=$LIBS LIBS="$lt_cv_dlopen_libs $LIBS" - { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether a program can dlopen itself" >&5 -$as_echo_n "checking whether a program can dlopen itself... " >&6; } -if ${lt_cv_dlopen_self+:} false; then : - $as_echo_n "(cached) " >&6 -else + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking whether a program can dlopen itself" >&5 +printf %s "checking whether a program can dlopen itself... " >&6; } +if test ${lt_cv_dlopen_self+y} +then : + printf %s "(cached) " >&6 +else $as_nop if test yes = "$cross_compiling"; then : lt_cv_dlopen_self=cross else @@ -13429,7 +14199,7 @@ _LT_EOF if { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_link\""; } >&5 (eval $ac_link) 2>&5 ac_status=$? - $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; } && test -s "conftest$ac_exeext" 2>/dev/null; then (./conftest; exit; ) >&5 2>/dev/null lt_status=$? @@ -13447,16 +14217,17 @@ rm -fr conftest* fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_dlopen_self" >&5 -$as_echo "$lt_cv_dlopen_self" >&6; } +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $lt_cv_dlopen_self" >&5 +printf "%s\n" "$lt_cv_dlopen_self" >&6; } if test yes = "$lt_cv_dlopen_self"; then wl=$lt_prog_compiler_wl eval LDFLAGS=\"\$LDFLAGS $lt_prog_compiler_static\" - { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether a statically linked program can dlopen itself" >&5 -$as_echo_n "checking whether a statically linked program can dlopen itself... " >&6; } -if ${lt_cv_dlopen_self_static+:} false; then : - $as_echo_n "(cached) " >&6 -else + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking whether a statically linked program can dlopen itself" >&5 +printf %s "checking whether a statically linked program can dlopen itself... " >&6; } +if test ${lt_cv_dlopen_self_static+y} +then : + printf %s "(cached) " >&6 +else $as_nop if test yes = "$cross_compiling"; then : lt_cv_dlopen_self_static=cross else @@ -13535,7 +14306,7 @@ _LT_EOF if { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_link\""; } >&5 (eval $ac_link) 2>&5 ac_status=$? - $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; } && test -s "conftest$ac_exeext" 2>/dev/null; then (./conftest; exit; ) >&5 2>/dev/null lt_status=$? @@ -13553,8 +14324,8 @@ rm -fr conftest* fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_dlopen_self_static" >&5 -$as_echo "$lt_cv_dlopen_self_static" >&6; } +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $lt_cv_dlopen_self_static" >&5 +printf "%s\n" "$lt_cv_dlopen_self_static" >&6; } fi CPPFLAGS=$save_CPPFLAGS @@ -13592,13 +14363,13 @@ fi striplib= old_striplib= -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether stripping libraries is possible" >&5 -$as_echo_n "checking whether stripping libraries is possible... " >&6; } +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking whether stripping libraries is possible" >&5 +printf %s "checking whether stripping libraries is possible... " >&6; } if test -n "$STRIP" && $STRIP -V 2>&1 | $GREP "GNU strip" >/dev/null; then test -z "$old_striplib" && old_striplib="$STRIP --strip-debug" test -z "$striplib" && striplib="$STRIP --strip-unneeded" - { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 -$as_echo "yes" >&6; } + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5 +printf "%s\n" "yes" >&6; } else # FIXME - insert some real tests, host_os isn't really good enough case $host_os in @@ -13606,16 +14377,16 @@ else if test -n "$STRIP"; then striplib="$STRIP -x" old_striplib="$STRIP -S" - { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 -$as_echo "yes" >&6; } + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5 +printf "%s\n" "yes" >&6; } else - { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 -$as_echo "no" >&6; } + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 +printf "%s\n" "no" >&6; } fi ;; *) - { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 -$as_echo "no" >&6; } + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 +printf "%s\n" "no" >&6; } ;; esac fi @@ -13632,13 +14403,13 @@ fi # Report what library types will actually be built - { $as_echo "$as_me:${as_lineno-$LINENO}: checking if libtool supports shared libraries" >&5 -$as_echo_n "checking if libtool supports shared libraries... " >&6; } - { $as_echo "$as_me:${as_lineno-$LINENO}: result: $can_build_shared" >&5 -$as_echo "$can_build_shared" >&6; } + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking if libtool supports shared libraries" >&5 +printf %s "checking if libtool supports shared libraries... " >&6; } + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $can_build_shared" >&5 +printf "%s\n" "$can_build_shared" >&6; } - { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether to build shared libraries" >&5 -$as_echo_n "checking whether to build shared libraries... " >&6; } + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking whether to build shared libraries" >&5 +printf %s "checking whether to build shared libraries... " >&6; } test no = "$can_build_shared" && enable_shared=no # On AIX, shared libraries and static libraries use the same namespace, and @@ -13662,15 +14433,15 @@ $as_echo_n "checking whether to build shared libraries... " >&6; } fi ;; esac - { $as_echo "$as_me:${as_lineno-$LINENO}: result: $enable_shared" >&5 -$as_echo "$enable_shared" >&6; } + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $enable_shared" >&5 +printf "%s\n" "$enable_shared" >&6; } - { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether to build static libraries" >&5 -$as_echo_n "checking whether to build static libraries... " >&6; } + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking whether to build static libraries" >&5 +printf %s "checking whether to build static libraries... " >&6; } # Make sure either enable_shared or enable_static is yes. test yes = "$enable_shared" || enable_static=yes - { $as_echo "$as_me:${as_lineno-$LINENO}: result: $enable_static" >&5 -$as_echo "$enable_static" >&6; } + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $enable_static" >&5 +printf "%s\n" "$enable_static" >&6; } @@ -13708,45 +14479,88 @@ CC=$lt_save_CC # Checks for header files. -for ac_header in libavformat/avformat.h libavcodec/avcodec.h libavfilter/avfilter.h libavutil/avutil.h libswresample/swresample.h + for ac_header in libavformat/avformat.h libavcodec/avcodec.h libavfilter/avfilter.h libavutil/avutil.h libswresample/swresample.h do : - as_ac_Header=`$as_echo "ac_cv_header_$ac_header" | $as_tr_sh` -ac_fn_c_check_header_mongrel "$LINENO" "$ac_header" "$as_ac_Header" "$ac_includes_default" -if eval test \"x\$"$as_ac_Header"\" = x"yes"; then : + as_ac_Header=`printf "%s\n" "ac_cv_header_$ac_header" | $as_tr_sh` +ac_fn_c_check_header_compile "$LINENO" "$ac_header" "$as_ac_Header" "$ac_includes_default" +if eval test \"x\$"$as_ac_Header"\" = x"yes" +then : cat >>confdefs.h <<_ACEOF -#define `$as_echo "HAVE_$ac_header" | $as_tr_cpp` 1 +#define `printf "%s\n" "HAVE_$ac_header" | $as_tr_cpp` 1 _ACEOF -else +else $as_nop as_fn_error $? "unable to find ffmpeg headers" "$LINENO" 5 fi done +ac_fn_c_check_header_compile "$LINENO" "fcntl.h" "ac_cv_header_fcntl_h" "$ac_includes_default" +if test "x$ac_cv_header_fcntl_h" = xyes +then : + printf "%s\n" "#define HAVE_FCNTL_H 1" >>confdefs.h -for ac_header in fcntl.h limits.h stdint.h stdlib.h string.h sys/ioctl.h sys/time.h termios.h unistd.h -do : - as_ac_Header=`$as_echo "ac_cv_header_$ac_header" | $as_tr_sh` -ac_fn_c_check_header_mongrel "$LINENO" "$ac_header" "$as_ac_Header" "$ac_includes_default" -if eval test \"x\$"$as_ac_Header"\" = x"yes"; then : - cat >>confdefs.h <<_ACEOF -#define `$as_echo "HAVE_$ac_header" | $as_tr_cpp` 1 -_ACEOF +fi +ac_fn_c_check_header_compile "$LINENO" "limits.h" "ac_cv_header_limits_h" "$ac_includes_default" +if test "x$ac_cv_header_limits_h" = xyes +then : + printf "%s\n" "#define HAVE_LIMITS_H 1" >>confdefs.h fi +ac_fn_c_check_header_compile "$LINENO" "stdint.h" "ac_cv_header_stdint_h" "$ac_includes_default" +if test "x$ac_cv_header_stdint_h" = xyes +then : + printf "%s\n" "#define HAVE_STDINT_H 1" >>confdefs.h -done +fi +ac_fn_c_check_header_compile "$LINENO" "stdlib.h" "ac_cv_header_stdlib_h" "$ac_includes_default" +if test "x$ac_cv_header_stdlib_h" = xyes +then : + printf "%s\n" "#define HAVE_STDLIB_H 1" >>confdefs.h + +fi +ac_fn_c_check_header_compile "$LINENO" "string.h" "ac_cv_header_string_h" "$ac_includes_default" +if test "x$ac_cv_header_string_h" = xyes +then : + printf "%s\n" "#define HAVE_STRING_H 1" >>confdefs.h + +fi +ac_fn_c_check_header_compile "$LINENO" "sys/ioctl.h" "ac_cv_header_sys_ioctl_h" "$ac_includes_default" +if test "x$ac_cv_header_sys_ioctl_h" = xyes +then : + printf "%s\n" "#define HAVE_SYS_IOCTL_H 1" >>confdefs.h + +fi +ac_fn_c_check_header_compile "$LINENO" "sys/time.h" "ac_cv_header_sys_time_h" "$ac_includes_default" +if test "x$ac_cv_header_sys_time_h" = xyes +then : + printf "%s\n" "#define HAVE_SYS_TIME_H 1" >>confdefs.h + +fi +ac_fn_c_check_header_compile "$LINENO" "termios.h" "ac_cv_header_termios_h" "$ac_includes_default" +if test "x$ac_cv_header_termios_h" = xyes +then : + printf "%s\n" "#define HAVE_TERMIOS_H 1" >>confdefs.h + +fi +ac_fn_c_check_header_compile "$LINENO" "unistd.h" "ac_cv_header_unistd_h" "$ac_includes_default" +if test "x$ac_cv_header_unistd_h" = xyes +then : + printf "%s\n" "#define HAVE_UNISTD_H 1" >>confdefs.h + +fi # Check whether --enable-videotoolbox was given. -if test "${enable_videotoolbox+set}" = set; then : +if test ${enable_videotoolbox+y} +then : enableval=$enable_videotoolbox; case "${enableval}" in yes) videotoolbox=true ;; no) videotoolbox=false ;; *) as_fn_error $? "bad value ${enableval} for --enable-videotoolbox" "$LINENO" 5 ;; esac -else +else $as_nop videotoolbox=false fi @@ -13760,32 +14574,34 @@ fi # Checks for typedefs, structures, and compiler characteristics. -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for inline" >&5 -$as_echo_n "checking for inline... " >&6; } -if ${ac_cv_c_inline+:} false; then : - $as_echo_n "(cached) " >&6 -else +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for inline" >&5 +printf %s "checking for inline... " >&6; } +if test ${ac_cv_c_inline+y} +then : + printf %s "(cached) " >&6 +else $as_nop ac_cv_c_inline=no for ac_kw in inline __inline__ __inline; do cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #ifndef __cplusplus typedef int foo_t; -static $ac_kw foo_t static_foo () {return 0; } -$ac_kw foo_t foo () {return 0; } +static $ac_kw foo_t static_foo (void) {return 0; } +$ac_kw foo_t foo (void) {return 0; } #endif _ACEOF -if ac_fn_c_try_compile "$LINENO"; then : +if ac_fn_c_try_compile "$LINENO" +then : ac_cv_c_inline=$ac_kw fi -rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext +rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext test "$ac_cv_c_inline" != no && break done fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_c_inline" >&5 -$as_echo "$ac_cv_c_inline" >&6; } +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_c_inline" >&5 +printf "%s\n" "$ac_cv_c_inline" >&6; } case $ac_cv_c_inline in inline | yes) ;; @@ -13807,9 +14623,7 @@ case $ac_cv_c_int32_t in #( no|yes) ;; #( *) -cat >>confdefs.h <<_ACEOF -#define int32_t $ac_cv_c_int32_t -_ACEOF +printf "%s\n" "#define int32_t $ac_cv_c_int32_t" >>confdefs.h ;; esac @@ -13818,9 +14632,7 @@ case $ac_cv_c_int64_t in #( no|yes) ;; #( *) -cat >>confdefs.h <<_ACEOF -#define int64_t $ac_cv_c_int64_t -_ACEOF +printf "%s\n" "#define int64_t $ac_cv_c_int64_t" >>confdefs.h ;; esac @@ -13829,20 +14641,17 @@ case $ac_cv_c_int8_t in #( no|yes) ;; #( *) -cat >>confdefs.h <<_ACEOF -#define int8_t $ac_cv_c_int8_t -_ACEOF +printf "%s\n" "#define int8_t $ac_cv_c_int8_t" >>confdefs.h ;; esac ac_fn_c_check_type "$LINENO" "size_t" "ac_cv_type_size_t" "$ac_includes_default" -if test "x$ac_cv_type_size_t" = xyes; then : +if test "x$ac_cv_type_size_t" = xyes +then : -else +else $as_nop -cat >>confdefs.h <<_ACEOF -#define size_t unsigned int -_ACEOF +printf "%s\n" "#define size_t unsigned int" >>confdefs.h fi @@ -13852,9 +14661,7 @@ case $ac_cv_c_uint16_t in #( *) -cat >>confdefs.h <<_ACEOF -#define uint16_t $ac_cv_c_uint16_t -_ACEOF +printf "%s\n" "#define uint16_t $ac_cv_c_uint16_t" >>confdefs.h ;; esac @@ -13863,12 +14670,10 @@ case $ac_cv_c_uint32_t in #( no|yes) ;; #( *) -$as_echo "#define _UINT32_T 1" >>confdefs.h +printf "%s\n" "#define _UINT32_T 1" >>confdefs.h -cat >>confdefs.h <<_ACEOF -#define uint32_t $ac_cv_c_uint32_t -_ACEOF +printf "%s\n" "#define uint32_t $ac_cv_c_uint32_t" >>confdefs.h ;; esac @@ -13877,12 +14682,10 @@ case $ac_cv_c_uint64_t in #( no|yes) ;; #( *) -$as_echo "#define _UINT64_T 1" >>confdefs.h +printf "%s\n" "#define _UINT64_T 1" >>confdefs.h -cat >>confdefs.h <<_ACEOF -#define uint64_t $ac_cv_c_uint64_t -_ACEOF +printf "%s\n" "#define uint64_t $ac_cv_c_uint64_t" >>confdefs.h ;; esac @@ -13891,28 +14694,105 @@ case $ac_cv_c_uint8_t in #( no|yes) ;; #( *) -$as_echo "#define _UINT8_T 1" >>confdefs.h +printf "%s\n" "#define _UINT8_T 1" >>confdefs.h -cat >>confdefs.h <<_ACEOF -#define uint8_t $ac_cv_c_uint8_t -_ACEOF +printf "%s\n" "#define uint8_t $ac_cv_c_uint8_t" >>confdefs.h ;; esac # Checks for library functions. -for ac_func in dup2 floor memmove memset select strchr strcspn strerror strrchr strstr strtol malloc strcpy strlen vsnprintf -do : - as_ac_var=`$as_echo "ac_cv_func_$ac_func" | $as_tr_sh` -ac_fn_c_check_func "$LINENO" "$ac_func" "$as_ac_var" -if eval test \"x\$"$as_ac_var"\" = x"yes"; then : - cat >>confdefs.h <<_ACEOF -#define `$as_echo "HAVE_$ac_func" | $as_tr_cpp` 1 -_ACEOF +ac_fn_c_check_func "$LINENO" "dup2" "ac_cv_func_dup2" +if test "x$ac_cv_func_dup2" = xyes +then : + printf "%s\n" "#define HAVE_DUP2 1" >>confdefs.h + +fi +ac_fn_c_check_func "$LINENO" "floor" "ac_cv_func_floor" +if test "x$ac_cv_func_floor" = xyes +then : + printf "%s\n" "#define HAVE_FLOOR 1" >>confdefs.h + +fi +ac_fn_c_check_func "$LINENO" "memmove" "ac_cv_func_memmove" +if test "x$ac_cv_func_memmove" = xyes +then : + printf "%s\n" "#define HAVE_MEMMOVE 1" >>confdefs.h + +fi +ac_fn_c_check_func "$LINENO" "memset" "ac_cv_func_memset" +if test "x$ac_cv_func_memset" = xyes +then : + printf "%s\n" "#define HAVE_MEMSET 1" >>confdefs.h + +fi +ac_fn_c_check_func "$LINENO" "select" "ac_cv_func_select" +if test "x$ac_cv_func_select" = xyes +then : + printf "%s\n" "#define HAVE_SELECT 1" >>confdefs.h + +fi +ac_fn_c_check_func "$LINENO" "strchr" "ac_cv_func_strchr" +if test "x$ac_cv_func_strchr" = xyes +then : + printf "%s\n" "#define HAVE_STRCHR 1" >>confdefs.h + +fi +ac_fn_c_check_func "$LINENO" "strcspn" "ac_cv_func_strcspn" +if test "x$ac_cv_func_strcspn" = xyes +then : + printf "%s\n" "#define HAVE_STRCSPN 1" >>confdefs.h + +fi +ac_fn_c_check_func "$LINENO" "strerror" "ac_cv_func_strerror" +if test "x$ac_cv_func_strerror" = xyes +then : + printf "%s\n" "#define HAVE_STRERROR 1" >>confdefs.h + +fi +ac_fn_c_check_func "$LINENO" "strrchr" "ac_cv_func_strrchr" +if test "x$ac_cv_func_strrchr" = xyes +then : + printf "%s\n" "#define HAVE_STRRCHR 1" >>confdefs.h + +fi +ac_fn_c_check_func "$LINENO" "strstr" "ac_cv_func_strstr" +if test "x$ac_cv_func_strstr" = xyes +then : + printf "%s\n" "#define HAVE_STRSTR 1" >>confdefs.h + +fi +ac_fn_c_check_func "$LINENO" "strtol" "ac_cv_func_strtol" +if test "x$ac_cv_func_strtol" = xyes +then : + printf "%s\n" "#define HAVE_STRTOL 1" >>confdefs.h + +fi +ac_fn_c_check_func "$LINENO" "malloc" "ac_cv_func_malloc" +if test "x$ac_cv_func_malloc" = xyes +then : + printf "%s\n" "#define HAVE_MALLOC 1" >>confdefs.h + +fi +ac_fn_c_check_func "$LINENO" "strcpy" "ac_cv_func_strcpy" +if test "x$ac_cv_func_strcpy" = xyes +then : + printf "%s\n" "#define HAVE_STRCPY 1" >>confdefs.h + +fi +ac_fn_c_check_func "$LINENO" "strlen" "ac_cv_func_strlen" +if test "x$ac_cv_func_strlen" = xyes +then : + printf "%s\n" "#define HAVE_STRLEN 1" >>confdefs.h + +fi +ac_fn_c_check_func "$LINENO" "vsnprintf" "ac_cv_func_vsnprintf" +if test "x$ac_cv_func_vsnprintf" = xyes +then : + printf "%s\n" "#define HAVE_VSNPRINTF 1" >>confdefs.h fi -done ac_config_files="$ac_config_files Makefile src/Makefile" @@ -13945,8 +14825,8 @@ _ACEOF case $ac_val in #( *${as_nl}*) case $ac_var in #( - *_cv_*) { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: cache variable $ac_var contains a newline" >&5 -$as_echo "$as_me: WARNING: cache variable $ac_var contains a newline" >&2;} ;; + *_cv_*) { printf "%s\n" "$as_me:${as_lineno-$LINENO}: WARNING: cache variable $ac_var contains a newline" >&5 +printf "%s\n" "$as_me: WARNING: cache variable $ac_var contains a newline" >&2;} ;; esac case $ac_var in #( _ | IFS | as_nl) ;; #( @@ -13976,15 +14856,15 @@ $as_echo "$as_me: WARNING: cache variable $ac_var contains a newline" >&2;} ;; /^ac_cv_env_/b end t clear :clear - s/^\([^=]*\)=\(.*[{}].*\)$/test "${\1+set}" = set || &/ + s/^\([^=]*\)=\(.*[{}].*\)$/test ${\1+y} || &/ t end s/^\([^=]*\)=\(.*\)$/\1=${\1=\2}/ :end' >>confcache if diff "$cache_file" confcache >/dev/null 2>&1; then :; else if test -w "$cache_file"; then if test "x$cache_file" != "x/dev/null"; then - { $as_echo "$as_me:${as_lineno-$LINENO}: updating cache $cache_file" >&5 -$as_echo "$as_me: updating cache $cache_file" >&6;} + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: updating cache $cache_file" >&5 +printf "%s\n" "$as_me: updating cache $cache_file" >&6;} if test ! -f "$cache_file" || test -h "$cache_file"; then cat confcache >"$cache_file" else @@ -13998,8 +14878,8 @@ $as_echo "$as_me: updating cache $cache_file" >&6;} fi fi else - { $as_echo "$as_me:${as_lineno-$LINENO}: not updating unwritable cache $cache_file" >&5 -$as_echo "$as_me: not updating unwritable cache $cache_file" >&6;} + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: not updating unwritable cache $cache_file" >&5 +printf "%s\n" "$as_me: not updating unwritable cache $cache_file" >&6;} fi fi rm -f confcache @@ -14052,7 +14932,7 @@ U= for ac_i in : $LIBOBJS; do test "x$ac_i" = x: && continue # 1. Remove the extension, and $U if already installed. ac_script='s/\$U\././;s/\.o$//;s/\.obj$//' - ac_i=`$as_echo "$ac_i" | sed "$ac_script"` + ac_i=`printf "%s\n" "$ac_i" | sed "$ac_script"` # 2. Prepend LIBOBJDIR. When used with automake>=1.10 LIBOBJDIR # will be set to the directory where LIBOBJS objects are built. as_fn_append ac_libobjs " \${LIBOBJDIR}$ac_i\$U.$ac_objext" @@ -14063,14 +14943,14 @@ LIBOBJS=$ac_libobjs LTLIBOBJS=$ac_ltlibobjs -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking that generated files are newer than configure" >&5 -$as_echo_n "checking that generated files are newer than configure... " >&6; } +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking that generated files are newer than configure" >&5 +printf %s "checking that generated files are newer than configure... " >&6; } if test -n "$am_sleep_pid"; then # Hide warnings about reused PIDs. wait $am_sleep_pid 2>/dev/null fi - { $as_echo "$as_me:${as_lineno-$LINENO}: result: done" >&5 -$as_echo "done" >&6; } + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: done" >&5 +printf "%s\n" "done" >&6; } if test -n "$EXEEXT"; then am__EXEEXT_TRUE= am__EXEEXT_FALSE='#' @@ -14109,8 +14989,8 @@ fi ac_write_fail=0 ac_clean_files_save=$ac_clean_files ac_clean_files="$ac_clean_files $CONFIG_STATUS" -{ $as_echo "$as_me:${as_lineno-$LINENO}: creating $CONFIG_STATUS" >&5 -$as_echo "$as_me: creating $CONFIG_STATUS" >&6;} +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: creating $CONFIG_STATUS" >&5 +printf "%s\n" "$as_me: creating $CONFIG_STATUS" >&6;} as_write_fail=0 cat >$CONFIG_STATUS <<_ASEOF || as_write_fail=1 #! $SHELL @@ -14133,14 +15013,16 @@ cat >>$CONFIG_STATUS <<\_ASEOF || as_write_fail=1 # Be more Bourne compatible DUALCASE=1; export DUALCASE # for MKS sh -if test -n "${ZSH_VERSION+set}" && (emulate sh) >/dev/null 2>&1; then : +as_nop=: +if test ${ZSH_VERSION+y} && (emulate sh) >/dev/null 2>&1 +then : emulate sh NULLCMD=: # Pre-4.2 versions of Zsh do word splitting on ${1+"$@"}, which # is contrary to our usage. Disable this feature. alias -g '${1+"$@"}'='"$@"' setopt NO_GLOB_SUBST -else +else $as_nop case `(set -o) 2>/dev/null` in #( *posix*) : set -o posix ;; #( @@ -14150,46 +15032,46 @@ esac fi + +# Reset variables that may have inherited troublesome values from +# the environment. + +# IFS needs to be set, to space, tab, and newline, in precisely that order. +# (If _AS_PATH_WALK were called with IFS unset, it would have the +# side effect of setting IFS to empty, thus disabling word splitting.) +# Quoting is to prevent editors from complaining about space-tab. as_nl=' ' export as_nl -# Printing a long string crashes Solaris 7 /usr/bin/printf. -as_echo='\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\' -as_echo=$as_echo$as_echo$as_echo$as_echo$as_echo -as_echo=$as_echo$as_echo$as_echo$as_echo$as_echo$as_echo -# Prefer a ksh shell builtin over an external printf program on Solaris, -# but without wasting forks for bash or zsh. -if test -z "$BASH_VERSION$ZSH_VERSION" \ - && (test "X`print -r -- $as_echo`" = "X$as_echo") 2>/dev/null; then - as_echo='print -r --' - as_echo_n='print -rn --' -elif (test "X`printf %s $as_echo`" = "X$as_echo") 2>/dev/null; then - as_echo='printf %s\n' - as_echo_n='printf %s' -else - if test "X`(/usr/ucb/echo -n -n $as_echo) 2>/dev/null`" = "X-n $as_echo"; then - as_echo_body='eval /usr/ucb/echo -n "$1$as_nl"' - as_echo_n='/usr/ucb/echo -n' - else - as_echo_body='eval expr "X$1" : "X\\(.*\\)"' - as_echo_n_body='eval - arg=$1; - case $arg in #( - *"$as_nl"*) - expr "X$arg" : "X\\(.*\\)$as_nl"; - arg=`expr "X$arg" : ".*$as_nl\\(.*\\)"`;; - esac; - expr "X$arg" : "X\\(.*\\)" | tr -d "$as_nl" - ' - export as_echo_n_body - as_echo_n='sh -c $as_echo_n_body as_echo' - fi - export as_echo_body - as_echo='sh -c $as_echo_body as_echo' -fi +IFS=" "" $as_nl" + +PS1='$ ' +PS2='> ' +PS4='+ ' + +# Ensure predictable behavior from utilities with locale-dependent output. +LC_ALL=C +export LC_ALL +LANGUAGE=C +export LANGUAGE + +# We cannot yet rely on "unset" to work, but we need these variables +# to be unset--not just set to an empty or harmless value--now, to +# avoid bugs in old shells (e.g. pre-3.0 UWIN ksh). This construct +# also avoids known problems related to "unset" and subshell syntax +# in other old shells (e.g. bash 2.01 and pdksh 5.2.14). +for as_var in BASH_ENV ENV MAIL MAILPATH CDPATH +do eval test \${$as_var+y} \ + && ( (unset $as_var) || exit 1) >/dev/null 2>&1 && unset $as_var || : +done + +# Ensure that fds 0, 1, and 2 are open. +if (exec 3>&0) 2>/dev/null; then :; else exec 0&1) 2>/dev/null; then :; else exec 1>/dev/null; fi +if (exec 3>&2) ; then :; else exec 2>/dev/null; fi # The user is always right. -if test "${PATH_SEPARATOR+set}" != set; then +if ${PATH_SEPARATOR+false} :; then PATH_SEPARATOR=: (PATH='/bin;/bin'; FPATH=$PATH; sh -c :) >/dev/null 2>&1 && { (PATH='/bin:/bin'; FPATH=$PATH; sh -c :) >/dev/null 2>&1 || @@ -14198,13 +15080,6 @@ if test "${PATH_SEPARATOR+set}" != set; then fi -# IFS -# We need space, tab and new line, in precisely that order. Quoting is -# there to prevent editors from complaining about space-tab. -# (If _AS_PATH_WALK were called with IFS unset, it would disable word -# splitting by setting IFS to empty value.) -IFS=" "" $as_nl" - # Find who we are. Look in the path if we contain no directory separator. as_myself= case $0 in #(( @@ -14213,8 +15088,12 @@ case $0 in #(( for as_dir in $PATH do IFS=$as_save_IFS - test -z "$as_dir" && as_dir=. - test -r "$as_dir/$0" && as_myself=$as_dir/$0 && break + case $as_dir in #((( + '') as_dir=./ ;; + */) ;; + *) as_dir=$as_dir/ ;; + esac + test -r "$as_dir$0" && as_myself=$as_dir$0 && break done IFS=$as_save_IFS @@ -14226,30 +15105,10 @@ if test "x$as_myself" = x; then as_myself=$0 fi if test ! -f "$as_myself"; then - $as_echo "$as_myself: error: cannot find myself; rerun with an absolute file name" >&2 + printf "%s\n" "$as_myself: error: cannot find myself; rerun with an absolute file name" >&2 exit 1 fi -# Unset variables that we do not need and which cause bugs (e.g. in -# pre-3.0 UWIN ksh). But do not cause bugs in bash 2.01; the "|| exit 1" -# suppresses any "Segmentation fault" message there. '((' could -# trigger a bug in pdksh 5.2.14. -for as_var in BASH_ENV ENV MAIL MAILPATH -do eval test x\${$as_var+set} = xset \ - && ( (unset $as_var) || exit 1) >/dev/null 2>&1 && unset $as_var || : -done -PS1='$ ' -PS2='> ' -PS4='+ ' - -# NLS nuisances. -LC_ALL=C -export LC_ALL -LANGUAGE=C -export LANGUAGE - -# CDPATH. -(unset CDPATH) >/dev/null 2>&1 && unset CDPATH # as_fn_error STATUS ERROR [LINENO LOG_FD] @@ -14262,13 +15121,14 @@ as_fn_error () as_status=$1; test $as_status -eq 0 && as_status=1 if test "$4"; then as_lineno=${as_lineno-"$3"} as_lineno_stack=as_lineno_stack=$as_lineno_stack - $as_echo "$as_me:${as_lineno-$LINENO}: error: $2" >&$4 + printf "%s\n" "$as_me:${as_lineno-$LINENO}: error: $2" >&$4 fi - $as_echo "$as_me: error: $2" >&2 + printf "%s\n" "$as_me: error: $2" >&2 as_fn_exit $as_status } # as_fn_error + # as_fn_set_status STATUS # ----------------------- # Set $? to STATUS, without forking. @@ -14295,18 +15155,20 @@ as_fn_unset () { eval $1=; unset $1;} } as_unset=as_fn_unset + # as_fn_append VAR VALUE # ---------------------- # Append the text in VALUE to the end of the definition contained in VAR. Take # advantage of any shell optimizations that allow amortized linear growth over # repeated appends, instead of the typical quadratic growth present in naive # implementations. -if (eval "as_var=1; as_var+=2; test x\$as_var = x12") 2>/dev/null; then : +if (eval "as_var=1; as_var+=2; test x\$as_var = x12") 2>/dev/null +then : eval 'as_fn_append () { eval $1+=\$2 }' -else +else $as_nop as_fn_append () { eval $1=\$$1\$2 @@ -14318,12 +15180,13 @@ fi # as_fn_append # Perform arithmetic evaluation on the ARGs, and store the result in the # global $as_val. Take advantage of shells that can avoid forks. The arguments # must be portable across $(()) and expr. -if (eval "test \$(( 1 + 1 )) = 2") 2>/dev/null; then : +if (eval "test \$(( 1 + 1 )) = 2") 2>/dev/null +then : eval 'as_fn_arith () { as_val=$(( $* )) }' -else +else $as_nop as_fn_arith () { as_val=`expr "$@" || test $? -eq 1` @@ -14354,7 +15217,7 @@ as_me=`$as_basename -- "$0" || $as_expr X/"$0" : '.*/\([^/][^/]*\)/*$' \| \ X"$0" : 'X\(//\)$' \| \ X"$0" : 'X\(/\)' \| . 2>/dev/null || -$as_echo X/"$0" | +printf "%s\n" X/"$0" | sed '/^.*\/\([^/][^/]*\)\/*$/{ s//\1/ q @@ -14376,6 +15239,10 @@ as_cr_Letters=$as_cr_letters$as_cr_LETTERS as_cr_digits='0123456789' as_cr_alnum=$as_cr_Letters$as_cr_digits + +# Determine whether it's possible to make 'echo' print without a newline. +# These variables are no longer used directly by Autoconf, but are AC_SUBSTed +# for compatibility with existing Makefiles. ECHO_C= ECHO_N= ECHO_T= case `echo -n x` in #((((( -n*) @@ -14389,6 +15256,12 @@ case `echo -n x` in #((((( ECHO_N='-n';; esac +# For backward compatibility with old third-party macros, we provide +# the shell variables $as_echo and $as_echo_n. New code should use +# AS_ECHO(["message"]) and AS_ECHO_N(["message"]), respectively. +as_echo='printf %s\n' +as_echo_n='printf %s' + rm -f conf$$ conf$$.exe conf$$.file if test -d conf$$.dir; then rm -f conf$$.dir/conf$$.file @@ -14430,7 +15303,7 @@ as_fn_mkdir_p () as_dirs= while :; do case $as_dir in #( - *\'*) as_qdir=`$as_echo "$as_dir" | sed "s/'/'\\\\\\\\''/g"`;; #'( + *\'*) as_qdir=`printf "%s\n" "$as_dir" | sed "s/'/'\\\\\\\\''/g"`;; #'( *) as_qdir=$as_dir;; esac as_dirs="'$as_qdir' $as_dirs" @@ -14439,7 +15312,7 @@ $as_expr X"$as_dir" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ X"$as_dir" : 'X\(//\)[^/]' \| \ X"$as_dir" : 'X\(//\)$' \| \ X"$as_dir" : 'X\(/\)' \| . 2>/dev/null || -$as_echo X"$as_dir" | +printf "%s\n" X"$as_dir" | sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ s//\1/ q @@ -14501,8 +15374,8 @@ cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1 # report actual input values of CONFIG_FILES etc. instead of their # values after options handling. ac_log=" -This file was extended by ffmpeg-kit $as_me 4.4, which was -generated by GNU Autoconf 2.69. Invocation command line was +This file was extended by ffmpeg-kit $as_me 4.5, which was +generated by GNU Autoconf 2.71. Invocation command line was CONFIG_FILES = $CONFIG_FILES CONFIG_HEADERS = $CONFIG_HEADERS @@ -14555,14 +15428,16 @@ $config_commands Report bugs to ." _ACEOF +ac_cs_config=`printf "%s\n" "$ac_configure_args" | sed "$ac_safe_unquote"` +ac_cs_config_escaped=`printf "%s\n" "$ac_cs_config" | sed "s/^ //; s/'/'\\\\\\\\''/g"` cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 -ac_cs_config="`$as_echo "$ac_configure_args" | sed 's/^ //; s/[\\""\`\$]/\\\\&/g'`" +ac_cs_config='$ac_cs_config_escaped' ac_cs_version="\\ -ffmpeg-kit config.status 4.4 -configured by $0, generated by GNU Autoconf 2.69, +ffmpeg-kit config.status 4.5 +configured by $0, generated by GNU Autoconf 2.71, with options \\"\$ac_cs_config\\" -Copyright (C) 2012 Free Software Foundation, Inc. +Copyright (C) 2021 Free Software Foundation, Inc. This config.status script is free software; the Free Software Foundation gives unlimited permission to copy, distribute and modify it." @@ -14602,21 +15477,21 @@ do -recheck | --recheck | --rechec | --reche | --rech | --rec | --re | --r) ac_cs_recheck=: ;; --version | --versio | --versi | --vers | --ver | --ve | --v | -V ) - $as_echo "$ac_cs_version"; exit ;; + printf "%s\n" "$ac_cs_version"; exit ;; --config | --confi | --conf | --con | --co | --c ) - $as_echo "$ac_cs_config"; exit ;; + printf "%s\n" "$ac_cs_config"; exit ;; --debug | --debu | --deb | --de | --d | -d ) debug=: ;; --file | --fil | --fi | --f ) $ac_shift case $ac_optarg in - *\'*) ac_optarg=`$as_echo "$ac_optarg" | sed "s/'/'\\\\\\\\''/g"` ;; + *\'*) ac_optarg=`printf "%s\n" "$ac_optarg" | sed "s/'/'\\\\\\\\''/g"` ;; '') as_fn_error $? "missing file argument" ;; esac as_fn_append CONFIG_FILES " '$ac_optarg'" ac_need_defaults=false;; --he | --h | --help | --hel | -h ) - $as_echo "$ac_cs_usage"; exit ;; + printf "%s\n" "$ac_cs_usage"; exit ;; -q | -quiet | --quiet | --quie | --qui | --qu | --q \ | -silent | --silent | --silen | --sile | --sil | --si | --s) ac_cs_silent=: ;; @@ -14644,7 +15519,7 @@ cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 if \$ac_cs_recheck; then set X $SHELL '$0' $ac_configure_args \$ac_configure_extra_args --no-create --no-recursion shift - \$as_echo "running CONFIG_SHELL=$SHELL \$*" >&6 + \printf "%s\n" "running CONFIG_SHELL=$SHELL \$*" >&6 CONFIG_SHELL='$SHELL' export CONFIG_SHELL exec "\$@" @@ -14658,7 +15533,7 @@ exec 5>>config.log sed 'h;s/./-/g;s/^.../## /;s/...$/ ##/;p;x;p;x' <<_ASBOX ## Running $as_me. ## _ASBOX - $as_echo "$ac_log" + printf "%s\n" "$ac_log" } >&5 _ACEOF @@ -14974,8 +15849,8 @@ done # We use the long form for the default assignment because of an extremely # bizarre bug on SunOS 4.1.3. if $ac_need_defaults; then - test "${CONFIG_FILES+set}" = set || CONFIG_FILES=$config_files - test "${CONFIG_COMMANDS+set}" = set || CONFIG_COMMANDS=$config_commands + test ${CONFIG_FILES+y} || CONFIG_FILES=$config_files + test ${CONFIG_COMMANDS+y} || CONFIG_COMMANDS=$config_commands fi # Have a temporary directory for convenience. Make it in the build tree @@ -15203,7 +16078,7 @@ do esac || as_fn_error 1 "cannot find input file: \`$ac_f'" "$LINENO" 5;; esac - case $ac_f in *\'*) ac_f=`$as_echo "$ac_f" | sed "s/'/'\\\\\\\\''/g"`;; esac + case $ac_f in *\'*) ac_f=`printf "%s\n" "$ac_f" | sed "s/'/'\\\\\\\\''/g"`;; esac as_fn_append ac_file_inputs " '$ac_f'" done @@ -15211,17 +16086,17 @@ do # use $as_me), people would be surprised to read: # /* config.h. Generated by config.status. */ configure_input='Generated from '` - $as_echo "$*" | sed 's|^[^:]*/||;s|:[^:]*/|, |g' + printf "%s\n" "$*" | sed 's|^[^:]*/||;s|:[^:]*/|, |g' `' by configure.' if test x"$ac_file" != x-; then configure_input="$ac_file. $configure_input" - { $as_echo "$as_me:${as_lineno-$LINENO}: creating $ac_file" >&5 -$as_echo "$as_me: creating $ac_file" >&6;} + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: creating $ac_file" >&5 +printf "%s\n" "$as_me: creating $ac_file" >&6;} fi # Neutralize special characters interpreted by sed in replacement strings. case $configure_input in #( *\&* | *\|* | *\\* ) - ac_sed_conf_input=`$as_echo "$configure_input" | + ac_sed_conf_input=`printf "%s\n" "$configure_input" | sed 's/[\\\\&|]/\\\\&/g'`;; #( *) ac_sed_conf_input=$configure_input;; esac @@ -15238,7 +16113,7 @@ $as_expr X"$ac_file" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ X"$ac_file" : 'X\(//\)[^/]' \| \ X"$ac_file" : 'X\(//\)$' \| \ X"$ac_file" : 'X\(/\)' \| . 2>/dev/null || -$as_echo X"$ac_file" | +printf "%s\n" X"$ac_file" | sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ s//\1/ q @@ -15262,9 +16137,9 @@ $as_echo X"$ac_file" | case "$ac_dir" in .) ac_dir_suffix= ac_top_builddir_sub=. ac_top_build_prefix= ;; *) - ac_dir_suffix=/`$as_echo "$ac_dir" | sed 's|^\.[\\/]||'` + ac_dir_suffix=/`printf "%s\n" "$ac_dir" | sed 's|^\.[\\/]||'` # A ".." for each directory in $ac_dir_suffix. - ac_top_builddir_sub=`$as_echo "$ac_dir_suffix" | sed 's|/[^\\/]*|/..|g;s|/||'` + ac_top_builddir_sub=`printf "%s\n" "$ac_dir_suffix" | sed 's|/[^\\/]*|/..|g;s|/||'` case $ac_top_builddir_sub in "") ac_top_builddir_sub=. ac_top_build_prefix= ;; *) ac_top_build_prefix=$ac_top_builddir_sub/ ;; @@ -15326,8 +16201,8 @@ ac_sed_dataroot=' case `eval "sed -n \"\$ac_sed_dataroot\" $ac_file_inputs"` in *datarootdir*) ac_datarootdir_seen=yes;; *@datadir@*|*@docdir@*|*@infodir@*|*@localedir@*|*@mandir@*) - { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $ac_file_inputs seems to ignore the --datarootdir setting" >&5 -$as_echo "$as_me: WARNING: $ac_file_inputs seems to ignore the --datarootdir setting" >&2;} + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: WARNING: $ac_file_inputs seems to ignore the --datarootdir setting" >&5 +printf "%s\n" "$as_me: WARNING: $ac_file_inputs seems to ignore the --datarootdir setting" >&2;} _ACEOF cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 ac_datarootdir_hack=' @@ -15371,9 +16246,9 @@ test -z "$ac_datarootdir_hack$ac_datarootdir_seen" && { ac_out=`sed -n '/\${datarootdir}/p' "$ac_tmp/out"`; test -n "$ac_out"; } && { ac_out=`sed -n '/^[ ]*datarootdir[ ]*:*=/p' \ "$ac_tmp/out"`; test -z "$ac_out"; } && - { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $ac_file contains a reference to the variable \`datarootdir' + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: WARNING: $ac_file contains a reference to the variable \`datarootdir' which seems to be undefined. Please make sure it is defined" >&5 -$as_echo "$as_me: WARNING: $ac_file contains a reference to the variable \`datarootdir' +printf "%s\n" "$as_me: WARNING: $ac_file contains a reference to the variable \`datarootdir' which seems to be undefined. Please make sure it is defined" >&2;} rm -f "$ac_tmp/stdin" @@ -15385,8 +16260,8 @@ which seems to be undefined. Please make sure it is defined" >&2;} ;; - :C) { $as_echo "$as_me:${as_lineno-$LINENO}: executing $ac_file commands" >&5 -$as_echo "$as_me: executing $ac_file commands" >&6;} + :C) { printf "%s\n" "$as_me:${as_lineno-$LINENO}: executing $ac_file commands" >&5 +printf "%s\n" "$as_me: executing $ac_file commands" >&6;} ;; esac @@ -15412,7 +16287,7 @@ esac for am_mf do # Strip MF so we end up with the name of the file. - am_mf=`$as_echo "$am_mf" | sed -e 's/:.*$//'` + am_mf=`printf "%s\n" "$am_mf" | sed -e 's/:.*$//'` # Check whether this is an Automake generated Makefile which includes # dependency-tracking related rules and includes. # Grep'ing the whole file directly is not great: AIX grep has a line @@ -15424,7 +16299,7 @@ $as_expr X"$am_mf" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ X"$am_mf" : 'X\(//\)[^/]' \| \ X"$am_mf" : 'X\(//\)$' \| \ X"$am_mf" : 'X\(/\)' \| . 2>/dev/null || -$as_echo X"$am_mf" | +printf "%s\n" X"$am_mf" | sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ s//\1/ q @@ -15446,7 +16321,7 @@ $as_echo X"$am_mf" | $as_expr X/"$am_mf" : '.*/\([^/][^/]*\)/*$' \| \ X"$am_mf" : 'X\(//\)$' \| \ X"$am_mf" : 'X\(/\)' \| . 2>/dev/null || -$as_echo X/"$am_mf" | +printf "%s\n" X/"$am_mf" | sed '/^.*\/\([^/][^/]*\)\/*$/{ s//\1/ q @@ -15471,8 +16346,8 @@ $as_echo X/"$am_mf" | (exit $ac_status); } || am_rc=$? done if test $am_rc -ne 0; then - { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 -$as_echo "$as_me: error: in \`$ac_pwd':" >&2;} + { { printf "%s\n" "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 +printf "%s\n" "$as_me: error: in \`$ac_pwd':" >&2;} as_fn_error $? "Something went wrong bootstrapping makefile fragments for automatic dependency tracking. If GNU make was not used, consider re-running the configure script with MAKE=\"gmake\" (or whatever is @@ -16016,6 +16891,7 @@ _LT_EOF esac + ltmain=$ac_aux_dir/ltmain.sh @@ -16065,7 +16941,8 @@ if test "$no_create" != yes; then $ac_cs_success || as_fn_exit 1 fi if test -n "$ac_unrecognized_opts" && test "$enable_option_checking" != no; then - { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: unrecognized options: $ac_unrecognized_opts" >&5 -$as_echo "$as_me: WARNING: unrecognized options: $ac_unrecognized_opts" >&2;} + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: WARNING: unrecognized options: $ac_unrecognized_opts" >&5 +printf "%s\n" "$as_me: WARNING: unrecognized options: $ac_unrecognized_opts" >&2;} fi + diff --git a/apple/configure.ac b/apple/configure.ac index 887f243..99de66f 100644 --- a/apple/configure.ac +++ b/apple/configure.ac @@ -1,8 +1,8 @@ -# ffmpeg-kit 4.4 configure.ac +# ffmpeg-kit 4.5 configure.ac -AC_INIT([ffmpeg-kit], [4.4], [https://github.com/tanersener/ffmpeg-kit/issues/new]) -AC_CONFIG_SRCDIR([src/FFmpegKit.m]) +AC_INIT([ffmpeg-kit], [4.5], [https://github.com/tanersener/ffmpeg-kit/issues/new]) AC_CONFIG_MACRO_DIR([m4]) +AC_CONFIG_SRCDIR([src/FFmpegKit.m]) AM_INIT_AUTOMAKE([-Wall -Werror foreign subdir-objects]) AM_MAINTAINER_MODE @@ -24,8 +24,8 @@ AM_PROG_AR AC_PROG_OBJC CFLAGS="$cflags_bckup" -FFMPEG_LIBS="-lavcodec -lavfilter -lavformat -lavutil -lswscale -lswresample" -AC_SUBST(FFMPEG_LIBS) +FFMPEG_FRAMEWORKS="-framework libavcodec -framework libavfilter -framework libavformat -framework libavutil -framework libswscale -framework libswresample" +AC_SUBST(FFMPEG_FRAMEWORKS) LT_INIT @@ -58,7 +58,6 @@ AC_TYPE_UINT8_T # Checks for library functions. AC_CHECK_FUNCS([dup2 floor memmove memset select strchr strcspn strerror strrchr strstr strtol malloc strcpy strlen vsnprintf]) -AC_CONFIG_FILES([Makefile - src/Makefile]) +AC_CONFIG_FILES([Makefile src/Makefile]) AC_OUTPUT diff --git a/apple/depcomp b/apple/depcomp index 6b39162..715e343 100755 --- a/apple/depcomp +++ b/apple/depcomp @@ -3,7 +3,7 @@ scriptversion=2018-03-07.03; # UTC -# Copyright (C) 1999-2020 Free Software Foundation, Inc. +# Copyright (C) 1999-2021 Free Software Foundation, Inc. # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by diff --git a/apple/libtool b/apple/libtool index cf02f8c..c9edd28 100755 --- a/apple/libtool +++ b/apple/libtool @@ -1,6 +1,6 @@ #! /bin/sh -# Generated automatically by config.status (ffmpeg-kit) 4.4 -# Libtool was configured on host mera.local: +# Generated automatically by config.status (ffmpeg-kit) 4.5 +# Libtool was configured on host MiRA.local: # NOTE: Changes made to this file will be lost: look at ltmain.sh. # Provide generalized library-building support services. @@ -42,10 +42,10 @@ macro_version=2.4.6 macro_revision=2.4.6 # Whether or not to build shared libraries. -build_libtool_libs=no +build_libtool_libs=yes # Whether or not to build static libraries. -build_old_libs=yes +build_old_libs=no # What type of objects to build. pic_mode=yes @@ -66,14 +66,14 @@ ECHO="printf %s\\n" PATH_SEPARATOR=":" # The host system. -host_alias=x86_64-ios-darwin -host=x86_64-ios-darwin +host_alias=arm64-ios-darwin +host=aarch64-ios-darwin host_os=darwin # The build system. build_alias= -build=x86_64-apple-darwin18.5.0 -build_os=darwin18.5.0 +build=aarch64-apple-darwin20.6.0 +build_os=darwin20.6.0 # A sed program that does not truncate output. SED="/usr/bin/sed" @@ -91,13 +91,13 @@ EGREP="/usr/bin/grep -E" FGREP="/usr/bin/grep -F" # A BSD- or MS-compatible name lister. -NM="nm" +NM="/Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/nm" # Whether we need soft or hard links. LN_S="ln -s" # What is the maximum length of a command? -max_cmd_len=196608 +max_cmd_len=786432 # Object file suffix (normally "o"). objext=o @@ -136,25 +136,25 @@ file_magic_glob="" want_nocaseglob="no" # DLL creation program. -DLLTOOL="dlltool" +DLLTOOL="false" # Command to associate shared and link libraries. sharedlib_from_linklib_cmd="printf %s\\n" # The archiver. -AR="ar" +AR="/Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/ar" # Flags to create an archive. AR_FLAGS="cru" # How to feed a file listing to the archiver. -archiver_list_spec="@" +archiver_list_spec="" # A symbol stripping program. -STRIP="strip" +STRIP="/Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/strip" # Commands used to install an old-style archive. -RANLIB="ranlib" +RANLIB="/Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/ranlib" old_postinstall_cmds="chmod 644 \$oldlib~\$RANLIB \$tool_oldlib" old_postuninstall_cmds="" @@ -165,22 +165,22 @@ lock_old_archive_extraction=yes LTCC="clang" # LTCC compiler flags. -LTCFLAGS="-arch x86_64 -target x86_64-ios-darwin -march=x86-64 -msse4.2 -mpopcnt -m64 -mtune=intel -DFFMPEG_KIT_X86_64 -std=c99 -Wno-unused-function -Wall -Wno-deprecated-declarations -Wno-pointer-sign -Wno-switch -Wno-unused-result -Wno-unused-variable -DPIC -fobjc-arc -fstrict-aliasing -DIOS -DFFMPEG_KIT_BUILD_DATE=20190403 -isysroot /Applications/Xcode.app/Contents/Developer/Platforms/iPhoneSimulator.platform/Developer/SDKs/iPhoneSimulator12.2.sdk -O2 -Wno-ignored-optimization-argument -mios-simulator-version-min=12.1 -I/Applications/Xcode.app/Contents/Developer/Platforms/iPhoneSimulator.platform/Developer/SDKs/iPhoneSimulator12.2.sdk/usr/include -I/Users/taner/Projects/ffmpeg-kit/prebuilt/ios-x86_64-ios-darwin/ffmpeg/include" +LTCFLAGS="-arch arm64 -target arm64-apple-ios12.1 -march=armv8-a+crc+crypto -mcpu=generic -DFFMPEG_KIT_ARM64 -std=c99 -Wno-unused-function -Wall -Wno-deprecated-declarations -Wno-pointer-sign -Wno-switch -Wno-unused-result -Wno-unused-variable -DPIC -fobjc-arc -fstrict-aliasing -fembed-bitcode -DIOS -DFFMPEG_KIT_BUILD_DATE=20211024 -isysroot /Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS15.0.sdk -Oz -Wno-ignored-optimization-argument -miphoneos-version-min=12.1 -I/Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS15.0.sdk/usr/include -I/Users/taner/Projects/ffmpeg-kit/prebuilt/apple-ios-arm64/ffmpeg/include" # Take the output of nm and produce a listing of raw symbols and C names. -global_symbol_pipe="sed -n -e 's/^.*[ ]\\([ABCDGIRSTW][ABCDGIRSTW]*\\)[ ][ ]*_\\([_A-Za-z][_A-Za-z0-9]*\\)\$/\\1 _\\2 \\2/p' | sed '/ __gnu_lto/d'" +global_symbol_pipe="sed -n -e 's/^.*[ ]\\([BCDEGRST][BCDEGRST]*\\)[ ][ ]*_\\([_A-Za-z][_A-Za-z0-9]*\\)\$/\\1 _\\2 \\2/p' | sed '/ __gnu_lto/d'" # Transform the output of nm in a proper C declaration. -global_symbol_to_cdecl="sed -n -e 's/^T .* \\(.*\\)\$/extern int \\1();/p' -e 's/^[ABCDGIRSTW][ABCDGIRSTW]* .* \\(.*\\)\$/extern char \\1;/p'" +global_symbol_to_cdecl="sed -n -e 's/^T .* \\(.*\\)\$/extern int \\1();/p' -e 's/^[BCDEGRST][BCDEGRST]* .* \\(.*\\)\$/extern char \\1;/p'" # Transform the output of nm into a list of symbols to manually relocate. global_symbol_to_import="" # Transform the output of nm in a C name address pair. -global_symbol_to_c_name_address="sed -n -e 's/^: \\(.*\\) .*\$/ {\"\\1\", (void *) 0},/p' -e 's/^[ABCDGIRSTW][ABCDGIRSTW]* .* \\(.*\\)\$/ {\"\\1\", (void *) \\&\\1},/p'" +global_symbol_to_c_name_address="sed -n -e 's/^: \\(.*\\) .*\$/ {\"\\1\", (void *) 0},/p' -e 's/^[BCDEGRST][BCDEGRST]* .* \\(.*\\)\$/ {\"\\1\", (void *) \\&\\1},/p'" # Transform the output of nm in a C name address pair when lib prefix is needed. -global_symbol_to_c_name_address_lib_prefix="sed -n -e 's/^: \\(.*\\) .*\$/ {\"\\1\", (void *) 0},/p' -e 's/^[ABCDGIRSTW][ABCDGIRSTW]* .* \\(lib.*\\)\$/ {\"\\1\", (void *) \\&\\1},/p' -e 's/^[ABCDGIRSTW][ABCDGIRSTW]* .* \\(.*\\)\$/ {\"lib\\1\", (void *) \\&\\1},/p'" +global_symbol_to_c_name_address_lib_prefix="sed -n -e 's/^: \\(.*\\) .*\$/ {\"\\1\", (void *) 0},/p' -e 's/^[BCDEGRST][BCDEGRST]* .* \\(lib.*\\)\$/ {\"\\1\", (void *) \\&\\1},/p' -e 's/^[BCDEGRST][BCDEGRST]* .* \\(.*\\)\$/ {\"lib\\1\", (void *) \\&\\1},/p'" # The name lister interface. nm_interface="BSD nm" @@ -189,7 +189,7 @@ nm_interface="BSD nm" nm_file_list_spec="@" # The root where to search for dependent libraries,and where our libraries should be installed. -lt_sysroot=/Applications/Xcode.app/Contents/Developer/Platforms/iPhoneSimulator.platform/Developer/SDKs/iPhoneSimulator12.2.sdk +lt_sysroot=/Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS15.0.sdk # Command to truncate a binary pipe. lt_truncate_bin="/bin/dd bs=4096 count=1" @@ -213,7 +213,7 @@ DSYMUTIL="dsymutil" NMEDIT="nmedit" # Tool to manipulate fat objects and archives on Mac OS X. -LIPO="/Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/lipo" +LIPO="lipo" # ldd/readelf like tool for Mach-O binaries on Mac OS X. OTOOL="otool" @@ -282,7 +282,7 @@ finish_eval="" hardcode_into_libs=no # Compile-time system search path for libraries. -sys_lib_search_path_spec="/Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/lib/clang/10.0.1 /usr/local/lib" +sys_lib_search_path_spec="/Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/lib/clang/13.0.0 /usr/local/lib" # Detected run-time system search path for libraries. sys_lib_dlsearch_path_spec="/usr/local/lib /lib /usr/lib" @@ -300,12 +300,12 @@ dlopen_self=unknown dlopen_self_static=unknown # Commands to strip libraries. -old_striplib="strip --strip-debug" -striplib="strip --strip-unneeded" +old_striplib="/Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/strip -S" +striplib="/Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/strip -x" # The linker used to build libraries. -LD="ld" +LD="/Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/ld" # How to create reloadable object files. reload_flag=" -r" @@ -345,7 +345,7 @@ allow_libtool_libs_with_static_runtimes=no export_dynamic_flag_spec="" # Compiler flag to generate shared objects directly from archives. -whole_archive_flag_spec="" +whole_archive_flag_spec="\`for conv in \$convenience\\\"\\\"; do test -n \\\"\$conv\\\" && new_convenience=\\\"\$new_convenience \$wl-force_load,\$conv\\\"; done; func_echo_all \\\"\$new_convenience\\\"\`" # Whether the compiler copes with passing no objects directly. compiler_needs_object="no" @@ -357,19 +357,19 @@ old_archive_from_new_cmds="" old_archive_from_expsyms_cmds="" # Commands used to build a shared archive. -archive_cmds="\$CC -dynamiclib \$allow_undefined_flag -o \$lib \$libobjs \$deplibs \$compiler_flags -install_name \$rpath/\$soname \$verstring \$single_module~\$DSYMUTIL \$lib || :" -archive_expsym_cmds="sed 's|^|_|' < \$export_symbols > \$output_objdir/\$libname-symbols.expsym~\$CC -dynamiclib \$allow_undefined_flag -o \$lib \$libobjs \$deplibs \$compiler_flags -install_name \$rpath/\$soname \$verstring \$single_module \$wl-exported_symbols_list,\$output_objdir/\$libname-symbols.expsym~\$DSYMUTIL \$lib || :" +archive_cmds="\$CC -dynamiclib \$allow_undefined_flag -o \$lib \$libobjs \$deplibs \$compiler_flags -install_name \$rpath/\$soname \$verstring \$single_module" +archive_expsym_cmds="sed 's|^|_|' < \$export_symbols > \$output_objdir/\$libname-symbols.expsym~\$CC -dynamiclib \$allow_undefined_flag -o \$lib \$libobjs \$deplibs \$compiler_flags -install_name \$rpath/\$soname \$verstring \$single_module \$wl-exported_symbols_list,\$output_objdir/\$libname-symbols.expsym" # Commands used to build a loadable module if different from building # a shared archive. -module_cmds="\$CC \$allow_undefined_flag -o \$lib -bundle \$libobjs \$deplibs \$compiler_flags~\$DSYMUTIL \$lib || :" -module_expsym_cmds="sed -e 's|^|_|' < \$export_symbols > \$output_objdir/\$libname-symbols.expsym~\$CC \$allow_undefined_flag -o \$lib -bundle \$libobjs \$deplibs \$compiler_flags \$wl-exported_symbols_list,\$output_objdir/\$libname-symbols.expsym~\$DSYMUTIL \$lib || :" +module_cmds="\$CC \$allow_undefined_flag -o \$lib -bundle \$libobjs \$deplibs \$compiler_flags" +module_expsym_cmds="sed -e 's|^|_|' < \$export_symbols > \$output_objdir/\$libname-symbols.expsym~\$CC \$allow_undefined_flag -o \$lib -bundle \$libobjs \$deplibs \$compiler_flags \$wl-exported_symbols_list,\$output_objdir/\$libname-symbols.expsym" # Whether we are building with GNU ld or not. with_gnu_ld="no" # Flag that allows shared libraries with undefined symbols to be built. -allow_undefined_flag="" +allow_undefined_flag="\$wl-undefined \${wl}dynamic_lookup" # Flag that enforces no undefined symbols. no_undefined_flag="" diff --git a/apple/missing b/apple/missing index 8d0eaad..1fe1611 100755 --- a/apple/missing +++ b/apple/missing @@ -3,7 +3,7 @@ scriptversion=2018-03-07.03; # UTC -# Copyright (C) 1996-2020 Free Software Foundation, Inc. +# Copyright (C) 1996-2021 Free Software Foundation, Inc. # Originally written by Fran,cois Pinard , 1996. # This program is free software; you can redistribute it and/or modify diff --git a/apple/src/Makefile.am b/apple/src/Makefile.am index 9f4e8d3..cdc9009 100644 --- a/apple/src/Makefile.am +++ b/apple/src/Makefile.am @@ -1,6 +1,6 @@ lib_LTLIBRARIES = libffmpegkit.la -libffmpegkit_la_LIBADD = @FFMPEG_LIBS@ +libffmpegkit_la_LIBADD = @FFMPEG_FRAMEWORKS@ libffmpegkit_la_SOURCES = \ AbstractSession.m \ diff --git a/apple/src/Makefile.in b/apple/src/Makefile.in index 102841a..d14103d 100644 --- a/apple/src/Makefile.in +++ b/apple/src/Makefile.in @@ -1,7 +1,7 @@ -# Makefile.in generated by automake 1.16.3 from Makefile.am. +# Makefile.in generated by automake 1.16.5 from Makefile.am. # @configure_input@ -# Copyright (C) 1994-2020 Free Software Foundation, Inc. +# Copyright (C) 1994-2021 Free Software Foundation, Inc. # This Makefile.in is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, @@ -272,8 +272,6 @@ am__define_uniq_tagged_files = \ unique=`for i in $$list; do \ if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ done | $(am__uniquify_input)` -ETAGS = etags -CTAGS = ctags am__DIST_COMMON = $(srcdir)/Makefile.in $(top_srcdir)/depcomp DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) ACLOCAL = @ACLOCAL@ @@ -287,8 +285,9 @@ AWK = @AWK@ CC = @CC@ CCDEPMODE = @CCDEPMODE@ CFLAGS = @CFLAGS@ -CPP = @CPP@ CPPFLAGS = @CPPFLAGS@ +CSCOPE = @CSCOPE@ +CTAGS = @CTAGS@ CYGPATH_W = @CYGPATH_W@ DEFS = @DEFS@ DEPDIR = @DEPDIR@ @@ -299,8 +298,9 @@ ECHO_C = @ECHO_C@ ECHO_N = @ECHO_N@ ECHO_T = @ECHO_T@ EGREP = @EGREP@ +ETAGS = @ETAGS@ EXEEXT = @EXEEXT@ -FFMPEG_LIBS = @FFMPEG_LIBS@ +FFMPEG_FRAMEWORKS = @FFMPEG_FRAMEWORKS@ FGREP = @FGREP@ GREP = @GREP@ INSTALL = @INSTALL@ @@ -389,6 +389,7 @@ pdfdir = @pdfdir@ prefix = @prefix@ program_transform_name = @program_transform_name@ psdir = @psdir@ +runstatedir = @runstatedir@ sbindir = @sbindir@ sharedstatedir = @sharedstatedir@ srcdir = @srcdir@ @@ -398,7 +399,7 @@ top_build_prefix = @top_build_prefix@ top_builddir = @top_builddir@ top_srcdir = @top_srcdir@ lib_LTLIBRARIES = libffmpegkit.la -libffmpegkit_la_LIBADD = @FFMPEG_LIBS@ +libffmpegkit_la_LIBADD = @FFMPEG_FRAMEWORKS@ libffmpegkit_la_SOURCES = AbstractSession.m ArchDetect.m AtomicLong.m \ FFmpegKit.m FFmpegKitConfig.m FFmpegSession.m FFprobeKit.m \ FFprobeSession.m Log.m MediaInformation.m \ @@ -842,7 +843,6 @@ cscopelist-am: $(am__tagged_files) distclean-tags: -rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags - distdir: $(BUILT_SOURCES) $(MAKE) $(AM_MAKEFLAGS) distdir-am diff --git a/ios.sh b/ios.sh index 82ba165..237c639 100755 --- a/ios.sh +++ b/ios.sh @@ -194,7 +194,7 @@ if [[ -z ${FFMPEG_KIT_XCF_BUILD} ]] && [[ ${ENABLED_ARCHITECTURES[${ARCH_X86_64} disable_arch "x86-64-mac-catalyst" fi -echo -e "\nBuilding ffmpeg-kit ${BUILD_TYPE_ID}static library for iOS\n" +echo -e "\nBuilding ffmpeg-kit ${BUILD_TYPE_ID}shared library for iOS\n" echo -e -n "INFO: Building ffmpeg-kit ${BUILD_VERSION} ${BUILD_TYPE_ID}for iOS: " 1>>"${BASEDIR}"/build.log 2>&1 echo -e "$(date)\n" 1>>"${BASEDIR}"/build.log 2>&1 diff --git a/macos.sh b/macos.sh index 0ebbaf5..208ff73 100755 --- a/macos.sh +++ b/macos.sh @@ -157,7 +157,7 @@ fi # DISABLE NOT SUPPORTED ARCHITECTURES disable_macos_architecture_not_supported_on_detected_sdk_version "${ARCH_ARM64}" "${DETECTED_MACOS_SDK_VERSION}" -echo -e "\nBuilding ffmpeg-kit ${BUILD_TYPE_ID}static library for macOS\n" +echo -e "\nBuilding ffmpeg-kit ${BUILD_TYPE_ID}shared library for macOS\n" echo -e -n "INFO: Building ffmpeg-kit ${BUILD_VERSION} ${BUILD_TYPE_ID}for macOS: " 1>>"${BASEDIR}"/build.log 2>&1 echo -e "$(date)\n" 1>>"${BASEDIR}"/build.log 2>&1 diff --git a/scripts/android/ffmpeg.sh b/scripts/android/ffmpeg.sh index 1ee0277..2025d69 100755 --- a/scripts/android/ffmpeg.sh +++ b/scripts/android/ffmpeg.sh @@ -341,6 +341,13 @@ echo -n -e "\n${LIB_NAME}: " if [[ -z ${NO_WORKSPACE_CLEANUP_ffmpeg} ]]; then echo -e "INFO: Cleaning workspace for ${LIB_NAME}\n" 1>>"${BASEDIR}"/build.log 2>&1 make distclean 2>/dev/null 1>/dev/null + + # WORKAROUND TO MANUALLY DELETE UNCLEANED FILES + rm -f "${BASEDIR}"/src/"${LIB_NAME}"/libavfilter/opencl/*.o 1>>"${BASEDIR}"/build.log 2>&1 + rm -f "${BASEDIR}"/src/"${LIB_NAME}"/libavcodec/neon/*.o 1>>"${BASEDIR}"/build.log 2>&1 + + # DELETE SHARED FRAMEWORK WORKAROUNDS + git checkout "${BASEDIR}/src/ffmpeg/ffbuild" 1>>"${BASEDIR}"/build.log 2>&1 fi # UPDATE BUILD FLAGS diff --git a/scripts/apple/ffmpeg-kit.sh b/scripts/apple/ffmpeg-kit.sh index 576663b..28a463f 100755 --- a/scripts/apple/ffmpeg-kit.sh +++ b/scripts/apple/ffmpeg-kit.sh @@ -22,13 +22,13 @@ set_toolchain_paths "${LIB_NAME}" HOST=$(get_host) export CFLAGS="$(get_cflags ${LIB_NAME}) -I${LIB_INSTALL_BASE}/ffmpeg/include" export CXXFLAGS=$(get_cxxflags ${LIB_NAME}) -export LDFLAGS="$(get_ldflags ${LIB_NAME}) -L${LIB_INSTALL_BASE}/ffmpeg/lib -framework Foundation -framework CoreVideo -lavdevice" +export LDFLAGS="$(get_ldflags ${LIB_NAME}) -F${LIB_INSTALL_BASE}/ffmpeg/framework -framework Foundation -framework CoreVideo -framework libavdevice" export PKG_CONFIG_LIBDIR="${INSTALL_PKG_CONFIG_DIR}" cd "${BASEDIR}"/apple 1>>"${BASEDIR}"/build.log 2>&1 || exit 1 -# ALWAYS BUILD STATIC LIBRARIES -BUILD_LIBRARY_OPTIONS="--enable-static --disable-shared" +# ALWAYS BUILD SHARED LIBRARIES +BUILD_LIBRARY_OPTIONS="--enable-shared --disable-static" echo -n -e "\n${LIB_NAME}: " @@ -36,22 +36,27 @@ make distclean 2>/dev/null 1>/dev/null rm -f "${BASEDIR}"/apple/src/libffmpegkit* 1>>"${BASEDIR}"/build.log 2>&1 -# REGENERATE BUILD FILES IF NECESSARY OR REQUESTED -if [[ ! -f "${BASEDIR}"/apple/configure ]] || [[ ${RECONF_ffmpeg_kit} -eq 1 ]]; then - autoreconf_library "${LIB_NAME}" || exit 1 -fi - # CHECK IF VIDEOTOOLBOX IS ENABLED VIDEOTOOLBOX_SUPPORT_FLAG="" if [[ ${ENABLED_LIBRARIES[$LIBRARY_APPLE_VIDEOTOOLBOX]} -eq 1 ]]; then VIDEOTOOLBOX_SUPPORT_FLAG="--enable-videotoolbox" fi -# REMOVE OPTIONS FROM CONFIGURE TO FIX THE FOLLOWING ERROR -# ld: -flat_namespace and -bitcode_bundle (Xcode setting ENABLE_BITCODE=YES) cannot be used together -${SED_INLINE} 's/$wl-flat_namespace //g' configure 1>>"${BASEDIR}"/build.log 2>&1 || exit 1 -${SED_INLINE} 's/$wl-undefined //g' configure 1>>"${BASEDIR}"/build.log 2>&1 || exit 1 -${SED_INLINE} 's/${wl}suppress//g' configure 1>>"${BASEDIR}"/build.log 2>&1 || exit 1 +# ALWAYS REGENERATE BUILD FILES - NECESSARY TO APPLY THE WORKAROUNDS +autoreconf_library "${LIB_NAME}" 1>>"${BASEDIR}"/build.log 2>&1 || exit 1 + +# WORKAROUNDS +if [[ ${FFMPEG_KIT_BUILD_TYPE} != "macos" ]]; then + + # REMOVE OPTIONS FROM CONFIGURE TO FIX THE FOLLOWING ERROR + # ld: -flat_namespace and -bitcode_bundle (Xcode setting ENABLE_BITCODE=YES) cannot be used together + ${SED_INLINE} 's/$wl-flat_namespace //g' configure 1>>"${BASEDIR}"/build.log 2>&1 || exit 1 + ${SED_INLINE} 's/$wl-undefined //g' configure 1>>"${BASEDIR}"/build.log 2>&1 || exit 1 + ${SED_INLINE} 's/${wl}suppress//g' configure 1>>"${BASEDIR}"/build.log 2>&1 || exit 1 + + # ld: file not found: dynamic_lookup + ${SED_INLINE} 's/${wl}dynamic_lookup//g' configure 1>>"${BASEDIR}"/build.log 2>&1 || exit 1 +fi ./configure \ --prefix="${FFMPEG_KIT_LIBRARY_PATH}" \ @@ -63,6 +68,10 @@ ${SED_INLINE} 's/${wl}suppress//g' configure 1>>"${BASEDIR}"/build.log 2>&1 || e --disable-maintainer-mode \ --host="${HOST}" 1>>"${BASEDIR}"/build.log 2>&1 +# WORKAROUND FOR clang: warning: using sysroot for 'MacOSX' but targeting 'iPhone' +${SED_INLINE} "s|allow_undefined_flag -o|allow_undefined_flag -target $(get_target) -o|g" libtool 1>>"${BASEDIR}"/build.log 2>&1 +${SED_INLINE} 's|\$rpath/\\$soname|@rpath/ffmpegkit.framework/ffmpegkit|g' libtool 1>>"${BASEDIR}"/build.log 2>&1 + if [ $? -ne 0 ]; then echo -e "failed\n\nSee build.log for details\n" exit 1 diff --git a/scripts/apple/ffmpeg.sh b/scripts/apple/ffmpeg.sh index 0287335..4d50268 100755 --- a/scripts/apple/ffmpeg.sh +++ b/scripts/apple/ffmpeg.sh @@ -59,7 +59,9 @@ arm64) TARGET_CPU="armv8" TARGET_ARCH="aarch64" ASM_OPTIONS=" --enable-neon --enable-asm" - BITCODE_FLAGS="-fembed-bitcode -Wc,-fembed-bitcode" + if [[ ${FFMPEG_KIT_BUILD_TYPE} != "macos" ]]; then + BITCODE_FLAGS="-fembed-bitcode -Wc,-fembed-bitcode" + fi ;; arm64-mac-catalyst) TARGET_CPU="armv8" @@ -317,12 +319,16 @@ for library in {1..59}; do ;; *-bzip2) CONFIGURE_POSTFIX+=" --enable-bzlib" + FFMPEG_CFLAGS+=" $(pkg-config --cflags bzip2 2>>"${BASEDIR}"/build.log)" + FFMPEG_LDFLAGS+=" $(pkg-config --libs bzip2 2>>"${BASEDIR}"/build.log)" ;; *-coreimage) CONFIGURE_POSTFIX+=" --enable-coreimage --enable-appkit" ;; *-libiconv) CONFIGURE_POSTFIX+=" --enable-iconv" + FFMPEG_CFLAGS+=" $(pkg-config --cflags libiconv 2>>"${BASEDIR}"/build.log)" + FFMPEG_LDFLAGS+=" $(pkg-config --libs libiconv 2>>"${BASEDIR}"/build.log)" ;; *-opencl) CONFIGURE_POSTFIX+=" --enable-opencl" @@ -335,6 +341,8 @@ for library in {1..59}; do ;; *-zlib) CONFIGURE_POSTFIX+=" --enable-zlib" + FFMPEG_CFLAGS+=" $(pkg-config --cflags zlib 2>>"${BASEDIR}"/build.log)" + FFMPEG_LDFLAGS+=" $(pkg-config --libs zlib 2>>"${BASEDIR}"/build.log)" ;; esac ;; @@ -367,8 +375,8 @@ for library in {1..59}; do fi done -# ALWAYS BUILD STATIC LIBRARIES -BUILD_LIBRARY_OPTIONS="--enable-static --disable-shared" +# ALWAYS BUILD SHARED LIBRARIES +BUILD_LIBRARY_OPTIONS="--enable-shared --disable-static --install-name-dir=@rpath" # OPTIMIZE FOR SPEED INSTEAD OF SIZE if [[ -z ${FFMPEG_KIT_OPTIMIZED_FOR_SPEED} ]]; then @@ -420,6 +428,9 @@ if [[ -z ${NO_WORKSPACE_CLEANUP_ffmpeg} ]]; then # WORKAROUND TO MANUALLY DELETE UNCLEANED FILES rm -f "${BASEDIR}"/src/"${LIB_NAME}"/libavfilter/opencl/*.o 1>>"${BASEDIR}"/build.log 2>&1 rm -f "${BASEDIR}"/src/"${LIB_NAME}"/libavcodec/neon/*.o 1>>"${BASEDIR}"/build.log 2>&1 + + # DELETE SHARED FRAMEWORK WORKAROUNDS + git checkout "${BASEDIR}/src/ffmpeg/ffbuild" 1>>"${BASEDIR}"/build.log 2>&1 fi ########################### CUSTOMIZATIONS ####################### @@ -512,35 +523,83 @@ if [[ $? -ne 0 ]]; then exit 1 fi -if [[ -z ${NO_OUTPUT_REDIRECTION} ]]; then - make -j$(get_cpu_count) 1>>"${BASEDIR}"/build.log 2>&1 +build_ffmpeg() { + if [[ -z ${NO_OUTPUT_REDIRECTION} ]]; then + make -j$(get_cpu_count) 1>>"${BASEDIR}"/build.log 2>&1 - if [[ $? -ne 0 ]]; then - echo -e "failed\n\nSee build.log for details\n" - exit 1 + if [[ $? -ne 0 ]]; then + echo -e "failed\n\nSee build.log for details\n" + exit 1 + fi + else + echo -e "started\n" + make -j$(get_cpu_count) + + if [[ $? -ne 0 ]]; then + echo -n -e "\n${LIB_NAME}: failed\n\nSee build.log for details\n" + exit 1 + else + echo -n -e "\n${LIB_NAME}: " + fi fi -else - echo -e "started\n" - make -j$(get_cpu_count) +} + +install_ffmpeg() { + + if [[ -n $1 ]]; then + + # DELETE THE PREVIOUS BUILD + if [ -d "${FFMPEG_LIBRARY_PATH}" ]; then + rm -rf "${FFMPEG_LIBRARY_PATH}" 1>>"${BASEDIR}"/build.log 2>&1 || exit 1 + fi + else + + # LEAVE EVERYTHING EXCEPT frameworks + rm -rf "${FFMPEG_LIBRARY_PATH}/include" 1>>"${BASEDIR}"/build.log 2>&1 || exit 1 + rm -rf "${FFMPEG_LIBRARY_PATH}/lib" 1>>"${BASEDIR}"/build.log 2>&1 || exit 1 + rm -rf "${FFMPEG_LIBRARY_PATH}/share" 1>>"${BASEDIR}"/build.log 2>&1 || exit 1 + fi + make install 1>>"${BASEDIR}"/build.log 2>&1 if [[ $? -ne 0 ]]; then - echo -n -e "\n${LIB_NAME}: failed\n\nSee build.log for details\n" + echo -e "failed\n\nSee build.log for details\n" exit 1 - else - echo -n -e "\n${LIB_NAME}: " fi -fi +} -# DELETE THE PREVIOUS BUILD OF THE LIBRARY BEFORE INSTALLING -if [ -d "${FFMPEG_LIBRARY_PATH}" ]; then - rm -rf "${FFMPEG_LIBRARY_PATH}" 1>>"${BASEDIR}"/build.log 2>&1 || exit 1 -fi -make install 1>>"${BASEDIR}"/build.log 2>&1 +${SED_INLINE} 's|$(SLIBNAME_WITH_MAJOR),|$(SLIBPREF)$(FULLNAME).framework/$(SLIBPREF)$(FULLNAME),|g' ${BASEDIR}/src/ffmpeg/ffbuild/config.mak 1>>"${BASEDIR}"/build.log 2>&1 || exit 1 -if [[ $? -ne 0 ]]; then - echo -e "failed\n\nSee build.log for details\n" - exit 1 -fi +# BUILD DYNAMIC LIBRARIES WITH DEFAULT OPTIONS +build_ffmpeg +install_ffmpeg "true" + +# CLEAN THE OUTPUT OF FIRST BUILD +find . -name "*.dylib" -delete 1>>"${BASEDIR}"/build.log 2>&1 + +echo -e "\nShared libraries built successfully. Building frameworks.\n" 1>>"${BASEDIR}"/build.log 2>&1 + +create_temporary_framework() { + local FRAMEWORK_NAME="$1" + mkdir -p "${FFMPEG_LIBRARY_PATH}/framework/${FRAMEWORK_NAME}.framework" 1>>"${BASEDIR}"/build.log 2>&1 || exit 1 + cp "${FFMPEG_LIBRARY_PATH}/lib/${FRAMEWORK_NAME}.dylib" "${FFMPEG_LIBRARY_PATH}/framework/${FRAMEWORK_NAME}.framework/${FRAMEWORK_NAME}" 1>>"${BASEDIR}"/build.log 2>&1 || exit 1 +} + +create_temporary_framework "libavcodec" +create_temporary_framework "libavdevice" +create_temporary_framework "libavfilter" +create_temporary_framework "libavformat" +create_temporary_framework "libavutil" +create_temporary_framework "libswresample" +create_temporary_framework "libswscale" + +${SED_INLINE} 's|$(SLIBNAME_WITH_MAJOR),|$(SLIBPREF)$(FULLNAME).framework/$(SLIBPREF)$(FULLNAME),|g' ${BASEDIR}/src/ffmpeg/ffbuild/config.mak 1>>"${BASEDIR}"/build.log 2>&1 || exit 1 +${SED_INLINE} "s|^ALLFFLIBS = .*|ALLFFLIBS = ${FFMPEG_LIBRARY_PATH}/framework|g" ${BASEDIR}/src/ffmpeg/ffbuild/common.mak 1>>"${BASEDIR}"/build.log 2>&1 || exit 1 +${SED_INLINE} 's|$(LD_LIB)|-framework lib% |g' ${BASEDIR}/src/ffmpeg/ffbuild/common.mak 1>>"${BASEDIR}"/build.log 2>&1 || exit 1 +${SED_INLINE} 's|$(LD_PATH)lib|-F |g' ${BASEDIR}/src/ffmpeg/ffbuild/common.mak 1>>"${BASEDIR}"/build.log 2>&1 || exit 1 + +# BUILD FRAMEWORKS AS DYNAMIC LIBRARIES +build_ffmpeg +install_ffmpeg # MANUALLY ADD REQUIRED HEADERS mkdir -p "${FFMPEG_LIBRARY_PATH}"/include/libavutil/x86 1>>"${BASEDIR}"/build.log 2>&1 diff --git a/scripts/apple/harfbuzz.sh b/scripts/apple/harfbuzz.sh index 6416ab0..07dba4c 100755 --- a/scripts/apple/harfbuzz.sh +++ b/scripts/apple/harfbuzz.sh @@ -19,8 +19,13 @@ fi --disable-fast-install \ --host="${HOST}" || return 1 -# WORKAROUND TO REMOVE -bind_at_load FLAG WHICH CAN NOT BE USED WHEN BITCODE IS ENABLED -${SED_INLINE} 's/$wl-bind_at_load//g' ${BASEDIR}/src/${LIB_NAME}/libtool +# WORKAROUNDS +git checkout ${BASEDIR}/src/${LIB_NAME}/libtool 1>>"${BASEDIR}"/build.log 2>&1 +if [[ ${FFMPEG_KIT_BUILD_TYPE} != "macos" ]]; then + + # WORKAROUND TO REMOVE -bind_at_load FLAG WHICH CAN NOT BE USED WHEN BITCODE IS ENABLED + ${SED_INLINE} 's/$wl-bind_at_load//g' ${BASEDIR}/src/${LIB_NAME}/libtool +fi make -j$(get_cpu_count) || return 1 diff --git a/scripts/apple/leptonica.sh b/scripts/apple/leptonica.sh index 3c67b60..dbb1327 100755 --- a/scripts/apple/leptonica.sh +++ b/scripts/apple/leptonica.sh @@ -17,7 +17,7 @@ export LIBTIFF_CFLAGS="$(pkg-config --cflags libtiff-4)" export LIBTIFF_LIBS="$(pkg-config --libs --static libtiff-4)" export ZLIB_CFLAGS="$(pkg-config --cflags zlib)" -export ZLIB_LIBS="$(pkg-config --libs --static zlib)" +export ZLIB_LIBS="$(pkg-config --libs zlib)" export JPEG_CFLAGS="$(pkg-config --cflags libjpeg)" export JPEG_LIBS="$(pkg-config --libs --static libjpeg)" diff --git a/scripts/apple/libvorbis.sh b/scripts/apple/libvorbis.sh index 058baac..4feee40 100755 --- a/scripts/apple/libvorbis.sh +++ b/scripts/apple/libvorbis.sh @@ -3,18 +3,19 @@ # ALWAYS CLEAN THE PREVIOUS BUILD make distclean 2>/dev/null 1>/dev/null -# REGENERATE BUILD FILES IF NECESSARY OR REQUESTED -if [[ ! -f "${BASEDIR}"/src/"${LIB_NAME}"/configure ]] || [[ ${RECONF_libvorbis} -eq 1 ]]; then +# WORKAROUNDS +# -mno-ieee-fp OPTION IS NOT COMPATIBLE WITH clang. REMOVING IT +${SED_INLINE} 's/\-mno-ieee-fp//g' "${BASEDIR}"/src/"${LIB_NAME}"/configure.ac || return 1 - # -mno-ieee-fp OPTION IS NOT COMPATIBLE WITH clang. REMOVING IT - ${SED_INLINE} 's/\-mno-ieee-fp//g' "${BASEDIR}"/src/"${LIB_NAME}"/configure.ac || return 1 +# ALWAYS REGENERATE BUILD FILES - NECESSARY TO APPLY THE WORKAROUNDS +autoreconf_library "${LIB_NAME}" 1>>"${BASEDIR}"/build.log 2>&1 || exit 1 - autoreconf_library "${LIB_NAME}" 1>>"${BASEDIR}"/build.log 2>&1 || exit 1 -fi +if [[ ${FFMPEG_KIT_BUILD_TYPE} != "macos" ]]; then -# WORKAROUND TO REMOVE -force_cpusubtype_ALL FLAG DUE TO THE FOLLOWING ERROR -# ld: -force_cpusubtype_ALL and -bitcode_bundle (Xcode setting ENABLE_BITCODE=YES) cannot be used together -${SED_INLINE} 's/-force_cpusubtype_ALL//g' ${BASEDIR}/src/${LIB_NAME}/configure + # WORKAROUND TO REMOVE -force_cpusubtype_ALL FLAG DUE TO THE FOLLOWING ERROR + # ld: -force_cpusubtype_ALL and -bitcode_bundle (Xcode setting ENABLE_BITCODE=YES) cannot be used together + ${SED_INLINE} 's/-force_cpusubtype_ALL//g' ${BASEDIR}/src/${LIB_NAME}/configure +fi PKG_CONFIG= ./configure \ --prefix="${LIB_INSTALL_PREFIX}" \ diff --git a/scripts/apple/tesseract.sh b/scripts/apple/tesseract.sh index 1da751d..d94661d 100755 --- a/scripts/apple/tesseract.sh +++ b/scripts/apple/tesseract.sh @@ -26,8 +26,13 @@ fi --disable-largefile \ --host="${HOST}" || return 1 -# WORKAROUND TO REMOVE -bind_at_load FLAG WHICH CAN NOT BE USED WHEN BITCODE IS ENABLED -${SED_INLINE} 's/$wl-bind_at_load//g' ${BASEDIR}/src/${LIB_NAME}/libtool +# WORKAROUNDS +git checkout ${BASEDIR}/src/${LIB_NAME}/libtool 1>>"${BASEDIR}"/build.log 2>&1 +if [[ ${FFMPEG_KIT_BUILD_TYPE} != "macos" ]]; then + + # WORKAROUND TO REMOVE -bind_at_load FLAG WHICH CAN NOT BE USED WHEN BITCODE IS ENABLED + ${SED_INLINE} 's/$wl-bind_at_load//g' ${BASEDIR}/src/${LIB_NAME}/libtool +fi # WORKAROUND TO DISABLE LINKING TO rt ${SED_INLINE} 's/-lrt//g' ${BASEDIR}/src/${LIB_NAME}/api/Makefile diff --git a/scripts/apple/xvidcore.sh b/scripts/apple/xvidcore.sh index 4647f1b..be75087 100755 --- a/scripts/apple/xvidcore.sh +++ b/scripts/apple/xvidcore.sh @@ -13,8 +13,9 @@ esac # ALWAYS CLEAN THE PREVIOUS BUILD make distclean 2>/dev/null 1>/dev/null -# REGENERATE BUILD FILES IF NECESSARY OR REQUESTED -if [[ ! -f "${BASEDIR}"/src/"${LIB_NAME}"/"${LIB_NAME}"/build/generic/configure ]] || [[ ${RECONF_xvidcore} -eq 1 ]]; then +# WORKAROUNDS +git checkout configure.in 1>>"${BASEDIR}"/build.log 2>&1 +if [[ ${FFMPEG_KIT_BUILD_TYPE} != "macos" ]]; then # WORKAROUND TO FIX THE FOLLOWING ERROR # ld: -flat_namespace and -bitcode_bundle (Xcode setting ENABLE_BITCODE=YES) cannot be used together @@ -23,10 +24,11 @@ if [[ ! -f "${BASEDIR}"/src/"${LIB_NAME}"/"${LIB_NAME}"/build/generic/configure # WORKAROUND TO FIX THE FOLLOWING ERROR # ld: -read_only_relocs and -bitcode_bundle (Xcode setting ENABLE_BITCODE=YES) cannot be used together ${SED_INLINE} 's/-Wl,-read_only_relocs,suppress//g' configure.in - - ./bootstrap.sh fi +# ALWAYS REGENERATE BUILD FILES - NECESSARY TO APPLY THE WORKAROUNDS +./bootstrap.sh + ./configure \ --prefix="${LIB_INSTALL_PREFIX}" \ ${ASM_OPTIONS} \ diff --git a/scripts/function-apple.sh b/scripts/function-apple.sh index 05bb2ec..f60664d 100755 --- a/scripts/function-apple.sh +++ b/scripts/function-apple.sh @@ -184,109 +184,6 @@ initialize_folder() { return 0 } -# -# 1. library index -# 2. static library name -# 3. universal library directory -# 4. target architectures array -# -# DEPENDS TARGET_ARCH_LIST VARIABLE -# -create_single_universal_library() { - local LIBRARY_INDEX="$1" - local STATIC_LIBRARY_NAME="$2" - local UNIVERSAL_DIRECTORY_PATH="$3" - local TARGET_ARCHITECTURES=("$4") - local LIBRARY_NAME=$(get_library_name "${LIBRARY_INDEX}") - local LIPO="$(xcrun --sdk "$(get_default_sdk_name)" -f lipo)" - - local LIPO_COMMAND="${LIPO} -create" - - for ARCH in "${TARGET_ARCH_LIST[@]}"; do - if [[ " ${TARGET_ARCHITECTURES[*]} " == *" ${ARCH} "* ]]; then - local FULL_LIBRARY_PATH="${BASEDIR}/prebuilt/$(get_build_directory)/${LIBRARY_NAME}/lib/${STATIC_LIBRARY_NAME}" - LIPO_COMMAND+=" ${FULL_LIBRARY_PATH}" - fi - done - - LIPO_COMMAND+=" -output ${UNIVERSAL_DIRECTORY_PATH}/lib/${STATIC_LIBRARY_NAME}" - - mkdir -p "${UNIVERSAL_DIRECTORY_PATH}/lib" 1>>"${BASEDIR}"/build.log 2>&1 - - ${LIPO_COMMAND} 1>>"${BASEDIR}"/build.log 2>&1 - - if [[ $? -ne 0 ]]; then - echo -e "\nINFO: Failed to build universal ${LIBRARY_NAME} library\n" 1>>"${BASEDIR}"/build.log 2>&1 - echo -e "failed\n\nSee build.log for details\n" - exit 1 - fi - - RC=$(copy_external_library_license "$LIBRARY_INDEX" "${UNIVERSAL_DIRECTORY_PATH}") - - if [[ ${RC} -ne 0 ]]; then - echo -e "\nINFO: Failed to build universal ${LIBRARY_NAME} library\n" 1>>"${BASEDIR}"/build.log 2>&1 - echo -e "failed\n\nSee build.log for details\n" - exit 1 - fi -} - -# -# 1. library index -# 2. architecture variant -# -# DEPENDS TARGET_ARCH_LIST VARIABLE -# -create_universal_library() { - local LIBRARY_INDEX="$1" - local ARCHITECTURE_VARIANT="$2" - local TARGET_ARCHITECTURES=("$(get_apple_architectures_for_variant "${ARCHITECTURE_VARIANT}")") - local LIBRARY_NAME=$(get_library_name "${LIBRARY_INDEX}") - local UNIVERSAL_LIBRARY_PATH="${BASEDIR}/prebuilt/$(get_universal_library_directory "${ARCHITECTURE_VARIANT}")" - - if [[ $(is_apple_architecture_variant_supported "${ARCHITECTURE_VARIANT}") -eq 0 ]]; then - - # THERE ARE NO ARCHITECTURES ENABLED FOR THIS LIBRARY TYPE - return - fi - - initialize_folder "${UNIVERSAL_LIBRARY_PATH}/${LIBRARY_NAME}" - - if [[ ${LIBRARY_LIBTHEORA} == "${LIBRARY_INDEX}" ]]; then - - create_single_universal_library "${LIBRARY_INDEX}" "libtheora.a" "${UNIVERSAL_LIBRARY_PATH}/${LIBRARY_NAME}" "${TARGET_ARCHITECTURES[@]}" - create_single_universal_library "${LIBRARY_INDEX}" "libtheoraenc.a" "${UNIVERSAL_LIBRARY_PATH}/${LIBRARY_NAME}" "${TARGET_ARCHITECTURES[@]}" - create_single_universal_library "${LIBRARY_INDEX}" "libtheoradec.a" "${UNIVERSAL_LIBRARY_PATH}/${LIBRARY_NAME}" "${TARGET_ARCHITECTURES[@]}" - - elif [[ ${LIBRARY_LIBVORBIS} == "${LIBRARY_INDEX}" ]]; then - - create_single_universal_library "${LIBRARY_INDEX}" "libvorbisfile.a" "${UNIVERSAL_LIBRARY_PATH}/${LIBRARY_NAME}" "${TARGET_ARCHITECTURES[@]}" - create_single_universal_library "${LIBRARY_INDEX}" "libvorbisenc.a" "${UNIVERSAL_LIBRARY_PATH}/${LIBRARY_NAME}" "${TARGET_ARCHITECTURES[@]}" - create_single_universal_library "${LIBRARY_INDEX}" "libvorbis.a" "${UNIVERSAL_LIBRARY_PATH}/${LIBRARY_NAME}" "${TARGET_ARCHITECTURES[@]}" - - elif [[ ${LIBRARY_LIBWEBP} == "${LIBRARY_INDEX}" ]]; then - - create_single_universal_library "${LIBRARY_INDEX}" "libwebpmux.a" "${UNIVERSAL_LIBRARY_PATH}/${LIBRARY_NAME}" "${TARGET_ARCHITECTURES[@]}" - create_single_universal_library "${LIBRARY_INDEX}" "libwebpdemux.a" "${UNIVERSAL_LIBRARY_PATH}/${LIBRARY_NAME}" "${TARGET_ARCHITECTURES[@]}" - create_single_universal_library "${LIBRARY_INDEX}" "libwebp.a" "${UNIVERSAL_LIBRARY_PATH}/${LIBRARY_NAME}" "${TARGET_ARCHITECTURES[@]}" - - elif [[ ${LIBRARY_OPENCOREAMR} == "${LIBRARY_INDEX}" ]]; then - - create_single_universal_library "${LIBRARY_INDEX}" "libopencore-amrnb.a" "${UNIVERSAL_LIBRARY_PATH}/${LIBRARY_NAME}" "${TARGET_ARCHITECTURES[@]}" - - elif [[ ${LIBRARY_NETTLE} == "${LIBRARY_INDEX}" ]]; then - - create_single_universal_library "${LIBRARY_INDEX}" "libnettle.a" "${UNIVERSAL_LIBRARY_PATH}/${LIBRARY_NAME}" "${TARGET_ARCHITECTURES[@]}" - create_single_universal_library "${LIBRARY_INDEX}" "libhogweed.a" "${UNIVERSAL_LIBRARY_PATH}/${LIBRARY_NAME}" "${TARGET_ARCHITECTURES[@]}" - - else - - create_single_universal_library "${LIBRARY_INDEX}" "$(get_static_archive_name "${LIBRARY_INDEX}").a" "${UNIVERSAL_LIBRARY_PATH}/${LIBRARY_NAME}" "${TARGET_ARCHITECTURES[@]}" - - fi - - echo -e "DEBUG: ${LIBRARY_NAME} universal library built for $(get_apple_architecture_variant "${ARCHITECTURE_VARIANT}") platform successfully\n" 1>>"${BASEDIR}"/build.log 2>&1 -} - # # 1. architecture variant # @@ -296,8 +193,8 @@ create_ffmpeg_universal_library() { local ARCHITECTURE_VARIANT="$1" local TARGET_ARCHITECTURES=("$(get_apple_architectures_for_variant "${ARCHITECTURE_VARIANT}")") local LIBRARY_NAME="ffmpeg" - local UNIVERSAL_LIBRARY_PATH="${BASEDIR}/prebuilt/$(get_universal_library_directory "${ARCHITECTURE_VARIANT}")" - local FFMPEG_UNIVERSAL_LIBRARY_PATH="${UNIVERSAL_LIBRARY_PATH}/${LIBRARY_NAME}" + local UNIVERSAL_LIBRARY_DIRECTORY="${BASEDIR}/prebuilt/$(get_universal_library_directory "${ARCHITECTURE_VARIANT}")" + local FFMPEG_UNIVERSAL_LIBRARY_DIRECTORY="${UNIVERSAL_LIBRARY_DIRECTORY}/${LIBRARY_NAME}" local LIPO="$(xcrun --sdk "$(get_default_sdk_name)" -f lipo)" if [[ $(is_apple_architecture_variant_supported "${ARCHITECTURE_VARIANT}") -eq 0 ]]; then @@ -307,43 +204,52 @@ create_ffmpeg_universal_library() { fi # INITIALIZE UNIVERSAL LIBRARY DIRECTORY - initialize_folder "${FFMPEG_UNIVERSAL_LIBRARY_PATH}" - initialize_folder "${FFMPEG_UNIVERSAL_LIBRARY_PATH}/include" - initialize_folder "${FFMPEG_UNIVERSAL_LIBRARY_PATH}/lib" + initialize_folder "${FFMPEG_UNIVERSAL_LIBRARY_DIRECTORY}" + initialize_folder "${FFMPEG_UNIVERSAL_LIBRARY_DIRECTORY}/include" + initialize_folder "${FFMPEG_UNIVERSAL_LIBRARY_DIRECTORY}/lib" local FFMPEG_DEFAULT_BUILD_PATH="${BASEDIR}/prebuilt/$(get_default_build_directory)/ffmpeg" # COPY HEADER FILES - cp -r "${FFMPEG_DEFAULT_BUILD_PATH}"/include/* "${FFMPEG_UNIVERSAL_LIBRARY_PATH}"/include 1>>"${BASEDIR}"/build.log 2>&1 - cp "${FFMPEG_DEFAULT_BUILD_PATH}"/include/config.h "${FFMPEG_UNIVERSAL_LIBRARY_PATH}"/include 1>>"${BASEDIR}"/build.log 2>&1 + cp -r "${FFMPEG_DEFAULT_BUILD_PATH}"/include/* "${FFMPEG_UNIVERSAL_LIBRARY_DIRECTORY}"/include 1>>"${BASEDIR}"/build.log 2>&1 + cp "${FFMPEG_DEFAULT_BUILD_PATH}"/include/config.h "${FFMPEG_UNIVERSAL_LIBRARY_DIRECTORY}"/include 1>>"${BASEDIR}"/build.log 2>&1 for FFMPEG_LIB in "${FFMPEG_LIBS[@]}"; do + local FFMPEG_LIB_UNIVERSAL_LIBRARY_PATH="${FFMPEG_UNIVERSAL_LIBRARY_DIRECTORY}/lib/${FFMPEG_LIB}.dylib" + LIPO_COMMAND="${LIPO} -create" for ARCH in "${TARGET_ARCH_LIST[@]}"; do if [[ " ${TARGET_ARCHITECTURES[*]} " == *" ${ARCH} "* ]]; then - local FULL_LIBRARY_PATH="${BASEDIR}/prebuilt/$(get_build_directory)/${LIBRARY_NAME}/lib/${FFMPEG_LIB}.a" + local FULL_LIBRARY_PATH="${BASEDIR}/prebuilt/$(get_build_directory)/${LIBRARY_NAME}/lib/${FFMPEG_LIB}.$(get_ffmpeg_library_version ${FFMPEG_LIB}).dylib" LIPO_COMMAND+=" ${FULL_LIBRARY_PATH}" fi done - LIPO_COMMAND+=" -output ${FFMPEG_UNIVERSAL_LIBRARY_PATH}/lib/${FFMPEG_LIB}.a" + LIPO_COMMAND+=" -output ${FFMPEG_LIB_UNIVERSAL_LIBRARY_PATH}" ${LIPO_COMMAND} 1>>"${BASEDIR}"/build.log 2>&1 - if [[ $? -ne 0 ]]; then - echo -e "\nINFO: Failed to build universal ${LIBRARY_NAME} library\n" 1>>"${BASEDIR}"/build.log 2>&1 - echo -e "failed\n\nSee build.log for details\n" - exit 1 - fi + [[ $? -ne 0 ]] && exit_universal_library "${FFMPEG_LIB}" + done # COPY UNIVERSAL LIBRARY LICENSES if [[ ${GPL_ENABLED} == "yes" ]]; then - cp "${BASEDIR}"/LICENSE.GPLv3 "${FFMPEG_UNIVERSAL_LIBRARY_PATH}"/LICENSE 1>>"${BASEDIR}"/build.log 2>&1 + cp "${BASEDIR}"/LICENSE.GPLv3 "${FFMPEG_UNIVERSAL_LIBRARY_DIRECTORY}"/LICENSE 1>>"${BASEDIR}"/build.log 2>&1 else - cp "${BASEDIR}"/LICENSE.LGPLv3 "${FFMPEG_UNIVERSAL_LIBRARY_PATH}"/LICENSE 1>>"${BASEDIR}"/build.log 2>&1 + cp "${BASEDIR}"/LICENSE.LGPLv3 "${FFMPEG_UNIVERSAL_LIBRARY_DIRECTORY}"/LICENSE 1>>"${BASEDIR}"/build.log 2>&1 fi + for library in {0..46}; do + if [[ ${ENABLED_LIBRARIES[$library]} -eq 1 ]]; then + local ENABLED_LIBRARY_NAME="$(get_library_name ${library})" + local ENABLED_LIBRARY_NAME_UPPERCASE=$(echo "${ENABLED_LIBRARY_NAME}" | tr '[a-z]' '[A-Z]') + + RC=$(copy_external_library_license "${library}" "${FFMPEG_UNIVERSAL_LIBRARY_DIRECTORY}"/LICENSE.${ENABLED_LIBRARY_NAME_UPPERCASE}) + + [[ ${RC} -ne 0 ]] && exit_universal_library "${LIBRARY_NAME}" + fi + done echo -e "DEBUG: ${LIBRARY_NAME} universal library built for $(get_apple_architecture_variant "${ARCHITECTURE_VARIANT}") platform successfully\n" 1>>"${BASEDIR}"/build.log 2>&1 } @@ -357,8 +263,8 @@ create_ffmpeg_kit_universal_library() { local ARCHITECTURE_VARIANT="$1" local TARGET_ARCHITECTURES=("$(get_apple_architectures_for_variant "${ARCHITECTURE_VARIANT}")") local LIBRARY_NAME="ffmpeg-kit" - local UNIVERSAL_LIBRARY_PATH="${BASEDIR}/prebuilt/$(get_universal_library_directory "${ARCHITECTURE_VARIANT}")" - local FFMPEG_KIT_UNIVERSAL_LIBRARY_PATH="${UNIVERSAL_LIBRARY_PATH}/${LIBRARY_NAME}" + local UNIVERSAL_LIBRARY_DIRECTORY="${BASEDIR}/prebuilt/$(get_universal_library_directory "${ARCHITECTURE_VARIANT}")" + local FFMPEG_KIT_UNIVERSAL_LIBRARY_DIRECTORY="${UNIVERSAL_LIBRARY_DIRECTORY}/${LIBRARY_NAME}" local LIPO="$(xcrun --sdk "$(get_default_sdk_name)" -f lipo)" if [[ $(is_apple_architecture_variant_supported "${ARCHITECTURE_VARIANT}") -eq 0 ]]; then @@ -368,151 +274,50 @@ create_ffmpeg_kit_universal_library() { fi # INITIALIZE UNIVERSAL LIBRARY DIRECTORY - initialize_folder "${FFMPEG_KIT_UNIVERSAL_LIBRARY_PATH}" - initialize_folder "${FFMPEG_KIT_UNIVERSAL_LIBRARY_PATH}/include" - initialize_folder "${FFMPEG_KIT_UNIVERSAL_LIBRARY_PATH}/lib" + initialize_folder "${FFMPEG_KIT_UNIVERSAL_LIBRARY_DIRECTORY}" + initialize_folder "${FFMPEG_KIT_UNIVERSAL_LIBRARY_DIRECTORY}/include" + initialize_folder "${FFMPEG_KIT_UNIVERSAL_LIBRARY_DIRECTORY}/lib" local FFMPEG_KIT_DEFAULT_BUILD_PATH="${BASEDIR}/prebuilt/$(get_default_build_directory)/ffmpeg-kit" # COPY HEADER FILES - cp -r "${FFMPEG_KIT_DEFAULT_BUILD_PATH}"/include/* "${FFMPEG_KIT_UNIVERSAL_LIBRARY_PATH}"/include 1>>"${BASEDIR}"/build.log 2>&1 + cp -r "${FFMPEG_KIT_DEFAULT_BUILD_PATH}"/include/* "${FFMPEG_KIT_UNIVERSAL_LIBRARY_DIRECTORY}"/include 1>>"${BASEDIR}"/build.log 2>&1 + + local FFMPEG_KIT_UNIVERSAL_LIBRARY_PATH="${FFMPEG_KIT_UNIVERSAL_LIBRARY_DIRECTORY}/lib/libffmpegkit.dylib" LIPO_COMMAND="${LIPO} -create" for ARCH in "${TARGET_ARCH_LIST[@]}"; do if [[ " ${TARGET_ARCHITECTURES[*]} " == *" ${ARCH} "* ]]; then - local FULL_LIBRARY_PATH="${BASEDIR}/prebuilt/$(get_build_directory)/${LIBRARY_NAME}/lib/libffmpegkit.a" + local FULL_LIBRARY_PATH="${BASEDIR}/prebuilt/$(get_build_directory)/${LIBRARY_NAME}/lib/libffmpegkit.dylib" LIPO_COMMAND+=" ${FULL_LIBRARY_PATH}" fi done - LIPO_COMMAND+=" -output ${FFMPEG_KIT_UNIVERSAL_LIBRARY_PATH}/lib/libffmpegkit.a" + LIPO_COMMAND+=" -output ${FFMPEG_KIT_UNIVERSAL_LIBRARY_PATH}" ${LIPO_COMMAND} 1>>"${BASEDIR}"/build.log 2>&1 - if [[ $? -ne 0 ]]; then - echo -e "\nINFO: Failed to build universal ${LIBRARY_NAME} library\n" 1>>"${BASEDIR}"/build.log 2>&1 - echo -e "failed\n\nSee build.log for details\n" - exit 1 - fi + [[ $? -ne 0 ]] && exit_universal_library "${LIBRARY_NAME}" # COPY UNIVERSAL LIBRARY LICENSES if [[ ${GPL_ENABLED} == "yes" ]]; then - cp "${BASEDIR}"/LICENSE.GPLv3 "${FFMPEG_KIT_UNIVERSAL_LIBRARY_PATH}"/LICENSE 1>>"${BASEDIR}"/build.log 2>&1 + cp "${BASEDIR}"/LICENSE.GPLv3 "${FFMPEG_KIT_UNIVERSAL_LIBRARY_DIRECTORY}"/LICENSE 1>>"${BASEDIR}"/build.log 2>&1 else - cp "${BASEDIR}"/LICENSE.LGPLv3 "${FFMPEG_KIT_UNIVERSAL_LIBRARY_PATH}"/LICENSE 1>>"${BASEDIR}"/build.log 2>&1 + cp "${BASEDIR}"/LICENSE.LGPLv3 "${FFMPEG_KIT_UNIVERSAL_LIBRARY_DIRECTORY}"/LICENSE 1>>"${BASEDIR}"/build.log 2>&1 fi echo -e "DEBUG: ${LIBRARY_NAME} universal library built for $(get_apple_architecture_variant "${ARCHITECTURE_VARIANT}") platform successfully\n" 1>>"${BASEDIR}"/build.log 2>&1 } -# -# 1. library index -# 2. library version -# 3. static library name -# 4. framework name -# 5. architecture variant -# -create_single_framework() { - local LIBRARY_INDEX="$1" - local LIBRARY_VERSION="$2" - local STATIC_LIBRARY_NAME="$3" - local FRAMEWORK_NAME="$4" - local ARCHITECTURE_VARIANT="$5" - local LIBRARY_NAME=$(get_library_name "${LIBRARY_INDEX}") - local FRAMEWORK_PATH=${BASEDIR}/prebuilt/$(get_framework_directory "${ARCHITECTURE_VARIANT}")/${FRAMEWORK_NAME}.framework - - initialize_folder "${FRAMEWORK_PATH}" - - local CAPITAL_CASE_FRAMEWORK_NAME=$(to_capital_case "${FRAMEWORK_NAME}") - - build_info_plist "${FRAMEWORK_PATH}/Info.plist" "${LIBRARY_NAME}" "com.arthenica.ffmpegkit.${CAPITAL_CASE_FRAMEWORK_NAME}" "${LIBRARY_VERSION}" "${LIBRARY_VERSION}" - - cp "${BASEDIR}/prebuilt/$(get_universal_library_directory "${ARCHITECTURE_VARIANT}")/${LIBRARY_NAME}/lib/${STATIC_LIBRARY_NAME}.a" "${FRAMEWORK_PATH}/${FRAMEWORK_NAME}" 1>>"${BASEDIR}/build.log" 2>&1 - - if [[ $? -ne 0 ]]; then - echo -e "\nINFO: Failed to build ${LIBRARY_NAME} framework\n" 1>>"${BASEDIR}"/build.log 2>&1 - echo -e "failed\n\nSee build.log for details\n" - exit 1 - fi - - RC=$(copy_external_library_license "$LIBRARY_INDEX" "${FRAMEWORK_PATH}") - - if [[ ${RC} -ne 0 ]]; then - echo -e "\nINFO: Failed to build ${LIBRARY_NAME} framework\n" 1>>"${BASEDIR}"/build.log 2>&1 - echo -e "failed\n\nSee build.log for details\n" - exit 1 - fi -} - -# -# 1. library index -# 2. architecture variant -# -create_framework() { - local LIBRARY_INDEX="$1" - local ARCHITECTURE_VARIANT="$2" - local LIBRARY_NAME=$(get_library_name "${LIBRARY_INDEX}") - local PACKAGE_CONFIG_FILE_NAME=$(get_package_config_file_name "${LIBRARY_INDEX}") - - if [[ $(is_apple_architecture_variant_supported "${ARCHITECTURE_VARIANT}") -eq 0 ]]; then - - # THERE ARE NO ARCHITECTURES ENABLED FOR THIS LIBRARY TYPE - return - fi - - # EACH ENABLED LIBRARY HAS TO HAVE A .pc FILE AND A VERSION - local LIBRARY_VERSION=$(get_external_library_version "${PACKAGE_CONFIG_FILE_NAME}") - if [[ -z ${LIBRARY_VERSION} ]]; then - echo -e "Failed to detect the version off ${LIBRARY_NAME} from ${PACKAGE_CONFIG_FILE_NAME}.pc\n" 1>>"${BASEDIR}"/build.log 2>&1 - echo -e "failed\n\nSee build.log for details\n" - exit 1 - fi - - if [[ ${LIBRARY_LIBTHEORA} == "${LIBRARY_INDEX}" ]]; then - - create_single_framework "${LIBRARY_INDEX}" "${LIBRARY_VERSION}" "libtheora" "libtheora" "${ARCHITECTURE_VARIANT}" - create_single_framework "${LIBRARY_INDEX}" "${LIBRARY_VERSION}" "libtheoraenc" "libtheoraenc" "${ARCHITECTURE_VARIANT}" - create_single_framework "${LIBRARY_INDEX}" "${LIBRARY_VERSION}" "libtheoradec" "libtheoradec" "${ARCHITECTURE_VARIANT}" - - elif [[ ${LIBRARY_LIBVORBIS} == "${LIBRARY_INDEX}" ]]; then - - create_single_framework "${LIBRARY_INDEX}" "${LIBRARY_VERSION}" "libvorbisfile" "libvorbisfile" "${ARCHITECTURE_VARIANT}" - create_single_framework "${LIBRARY_INDEX}" "${LIBRARY_VERSION}" "libvorbisenc" "libvorbisenc" "${ARCHITECTURE_VARIANT}" - create_single_framework "${LIBRARY_INDEX}" "${LIBRARY_VERSION}" "libvorbis" "libvorbis" "${ARCHITECTURE_VARIANT}" - - elif [[ ${LIBRARY_LIBWEBP} == "${LIBRARY_INDEX}" ]]; then - - create_single_framework "${LIBRARY_INDEX}" "${LIBRARY_VERSION}" "libwebpmux" "libwebpmux" "${ARCHITECTURE_VARIANT}" - create_single_framework "${LIBRARY_INDEX}" "${LIBRARY_VERSION}" "libwebpdemux" "libwebpdemux" "${ARCHITECTURE_VARIANT}" - create_single_framework "${LIBRARY_INDEX}" "${LIBRARY_VERSION}" "libwebp" "libwebp" "${ARCHITECTURE_VARIANT}" - - elif [[ ${LIBRARY_OPENCOREAMR} == "${LIBRARY_INDEX}" ]]; then - - create_single_framework "${LIBRARY_INDEX}" "${LIBRARY_VERSION}" "libopencore-amrnb" "libopencore-amrnb" "${ARCHITECTURE_VARIANT}" - - elif [[ ${LIBRARY_NETTLE} == "${LIBRARY_INDEX}" ]]; then - - create_single_framework "${LIBRARY_INDEX}" "${LIBRARY_VERSION}" "libnettle" "libnettle" "${ARCHITECTURE_VARIANT}" - create_single_framework "${LIBRARY_INDEX}" "${LIBRARY_VERSION}" "libhogweed" "libhogweed" "${ARCHITECTURE_VARIANT}" - - else - - create_single_framework "${LIBRARY_INDEX}" "${LIBRARY_VERSION}" "$(get_static_archive_name "${LIBRARY_INDEX}")" "${LIBRARY_NAME}" "${ARCHITECTURE_VARIANT}" - - fi - - echo -e "DEBUG: ${LIBRARY_NAME} framework built for $(get_apple_architecture_variant "${ARCHITECTURE_VARIANT}") platform successfully\n" 1>>"${BASEDIR}"/build.log 2>&1 -} - # # 1. architecture variant # create_ffmpeg_framework() { local ARCHITECTURE_VARIANT="$1" local LIBRARY_NAME="ffmpeg" - local UNIVERSAL_LIBRARY_PATH="${BASEDIR}/prebuilt/$(get_universal_library_directory "${ARCHITECTURE_VARIANT}")" - local FFMPEG_UNIVERSAL_LIBRARY_PATH="${UNIVERSAL_LIBRARY_PATH}/${LIBRARY_NAME}" + local UNIVERSAL_LIBRARY_DIRECTORY="${BASEDIR}/prebuilt/$(get_universal_library_directory "${ARCHITECTURE_VARIANT}")" + local FFMPEG_UNIVERSAL_LIBRARY_PATH="${UNIVERSAL_LIBRARY_DIRECTORY}/${LIBRARY_NAME}" if [[ $(is_apple_architecture_variant_supported "${ARCHITECTURE_VARIANT}") -eq 0 ]]; then @@ -525,10 +330,7 @@ create_ffmpeg_framework() { local CAPITAL_CASE_FFMPEG_LIB_NAME=$(to_capital_case "${FFMPEG_LIB}") # EXTRACT FFMPEG VERSION - local FFMPEG_LIB_MAJOR=$(grep "#define ${FFMPEG_LIB_UPPERCASE}_VERSION_MAJOR" "${FFMPEG_UNIVERSAL_LIBRARY_PATH}/include/${FFMPEG_LIB}/version.h" | sed -e "s/#define ${FFMPEG_LIB_UPPERCASE}_VERSION_MAJOR//g;s/\ //g") - local FFMPEG_LIB_MINOR=$(grep "#define ${FFMPEG_LIB_UPPERCASE}_VERSION_MINOR" "${FFMPEG_UNIVERSAL_LIBRARY_PATH}/include/${FFMPEG_LIB}/version.h" | sed -e "s/#define ${FFMPEG_LIB_UPPERCASE}_VERSION_MINOR//g;s/\ //g") - local FFMPEG_LIB_MICRO=$(grep "#define ${FFMPEG_LIB_UPPERCASE}_VERSION_MICRO" "${FFMPEG_UNIVERSAL_LIBRARY_PATH}/include/${FFMPEG_LIB}/version.h" | sed "s/#define ${FFMPEG_LIB_UPPERCASE}_VERSION_MICRO//g;s/\ //g") - local FFMPEG_LIB_VERSION="${FFMPEG_LIB_MAJOR}.${FFMPEG_LIB_MINOR}.${FFMPEG_LIB_MICRO}" + local FFMPEG_LIB_VERSION="$(get_ffmpeg_library_version $FFMPEG_LIB)" # INITIALIZE FRAMEWORK DIRECTORY local FFMPEG_LIB_FRAMEWORK_PATH="${BASEDIR}/prebuilt/$(get_framework_directory "${ARCHITECTURE_VARIANT}")/${FFMPEG_LIB}.framework" @@ -539,7 +341,7 @@ create_ffmpeg_framework() { cp -r "${FFMPEG_UNIVERSAL_LIBRARY_PATH}/include/${FFMPEG_LIB}"/* "${FFMPEG_LIB_FRAMEWORK_PATH}"/Headers 1>>"${BASEDIR}"/build.log 2>&1 # COPY LIBRARY FILE - cp "${FFMPEG_UNIVERSAL_LIBRARY_PATH}/lib/${FFMPEG_LIB}.a" "${FFMPEG_LIB_FRAMEWORK_PATH}/${FFMPEG_LIB}" 1>>"${BASEDIR}"/build.log 2>&1 + cp "${FFMPEG_UNIVERSAL_LIBRARY_PATH}/lib/${FFMPEG_LIB}.dylib" "${FFMPEG_LIB_FRAMEWORK_PATH}/${FFMPEG_LIB}" 1>>"${BASEDIR}"/build.log 2>&1 # COPY FRAMEWORK LICENSES if [[ "${GPL_ENABLED}" == "yes" ]]; then @@ -552,6 +354,17 @@ create_ffmpeg_framework() { echo -e "DEBUG: ${FFMPEG_LIB} framework built for $(get_apple_architecture_variant "${ARCHITECTURE_VARIANT}") platform successfully\n" 1>>"${BASEDIR}"/build.log 2>&1 done + + for library in {0..46}; do + if [[ ${ENABLED_LIBRARIES[$library]} -eq 1 ]]; then + local ENABLED_LIBRARY_NAME="$(get_library_name ${library})" + local ENABLED_LIBRARY_NAME_UPPERCASE=$(echo "${ENABLED_LIBRARY_NAME}" | tr '[a-z]' '[A-Z]') + + RC=$(copy_external_library_license "${library}" ${BASEDIR}/prebuilt/$(get_framework_directory ${ARCHITECTURE_VARIANT})/libavcodec.framework/LICENSE.${ENABLED_LIBRARY_NAME_UPPERCASE}) + + [[ ${RC} -ne 0 ]] && exit_universal_library "${LIBRARY_NAME}" + fi + done } # @@ -560,8 +373,8 @@ create_ffmpeg_framework() { create_ffmpeg_kit_framework() { local ARCHITECTURE_VARIANT="$1" local LIBRARY_NAME="ffmpeg-kit" - local UNIVERSAL_LIBRARY_PATH="${BASEDIR}/prebuilt/$(get_universal_library_directory "${ARCHITECTURE_VARIANT}")" - local FFMPEG_KIT_UNIVERSAL_LIBRARY_PATH="${UNIVERSAL_LIBRARY_PATH}/${LIBRARY_NAME}" + local UNIVERSAL_LIBRARY_DIRECTORY="${BASEDIR}/prebuilt/$(get_universal_library_directory "${ARCHITECTURE_VARIANT}")" + local FFMPEG_KIT_UNIVERSAL_LIBRARY_DIRECTORY="${UNIVERSAL_LIBRARY_DIRECTORY}/${LIBRARY_NAME}" if [[ $(is_apple_architecture_variant_supported "${ARCHITECTURE_VARIANT}") -eq 0 ]]; then @@ -578,10 +391,10 @@ create_ffmpeg_kit_framework() { initialize_folder "${FFMPEG_KIT_FRAMEWORK_PATH}/Modules" # COPY HEADER FILES - cp -r "${FFMPEG_KIT_UNIVERSAL_LIBRARY_PATH}"/include/* "${FFMPEG_KIT_FRAMEWORK_PATH}"/Headers 1>>"${BASEDIR}"/build.log 2>&1 + cp -r "${FFMPEG_KIT_UNIVERSAL_LIBRARY_DIRECTORY}"/include/* "${FFMPEG_KIT_FRAMEWORK_PATH}"/Headers 1>>"${BASEDIR}"/build.log 2>&1 # COPY LIBRARY FILE - cp "${FFMPEG_KIT_UNIVERSAL_LIBRARY_PATH}/lib/libffmpegkit.a" "${FFMPEG_KIT_FRAMEWORK_PATH}"/ffmpegkit 1>>"${BASEDIR}"/build.log 2>&1 + cp "${FFMPEG_KIT_UNIVERSAL_LIBRARY_DIRECTORY}/lib/libffmpegkit.dylib" "${FFMPEG_KIT_FRAMEWORK_PATH}"/ffmpegkit 1>>"${BASEDIR}"/build.log 2>&1 # COPY FRAMEWORK LICENSES if [[ "${GPL_ENABLED}" == "yes" ]]; then @@ -596,88 +409,6 @@ create_ffmpeg_kit_framework() { echo -e "DEBUG: ffmpeg-kit framework built for $(get_apple_architecture_variant "${ARCHITECTURE_VARIANT}") platform successfully\n" 1>>"${BASEDIR}"/build.log 2>&1 } -# -# 1. framework name -# -create_single_xcframework() { - local FRAMEWORK_NAME="$1" - local XCFRAMEWORK_PATH=${BASEDIR}/prebuilt/$(get_xcframework_directory)/${FRAMEWORK_NAME}.xcframework - - initialize_folder "${XCFRAMEWORK_PATH}" - - local BUILD_COMMAND="xcodebuild -create-xcframework " - - for ARCHITECTURE_VARIANT in "${ARCHITECTURE_VARIANT_ARRAY[@]}"; do - if [[ $(is_apple_architecture_variant_supported "${ARCHITECTURE_VARIANT}") -eq 1 ]]; then - local FRAMEWORK_PATH=${BASEDIR}/prebuilt/$(get_framework_directory "${ARCHITECTURE_VARIANT}")/${FRAMEWORK_NAME}.framework - BUILD_COMMAND+=" -framework ${FRAMEWORK_PATH}" - fi - done - - BUILD_COMMAND+=" -output ${XCFRAMEWORK_PATH}" - - # EXECUTE CREATE FRAMEWORK COMMAND - COMMAND_OUTPUT=$(${BUILD_COMMAND} 2>&1) - RC=$? - echo -e "DEBUG: ${COMMAND_OUTPUT}\n" 1>>"${BASEDIR}"/build.log 2>&1 - - if [[ ${RC} -ne 0 ]]; then - echo -e "INFO: Building ${FRAMEWORK_NAME} xcframework failed\n" 1>>"${BASEDIR}"/build.log 2>&1 - echo -e "failed\n\nSee build.log for details\n" - exit 1 - fi - - # DO NOT ALLOW EMPTY FRAMEWORKS - if [[ ${COMMAND_OUTPUT} == *"is empty in library"* ]]; then - echo -e "INFO: Building ${FRAMEWORK_NAME} xcframework failed\n" 1>>"${BASEDIR}"/build.log 2>&1 - echo -e "failed\n\nSee build.log for details\n" - exit 1 - fi -} - -# -# 1. library index -# -create_xcframework() { - local LIBRARY_INDEX="$1" - local LIBRARY_NAME=$(get_library_name "${LIBRARY_INDEX}") - - if [[ ${LIBRARY_LIBTHEORA} == "${LIBRARY_INDEX}" ]]; then - - create_single_xcframework "libtheora" - create_single_xcframework "libtheoraenc" - create_single_xcframework "libtheoradec" - - elif [[ ${LIBRARY_LIBVORBIS} == "${LIBRARY_INDEX}" ]]; then - - create_single_xcframework "libvorbisfile" - create_single_xcframework "libvorbisenc" - create_single_xcframework "libvorbis" - - elif [[ ${LIBRARY_LIBWEBP} == "${LIBRARY_INDEX}" ]]; then - - create_single_xcframework "libwebpmux" - create_single_xcframework "libwebpdemux" - create_single_xcframework "libwebp" - - elif [[ ${LIBRARY_OPENCOREAMR} == "${LIBRARY_INDEX}" ]]; then - - create_single_xcframework "libopencore-amrnb" - - elif [[ ${LIBRARY_NETTLE} == "${LIBRARY_INDEX}" ]]; then - - create_single_xcframework "libnettle" - create_single_xcframework "libhogweed" - - else - - create_single_xcframework "${LIBRARY_NAME}" - - fi - - echo -e "DEBUG: xcframework for ${LIBRARY_NAME} built successfully\n" 1>>"${BASEDIR}"/build.log 2>&1 -} - create_ffmpeg_xcframework() { for FFMPEG_LIB in "${FFMPEG_LIBS[@]}"; do @@ -704,16 +435,12 @@ create_ffmpeg_xcframework() { echo -e "DEBUG: ${COMMAND_OUTPUT}\n" 1>>"${BASEDIR}"/build.log 2>&1 if [[ ${RC} -ne 0 ]]; then - echo -e "INFO: Building ${FRAMEWORK_NAME} xcframework failed\n" 1>>"${BASEDIR}"/build.log 2>&1 - echo -e "failed\n\nSee build.log for details\n" - exit 1 + exit_xcframework "${FRAMEWORK_NAME}" fi # DO NOT ALLOW EMPTY FRAMEWORKS if [[ ${COMMAND_OUTPUT} == *"is empty in library"* ]]; then - echo -e "INFO: Building ${FRAMEWORK_NAME} xcframework failed\n" 1>>"${BASEDIR}"/build.log 2>&1 - echo -e "failed\n\nSee build.log for details\n" - exit 1 + exit_xcframework "${FRAMEWORK_NAME}" fi echo -e "DEBUG: xcframework for ${FFMPEG_LIB} built successfully\n" 1>>"${BASEDIR}"/build.log 2>&1 @@ -744,16 +471,12 @@ create_ffmpeg_kit_xcframework() { echo -e "DEBUG: ${COMMAND_OUTPUT}\n" 1>>"${BASEDIR}"/build.log 2>&1 if [[ ${RC} -ne 0 ]]; then - echo -e "INFO: Building ${FRAMEWORK_NAME} xcframework failed\n" 1>>"${BASEDIR}"/build.log 2>&1 - echo -e "failed\n\nSee build.log for details\n" - exit 1 + exit_xcframework "${FRAMEWORK_NAME}" fi # DO NOT ALLOW EMPTY FRAMEWORKS if [[ ${COMMAND_OUTPUT} == *"is empty in library"* ]]; then - echo -e "INFO: Building ${FRAMEWORK_NAME} xcframework failed\n" 1>>"${BASEDIR}"/build.log 2>&1 - echo -e "failed\n\nSee build.log for details\n" - exit 1 + exit_xcframework "${FRAMEWORK_NAME}" fi echo -e "DEBUG: xcframework for ffmpeg-kit built successfully\n" 1>>"${BASEDIR}"/build.log 2>&1 @@ -1257,6 +980,33 @@ get_sdk_path() { echo "$(xcrun --sdk "$(get_sdk_name)" --show-sdk-path 2>>"${BASEDIR}"/build.log)" } +# +# 1. XCFRAMEWORK NAME +# +exit_xcframework() { + echo -e "INFO: Building $1 xcframework failed\n" 1>>"${BASEDIR}"/build.log 2>&1 + echo -e "failed\n\nSee build.log for details\n" + exit 1 +} + +# +# 1. FRAMEWORK NAME +# +exit_framework() { + echo -e "INFO: Building $1 framework failed\n" 1>>"${BASEDIR}"/build.log 2>&1 + echo -e "failed\n\nSee build.log for details\n" + exit 1 +} + +# +# 1. UNIVERSAL LIBRARY NAME +# +exit_universal_library() { + echo -e "\nINFO: Failed to build universal $1 library\n" 1>>"${BASEDIR}"/build.log 2>&1 + echo -e "failed\n\nSee build.log for details\n" + exit 1 +} + create_mason_cross_file() { cat >"$1" <>"${BASEDIR}"/build.log 2>&1 - for library in {0..46}; do - if [[ ${ENABLED_LIBRARIES[$library]} -eq 1 ]]; then - create_universal_library "${library}" "${ARCH_VAR_IOS}" - fi - done - create_ffmpeg_universal_library "${ARCH_VAR_IOS}" create_ffmpeg_kit_universal_library "${ARCH_VAR_IOS}" @@ -526,12 +521,6 @@ create_universal_libraries_for_ios_default_frameworks() { create_ios_default_frameworks() { echo -e "INFO: Building default frameworks\n" 1>>"${BASEDIR}"/build.log 2>&1 - for library in {0..46}; do - if [[ ${ENABLED_LIBRARIES[$library]} -eq 1 ]]; then - create_framework "${library}" "${ARCH_VAR_IOS}" - fi - done - create_ffmpeg_framework "${ARCH_VAR_IOS}" create_ffmpeg_kit_framework "${ARCH_VAR_IOS}" @@ -542,14 +531,6 @@ create_ios_default_frameworks() { create_universal_libraries_for_ios_xcframeworks() { echo -e "INFO: Building universal libraries for xcframeworks using ${TARGET_ARCH_LIST[@]}\n" 1>>"${BASEDIR}"/build.log 2>&1 - for library in {0..46}; do - if [[ ${ENABLED_LIBRARIES[$library]} -eq 1 ]]; then - create_universal_library "${library}" "${ARCH_VAR_IPHONEOS}" - create_universal_library "${library}" "${ARCH_VAR_IPHONESIMULATOR}" - create_universal_library "${library}" "${ARCH_VAR_MAC_CATALYST}" - fi - done - create_ffmpeg_universal_library "${ARCH_VAR_IPHONEOS}" create_ffmpeg_universal_library "${ARCH_VAR_IPHONESIMULATOR}" create_ffmpeg_universal_library "${ARCH_VAR_MAC_CATALYST}" @@ -564,14 +545,6 @@ create_universal_libraries_for_ios_xcframeworks() { create_frameworks_for_ios_xcframeworks() { echo -e "INFO: Building frameworks for xcframeworks\n" 1>>"${BASEDIR}"/build.log 2>&1 - for library in {0..46}; do - if [[ ${ENABLED_LIBRARIES[$library]} -eq 1 ]]; then - create_framework "${library}" "${ARCH_VAR_IPHONEOS}" - create_framework "${library}" "${ARCH_VAR_IPHONESIMULATOR}" - create_framework "${library}" "${ARCH_VAR_MAC_CATALYST}" - fi - done - create_ffmpeg_framework "${ARCH_VAR_IPHONEOS}" create_ffmpeg_framework "${ARCH_VAR_IPHONESIMULATOR}" create_ffmpeg_framework "${ARCH_VAR_MAC_CATALYST}" @@ -587,12 +560,6 @@ create_ios_xcframeworks() { export ARCHITECTURE_VARIANT_ARRAY=("${ARCH_VAR_IPHONEOS}" "${ARCH_VAR_IPHONESIMULATOR}" "${ARCH_VAR_MAC_CATALYST}") echo -e "INFO: Building xcframeworks\n" 1>>"${BASEDIR}"/build.log 2>&1 - for library in {0..46}; do - if [[ ${ENABLED_LIBRARIES[$library]} -eq 1 ]]; then - create_xcframework "${library}" - fi - done - create_ffmpeg_xcframework create_ffmpeg_kit_xcframework diff --git a/scripts/function-macos.sh b/scripts/function-macos.sh index a8b9031..c17ae23 100755 --- a/scripts/function-macos.sh +++ b/scripts/function-macos.sh @@ -405,12 +405,6 @@ create_universal_libraries_for_macos_default_frameworks() { echo -e "INFO: Building universal libraries in ${ROOT_UNIVERSAL_DIRECTORY_PATH} for default frameworks using ${TARGET_ARCH_LIST[@]}\n" 1>>"${BASEDIR}"/build.log 2>&1 - for library in {0..46}; do - if [[ ${ENABLED_LIBRARIES[$library]} -eq 1 ]]; then - create_universal_library "${library}" "${ARCH_VAR_MACOS}" - fi - done - create_ffmpeg_universal_library "${ARCH_VAR_MACOS}" create_ffmpeg_kit_universal_library "${ARCH_VAR_MACOS}" @@ -421,12 +415,6 @@ create_universal_libraries_for_macos_default_frameworks() { create_macos_default_frameworks() { echo -e "INFO: Building default frameworks\n" 1>>"${BASEDIR}"/build.log 2>&1 - for library in {0..46}; do - if [[ ${ENABLED_LIBRARIES[$library]} -eq 1 ]]; then - create_framework "${library}" "${ARCH_VAR_MACOS}" - fi - done - create_ffmpeg_framework "${ARCH_VAR_MACOS}" create_ffmpeg_kit_framework "${ARCH_VAR_MACOS}" @@ -437,12 +425,6 @@ create_macos_default_frameworks() { create_universal_libraries_for_macos_xcframeworks() { echo -e "INFO: Building universal libraries for xcframeworks using ${TARGET_ARCH_LIST[@]}\n" 1>>"${BASEDIR}"/build.log 2>&1 - for library in {0..46}; do - if [[ ${ENABLED_LIBRARIES[$library]} -eq 1 ]]; then - create_universal_library "${library}" "${ARCH_VAR_MACOS}" - fi - done - create_ffmpeg_universal_library "${ARCH_VAR_MACOS}" create_ffmpeg_kit_universal_library "${ARCH_VAR_MACOS}" @@ -453,12 +435,6 @@ create_universal_libraries_for_macos_xcframeworks() { create_frameworks_for_macos_xcframeworks() { echo -e "INFO: Building frameworks for xcframeworks\n" 1>>"${BASEDIR}"/build.log 2>&1 - for library in {0..46}; do - if [[ ${ENABLED_LIBRARIES[$library]} -eq 1 ]]; then - create_framework "${library}" "${ARCH_VAR_MACOS}" - fi - done - create_ffmpeg_framework "${ARCH_VAR_MACOS}" create_ffmpeg_kit_framework "${ARCH_VAR_MACOS}" @@ -470,12 +446,6 @@ create_macos_xcframeworks() { export ARCHITECTURE_VARIANT_ARRAY=("${ARCH_VAR_MACOS}") echo -e "INFO: Building xcframeworks\n" 1>>"${BASEDIR}"/build.log 2>&1 - for library in {0..46}; do - if [[ ${ENABLED_LIBRARIES[$library]} -eq 1 ]]; then - create_xcframework "${library}" - fi - done - create_ffmpeg_xcframework create_ffmpeg_kit_xcframework diff --git a/scripts/function-tvos.sh b/scripts/function-tvos.sh index 57ea64f..931c922 100755 --- a/scripts/function-tvos.sh +++ b/scripts/function-tvos.sh @@ -343,6 +343,7 @@ get_ldflags() { esac ;; *) + # NOTE THAT ffmpeg ALSO NEEDS BITCODE, IT IS ENABLED IN ffmpeg.sh echo "${ARCH_FLAGS} ${LINKED_LIBRARIES} ${COMMON_FLAGS} ${OPTIMIZATION_FLAGS}" ;; esac @@ -462,12 +463,6 @@ create_universal_libraries_for_tvos_default_frameworks() { echo -e "INFO: Building universal libraries in ${ROOT_UNIVERSAL_DIRECTORY_PATH} for default frameworks using ${TARGET_ARCH_LIST[@]}\n" 1>>"${BASEDIR}"/build.log 2>&1 - for library in {0..46}; do - if [[ ${ENABLED_LIBRARIES[$library]} -eq 1 ]]; then - create_universal_library "${library}" "${ARCH_VAR_TVOS}" - fi - done - create_ffmpeg_universal_library "${ARCH_VAR_TVOS}" create_ffmpeg_kit_universal_library "${ARCH_VAR_TVOS}" @@ -478,12 +473,6 @@ create_universal_libraries_for_tvos_default_frameworks() { create_tvos_default_frameworks() { echo -e "INFO: Building default frameworks\n" 1>>"${BASEDIR}"/build.log 2>&1 - for library in {0..46}; do - if [[ ${ENABLED_LIBRARIES[$library]} -eq 1 ]]; then - create_framework "${library}" "${ARCH_VAR_TVOS}" - fi - done - create_ffmpeg_framework "${ARCH_VAR_TVOS}" create_ffmpeg_kit_framework "${ARCH_VAR_TVOS}" @@ -494,13 +483,6 @@ create_tvos_default_frameworks() { create_universal_libraries_for_tvos_xcframeworks() { echo -e "INFO: Building universal libraries for xcframeworks using ${TARGET_ARCH_LIST[@]}\n" 1>>"${BASEDIR}"/build.log 2>&1 - for library in {0..46}; do - if [[ ${ENABLED_LIBRARIES[$library]} -eq 1 ]]; then - create_universal_library "${library}" "${ARCH_VAR_APPLETVOS}" - create_universal_library "${library}" "${ARCH_VAR_APPLETVSIMULATOR}" - fi - done - create_ffmpeg_universal_library "${ARCH_VAR_APPLETVOS}" create_ffmpeg_universal_library "${ARCH_VAR_APPLETVSIMULATOR}" @@ -513,13 +495,6 @@ create_universal_libraries_for_tvos_xcframeworks() { create_frameworks_for_tvos_xcframeworks() { echo -e "INFO: Building frameworks for xcframeworks\n" 1>>"${BASEDIR}"/build.log 2>&1 - for library in {0..46}; do - if [[ ${ENABLED_LIBRARIES[$library]} -eq 1 ]]; then - create_framework "${library}" "${ARCH_VAR_APPLETVOS}" - create_framework "${library}" "${ARCH_VAR_APPLETVSIMULATOR}" - fi - done - create_ffmpeg_framework "${ARCH_VAR_APPLETVOS}" create_ffmpeg_framework "${ARCH_VAR_APPLETVSIMULATOR}" @@ -533,12 +508,6 @@ create_tvos_xcframeworks() { export ARCHITECTURE_VARIANT_ARRAY=("${ARCH_VAR_APPLETVOS}" "${ARCH_VAR_APPLETVSIMULATOR}") echo -e "INFO: Building xcframeworks\n" 1>>"${BASEDIR}"/build.log 2>&1 - for library in {0..46}; do - if [[ ${ENABLED_LIBRARIES[$library]} -eq 1 ]]; then - create_xcframework "${library}" - fi - done - create_ffmpeg_xcframework create_ffmpeg_kit_xcframework diff --git a/scripts/function.sh b/scripts/function.sh index 85b23c4..b0eb680 100755 --- a/scripts/function.sh +++ b/scripts/function.sh @@ -571,6 +571,162 @@ GNU Lesser General Public License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version." } +get_ffmpeg_libavcodec_version() { + local MAJOR=$(grep -Eo ' LIBAVCODEC_VERSION_MAJOR .*' "${BASEDIR}"/src/ffmpeg/libavcodec/version.h | sed -e 's|LIBAVCODEC_VERSION_MAJOR||g;s| ||g') + local MINOR=$(grep -Eo ' LIBAVCODEC_VERSION_MINOR .*' "${BASEDIR}"/src/ffmpeg/libavcodec/version.h | sed -e 's|LIBAVCODEC_VERSION_MINOR||g;s| ||g') + local MICRO=$(grep -Eo ' LIBAVCODEC_VERSION_MICRO .*' "${BASEDIR}"/src/ffmpeg/libavcodec/version.h | sed -e 's|LIBAVCODEC_VERSION_MICRO||g;s| ||g') + + echo "${MAJOR}.${MINOR}.${MICRO}" +} + +get_ffmpeg_libavcodec_major_version() { + local MAJOR=$(grep -Eo ' LIBAVCODEC_VERSION_MAJOR .*' "${BASEDIR}"/src/ffmpeg/libavcodec/version.h | sed -e 's|LIBAVCODEC_VERSION_MAJOR||g;s| ||g') + + echo "${MAJOR}" +} + +get_ffmpeg_libavdevice_version() { + local MAJOR=$(grep -Eo ' LIBAVDEVICE_VERSION_MAJOR .*' "${BASEDIR}"/src/ffmpeg/libavdevice/version.h | sed -e 's|LIBAVDEVICE_VERSION_MAJOR||g;s| ||g') + local MINOR=$(grep -Eo ' LIBAVDEVICE_VERSION_MINOR .*' "${BASEDIR}"/src/ffmpeg/libavdevice/version.h | sed -e 's|LIBAVDEVICE_VERSION_MINOR||g;s| ||g') + local MICRO=$(grep -Eo ' LIBAVDEVICE_VERSION_MICRO .*' "${BASEDIR}"/src/ffmpeg/libavdevice/version.h | sed -e 's|LIBAVDEVICE_VERSION_MICRO||g;s| ||g') + + echo "${MAJOR}.${MINOR}.${MICRO}" +} + +get_ffmpeg_libavdevice_major_version() { + local MAJOR=$(grep -Eo ' LIBAVDEVICE_VERSION_MAJOR .*' "${BASEDIR}"/src/ffmpeg/libavdevice/version.h | sed -e 's|LIBAVDEVICE_VERSION_MAJOR||g;s| ||g') + + echo "${MAJOR}" +} + +get_ffmpeg_libavfilter_version() { + local MAJOR=$(grep -Eo ' LIBAVFILTER_VERSION_MAJOR .*' "${BASEDIR}"/src/ffmpeg/libavfilter/version.h | sed -e 's|LIBAVFILTER_VERSION_MAJOR||g;s| ||g') + local MINOR=$(grep -Eo ' LIBAVFILTER_VERSION_MINOR .*' "${BASEDIR}"/src/ffmpeg/libavfilter/version.h | sed -e 's|LIBAVFILTER_VERSION_MINOR||g;s| ||g') + local MICRO=$(grep -Eo ' LIBAVFILTER_VERSION_MICRO .*' "${BASEDIR}"/src/ffmpeg/libavfilter/version.h | sed -e 's|LIBAVFILTER_VERSION_MICRO||g;s| ||g') + + echo "${MAJOR}.${MINOR}.${MICRO}" +} + +get_ffmpeg_libavfilter_major_version() { + local MAJOR=$(grep -Eo ' LIBAVFILTER_VERSION_MAJOR .*' "${BASEDIR}"/src/ffmpeg/libavfilter/version.h | sed -e 's|LIBAVFILTER_VERSION_MAJOR||g;s| ||g') + + echo "${MAJOR}" +} + +get_ffmpeg_libavformat_version() { + local MAJOR=$(grep -Eo ' LIBAVFORMAT_VERSION_MAJOR .*' "${BASEDIR}"/src/ffmpeg/libavformat/version.h | sed -e 's|LIBAVFORMAT_VERSION_MAJOR||g;s| ||g') + local MINOR=$(grep -Eo ' LIBAVFORMAT_VERSION_MINOR .*' "${BASEDIR}"/src/ffmpeg/libavformat/version.h | sed -e 's|LIBAVFORMAT_VERSION_MINOR||g;s| ||g') + local MICRO=$(grep -Eo ' LIBAVFORMAT_VERSION_MICRO .*' "${BASEDIR}"/src/ffmpeg/libavformat/version.h | sed -e 's|LIBAVFORMAT_VERSION_MICRO||g;s| ||g') + + echo "${MAJOR}.${MINOR}.${MICRO}" +} + +get_ffmpeg_libavformat_major_version() { + local MAJOR=$(grep -Eo ' LIBAVFORMAT_VERSION_MAJOR .*' "${BASEDIR}"/src/ffmpeg/libavformat/version.h | sed -e 's|LIBAVFORMAT_VERSION_MAJOR||g;s| ||g') + + echo "${MAJOR}" +} + +get_ffmpeg_libavutil_version() { + local MAJOR=$(grep -Eo ' LIBAVUTIL_VERSION_MAJOR .*' "${BASEDIR}"/src/ffmpeg/libavutil/version.h | sed -e 's|LIBAVUTIL_VERSION_MAJOR||g;s| ||g') + local MINOR=$(grep -Eo ' LIBAVUTIL_VERSION_MINOR .*' "${BASEDIR}"/src/ffmpeg/libavutil/version.h | sed -e 's|LIBAVUTIL_VERSION_MINOR||g;s| ||g') + local MICRO=$(grep -Eo ' LIBAVUTIL_VERSION_MICRO .*' "${BASEDIR}"/src/ffmpeg/libavutil/version.h | sed -e 's|LIBAVUTIL_VERSION_MICRO||g;s| ||g') + + echo "${MAJOR}.${MINOR}.${MICRO}" +} + +get_ffmpeg_libavutil_major_version() { + local MAJOR=$(grep -Eo ' LIBAVUTIL_VERSION_MAJOR .*' "${BASEDIR}"/src/ffmpeg/libavutil/version.h | sed -e 's|LIBAVUTIL_VERSION_MAJOR||g;s| ||g') + + echo "${MAJOR}" +} + +get_ffmpeg_libswresample_version() { + local MAJOR=$(grep -Eo ' LIBSWRESAMPLE_VERSION_MAJOR .*' "${BASEDIR}"/src/ffmpeg/libswresample/version.h | sed -e 's|LIBSWRESAMPLE_VERSION_MAJOR||g;s| ||g') + local MINOR=$(grep -Eo ' LIBSWRESAMPLE_VERSION_MINOR .*' "${BASEDIR}"/src/ffmpeg/libswresample/version.h | sed -e 's|LIBSWRESAMPLE_VERSION_MINOR||g;s| ||g') + local MICRO=$(grep -Eo ' LIBSWRESAMPLE_VERSION_MICRO .*' "${BASEDIR}"/src/ffmpeg/libswresample/version.h | sed -e 's|LIBSWRESAMPLE_VERSION_MICRO||g;s| ||g') + + echo "${MAJOR}.${MINOR}.${MICRO}" +} + +get_ffmpeg_libswresample_major_version() { + local MAJOR=$(grep -Eo ' LIBSWRESAMPLE_VERSION_MAJOR .*' "${BASEDIR}"/src/ffmpeg/libswresample/version.h | sed -e 's|LIBSWRESAMPLE_VERSION_MAJOR||g;s| ||g') + + echo "${MAJOR}" +} + +get_ffmpeg_libswscale_version() { + local MAJOR=$(grep -Eo ' LIBSWSCALE_VERSION_MAJOR .*' "${BASEDIR}"/src/ffmpeg/libswscale/version.h | sed -e 's|LIBSWSCALE_VERSION_MAJOR||g;s| ||g') + local MINOR=$(grep -Eo ' LIBSWSCALE_VERSION_MINOR .*' "${BASEDIR}"/src/ffmpeg/libswscale/version.h | sed -e 's|LIBSWSCALE_VERSION_MINOR||g;s| ||g') + local MICRO=$(grep -Eo ' LIBSWSCALE_VERSION_MICRO .*' "${BASEDIR}"/src/ffmpeg/libswscale/version.h | sed -e 's|LIBSWSCALE_VERSION_MICRO||g;s| ||g') + + echo "${MAJOR}.${MINOR}.${MICRO}" +} + +get_ffmpeg_libswscale_major_version() { + local MAJOR=$(grep -Eo ' LIBSWSCALE_VERSION_MAJOR .*' "${BASEDIR}"/src/ffmpeg/libswscale/version.h | sed -e 's|LIBSWSCALE_VERSION_MAJOR||g;s| ||g') + + echo "${MAJOR}" +} + +# +# 1. LIBRARY NAME +# +get_ffmpeg_library_version() { + case $1 in + libavcodec) + echo "$(get_ffmpeg_libavcodec_version)" + ;; + libavdevice) + echo "$(get_ffmpeg_libavdevice_version)" + ;; + libavfilter) + echo "$(get_ffmpeg_libavfilter_version)" + ;; + libavformat) + echo "$(get_ffmpeg_libavformat_version)" + ;; + libavutil) + echo "$(get_ffmpeg_libavutil_version)" + ;; + libswresample) + echo "$(get_ffmpeg_libswresample_version)" + ;; + libswscale) + echo "$(get_ffmpeg_libswscale_version)" + ;; + esac +} + +# +# 1. LIBRARY NAME +# +get_ffmpeg_library_major_version() { + case $1 in + libavcodec) + echo "$(get_ffmpeg_libavcodec_major_version)" + ;; + libavdevice) + echo "$(get_ffmpeg_libavdevice_major_version)" + ;; + libavfilter) + echo "$(get_ffmpeg_libavfilter_major_version)" + ;; + libavformat) + echo "$(get_ffmpeg_libavformat_major_version)" + ;; + libavutil) + echo "$(get_ffmpeg_libavutil_major_version)" + ;; + libswresample) + echo "$(get_ffmpeg_libswresample_major_version)" + ;; + libswscale) + echo "$(get_ffmpeg_libswscale_major_version)" + ;; + esac +} + display_help_options() { echo -e "Options:" echo -e " -h, --help\t\t\tdisplay this help and exit" @@ -1317,11 +1473,11 @@ get_external_library_license_path() { } # 1 - library index -# 2 - output directory +# 2 - license path copy_external_library_license() { - output_path_array=("$2") - for output_path in "${output_path_array[@]}"; do - RESULT=$(copy_external_library_license_file "$1" "${output_path}/LICENSE") + license_path_array=("$2") + for license_path in "${license_path_array[@]}"; do + RESULT=$(copy_external_library_license_file "$1" "${license_path}") if [[ ${RESULT} -ne 0 ]]; then echo 1 return diff --git a/tools/create_ios_universal_test_package.sh b/tools/create_ios_universal_test_package.sh index 7fcd60e..c6e2c99 100755 --- a/tools/create_ios_universal_test_package.sh +++ b/tools/create_ios_universal_test_package.sh @@ -1,7 +1,7 @@ #!/bin/bash cd ../prebuilt/bundle-apple-universal-ios || exit 1 -find . -name "*.a" -not -path "./ffmpeg-kit/*" -exec cp {} ./ffmpeg-kit/lib \; || exit 1 +find . -name "*.dylib" -not -path "./ffmpeg-kit/*" -exec cp {} ./ffmpeg-kit/lib \; || exit 1 cp -r ffmpeg/include/* ffmpeg-kit/include || exit 1 # COPY LICENSE FILE OF EACH LIBRARY diff --git a/tools/create_macos_universal_test_package.sh b/tools/create_macos_universal_test_package.sh index 5742d4a..1bbb6c3 100755 --- a/tools/create_macos_universal_test_package.sh +++ b/tools/create_macos_universal_test_package.sh @@ -1,7 +1,7 @@ #!/bin/bash cd ../prebuilt/bundle-apple-universal-macos || exit 1 -find . -name "*.a" -not -path "./ffmpeg-kit/*" -exec cp {} ./ffmpeg-kit/lib \; || exit 1 +find . -name "*.dylib" -not -path "./ffmpeg-kit/*" -exec cp {} ./ffmpeg-kit/lib \; || exit 1 cp -r ffmpeg/include/* ffmpeg-kit/include || exit 1 # COPY LICENSE FILE OF EACH LIBRARY diff --git a/tools/create_tvos_universal_test_package.sh b/tools/create_tvos_universal_test_package.sh index 0fa0322..80ab6d0 100755 --- a/tools/create_tvos_universal_test_package.sh +++ b/tools/create_tvos_universal_test_package.sh @@ -1,7 +1,7 @@ #!/bin/bash cd ../prebuilt/bundle-apple-universal-tvos || exit 1 -find . -name "*.a" -not -path "./ffmpeg-kit/*" -exec cp {} ./ffmpeg-kit/lib \; || exit 1 +find . -name "*.dylib" -not -path "./ffmpeg-kit/*" -exec cp {} ./ffmpeg-kit/lib \; || exit 1 cp -r ffmpeg/include/* ffmpeg-kit/include || exit 1 # COPY LICENSE FILE OF EACH LIBRARY diff --git a/tools/release/apple/ffmpeg-kit-ios-audio.podspec b/tools/release/apple/ffmpeg-kit-ios-audio.podspec index b171d48..a9c33eb 100644 --- a/tools/release/apple/ffmpeg-kit-ios-audio.podspec +++ b/tools/release/apple/ffmpeg-kit-ios-audio.podspec @@ -1,7 +1,7 @@ Pod::Spec.new do |s| s.name = "ffmpeg-kit-ios-audio" s.version = "VERSION" - s.summary = "FFmpeg Kit iOS Audio Static Framework" + s.summary = "FFmpeg Kit iOS Audio Shared Framework" s.description = <<-DESC DESCRIPTION DESC diff --git a/tools/release/apple/ffmpeg-kit-ios-full-gpl.podspec b/tools/release/apple/ffmpeg-kit-ios-full-gpl.podspec index 548506f..1f122a5 100644 --- a/tools/release/apple/ffmpeg-kit-ios-full-gpl.podspec +++ b/tools/release/apple/ffmpeg-kit-ios-full-gpl.podspec @@ -1,7 +1,7 @@ Pod::Spec.new do |s| s.name = "ffmpeg-kit-ios-full-gpl" s.version = "VERSION" - s.summary = "FFmpeg Kit iOS Full GPL Static Framework" + s.summary = "FFmpeg Kit iOS Full GPL Shared Framework" s.description = <<-DESC DESCRIPTION DESC diff --git a/tools/release/apple/ffmpeg-kit-ios-full.podspec b/tools/release/apple/ffmpeg-kit-ios-full.podspec index 38f08ac..0379ff4 100644 --- a/tools/release/apple/ffmpeg-kit-ios-full.podspec +++ b/tools/release/apple/ffmpeg-kit-ios-full.podspec @@ -1,7 +1,7 @@ Pod::Spec.new do |s| s.name = "ffmpeg-kit-ios-full" s.version = "VERSION" - s.summary = "FFmpeg Kit iOS Full Static Framework" + s.summary = "FFmpeg Kit iOS Full Shared Framework" s.description = <<-DESC DESCRIPTION DESC diff --git a/tools/release/apple/ffmpeg-kit-ios-https-gpl.podspec b/tools/release/apple/ffmpeg-kit-ios-https-gpl.podspec index 218bbe3..65b6c8c 100644 --- a/tools/release/apple/ffmpeg-kit-ios-https-gpl.podspec +++ b/tools/release/apple/ffmpeg-kit-ios-https-gpl.podspec @@ -1,7 +1,7 @@ Pod::Spec.new do |s| s.name = "ffmpeg-kit-ios-https-gpl" s.version = "VERSION" - s.summary = "FFmpeg Kit iOS Https GPL Static Framework" + s.summary = "FFmpeg Kit iOS Https GPL Shared Framework" s.description = <<-DESC DESCRIPTION DESC diff --git a/tools/release/apple/ffmpeg-kit-ios-https.podspec b/tools/release/apple/ffmpeg-kit-ios-https.podspec index 7cc5db3..5c1a381 100644 --- a/tools/release/apple/ffmpeg-kit-ios-https.podspec +++ b/tools/release/apple/ffmpeg-kit-ios-https.podspec @@ -1,7 +1,7 @@ Pod::Spec.new do |s| s.name = "ffmpeg-kit-ios-https" s.version = "VERSION" - s.summary = "FFmpeg Kit iOS Https Static Framework" + s.summary = "FFmpeg Kit iOS Https Shared Framework" s.description = <<-DESC DESCRIPTION DESC diff --git a/tools/release/apple/ffmpeg-kit-ios-min-gpl.podspec b/tools/release/apple/ffmpeg-kit-ios-min-gpl.podspec index 6b1ff4b..36fb68a 100644 --- a/tools/release/apple/ffmpeg-kit-ios-min-gpl.podspec +++ b/tools/release/apple/ffmpeg-kit-ios-min-gpl.podspec @@ -1,7 +1,7 @@ Pod::Spec.new do |s| s.name = "ffmpeg-kit-ios-min-gpl" s.version = "VERSION" - s.summary = "FFmpeg Kit iOS Min GPL Static Framework" + s.summary = "FFmpeg Kit iOS Min GPL Shared Framework" s.description = <<-DESC DESCRIPTION DESC diff --git a/tools/release/apple/ffmpeg-kit-ios-min.podspec b/tools/release/apple/ffmpeg-kit-ios-min.podspec index d800b40..e782125 100644 --- a/tools/release/apple/ffmpeg-kit-ios-min.podspec +++ b/tools/release/apple/ffmpeg-kit-ios-min.podspec @@ -1,7 +1,7 @@ Pod::Spec.new do |s| s.name = "ffmpeg-kit-ios-min" s.version = "VERSION" - s.summary = "FFmpeg Kit iOS Min Static Framework" + s.summary = "FFmpeg Kit iOS Min Shared Framework" s.description = <<-DESC DESCRIPTION DESC diff --git a/tools/release/apple/ffmpeg-kit-ios-video.podspec b/tools/release/apple/ffmpeg-kit-ios-video.podspec index 0beacb2..a014fe3 100644 --- a/tools/release/apple/ffmpeg-kit-ios-video.podspec +++ b/tools/release/apple/ffmpeg-kit-ios-video.podspec @@ -1,7 +1,7 @@ Pod::Spec.new do |s| s.name = "ffmpeg-kit-ios-video" s.version = "VERSION" - s.summary = "FFmpeg Kit iOS Video Static Framework" + s.summary = "FFmpeg Kit iOS Video Shared Framework" s.description = <<-DESC DESCRIPTION DESC diff --git a/tools/release/apple/ffmpeg-kit-macos-audio.podspec b/tools/release/apple/ffmpeg-kit-macos-audio.podspec index a4b42f1..d9bbeda 100644 --- a/tools/release/apple/ffmpeg-kit-macos-audio.podspec +++ b/tools/release/apple/ffmpeg-kit-macos-audio.podspec @@ -1,7 +1,7 @@ Pod::Spec.new do |s| s.name = "ffmpeg-kit-macos-audio" s.version = "VERSION" - s.summary = "FFmpeg Kit macOS Audio Static Framework" + s.summary = "FFmpeg Kit macOS Audio Shared Framework" s.description = <<-DESC DESCRIPTION DESC diff --git a/tools/release/apple/ffmpeg-kit-macos-full-gpl.podspec b/tools/release/apple/ffmpeg-kit-macos-full-gpl.podspec index ea16246..220674b 100644 --- a/tools/release/apple/ffmpeg-kit-macos-full-gpl.podspec +++ b/tools/release/apple/ffmpeg-kit-macos-full-gpl.podspec @@ -1,7 +1,7 @@ Pod::Spec.new do |s| s.name = "ffmpeg-kit-macos-full-gpl" s.version = "VERSION" - s.summary = "FFmpeg Kit macOS Full GPL Static Framework" + s.summary = "FFmpeg Kit macOS Full GPL Shared Framework" s.description = <<-DESC DESCRIPTION DESC diff --git a/tools/release/apple/ffmpeg-kit-macos-full.podspec b/tools/release/apple/ffmpeg-kit-macos-full.podspec index 54f7a44..6d9d4f3 100644 --- a/tools/release/apple/ffmpeg-kit-macos-full.podspec +++ b/tools/release/apple/ffmpeg-kit-macos-full.podspec @@ -1,7 +1,7 @@ Pod::Spec.new do |s| s.name = "ffmpeg-kit-macos-full" s.version = "VERSION" - s.summary = "FFmpeg Kit macOS Full Static Framework" + s.summary = "FFmpeg Kit macOS Full Shared Framework" s.description = <<-DESC DESCRIPTION DESC diff --git a/tools/release/apple/ffmpeg-kit-macos-https-gpl.podspec b/tools/release/apple/ffmpeg-kit-macos-https-gpl.podspec index 5deb092..d26f946 100644 --- a/tools/release/apple/ffmpeg-kit-macos-https-gpl.podspec +++ b/tools/release/apple/ffmpeg-kit-macos-https-gpl.podspec @@ -1,7 +1,7 @@ Pod::Spec.new do |s| s.name = "ffmpeg-kit-macos-https-gpl" s.version = "VERSION" - s.summary = "FFmpeg Kit macOS Https GPL Static Framework" + s.summary = "FFmpeg Kit macOS Https GPL Shared Framework" s.description = <<-DESC DESCRIPTION DESC diff --git a/tools/release/apple/ffmpeg-kit-macos-https.podspec b/tools/release/apple/ffmpeg-kit-macos-https.podspec index f4a4170..20de514 100644 --- a/tools/release/apple/ffmpeg-kit-macos-https.podspec +++ b/tools/release/apple/ffmpeg-kit-macos-https.podspec @@ -1,7 +1,7 @@ Pod::Spec.new do |s| s.name = "ffmpeg-kit-macos-https" s.version = "VERSION" - s.summary = "FFmpeg Kit macOS Https Static Framework" + s.summary = "FFmpeg Kit macOS Https Shared Framework" s.description = <<-DESC DESCRIPTION DESC diff --git a/tools/release/apple/ffmpeg-kit-macos-min-gpl.podspec b/tools/release/apple/ffmpeg-kit-macos-min-gpl.podspec index f6a2da7..6e63e11 100644 --- a/tools/release/apple/ffmpeg-kit-macos-min-gpl.podspec +++ b/tools/release/apple/ffmpeg-kit-macos-min-gpl.podspec @@ -1,7 +1,7 @@ Pod::Spec.new do |s| s.name = "ffmpeg-kit-macos-min-gpl" s.version = "VERSION" - s.summary = "FFmpeg Kit macOS Min GPL Static Framework" + s.summary = "FFmpeg Kit macOS Min GPL Shared Framework" s.description = <<-DESC DESCRIPTION DESC diff --git a/tools/release/apple/ffmpeg-kit-macos-min.podspec b/tools/release/apple/ffmpeg-kit-macos-min.podspec index 0ef2562..25654f5 100644 --- a/tools/release/apple/ffmpeg-kit-macos-min.podspec +++ b/tools/release/apple/ffmpeg-kit-macos-min.podspec @@ -1,7 +1,7 @@ Pod::Spec.new do |s| s.name = "ffmpeg-kit-macos-min" s.version = "VERSION" - s.summary = "FFmpeg Kit macOS Min Static Framework" + s.summary = "FFmpeg Kit macOS Min Shared Framework" s.description = <<-DESC DESCRIPTION DESC diff --git a/tools/release/apple/ffmpeg-kit-macos-video.podspec b/tools/release/apple/ffmpeg-kit-macos-video.podspec index 012b968..3520199 100644 --- a/tools/release/apple/ffmpeg-kit-macos-video.podspec +++ b/tools/release/apple/ffmpeg-kit-macos-video.podspec @@ -1,7 +1,7 @@ Pod::Spec.new do |s| s.name = "ffmpeg-kit-macos-video" s.version = "VERSION" - s.summary = "FFmpeg Kit macOS Video Static Framework" + s.summary = "FFmpeg Kit macOS Video Shared Framework" s.description = <<-DESC DESCRIPTION DESC diff --git a/tools/release/apple/ffmpeg-kit-tvos-audio.podspec b/tools/release/apple/ffmpeg-kit-tvos-audio.podspec index 98cbf65..5952a49 100644 --- a/tools/release/apple/ffmpeg-kit-tvos-audio.podspec +++ b/tools/release/apple/ffmpeg-kit-tvos-audio.podspec @@ -1,7 +1,7 @@ Pod::Spec.new do |s| s.name = "ffmpeg-kit-tvos-audio" s.version = "VERSION" - s.summary = "FFmpeg Kit tvOS Audio Static Framework" + s.summary = "FFmpeg Kit tvOS Audio Shared Framework" s.description = <<-DESC DESCRIPTION DESC diff --git a/tools/release/apple/ffmpeg-kit-tvos-full-gpl.podspec b/tools/release/apple/ffmpeg-kit-tvos-full-gpl.podspec index 577d857..73210ad 100644 --- a/tools/release/apple/ffmpeg-kit-tvos-full-gpl.podspec +++ b/tools/release/apple/ffmpeg-kit-tvos-full-gpl.podspec @@ -1,7 +1,7 @@ Pod::Spec.new do |s| s.name = "ffmpeg-kit-tvos-full-gpl" s.version = "VERSION" - s.summary = "FFmpeg Kit tvOS Full GPL Static Framework" + s.summary = "FFmpeg Kit tvOS Full GPL Shared Framework" s.description = <<-DESC DESCRIPTION DESC diff --git a/tools/release/apple/ffmpeg-kit-tvos-full.podspec b/tools/release/apple/ffmpeg-kit-tvos-full.podspec index 63b1946..f83c7ca 100644 --- a/tools/release/apple/ffmpeg-kit-tvos-full.podspec +++ b/tools/release/apple/ffmpeg-kit-tvos-full.podspec @@ -1,7 +1,7 @@ Pod::Spec.new do |s| s.name = "ffmpeg-kit-tvos-full" s.version = "VERSION" - s.summary = "FFmpeg Kit tvOS Full Static Framework" + s.summary = "FFmpeg Kit tvOS Full Shared Framework" s.description = <<-DESC DESCRIPTION DESC diff --git a/tools/release/apple/ffmpeg-kit-tvos-https-gpl.podspec b/tools/release/apple/ffmpeg-kit-tvos-https-gpl.podspec index 98b27c5..618f552 100644 --- a/tools/release/apple/ffmpeg-kit-tvos-https-gpl.podspec +++ b/tools/release/apple/ffmpeg-kit-tvos-https-gpl.podspec @@ -1,7 +1,7 @@ Pod::Spec.new do |s| s.name = "ffmpeg-kit-tvos-https-gpl" s.version = "VERSION" - s.summary = "FFmpeg Kit tvOS Https GPL Static Framework" + s.summary = "FFmpeg Kit tvOS Https GPL Shared Framework" s.description = <<-DESC DESCRIPTION DESC diff --git a/tools/release/apple/ffmpeg-kit-tvos-https.podspec b/tools/release/apple/ffmpeg-kit-tvos-https.podspec index d00368b..ea1e64b 100644 --- a/tools/release/apple/ffmpeg-kit-tvos-https.podspec +++ b/tools/release/apple/ffmpeg-kit-tvos-https.podspec @@ -1,7 +1,7 @@ Pod::Spec.new do |s| s.name = "ffmpeg-kit-tvos-https" s.version = "VERSION" - s.summary = "FFmpeg Kit tvOS Https Static Framework" + s.summary = "FFmpeg Kit tvOS Https Shared Framework" s.description = <<-DESC DESCRIPTION DESC diff --git a/tools/release/apple/ffmpeg-kit-tvos-min-gpl.podspec b/tools/release/apple/ffmpeg-kit-tvos-min-gpl.podspec index 9bb5698..c164537 100644 --- a/tools/release/apple/ffmpeg-kit-tvos-min-gpl.podspec +++ b/tools/release/apple/ffmpeg-kit-tvos-min-gpl.podspec @@ -1,7 +1,7 @@ Pod::Spec.new do |s| s.name = "ffmpeg-kit-tvos-min-gpl" s.version = "VERSION" - s.summary = "FFmpeg Kit tvOS Min GPL Static Framework" + s.summary = "FFmpeg Kit tvOS Min GPL Shared Framework" s.description = <<-DESC DESCRIPTION DESC diff --git a/tools/release/apple/ffmpeg-kit-tvos-min.podspec b/tools/release/apple/ffmpeg-kit-tvos-min.podspec index 9c8676a..25d7a5d 100644 --- a/tools/release/apple/ffmpeg-kit-tvos-min.podspec +++ b/tools/release/apple/ffmpeg-kit-tvos-min.podspec @@ -1,7 +1,7 @@ Pod::Spec.new do |s| s.name = "ffmpeg-kit-tvos-min" s.version = "VERSION" - s.summary = "FFmpeg Kit tvOS Min Static Framework" + s.summary = "FFmpeg Kit tvOS Min Shared Framework" s.description = <<-DESC DESCRIPTION DESC diff --git a/tools/release/apple/ffmpeg-kit-tvos-video.podspec b/tools/release/apple/ffmpeg-kit-tvos-video.podspec index e785c5a..d598116 100644 --- a/tools/release/apple/ffmpeg-kit-tvos-video.podspec +++ b/tools/release/apple/ffmpeg-kit-tvos-video.podspec @@ -1,7 +1,7 @@ Pod::Spec.new do |s| s.name = "ffmpeg-kit-tvos-video" s.version = "VERSION" - s.summary = "FFmpeg Kit tvOS Video Static Framework" + s.summary = "FFmpeg Kit tvOS Video Shared Framework" s.description = <<-DESC DESCRIPTION DESC diff --git a/tools/release/ios.lts.sh b/tools/release/ios.lts.sh index e1a78a8..eec9c55 100755 --- a/tools/release/ios.lts.sh +++ b/tools/release/ios.lts.sh @@ -36,7 +36,7 @@ create_package() { mkdir -p "${CURRENT_UNIVERSAL_PACKAGE}"/lib || exit 1 cd "${SOURCE_UNIVERSAL_PACKAGE}" || exit 1 - find . -name "*.a" -exec cp {} "${CURRENT_UNIVERSAL_PACKAGE}"/lib \; || exit 1 + find . -name "*.dylib" -exec cp {} "${CURRENT_UNIVERSAL_PACKAGE}"/lib \; || exit 1 # COPY THE LICENSE FILE OF EACH LIBRARY LICENSE_FILES=$(find . -name LICENSE | grep -vi ffmpeg) diff --git a/tools/release/macos.lts.sh b/tools/release/macos.lts.sh index 150ec28..3dcd08b 100755 --- a/tools/release/macos.lts.sh +++ b/tools/release/macos.lts.sh @@ -35,7 +35,7 @@ create_package() { mkdir -p "${CURRENT_UNIVERSAL_PACKAGE}"/lib || exit 1 cd "${SOURCE_UNIVERSAL_PACKAGE}" || exit 1 - find . -name "*.a" -exec cp {} "${CURRENT_UNIVERSAL_PACKAGE}"/lib \; || exit 1 + find . -name "*.dylib" -exec cp {} "${CURRENT_UNIVERSAL_PACKAGE}"/lib \; || exit 1 # COPY THE LICENSE FILE OF EACH LIBRARY LICENSE_FILES=$(find . -name LICENSE | grep -vi ffmpeg) diff --git a/tools/release/tvos.lts.sh b/tools/release/tvos.lts.sh index a71f472..9345dcd 100755 --- a/tools/release/tvos.lts.sh +++ b/tools/release/tvos.lts.sh @@ -35,7 +35,7 @@ create_package() { mkdir -p "${CURRENT_UNIVERSAL_PACKAGE}"/lib || exit 1 cd "${SOURCE_UNIVERSAL_PACKAGE}" || exit 1 - find . -name "*.a" -exec cp {} "${CURRENT_UNIVERSAL_PACKAGE}"/lib \; || exit 1 + find . -name "*.dylib" -exec cp {} "${CURRENT_UNIVERSAL_PACKAGE}"/lib \; || exit 1 # COPY LICENSE FILE OF EACH LIBRARY LICENSE_FILES=$(find . -name LICENSE | grep -vi ffmpeg) diff --git a/tvos.sh b/tvos.sh index 51e9a91..18422c3 100755 --- a/tvos.sh +++ b/tvos.sh @@ -165,7 +165,7 @@ if [[ -z ${FFMPEG_KIT_XCF_BUILD} ]] && [[ ${ENABLED_ARCHITECTURES[${ARCH_ARM64}] disable_arch "arm64-simulator" fi -echo -e "\nBuilding ffmpeg-kit ${BUILD_TYPE_ID}static library for tvOS\n" +echo -e "\nBuilding ffmpeg-kit ${BUILD_TYPE_ID}shared library for tvOS\n" echo -e -n "INFO: Building ffmpeg-kit ${BUILD_VERSION} ${BUILD_TYPE_ID}for tvOS: " 1>>"${BASEDIR}"/build.log 2>&1 echo -e "$(date)\n" 1>>"${BASEDIR}"/build.log 2>&1 From 431e95fd73442e4107c0bfaa5c3810e79efb2e1c Mon Sep 17 00:00:00 2001 From: Taner Sener Date: Sun, 31 Oct 2021 21:50:08 +0000 Subject: [PATCH 09/45] use min deployment target to auto-disable not-supported architectures --- ios.sh | 10 +++------- macos.sh | 3 --- scripts/function-apple.sh | 32 +++++++++++++++++++------------- scripts/function-ios.sh | 2 +- scripts/function-macos.sh | 2 +- scripts/function-tvos.sh | 2 +- scripts/function.sh | 27 +++++++++++++++------------ tvos.sh | 3 --- 8 files changed, 40 insertions(+), 41 deletions(-) diff --git a/ios.sh b/ios.sh index 237c639..7a11101 100755 --- a/ios.sh +++ b/ios.sh @@ -160,13 +160,9 @@ if [[ -n ${DISPLAY_HELP} ]]; then fi # DISABLE NOT SUPPORTED ARCHITECTURES -disable_ios_architecture_not_supported_on_detected_sdk_version "${ARCH_ARMV7}" "${DETECTED_IOS_SDK_VERSION}" -disable_ios_architecture_not_supported_on_detected_sdk_version "${ARCH_ARMV7S}" "${DETECTED_IOS_SDK_VERSION}" -disable_ios_architecture_not_supported_on_detected_sdk_version "${ARCH_I386}" "${DETECTED_IOS_SDK_VERSION}" -disable_ios_architecture_not_supported_on_detected_sdk_version "${ARCH_ARM64E}" "${DETECTED_IOS_SDK_VERSION}" -disable_ios_architecture_not_supported_on_detected_sdk_version "${ARCH_X86_64_MAC_CATALYST}" "${DETECTED_IOS_SDK_VERSION}" -disable_ios_architecture_not_supported_on_detected_sdk_version "${ARCH_ARM64_MAC_CATALYST}" "${DETECTED_IOS_SDK_VERSION}" -disable_ios_architecture_not_supported_on_detected_sdk_version "${ARCH_ARM64_SIMULATOR}" "${DETECTED_IOS_SDK_VERSION}" +disable_ios_architecture_not_supported_on_detected_sdk_version "${ARCH_ARMV7}" +disable_ios_architecture_not_supported_on_detected_sdk_version "${ARCH_ARMV7S}" +disable_ios_architecture_not_supported_on_detected_sdk_version "${ARCH_I386}" # CHECK SOME RULES FOR .framework BUNDLES diff --git a/macos.sh b/macos.sh index 208ff73..fce67fa 100755 --- a/macos.sh +++ b/macos.sh @@ -154,9 +154,6 @@ if [[ -n ${DISPLAY_HELP} ]]; then exit 0 fi -# DISABLE NOT SUPPORTED ARCHITECTURES -disable_macos_architecture_not_supported_on_detected_sdk_version "${ARCH_ARM64}" "${DETECTED_MACOS_SDK_VERSION}" - echo -e "\nBuilding ffmpeg-kit ${BUILD_TYPE_ID}shared library for macOS\n" echo -e -n "INFO: Building ffmpeg-kit ${BUILD_VERSION} ${BUILD_TYPE_ID}for macOS: " 1>>"${BASEDIR}"/build.log 2>&1 echo -e "$(date)\n" 1>>"${BASEDIR}"/build.log 2>&1 diff --git a/scripts/function-apple.sh b/scripts/function-apple.sh index f60664d..b49cde0 100755 --- a/scripts/function-apple.sh +++ b/scripts/function-apple.sh @@ -22,7 +22,6 @@ get_external_library_version() { # # 1. architecture index -# 2. detected sdk version # disable_ios_architecture_not_supported_on_detected_sdk_version() { local ARCH_NAME=$(get_arch_name $1) @@ -31,7 +30,7 @@ disable_ios_architecture_not_supported_on_detected_sdk_version() { armv7 | armv7s | i386) # SUPPORTED UNTIL IOS SDK 10.3.1 - if [[ $(compare_versions "$2" "10.3.1") -le 0 ]]; then + if [[ $(compare_versions "$IOS_MIN_VERSION" "10.3.1") -le 0 ]]; then local SUPPORTED=1 else local SUPPORTED=0 @@ -40,7 +39,7 @@ disable_ios_architecture_not_supported_on_detected_sdk_version() { arm64e) # INTRODUCED IN IOS SDK 10.1 - if [[ $(compare_versions "$2" "10.1") -ge 1 ]]; then + if [[ $(compare_versions "$IOS_MIN_VERSION" "10.1") -ge 1 ]]; then local SUPPORTED=1 else local SUPPORTED=0 @@ -49,16 +48,25 @@ disable_ios_architecture_not_supported_on_detected_sdk_version() { x86-64-mac-catalyst) # INTRODUCED IN IOS SDK 13.0 - if [[ $(compare_versions "$2" "13") -ge 1 ]]; then + if [[ $(compare_versions "$MAC_CATALYST_MIN_VERSION" "13.0") -ge 1 ]]; then local SUPPORTED=1 else local SUPPORTED=0 fi ;; - arm64-*) + arm64-mac-catalyst) # INTRODUCED IN IOS SDK 14.0 - if [[ $(compare_versions "$2" "14") -ge 1 ]]; then + if [[ $(compare_versions "$MAC_CATALYST_MIN_VERSION" "14.0") -ge 1 ]]; then + local SUPPORTED=1 + else + local SUPPORTED=0 + fi + ;; + arm64-simulator) + + # INTRODUCED IN IOS SDK 14.0 + if [[ $(compare_versions "$IOS_MIN_VERSION" "14.0") -ge 1 ]]; then local SUPPORTED=1 else local SUPPORTED=0 @@ -71,7 +79,7 @@ disable_ios_architecture_not_supported_on_detected_sdk_version() { if [[ ${SUPPORTED} -ne 1 ]]; then if [[ -z ${BUILD_FORCE} ]]; then - echo -e "INFO: Disabled ${ARCH_NAME} architecture which is not supported on SDK $2\n" 1>>"${BASEDIR}"/build.log 2>&1 + echo -e "INFO: Disabled ${ARCH_NAME} architecture which is not supported on iOS SDK $IOS_MIN_VERSION and Mac Catalyst $MAC_CATALYST_MIN_VERSION\n" 1>>"${BASEDIR}"/build.log 2>&1 disable_arch "${ARCH_NAME}" fi fi @@ -79,7 +87,6 @@ disable_ios_architecture_not_supported_on_detected_sdk_version() { # # 1. architecture index -# 2. detected sdk version # disable_tvos_architecture_not_supported_on_detected_sdk_version() { local ARCH_NAME=$(get_arch_name $1) @@ -88,7 +95,7 @@ disable_tvos_architecture_not_supported_on_detected_sdk_version() { arm64-simulator) # INTRODUCED IN TVOS SDK 14.0 - if [[ $(compare_versions "$2" "14") -ge 1 ]]; then + if [[ $(compare_versions "$TVOS_MIN_VERSION" "14.0") -ge 1 ]]; then local SUPPORTED=1 else local SUPPORTED=0 @@ -101,7 +108,7 @@ disable_tvos_architecture_not_supported_on_detected_sdk_version() { if [[ ${SUPPORTED} -ne 1 ]]; then if [[ -z ${BUILD_FORCE} ]]; then - echo -e "INFO: Disabled ${ARCH_NAME} architecture which is not supported on SDK $2\n" 1>>"${BASEDIR}"/build.log 2>&1 + echo -e "INFO: Disabled ${ARCH_NAME} architecture which is not supported on tvOS SDK $TVOS_MIN_VERSION\n" 1>>"${BASEDIR}"/build.log 2>&1 disable_arch "${ARCH_NAME}" fi fi @@ -109,7 +116,6 @@ disable_tvos_architecture_not_supported_on_detected_sdk_version() { # # 1. architecture index -# 2. detected sdk version # disable_macos_architecture_not_supported_on_detected_sdk_version() { local ARCH_NAME=$(get_arch_name $1) @@ -118,7 +124,7 @@ disable_macos_architecture_not_supported_on_detected_sdk_version() { arm64) # INTRODUCED IN MACOS SDK 11.0 - if [[ $(compare_versions "$2" "11") -ge 1 ]]; then + if [[ $(compare_versions "$MACOS_MIN_VERSION" "11.0") -ge 1 ]]; then local SUPPORTED=1 else local SUPPORTED=0 @@ -131,7 +137,7 @@ disable_macos_architecture_not_supported_on_detected_sdk_version() { if [[ ${SUPPORTED} -ne 1 ]]; then if [[ -z ${BUILD_FORCE} ]]; then - echo -e "INFO: Disabled ${ARCH_NAME} architecture which is not supported on SDK $2\n" 1>>"${BASEDIR}"/build.log 2>&1 + echo -e "INFO: Disabled ${ARCH_NAME} architecture which is not supported on macOS SDK $MACOS_MIN_VERSION\n" 1>>"${BASEDIR}"/build.log 2>&1 disable_arch "${ARCH_NAME}" fi fi diff --git a/scripts/function-ios.sh b/scripts/function-ios.sh index 10e75b6..508fea2 100755 --- a/scripts/function-ios.sh +++ b/scripts/function-ios.sh @@ -25,7 +25,7 @@ libraries are created under the prebuilt folder.\n" echo -e "Usage: ./$COMMAND [OPTION]...\n" echo -e "Specify environment variables as VARIABLE=VALUE to override default build options.\n" - display_help_options " -x, --xcframework\t\tbuild xcframework bundles instead of framework bundles and universal libraries" " -l, --lts build lts packages to support sdk 9.3+ devices" " --target=ios sdk version\t\t\toverride minimum deployment target" " --mac-catalyst-target=ios sdk version\toverride minimum deployment target for mac catalyst" + display_help_options " -x, --xcframework\t\tbuild xcframework bundles instead of framework bundles and universal libraries" " -l, --lts build lts packages to support sdk 9.3+ devices" " --target=ios sdk version\t\t\toverride minimum deployment target [12.1]" " --mac-catalyst-target=ios sdk version\toverride minimum deployment target for mac catalyst [14.0]" display_help_licensing echo -e "Architectures:" diff --git a/scripts/function-macos.sh b/scripts/function-macos.sh index c17ae23..ccf2ac0 100755 --- a/scripts/function-macos.sh +++ b/scripts/function-macos.sh @@ -17,7 +17,7 @@ When compilation ends, libraries are created under the prebuilt folder.\n" echo -e "Usage: ./$COMMAND [OPTION]...\n" echo -e "Specify environment variables as VARIABLE=VALUE to override default build options.\n" - display_help_options " -x, --xcframework\t\tbuild xcframework bundles instead of framework bundles and universal libraries" " -l, --lts build lts packages to support sdk 10.11+ devices" " --target=macos sdk version\toverride minimum deployment target" + display_help_options " -x, --xcframework\t\tbuild xcframework bundles instead of framework bundles and universal libraries" " -l, --lts build lts packages to support sdk 10.11+ devices" " --target=macos sdk version\toverride minimum deployment target [10.15]" display_help_licensing echo -e "Architectures:" diff --git a/scripts/function-tvos.sh b/scripts/function-tvos.sh index 931c922..6460e5f 100755 --- a/scripts/function-tvos.sh +++ b/scripts/function-tvos.sh @@ -18,7 +18,7 @@ set explicitly. When compilation ends, libraries are created under the prebuilt echo -e "Usage: ./$COMMAND [OPTION]...\n" echo -e "Specify environment variables as VARIABLE=VALUE to override default build options.\n" - display_help_options " -x, --xcframework\t\tbuild xcframework bundles instead of framework bundles and universal libraries" " -l, --lts build lts packages to support sdk 9.2+ devices" " --target=tvos sdk version\toverride minimum deployment target" + display_help_options " -x, --xcframework\t\tbuild xcframework bundles instead of framework bundles and universal libraries" " -l, --lts build lts packages to support sdk 9.2+ devices" " --target=tvos sdk version\toverride minimum deployment target [11.0]" display_help_licensing echo -e "Architectures:" diff --git a/scripts/function.sh b/scripts/function.sh index b0eb680..7bf23cc 100755 --- a/scripts/function.sh +++ b/scripts/function.sh @@ -1981,23 +1981,26 @@ compare_versions() { for((i=0;(i<${#VERSION_PARTS_1[@]})&&(i<${#VERSION_PARTS_2[@]});i++)) do - if [[ ${VERSION_PARTS_1[$i]} -gt ${VERSION_PARTS_2[$i]} ]]; then + local CURRENT_PART_1=${VERSION_PARTS_1[$i]} + local CURRENT_PART_2=${VERSION_PARTS_2[$i]} + + if [[ -z ${CURRENT_PART_1} ]]; then + CURRENT_PART_1=0 + fi + + if [[ -z ${CURRENT_PART_2} ]]; then + CURRENT_PART_2=0 + fi + + if [[ CURRENT_PART_1 -gt CURRENT_PART_2 ]]; then echo "1" return; - elif [[ ${VERSION_PARTS_1[$i]} -lt ${VERSION_PARTS_2[$i]} ]]; then + elif [[ CURRENT_PART_1 -lt CURRENT_PART_2 ]]; then echo "-1" return; fi done - if [[ ${#VERSION_PARTS_1[@]} -gt ${#VERSION_PARTS_2[@]} ]]; then - echo "1" - return; - elif [[ ${#VERSION_PARTS_1[@]} -lt ${#VERSION_PARTS_2[@]} ]]; then - echo "-1" - return; - else - echo "0" - return; - fi + echo "0" + return; } diff --git a/tvos.sh b/tvos.sh index 18422c3..1b1da32 100755 --- a/tvos.sh +++ b/tvos.sh @@ -154,9 +154,6 @@ if [[ -n ${DISPLAY_HELP} ]]; then exit 0 fi -# DISABLE NOT SUPPORTED ARCHITECTURES -disable_tvos_architecture_not_supported_on_detected_sdk_version "${ARCH_ARM64_SIMULATOR}" "${DETECTED_TVOS_SDK_VERSION}" - # CHECK SOME RULES FOR .framework BUNDLES # 1. DISABLE arm64-simulator WHEN arm64 IS ENABLED IN framework BUNDLES From 24ec14a49563d6da776b2f7ae37bea30b4de5c2b Mon Sep 17 00:00:00 2001 From: Taner Sener Date: Mon, 1 Nov 2021 22:19:28 +0000 Subject: [PATCH 10/45] fix apple platforms build errors --- README.md | 2 + ios.sh | 36 ++--- macos.sh | 9 +- scripts/apple/ffmpeg.sh | 1 + scripts/apple/gnutls.sh | 6 +- scripts/apple/libaom.sh | 2 +- scripts/apple/openh264.sh | 30 +++- scripts/apple/x265.sh | 12 ++ scripts/function-apple.sh | 149 +++++++++++++----- scripts/function-ios.sh | 48 ++++-- scripts/function-macos.sh | 25 ++- scripts/function-tvos.sh | 27 ++-- .../apple/ffmpeg-kit-ios-audio.podspec | 2 +- .../apple/ffmpeg-kit-ios-full-gpl.podspec | 2 +- .../release/apple/ffmpeg-kit-ios-full.podspec | 2 +- .../apple/ffmpeg-kit-ios-https-gpl.podspec | 2 +- .../apple/ffmpeg-kit-ios-https.podspec | 2 +- .../apple/ffmpeg-kit-ios-min-gpl.podspec | 2 +- .../apple/ffmpeg-kit-ios-video.podspec | 2 +- .../apple/ffmpeg-kit-macos-audio.podspec | 2 +- .../apple/ffmpeg-kit-macos-full-gpl.podspec | 4 +- .../apple/ffmpeg-kit-macos-full.podspec | 4 +- .../apple/ffmpeg-kit-macos-https-gpl.podspec | 4 +- .../apple/ffmpeg-kit-macos-https.podspec | 4 +- .../apple/ffmpeg-kit-macos-min-gpl.podspec | 2 +- .../apple/ffmpeg-kit-macos-video.podspec | 2 +- .../apple/ffmpeg-kit-tvos-audio.podspec | 2 +- .../apple/ffmpeg-kit-tvos-full-gpl.podspec | 2 +- .../apple/ffmpeg-kit-tvos-full.podspec | 2 +- .../apple/ffmpeg-kit-tvos-https-gpl.podspec | 2 +- .../apple/ffmpeg-kit-tvos-https.podspec | 2 +- .../apple/ffmpeg-kit-tvos-min-gpl.podspec | 2 +- .../apple/ffmpeg-kit-tvos-video.podspec | 2 +- tools/release/apple/strip-frameworks.sh | 62 ++++++++ tools/release/flutter/create_packages.sh | 6 +- tools/release/ios.lts.sh | 6 +- tools/release/ios.sh | 2 +- tools/release/macos.lts.sh | 6 +- tools/release/macos.sh | 2 +- tools/release/tvos.lts.sh | 6 +- tools/release/tvos.sh | 2 +- tvos.sh | 11 +- 42 files changed, 359 insertions(+), 141 deletions(-) create mode 100755 tools/release/apple/strip-frameworks.sh diff --git a/README.md b/README.md index 7d5417c..ae2392b 100644 --- a/README.md +++ b/README.md @@ -177,6 +177,8 @@ burning subtitles, video stabilisation, pipe operations and concurrent command e `FFmpegKit` is licensed under the `LGPL v3.0`. However, if source code is built using the optional `--enable-gpl` flag or prebuilt binaries with `-gpl` postfix are used, then `FFmpegKit` is subject to the `GPL v3.0` license. +See the [License](https://github.com/tanersener/ffmpeg-kit/wiki/License) wiki page for the details. + ### 14. Patents It is not clearly explained in their documentation, but it is believed that `FFmpeg`, `kvazaar`, `x264` and `x265` diff --git a/ios.sh b/ios.sh index 7a11101..db756e7 100755 --- a/ios.sh +++ b/ios.sh @@ -19,7 +19,6 @@ source "${BASEDIR}"/scripts/function-${FFMPEG_KIT_BUILD_TYPE}.sh # SET DEFAULTS SETTINGS enable_default_ios_architectures -enable_main_build # SELECT XCODE VERSION USED FOR BUILDING XCODE_FOR_FFMPEG_KIT=$(ls ~/.xcode.for.ffmpeg.kit.sh 2>>"${BASEDIR}"/build.log) @@ -28,7 +27,7 @@ if [[ -f ${XCODE_FOR_FFMPEG_KIT} ]]; then fi # DETECT IOS SDK VERSION -DETECTED_IOS_SDK_VERSION="$(xcrun --sdk iphoneos --show-sdk-version 2>>${BASEDIR}/build.log)" +export DETECTED_IOS_SDK_VERSION="$(xcrun --sdk iphoneos --show-sdk-version 2>>${BASEDIR}/build.log)" echo -e "\nINFO: Using SDK ${DETECTED_IOS_SDK_VERSION} by Xcode provided at $(xcode-select -p)\n" 1>>"${BASEDIR}"/build.log 2>&1 echo -e "INFO: Build options: $*\n" 1>>"${BASEDIR}"/build.log 2>&1 @@ -45,6 +44,9 @@ if [[ -z ${BUILD_VERSION} ]]; then exit 1 fi +# MAIN BUILDS ENABLED BY DEFAULT +enable_main_build + # PROCESS LTS BUILD OPTION FIRST AND SET BUILD TYPE: MAIN OR LTS for argument in "$@"; do if [[ "$argument" == "-l" ]] || [[ "$argument" == "--lts" ]]; then @@ -163,33 +165,31 @@ fi disable_ios_architecture_not_supported_on_detected_sdk_version "${ARCH_ARMV7}" disable_ios_architecture_not_supported_on_detected_sdk_version "${ARCH_ARMV7S}" disable_ios_architecture_not_supported_on_detected_sdk_version "${ARCH_I386}" +disable_ios_architecture_not_supported_on_detected_sdk_version "${ARCH_ARM64E}" +disable_ios_architecture_not_supported_on_detected_sdk_version "${ARCH_X86_64_MAC_CATALYST}" +disable_ios_architecture_not_supported_on_detected_sdk_version "${ARCH_ARM64_MAC_CATALYST}" +disable_ios_architecture_not_supported_on_detected_sdk_version "${ARCH_ARM64_SIMULATOR}" # CHECK SOME RULES FOR .framework BUNDLES -# 1. DISABLE arm64-mac-catalyst WHEN arm64 IS ENABLED IN framework BUNDLES -if [[ -z ${FFMPEG_KIT_XCF_BUILD} ]] && [[ ${ENABLED_ARCHITECTURES[${ARCH_ARM64}]} -eq 1 ]] && [[ ${ENABLED_ARCHITECTURES[${ARCH_ARM64_MAC_CATALYST}]} -eq 1 ]]; then - echo -e "INFO: Disabled arm64-mac-catalyst architecture which can not co-exist with arm64 in the same framework bundle.\n" 1>>"${BASEDIR}"/build.log 2>&1 +# 1. DISABLE arm64-mac-catalyst IN framework BUNDLES +if [[ -z ${FFMPEG_KIT_XCF_BUILD} ]] && [[ ${ENABLED_ARCHITECTURES[${ARCH_ARM64_MAC_CATALYST}]} -eq 1 ]]; then + echo -e "INFO: Disabled arm64-mac-catalyst architecture which cannot exist in a framework bundle.\n" 1>>"${BASEDIR}"/build.log 2>&1 disable_arch "arm64-mac-catalyst" fi -# 2. DISABLE arm64-simulator WHEN arm64 IS ENABLED IN framework BUNDLES -if [[ -z ${FFMPEG_KIT_XCF_BUILD} ]] && [[ ${ENABLED_ARCHITECTURES[${ARCH_ARM64}]} -eq 1 ]] && [[ ${ENABLED_ARCHITECTURES[${ARCH_ARM64_SIMULATOR}]} -eq 1 ]]; then - echo -e "INFO: Disabled arm64-simulator architecture which can not co-exist with arm64 in the same framework bundle.\n" 1>>"${BASEDIR}"/build.log 2>&1 - disable_arch "arm64-simulator" +# 2. DISABLE x86-64-mac-catalyst IN framework BUNDLES +if [[ -z ${FFMPEG_KIT_XCF_BUILD} ]] && [[ ${ENABLED_ARCHITECTURES[${ARCH_X86_64_MAC_CATALYST}]} -eq 1 ]]; then + echo -e "INFO: Disabled x86-64-mac-catalyst architecture which cannot exist in a framework bundle.\n" 1>>"${BASEDIR}"/build.log 2>&1 + disable_arch "x86-64-mac-catalyst" fi -# 3. DISABLE arm64-simulator WHEN arm64-mac-catalyst IS ENABLED IN framework BUNDLES -if [[ -z ${FFMPEG_KIT_XCF_BUILD} ]] && [[ ${ENABLED_ARCHITECTURES[${ARCH_ARM64_MAC_CATALYST}]} -eq 1 ]] && [[ ${ENABLED_ARCHITECTURES[${ARCH_ARM64_SIMULATOR}]} -eq 1 ]]; then - echo -e "INFO: Disabled arm64-simulator architecture which can not co-exist with arm64-mac-catalyst in the same framework bundle.\n" 1>>"${BASEDIR}"/build.log 2>&1 +# 3. DISABLE arm64-simulator WHEN arm64 IS ENABLED IN framework BUNDLES +if [[ -z ${FFMPEG_KIT_XCF_BUILD} ]] && [[ ${ENABLED_ARCHITECTURES[${ARCH_ARM64}]} -eq 1 ]] && [[ ${ENABLED_ARCHITECTURES[${ARCH_ARM64_SIMULATOR}]} -eq 1 ]]; then + echo -e "INFO: Disabled arm64-simulator architecture which cannot co-exist with arm64 in the same framework bundle.\n" 1>>"${BASEDIR}"/build.log 2>&1 disable_arch "arm64-simulator" fi -# 4. DISABLE x86-64-mac-catalyst WHEN x86-64 IS ENABLED IN framework BUNDLES -if [[ -z ${FFMPEG_KIT_XCF_BUILD} ]] && [[ ${ENABLED_ARCHITECTURES[${ARCH_X86_64}]} -eq 1 ]] && [[ ${ENABLED_ARCHITECTURES[${ARCH_X86_64_MAC_CATALYST}]} -eq 1 ]]; then - echo -e "INFO: Disabled x86-64-mac-catalyst architecture which can not co-exist with x86-64 in the same framework bundle.\n" 1>>"${BASEDIR}"/build.log 2>&1 - disable_arch "x86-64-mac-catalyst" -fi - echo -e "\nBuilding ffmpeg-kit ${BUILD_TYPE_ID}shared library for iOS\n" echo -e -n "INFO: Building ffmpeg-kit ${BUILD_VERSION} ${BUILD_TYPE_ID}for iOS: " 1>>"${BASEDIR}"/build.log 2>&1 echo -e "$(date)\n" 1>>"${BASEDIR}"/build.log 2>&1 diff --git a/macos.sh b/macos.sh index fce67fa..988ae64 100755 --- a/macos.sh +++ b/macos.sh @@ -19,7 +19,6 @@ source "${BASEDIR}"/scripts/function-${FFMPEG_KIT_BUILD_TYPE}.sh # SET DEFAULTS SETTINGS enable_default_macos_architectures -enable_main_build # SELECT XCODE VERSION USED FOR BUILDING XCODE_FOR_FFMPEG_KIT=$(ls ~/.xcode.for.ffmpeg.kit.sh 2>>"${BASEDIR}"/build.log) @@ -28,7 +27,7 @@ if [[ -f ${XCODE_FOR_FFMPEG_KIT} ]]; then fi # DETECT MACOS SDK VERSION -DETECTED_MACOS_SDK_VERSION="$(xcrun --sdk macosx --show-sdk-version 2>>${BASEDIR}/build.log)" +export DETECTED_MACOS_SDK_VERSION="$(xcrun --sdk macosx --show-sdk-version 2>>${BASEDIR}/build.log)" echo -e "\nINFO: Using SDK ${DETECTED_MACOS_SDK_VERSION} by Xcode provided at $(xcode-select -p)\n" 1>>"${BASEDIR}"/build.log 2>&1 echo -e "\nINFO: Build options: $*\n" 1>>"${BASEDIR}"/build.log 2>&1 @@ -45,6 +44,9 @@ if [[ -z ${BUILD_VERSION} ]]; then exit 1 fi +# MAIN BUILDS ENABLED BY DEFAULT +enable_main_build + # PROCESS LTS BUILD OPTION FIRST AND SET BUILD TYPE: MAIN OR LTS for argument in "$@"; do if [[ "$argument" == "-l" ]] || [[ "$argument" == "--lts" ]]; then @@ -154,6 +156,9 @@ if [[ -n ${DISPLAY_HELP} ]]; then exit 0 fi +# DISABLE NOT SUPPORTED ARCHITECTURES +disable_macos_architecture_not_supported_on_detected_sdk_version "${ARCH_ARM64}" + echo -e "\nBuilding ffmpeg-kit ${BUILD_TYPE_ID}shared library for macOS\n" echo -e -n "INFO: Building ffmpeg-kit ${BUILD_VERSION} ${BUILD_TYPE_ID}for macOS: " 1>>"${BASEDIR}"/build.log 2>&1 echo -e "$(date)\n" 1>>"${BASEDIR}"/build.log 2>&1 diff --git a/scripts/apple/ffmpeg.sh b/scripts/apple/ffmpeg.sh index 4d50268..e24bebf 100755 --- a/scripts/apple/ffmpeg.sh +++ b/scripts/apple/ffmpeg.sh @@ -476,6 +476,7 @@ ${SED_INLINE} "s/\$version/$FFMPEG_VERSION/g" "${BASEDIR}"/src/"${LIB_NAME}"/ffb --ranlib="${RANLIB}" \ --strip="${STRIP}" \ --nm="${NM}" \ + --extra-ldflags="$(get_min_version_cflags)" \ --disable-autodetect \ --enable-cross-compile \ --enable-pic \ diff --git a/scripts/apple/gnutls.sh b/scripts/apple/gnutls.sh index 523f70d..6a1ac91 100755 --- a/scripts/apple/gnutls.sh +++ b/scripts/apple/gnutls.sh @@ -56,4 +56,8 @@ make -j$(get_cpu_count) || return 1 make install || return 1 # CREATE PACKAGE CONFIG MANUALLY -create_gnutls_package_config "3.6.15.1" || return 1 +if [[ ${FFMPEG_KIT_BUILD_TYPE} == "macos" ]]; then + create_gnutls_package_config "3.6.15.1" "-framework Security" || return 1 +else + create_gnutls_package_config "3.6.15.1" || return 1 +fi diff --git a/scripts/apple/libaom.sh b/scripts/apple/libaom.sh index 28daa98..3b7347c 100755 --- a/scripts/apple/libaom.sh +++ b/scripts/apple/libaom.sh @@ -10,7 +10,7 @@ arm*) ASM_OPTIONS="-DCONFIG_RUNTIME_CPU_DETECT=0 -DARCH_ARM=1 -DENABLE_NEON=1 -DHAVE_NEON=1" ;; i386) - ASM_OPTIONS="-DARCH_X86=1 -DENABLE_SSE=1 -DHAVE_SSE=1 -DENABLE_SSE3=1 -DHAVE_SSE3=1" + ASM_OPTIONS="-DARCH_X86=1 -DENABLE_SSE=0 -DHAVE_SSE=0 -DENABLE_SSE3=0 -DHAVE_SSE3=0" ;; x86-64*) ASM_OPTIONS="-DARCH_X86_64=0 -DENABLE_SSE=0 -DENABLE_SSE2=0 -DENABLE_SSE3=0 -DENABLE_SSE4_1=0 -DENABLE_SSE4_2=0 -DENABLE_MMX=0" diff --git a/scripts/apple/openh264.sh b/scripts/apple/openh264.sh index 77721f9..1ce66c7 100755 --- a/scripts/apple/openh264.sh +++ b/scripts/apple/openh264.sh @@ -1,5 +1,22 @@ #!/bin/bash +get_local_asm_arch() { + case ${ARCH} in + armv7*) + echo "arm" + ;; + arm64*) + echo "arm64" + ;; + x86-64*) + echo "x86_64" + ;; + *) + echo "${ARCH}" + ;; + esac +} + # UPDATE BUILD FLAGS AND SET BUILD OPTIONS ASM_OPTIONS="OS=darwin" case ${ARCH} in @@ -14,19 +31,22 @@ arm64*) ;; esac +# ALWAYS CLEAN THE PREVIOUS BUILD +make clean 2>/dev/null 1>/dev/null + +# DISCARD APPLE WORKAROUNDS +git checkout "${BASEDIR}"/src/"${LIB_NAME}"/build || return 1 +git checkout "${BASEDIR}"/src/"${LIB_NAME}"/codec || return 1 + # MAKE SURE THAT ASM IS ENABLED FOR ALL IOS ARCHITECTURES - EXCEPT x86-64 ${SED_INLINE} 's/arm64 aarch64/arm64% aarch64/g' ${BASEDIR}/src/${LIB_NAME}/build/arch.mk ${SED_INLINE} 's/%86 x86_64,/%86 x86_64 x86-64%,/g' ${BASEDIR}/src/${LIB_NAME}/build/arch.mk ${SED_INLINE} 's/filter-out arm64,/filter-out arm64%,/g' ${BASEDIR}/src/${LIB_NAME}/build/arch.mk ${SED_INLINE} 's/CFLAGS += -DHAVE_NEON/#CFLAGS += -DHAVE_NEON/g' ${BASEDIR}/src/${LIB_NAME}/build/arch.mk ${SED_INLINE} 's/ifeq (\$(ASM_ARCH), arm64)/ifneq (\$(filter arm64%, \$(ASM_ARCH)),)/g' ${BASEDIR}/src/${LIB_NAME}/codec/common/targets.mk -${SED_INLINE} 's/ifeq (\$(ASM_ARCH), arm)/ifneq (\$(filter armv%, \$(ASM_ARCH)),)/g' ${BASEDIR}/src/${LIB_NAME}/codec/common/targets.mk - -# ALWAYS CLEAN THE PREVIOUS BUILD -make clean 2>/dev/null 1>/dev/null make -j$(get_cpu_count) \ - ASM_ARCH="$(get_target_cpu)" \ + ASM_ARCH="$(get_local_asm_arch)" \ ARCH="${ARCH}" \ CC="${CC}" \ CFLAGS="$CFLAGS" \ diff --git a/scripts/apple/x265.sh b/scripts/apple/x265.sh index 68bf268..4cf5159 100755 --- a/scripts/apple/x265.sh +++ b/scripts/apple/x265.sh @@ -30,6 +30,18 @@ ${SED_INLINE} 's/lsr 16/lsr #16/g' ${BASEDIR}/src/x265/source/common/arm/blockco ${SED_INLINE} 's/function x265_/function _x265_/g' ${BASEDIR}/src/x265/source/common/arm/*.S ${SED_INLINE} 's/ x265_/ _x265_/g' ${BASEDIR}/src/x265/source/common/arm/pixel-util.S +# fixing relocation errors +${SED_INLINE} 's/sad12_mask:/sad12_mask_bytes:/g' ${BASEDIR}/src/x265/source/common/arm/sad-a.S +${SED_INLINE} 's/g_lumaFilter:/g_lumaFilter_bytes:/g' ${BASEDIR}/src/x265/source/common/arm/ipfilter8.S +${SED_INLINE} 's/g_chromaFilter:/g_chromaFilter_bytes:/g' ${BASEDIR}/src/x265/source/common/arm/ipfilter8.S +${SED_INLINE} 's/\.text/.equ sad12_mask, .-sad12_mask_bytes\ +\ +.text/g' ${BASEDIR}/src/x265/source/common/arm/sad-a.S +${SED_INLINE} 's/\.text/.equ g_lumaFilter, .-g_lumaFilter_bytes\ +.equ g_chromaFilter, .-g_chromaFilter_bytes\ +\ +.text/g' ${BASEDIR}/src/x265/source/common/arm/ipfilter8.S + # WORKAROUND TO USE A CUSTOM BUILD FILE overwrite_file "${BASEDIR}"/tools/patch/cmake/x265/CMakeLists.txt "${BASEDIR}"/src/"${LIB_NAME}"/source/CMakeLists.txt || return 1 diff --git a/scripts/function-apple.sh b/scripts/function-apple.sh index b49cde0..e7f2f22 100755 --- a/scripts/function-apple.sh +++ b/scripts/function-apple.sh @@ -5,7 +5,7 @@ source "${BASEDIR}/scripts/function.sh" export FFMPEG_LIBS=("libavcodec" "libavdevice" "libavfilter" "libavformat" "libavutil" "libswresample" "libswscale") get_ffmpeg_kit_version() { - local FFMPEG_KIT_VERSION=$(grep 'const FFMPEG_KIT_VERSION' "${BASEDIR}"/apple/src/FFmpegKit.m | grep -Eo '\".*\"' | sed -e 's/\"//g') + local FFMPEG_KIT_VERSION=$(grep 'const FFmpegKitVersion' "${BASEDIR}"/apple/src/FFmpegKitConfig.m | grep -Eo '\".*\"' | sed -e 's/\"//g') if [[ -z ${FFMPEG_KIT_LTS_BUILD} ]]; then echo "${FFMPEG_KIT_VERSION}" @@ -48,7 +48,7 @@ disable_ios_architecture_not_supported_on_detected_sdk_version() { x86-64-mac-catalyst) # INTRODUCED IN IOS SDK 13.0 - if [[ $(compare_versions "$MAC_CATALYST_MIN_VERSION" "13.0") -ge 1 ]]; then + if [[ $(compare_versions "$DETECTED_IOS_SDK_VERSION" "13.0") -ge 1 ]]; then local SUPPORTED=1 else local SUPPORTED=0 @@ -57,7 +57,7 @@ disable_ios_architecture_not_supported_on_detected_sdk_version() { arm64-mac-catalyst) # INTRODUCED IN IOS SDK 14.0 - if [[ $(compare_versions "$MAC_CATALYST_MIN_VERSION" "14.0") -ge 1 ]]; then + if [[ $(compare_versions "$DETECTED_IOS_SDK_VERSION" "14.0") -ge 1 ]]; then local SUPPORTED=1 else local SUPPORTED=0 @@ -66,7 +66,7 @@ disable_ios_architecture_not_supported_on_detected_sdk_version() { arm64-simulator) # INTRODUCED IN IOS SDK 14.0 - if [[ $(compare_versions "$IOS_MIN_VERSION" "14.0") -ge 1 ]]; then + if [[ $(compare_versions "$DETECTED_IOS_SDK_VERSION" "14.0") -ge 1 ]]; then local SUPPORTED=1 else local SUPPORTED=0 @@ -79,7 +79,7 @@ disable_ios_architecture_not_supported_on_detected_sdk_version() { if [[ ${SUPPORTED} -ne 1 ]]; then if [[ -z ${BUILD_FORCE} ]]; then - echo -e "INFO: Disabled ${ARCH_NAME} architecture which is not supported on iOS SDK $IOS_MIN_VERSION and Mac Catalyst $MAC_CATALYST_MIN_VERSION\n" 1>>"${BASEDIR}"/build.log 2>&1 + echo -e "INFO: Disabled ${ARCH_NAME} architecture which is not supported with Min iOS Target $IOS_MIN_VERSION and Min Mac Catalyst Target $MAC_CATALYST_MIN_VERSION on iOS SDK $DETECTED_IOS_SDK_VERSION\n" 1>>"${BASEDIR}"/build.log 2>&1 disable_arch "${ARCH_NAME}" fi fi @@ -95,7 +95,7 @@ disable_tvos_architecture_not_supported_on_detected_sdk_version() { arm64-simulator) # INTRODUCED IN TVOS SDK 14.0 - if [[ $(compare_versions "$TVOS_MIN_VERSION" "14.0") -ge 1 ]]; then + if [[ $(compare_versions "$DETECTED_TVOS_SDK_VERSION" "14.0") -ge 1 ]]; then local SUPPORTED=1 else local SUPPORTED=0 @@ -108,7 +108,7 @@ disable_tvos_architecture_not_supported_on_detected_sdk_version() { if [[ ${SUPPORTED} -ne 1 ]]; then if [[ -z ${BUILD_FORCE} ]]; then - echo -e "INFO: Disabled ${ARCH_NAME} architecture which is not supported on tvOS SDK $TVOS_MIN_VERSION\n" 1>>"${BASEDIR}"/build.log 2>&1 + echo -e "INFO: Disabled ${ARCH_NAME} architecture which is not supported on tvOS SDK $DETECTED_TVOS_SDK_VERSION\n" 1>>"${BASEDIR}"/build.log 2>&1 disable_arch "${ARCH_NAME}" fi fi @@ -124,7 +124,7 @@ disable_macos_architecture_not_supported_on_detected_sdk_version() { arm64) # INTRODUCED IN MACOS SDK 11.0 - if [[ $(compare_versions "$MACOS_MIN_VERSION" "11.0") -ge 1 ]]; then + if [[ $(compare_versions "$DETECTED_MACOS_SDK_VERSION" "11.0") -ge 1 ]]; then local SUPPORTED=1 else local SUPPORTED=0 @@ -137,7 +137,7 @@ disable_macos_architecture_not_supported_on_detected_sdk_version() { if [[ ${SUPPORTED} -ne 1 ]]; then if [[ -z ${BUILD_FORCE} ]]; then - echo -e "INFO: Disabled ${ARCH_NAME} architecture which is not supported on macOS SDK $MACOS_MIN_VERSION\n" 1>>"${BASEDIR}"/build.log 2>&1 + echo -e "INFO: Disabled ${ARCH_NAME} architecture which is not supported on macOS SDK $DETECTED_MACOS_SDK_VERSION\n" 1>>"${BASEDIR}"/build.log 2>&1 disable_arch "${ARCH_NAME}" fi fi @@ -199,7 +199,7 @@ create_ffmpeg_universal_library() { local ARCHITECTURE_VARIANT="$1" local TARGET_ARCHITECTURES=("$(get_apple_architectures_for_variant "${ARCHITECTURE_VARIANT}")") local LIBRARY_NAME="ffmpeg" - local UNIVERSAL_LIBRARY_DIRECTORY="${BASEDIR}/prebuilt/$(get_universal_library_directory "${ARCHITECTURE_VARIANT}")" + local UNIVERSAL_LIBRARY_DIRECTORY="${BASEDIR}/.tmp/$(get_universal_library_directory "${ARCHITECTURE_VARIANT}")" local FFMPEG_UNIVERSAL_LIBRARY_DIRECTORY="${UNIVERSAL_LIBRARY_DIRECTORY}/${LIBRARY_NAME}" local LIPO="$(xcrun --sdk "$(get_default_sdk_name)" -f lipo)" @@ -269,7 +269,7 @@ create_ffmpeg_kit_universal_library() { local ARCHITECTURE_VARIANT="$1" local TARGET_ARCHITECTURES=("$(get_apple_architectures_for_variant "${ARCHITECTURE_VARIANT}")") local LIBRARY_NAME="ffmpeg-kit" - local UNIVERSAL_LIBRARY_DIRECTORY="${BASEDIR}/prebuilt/$(get_universal_library_directory "${ARCHITECTURE_VARIANT}")" + local UNIVERSAL_LIBRARY_DIRECTORY="${BASEDIR}/.tmp/$(get_universal_library_directory "${ARCHITECTURE_VARIANT}")" local FFMPEG_KIT_UNIVERSAL_LIBRARY_DIRECTORY="${UNIVERSAL_LIBRARY_DIRECTORY}/${LIBRARY_NAME}" local LIPO="$(xcrun --sdk "$(get_default_sdk_name)" -f lipo)" @@ -322,7 +322,7 @@ create_ffmpeg_kit_universal_library() { create_ffmpeg_framework() { local ARCHITECTURE_VARIANT="$1" local LIBRARY_NAME="ffmpeg" - local UNIVERSAL_LIBRARY_DIRECTORY="${BASEDIR}/prebuilt/$(get_universal_library_directory "${ARCHITECTURE_VARIANT}")" + local UNIVERSAL_LIBRARY_DIRECTORY="${BASEDIR}/.tmp/$(get_universal_library_directory "${ARCHITECTURE_VARIANT}")" local FFMPEG_UNIVERSAL_LIBRARY_PATH="${UNIVERSAL_LIBRARY_DIRECTORY}/${LIBRARY_NAME}" if [[ $(is_apple_architecture_variant_supported "${ARCHITECTURE_VARIANT}") -eq 0 ]]; then @@ -341,35 +341,68 @@ create_ffmpeg_framework() { # INITIALIZE FRAMEWORK DIRECTORY local FFMPEG_LIB_FRAMEWORK_PATH="${BASEDIR}/prebuilt/$(get_framework_directory "${ARCHITECTURE_VARIANT}")/${FFMPEG_LIB}.framework" initialize_folder "${FFMPEG_LIB_FRAMEWORK_PATH}" - initialize_folder "${FFMPEG_LIB_FRAMEWORK_PATH}/Headers" - # COPY HEADER FILES - cp -r "${FFMPEG_UNIVERSAL_LIBRARY_PATH}/include/${FFMPEG_LIB}"/* "${FFMPEG_LIB_FRAMEWORK_PATH}"/Headers 1>>"${BASEDIR}"/build.log 2>&1 + if [[ ${ARCHITECTURE_VARIANT} -eq ${ARCH_VAR_MAC_CATALYST} ]] || [[ ${ARCHITECTURE_VARIANT} -eq ${ARCH_VAR_MACOS} ]]; then - # COPY LIBRARY FILE - cp "${FFMPEG_UNIVERSAL_LIBRARY_PATH}/lib/${FFMPEG_LIB}.dylib" "${FFMPEG_LIB_FRAMEWORK_PATH}/${FFMPEG_LIB}" 1>>"${BASEDIR}"/build.log 2>&1 + # VERSIONED FRAMEWORK + + local FFMPEG_LIB_FRAMEWORK_RESOURCE_PATH="${FFMPEG_LIB_FRAMEWORK_PATH}/Versions/A/Resources" + + initialize_folder "${FFMPEG_LIB_FRAMEWORK_PATH}/Versions/A/Headers" + initialize_folder "${FFMPEG_LIB_FRAMEWORK_PATH}/Versions/A/Resources" + + # LINK CURRENT VERSION + ln -s "A" "${FFMPEG_LIB_FRAMEWORK_PATH}/Versions/Current" 1>>"${BASEDIR}"/build.log 2>&1 + ln -s "Versions/Current/Headers" "${FFMPEG_LIB_FRAMEWORK_PATH}/Headers" 1>>"${BASEDIR}"/build.log 2>&1 + ln -s "Versions/Current/Resources" "${FFMPEG_LIB_FRAMEWORK_PATH}/Resources" 1>>"${BASEDIR}"/build.log 2>&1 + ln -s "Versions/Current/${FFMPEG_LIB}" "${FFMPEG_LIB_FRAMEWORK_PATH}/${FFMPEG_LIB}" 1>>"${BASEDIR}"/build.log 2>&1 + + # COPY HEADER FILES + cp -r "${FFMPEG_UNIVERSAL_LIBRARY_PATH}/include/${FFMPEG_LIB}"/* "${FFMPEG_LIB_FRAMEWORK_PATH}/Versions/A/Headers" 1>>"${BASEDIR}"/build.log 2>&1 + + # COPY LIBRARY FILE + cp "${FFMPEG_UNIVERSAL_LIBRARY_PATH}/lib/${FFMPEG_LIB}.dylib" "${FFMPEG_LIB_FRAMEWORK_PATH}/Versions/A/${FFMPEG_LIB}" 1>>"${BASEDIR}"/build.log 2>&1 + + else + + # DEFAULT FRAMEWORK + + local FFMPEG_LIB_FRAMEWORK_RESOURCE_PATH="${FFMPEG_LIB_FRAMEWORK_PATH}" + + initialize_folder "${FFMPEG_LIB_FRAMEWORK_PATH}/Headers" + + # COPY HEADER FILES + cp -r "${FFMPEG_UNIVERSAL_LIBRARY_PATH}/include/${FFMPEG_LIB}"/* "${FFMPEG_LIB_FRAMEWORK_PATH}"/Headers 1>>"${BASEDIR}"/build.log 2>&1 + + # COPY LIBRARY FILE + cp "${FFMPEG_UNIVERSAL_LIBRARY_PATH}/lib/${FFMPEG_LIB}.dylib" "${FFMPEG_LIB_FRAMEWORK_PATH}/${FFMPEG_LIB}" 1>>"${BASEDIR}"/build.log 2>&1 + + fi # COPY FRAMEWORK LICENSES if [[ "${GPL_ENABLED}" == "yes" ]]; then - cp "${BASEDIR}/LICENSE.GPLv3" "${FFMPEG_LIB_FRAMEWORK_PATH}/LICENSE" 1>>"${BASEDIR}"/build.log 2>&1 + cp "${BASEDIR}/LICENSE.GPLv3" "${FFMPEG_LIB_FRAMEWORK_RESOURCE_PATH}/LICENSE" 1>>"${BASEDIR}"/build.log 2>&1 else - cp "${BASEDIR}/LICENSE.LGPLv3" "${FFMPEG_LIB_FRAMEWORK_PATH}/LICENSE" 1>>"${BASEDIR}"/build.log 2>&1 + cp "${BASEDIR}/LICENSE.LGPLv3" "${FFMPEG_LIB_FRAMEWORK_RESOURCE_PATH}/LICENSE" 1>>"${BASEDIR}"/build.log 2>&1 fi - build_info_plist "${FFMPEG_LIB_FRAMEWORK_PATH}/Info.plist" "${FFMPEG_LIB}" "com.arthenica.ffmpegkit.${CAPITAL_CASE_FFMPEG_LIB_NAME}" "${FFMPEG_LIB_VERSION}" "${FFMPEG_LIB_VERSION}" + # COPY EXTERNAL LIBRARY LICENSES + if [[ "${FFMPEG_LIB}" == "libavcodec" ]]; then + for library in {0..46}; do + if [[ ${ENABLED_LIBRARIES[$library]} -eq 1 ]]; then + local ENABLED_LIBRARY_NAME="$(get_library_name ${library})" + local ENABLED_LIBRARY_NAME_UPPERCASE=$(echo "${ENABLED_LIBRARY_NAME}" | tr '[a-z]' '[A-Z]') - echo -e "DEBUG: ${FFMPEG_LIB} framework built for $(get_apple_architecture_variant "${ARCHITECTURE_VARIANT}") platform successfully\n" 1>>"${BASEDIR}"/build.log 2>&1 - done + RC=$(copy_external_library_license "${library}" ${FFMPEG_LIB_FRAMEWORK_RESOURCE_PATH}/LICENSE.${ENABLED_LIBRARY_NAME_UPPERCASE}) - for library in {0..46}; do - if [[ ${ENABLED_LIBRARIES[$library]} -eq 1 ]]; then - local ENABLED_LIBRARY_NAME="$(get_library_name ${library})" - local ENABLED_LIBRARY_NAME_UPPERCASE=$(echo "${ENABLED_LIBRARY_NAME}" | tr '[a-z]' '[A-Z]') + [[ ${RC} -ne 0 ]] && exit_universal_library "${LIBRARY_NAME}" + fi + done + fi - RC=$(copy_external_library_license "${library}" ${BASEDIR}/prebuilt/$(get_framework_directory ${ARCHITECTURE_VARIANT})/libavcodec.framework/LICENSE.${ENABLED_LIBRARY_NAME_UPPERCASE}) + build_info_plist "${FFMPEG_LIB_FRAMEWORK_RESOURCE_PATH}/Info.plist" "${FFMPEG_LIB}" "com.arthenica.ffmpegkit.${CAPITAL_CASE_FFMPEG_LIB_NAME}" "${FFMPEG_LIB_VERSION}" "${FFMPEG_LIB_VERSION}" - [[ ${RC} -ne 0 ]] && exit_universal_library "${LIBRARY_NAME}" - fi + echo -e "DEBUG: ${FFMPEG_LIB} framework built for $(get_apple_architecture_variant "${ARCHITECTURE_VARIANT}") platform successfully\n" 1>>"${BASEDIR}"/build.log 2>&1 done } @@ -379,7 +412,7 @@ create_ffmpeg_framework() { create_ffmpeg_kit_framework() { local ARCHITECTURE_VARIANT="$1" local LIBRARY_NAME="ffmpeg-kit" - local UNIVERSAL_LIBRARY_DIRECTORY="${BASEDIR}/prebuilt/$(get_universal_library_directory "${ARCHITECTURE_VARIANT}")" + local UNIVERSAL_LIBRARY_DIRECTORY="${BASEDIR}/.tmp/$(get_universal_library_directory "${ARCHITECTURE_VARIANT}")" local FFMPEG_KIT_UNIVERSAL_LIBRARY_DIRECTORY="${UNIVERSAL_LIBRARY_DIRECTORY}/${LIBRARY_NAME}" if [[ $(is_apple_architecture_variant_supported "${ARCHITECTURE_VARIANT}") -eq 0 ]]; then @@ -393,23 +426,58 @@ create_ffmpeg_kit_framework() { # INITIALIZE FRAMEWORK DIRECTORY local FFMPEG_KIT_FRAMEWORK_PATH="${BASEDIR}/prebuilt/$(get_framework_directory "${ARCHITECTURE_VARIANT}")/ffmpegkit.framework" initialize_folder "${FFMPEG_KIT_FRAMEWORK_PATH}" - initialize_folder "${FFMPEG_KIT_FRAMEWORK_PATH}/Headers" - initialize_folder "${FFMPEG_KIT_FRAMEWORK_PATH}/Modules" - # COPY HEADER FILES - cp -r "${FFMPEG_KIT_UNIVERSAL_LIBRARY_DIRECTORY}"/include/* "${FFMPEG_KIT_FRAMEWORK_PATH}"/Headers 1>>"${BASEDIR}"/build.log 2>&1 + if [[ ${ARCHITECTURE_VARIANT} -eq ${ARCH_VAR_MAC_CATALYST} ]] || [[ ${ARCHITECTURE_VARIANT} -eq ${ARCH_VAR_MACOS} ]]; then + + # VERSIONED FRAMEWORK + + local FFMPEG_KIT_FRAMEWORK_RESOURCE_PATH="${FFMPEG_KIT_FRAMEWORK_PATH}/Versions/A/Resources" - # COPY LIBRARY FILE - cp "${FFMPEG_KIT_UNIVERSAL_LIBRARY_DIRECTORY}/lib/libffmpegkit.dylib" "${FFMPEG_KIT_FRAMEWORK_PATH}"/ffmpegkit 1>>"${BASEDIR}"/build.log 2>&1 + initialize_folder "${FFMPEG_KIT_FRAMEWORK_PATH}/Versions/A/Headers" + initialize_folder "${FFMPEG_KIT_FRAMEWORK_PATH}/Versions/A/Modules" + initialize_folder "${FFMPEG_KIT_FRAMEWORK_PATH}/Versions/A/Resources" + + # LINK CURRENT VERSION + ln -s "A" "${FFMPEG_KIT_FRAMEWORK_PATH}/Versions/Current" 1>>"${BASEDIR}"/build.log 2>&1 + ln -s "Versions/Current/Headers" "${FFMPEG_KIT_FRAMEWORK_PATH}/Headers" 1>>"${BASEDIR}"/build.log 2>&1 + ln -s "Versions/Current/Modules" "${FFMPEG_KIT_FRAMEWORK_PATH}/Modules" 1>>"${BASEDIR}"/build.log 2>&1 + ln -s "Versions/Current/Resources" "${FFMPEG_KIT_FRAMEWORK_PATH}/Resources" 1>>"${BASEDIR}"/build.log 2>&1 + ln -s "Versions/Current/ffmpegkit" "${FFMPEG_KIT_FRAMEWORK_PATH}/ffmpegkit" 1>>"${BASEDIR}"/build.log 2>&1 + + # COPY HEADER FILES + cp -r "${FFMPEG_KIT_UNIVERSAL_LIBRARY_DIRECTORY}"/include/* "${FFMPEG_KIT_FRAMEWORK_PATH}/Versions/A/Headers" 1>>"${BASEDIR}"/build.log 2>&1 + + # COPY LIBRARY FILE + cp "${FFMPEG_KIT_UNIVERSAL_LIBRARY_DIRECTORY}/lib/libffmpegkit.dylib" "${FFMPEG_KIT_FRAMEWORK_PATH}/Versions/A/ffmpegkit" 1>>"${BASEDIR}"/build.log 2>&1 + + else + + # DEFAULT FRAMEWORK + + local FFMPEG_KIT_FRAMEWORK_RESOURCE_PATH="${FFMPEG_KIT_FRAMEWORK_PATH}" + + initialize_folder "${FFMPEG_KIT_FRAMEWORK_PATH}/Headers" + initialize_folder "${FFMPEG_KIT_FRAMEWORK_PATH}/Modules" + + # COPY HEADER FILES + cp -r "${FFMPEG_KIT_UNIVERSAL_LIBRARY_DIRECTORY}"/include/* "${FFMPEG_KIT_FRAMEWORK_PATH}"/Headers 1>>"${BASEDIR}"/build.log 2>&1 + + # COPY LIBRARY FILE + cp "${FFMPEG_KIT_UNIVERSAL_LIBRARY_DIRECTORY}/lib/libffmpegkit.dylib" "${FFMPEG_KIT_FRAMEWORK_PATH}"/ffmpegkit 1>>"${BASEDIR}"/build.log 2>&1 + + fi # COPY FRAMEWORK LICENSES if [[ "${GPL_ENABLED}" == "yes" ]]; then - cp "${BASEDIR}/LICENSE.GPLv3" "${FFMPEG_KIT_FRAMEWORK_PATH}/LICENSE" 1>>"${BASEDIR}"/build.log 2>&1 + cp "${BASEDIR}/LICENSE.GPLv3" "${FFMPEG_KIT_FRAMEWORK_RESOURCE_PATH}/LICENSE" 1>>"${BASEDIR}"/build.log 2>&1 else - cp "${BASEDIR}/LICENSE.LGPLv3" "${FFMPEG_KIT_FRAMEWORK_PATH}/LICENSE" 1>>"${BASEDIR}"/build.log 2>&1 + cp "${BASEDIR}/LICENSE.LGPLv3" "${FFMPEG_KIT_FRAMEWORK_RESOURCE_PATH}/LICENSE" 1>>"${BASEDIR}"/build.log 2>&1 fi - build_info_plist "${FFMPEG_KIT_FRAMEWORK_PATH}/Info.plist" "ffmpegkit" "com.arthenica.ffmpegkit.FFmpegKit" "${FFMPEG_KIT_VERSION}" "${FFMPEG_KIT_VERSION}" + # COPYING STRIP SCRIPT FOR SHARED LIBRARY + cp ${BASEDIR}/tools/release/apple/strip-frameworks.sh ${FFMPEG_KIT_FRAMEWORK_RESOURCE_PATH} 1>>${BASEDIR}/build.log 2>&1 + + build_info_plist "${FFMPEG_KIT_FRAMEWORK_RESOURCE_PATH}/Info.plist" "ffmpegkit" "com.arthenica.ffmpegkit.FFmpegKit" "${FFMPEG_KIT_VERSION}" "${FFMPEG_KIT_VERSION}" build_modulemap "${FFMPEG_KIT_FRAMEWORK_PATH}/Modules/module.modulemap" echo -e "DEBUG: ffmpeg-kit framework built for $(get_apple_architecture_variant "${ARCHITECTURE_VARIANT}") platform successfully\n" 1>>"${BASEDIR}"/build.log 2>&1 @@ -1124,6 +1192,7 @@ EOF create_gnutls_package_config() { local GNUTLS_VERSION="$1" + local EXTRA_LIBS="$2" cat >"${INSTALL_PKG_CONFIG_DIR}/gnutls.pc" <>"${BASEDIR}"/build.log 2>&1 if [[ $(is_apple_architecture_variant_supported "${ARCH_VAR_IPHONEOS}") -eq 1 ]]; then - initialize_folder "${BASEDIR}/prebuilt/$(get_universal_library_directory "${ARCH_VAR_IPHONEOS}")" + initialize_folder "${BASEDIR}/.tmp/$(get_universal_library_directory "${ARCH_VAR_IPHONEOS}")" initialize_folder "${BASEDIR}/prebuilt/$(get_framework_directory "${ARCH_VAR_IPHONEOS}")" fi if [[ $(is_apple_architecture_variant_supported "${ARCH_VAR_IPHONESIMULATOR}") -eq 1 ]]; then - initialize_folder "${BASEDIR}/prebuilt/$(get_universal_library_directory "${ARCH_VAR_IPHONESIMULATOR}")" + initialize_folder "${BASEDIR}/.tmp/$(get_universal_library_directory "${ARCH_VAR_IPHONESIMULATOR}")" initialize_folder "${BASEDIR}/prebuilt/$(get_framework_directory "${ARCH_VAR_IPHONESIMULATOR}")" fi if [[ $(is_apple_architecture_variant_supported "${ARCH_VAR_MAC_CATALYST}") -eq 1 ]]; then - initialize_folder "${BASEDIR}/prebuilt/$(get_universal_library_directory "${ARCH_VAR_MAC_CATALYST}")" + initialize_folder "${BASEDIR}/.tmp/$(get_universal_library_directory "${ARCH_VAR_MAC_CATALYST}")" initialize_folder "${BASEDIR}/prebuilt/$(get_framework_directory "${ARCH_VAR_MAC_CATALYST}")" fi @@ -492,10 +512,10 @@ initialize_prebuilt_ios_folders() { initialize_folder "${BASEDIR}/prebuilt/$(get_xcframework_directory)" else - echo -e "DEBUG: Initializing default universal directory at ${BASEDIR}/prebuilt/$(get_universal_library_directory "${ARCH_VAR_IOS}")\n" 1>>"${BASEDIR}"/build.log 2>&1 + echo -e "DEBUG: Initializing default universal directory at ${BASEDIR}/.tmp/$(get_universal_library_directory "${ARCH_VAR_IOS}")\n" 1>>"${BASEDIR}"/build.log 2>&1 # DEFAULT BUILDS GENERATE UNIVERSAL LIBRARIES AND FRAMEWORKS - initialize_folder "${BASEDIR}/prebuilt/$(get_universal_library_directory "${ARCH_VAR_IOS}")" + initialize_folder "${BASEDIR}/.tmp/$(get_universal_library_directory "${ARCH_VAR_IOS}")" echo -e "DEBUG: Initializing framework directory at ${BASEDIR}/prebuilt/$(get_framework_directory "${ARCH_VAR_IOS}")\n" 1>>"${BASEDIR}"/build.log 2>&1 @@ -507,7 +527,7 @@ initialize_prebuilt_ios_folders() { # DEPENDS TARGET_ARCH_LIST VARIABLE # create_universal_libraries_for_ios_default_frameworks() { - local ROOT_UNIVERSAL_DIRECTORY_PATH="${BASEDIR}/prebuilt/$(get_universal_library_directory 1)" + local ROOT_UNIVERSAL_DIRECTORY_PATH="${BASEDIR}/.tmp/$(get_universal_library_directory 1)" echo -e "INFO: Building universal libraries in ${ROOT_UNIVERSAL_DIRECTORY_PATH} for default frameworks using ${TARGET_ARCH_LIST[@]}\n" 1>>"${BASEDIR}"/build.log 2>&1 diff --git a/scripts/function-macos.sh b/scripts/function-macos.sh index ccf2ac0..6762ee4 100755 --- a/scripts/function-macos.sh +++ b/scripts/function-macos.sh @@ -47,14 +47,23 @@ When compilation ends, libraries are created under the prebuilt folder.\n" } enable_main_build() { - export MACOS_MIN_VERSION=10.15 + if [[ $(compare_versions "$DETECTED_MACOS_SDK_VERSION" "10.15") -le 0 ]]; then + export MACOS_MIN_VERSION=$DETECTED_MACOS_SDK_VERSION + else + export MACOS_MIN_VERSION=10.15 + fi } enable_lts_build() { export FFMPEG_KIT_LTS_BUILD="1" - # XCODE 7.3 HAS MACOS SDK 10.11 - export MACOS_MIN_VERSION=10.11 + if [[ $(compare_versions "$DETECTED_MACOS_SDK_VERSION" "10.11") -le 0 ]]; then + export MACOS_MIN_VERSION=$DETECTED_MACOS_SDK_VERSION + else + + # XCODE 7.3 HAS MACOS SDK 10.11 + export MACOS_MIN_VERSION=10.11 + fi } get_common_includes() { @@ -241,7 +250,7 @@ get_common_linked_libraries() { } get_common_ldflags() { - echo "-isysroot ${SDK_PATH}" + echo "-isysroot ${SDK_PATH} $(get_min_version_cflags)" } get_size_optimization_ldflags() { @@ -376,7 +385,7 @@ initialize_prebuilt_macos_folders() { echo -e "DEBUG: Initializing universal directories and frameworks for xcf builds\n" 1>>"${BASEDIR}"/build.log 2>&1 if [[ $(is_apple_architecture_variant_supported "${ARCH_VAR_MACOS}") -eq 1 ]]; then - initialize_folder "${BASEDIR}/prebuilt/$(get_universal_library_directory "${ARCH_VAR_MACOS}")" + initialize_folder "${BASEDIR}/.tmp/$(get_universal_library_directory "${ARCH_VAR_MACOS}")" initialize_folder "${BASEDIR}/prebuilt/$(get_framework_directory "${ARCH_VAR_MACOS}")" fi @@ -386,10 +395,10 @@ initialize_prebuilt_macos_folders() { initialize_folder "${BASEDIR}/prebuilt/$(get_xcframework_directory)" else - echo -e "DEBUG: Initializing default universal directory at ${BASEDIR}/prebuilt/$(get_universal_library_directory "${ARCH_VAR_MACOS}")\n" 1>>"${BASEDIR}"/build.log 2>&1 + echo -e "DEBUG: Initializing default universal directory at ${BASEDIR}/.tmp/$(get_universal_library_directory "${ARCH_VAR_MACOS}")\n" 1>>"${BASEDIR}"/build.log 2>&1 # DEFAULT BUILDS GENERATE UNIVERSAL LIBRARIES AND FRAMEWORKS - initialize_folder "${BASEDIR}/prebuilt/$(get_universal_library_directory "${ARCH_VAR_MACOS}")" + initialize_folder "${BASEDIR}/.tmp/$(get_universal_library_directory "${ARCH_VAR_MACOS}")" echo -e "DEBUG: Initializing framework directory at ${BASEDIR}/prebuilt/$(get_framework_directory "${ARCH_VAR_MACOS}")\n" 1>>"${BASEDIR}"/build.log 2>&1 @@ -401,7 +410,7 @@ initialize_prebuilt_macos_folders() { # DEPENDS TARGET_ARCH_LIST VARIABLE # create_universal_libraries_for_macos_default_frameworks() { - local ROOT_UNIVERSAL_DIRECTORY_PATH="${BASEDIR}/prebuilt/$(get_universal_library_directory 1)" + local ROOT_UNIVERSAL_DIRECTORY_PATH="${BASEDIR}/.tmp/$(get_universal_library_directory 1)" echo -e "INFO: Building universal libraries in ${ROOT_UNIVERSAL_DIRECTORY_PATH} for default frameworks using ${TARGET_ARCH_LIST[@]}\n" 1>>"${BASEDIR}"/build.log 2>&1 diff --git a/scripts/function-tvos.sh b/scripts/function-tvos.sh index 6460e5f..9d9750b 100755 --- a/scripts/function-tvos.sh +++ b/scripts/function-tvos.sh @@ -47,14 +47,23 @@ set explicitly. When compilation ends, libraries are created under the prebuilt } enable_main_build() { - export TVOS_MIN_VERSION=11.0 + if [[ $(compare_versions "$DETECTED_TVOS_SDK_VERSION" "11.0") -le 0 ]]; then + export TVOS_MIN_VERSION=$DETECTED_TVOS_SDK_VERSION + else + export TVOS_MIN_VERSION=11.0 + fi } enable_lts_build() { export FFMPEG_KIT_LTS_BUILD="1" - # XCODE 7.3 HAS TVOS SDK 9.2 - export TVOS_MIN_VERSION=9.2 + if [[ $(compare_versions "$DETECTED_TVOS_SDK_VERSION" "9.2") -le 0 ]]; then + export TVOS_MIN_VERSION=$DETECTED_TVOS_SDK_VERSION + else + + # XCODE 7.3 HAS TVOS SDK 9.2 + export TVOS_MIN_VERSION=9.2 + fi # TVOS SDK 9.2 DOES NOT INCLUDE VIDEOTOOLBOX ENABLED_LIBRARIES[LIBRARY_VIDEOTOOLBOX]=0 @@ -279,7 +288,7 @@ get_common_linked_libraries() { } get_common_ldflags() { - echo "-isysroot ${SDK_PATH}" + echo "-isysroot ${SDK_PATH} $(get_min_version_cflags)" } get_size_optimization_ldflags() { @@ -430,11 +439,11 @@ initialize_prebuilt_tvos_folders() { echo -e "DEBUG: Initializing universal directories and frameworks for xcf builds\n" 1>>"${BASEDIR}"/build.log 2>&1 if [[ $(is_apple_architecture_variant_supported "${ARCH_VAR_APPLETVOS}") -eq 1 ]]; then - initialize_folder "${BASEDIR}/prebuilt/$(get_universal_library_directory "${ARCH_VAR_APPLETVOS}")" + initialize_folder "${BASEDIR}/.tmp/$(get_universal_library_directory "${ARCH_VAR_APPLETVOS}")" initialize_folder "${BASEDIR}/prebuilt/$(get_framework_directory "${ARCH_VAR_APPLETVOS}")" fi if [[ $(is_apple_architecture_variant_supported "${ARCH_VAR_APPLETVSIMULATOR}") -eq 1 ]]; then - initialize_folder "${BASEDIR}/prebuilt/$(get_universal_library_directory "${ARCH_VAR_APPLETVSIMULATOR}")" + initialize_folder "${BASEDIR}/.tmp/$(get_universal_library_directory "${ARCH_VAR_APPLETVSIMULATOR}")" initialize_folder "${BASEDIR}/prebuilt/$(get_framework_directory "${ARCH_VAR_APPLETVSIMULATOR}")" fi @@ -444,10 +453,10 @@ initialize_prebuilt_tvos_folders() { initialize_folder "${BASEDIR}/prebuilt/$(get_xcframework_directory)" else - echo -e "DEBUG: Initializing default universal directory at ${BASEDIR}/prebuilt/$(get_universal_library_directory "${ARCH_VAR_TVOS}")\n" 1>>"${BASEDIR}"/build.log 2>&1 + echo -e "DEBUG: Initializing default universal directory at ${BASEDIR}/.tmp/$(get_universal_library_directory "${ARCH_VAR_TVOS}")\n" 1>>"${BASEDIR}"/build.log 2>&1 # DEFAULT BUILDS GENERATE UNIVERSAL LIBRARIES AND FRAMEWORKS - initialize_folder "${BASEDIR}/prebuilt/$(get_universal_library_directory "${ARCH_VAR_TVOS}")" + initialize_folder "${BASEDIR}/.tmp/$(get_universal_library_directory "${ARCH_VAR_TVOS}")" echo -e "DEBUG: Initializing framework directory at ${BASEDIR}/prebuilt/$(get_framework_directory "${ARCH_VAR_TVOS}")\n" 1>>"${BASEDIR}"/build.log 2>&1 @@ -459,7 +468,7 @@ initialize_prebuilt_tvos_folders() { # DEPENDS TARGET_ARCH_LIST VARIABLE # create_universal_libraries_for_tvos_default_frameworks() { - local ROOT_UNIVERSAL_DIRECTORY_PATH="${BASEDIR}/prebuilt/$(get_universal_library_directory "${ARCH_VAR_TVOS}")" + local ROOT_UNIVERSAL_DIRECTORY_PATH="${BASEDIR}/.tmp/$(get_universal_library_directory "${ARCH_VAR_TVOS}")" echo -e "INFO: Building universal libraries in ${ROOT_UNIVERSAL_DIRECTORY_PATH} for default frameworks using ${TARGET_ARCH_LIST[@]}\n" 1>>"${BASEDIR}"/build.log 2>&1 diff --git a/tools/release/apple/ffmpeg-kit-ios-audio.podspec b/tools/release/apple/ffmpeg-kit-ios-audio.podspec index a9c33eb..a07c328 100644 --- a/tools/release/apple/ffmpeg-kit-ios-audio.podspec +++ b/tools/release/apple/ffmpeg-kit-ios-audio.podspec @@ -19,6 +19,6 @@ Pod::Spec.new do |s| s.ios.deployment_target = '9.3' s.ios.frameworks = 'AudioToolbox','AVFoundation','CoreMedia','VideoToolbox' - s.ios.vendored_frameworks = 'ffmpegkit.framework', 'libavcodec.framework', 'libavdevice.framework', 'libavfilter.framework', 'libavformat.framework', 'libavutil.framework', 'libswresample.framework', 'libswscale.framework', 'lame.framework', 'libilbc.framework', 'libogg.framework', 'libopencore-amrnb.framework', 'libsndfile.framework', 'libvorbis.framework', 'libvorbisenc.framework', 'libvorbisfile.framework', 'opus.framework', 'shine.framework', 'soxr.framework', 'speex.framework', 'twolame.framework', 'vo-amrwbenc.framework' + s.ios.vendored_frameworks = 'ffmpegkit.framework', 'libavcodec.framework', 'libavdevice.framework', 'libavfilter.framework', 'libavformat.framework', 'libavutil.framework', 'libswresample.framework', 'libswscale.framework' end diff --git a/tools/release/apple/ffmpeg-kit-ios-full-gpl.podspec b/tools/release/apple/ffmpeg-kit-ios-full-gpl.podspec index 1f122a5..8247000 100644 --- a/tools/release/apple/ffmpeg-kit-ios-full-gpl.podspec +++ b/tools/release/apple/ffmpeg-kit-ios-full-gpl.podspec @@ -19,6 +19,6 @@ Pod::Spec.new do |s| s.ios.deployment_target = '9.3' s.ios.frameworks = 'AudioToolbox','AVFoundation','CoreMedia','VideoToolbox' - s.ios.vendored_frameworks = 'ffmpegkit.framework', 'libavcodec.framework', 'libavdevice.framework', 'libavfilter.framework', 'libavformat.framework', 'libavutil.framework', 'libswresample.framework', 'libswscale.framework', 'dav1d.framework', 'expat.framework', 'fontconfig.framework', 'freetype.framework', 'fribidi.framework', 'giflib.framework', 'gmp.framework', 'gnutls.framework', 'harfbuzz.framework', 'jpeg.framework', 'kvazaar.framework', 'lame.framework', 'libass.framework', 'libhogweed.framework', 'libilbc.framework', 'libnettle.framework', 'libogg.framework', 'libopencore-amrnb.framework', 'libpng.framework', 'libsndfile.framework', 'libtheora.framework', 'libtheoradec.framework', 'libtheoraenc.framework', 'libvorbis.framework', 'libvorbisenc.framework', 'libvorbisfile.framework', 'libvpx.framework', 'libwebp.framework', 'libwebpmux.framework', 'libwebpdemux.framework', 'libxml2.framework', 'opus.framework', 'shine.framework', 'snappy.framework', 'soxr.framework', 'speex.framework', 'tiff.framework', 'twolame.framework', 'vo-amrwbenc.framework', 'libvidstab.framework', 'x264.framework', 'x265.framework', 'xvidcore.framework' + s.ios.vendored_frameworks = 'ffmpegkit.framework', 'libavcodec.framework', 'libavdevice.framework', 'libavfilter.framework', 'libavformat.framework', 'libavutil.framework', 'libswresample.framework', 'libswscale.framework' end diff --git a/tools/release/apple/ffmpeg-kit-ios-full.podspec b/tools/release/apple/ffmpeg-kit-ios-full.podspec index 0379ff4..41d2fb0 100644 --- a/tools/release/apple/ffmpeg-kit-ios-full.podspec +++ b/tools/release/apple/ffmpeg-kit-ios-full.podspec @@ -19,6 +19,6 @@ Pod::Spec.new do |s| s.ios.deployment_target = '9.3' s.ios.frameworks = 'AudioToolbox','AVFoundation','CoreMedia','VideoToolbox' - s.ios.vendored_frameworks = 'ffmpegkit.framework', 'libavcodec.framework', 'libavdevice.framework', 'libavfilter.framework', 'libavformat.framework', 'libavutil.framework', 'libswresample.framework', 'libswscale.framework', 'dav1d.framework', 'expat.framework', 'fontconfig.framework', 'freetype.framework', 'fribidi.framework', 'giflib.framework', 'gmp.framework', 'gnutls.framework', 'harfbuzz.framework', 'jpeg.framework', 'kvazaar.framework', 'lame.framework', 'libass.framework', 'libhogweed.framework', 'libilbc.framework', 'libnettle.framework', 'libogg.framework', 'libopencore-amrnb.framework', 'libpng.framework', 'libsndfile.framework', 'libtheora.framework', 'libtheoradec.framework', 'libtheoraenc.framework', 'libvorbis.framework', 'libvorbisenc.framework', 'libvorbisfile.framework', 'libvpx.framework', 'libwebp.framework', 'libwebpmux.framework', 'libwebpdemux.framework', 'libxml2.framework', 'opus.framework', 'shine.framework', 'snappy.framework', 'soxr.framework', 'speex.framework', 'tiff.framework', 'twolame.framework', 'vo-amrwbenc.framework' + s.ios.vendored_frameworks = 'ffmpegkit.framework', 'libavcodec.framework', 'libavdevice.framework', 'libavfilter.framework', 'libavformat.framework', 'libavutil.framework', 'libswresample.framework', 'libswscale.framework' end diff --git a/tools/release/apple/ffmpeg-kit-ios-https-gpl.podspec b/tools/release/apple/ffmpeg-kit-ios-https-gpl.podspec index 65b6c8c..4551828 100644 --- a/tools/release/apple/ffmpeg-kit-ios-https-gpl.podspec +++ b/tools/release/apple/ffmpeg-kit-ios-https-gpl.podspec @@ -19,6 +19,6 @@ Pod::Spec.new do |s| s.ios.deployment_target = '9.3' s.ios.frameworks = 'AudioToolbox','AVFoundation','CoreMedia','VideoToolbox' - s.ios.vendored_frameworks = 'ffmpegkit.framework', 'libavcodec.framework', 'libavdevice.framework', 'libavfilter.framework', 'libavformat.framework', 'libavutil.framework', 'libswresample.framework', 'libswscale.framework', 'gmp.framework', 'gnutls.framework', 'libhogweed.framework', 'libnettle.framework', 'libvidstab.framework', 'x264.framework', 'x265.framework', 'xvidcore.framework' + s.ios.vendored_frameworks = 'ffmpegkit.framework', 'libavcodec.framework', 'libavdevice.framework', 'libavfilter.framework', 'libavformat.framework', 'libavutil.framework', 'libswresample.framework', 'libswscale.framework' end diff --git a/tools/release/apple/ffmpeg-kit-ios-https.podspec b/tools/release/apple/ffmpeg-kit-ios-https.podspec index 5c1a381..82470d2 100644 --- a/tools/release/apple/ffmpeg-kit-ios-https.podspec +++ b/tools/release/apple/ffmpeg-kit-ios-https.podspec @@ -19,6 +19,6 @@ Pod::Spec.new do |s| s.ios.deployment_target = '9.3' s.ios.frameworks = 'AudioToolbox','AVFoundation','CoreMedia','VideoToolbox' - s.ios.vendored_frameworks = 'ffmpegkit.framework', 'libavcodec.framework', 'libavdevice.framework', 'libavfilter.framework', 'libavformat.framework', 'libavutil.framework', 'libswresample.framework', 'libswscale.framework', 'gmp.framework', 'gnutls.framework', 'libhogweed.framework', 'libnettle.framework' + s.ios.vendored_frameworks = 'ffmpegkit.framework', 'libavcodec.framework', 'libavdevice.framework', 'libavfilter.framework', 'libavformat.framework', 'libavutil.framework', 'libswresample.framework', 'libswscale.framework' end diff --git a/tools/release/apple/ffmpeg-kit-ios-min-gpl.podspec b/tools/release/apple/ffmpeg-kit-ios-min-gpl.podspec index 36fb68a..1d05c0d 100644 --- a/tools/release/apple/ffmpeg-kit-ios-min-gpl.podspec +++ b/tools/release/apple/ffmpeg-kit-ios-min-gpl.podspec @@ -19,6 +19,6 @@ Pod::Spec.new do |s| s.ios.deployment_target = '9.3' s.ios.frameworks = 'AudioToolbox','AVFoundation','CoreMedia','VideoToolbox' - s.ios.vendored_frameworks = 'ffmpegkit.framework', 'libavcodec.framework', 'libavdevice.framework', 'libavfilter.framework', 'libavformat.framework', 'libavutil.framework', 'libswresample.framework', 'libswscale.framework', 'libvidstab.framework', 'x264.framework', 'x265.framework', 'xvidcore.framework' + s.ios.vendored_frameworks = 'ffmpegkit.framework', 'libavcodec.framework', 'libavdevice.framework', 'libavfilter.framework', 'libavformat.framework', 'libavutil.framework', 'libswresample.framework', 'libswscale.framework' end diff --git a/tools/release/apple/ffmpeg-kit-ios-video.podspec b/tools/release/apple/ffmpeg-kit-ios-video.podspec index a014fe3..5350564 100644 --- a/tools/release/apple/ffmpeg-kit-ios-video.podspec +++ b/tools/release/apple/ffmpeg-kit-ios-video.podspec @@ -19,6 +19,6 @@ Pod::Spec.new do |s| s.ios.deployment_target = '9.3' s.ios.frameworks = 'AudioToolbox','AVFoundation','CoreMedia','VideoToolbox' - s.ios.vendored_frameworks = 'ffmpegkit.framework', 'libavcodec.framework', 'libavdevice.framework', 'libavfilter.framework', 'libavformat.framework', 'libavutil.framework', 'libswresample.framework', 'libswscale.framework', 'dav1d.framework', 'expat.framework', 'fontconfig.framework', 'freetype.framework', 'fribidi.framework', 'giflib.framework', 'harfbuzz.framework', 'jpeg.framework', 'kvazaar.framework', 'libass.framework', 'libogg.framework', 'libpng.framework', 'libtheora.framework', 'libtheoradec.framework', 'libtheoraenc.framework', 'libvorbis.framework', 'libvorbisenc.framework', 'libvorbisfile.framework', 'libvpx.framework', 'libwebp.framework', 'libwebpmux.framework', 'libwebpdemux.framework', 'snappy.framework', 'tiff.framework' + s.ios.vendored_frameworks = 'ffmpegkit.framework', 'libavcodec.framework', 'libavdevice.framework', 'libavfilter.framework', 'libavformat.framework', 'libavutil.framework', 'libswresample.framework', 'libswscale.framework' end diff --git a/tools/release/apple/ffmpeg-kit-macos-audio.podspec b/tools/release/apple/ffmpeg-kit-macos-audio.podspec index d9bbeda..035b5c8 100644 --- a/tools/release/apple/ffmpeg-kit-macos-audio.podspec +++ b/tools/release/apple/ffmpeg-kit-macos-audio.podspec @@ -19,6 +19,6 @@ Pod::Spec.new do |s| s.osx.deployment_target = '10.11' s.osx.frameworks = 'AudioToolbox','AVFoundation','CoreAudio','CoreImage','CoreMedia','OpenCL','OpenGL','VideoToolbox' - s.osx.vendored_frameworks = 'ffmpegkit.framework', 'libavcodec.framework', 'libavdevice.framework', 'libavfilter.framework', 'libavformat.framework', 'libavutil.framework', 'libswresample.framework', 'libswscale.framework', 'lame.framework', 'libilbc.framework', 'libogg.framework', 'libopencore-amrnb.framework', 'libsndfile.framework', 'libvorbis.framework', 'libvorbisenc.framework', 'libvorbisfile.framework', 'opus.framework', 'shine.framework', 'soxr.framework', 'speex.framework', 'twolame.framework', 'vo-amrwbenc.framework' + s.osx.vendored_frameworks = 'ffmpegkit.framework', 'libavcodec.framework', 'libavdevice.framework', 'libavfilter.framework', 'libavformat.framework', 'libavutil.framework', 'libswresample.framework', 'libswscale.framework' end diff --git a/tools/release/apple/ffmpeg-kit-macos-full-gpl.podspec b/tools/release/apple/ffmpeg-kit-macos-full-gpl.podspec index 220674b..f2aa96b 100644 --- a/tools/release/apple/ffmpeg-kit-macos-full-gpl.podspec +++ b/tools/release/apple/ffmpeg-kit-macos-full-gpl.podspec @@ -18,7 +18,7 @@ Pod::Spec.new do |s| s.source = { :http => "https://github.com/tanersener/ffmpeg-kit/releases/download/vVERSION/ffmpeg-kit-full-gpl-VERSION-macos-framework.zip" } s.osx.deployment_target = '10.11' - s.osx.frameworks = 'AudioToolbox','AVFoundation','CoreAudio','CoreImage','CoreMedia','OpenCL','OpenGL','VideoToolbox' - s.osx.vendored_frameworks = 'ffmpegkit.framework', 'libavcodec.framework', 'libavdevice.framework', 'libavfilter.framework', 'libavformat.framework', 'libavutil.framework', 'libswresample.framework', 'libswscale.framework', 'dav1d.framework', 'expat.framework', 'fontconfig.framework', 'freetype.framework', 'fribidi.framework', 'giflib.framework', 'gmp.framework', 'gnutls.framework', 'harfbuzz.framework', 'jpeg.framework', 'kvazaar.framework', 'lame.framework', 'libass.framework', 'libhogweed.framework', 'libilbc.framework', 'libnettle.framework', 'libogg.framework', 'libopencore-amrnb.framework', 'libpng.framework', 'libsndfile.framework', 'libtheora.framework', 'libtheoradec.framework', 'libtheoraenc.framework', 'libvorbis.framework', 'libvorbisenc.framework', 'libvorbisfile.framework', 'libvpx.framework', 'libwebp.framework', 'libwebpmux.framework', 'libwebpdemux.framework', 'libxml2.framework', 'opus.framework', 'shine.framework', 'snappy.framework', 'soxr.framework', 'speex.framework', 'tiff.framework', 'twolame.framework', 'vo-amrwbenc.framework', 'libvidstab.framework', 'x264.framework', 'x265.framework', 'xvidcore.framework' + s.osx.frameworks = 'AudioToolbox','AVFoundation','CoreAudio','CoreImage','CoreMedia','OpenCL','OpenGL', 'Security', 'VideoToolbox' + s.osx.vendored_frameworks = 'ffmpegkit.framework', 'libavcodec.framework', 'libavdevice.framework', 'libavfilter.framework', 'libavformat.framework', 'libavutil.framework', 'libswresample.framework', 'libswscale.framework' end diff --git a/tools/release/apple/ffmpeg-kit-macos-full.podspec b/tools/release/apple/ffmpeg-kit-macos-full.podspec index 6d9d4f3..5f6b1e3 100644 --- a/tools/release/apple/ffmpeg-kit-macos-full.podspec +++ b/tools/release/apple/ffmpeg-kit-macos-full.podspec @@ -18,7 +18,7 @@ Pod::Spec.new do |s| s.source = { :http => "https://github.com/tanersener/ffmpeg-kit/releases/download/vVERSION/ffmpeg-kit-full-VERSION-macos-framework.zip" } s.osx.deployment_target = '10.11' - s.osx.frameworks = 'AudioToolbox','AVFoundation','CoreAudio','CoreImage','CoreMedia','OpenCL','OpenGL','VideoToolbox' - s.osx.vendored_frameworks = 'ffmpegkit.framework', 'libavcodec.framework', 'libavdevice.framework', 'libavfilter.framework', 'libavformat.framework', 'libavutil.framework', 'libswresample.framework', 'libswscale.framework', 'dav1d.framework', 'expat.framework', 'fontconfig.framework', 'freetype.framework', 'fribidi.framework', 'giflib.framework', 'gmp.framework', 'gnutls.framework', 'harfbuzz.framework', 'jpeg.framework', 'kvazaar.framework', 'lame.framework', 'libass.framework', 'libhogweed.framework', 'libilbc.framework', 'libnettle.framework', 'libogg.framework', 'libopencore-amrnb.framework', 'libpng.framework', 'libsndfile.framework', 'libtheora.framework', 'libtheoradec.framework', 'libtheoraenc.framework', 'libvorbis.framework', 'libvorbisenc.framework', 'libvorbisfile.framework', 'libvpx.framework', 'libwebp.framework', 'libwebpmux.framework', 'libwebpdemux.framework', 'libxml2.framework', 'opus.framework', 'shine.framework', 'snappy.framework', 'soxr.framework', 'speex.framework', 'tiff.framework', 'twolame.framework', 'vo-amrwbenc.framework' + s.osx.frameworks = 'AudioToolbox','AVFoundation','CoreAudio','CoreImage','CoreMedia','OpenCL','OpenGL', 'Security', 'VideoToolbox' + s.osx.vendored_frameworks = 'ffmpegkit.framework', 'libavcodec.framework', 'libavdevice.framework', 'libavfilter.framework', 'libavformat.framework', 'libavutil.framework', 'libswresample.framework', 'libswscale.framework' end diff --git a/tools/release/apple/ffmpeg-kit-macos-https-gpl.podspec b/tools/release/apple/ffmpeg-kit-macos-https-gpl.podspec index d26f946..c9ca4c3 100644 --- a/tools/release/apple/ffmpeg-kit-macos-https-gpl.podspec +++ b/tools/release/apple/ffmpeg-kit-macos-https-gpl.podspec @@ -18,7 +18,7 @@ Pod::Spec.new do |s| s.source = { :http => "https://github.com/tanersener/ffmpeg-kit/releases/download/vVERSION/ffmpeg-kit-https-gpl-VERSION-macos-framework.zip" } s.osx.deployment_target = '10.11' - s.osx.frameworks = 'AudioToolbox','AVFoundation','CoreAudio','CoreImage','CoreMedia','OpenCL','OpenGL','VideoToolbox' - s.osx.vendored_frameworks = 'ffmpegkit.framework', 'libavcodec.framework', 'libavdevice.framework', 'libavfilter.framework', 'libavformat.framework', 'libavutil.framework', 'libswresample.framework', 'libswscale.framework', 'gmp.framework', 'gnutls.framework', 'libhogweed.framework', 'libnettle.framework', 'libvidstab.framework', 'x264.framework', 'x265.framework', 'xvidcore.framework' + s.osx.frameworks = 'AudioToolbox','AVFoundation','CoreAudio','CoreImage','CoreMedia','OpenCL','OpenGL', 'Security', 'VideoToolbox' + s.osx.vendored_frameworks = 'ffmpegkit.framework', 'libavcodec.framework', 'libavdevice.framework', 'libavfilter.framework', 'libavformat.framework', 'libavutil.framework', 'libswresample.framework', 'libswscale.framework' end diff --git a/tools/release/apple/ffmpeg-kit-macos-https.podspec b/tools/release/apple/ffmpeg-kit-macos-https.podspec index 20de514..860fc84 100644 --- a/tools/release/apple/ffmpeg-kit-macos-https.podspec +++ b/tools/release/apple/ffmpeg-kit-macos-https.podspec @@ -18,7 +18,7 @@ Pod::Spec.new do |s| s.source = { :http => "https://github.com/tanersener/ffmpeg-kit/releases/download/vVERSION/ffmpeg-kit-https-VERSION-macos-framework.zip" } s.osx.deployment_target = '10.11' - s.osx.frameworks = 'AudioToolbox','AVFoundation','CoreAudio','CoreImage','CoreMedia','OpenCL','OpenGL','VideoToolbox' - s.osx.vendored_frameworks = 'ffmpegkit.framework', 'libavcodec.framework', 'libavdevice.framework', 'libavfilter.framework', 'libavformat.framework', 'libavutil.framework', 'libswresample.framework', 'libswscale.framework', 'gmp.framework', 'gnutls.framework', 'libhogweed.framework', 'libnettle.framework' + s.osx.frameworks = 'AudioToolbox','AVFoundation','CoreAudio','CoreImage','CoreMedia','OpenCL','OpenGL', 'Security', 'VideoToolbox' + s.osx.vendored_frameworks = 'ffmpegkit.framework', 'libavcodec.framework', 'libavdevice.framework', 'libavfilter.framework', 'libavformat.framework', 'libavutil.framework', 'libswresample.framework', 'libswscale.framework' end diff --git a/tools/release/apple/ffmpeg-kit-macos-min-gpl.podspec b/tools/release/apple/ffmpeg-kit-macos-min-gpl.podspec index 6e63e11..b393113 100644 --- a/tools/release/apple/ffmpeg-kit-macos-min-gpl.podspec +++ b/tools/release/apple/ffmpeg-kit-macos-min-gpl.podspec @@ -19,6 +19,6 @@ Pod::Spec.new do |s| s.osx.deployment_target = '10.11' s.osx.frameworks = 'AudioToolbox','AVFoundation','CoreAudio','CoreImage','CoreMedia','OpenCL','OpenGL','VideoToolbox' - s.osx.vendored_frameworks = 'ffmpegkit.framework', 'libavcodec.framework', 'libavdevice.framework', 'libavfilter.framework', 'libavformat.framework', 'libavutil.framework', 'libswresample.framework', 'libswscale.framework', 'libvidstab.framework', 'x264.framework', 'x265.framework', 'xvidcore.framework' + s.osx.vendored_frameworks = 'ffmpegkit.framework', 'libavcodec.framework', 'libavdevice.framework', 'libavfilter.framework', 'libavformat.framework', 'libavutil.framework', 'libswresample.framework', 'libswscale.framework' end diff --git a/tools/release/apple/ffmpeg-kit-macos-video.podspec b/tools/release/apple/ffmpeg-kit-macos-video.podspec index 3520199..cdaaba3 100644 --- a/tools/release/apple/ffmpeg-kit-macos-video.podspec +++ b/tools/release/apple/ffmpeg-kit-macos-video.podspec @@ -19,6 +19,6 @@ Pod::Spec.new do |s| s.osx.deployment_target = '10.11' s.osx.frameworks = 'AudioToolbox','AVFoundation','CoreAudio','CoreImage','CoreMedia','OpenCL','OpenGL','VideoToolbox' - s.osx.vendored_frameworks = 'ffmpegkit.framework', 'libavcodec.framework', 'libavdevice.framework', 'libavfilter.framework', 'libavformat.framework', 'libavutil.framework', 'libswresample.framework', 'libswscale.framework', 'dav1d.framework', 'expat.framework', 'fontconfig.framework', 'freetype.framework', 'fribidi.framework', 'giflib.framework', 'harfbuzz.framework', 'jpeg.framework', 'kvazaar.framework', 'libass.framework', 'libogg.framework', 'libpng.framework', 'libtheora.framework', 'libtheoradec.framework', 'libtheoraenc.framework', 'libvorbis.framework', 'libvorbisenc.framework', 'libvorbisfile.framework', 'libvpx.framework', 'libwebp.framework', 'libwebpmux.framework', 'libwebpdemux.framework', 'snappy.framework', 'tiff.framework' + s.osx.vendored_frameworks = 'ffmpegkit.framework', 'libavcodec.framework', 'libavdevice.framework', 'libavfilter.framework', 'libavformat.framework', 'libavutil.framework', 'libswresample.framework', 'libswscale.framework' end diff --git a/tools/release/apple/ffmpeg-kit-tvos-audio.podspec b/tools/release/apple/ffmpeg-kit-tvos-audio.podspec index 5952a49..ba0f5a2 100644 --- a/tools/release/apple/ffmpeg-kit-tvos-audio.podspec +++ b/tools/release/apple/ffmpeg-kit-tvos-audio.podspec @@ -19,6 +19,6 @@ Pod::Spec.new do |s| s.tvos.deployment_target = '9.2' s.tvos.frameworks = 'AudioToolbox','VideoToolbox','CoreMedia' - s.tvos.vendored_frameworks = 'ffmpegkit.framework', 'libavcodec.framework', 'libavdevice.framework', 'libavfilter.framework', 'libavformat.framework', 'libavutil.framework', 'libswresample.framework', 'libswscale.framework', 'lame.framework', 'libilbc.framework', 'libogg.framework', 'libopencore-amrnb.framework', 'libsndfile.framework', 'libvorbis.framework', 'libvorbisenc.framework', 'libvorbisfile.framework', 'opus.framework', 'shine.framework', 'soxr.framework', 'speex.framework', 'twolame.framework', 'vo-amrwbenc.framework' + s.tvos.vendored_frameworks = 'ffmpegkit.framework', 'libavcodec.framework', 'libavdevice.framework', 'libavfilter.framework', 'libavformat.framework', 'libavutil.framework', 'libswresample.framework', 'libswscale.framework' end diff --git a/tools/release/apple/ffmpeg-kit-tvos-full-gpl.podspec b/tools/release/apple/ffmpeg-kit-tvos-full-gpl.podspec index 73210ad..e8990ef 100644 --- a/tools/release/apple/ffmpeg-kit-tvos-full-gpl.podspec +++ b/tools/release/apple/ffmpeg-kit-tvos-full-gpl.podspec @@ -19,6 +19,6 @@ Pod::Spec.new do |s| s.tvos.deployment_target = '9.2' s.tvos.frameworks = 'AudioToolbox','VideoToolbox','CoreMedia' - s.tvos.vendored_frameworks = 'ffmpegkit.framework', 'libavcodec.framework', 'libavdevice.framework', 'libavfilter.framework', 'libavformat.framework', 'libavutil.framework', 'libswresample.framework', 'libswscale.framework', 'dav1d.framework', 'expat.framework', 'fontconfig.framework', 'freetype.framework', 'fribidi.framework', 'giflib.framework', 'gmp.framework', 'gnutls.framework', 'harfbuzz.framework', 'jpeg.framework', 'kvazaar.framework', 'lame.framework', 'libass.framework', 'libhogweed.framework', 'libilbc.framework', 'libnettle.framework', 'libogg.framework', 'libopencore-amrnb.framework', 'libpng.framework', 'libsndfile.framework', 'libtheora.framework', 'libtheoradec.framework', 'libtheoraenc.framework', 'libvorbis.framework', 'libvorbisenc.framework', 'libvorbisfile.framework', 'libvpx.framework', 'libwebp.framework', 'libwebpmux.framework', 'libwebpdemux.framework', 'libxml2.framework', 'opus.framework', 'shine.framework', 'snappy.framework', 'soxr.framework', 'speex.framework', 'tiff.framework', 'twolame.framework', 'vo-amrwbenc.framework', 'libvidstab.framework', 'x264.framework', 'x265.framework', 'xvidcore.framework' + s.tvos.vendored_frameworks = 'ffmpegkit.framework', 'libavcodec.framework', 'libavdevice.framework', 'libavfilter.framework', 'libavformat.framework', 'libavutil.framework', 'libswresample.framework', 'libswscale.framework' end diff --git a/tools/release/apple/ffmpeg-kit-tvos-full.podspec b/tools/release/apple/ffmpeg-kit-tvos-full.podspec index f83c7ca..46e0945 100644 --- a/tools/release/apple/ffmpeg-kit-tvos-full.podspec +++ b/tools/release/apple/ffmpeg-kit-tvos-full.podspec @@ -19,6 +19,6 @@ Pod::Spec.new do |s| s.tvos.deployment_target = '9.2' s.tvos.frameworks = 'AudioToolbox','VideoToolbox','CoreMedia' - s.tvos.vendored_frameworks = 'ffmpegkit.framework', 'libavcodec.framework', 'libavdevice.framework', 'libavfilter.framework', 'libavformat.framework', 'libavutil.framework', 'libswresample.framework', 'libswscale.framework', 'dav1d.framework', 'expat.framework', 'fontconfig.framework', 'freetype.framework', 'fribidi.framework', 'giflib.framework', 'gmp.framework', 'gnutls.framework', 'harfbuzz.framework', 'jpeg.framework', 'kvazaar.framework', 'lame.framework', 'libass.framework', 'libhogweed.framework', 'libilbc.framework', 'libnettle.framework', 'libogg.framework', 'libopencore-amrnb.framework', 'libpng.framework', 'libsndfile.framework', 'libtheora.framework', 'libtheoradec.framework', 'libtheoraenc.framework', 'libvorbis.framework', 'libvorbisenc.framework', 'libvorbisfile.framework', 'libvpx.framework', 'libwebp.framework', 'libwebpmux.framework', 'libwebpdemux.framework', 'libxml2.framework', 'opus.framework', 'shine.framework', 'snappy.framework', 'soxr.framework', 'speex.framework', 'tiff.framework', 'twolame.framework', 'vo-amrwbenc.framework' + s.tvos.vendored_frameworks = 'ffmpegkit.framework', 'libavcodec.framework', 'libavdevice.framework', 'libavfilter.framework', 'libavformat.framework', 'libavutil.framework', 'libswresample.framework', 'libswscale.framework' end diff --git a/tools/release/apple/ffmpeg-kit-tvos-https-gpl.podspec b/tools/release/apple/ffmpeg-kit-tvos-https-gpl.podspec index 618f552..5ee933d 100644 --- a/tools/release/apple/ffmpeg-kit-tvos-https-gpl.podspec +++ b/tools/release/apple/ffmpeg-kit-tvos-https-gpl.podspec @@ -19,6 +19,6 @@ Pod::Spec.new do |s| s.tvos.deployment_target = '9.2' s.tvos.frameworks = 'AudioToolbox','VideoToolbox','CoreMedia' - s.tvos.vendored_frameworks = 'ffmpegkit.framework', 'libavcodec.framework', 'libavdevice.framework', 'libavfilter.framework', 'libavformat.framework', 'libavutil.framework', 'libswresample.framework', 'libswscale.framework', 'gmp.framework', 'gnutls.framework', 'libhogweed.framework', 'libnettle.framework', 'libvidstab.framework', 'x264.framework', 'x265.framework', 'xvidcore.framework' + s.tvos.vendored_frameworks = 'ffmpegkit.framework', 'libavcodec.framework', 'libavdevice.framework', 'libavfilter.framework', 'libavformat.framework', 'libavutil.framework', 'libswresample.framework', 'libswscale.framework' end diff --git a/tools/release/apple/ffmpeg-kit-tvos-https.podspec b/tools/release/apple/ffmpeg-kit-tvos-https.podspec index ea1e64b..d8a2924 100644 --- a/tools/release/apple/ffmpeg-kit-tvos-https.podspec +++ b/tools/release/apple/ffmpeg-kit-tvos-https.podspec @@ -19,6 +19,6 @@ Pod::Spec.new do |s| s.tvos.deployment_target = '9.2' s.tvos.frameworks = 'AudioToolbox','VideoToolbox','CoreMedia' - s.tvos.vendored_frameworks = 'ffmpegkit.framework', 'libavcodec.framework', 'libavdevice.framework', 'libavfilter.framework', 'libavformat.framework', 'libavutil.framework', 'libswresample.framework', 'libswscale.framework', 'gmp.framework', 'gnutls.framework', 'libhogweed.framework', 'libnettle.framework' + s.tvos.vendored_frameworks = 'ffmpegkit.framework', 'libavcodec.framework', 'libavdevice.framework', 'libavfilter.framework', 'libavformat.framework', 'libavutil.framework', 'libswresample.framework', 'libswscale.framework' end diff --git a/tools/release/apple/ffmpeg-kit-tvos-min-gpl.podspec b/tools/release/apple/ffmpeg-kit-tvos-min-gpl.podspec index c164537..3056b02 100644 --- a/tools/release/apple/ffmpeg-kit-tvos-min-gpl.podspec +++ b/tools/release/apple/ffmpeg-kit-tvos-min-gpl.podspec @@ -19,6 +19,6 @@ Pod::Spec.new do |s| s.tvos.deployment_target = '9.2' s.tvos.frameworks = 'AudioToolbox','VideoToolbox','CoreMedia' - s.tvos.vendored_frameworks = 'ffmpegkit.framework', 'libavcodec.framework', 'libavdevice.framework', 'libavfilter.framework', 'libavformat.framework', 'libavutil.framework', 'libswresample.framework', 'libswscale.framework', 'libvidstab.framework', 'x264.framework', 'x265.framework', 'xvidcore.framework' + s.tvos.vendored_frameworks = 'ffmpegkit.framework', 'libavcodec.framework', 'libavdevice.framework', 'libavfilter.framework', 'libavformat.framework', 'libavutil.framework', 'libswresample.framework', 'libswscale.framework' end diff --git a/tools/release/apple/ffmpeg-kit-tvos-video.podspec b/tools/release/apple/ffmpeg-kit-tvos-video.podspec index d598116..1e34365 100644 --- a/tools/release/apple/ffmpeg-kit-tvos-video.podspec +++ b/tools/release/apple/ffmpeg-kit-tvos-video.podspec @@ -19,6 +19,6 @@ Pod::Spec.new do |s| s.tvos.deployment_target = '9.2' s.tvos.frameworks = 'AudioToolbox','VideoToolbox','CoreMedia' - s.tvos.vendored_frameworks = 'ffmpegkit.framework', 'libavcodec.framework', 'libavdevice.framework', 'libavfilter.framework', 'libavformat.framework', 'libavutil.framework', 'libswresample.framework', 'libswscale.framework', 'dav1d.framework', 'expat.framework', 'fontconfig.framework', 'freetype.framework', 'fribidi.framework', 'giflib.framework', 'harfbuzz.framework', 'jpeg.framework', 'kvazaar.framework', 'libass.framework', 'libogg.framework', 'libpng.framework', 'libtheora.framework', 'libtheoradec.framework', 'libtheoraenc.framework', 'libvorbis.framework', 'libvorbisenc.framework', 'libvorbisfile.framework', 'libvpx.framework', 'libwebp.framework', 'libwebpmux.framework', 'libwebpdemux.framework', 'snappy.framework', 'tiff.framework' + s.tvos.vendored_frameworks = 'ffmpegkit.framework', 'libavcodec.framework', 'libavdevice.framework', 'libavfilter.framework', 'libavformat.framework', 'libavutil.framework', 'libswresample.framework', 'libswscale.framework' end diff --git a/tools/release/apple/strip-frameworks.sh b/tools/release/apple/strip-frameworks.sh new file mode 100755 index 0000000..2c23237 --- /dev/null +++ b/tools/release/apple/strip-frameworks.sh @@ -0,0 +1,62 @@ +################################################################################ +# +# Copyright 2015 Realm Inc. +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +# +################################################################################ + +# This script strips all non-valid architectures from dynamic libraries in +# the application's `Frameworks` directory. +# +# The following environment variables are required: +# +# BUILT_PRODUCTS_DIR +# FRAMEWORKS_FOLDER_PATH +# VALID_ARCHS +# EXPANDED_CODE_SIGN_IDENTITY + + +# Signs a framework with the provided identity +code_sign() { +# Use the current code_sign_identitiy +echo "Code Signing $1 with Identity ${EXPANDED_CODE_SIGN_IDENTITY_NAME}" +echo "/usr/bin/codesign --force --sign ${EXPANDED_CODE_SIGN_IDENTITY} --preserve-metadata=identifier,entitlements $1" +/usr/bin/codesign --force --sign ${EXPANDED_CODE_SIGN_IDENTITY} --preserve-metadata=identifier,entitlements "$1" +} + +echo "Stripping frameworks" +cd "${BUILT_PRODUCTS_DIR}/${FRAMEWORKS_FOLDER_PATH}" + +for file in $(find . -type f -perm +111); do +# Skip non-dynamic libraries +if ! [[ "$(file "$file")" == *"dynamically linked shared library"* ]]; then +continue +fi +# Get architectures for current file +archs="$(lipo -info "${file}" | rev | cut -d ':' -f1 | rev)" +stripped="" +for arch in $archs; do +if ! [[ "${VALID_ARCHS}" == *"$arch"* ]]; then +# Strip non-valid architectures in-place +lipo -remove "$arch" -output "$file" "$file" || exit 1 +stripped="$stripped $arch" +fi +done +if [[ "$stripped" != "" ]]; then +echo "Stripped $file of architectures:$stripped" +if [ "${CODE_SIGNING_REQUIRED}" == "YES" ]; then +code_sign "${file}" +fi +fi +done diff --git a/tools/release/flutter/create_packages.sh b/tools/release/flutter/create_packages.sh index e89e624..5867cef 100755 --- a/tools/release/flutter/create_packages.sh +++ b/tools/release/flutter/create_packages.sh @@ -19,7 +19,7 @@ create_main_releases() { for CURRENT_PACKAGE in "${PACKAGES[@]}"; do local FLUTTER_PACKAGE_NAME="$(echo "${CURRENT_PACKAGE}" | sed "s/\-/\_/g")" local PACKAGE_PATH="${PACKAGES_DIR}/${CURRENT_PACKAGE}" - cp -r ${SOURCE_DIR} ${PACKAGE_PATH} + cp -R ${SOURCE_DIR} ${PACKAGE_PATH} # 1. pubspec $SED_INLINE "s|name: ffmpeg_kit_flutter|name: ffmpeg_kit_flutter_$FLUTTER_PACKAGE_NAME|g" ${PACKAGE_PATH}/pubspec.yaml @@ -54,7 +54,7 @@ create_lts_releases() { for CURRENT_PACKAGE in "${PACKAGES[@]}"; do local FLUTTER_PACKAGE_NAME="$(echo "${CURRENT_PACKAGE}" | sed "s/\-/\_/g")" local PACKAGE_PATH="${PACKAGES_DIR}/${CURRENT_PACKAGE}-lts" - cp -r ${SOURCE_DIR} ${PACKAGE_PATH} + cp -R ${SOURCE_DIR} ${PACKAGE_PATH} # 1. pubspec $SED_INLINE "s|name: ffmpeg_kit_flutter|name: ffmpeg_kit_flutter_$FLUTTER_PACKAGE_NAME|g" ${PACKAGE_PATH}/pubspec.yaml @@ -103,4 +103,4 @@ create_main_releases; create_lts_releases; -cp -r "${BASEDIR}/flutter/flutter_platform_interface" "$PACKAGES_DIR" \ No newline at end of file +cp -R "${BASEDIR}/flutter/flutter_platform_interface" "$PACKAGES_DIR" \ No newline at end of file diff --git a/tools/release/ios.lts.sh b/tools/release/ios.lts.sh index eec9c55..3cb42a6 100755 --- a/tools/release/ios.lts.sh +++ b/tools/release/ios.lts.sh @@ -18,7 +18,7 @@ create_package() { rm -rf "${CURRENT_PACKAGE}" mkdir -p "${CURRENT_PACKAGE}" || exit 1 - cp -r "${SOURCE_PACKAGE}"/* "${CURRENT_PACKAGE}" || exit 1 + cp -R "${SOURCE_PACKAGE}"/* "${CURRENT_PACKAGE}" || exit 1 cd "${CURRENT_PACKAGE}" || exit 1 zip -r "../ffmpeg-kit-$1-${PACKAGE_VERSION}-ios-framework.zip" * || exit 1 @@ -47,8 +47,8 @@ create_package() { cp "${LICENSE_FILE}" "${CURRENT_UNIVERSAL_PACKAGE}"/LICENSE."${LIBRARY_NAME}" || exit 1 done - cp -r "${SOURCE_UNIVERSAL_PACKAGE}"/ffmpeg-kit/include/* "${CURRENT_UNIVERSAL_PACKAGE}"/include || exit 1 - cp -r "${SOURCE_UNIVERSAL_PACKAGE}"/ffmpeg/include/* "${CURRENT_UNIVERSAL_PACKAGE}"/include || exit 1 + cp -R "${SOURCE_UNIVERSAL_PACKAGE}"/ffmpeg-kit/include/* "${CURRENT_UNIVERSAL_PACKAGE}"/include || exit 1 + cp -R "${SOURCE_UNIVERSAL_PACKAGE}"/ffmpeg/include/* "${CURRENT_UNIVERSAL_PACKAGE}"/include || exit 1 cp "${SOURCE_UNIVERSAL_PACKAGE}"/ffmpeg/LICENSE "${CURRENT_UNIVERSAL_PACKAGE}"/LICENSE || exit 1 cd "${ALL_UNIVERSAL_DIRECTORY}" || exit 1 diff --git a/tools/release/ios.sh b/tools/release/ios.sh index e4954a0..42715c3 100755 --- a/tools/release/ios.sh +++ b/tools/release/ios.sh @@ -16,7 +16,7 @@ create_package() { rm -rf "${CURRENT_PACKAGE}" mkdir -p "${CURRENT_PACKAGE}" || exit 1 - cp -r "${SOURCE_PACKAGE}"/* "${CURRENT_PACKAGE}" || exit 1 + cp -R "${SOURCE_PACKAGE}"/* "${CURRENT_PACKAGE}" || exit 1 cd "${CURRENT_PACKAGE}" || exit 1 zip -r "../ffmpeg-kit-$1-${PACKAGE_VERSION}-ios-xcframework.zip" * || exit 1 diff --git a/tools/release/macos.lts.sh b/tools/release/macos.lts.sh index 3dcd08b..3eaee4d 100755 --- a/tools/release/macos.lts.sh +++ b/tools/release/macos.lts.sh @@ -18,7 +18,7 @@ create_package() { rm -rf "${CURRENT_PACKAGE}" mkdir -p "${CURRENT_PACKAGE}" || exit 1 - cp -r "${SOURCE_PACKAGE}"/* "${CURRENT_PACKAGE}" || exit 1 + cp -R "${SOURCE_PACKAGE}"/* "${CURRENT_PACKAGE}" || exit 1 cd "${CURRENT_PACKAGE}" || exit 1 zip -r "../ffmpeg-kit-$1-${PACKAGE_VERSION}-macos-framework.zip" * || exit 1 @@ -46,8 +46,8 @@ create_package() { cp "${LICENSE_FILE}" "${CURRENT_UNIVERSAL_PACKAGE}"/LICENSE."${LIBRARY_NAME}" || exit 1 done - cp -r "${SOURCE_UNIVERSAL_PACKAGE}"/ffmpeg-kit/include/* "${CURRENT_UNIVERSAL_PACKAGE}"/include || exit 1 - cp -r "${SOURCE_UNIVERSAL_PACKAGE}"/ffmpeg/include/* "${CURRENT_UNIVERSAL_PACKAGE}"/include || exit 1 + cp -R "${SOURCE_UNIVERSAL_PACKAGE}"/ffmpeg-kit/include/* "${CURRENT_UNIVERSAL_PACKAGE}"/include || exit 1 + cp -R "${SOURCE_UNIVERSAL_PACKAGE}"/ffmpeg/include/* "${CURRENT_UNIVERSAL_PACKAGE}"/include || exit 1 cp "${SOURCE_UNIVERSAL_PACKAGE}"/ffmpeg/LICENSE "${CURRENT_UNIVERSAL_PACKAGE}"/LICENSE || exit 1 cd "${ALL_UNIVERSAL_DIRECTORY}" || exit 1 diff --git a/tools/release/macos.sh b/tools/release/macos.sh index 1df773d..f8c93bb 100755 --- a/tools/release/macos.sh +++ b/tools/release/macos.sh @@ -16,7 +16,7 @@ create_package() { rm -rf "${CURRENT_PACKAGE}" mkdir -p "${CURRENT_PACKAGE}" || exit 1 - cp -r "${SOURCE_PACKAGE}"/* "${CURRENT_PACKAGE}" || exit 1 + cp -R "${SOURCE_PACKAGE}"/* "${CURRENT_PACKAGE}" || exit 1 cd "${CURRENT_PACKAGE}" || exit 1 zip -r "../ffmpeg-kit-$1-${PACKAGE_VERSION}-macos-xcframework.zip" * || exit 1 diff --git a/tools/release/tvos.lts.sh b/tools/release/tvos.lts.sh index 9345dcd..b1f52d7 100755 --- a/tools/release/tvos.lts.sh +++ b/tools/release/tvos.lts.sh @@ -18,7 +18,7 @@ create_package() { rm -rf "${CURRENT_PACKAGE}" mkdir -p "${CURRENT_PACKAGE}" || exit 1 - cp -r "${SOURCE_PACKAGE}"/* "${CURRENT_PACKAGE}" || exit 1 + cp -R "${SOURCE_PACKAGE}"/* "${CURRENT_PACKAGE}" || exit 1 cd "${CURRENT_PACKAGE}" || exit 1 zip -r "../ffmpeg-kit-$1-${PACKAGE_VERSION}-tvos-framework.zip" * || exit 1 @@ -46,8 +46,8 @@ create_package() { cp "${LICENSE_FILE}" "${CURRENT_UNIVERSAL_PACKAGE}"/LICENSE."${LIBRARY_NAME}" || exit 1 done - cp -r "${SOURCE_UNIVERSAL_PACKAGE}"/ffmpeg-kit/include/* "${CURRENT_UNIVERSAL_PACKAGE}"/include || exit 1 - cp -r "${SOURCE_UNIVERSAL_PACKAGE}"/ffmpeg/include/* "${CURRENT_UNIVERSAL_PACKAGE}"/include || exit 1 + cp -R "${SOURCE_UNIVERSAL_PACKAGE}"/ffmpeg-kit/include/* "${CURRENT_UNIVERSAL_PACKAGE}"/include || exit 1 + cp -R "${SOURCE_UNIVERSAL_PACKAGE}"/ffmpeg/include/* "${CURRENT_UNIVERSAL_PACKAGE}"/include || exit 1 cp "${SOURCE_UNIVERSAL_PACKAGE}"/ffmpeg/LICENSE "${CURRENT_UNIVERSAL_PACKAGE}"/LICENSE || exit 1 cd "${ALL_UNIVERSAL_DIRECTORY}" || exit 1 diff --git a/tools/release/tvos.sh b/tools/release/tvos.sh index 5c35b70..44b27fb 100755 --- a/tools/release/tvos.sh +++ b/tools/release/tvos.sh @@ -16,7 +16,7 @@ create_package() { rm -rf "${CURRENT_PACKAGE}" mkdir -p "${CURRENT_PACKAGE}" || exit 1 - cp -r "${SOURCE_PACKAGE}"/* "${CURRENT_PACKAGE}" || exit 1 + cp -R "${SOURCE_PACKAGE}"/* "${CURRENT_PACKAGE}" || exit 1 cd "${CURRENT_PACKAGE}" || exit 1 zip -r "../ffmpeg-kit-$1-${PACKAGE_VERSION}-tvos-xcframework.zip" * || exit 1 diff --git a/tvos.sh b/tvos.sh index 1b1da32..ac03120 100755 --- a/tvos.sh +++ b/tvos.sh @@ -19,7 +19,6 @@ source "${BASEDIR}"/scripts/function-${FFMPEG_KIT_BUILD_TYPE}.sh # SET DEFAULTS SETTINGS enable_default_tvos_architectures -enable_main_build # SELECT XCODE VERSION USED FOR BUILDING XCODE_FOR_FFMPEG_KIT=$(ls ~/.xcode.for.ffmpeg.kit.sh 2>>"${BASEDIR}"/build.log) @@ -28,7 +27,7 @@ if [[ -f ${XCODE_FOR_FFMPEG_KIT} ]]; then fi # DETECT TVOS SDK VERSION -DETECTED_TVOS_SDK_VERSION="$(xcrun --sdk appletvos --show-sdk-version 2>>${BASEDIR}/build.log)" +export DETECTED_TVOS_SDK_VERSION="$(xcrun --sdk appletvos --show-sdk-version 2>>${BASEDIR}/build.log)" echo -e "\nINFO: Using SDK ${DETECTED_TVOS_SDK_VERSION} by Xcode provided at $(xcode-select -p)\n" 1>>"${BASEDIR}"/build.log 2>&1 echo -e "\nINFO: Build options: $*\n" 1>>"${BASEDIR}"/build.log 2>&1 @@ -45,6 +44,9 @@ if [[ -z ${BUILD_VERSION} ]]; then exit 1 fi +# MAIN BUILDS ENABLED BY DEFAULT +enable_main_build + # PROCESS LTS BUILD OPTION FIRST AND SET BUILD TYPE: MAIN OR LTS for argument in "$@"; do if [[ "$argument" == "-l" ]] || [[ "$argument" == "--lts" ]]; then @@ -154,11 +156,14 @@ if [[ -n ${DISPLAY_HELP} ]]; then exit 0 fi +# DISABLE NOT SUPPORTED ARCHITECTURES +disable_tvos_architecture_not_supported_on_detected_sdk_version "${ARCH_ARM64_SIMULATOR}" + # CHECK SOME RULES FOR .framework BUNDLES # 1. DISABLE arm64-simulator WHEN arm64 IS ENABLED IN framework BUNDLES if [[ -z ${FFMPEG_KIT_XCF_BUILD} ]] && [[ ${ENABLED_ARCHITECTURES[${ARCH_ARM64}]} -eq 1 ]] && [[ ${ENABLED_ARCHITECTURES[${ARCH_ARM64_SIMULATOR}]} -eq 1 ]]; then - echo -e "INFO: Disabled arm64-simulator architecture which can not co-exist with arm64 in the same framework bundle.\n" 1>>"${BASEDIR}"/build.log 2>&1 + echo -e "INFO: Disabled arm64-simulator architecture which cannot co-exist with arm64 in the same framework bundle.\n" 1>>"${BASEDIR}"/build.log 2>&1 disable_arch "arm64-simulator" fi From d73c43cd2c90198a5de63a13ad5116f23efbf285 Mon Sep 17 00:00:00 2001 From: Taner Sener Date: Sun, 7 Nov 2021 00:53:03 +0000 Subject: [PATCH 11/45] enable 10bit support in x265, fixes #187 --- scripts/android/x265.sh | 1 + scripts/apple/x265.sh | 4 ++++ 2 files changed, 5 insertions(+) diff --git a/scripts/android/x265.sh b/scripts/android/x265.sh index 9c31ac8..937fa5a 100755 --- a/scripts/android/x265.sh +++ b/scripts/android/x265.sh @@ -42,6 +42,7 @@ cmake -Wno-dev \ -DSTATIC_LINK_CRT=1 \ -DENABLE_PIC=1 \ -DENABLE_CLI=0 \ + -DHIGH_BIT_DEPTH=1 \ ${ASM_OPTIONS} \ -DCMAKE_SYSTEM_PROCESSOR="${ARCH}" \ -DENABLE_SHARED=0 "${BASEDIR}"/src/"${LIB_NAME}"/source || return 1 diff --git a/scripts/apple/x265.sh b/scripts/apple/x265.sh index 4cf5159..1f24121 100755 --- a/scripts/apple/x265.sh +++ b/scripts/apple/x265.sh @@ -11,6 +11,9 @@ arm64*) x86-64-mac-catalyst) ASM_OPTIONS="-DENABLE_ASSEMBLY=0 -DCROSS_COMPILE_ARM=0" ;; +i386) + ASM_OPTIONS="-DENABLE_ASSEMBLY=0 -DCROSS_COMPILE_ARM=0" + ;; *) ASM_OPTIONS="-DENABLE_ASSEMBLY=1 -DCROSS_COMPILE_ARM=0" ;; @@ -65,6 +68,7 @@ cmake -Wno-dev \ -DSTATIC_LINK_CRT=1 \ -DENABLE_PIC=1 \ -DENABLE_CLI=0 \ + -DHIGH_BIT_DEPTH=1 \ ${ASM_OPTIONS} \ -DCMAKE_SYSTEM_PROCESSOR="$(get_target_cpu)" \ -DENABLE_SHARED=0 "${BASEDIR}"/src/"${LIB_NAME}"/source || return 1 From f52f6a1c56dc75c35485455ca71d7ca624e2fe38 Mon Sep 17 00:00:00 2001 From: Taner Sener Date: Sun, 7 Nov 2021 10:09:16 +0000 Subject: [PATCH 12/45] use LSMinimumSystemVersion instead of MinimumOSVersion in macOS bundles, fixes #174 --- scripts/function-apple.sh | 19 ++++++++++++++++--- 1 file changed, 16 insertions(+), 3 deletions(-) diff --git a/scripts/function-apple.sh b/scripts/function-apple.sh index e7f2f22..57c14b8 100755 --- a/scripts/function-apple.sh +++ b/scripts/function-apple.sh @@ -400,7 +400,7 @@ create_ffmpeg_framework() { done fi - build_info_plist "${FFMPEG_LIB_FRAMEWORK_RESOURCE_PATH}/Info.plist" "${FFMPEG_LIB}" "com.arthenica.ffmpegkit.${CAPITAL_CASE_FFMPEG_LIB_NAME}" "${FFMPEG_LIB_VERSION}" "${FFMPEG_LIB_VERSION}" + build_info_plist "${FFMPEG_LIB_FRAMEWORK_RESOURCE_PATH}/Info.plist" "${FFMPEG_LIB}" "com.arthenica.ffmpegkit.${CAPITAL_CASE_FFMPEG_LIB_NAME}" "${FFMPEG_LIB_VERSION}" "${FFMPEG_LIB_VERSION}" "${ARCHITECTURE_VARIANT}" echo -e "DEBUG: ${FFMPEG_LIB} framework built for $(get_apple_architecture_variant "${ARCHITECTURE_VARIANT}") platform successfully\n" 1>>"${BASEDIR}"/build.log 2>&1 done @@ -477,7 +477,7 @@ create_ffmpeg_kit_framework() { # COPYING STRIP SCRIPT FOR SHARED LIBRARY cp ${BASEDIR}/tools/release/apple/strip-frameworks.sh ${FFMPEG_KIT_FRAMEWORK_RESOURCE_PATH} 1>>${BASEDIR}/build.log 2>&1 - build_info_plist "${FFMPEG_KIT_FRAMEWORK_RESOURCE_PATH}/Info.plist" "ffmpegkit" "com.arthenica.ffmpegkit.FFmpegKit" "${FFMPEG_KIT_VERSION}" "${FFMPEG_KIT_VERSION}" + build_info_plist "${FFMPEG_KIT_FRAMEWORK_RESOURCE_PATH}/Info.plist" "ffmpegkit" "com.arthenica.ffmpegkit.FFmpegKit" "${FFMPEG_KIT_VERSION}" "${FFMPEG_KIT_VERSION}" "${ARCHITECTURE_VARIANT}" build_modulemap "${FFMPEG_KIT_FRAMEWORK_PATH}/Modules/module.modulemap" echo -e "DEBUG: ffmpeg-kit framework built for $(get_apple_architecture_variant "${ARCHITECTURE_VARIANT}") platform successfully\n" 1>>"${BASEDIR}"/build.log 2>&1 @@ -864,16 +864,29 @@ build_info_plist() { local FRAMEWORK_ID="$3" local FRAMEWORK_SHORT_VERSION="$4" local FRAMEWORK_VERSION="$5" + local ARCHITECTURE_VARIANT="$6" + case ${FFMPEG_KIT_BUILD_TYPE} in ios) + case ${ARCHITECTURE_VARIANT} in + "${ARCH_VAR_MAC_CATALYST}") + local MINIMUM_VERSION_KEY="LSMinimumSystemVersion" + ;; + *) + local MINIMUM_VERSION_KEY="MinimumOSVersion" + ;; + esac + local MINIMUM_OS_VERSION="${IOS_MIN_VERSION}" local SUPPORTED_PLATFORMS="iPhoneOS" ;; tvos) + local MINIMUM_VERSION_KEY="MinimumOSVersion" local MINIMUM_OS_VERSION="${TVOS_MIN_VERSION}" local SUPPORTED_PLATFORMS="AppleTVOS" ;; macos) + local MINIMUM_VERSION_KEY="LSMinimumSystemVersion" local MINIMUM_OS_VERSION="${MACOS_MIN_VERSION}" local SUPPORTED_PLATFORMS="MacOSX" ;; @@ -902,7 +915,7 @@ build_info_plist() { ${FRAMEWORK_VERSION} CFBundleSignature ???? - MinimumOSVersion + ${MINIMUM_VERSION_KEY} ${MINIMUM_OS_VERSION} CFBundleSupportedPlatforms From 3f8ec5d2f797f7c610b6de8084d599f47c3c7a3e Mon Sep 17 00:00:00 2001 From: Taner Sener Date: Sun, 7 Nov 2021 14:06:20 +0000 Subject: [PATCH 13/45] document internal native methods that must not be called by applications --- .../src/main/java/com/arthenica/ffmpegkit/FFmpegSession.java | 3 +++ .../src/main/java/com/arthenica/ffmpegkit/Session.java | 3 +++ apple/src/FFmpegSession.h | 3 +++ apple/src/Session.h | 3 +++ 4 files changed, 12 insertions(+) diff --git a/android/ffmpeg-kit-android-lib/src/main/java/com/arthenica/ffmpegkit/FFmpegSession.java b/android/ffmpeg-kit-android-lib/src/main/java/com/arthenica/ffmpegkit/FFmpegSession.java index 28e7ada..2a897fe 100644 --- a/android/ffmpeg-kit-android-lib/src/main/java/com/arthenica/ffmpegkit/FFmpegSession.java +++ b/android/ffmpeg-kit-android-lib/src/main/java/com/arthenica/ffmpegkit/FFmpegSession.java @@ -167,6 +167,9 @@ public class FFmpegSession extends AbstractSession implements Session { /** * Adds a new statistics entry for this session. * + * It is invoked internally by FFmpegKit library methods. Must not be used by user + * applications. + * * @param statistics statistics entry */ public void addStatistics(final Statistics statistics) { diff --git a/android/ffmpeg-kit-android-lib/src/main/java/com/arthenica/ffmpegkit/Session.java b/android/ffmpeg-kit-android-lib/src/main/java/com/arthenica/ffmpegkit/Session.java index 2dc73fa..c12c9a6 100644 --- a/android/ffmpeg-kit-android-lib/src/main/java/com/arthenica/ffmpegkit/Session.java +++ b/android/ffmpeg-kit-android-lib/src/main/java/com/arthenica/ffmpegkit/Session.java @@ -199,6 +199,9 @@ public interface Session { /** * Adds a new log entry for this session. * + * It is invoked internally by FFmpegKit library methods. Must not be used by user + * applications. + * * @param log log entry */ void addLog(final Log log); diff --git a/apple/src/FFmpegSession.h b/apple/src/FFmpegSession.h index f63d225..da376aa 100644 --- a/apple/src/FFmpegSession.h +++ b/apple/src/FFmpegSession.h @@ -110,6 +110,9 @@ /** * Adds a new statistics entry for this session. * + * It is invoked internally by FFmpegKit library methods. Must not be used by user + * applications. + * * @param statistics statistics entry */ - (void)addStatistics:(Statistics*)statistics; diff --git a/apple/src/Session.h b/apple/src/Session.h index 6be9665..17ea178 100644 --- a/apple/src/Session.h +++ b/apple/src/Session.h @@ -206,6 +206,9 @@ /** * Adds a new log entry for this session. * + * It is invoked internally by FFmpegKit library methods. Must not be used by user + * applications. + * * @param log log entry */ - (void)addLog:(Log*)log; From 83d1fc6e72a9656f66a3d3b3d767e22d12f62949 Mon Sep 17 00:00:00 2001 From: Taner Sener Date: Sun, 7 Nov 2021 14:08:51 +0000 Subject: [PATCH 14/45] dont allow generating invalid saf urls, improves #34 --- .../main/java/com/arthenica/ffmpegkit/FFmpegKitConfig.java | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/android/ffmpeg-kit-android-lib/src/main/java/com/arthenica/ffmpegkit/FFmpegKitConfig.java b/android/ffmpeg-kit-android-lib/src/main/java/com/arthenica/ffmpegkit/FFmpegKitConfig.java index 5e36e0c..e0f0549 100644 --- a/android/ffmpeg-kit-android-lib/src/main/java/com/arthenica/ffmpegkit/FFmpegKitConfig.java +++ b/android/ffmpeg-kit-android-lib/src/main/java/com/arthenica/ffmpegkit/FFmpegKitConfig.java @@ -852,15 +852,17 @@ public class FFmpegKitConfig { } } catch (final Throwable t) { android.util.Log.e(TAG, String.format("Failed to get %s column for %s.%s", DocumentsContract.Document.COLUMN_DISPLAY_NAME, uri.toString(), Exceptions.getStackTraceString(t))); + throw t; } - int fd = -1; + final int fd; try { ParcelFileDescriptor parcelFileDescriptor = context.getContentResolver().openFileDescriptor(uri, openMode); fd = parcelFileDescriptor.getFd(); pfdMap.put(fd, parcelFileDescriptor); } catch (final Throwable t) { android.util.Log.e(TAG, String.format("Failed to obtain %s parcelFileDescriptor for %s.%s", openMode, uri.toString(), Exceptions.getStackTraceString(t))); + throw new IllegalArgumentException(String.format("Failed to obtain %s parcelFileDescriptor for %s.", openMode, uri.toString()), t); } return "saf:" + fd + "." + FFmpegKitConfig.extractExtensionFromSafDisplayName(displayName); From eda94ad61338d70e027c22e6bd2802b92a20a8cb Mon Sep 17 00:00:00 2001 From: Taner Sener Date: Sun, 7 Nov 2021 14:10:34 +0000 Subject: [PATCH 15/45] introduce a method to generate saf protocol urls using a custom open mode, fixes #167 --- .../src/main/cpp/ffmpegkit.c | 36 +++-- .../arthenica/ffmpegkit/FFmpegKitConfig.java | 138 ++++++++++++++---- scripts/android/ffmpeg.sh | 2 +- tools/protocols/libavformat_file.c | 62 +++----- tools/protocols/libavutil_file.c | 19 ++- tools/protocols/libavutil_file.h | 12 +- 6 files changed, 180 insertions(+), 89 deletions(-) diff --git a/android/ffmpeg-kit-android-lib/src/main/cpp/ffmpegkit.c b/android/ffmpeg-kit-android-lib/src/main/cpp/ffmpegkit.c index 789da5f..86d5da6 100644 --- a/android/ffmpeg-kit-android-lib/src/main/cpp/ffmpegkit.c +++ b/android/ffmpeg-kit-android-lib/src/main/cpp/ffmpegkit.c @@ -80,8 +80,11 @@ static jmethodID logMethod; /** Global reference of statistics redirection method in Java */ static jmethodID statisticsMethod; -/** Global reference of closeParcelFileDescriptor method in Java */ -static jmethodID closeParcelFileDescriptorMethod; +/** Global reference of safOpen method in Java */ +static jmethodID safOpenMethod; + +/** Global reference of safClose method in Java */ +static jmethodID safCloseMethod; /** Global reference of String class in Java */ static jclass stringClass; @@ -561,13 +564,21 @@ void *callbackThreadFunction() { } /** - * Used by fd and saf protocols; is expected to be called from a Java thread, therefore we don't need attach/detach + * Used by saf protocol; is expected to be called from a Java thread, therefore we don't need attach/detach */ -int close_parcel_file_descriptor(int fd) { +int saf_open(int safId) { JNIEnv *env = NULL; (*globalVm)->GetEnv(globalVm, (void**) &env, JNI_VERSION_1_6); - (*env)->CallStaticVoidMethod(env, configClass, closeParcelFileDescriptorMethod, fd); - return 0; + return (*env)->CallStaticIntMethod(env, configClass, safOpenMethod, safId); +} + +/** + * Used by saf protocol; is expected to be called from a Java thread, therefore we don't need attach/detach + */ +int saf_close(int fd) { + JNIEnv *env = NULL; + (*globalVm)->GetEnv(globalVm, (void**) &env, JNI_VERSION_1_6); + return (*env)->CallStaticIntMethod(env, configClass, safCloseMethod, fd); } /** @@ -615,9 +626,15 @@ jint JNI_OnLoad(JavaVM *vm, void *reserved) { return JNI_FALSE; } - closeParcelFileDescriptorMethod = (*env)->GetStaticMethodID(env, localConfigClass, "closeParcelFileDescriptor", "(I)V"); + safOpenMethod = (*env)->GetStaticMethodID(env, localConfigClass, "safOpen", "(I)I"); + if (logMethod == NULL) { + LOGE("OnLoad thread failed to GetStaticMethodID for %s.\n", "safOpen"); + return JNI_FALSE; + } + + safCloseMethod = (*env)->GetStaticMethodID(env, localConfigClass, "safClose", "(I)I"); if (logMethod == NULL) { - LOGE("OnLoad thread failed to GetStaticMethodID for %s.\n", "closeParcelFileDescriptor"); + LOGE("OnLoad thread failed to GetStaticMethodID for %s.\n", "safClose"); return JNI_FALSE; } @@ -645,7 +662,8 @@ jint JNI_OnLoad(JavaVM *vm, void *reserved) { redirectionEnabled = 0; - av_set_fd_close(close_parcel_file_descriptor); + av_set_saf_open(saf_open); + av_set_saf_close(saf_close); return JNI_VERSION_1_6; } diff --git a/android/ffmpeg-kit-android-lib/src/main/java/com/arthenica/ffmpegkit/FFmpegKitConfig.java b/android/ffmpeg-kit-android-lib/src/main/java/com/arthenica/ffmpegkit/FFmpegKitConfig.java index e0f0549..03b6bc4 100644 --- a/android/ffmpeg-kit-android-lib/src/main/java/com/arthenica/ffmpegkit/FFmpegKitConfig.java +++ b/android/ffmpeg-kit-android-lib/src/main/java/com/arthenica/ffmpegkit/FFmpegKitConfig.java @@ -19,6 +19,8 @@ package com.arthenica.ffmpegkit; +import android.content.ContentProvider; +import android.content.ContentResolver; import android.content.Context; import android.database.Cursor; import android.net.Uri; @@ -44,7 +46,7 @@ import java.util.StringTokenizer; import java.util.concurrent.ExecutorService; import java.util.concurrent.Executors; import java.util.concurrent.Future; -import java.util.concurrent.atomic.AtomicLong; +import java.util.concurrent.atomic.AtomicInteger; import java.util.concurrent.atomic.AtomicReference; /** @@ -52,6 +54,45 @@ import java.util.concurrent.atomic.AtomicReference; */ public class FFmpegKitConfig { + static class SAFProtocolUrl { + private final Integer safId; + private final Uri uri; + private final String openMode; + private final ContentResolver contentResolver; + private ParcelFileDescriptor parcelFileDescriptor; + + public SAFProtocolUrl(final Integer safId, final Uri uri, final String openMode, final ContentResolver contentResolver) { + this.safId = safId; + this.uri = uri; + this.openMode = openMode; + this.contentResolver = contentResolver; + } + + public Integer getSafId() { + return safId; + } + + public Uri getUri() { + return uri; + } + + public String getOpenMode() { + return openMode; + } + + public ContentResolver getContentResolver() { + return contentResolver; + } + + public void setParcelFileDescriptor(final ParcelFileDescriptor parcelFileDescriptor) { + this.parcelFileDescriptor = parcelFileDescriptor; + } + + public ParcelFileDescriptor getParcelFileDescriptor() { + return parcelFileDescriptor; + } + } + /** * The tag used for logging. */ @@ -63,9 +104,9 @@ public class FFmpegKitConfig { static final String FFMPEG_KIT_NAMED_PIPE_PREFIX = "fk_pipe_"; /** - * Generates ids for named ffmpeg kit pipes. + * Generates ids for named ffmpeg kit pipes and saf protocol urls. */ - private static final AtomicLong pipeIndexGenerator; + private static final AtomicInteger uniqueIdGenerator; private static Level activeLogLevel; @@ -82,7 +123,8 @@ public class FFmpegKitConfig { private static LogCallback globalLogCallbackFunction; private static StatisticsCallback globalStatisticsCallbackFunction; private static ExecuteCallback globalExecuteCallbackFunction; - private static final SparseArray pfdMap; + private static final SparseArray safIdMap; + private static final SparseArray safFileDescriptorMap; private static LogRedirectionStrategy globalLogRedirectionStrategy; static { @@ -102,7 +144,7 @@ public class FFmpegKitConfig { android.util.Log.i(FFmpegKitConfig.TAG, String.format("Loaded ffmpeg-kit-%s-%s-%s-%s.", NativeLoader.loadPackageName(), NativeLoader.loadAbi(), NativeLoader.loadVersion(), NativeLoader.loadBuildDate())); - pipeIndexGenerator = new AtomicLong(1); + uniqueIdGenerator = new AtomicInteger(1); /* NATIVE LOG LEVEL IS RECEIVED ONLY ON STARTUP */ activeLogLevel = Level.from(NativeLoader.loadLogLevel()); @@ -125,7 +167,8 @@ public class FFmpegKitConfig { globalStatisticsCallbackFunction = null; globalExecuteCallbackFunction = null; - pfdMap = new SparseArray<>(); + safIdMap = new SparseArray<>(); + safFileDescriptorMap = new SparseArray<>(); globalLogRedirectionStrategy = LogRedirectionStrategy.PRINT_LOGS_WHEN_NO_CALLBACKS_DEFINED; NativeLoader.enableRedirection(); @@ -458,7 +501,7 @@ public class FFmpegKitConfig { } } - final String newFFmpegPipePath = MessageFormat.format("{0}{1}{2}{3}", pipesDir, File.separator, FFMPEG_KIT_NAMED_PIPE_PREFIX, pipeIndexGenerator.getAndIncrement()); + final String newFFmpegPipePath = MessageFormat.format("{0}{1}{2}{3}", pipesDir, File.separator, FFMPEG_KIT_NAMED_PIPE_PREFIX, uniqueIdGenerator.getAndIncrement()); // FIRST CLOSE OLD PIPES WITH THE SAME NAME closeFFmpegPipe(newFFmpegPipePath); @@ -833,13 +876,16 @@ public class FFmpegKitConfig { /** *

Converts the given Structured Access Framework Uri ("content:…") into an - * input/output url that can be used in FFmpeg and FFprobe commands. + * SAF protocol url that can be used in FFmpeg and FFprobe commands. * *

Requires API Level >= 19. On older API levels it returns an empty url. * + * @param context application context + * @param uri SAF uri + * @param openMode file mode to use as defined in {@link ContentProvider#openFile ContentProvider.openFile} * @return input/output url that can be passed to FFmpegKit or FFprobeKit */ - private static String getSafParameter(final Context context, final Uri uri, final String openMode) { + public static String getSafParameter(final Context context, final Uri uri, final String openMode) { if (Build.VERSION.SDK_INT < Build.VERSION_CODES.KITKAT) { android.util.Log.i(TAG, String.format("getSafParameter is not supported on API Level %d", Build.VERSION.SDK_INT)); return ""; @@ -855,27 +901,20 @@ public class FFmpegKitConfig { throw t; } - final int fd; - try { - ParcelFileDescriptor parcelFileDescriptor = context.getContentResolver().openFileDescriptor(uri, openMode); - fd = parcelFileDescriptor.getFd(); - pfdMap.put(fd, parcelFileDescriptor); - } catch (final Throwable t) { - android.util.Log.e(TAG, String.format("Failed to obtain %s parcelFileDescriptor for %s.%s", openMode, uri.toString(), Exceptions.getStackTraceString(t))); - throw new IllegalArgumentException(String.format("Failed to obtain %s parcelFileDescriptor for %s.", openMode, uri.toString()), t); - } + final int safId = uniqueIdGenerator.getAndIncrement(); + safIdMap.put(safId, new SAFProtocolUrl(safId, uri, openMode, context.getContentResolver())); - return "saf:" + fd + "." + FFmpegKitConfig.extractExtensionFromSafDisplayName(displayName); + return "saf:" + safId + "." + FFmpegKitConfig.extractExtensionFromSafDisplayName(displayName); } /** *

Converts the given Structured Access Framework Uri ("content:…") into an - * input url that can be used in FFmpeg and FFprobe commands. + * SAF protocol url that can be used in FFmpeg and FFprobe commands. * *

Requires API Level ≥ 19. On older API levels it returns an empty url. * * @param context application context - * @param uri saf uri + * @param uri SAF uri * @return input url that can be passed to FFmpegKit or FFprobeKit */ public static String getSafParameterForRead(final Context context, final Uri uri) { @@ -884,12 +923,12 @@ public class FFmpegKitConfig { /** *

Converts the given Structured Access Framework Uri ("content:…") into an - * output url that can be used in FFmpeg and FFprobe commands. + * SAF protocol url that can be used in FFmpeg and FFprobe commands. * *

Requires API Level ≥ 19. On older API levels it returns an empty url. * * @param context application context - * @param uri saf uri + * @param uri SAF uri * @return output url that can be passed to FFmpegKit or FFprobeKit */ public static String getSafParameterForWrite(final Context context, final Uri uri) { @@ -897,20 +936,57 @@ public class FFmpegKitConfig { } /** - * Called by saf_wrapper from native library to close a parcel file descriptor. + * Called from native library to open an SAF protocol url. + * + * @param safId SAF id part of an SAF protocol url + * @return file descriptor created for this SAF id or 0 if an error occurs + */ + private static int safOpen(final int safId) { + try { + SAFProtocolUrl safUrl = safIdMap.get(safId); + if (safUrl != null) { + final ParcelFileDescriptor parcelFileDescriptor = safUrl.getContentResolver().openFileDescriptor(safUrl.getUri(), safUrl.getOpenMode()); + safUrl.setParcelFileDescriptor(parcelFileDescriptor); + final int fd = parcelFileDescriptor.getFd(); + safFileDescriptorMap.put(fd, safUrl); + return fd; + } else { + android.util.Log.e(TAG, String.format("SAF id %d not found.", safId)); + } + } catch (final Throwable t) { + android.util.Log.e(TAG, String.format("Failed to open SAF id: %d.%s", safId, Exceptions.getStackTraceString(t))); + } + + return 0; + } + + /** + * Called from native library to close a file descriptor created for a SAF protocol url. * - * @param fd parcel file descriptor created for a saf uri + * @param fileDescriptor file descriptor that belongs to a SAF protocol url + * @return 1 if the given file descriptor is closed successfully, 0 if an error occurs */ - private static void closeParcelFileDescriptor(final int fd) { + private static int safClose(final int fileDescriptor) { try { - ParcelFileDescriptor pfd = pfdMap.get(fd); - if (pfd != null) { - pfd.close(); - pfdMap.delete(fd); + final SAFProtocolUrl safProtocolUrl = safFileDescriptorMap.get(fileDescriptor); + if (safProtocolUrl != null) { + ParcelFileDescriptor parcelFileDescriptor = safProtocolUrl.getParcelFileDescriptor(); + if (parcelFileDescriptor != null) { + safFileDescriptorMap.delete(fileDescriptor); + safIdMap.delete(safProtocolUrl.getSafId()); + parcelFileDescriptor.close(); + return 1; + } else { + android.util.Log.e(TAG, String.format("ParcelFileDescriptor for SAF fd %d not found.", fileDescriptor)); + } + } else { + android.util.Log.e(TAG, String.format("SAF fd %d not found.", fileDescriptor)); } } catch (final Throwable t) { - android.util.Log.e(TAG, String.format("Failed to close file descriptor: %d.%s", fd, Exceptions.getStackTraceString(t))); + android.util.Log.e(TAG, String.format("Failed to close SAF fd: %d.%s", fileDescriptor, Exceptions.getStackTraceString(t))); } + + return 0; } /** diff --git a/scripts/android/ffmpeg.sh b/scripts/android/ffmpeg.sh index 2025d69..c04b9e9 100755 --- a/scripts/android/ffmpeg.sh +++ b/scripts/android/ffmpeg.sh @@ -380,7 +380,7 @@ else cat ../../tools/protocols/libavutil_file.h >> libavutil/file.h cat ../../tools/protocols/libavutil_file.c >> libavutil/file.c awk '{gsub(/ff_file_protocol;/,"ff_file_protocol;\nextern const URLProtocol ff_saf_protocol;")}1' libavformat/protocols.c > libavformat/protocols.c.tmp - awk '{gsub(/ff_file_protocol;/,"ff_file_protocol;\nextern const URLProtocol ff_fd_protocol;")}1' libavformat/protocols.c.tmp > libavformat/protocols.c + cat libavformat/protocols.c.tmp > libavformat/protocols.c echo -e "\nINFO: Enabled custom ffmpeg-kit protocols\n" 1>>"${BASEDIR}"/build.log 2>&1 fi diff --git a/tools/protocols/libavformat_file.c b/tools/protocols/libavformat_file.c index 6f068d4..ccd07d9 100644 --- a/tools/protocols/libavformat_file.c +++ b/tools/protocols/libavformat_file.c @@ -38,26 +38,35 @@ static int64_t fd_seek(URLContext *h, int64_t pos, int whence) static int fd_open(URLContext *h, const char *filename, int flags) { FileContext *c = h->priv_data; - int fd; + int saf_id; struct stat st; char *final; char *saveptr = NULL; - char *fd_string = NULL; + char *saf_id_string = NULL; char filename_backup[128]; - av_strstart(filename, "fd:", &filename); av_strstart(filename, "saf:", &filename); av_strlcpy(filename_backup, filename, FFMIN(sizeof(filename), sizeof(filename_backup))); - fd_string = av_strtok(filename_backup, ".", &saveptr); + saf_id_string = av_strtok(filename_backup, ".", &saveptr); - fd = strtol(fd_string, &final, 10); - if ((fd_string == final) || *final ) { - fd = -1; + saf_id = strtol(saf_id_string, &final, 10); + if ((saf_id_string == final) || *final ) { + saf_id = -1; } - c->fd = fd; + saf_open_function custom_saf_open = av_get_saf_open(); + if (custom_saf_open != NULL) { + int rc = custom_saf_open(saf_id); + if (rc) { + c->fd = rc; + } else { + c->fd = saf_id; + } + } else { + c->fd = saf_id; + } - h->is_streamed = !fstat(fd, &st) && S_ISFIFO(st.st_mode); + h->is_streamed = !fstat(saf_id, &st) && S_ISFIFO(st.st_mode); /* Buffer writes more than the default 32k to improve throughput especially * with networked file systems */ @@ -74,7 +83,6 @@ static int fd_check(URLContext *h, int mask) { int ret = 0; const char *filename = h->filename; - av_strstart(filename, "fd:", &filename); av_strstart(filename, "saf:", &filename); { @@ -109,7 +117,6 @@ static int fd_delete(URLContext *h) #if HAVE_UNISTD_H int ret; const char *filename = h->filename; - av_strstart(filename, "fd:", &filename); av_strstart(filename, "saf:", &filename); ret = rmdir(filename); @@ -132,9 +139,7 @@ static int fd_move(URLContext *h_src, URLContext *h_dst) { const char *filename_src = h_src->filename; const char *filename_dst = h_dst->filename; - av_strstart(filename_src, "fd:", &filename_src); av_strstart(filename_src, "saf:", &filename_src); - av_strstart(filename_dst, "fd:", &filename_dst); av_strstart(filename_dst, "saf:", &filename_dst); if (rename(filename_src, filename_dst) < 0) @@ -147,11 +152,11 @@ static int fd_close(URLContext *h) { FileContext *c = h->priv_data; - fd_close_function custom_fd_close = av_get_fd_close(); - if (custom_fd_close != NULL) { - return custom_fd_close(c->fd); + saf_close_function custom_saf_close = av_get_saf_close(); + if (custom_saf_close != NULL) { + return custom_saf_close(c->fd); } else { - return close(c->fd); + return 0; } } @@ -162,13 +167,6 @@ static const AVClass saf_class = { .version = LIBAVUTIL_VERSION_INT, }; -static const AVClass fd_class = { - .class_name = "fd", - .item_name = av_default_item_name, - .option = file_options, - .version = LIBAVUTIL_VERSION_INT, -}; - const URLProtocol ff_saf_protocol = { .name = "saf", .url_open = fd_open, @@ -184,19 +182,3 @@ const URLProtocol ff_saf_protocol = { .priv_data_class = &saf_class, .default_whitelist = "saf,crypto,data" }; - -const URLProtocol ff_fd_protocol = { - .name = "fd", - .url_open = fd_open, - .url_read = file_read, - .url_write = file_write, - .url_seek = fd_seek, - .url_close = fd_close, - .url_get_file_handle = file_get_handle, - .url_check = fd_check, - .url_delete = fd_delete, - .url_move = fd_move, - .priv_data_size = sizeof(FileContext), - .priv_data_class = &fd_class, - .default_whitelist = "fd,crypto,data" -}; diff --git a/tools/protocols/libavutil_file.c b/tools/protocols/libavutil_file.c index 7192efb..8430a1d 100644 --- a/tools/protocols/libavutil_file.c +++ b/tools/protocols/libavutil_file.c @@ -17,12 +17,21 @@ * along with FFmpegKit. If not, see . */ -static fd_close_function _fd_close_function = NULL; +static saf_open_function _saf_open_function = NULL; +static saf_close_function _saf_close_function = NULL; -fd_close_function av_get_fd_close() { - return _fd_close_function; +saf_open_function av_get_saf_open() { + return _saf_open_function; } -void av_set_fd_close(fd_close_function close_function) { - _fd_close_function = close_function; +saf_close_function av_get_saf_close() { + return _saf_close_function; +} + +void av_set_saf_open(saf_open_function open_function) { + _saf_open_function = open_function; +} + +void av_set_saf_close(saf_close_function close_function) { + _saf_close_function = close_function; } diff --git a/tools/protocols/libavutil_file.h b/tools/protocols/libavutil_file.h index 7fa12ec..897290b 100644 --- a/tools/protocols/libavutil_file.h +++ b/tools/protocols/libavutil_file.h @@ -20,10 +20,16 @@ #ifndef AVUTIL_FILE_FFMPEG_KIT_PROTOCOLS_H #define AVUTIL_FILE_FFMPEG_KIT_PROTOCOLS_H -typedef int (*fd_close_function)(int); +typedef int (*saf_open_function)(int); -fd_close_function av_get_fd_close(void); +typedef int (*saf_close_function)(int); -void av_set_fd_close(fd_close_function); +saf_open_function av_get_saf_open(void); + +saf_close_function av_get_saf_close(void); + +void av_set_saf_open(saf_open_function); + +void av_set_saf_close(saf_close_function); #endif /* AVUTIL_FILE_FFMPEG_KIT_PROTOCOLS_H */ From b142442551de5d6d9229580673900ffc6b97f93a Mon Sep 17 00:00:00 2001 From: Taner Sener Date: Sun, 7 Nov 2021 23:47:53 +0000 Subject: [PATCH 16/45] add sessionStateToString method on android platform --- .../java/com/arthenica/ffmpegkit/FFmpegKitConfig.java | 10 ++++++++++ 1 file changed, 10 insertions(+) diff --git a/android/ffmpeg-kit-android-lib/src/main/java/com/arthenica/ffmpegkit/FFmpegKitConfig.java b/android/ffmpeg-kit-android-lib/src/main/java/com/arthenica/ffmpegkit/FFmpegKitConfig.java index 03b6bc4..a5eacac 100644 --- a/android/ffmpeg-kit-android-lib/src/main/java/com/arthenica/ffmpegkit/FFmpegKitConfig.java +++ b/android/ffmpeg-kit-android-lib/src/main/java/com/arthenica/ffmpegkit/FFmpegKitConfig.java @@ -1185,6 +1185,16 @@ public class FFmpegKitConfig { FFmpegKitConfig.globalLogRedirectionStrategy = logRedirectionStrategy; } + /** + * Converts session state to string. + * + * @param state session state + * @return string value + */ + public static String sessionStateToString(final SessionState state) { + return state.toString(); + } + /** *

Parses the given command into arguments. Uses space character to split the arguments. * Supports single and double quote characters. From eee8d852b9ae3262d7b8710cc7d6a95188104ec3 Mon Sep 17 00:00:00 2001 From: Taner Sener Date: Mon, 8 Nov 2021 00:12:32 +0000 Subject: [PATCH 17/45] differentiate class and insance methods in ReturnCode class for native platforms --- .../main/java/com/arthenica/ffmpegkit/FFmpegKitConfig.java | 2 +- .../src/main/java/com/arthenica/ffmpegkit/ReturnCode.java | 6 +++--- apple/src/ReturnCode.h | 6 +++--- apple/src/ReturnCode.m | 6 +++--- 4 files changed, 10 insertions(+), 10 deletions(-) diff --git a/android/ffmpeg-kit-android-lib/src/main/java/com/arthenica/ffmpegkit/FFmpegKitConfig.java b/android/ffmpeg-kit-android-lib/src/main/java/com/arthenica/ffmpegkit/FFmpegKitConfig.java index a5eacac..2ad1936 100644 --- a/android/ffmpeg-kit-android-lib/src/main/java/com/arthenica/ffmpegkit/FFmpegKitConfig.java +++ b/android/ffmpeg-kit-android-lib/src/main/java/com/arthenica/ffmpegkit/FFmpegKitConfig.java @@ -688,7 +688,7 @@ public class FFmpegKitConfig { final int returnCodeValue = nativeFFprobeExecute(mediaInformationSession.getSessionId(), mediaInformationSession.getArguments()); final ReturnCode returnCode = new ReturnCode(returnCodeValue); mediaInformationSession.complete(returnCode); - if (returnCode.isSuccess()) { + if (returnCode.isValueSuccess()) { MediaInformation mediaInformation = MediaInformationJsonParser.fromWithError(mediaInformationSession.getAllLogsAsString(waitTimeout)); mediaInformationSession.setMediaInformation(mediaInformation); } diff --git a/android/ffmpeg-kit-android-lib/src/main/java/com/arthenica/ffmpegkit/ReturnCode.java b/android/ffmpeg-kit-android-lib/src/main/java/com/arthenica/ffmpegkit/ReturnCode.java index a91ff9e..78d6033 100644 --- a/android/ffmpeg-kit-android-lib/src/main/java/com/arthenica/ffmpegkit/ReturnCode.java +++ b/android/ffmpeg-kit-android-lib/src/main/java/com/arthenica/ffmpegkit/ReturnCode.java @@ -43,15 +43,15 @@ public class ReturnCode { return value; } - public boolean isSuccess() { + public boolean isValueSuccess() { return (value == SUCCESS); } - public boolean isError() { + public boolean isValueError() { return ((value != SUCCESS) && (value != CANCEL)); } - public boolean isCancel() { + public boolean isValueCancel() { return (value == CANCEL); } diff --git a/apple/src/ReturnCode.h b/apple/src/ReturnCode.h index 3d47ee4..8047793 100644 --- a/apple/src/ReturnCode.h +++ b/apple/src/ReturnCode.h @@ -37,11 +37,11 @@ typedef NS_ENUM(NSUInteger, ReturnCodeEnum) { - (int)getValue; -- (BOOL)isSuccess; +- (BOOL)isValueSuccess; -- (BOOL)isError; +- (BOOL)isValueError; -- (BOOL)isCancel; +- (BOOL)isValueCancel; @end diff --git a/apple/src/ReturnCode.m b/apple/src/ReturnCode.m index c2e6c3c..e7ca2ef 100644 --- a/apple/src/ReturnCode.m +++ b/apple/src/ReturnCode.m @@ -44,15 +44,15 @@ return _value; } -- (BOOL)isSuccess { +- (BOOL)isValueSuccess { return (_value == ReturnCodeSuccess); } -- (BOOL)isError { +- (BOOL)isValueError { return ((_value != ReturnCodeSuccess) && (_value != ReturnCodeCancel)); } -- (BOOL)isCancel { +- (BOOL)isValueCancel { return (_value == ReturnCodeCancel); } From fc747666c5928bbf1749503f73c9868abbd6dfd1 Mon Sep 17 00:00:00 2001 From: Taner Sener Date: Mon, 8 Nov 2021 00:21:59 +0000 Subject: [PATCH 18/45] add missing break statements while processing logs in native platforms --- .../src/main/java/com/arthenica/ffmpegkit/FFmpegKitConfig.java | 3 +++ apple/src/FFmpegKitConfig.m | 3 +++ 2 files changed, 6 insertions(+) diff --git a/android/ffmpeg-kit-android-lib/src/main/java/com/arthenica/ffmpegkit/FFmpegKitConfig.java b/android/ffmpeg-kit-android-lib/src/main/java/com/arthenica/ffmpegkit/FFmpegKitConfig.java index 2ad1936..3b8ac7d 100644 --- a/android/ffmpeg-kit-android-lib/src/main/java/com/arthenica/ffmpegkit/FFmpegKitConfig.java +++ b/android/ffmpeg-kit-android-lib/src/main/java/com/arthenica/ffmpegkit/FFmpegKitConfig.java @@ -272,13 +272,16 @@ public class FFmpegKitConfig { return; } } + break; case PRINT_LOGS_WHEN_NO_CALLBACKS_DEFINED: { if (globalCallbackDefined || sessionCallbackDefined) { return; } } + break; case ALWAYS_PRINT_LOGS: { } + break; } // PRINT LOGS diff --git a/apple/src/FFmpegKitConfig.m b/apple/src/FFmpegKitConfig.m index e125c0e..4d12649 100644 --- a/apple/src/FFmpegKitConfig.m +++ b/apple/src/FFmpegKitConfig.m @@ -541,13 +541,16 @@ void process_log(long sessionId, int levelValue, AVBPrint* logMessage) { return; } } + break; case LogRedirectionStrategyPrintLogsWhenNoCallbacksDefined: { if (globalCallbackDefined || sessionCallbackDefined) { return; } } + break; case LogRedirectionStrategyAlwaysPrintLogs: { } + break; } // PRINT LOGS From 1cb36ea365127b230db5b75516a40c3eda2a92a3 Mon Sep 17 00:00:00 2001 From: Taner Sener Date: Mon, 8 Nov 2021 00:33:53 +0000 Subject: [PATCH 19/45] call session callbacks first rather than global callbacks on native platforms --- .../ffmpegkit/AsyncFFmpegExecuteTask.java | 22 ++++-- .../ffmpegkit/AsyncFFprobeExecuteTask.java | 22 ++++-- .../AsyncGetMediaInformationTask.java | 22 ++++-- apple/src/FFmpegKitConfig.m | 77 ++++++++++++++----- 4 files changed, 109 insertions(+), 34 deletions(-) diff --git a/android/ffmpeg-kit-android-lib/src/main/java/com/arthenica/ffmpegkit/AsyncFFmpegExecuteTask.java b/android/ffmpeg-kit-android-lib/src/main/java/com/arthenica/ffmpegkit/AsyncFFmpegExecuteTask.java index f1f0cce..56c4d30 100644 --- a/android/ffmpeg-kit-android-lib/src/main/java/com/arthenica/ffmpegkit/AsyncFFmpegExecuteTask.java +++ b/android/ffmpeg-kit-android-lib/src/main/java/com/arthenica/ffmpegkit/AsyncFFmpegExecuteTask.java @@ -19,6 +19,8 @@ package com.arthenica.ffmpegkit; +import com.arthenica.smartexception.java.Exceptions; + /** *

Executes an FFmpeg session asynchronously. */ @@ -35,13 +37,23 @@ public class AsyncFFmpegExecuteTask implements Runnable { public void run() { FFmpegKitConfig.ffmpegExecute(ffmpegSession); - final ExecuteCallback globalExecuteCallbackFunction = FFmpegKitConfig.getExecuteCallback(); - if (globalExecuteCallbackFunction != null) { - globalExecuteCallbackFunction.apply(ffmpegSession); + if (executeCallback != null) { + try { + // NOTIFY SESSION CALLBACK DEFINED + executeCallback.apply(ffmpegSession); + } catch (final Exception e) { + android.util.Log.e(FFmpegKitConfig.TAG, String.format("Exception thrown inside session ExecuteCallback block.%s", Exceptions.getStackTraceString(e))); + } } - if (executeCallback != null) { - executeCallback.apply(ffmpegSession); + final ExecuteCallback globalExecuteCallbackFunction = FFmpegKitConfig.getExecuteCallback(); + if (globalExecuteCallbackFunction != null) { + try { + // NOTIFY GLOBAL CALLBACK DEFINED + globalExecuteCallbackFunction.apply(ffmpegSession); + } catch (final Exception e) { + android.util.Log.e(FFmpegKitConfig.TAG, String.format("Exception thrown inside global ExecuteCallback block.%s", Exceptions.getStackTraceString(e))); + } } } } diff --git a/android/ffmpeg-kit-android-lib/src/main/java/com/arthenica/ffmpegkit/AsyncFFprobeExecuteTask.java b/android/ffmpeg-kit-android-lib/src/main/java/com/arthenica/ffmpegkit/AsyncFFprobeExecuteTask.java index dafb86d..74182c9 100644 --- a/android/ffmpeg-kit-android-lib/src/main/java/com/arthenica/ffmpegkit/AsyncFFprobeExecuteTask.java +++ b/android/ffmpeg-kit-android-lib/src/main/java/com/arthenica/ffmpegkit/AsyncFFprobeExecuteTask.java @@ -19,6 +19,8 @@ package com.arthenica.ffmpegkit; +import com.arthenica.smartexception.java.Exceptions; + /** *

Executes an FFprobe session asynchronously. */ @@ -35,13 +37,23 @@ public class AsyncFFprobeExecuteTask implements Runnable { public void run() { FFmpegKitConfig.ffprobeExecute(ffprobeSession); - final ExecuteCallback globalExecuteCallbackFunction = FFmpegKitConfig.getExecuteCallback(); - if (globalExecuteCallbackFunction != null) { - globalExecuteCallbackFunction.apply(ffprobeSession); + if (executeCallback != null) { + try { + // NOTIFY SESSION CALLBACK DEFINED + executeCallback.apply(ffprobeSession); + } catch (final Exception e) { + android.util.Log.e(FFmpegKitConfig.TAG, String.format("Exception thrown inside session ExecuteCallback block.%s", Exceptions.getStackTraceString(e))); + } } - if (executeCallback != null) { - executeCallback.apply(ffprobeSession); + final ExecuteCallback globalExecuteCallbackFunction = FFmpegKitConfig.getExecuteCallback(); + if (globalExecuteCallbackFunction != null) { + try { + // NOTIFY GLOBAL CALLBACK DEFINED + globalExecuteCallbackFunction.apply(ffprobeSession); + } catch (final Exception e) { + android.util.Log.e(FFmpegKitConfig.TAG, String.format("Exception thrown inside global ExecuteCallback block.%s", Exceptions.getStackTraceString(e))); + } } } diff --git a/android/ffmpeg-kit-android-lib/src/main/java/com/arthenica/ffmpegkit/AsyncGetMediaInformationTask.java b/android/ffmpeg-kit-android-lib/src/main/java/com/arthenica/ffmpegkit/AsyncGetMediaInformationTask.java index fe3368f..c59d81d 100644 --- a/android/ffmpeg-kit-android-lib/src/main/java/com/arthenica/ffmpegkit/AsyncGetMediaInformationTask.java +++ b/android/ffmpeg-kit-android-lib/src/main/java/com/arthenica/ffmpegkit/AsyncGetMediaInformationTask.java @@ -19,6 +19,8 @@ package com.arthenica.ffmpegkit; +import com.arthenica.smartexception.java.Exceptions; + /** *

Executes a MediaInformation session asynchronously. */ @@ -41,13 +43,23 @@ public class AsyncGetMediaInformationTask implements Runnable { public void run() { FFmpegKitConfig.getMediaInformationExecute(mediaInformationSession, waitTimeout); - final ExecuteCallback globalExecuteCallbackFunction = FFmpegKitConfig.getExecuteCallback(); - if (globalExecuteCallbackFunction != null) { - globalExecuteCallbackFunction.apply(mediaInformationSession); + if (executeCallback != null) { + try { + // NOTIFY SESSION CALLBACK DEFINED + executeCallback.apply(mediaInformationSession); + } catch (final Exception e) { + android.util.Log.e(FFmpegKitConfig.TAG, String.format("Exception thrown inside session ExecuteCallback block.%s", Exceptions.getStackTraceString(e))); + } } - if (executeCallback != null) { - executeCallback.apply(mediaInformationSession); + final ExecuteCallback globalExecuteCallbackFunction = FFmpegKitConfig.getExecuteCallback(); + if (globalExecuteCallbackFunction != null) { + try { + // NOTIFY GLOBAL CALLBACK DEFINEDs + globalExecuteCallbackFunction.apply(mediaInformationSession); + } catch (final Exception e) { + android.util.Log.e(FFmpegKitConfig.TAG, String.format("Exception thrown inside global ExecuteCallback block.%s", Exceptions.getStackTraceString(e))); + } } } diff --git a/apple/src/FFmpegKitConfig.m b/apple/src/FFmpegKitConfig.m index 4d12649..8896186 100644 --- a/apple/src/FFmpegKitConfig.m +++ b/apple/src/FFmpegKitConfig.m @@ -990,7 +990,7 @@ int executeFFprobe(long sessionId, NSArray* arguments) { int returnCodeValue = executeFFprobe([mediaInformationSession getSessionId], [mediaInformationSession getArguments]); ReturnCode* returnCode = [[ReturnCode alloc] init:returnCodeValue]; [mediaInformationSession complete:returnCode]; - if ([returnCode isSuccess]) { + if ([returnCode isValueSuccess]) { MediaInformation* mediaInformation = [MediaInformationJsonParser from:[mediaInformationSession getAllLogsAsStringWithTimeout:waitTimeout]]; [mediaInformationSession setMediaInformation:mediaInformation]; } @@ -1007,14 +1007,27 @@ int executeFFprobe(long sessionId, NSArray* arguments) { + (void)asyncFFmpegExecute:(FFmpegSession*)ffmpegSession onDispatchQueue:(dispatch_queue_t)queue { dispatch_async(queue, ^{ [FFmpegKitConfig ffmpegExecute:ffmpegSession]; - ExecuteCallback globalExecuteCallback = [FFmpegKitConfig getExecuteCallback]; - if (globalExecuteCallback != nil) { - globalExecuteCallback(ffmpegSession); - } - + ExecuteCallback sessionExecuteCallback = [ffmpegSession getExecuteCallback]; if (sessionExecuteCallback != nil) { - sessionExecuteCallback(ffmpegSession); + @try { + // NOTIFY SESSION CALLBACK DEFINED + sessionExecuteCallback(ffmpegSession); + } + @catch(NSException* exception) { + NSLog(@"Exception thrown inside session ExecuteCallback block. %@", [exception callStackSymbols]); + } + } + + ExecuteCallback globalExecuteCallback = [FFmpegKitConfig getExecuteCallback]; + if (globalExecuteCallback != nil) { + @try { + // NOTIFY SESSION CALLBACK DEFINED + globalExecuteCallback(ffmpegSession); + } + @catch(NSException* exception) { + NSLog(@"Exception thrown inside session ExecuteCallback block. %@", [exception callStackSymbols]); + } } }); } @@ -1026,14 +1039,27 @@ int executeFFprobe(long sessionId, NSArray* arguments) { + (void)asyncFFprobeExecute:(FFprobeSession*)ffprobeSession onDispatchQueue:(dispatch_queue_t)queue { dispatch_async(queue, ^{ [FFmpegKitConfig ffprobeExecute:ffprobeSession]; - ExecuteCallback globalExecuteCallback = [FFmpegKitConfig getExecuteCallback]; - if (globalExecuteCallback != nil) { - globalExecuteCallback(ffprobeSession); - } - + ExecuteCallback sessionExecuteCallback = [ffprobeSession getExecuteCallback]; if (sessionExecuteCallback != nil) { - sessionExecuteCallback(ffprobeSession); + @try { + // NOTIFY SESSION CALLBACK DEFINED + sessionExecuteCallback(ffprobeSession); + } + @catch(NSException* exception) { + NSLog(@"Exception thrown inside session ExecuteCallback block. %@", [exception callStackSymbols]); + } + } + + ExecuteCallback globalExecuteCallback = [FFmpegKitConfig getExecuteCallback]; + if (globalExecuteCallback != nil) { + @try { + // NOTIFY SESSION CALLBACK DEFINED + globalExecuteCallback(ffprobeSession); + } + @catch(NSException* exception) { + NSLog(@"Exception thrown inside session ExecuteCallback block. %@", [exception callStackSymbols]); + } } }); } @@ -1045,14 +1071,27 @@ int executeFFprobe(long sessionId, NSArray* arguments) { + (void)asyncGetMediaInformationExecute:(MediaInformationSession*)mediaInformationSession onDispatchQueue:(dispatch_queue_t)queue withTimeout:(int)waitTimeout { dispatch_async(queue, ^{ [FFmpegKitConfig getMediaInformationExecute:mediaInformationSession withTimeout:waitTimeout]; - ExecuteCallback globalExecuteCallback = [FFmpegKitConfig getExecuteCallback]; - if (globalExecuteCallback != nil) { - globalExecuteCallback(mediaInformationSession); - } - + ExecuteCallback sessionExecuteCallback = [mediaInformationSession getExecuteCallback]; if (sessionExecuteCallback != nil) { - sessionExecuteCallback(mediaInformationSession); + @try { + // NOTIFY SESSION CALLBACK DEFINED + sessionExecuteCallback(mediaInformationSession); + } + @catch(NSException* exception) { + NSLog(@"Exception thrown inside session ExecuteCallback block. %@", [exception callStackSymbols]); + } + } + + ExecuteCallback globalExecuteCallback = [FFmpegKitConfig getExecuteCallback]; + if (globalExecuteCallback != nil) { + @try { + // NOTIFY SESSION CALLBACK DEFINED + globalExecuteCallback(mediaInformationSession); + } + @catch(NSException* exception) { + NSLog(@"Exception thrown inside session ExecuteCallback block. %@", [exception callStackSymbols]); + } } }); } From af190b3112a2ec36533dee5f941f31eb7c64df25 Mon Sep 17 00:00:00 2001 From: Taner Sener Date: Wed, 10 Nov 2021 00:36:23 +0000 Subject: [PATCH 20/45] add min mac catalyst version to readme --- README.md | 1 + 1 file changed, 1 insertion(+) diff --git a/README.md b/README.md index b70df26..ad2ccda 100644 --- a/README.md +++ b/README.md @@ -147,6 +147,7 @@ This table shows the differences between two variants. | iOS AVFoundation | Yes | - | | iOS Architectures | arm64
arm64-simulator
arm64-mac-catalyst
x86-64
x86-64-mac-catalyst | armv7
arm64
i386
x86-64 | | iOS Bundle Format | XCFrameworks | Frameworks | +| Mac Catalyst Min Version | 14.0 | - | | macOS Min SDK | 10.15 | 10.11 | | macOS AVFoundation | Yes | - | | macOS Architectures | arm64
x86-64 | x86-64 | From 3b1b9282131eeddf756d3f3fb19fb19026a343ca Mon Sep 17 00:00:00 2001 From: Taner Sener Date: Fri, 5 Nov 2021 18:57:47 +0000 Subject: [PATCH 21/45] run github actions only on native branches --- .github/workflows/android-build-scripts.yml | 9 ++++++++- .github/workflows/ios-build-scripts.yml | 9 ++++++++- .github/workflows/macos-build-scripts.yml | 9 ++++++++- .github/workflows/tvos-build-scripts.yml | 9 ++++++++- 4 files changed, 32 insertions(+), 4 deletions(-) diff --git a/.github/workflows/android-build-scripts.yml b/.github/workflows/android-build-scripts.yml index 62f34b6..702ecc8 100644 --- a/.github/workflows/android-build-scripts.yml +++ b/.github/workflows/android-build-scripts.yml @@ -1,6 +1,13 @@ name: android build scripts -on: [ push, pull_request ] +on: + push: + branches: + - development + - main + pull_request: + branches: + - main jobs: build-main-on-linux: diff --git a/.github/workflows/ios-build-scripts.yml b/.github/workflows/ios-build-scripts.yml index 1613e88..a93a3a1 100644 --- a/.github/workflows/ios-build-scripts.yml +++ b/.github/workflows/ios-build-scripts.yml @@ -1,6 +1,13 @@ name: ios build scripts -on: [ push, pull_request ] +on: + push: + branches: + - development + - main + pull_request: + branches: + - main jobs: build-main-on-macos-bigsur: diff --git a/.github/workflows/macos-build-scripts.yml b/.github/workflows/macos-build-scripts.yml index 4606f0f..e1f6e37 100644 --- a/.github/workflows/macos-build-scripts.yml +++ b/.github/workflows/macos-build-scripts.yml @@ -1,6 +1,13 @@ name: macos build scripts -on: [ push, pull_request ] +on: + push: + branches: + - development + - main + pull_request: + branches: + - main jobs: build-main-on-macos-bigsur: diff --git a/.github/workflows/tvos-build-scripts.yml b/.github/workflows/tvos-build-scripts.yml index 6767cad..66edbe2 100644 --- a/.github/workflows/tvos-build-scripts.yml +++ b/.github/workflows/tvos-build-scripts.yml @@ -1,6 +1,13 @@ name: tvos build scripts -on: [ push, pull_request ] +on: + push: + branches: + - development + - main + pull_request: + branches: + - main jobs: build-main-on-macos-bigsur: From 6fe867abf87ae488725e0e78ecd62fa03453e726 Mon Sep 17 00:00:00 2001 From: Taner Sener Date: Wed, 10 Nov 2021 00:57:39 +0000 Subject: [PATCH 22/45] implement FFprobeKit.getMediaInformationFromCommandArgumentsAsync method on ios --- apple/src/FFprobeKit.h | 17 +++++++++++++++++ apple/src/FFprobeKit.m | 8 +++++++- 2 files changed, 24 insertions(+), 1 deletion(-) diff --git a/apple/src/FFprobeKit.h b/apple/src/FFprobeKit.h index 132e644..27efb99 100644 --- a/apple/src/FFprobeKit.h +++ b/apple/src/FFprobeKit.h @@ -266,6 +266,23 @@ */ + (MediaInformationSession*)getMediaInformationFromCommandAsync:(NSString*)command withExecuteCallback:(ExecuteCallback)executeCallback withLogCallback:(LogCallback)logCallback onDispatchQueue:(dispatch_queue_t)queue withTimeout:(int)waitTimeout; +/** + *

Starts an asynchronous FFprobe execution to extract media information using command arguments. The command + * passed to this method must generate the output in JSON format in order to successfully extract media information + * from it. + * + *

Note that this method returns immediately and does not wait the execution to complete. You must use an + * ExecuteCallback if you want to be notified about the result. + * + * @param command FFprobe command that prints media information for a file in JSON format + * @param executeCallback callback that will be notified when execution is completed + * @param logCallback callback that will receive logs + * @param queue dispatch queue that will be used to run this asynchronous operation + * @param waitTimeout max time to wait until media information is transmitted + * @return media information session created for this execution + */ ++ (MediaInformationSession*)getMediaInformationFromCommandArgumentsAsync:(NSArray*)arguments withExecuteCallback:(ExecuteCallback)executeCallback withLogCallback:(LogCallback)logCallback onDispatchQueue:(dispatch_queue_t)queue withTimeout:(int)waitTimeout; + /** *

Lists all FFprobe sessions in the session history. * diff --git a/apple/src/FFprobeKit.m b/apple/src/FFprobeKit.m index 71b6628..6611b0e 100644 --- a/apple/src/FFprobeKit.m +++ b/apple/src/FFprobeKit.m @@ -136,7 +136,13 @@ return session; } -+ (MediaInformationSession*)getMediaInformationFromCommandAsync:(NSArray*)arguments withExecuteCallback:(ExecuteCallback)executeCallback withLogCallback:(LogCallback)logCallback onDispatchQueue:(dispatch_queue_t)queue withTimeout:(int)waitTimeout { ++ (MediaInformationSession*)getMediaInformationFromCommandAsync:(NSString*)command withExecuteCallback:(ExecuteCallback)executeCallback withLogCallback:(LogCallback)logCallback onDispatchQueue:(dispatch_queue_t)queue withTimeout:(int)waitTimeout { + MediaInformationSession* session = [[MediaInformationSession alloc] init:[FFmpegKitConfig parseArguments:command] withExecuteCallback:executeCallback withLogCallback:logCallback]; + [FFmpegKitConfig asyncGetMediaInformationExecute:session onDispatchQueue:queue withTimeout:waitTimeout]; + return session; +} + ++ (MediaInformationSession*)getMediaInformationFromCommandArgumentsAsync:(NSArray*)arguments withExecuteCallback:(ExecuteCallback)executeCallback withLogCallback:(LogCallback)logCallback onDispatchQueue:(dispatch_queue_t)queue withTimeout:(int)waitTimeout { MediaInformationSession* session = [[MediaInformationSession alloc] init:arguments withExecuteCallback:executeCallback withLogCallback:logCallback]; [FFmpegKitConfig asyncGetMediaInformationExecute:session onDispatchQueue:queue withTimeout:waitTimeout]; return session; From d370cfd3e27c258fb882f5ea3ccbb5ee784a43b8 Mon Sep 17 00:00:00 2001 From: Taner Sener Date: Wed, 10 Nov 2021 01:12:49 +0000 Subject: [PATCH 23/45] use unique method names for overloaded methods on android --- .../com/arthenica/ffmpegkit/FFmpegKit.java | 33 +++++++++---------- .../com/arthenica/ffmpegkit/FFprobeKit.java | 28 ++++++++-------- 2 files changed, 30 insertions(+), 31 deletions(-) diff --git a/android/ffmpeg-kit-android-lib/src/main/java/com/arthenica/ffmpegkit/FFmpegKit.java b/android/ffmpeg-kit-android-lib/src/main/java/com/arthenica/ffmpegkit/FFmpegKit.java index 150e723..dc15539 100644 --- a/android/ffmpeg-kit-android-lib/src/main/java/com/arthenica/ffmpegkit/FFmpegKit.java +++ b/android/ffmpeg-kit-android-lib/src/main/java/com/arthenica/ffmpegkit/FFmpegKit.java @@ -19,7 +19,6 @@ package com.arthenica.ffmpegkit; -import java.util.ArrayList; import java.util.List; import java.util.concurrent.ExecutorService; @@ -73,8 +72,8 @@ public class FFmpegKit { * @param executeCallback callback that will be called when the execution is completed * @return FFmpeg session created for this execution */ - public static FFmpegSession executeAsync(final String[] arguments, - final ExecuteCallback executeCallback) { + public static FFmpegSession executeWithArgumentsAsync(final String[] arguments, + final ExecuteCallback executeCallback) { final FFmpegSession session = new FFmpegSession(arguments, executeCallback); FFmpegKitConfig.asyncFFmpegExecute(session); @@ -94,10 +93,10 @@ public class FFmpegKit { * @param statisticsCallback callback that will receive statistics * @return FFmpeg session created for this execution */ - public static FFmpegSession executeAsync(final String[] arguments, - final ExecuteCallback executeCallback, - final LogCallback logCallback, - final StatisticsCallback statisticsCallback) { + public static FFmpegSession executeWithArgumentsAsync(final String[] arguments, + final ExecuteCallback executeCallback, + final LogCallback logCallback, + final StatisticsCallback statisticsCallback) { final FFmpegSession session = new FFmpegSession(arguments, executeCallback, logCallback, statisticsCallback); FFmpegKitConfig.asyncFFmpegExecute(session); @@ -116,9 +115,9 @@ public class FFmpegKit { * @param executorService executor service that will be used to run this asynchronous operation * @return FFmpeg session created for this execution */ - public static FFmpegSession executeAsync(final String[] arguments, - final ExecuteCallback executeCallback, - final ExecutorService executorService) { + public static FFmpegSession executeWithArgumentsAsync(final String[] arguments, + final ExecuteCallback executeCallback, + final ExecutorService executorService) { final FFmpegSession session = new FFmpegSession(arguments, executeCallback); FFmpegKitConfig.asyncFFmpegExecute(session, executorService); @@ -139,11 +138,11 @@ public class FFmpegKit { * @param executorService executor service that will be used to run this asynchronous operation * @return FFmpeg session created for this execution */ - public static FFmpegSession executeAsync(final String[] arguments, - final ExecuteCallback executeCallback, - final LogCallback logCallback, - final StatisticsCallback statisticsCallback, - final ExecutorService executorService) { + public static FFmpegSession executeWithArgumentsAsync(final String[] arguments, + final ExecuteCallback executeCallback, + final LogCallback logCallback, + final StatisticsCallback statisticsCallback, + final ExecutorService executorService) { final FFmpegSession session = new FFmpegSession(arguments, executeCallback, logCallback, statisticsCallback); FFmpegKitConfig.asyncFFmpegExecute(session, executorService); @@ -176,7 +175,7 @@ public class FFmpegKit { */ public static FFmpegSession executeAsync(final String command, final ExecuteCallback executeCallback) { - return executeAsync(FFmpegKitConfig.parseArguments(command), executeCallback); + return executeWithArgumentsAsync(FFmpegKitConfig.parseArguments(command), executeCallback); } /** @@ -196,7 +195,7 @@ public class FFmpegKit { final ExecuteCallback executeCallback, final LogCallback logCallback, final StatisticsCallback statisticsCallback) { - return executeAsync(FFmpegKitConfig.parseArguments(command), executeCallback, logCallback, statisticsCallback); + return executeWithArgumentsAsync(FFmpegKitConfig.parseArguments(command), executeCallback, logCallback, statisticsCallback); } /** diff --git a/android/ffmpeg-kit-android-lib/src/main/java/com/arthenica/ffmpegkit/FFprobeKit.java b/android/ffmpeg-kit-android-lib/src/main/java/com/arthenica/ffmpegkit/FFprobeKit.java index 3db4611..2854287 100644 --- a/android/ffmpeg-kit-android-lib/src/main/java/com/arthenica/ffmpegkit/FFprobeKit.java +++ b/android/ffmpeg-kit-android-lib/src/main/java/com/arthenica/ffmpegkit/FFprobeKit.java @@ -76,8 +76,8 @@ public class FFprobeKit { * @param executeCallback callback that will be called when the execution is completed * @return FFprobe session created for this execution */ - public static FFprobeSession executeAsync(final String[] arguments, - final ExecuteCallback executeCallback) { + public static FFprobeSession executeWithArgumentsAsync(final String[] arguments, + final ExecuteCallback executeCallback) { final FFprobeSession session = new FFprobeSession(arguments, executeCallback); FFmpegKitConfig.asyncFFprobeExecute(session); @@ -96,9 +96,9 @@ public class FFprobeKit { * @param logCallback callback that will receive logs * @return FFprobe session created for this execution */ - public static FFprobeSession executeAsync(final String[] arguments, - final ExecuteCallback executeCallback, - final LogCallback logCallback) { + public static FFprobeSession executeWithArgumentsAsync(final String[] arguments, + final ExecuteCallback executeCallback, + final LogCallback logCallback) { final FFprobeSession session = new FFprobeSession(arguments, executeCallback, logCallback); FFmpegKitConfig.asyncFFprobeExecute(session); @@ -117,9 +117,9 @@ public class FFprobeKit { * @param executorService executor service that will be used to run this asynchronous operation * @return FFprobe session created for this execution */ - public static FFprobeSession executeAsync(final String[] arguments, - final ExecuteCallback executeCallback, - final ExecutorService executorService) { + public static FFprobeSession executeWithArgumentsAsync(final String[] arguments, + final ExecuteCallback executeCallback, + final ExecutorService executorService) { final FFprobeSession session = new FFprobeSession(arguments, executeCallback); FFmpegKitConfig.asyncFFprobeExecute(session, executorService); @@ -139,10 +139,10 @@ public class FFprobeKit { * @param executorService executor service that will be used to run this asynchronous operation * @return FFprobe session created for this execution */ - public static FFprobeSession executeAsync(final String[] arguments, - final ExecuteCallback executeCallback, - final LogCallback logCallback, - final ExecutorService executorService) { + public static FFprobeSession executeWithArgumentsAsync(final String[] arguments, + final ExecuteCallback executeCallback, + final LogCallback logCallback, + final ExecutorService executorService) { final FFprobeSession session = new FFprobeSession(arguments, executeCallback, logCallback); FFmpegKitConfig.asyncFFprobeExecute(session, executorService); @@ -175,7 +175,7 @@ public class FFprobeKit { */ public static FFprobeSession executeAsync(final String command, final ExecuteCallback executeCallback) { - return executeAsync(FFmpegKitConfig.parseArguments(command), executeCallback); + return executeWithArgumentsAsync(FFmpegKitConfig.parseArguments(command), executeCallback); } /** @@ -193,7 +193,7 @@ public class FFprobeKit { public static FFprobeSession executeAsync(final String command, final ExecuteCallback executeCallback, final LogCallback logCallback) { - return executeAsync(FFmpegKitConfig.parseArguments(command), executeCallback, logCallback); + return executeWithArgumentsAsync(FFmpegKitConfig.parseArguments(command), executeCallback, logCallback); } /** From e9e397f3d55849a66ee1cd904cbd742126b73780 Mon Sep 17 00:00:00 2001 From: Taner Sener Date: Tue, 30 Nov 2021 11:23:35 +0000 Subject: [PATCH 24/45] decommission ANDROID_HOME in build scripts, fixes #257 --- scripts/function-android.sh | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/scripts/function-android.sh b/scripts/function-android.sh index 8272186..f604ca7 100755 --- a/scripts/function-android.sh +++ b/scripts/function-android.sh @@ -954,7 +954,7 @@ get_aar_directory() { } android_ndk_cmake() { - local cmake=$(find "${ANDROID_HOME}"/cmake -path \*/bin/cmake -type f -print -quit) + local cmake=$(find "${ANDROID_SDK_ROOT}"/cmake -path \*/bin/cmake -type f -print -quit) if [[ -z ${cmake} ]]; then cmake=$(which cmake) fi From eee591774605fd289e7766c46c1209fb83dd46e3 Mon Sep 17 00:00:00 2001 From: Taner Sener Date: Mon, 6 Dec 2021 19:04:24 +0000 Subject: [PATCH 25/45] update ffmpeg version --- scripts/source.sh | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/scripts/source.sh b/scripts/source.sh index f59045e..6bcebc1 100755 --- a/scripts/source.sh +++ b/scripts/source.sh @@ -33,9 +33,9 @@ get_library_source() { ;; ffmpeg) SOURCE_REPO_URL="https://github.com/tanersener/FFmpeg" - SOURCE_ID="b4d665bf69b7470ada5213128ec4c2a39a3e4fde" + SOURCE_ID="b5ba74053c1ef9f38d9e7b3a036675f06d2b2714" SOURCE_TYPE="COMMIT" - SOURCE_GIT_DESCRIBE="n4.5-dev-2655-gb4d665bf69" # git describe --tags + SOURCE_GIT_DESCRIBE="n4.5-dev-3138-gb5ba74053c" # git describe --tags ;; fontconfig) SOURCE_REPO_URL="https://github.com/tanersener/fontconfig" From a7fe2d4b66b1506c819522d6d81bca21a76162e7 Mon Sep 17 00:00:00 2001 From: Taner Sener Date: Wed, 10 Nov 2021 23:34:18 +0000 Subject: [PATCH 26/45] implement chapters in media information object, fixes #196 --- .../java/com/arthenica/ffmpegkit/Chapter.java | 131 ++++++++++++++++++ .../com/arthenica/ffmpegkit/FFprobeKit.java | 22 ++- .../arthenica/ffmpegkit/MediaInformation.java | 17 ++- .../ffmpegkit/MediaInformationJsonParser.java | 22 ++- .../ffmpegkit/StreamInformation.java | 2 +- .../arthenica/ffmpegkit/FFmpegKitTest.java | 98 +++++++++++++ apple/src/Chapter.h | 84 +++++++++++ apple/src/Chapter.m | 107 ++++++++++++++ apple/src/FFprobeKit.m | 16 ++- apple/src/Makefile.am | 2 + apple/src/Makefile.in | 30 ++-- apple/src/MediaInformation.h | 10 +- apple/src/MediaInformation.m | 12 +- apple/src/MediaInformationJsonParser.m | 20 ++- scripts/function-apple.sh | 1 + 15 files changed, 539 insertions(+), 35 deletions(-) create mode 100644 android/ffmpeg-kit-android-lib/src/main/java/com/arthenica/ffmpegkit/Chapter.java create mode 100644 apple/src/Chapter.h create mode 100644 apple/src/Chapter.m diff --git a/android/ffmpeg-kit-android-lib/src/main/java/com/arthenica/ffmpegkit/Chapter.java b/android/ffmpeg-kit-android-lib/src/main/java/com/arthenica/ffmpegkit/Chapter.java new file mode 100644 index 0000000..bf726ae --- /dev/null +++ b/android/ffmpeg-kit-android-lib/src/main/java/com/arthenica/ffmpegkit/Chapter.java @@ -0,0 +1,131 @@ +/* + * Copyright (c) 2021 Taner Sener + * + * This file is part of FFmpegKit. + * + * FFmpegKit is free software: you can redistribute it and/or modify + * it under the terms of the GNU Lesser General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * FFmpegKit is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public License + * along with FFmpegKit. If not, see . + */ + +package com.arthenica.ffmpegkit; + +import org.json.JSONObject; + +public class Chapter { + + /* KEYS */ + public static final String KEY_ID = "id"; + public static final String KEY_TIME_BASE = "time_base"; + public static final String KEY_START = "start"; + public static final String KEY_START_TIME = "start_time"; + public static final String KEY_END = "end"; + public static final String KEY_END_TIME = "end_time"; + public static final String KEY_TAGS = "tags"; + + private final JSONObject jsonObject; + + public Chapter(JSONObject jsonObject) { + this.jsonObject = jsonObject; + } + + public Long getId() { + return getNumberProperty(KEY_ID); + } + + public String getTimeBase() { + return getStringProperty(KEY_TIME_BASE); + } + + public Long getStart() { + return getNumberProperty(KEY_START); + } + + public String getStartTime() { + return getStringProperty(KEY_START_TIME); + } + + public Long getEnd() { + return getNumberProperty(KEY_END); + } + + public String getEndTime() { + return getStringProperty(KEY_END_TIME); + } + + public JSONObject getTags() { + return getProperties(KEY_TAGS); + } + + /** + * Returns the chapter property associated with the key. + * + * @param key property key + * @return chapter property as string or null if the key is not found + */ + public String getStringProperty(final String key) { + JSONObject chapterProperties = getAllProperties(); + if (chapterProperties == null) { + return null; + } + + if (chapterProperties.has(key)) { + return chapterProperties.optString(key); + } else { + return null; + } + } + + /** + * Returns the chapter property associated with the key. + * + * @param key property key + * @return chapter property as Long or null if the key is not found + */ + public Long getNumberProperty(String key) { + JSONObject chapterProperties = getAllProperties(); + if (chapterProperties == null) { + return null; + } + + if (chapterProperties.has(key)) { + return chapterProperties.optLong(key); + } else { + return null; + } + } + + /** + * Returns the chapter properties associated with the key. + * + * @param key properties key + * @return chapter properties as a JSONObject or null if the key is not found + */ + public JSONObject getProperties(String key) { + JSONObject chapterProperties = getAllProperties(); + if (chapterProperties == null) { + return null; + } + + return chapterProperties.optJSONObject(key); + } + + /** + * Returns all chapter properties defined. + * + * @return all chapter properties as a JSONObject or null if no properties are defined + */ + public JSONObject getAllProperties() { + return jsonObject; + } + +} diff --git a/android/ffmpeg-kit-android-lib/src/main/java/com/arthenica/ffmpegkit/FFprobeKit.java b/android/ffmpeg-kit-android-lib/src/main/java/com/arthenica/ffmpegkit/FFprobeKit.java index 2854287..9b9a6a3 100644 --- a/android/ffmpeg-kit-android-lib/src/main/java/com/arthenica/ffmpegkit/FFprobeKit.java +++ b/android/ffmpeg-kit-android-lib/src/main/java/com/arthenica/ffmpegkit/FFprobeKit.java @@ -52,6 +52,16 @@ public class FFprobeKit { private FFprobeKit() { } + /** + *

Builds the default command used to get media information for a file. + * + * @param path file path to use in the command + * @return default command arguments to get media information + */ + private static String[] defaultGetMediaInformationCommandArguments(final String path) { + return new String[]{"-v", "error", "-hide_banner", "-print_format", "json", "-show_format", "-show_streams", "-show_chapters", "-i", path}; + } + /** *

Synchronously executes FFprobe with arguments provided. * @@ -249,7 +259,7 @@ public class FFprobeKit { * @return media information session created for this execution */ public static MediaInformationSession getMediaInformation(final String path) { - final MediaInformationSession session = new MediaInformationSession(new String[]{"-v", "error", "-hide_banner", "-print_format", "json", "-show_format", "-show_streams", "-i", path}); + final MediaInformationSession session = new MediaInformationSession(defaultGetMediaInformationCommandArguments(path)); FFmpegKitConfig.getMediaInformationExecute(session, AbstractSession.DEFAULT_TIMEOUT_FOR_ASYNCHRONOUS_MESSAGES_IN_TRANSMIT); @@ -265,7 +275,7 @@ public class FFprobeKit { */ public static MediaInformationSession getMediaInformation(final String path, final int waitTimeout) { - final MediaInformationSession session = new MediaInformationSession(new String[]{"-v", "error", "-hide_banner", "-print_format", "json", "-show_format", "-show_streams", "-i", path}); + final MediaInformationSession session = new MediaInformationSession(defaultGetMediaInformationCommandArguments(path)); FFmpegKitConfig.getMediaInformationExecute(session, waitTimeout); @@ -284,7 +294,7 @@ public class FFprobeKit { */ public static MediaInformationSession getMediaInformationAsync(final String path, final ExecuteCallback executeCallback) { - final MediaInformationSession session = new MediaInformationSession(new String[]{"-v", "error", "-hide_banner", "-print_format", "json", "-show_format", "-show_streams", "-i", path}, executeCallback); + final MediaInformationSession session = new MediaInformationSession(defaultGetMediaInformationCommandArguments(path), executeCallback); FFmpegKitConfig.asyncGetMediaInformationExecute(session, AbstractSession.DEFAULT_TIMEOUT_FOR_ASYNCHRONOUS_MESSAGES_IN_TRANSMIT); @@ -307,7 +317,7 @@ public class FFprobeKit { final ExecuteCallback executeCallback, final LogCallback logCallback, final int waitTimeout) { - final MediaInformationSession session = new MediaInformationSession(new String[]{"-v", "error", "-hide_banner", "-print_format", "json", "-show_format", "-show_streams", "-i", path}, executeCallback, logCallback); + final MediaInformationSession session = new MediaInformationSession(defaultGetMediaInformationCommandArguments(path), executeCallback, logCallback); FFmpegKitConfig.asyncGetMediaInformationExecute(session, waitTimeout); @@ -328,7 +338,7 @@ public class FFprobeKit { public static MediaInformationSession getMediaInformationAsync(final String path, final ExecuteCallback executeCallback, final ExecutorService executorService) { - final MediaInformationSession session = new MediaInformationSession(new String[]{"-v", "error", "-hide_banner", "-print_format", "json", "-show_format", "-show_streams", "-i", path}, executeCallback); + final MediaInformationSession session = new MediaInformationSession(defaultGetMediaInformationCommandArguments(path), executeCallback); FFmpegKitConfig.asyncGetMediaInformationExecute(session, executorService, AbstractSession.DEFAULT_TIMEOUT_FOR_ASYNCHRONOUS_MESSAGES_IN_TRANSMIT); @@ -353,7 +363,7 @@ public class FFprobeKit { final LogCallback logCallback, final ExecutorService executorService, final int waitTimeout) { - final MediaInformationSession session = new MediaInformationSession(new String[]{"-v", "error", "-hide_banner", "-print_format", "json", "-show_format", "-show_streams", "-i", path}, executeCallback, logCallback); + final MediaInformationSession session = new MediaInformationSession(defaultGetMediaInformationCommandArguments(path), executeCallback, logCallback); FFmpegKitConfig.asyncGetMediaInformationExecute(session, executorService, waitTimeout); diff --git a/android/ffmpeg-kit-android-lib/src/main/java/com/arthenica/ffmpegkit/MediaInformation.java b/android/ffmpeg-kit-android-lib/src/main/java/com/arthenica/ffmpegkit/MediaInformation.java index 83d04a3..faf6674 100644 --- a/android/ffmpeg-kit-android-lib/src/main/java/com/arthenica/ffmpegkit/MediaInformation.java +++ b/android/ffmpeg-kit-android-lib/src/main/java/com/arthenica/ffmpegkit/MediaInformation.java @@ -49,9 +49,15 @@ public class MediaInformation { */ private final List streams; - public MediaInformation(final JSONObject jsonObject, final List streams) { + /** + * Stores chapters. + */ + private final List chapters; + + public MediaInformation(final JSONObject jsonObject, final List streams, final List chapters) { this.jsonObject = jsonObject; this.streams = streams; + this.chapters = chapters; } /** @@ -135,6 +141,15 @@ public class MediaInformation { return streams; } + /** + * Returns all chapters. + * + * @return list of chapters + */ + public List getChapters() { + return chapters; + } + /** * Returns the media property associated with the key. * diff --git a/android/ffmpeg-kit-android-lib/src/main/java/com/arthenica/ffmpegkit/MediaInformationJsonParser.java b/android/ffmpeg-kit-android-lib/src/main/java/com/arthenica/ffmpegkit/MediaInformationJsonParser.java index 2d78e6c..45a9471 100644 --- a/android/ffmpeg-kit-android-lib/src/main/java/com/arthenica/ffmpegkit/MediaInformationJsonParser.java +++ b/android/ffmpeg-kit-android-lib/src/main/java/com/arthenica/ffmpegkit/MediaInformationJsonParser.java @@ -34,6 +34,9 @@ import java.util.ArrayList; */ public class MediaInformationJsonParser { + public static final String KEY_STREAMS = "streams"; + public static final String KEY_CHAPTERS = "chapters"; + /** * Extracts MediaInformation from the given FFprobe json output. Note that this * method does not throw {@link JSONException} as {@link #fromWithError(String)} does and @@ -59,18 +62,27 @@ public class MediaInformationJsonParser { * @throws JSONException if a parsing error occurs */ public static MediaInformation fromWithError(final String ffprobeJsonOutput) throws JSONException { - JSONObject jsonObject = new JSONObject(ffprobeJsonOutput); - JSONArray streamArray = jsonObject.optJSONArray("streams"); + final JSONObject jsonObject = new JSONObject(ffprobeJsonOutput); + final JSONArray streamArray = jsonObject.optJSONArray(KEY_STREAMS); + final JSONArray chapterArray = jsonObject.optJSONArray(KEY_CHAPTERS); - ArrayList arrayList = new ArrayList<>(); + ArrayList streamList = new ArrayList<>(); for (int i = 0; streamArray != null && i < streamArray.length(); i++) { JSONObject streamObject = streamArray.optJSONObject(i); if (streamObject != null) { - arrayList.add(new StreamInformation(streamObject)); + streamList.add(new StreamInformation(streamObject)); + } + } + + ArrayList chapterList = new ArrayList<>(); + for (int i = 0; chapterArray != null && i < chapterArray.length(); i++) { + JSONObject chapterObject = chapterArray.optJSONObject(i); + if (chapterObject != null) { + chapterList.add(new Chapter(chapterObject)); } } - return new MediaInformation(jsonObject, arrayList); + return new MediaInformation(jsonObject, streamList, chapterList); } } diff --git a/android/ffmpeg-kit-android-lib/src/main/java/com/arthenica/ffmpegkit/StreamInformation.java b/android/ffmpeg-kit-android-lib/src/main/java/com/arthenica/ffmpegkit/StreamInformation.java index 487de30..45bd329 100644 --- a/android/ffmpeg-kit-android-lib/src/main/java/com/arthenica/ffmpegkit/StreamInformation.java +++ b/android/ffmpeg-kit-android-lib/src/main/java/com/arthenica/ffmpegkit/StreamInformation.java @@ -211,7 +211,7 @@ public class StreamInformation { /** * Returns all tags. * - * @return tags dictionary + * @return tags object */ public JSONObject getTags() { return getProperties(KEY_TAGS); diff --git a/android/ffmpeg-kit-android-lib/src/test/java/com/arthenica/ffmpegkit/FFmpegKitTest.java b/android/ffmpeg-kit-android-lib/src/test/java/com/arthenica/ffmpegkit/FFmpegKitTest.java index 24cbba8..29e16ad 100644 --- a/android/ffmpeg-kit-android-lib/src/test/java/com/arthenica/ffmpegkit/FFmpegKitTest.java +++ b/android/ffmpeg-kit-android-lib/src/test/java/com/arthenica/ffmpegkit/FFmpegKitTest.java @@ -72,6 +72,85 @@ public class FFmpegKitTest { " }\n" + " }\n" + " ],\n" + + " \"chapters\": [\n" + + " {\n" + + " \"id\": 0,\n" + + " \"time_base\": \"1/22050\",\n" + + " \"start\": 0,\n" + + " \"start_time\": \"0.000000\",\n" + + " \"end\": 11158238,\n" + + " \"end_time\": \"506.042540\",\n" + + " \"tags\": {\n" + + " \"title\": \"1 Laying Plans - 2 Waging War\"\n" + + " }\n" + + " },\n" + + " {\n" + + " \"id\": 1,\n" + + " \"time_base\": \"1/22050\",\n" + + " \"start\": 11158238,\n" + + " \"start_time\": \"506.042540\",\n" + + " \"end\": 21433051,\n" + + " \"end_time\": \"972.020454\",\n" + + " \"tags\": {\n" + + " \"title\": \"3 Attack By Stratagem - 4 Tactical Dispositions\"\n" + + " }\n" + + " },\n" + + " {\n" + + " \"id\": 2,\n" + + " \"time_base\": \"1/22050\",\n" + + " \"start\": 21433051,\n" + + " \"start_time\": \"972.020454\",\n" + + " \"end\": 35478685,\n" + + " \"end_time\": \"1609.010658\",\n" + + " \"tags\": {\n" + + " \"title\": \"5 Energy - 6 Weak Points and Strong\"\n" + + " }\n" + + " },\n" + + " {\n" + + " \"id\": 3,\n" + + " \"time_base\": \"1/22050\",\n" + + " \"start\": 35478685,\n" + + " \"start_time\": \"1609.010658\",\n" + + " \"end\": 47187043,\n" + + " \"end_time\": \"2140.001950\",\n" + + " \"tags\": {\n" + + " \"title\": \"7 Maneuvering - 8 Variation in Tactics\"\n" + + " }\n" + + " },\n" + + " {\n" + + " \"id\": 4,\n" + + " \"time_base\": \"1/22050\",\n" + + " \"start\": 47187043,\n" + + " \"start_time\": \"2140.001950\",\n" + + " \"end\": 66635594,\n" + + " \"end_time\": \"3022.022404\",\n" + + " \"tags\": {\n" + + " \"title\": \"9 The Army on the March - 10 Terrain\"\n" + + " }\n" + + " },\n" + + " {\n" + + " \"id\": 5,\n" + + " \"time_base\": \"1/22050\",\n" + + " \"start\": 66635594,\n" + + " \"start_time\": \"3022.022404\",\n" + + " \"end\": 83768105,\n" + + " \"end_time\": \"3799.007029\",\n" + + " \"tags\": {\n" + + " \"title\": \"11 The Nine Situations\"\n" + + " }\n" + + " },\n" + + " {\n" + + " \"id\": 6,\n" + + " \"time_base\": \"1/22050\",\n" + + " \"start\": 83768105,\n" + + " \"start_time\": \"3799.007029\",\n" + + " \"end\": 95659008,\n" + + " \"end_time\": \"4338.277007\",\n" + + " \"tags\": {\n" + + " \"title\": \"12 The Attack By Fire - 13 The Use of Spies\"\n" + + " }\n" + + " }\n" + + " ],\n" + " \"format\": {\n" + " \"filename\": \"sample.mp3\",\n" + " \"nb_streams\": 1,\n" + @@ -459,6 +538,11 @@ public class FFmpegKitTest { Assert.assertNotNull(mediaInformation.getStreams()); Assert.assertEquals(1, mediaInformation.getStreams().size()); assertAudioStream(mediaInformation.getStreams().get(0), 0L, "mp3", "MP3 (MPEG audio layer 3)", "44100", "stereo", "fltp", "320000"); + + Assert.assertNotNull(mediaInformation.getChapters()); + Assert.assertEquals(7, mediaInformation.getChapters().size()); + assertChapter(mediaInformation.getChapters().get(0), 0L, "1/22050", 0L, "0.000000", 11158238L, "506.042540"); + assertChapter(mediaInformation.getChapters().get(1), 1L, "1/22050", 11158238L, "506.042540", 21433051L, "972.020454"); } @Test @@ -743,4 +827,18 @@ public class FFmpegKitTest { Assert.assertEquals(codecTimeBase, streamInformation.getCodecTimeBase()); } + private void assertChapter(Chapter chapter, Long id, String timeBase, Long start, String startTime, Long end, String endTime) { + Assert.assertEquals(id, chapter.getId()); + Assert.assertEquals(timeBase, chapter.getTimeBase()); + + Assert.assertEquals(start, chapter.getStart()); + Assert.assertEquals(startTime, chapter.getStartTime()); + + Assert.assertEquals(end, chapter.getEnd()); + Assert.assertEquals(endTime, chapter.getEndTime()); + + Assert.assertNotNull(chapter.getTags()); + Assert.assertEquals(1, chapter.getTags().length()); + } + } diff --git a/apple/src/Chapter.h b/apple/src/Chapter.h new file mode 100644 index 0000000..f85e2b7 --- /dev/null +++ b/apple/src/Chapter.h @@ -0,0 +1,84 @@ +/* + * Copyright (c) 2021 Taner Sener + * + * This file is part of FFmpegKit. + * + * FFmpegKit is free software: you can redistribute it and/or modify + * it under the terms of the GNU Lesser General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * FFmpegKit is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public License + * along with FFmpegKit. If not, see . + */ + +#ifndef FFMPEG_KIT_CHAPTER_H +#define FFMPEG_KIT_CHAPTER_H + +#import + +extern NSString* const ChapterKeyId; +extern NSString* const ChapterKeyTimeBase; +extern NSString* const ChapterKeyStart; +extern NSString* const ChapterKeyStartTime; +extern NSString* const ChapterKeyEnd; +extern NSString* const ChapterKeyEndTime; +extern NSString* const ChapterKeyTags; + +/** + * Chapter class. + */ +@interface Chapter : NSObject + +- (instancetype)init:(NSDictionary*)chapterDictionary; + +- (NSNumber*)getId; + +- (NSString*)getTimeBase; + +- (NSNumber*)getStart; + +- (NSString*)getStartTime; + +- (NSNumber*)getEnd; + +- (NSString*)getEndTime; + +- (NSDictionary*)getTags; + +/** + * Returns the chapter property associated with the key. + * + * @return chapter property as string or nil if the key is not found + */ +- (NSString*)getStringProperty:(NSString*)key; + +/** + * Returns the chapter property associated with the key. + * + * @return chapter property as number or nil if the key is not found + */ +- (NSNumber*)getNumberProperty:(NSString*)key; + +/** + * Returns the chapter properties associated with the key. + * + * @return chapter properties in a dictionary or nil if the key is not found +*/ +- (NSDictionary*)getProperties:(NSString*)key; + +/** + * Returns all chapter properties defined. + * + * @return all chapter properties in a dictionary or nil if no properties are defined +*/ +- (NSDictionary*)getAllProperties; + +@end + +#endif // FFMPEG_KIT_CHAPTER_H diff --git a/apple/src/Chapter.m b/apple/src/Chapter.m new file mode 100644 index 0000000..30baf06 --- /dev/null +++ b/apple/src/Chapter.m @@ -0,0 +1,107 @@ +/* + * Copyright (c) 2021 Taner Sener + * + * This file is part of FFmpegKit. + * + * FFmpegKit is free software: you can redistribute it and/or modify + * it under the terms of the GNU Lesser General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * FFmpegKit is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public License + * along with FFmpegKit. If not, see . + */ + +#import "Chapter.h" + +NSString* const ChapterKeyId = @"id"; +NSString* const ChapterKeyTimeBase = @"time_base"; +NSString* const ChapterKeyStart = @"start"; +NSString* const ChapterKeyStartTime = @"start_time"; +NSString* const ChapterKeyEnd = @"end"; +NSString* const ChapterKeyEndTime = @"end_time"; +NSString* const ChapterKeyTags = @"tags"; + +@implementation Chapter { + + /** + * Stores all properties. + */ + NSDictionary *dictionary; + +} + +- (instancetype)init:(NSDictionary*)chapterDictionary { + self = [super init]; + if (self) { + dictionary = chapterDictionary; + } + + return self; +} + +- (NSNumber*)getId { + return [self getNumberProperty:ChapterKeyId]; +} + +- (NSString*)getTimeBase { + return [self getStringProperty:ChapterKeyTimeBase]; +} + +- (NSNumber*)getStart { + return [self getNumberProperty:ChapterKeyStart]; +} + +- (NSString*)getStartTime { + return [self getStringProperty:ChapterKeyStartTime]; +} + +- (NSNumber*)getEnd { + return [self getNumberProperty:ChapterKeyEnd]; +} + +- (NSString*)getEndTime { + return [self getStringProperty:ChapterKeyEndTime]; +} + +- (NSDictionary*)getTags { + return [self getProperties:ChapterKeyTags]; +} + +- (NSString*)getStringProperty:(NSString*)key { + NSDictionary* allProperties = [self getAllProperties]; + if (allProperties == nil) { + return nil; + } + + return allProperties[key]; +} + +- (NSNumber*)getNumberProperty:(NSString*)key { + NSDictionary* mediaProperties = [self getAllProperties]; + if (mediaProperties == nil) { + return nil; + } + + return mediaProperties[key]; +} + +- (NSDictionary*)getProperties:(NSString*)key { + NSDictionary* allProperties = [self getAllProperties]; + if (allProperties == nil) { + return nil; + } + + return allProperties[key]; +} + +- (NSDictionary*)getAllProperties { + return dictionary; +} + +@end diff --git a/apple/src/FFprobeKit.m b/apple/src/FFprobeKit.m index 6611b0e..cc013ea 100644 --- a/apple/src/FFprobeKit.m +++ b/apple/src/FFprobeKit.m @@ -28,6 +28,10 @@ [FFmpegKitConfig class]; } ++ (NSArray*)defaultGetMediaInformationCommandArguments:(NSString*)path { + return [[NSArray alloc] initWithObjects:@"-v", @"error", @"-hide_banner", @"-print_format", @"json", @"-show_format", @"-show_streams", @"-show_chapters", @"-i", path, nil]; +} + + (FFprobeSession*)executeWithArguments:(NSArray*)arguments { FFprobeSession* session = [[FFprobeSession alloc] init:arguments]; [FFmpegKitConfig ffprobeExecute:session]; @@ -89,42 +93,42 @@ } + (MediaInformationSession*)getMediaInformation:(NSString*)path { - NSArray* arguments = [[NSArray alloc] initWithObjects:@"-v", @"error", @"-hide_banner", @"-print_format", @"json", @"-show_format", @"-show_streams", @"-i", path, nil]; + NSArray* arguments = [FFprobeKit defaultGetMediaInformationCommandArguments:path]; MediaInformationSession* session = [[MediaInformationSession alloc] init:arguments]; [FFmpegKitConfig getMediaInformationExecute:session withTimeout:AbstractSessionDefaultTimeoutForAsynchronousMessagesInTransmit]; return session; } + (MediaInformationSession*)getMediaInformation:(NSString*)path withTimeout:(int)waitTimeout { - NSArray* arguments = [[NSArray alloc] initWithObjects:@"-v", @"error", @"-hide_banner", @"-print_format", @"json", @"-show_format", @"-show_streams", @"-i", path, nil]; + NSArray* arguments = [FFprobeKit defaultGetMediaInformationCommandArguments:path]; MediaInformationSession* session = [[MediaInformationSession alloc] init:arguments]; [FFmpegKitConfig getMediaInformationExecute:session withTimeout:waitTimeout]; return session; } + (MediaInformationSession*)getMediaInformationAsync:(NSString*)path withExecuteCallback:(ExecuteCallback)executeCallback { - NSArray* arguments = [[NSArray alloc] initWithObjects:@"-v", @"error", @"-hide_banner", @"-print_format", @"json", @"-show_format", @"-show_streams", @"-i", path, nil]; + NSArray* arguments = [FFprobeKit defaultGetMediaInformationCommandArguments:path]; MediaInformationSession* session = [[MediaInformationSession alloc] init:arguments withExecuteCallback:executeCallback]; [FFmpegKitConfig asyncGetMediaInformationExecute:session withTimeout:AbstractSessionDefaultTimeoutForAsynchronousMessagesInTransmit]; return session; } + (MediaInformationSession*)getMediaInformationAsync:(NSString*)path withExecuteCallback:(ExecuteCallback)executeCallback withLogCallback:(LogCallback)logCallback withTimeout:(int)waitTimeout { - NSArray* arguments = [[NSArray alloc] initWithObjects:@"-v", @"error", @"-hide_banner", @"-print_format", @"json", @"-show_format", @"-show_streams", @"-i", path, nil]; + NSArray* arguments = [FFprobeKit defaultGetMediaInformationCommandArguments:path]; MediaInformationSession* session = [[MediaInformationSession alloc] init:arguments withExecuteCallback:executeCallback withLogCallback:logCallback]; [FFmpegKitConfig asyncGetMediaInformationExecute:session withTimeout:waitTimeout]; return session; } + (MediaInformationSession*)getMediaInformationAsync:(NSString*)path withExecuteCallback:(ExecuteCallback)executeCallback onDispatchQueue:(dispatch_queue_t)queue { - NSArray* arguments = [[NSArray alloc] initWithObjects:@"-v", @"error", @"-hide_banner", @"-print_format", @"json", @"-show_format", @"-show_streams", @"-i", path, nil]; + NSArray* arguments = [FFprobeKit defaultGetMediaInformationCommandArguments:path]; MediaInformationSession* session = [[MediaInformationSession alloc] init:arguments withExecuteCallback:executeCallback]; [FFmpegKitConfig asyncGetMediaInformationExecute:session onDispatchQueue:queue withTimeout:AbstractSessionDefaultTimeoutForAsynchronousMessagesInTransmit]; return session; } + (MediaInformationSession*)getMediaInformationAsync:(NSString*)path withExecuteCallback:(ExecuteCallback)executeCallback withLogCallback:(LogCallback)logCallback onDispatchQueue:(dispatch_queue_t)queue withTimeout:(int)waitTimeout { - NSArray* arguments = [[NSArray alloc] initWithObjects:@"-v", @"error", @"-hide_banner", @"-print_format", @"json", @"-show_format", @"-show_streams", @"-i", path, nil]; + NSArray* arguments = [FFprobeKit defaultGetMediaInformationCommandArguments:path]; MediaInformationSession* session = [[MediaInformationSession alloc] init:arguments withExecuteCallback:executeCallback]; [FFmpegKitConfig asyncGetMediaInformationExecute:session onDispatchQueue:queue withTimeout:waitTimeout]; return session; diff --git a/apple/src/Makefile.am b/apple/src/Makefile.am index cdc9009..2a2d6d8 100644 --- a/apple/src/Makefile.am +++ b/apple/src/Makefile.am @@ -6,6 +6,7 @@ libffmpegkit_la_SOURCES = \ AbstractSession.m \ ArchDetect.m \ AtomicLong.m \ + Chapter.m \ FFmpegKit.m \ FFmpegKitConfig.m \ FFmpegSession.m \ @@ -35,6 +36,7 @@ include_HEADERS = \ AbstractSession.h \ ArchDetect.h \ AtomicLong.h \ + Chapter.h \ ExecuteCallback.h \ FFmpegKit.h \ FFmpegKitConfig.h \ diff --git a/apple/src/Makefile.in b/apple/src/Makefile.in index d14103d..600e946 100644 --- a/apple/src/Makefile.in +++ b/apple/src/Makefile.in @@ -134,18 +134,18 @@ am__installdirs = "$(DESTDIR)$(libdir)" "$(DESTDIR)$(includedir)" LTLIBRARIES = $(lib_LTLIBRARIES) libffmpegkit_la_DEPENDENCIES = am__libffmpegkit_la_SOURCES_DIST = AbstractSession.m ArchDetect.m \ - AtomicLong.m FFmpegKit.m FFmpegKitConfig.m FFmpegSession.m \ - FFprobeKit.m FFprobeSession.m Log.m MediaInformation.m \ - MediaInformationJsonParser.m MediaInformationSession.m \ - Packages.m ReturnCode.m Statistics.m StreamInformation.m \ - ffmpegkit_exception.m fftools_cmdutils.c fftools_ffmpeg.c \ - fftools_ffmpeg_filter.c fftools_ffmpeg_hw.c \ + AtomicLong.m Chapter.m FFmpegKit.m FFmpegKitConfig.m \ + FFmpegSession.m FFprobeKit.m FFprobeSession.m Log.m \ + MediaInformation.m MediaInformationJsonParser.m \ + MediaInformationSession.m Packages.m ReturnCode.m Statistics.m \ + StreamInformation.m ffmpegkit_exception.m fftools_cmdutils.c \ + fftools_ffmpeg.c fftools_ffmpeg_filter.c fftools_ffmpeg_hw.c \ fftools_ffmpeg_opt.c fftools_ffprobe.c \ fftools_ffmpeg_videotoolbox.c @FFMPEGKIT_VIDEOTOOLBOX_TRUE@am__objects_1 = libffmpegkit_la-fftools_ffmpeg_videotoolbox.lo am_libffmpegkit_la_OBJECTS = libffmpegkit_la-AbstractSession.lo \ libffmpegkit_la-ArchDetect.lo libffmpegkit_la-AtomicLong.lo \ - libffmpegkit_la-FFmpegKit.lo \ + libffmpegkit_la-Chapter.lo libffmpegkit_la-FFmpegKit.lo \ libffmpegkit_la-FFmpegKitConfig.lo \ libffmpegkit_la-FFmpegSession.lo libffmpegkit_la-FFprobeKit.lo \ libffmpegkit_la-FFprobeSession.lo libffmpegkit_la-Log.lo \ @@ -189,6 +189,7 @@ am__maybe_remake_depfiles = depfiles am__depfiles_remade = ./$(DEPDIR)/libffmpegkit_la-AbstractSession.Plo \ ./$(DEPDIR)/libffmpegkit_la-ArchDetect.Plo \ ./$(DEPDIR)/libffmpegkit_la-AtomicLong.Plo \ + ./$(DEPDIR)/libffmpegkit_la-Chapter.Plo \ ./$(DEPDIR)/libffmpegkit_la-FFmpegKit.Plo \ ./$(DEPDIR)/libffmpegkit_la-FFmpegKitConfig.Plo \ ./$(DEPDIR)/libffmpegkit_la-FFmpegSession.Plo \ @@ -401,8 +402,8 @@ top_srcdir = @top_srcdir@ lib_LTLIBRARIES = libffmpegkit.la libffmpegkit_la_LIBADD = @FFMPEG_FRAMEWORKS@ libffmpegkit_la_SOURCES = AbstractSession.m ArchDetect.m AtomicLong.m \ - FFmpegKit.m FFmpegKitConfig.m FFmpegSession.m FFprobeKit.m \ - FFprobeSession.m Log.m MediaInformation.m \ + Chapter.m FFmpegKit.m FFmpegKitConfig.m FFmpegSession.m \ + FFprobeKit.m FFprobeSession.m Log.m MediaInformation.m \ MediaInformationJsonParser.m MediaInformationSession.m \ Packages.m ReturnCode.m Statistics.m StreamInformation.m \ ffmpegkit_exception.m fftools_cmdutils.c fftools_ffmpeg.c \ @@ -412,6 +413,7 @@ include_HEADERS = \ AbstractSession.h \ ArchDetect.h \ AtomicLong.h \ + Chapter.h \ ExecuteCallback.h \ FFmpegKit.h \ FFmpegKitConfig.h \ @@ -521,6 +523,7 @@ distclean-compile: @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libffmpegkit_la-AbstractSession.Plo@am__quote@ # am--include-marker @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libffmpegkit_la-ArchDetect.Plo@am__quote@ # am--include-marker @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libffmpegkit_la-AtomicLong.Plo@am__quote@ # am--include-marker +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libffmpegkit_la-Chapter.Plo@am__quote@ # am--include-marker @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libffmpegkit_la-FFmpegKit.Plo@am__quote@ # am--include-marker @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libffmpegkit_la-FFmpegKitConfig.Plo@am__quote@ # am--include-marker @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libffmpegkit_la-FFmpegSession.Plo@am__quote@ # am--include-marker @@ -667,6 +670,13 @@ libffmpegkit_la-AtomicLong.lo: AtomicLong.m @AMDEP_TRUE@@am__fastdepOBJC_FALSE@ DEPDIR=$(DEPDIR) $(OBJCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepOBJC_FALSE@ $(AM_V_OBJC@am__nodep@)$(LIBTOOL) $(AM_V_lt) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(OBJC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libffmpegkit_la_OBJCFLAGS) $(OBJCFLAGS) -c -o libffmpegkit_la-AtomicLong.lo `test -f 'AtomicLong.m' || echo '$(srcdir)/'`AtomicLong.m +libffmpegkit_la-Chapter.lo: Chapter.m +@am__fastdepOBJC_TRUE@ $(AM_V_OBJC)$(LIBTOOL) $(AM_V_lt) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(OBJC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libffmpegkit_la_OBJCFLAGS) $(OBJCFLAGS) -MT libffmpegkit_la-Chapter.lo -MD -MP -MF $(DEPDIR)/libffmpegkit_la-Chapter.Tpo -c -o libffmpegkit_la-Chapter.lo `test -f 'Chapter.m' || echo '$(srcdir)/'`Chapter.m +@am__fastdepOBJC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libffmpegkit_la-Chapter.Tpo $(DEPDIR)/libffmpegkit_la-Chapter.Plo +@AMDEP_TRUE@@am__fastdepOBJC_FALSE@ $(AM_V_OBJC)source='Chapter.m' object='libffmpegkit_la-Chapter.lo' libtool=yes @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepOBJC_FALSE@ DEPDIR=$(DEPDIR) $(OBJCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepOBJC_FALSE@ $(AM_V_OBJC@am__nodep@)$(LIBTOOL) $(AM_V_lt) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(OBJC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libffmpegkit_la_OBJCFLAGS) $(OBJCFLAGS) -c -o libffmpegkit_la-Chapter.lo `test -f 'Chapter.m' || echo '$(srcdir)/'`Chapter.m + libffmpegkit_la-FFmpegKit.lo: FFmpegKit.m @am__fastdepOBJC_TRUE@ $(AM_V_OBJC)$(LIBTOOL) $(AM_V_lt) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(OBJC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libffmpegkit_la_OBJCFLAGS) $(OBJCFLAGS) -MT libffmpegkit_la-FFmpegKit.lo -MD -MP -MF $(DEPDIR)/libffmpegkit_la-FFmpegKit.Tpo -c -o libffmpegkit_la-FFmpegKit.lo `test -f 'FFmpegKit.m' || echo '$(srcdir)/'`FFmpegKit.m @am__fastdepOBJC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libffmpegkit_la-FFmpegKit.Tpo $(DEPDIR)/libffmpegkit_la-FFmpegKit.Plo @@ -922,6 +932,7 @@ distclean: distclean-am -rm -f ./$(DEPDIR)/libffmpegkit_la-AbstractSession.Plo -rm -f ./$(DEPDIR)/libffmpegkit_la-ArchDetect.Plo -rm -f ./$(DEPDIR)/libffmpegkit_la-AtomicLong.Plo + -rm -f ./$(DEPDIR)/libffmpegkit_la-Chapter.Plo -rm -f ./$(DEPDIR)/libffmpegkit_la-FFmpegKit.Plo -rm -f ./$(DEPDIR)/libffmpegkit_la-FFmpegKitConfig.Plo -rm -f ./$(DEPDIR)/libffmpegkit_la-FFmpegSession.Plo @@ -991,6 +1002,7 @@ maintainer-clean: maintainer-clean-am -rm -f ./$(DEPDIR)/libffmpegkit_la-AbstractSession.Plo -rm -f ./$(DEPDIR)/libffmpegkit_la-ArchDetect.Plo -rm -f ./$(DEPDIR)/libffmpegkit_la-AtomicLong.Plo + -rm -f ./$(DEPDIR)/libffmpegkit_la-Chapter.Plo -rm -f ./$(DEPDIR)/libffmpegkit_la-FFmpegKit.Plo -rm -f ./$(DEPDIR)/libffmpegkit_la-FFmpegKitConfig.Plo -rm -f ./$(DEPDIR)/libffmpegkit_la-FFmpegSession.Plo diff --git a/apple/src/MediaInformation.h b/apple/src/MediaInformation.h index 20813cf..6d2ea86 100644 --- a/apple/src/MediaInformation.h +++ b/apple/src/MediaInformation.h @@ -21,6 +21,7 @@ #define FFMPEG_KIT_MEDIA_INFORMATION_H #import +#import "Chapter.h" #import "StreamInformation.h" extern NSString* const MediaKeyMediaProperties; @@ -38,7 +39,7 @@ extern NSString* const MediaKeyTags; */ @interface MediaInformation : NSObject -- (instancetype)init:(NSDictionary*)mediaDictionary withStreams:(NSArray*)streams; +- (instancetype)init:(NSDictionary*)mediaDictionary withStreams:(NSArray*)streams withChapters:(NSArray*)chapters; /** * Returns file name. @@ -103,6 +104,13 @@ extern NSString* const MediaKeyTags; */ - (NSArray*)getStreams; +/** + * Returns all chapters. + * + * @return chapters array + */ +- (NSArray*)getChapters; + /** * Returns the media property associated with the key. * diff --git a/apple/src/MediaInformation.m b/apple/src/MediaInformation.m index c8ba7a9..a9211db 100644 --- a/apple/src/MediaInformation.m +++ b/apple/src/MediaInformation.m @@ -41,13 +41,19 @@ NSString* const MediaKeyTags = @"tags"; */ NSArray *streamArray; + /** + * Stores chapters. + */ + NSArray *chapterArray; + } -- (instancetype)init:(NSDictionary*)mediaDictionary withStreams:(NSArray*)streams{ +- (instancetype)init:(NSDictionary*)mediaDictionary withStreams:(NSArray*)streams withChapters:(NSArray*)chapters{ self = [super init]; if (self) { dictionary = mediaDictionary; streamArray = streams; + chapterArray = chapters; } return self; @@ -89,6 +95,10 @@ NSString* const MediaKeyTags = @"tags"; return streamArray; } +- (NSArray*)getChapters { + return chapterArray; +} + - (NSString*)getStringProperty:(NSString*)key { NSDictionary* mediaProperties = [self getMediaProperties]; if (mediaProperties == nil) { diff --git a/apple/src/MediaInformationJsonParser.m b/apple/src/MediaInformationJsonParser.m index e7fa171..c7fe7cb 100644 --- a/apple/src/MediaInformationJsonParser.m +++ b/apple/src/MediaInformationJsonParser.m @@ -19,6 +19,9 @@ #import "MediaInformationJsonParser.h" +NSString* const MediaInformationJsonParserKeyStreams = @"streams"; +NSString* const MediaInformationJsonParserKeyChapters = @"chapters"; + @implementation MediaInformationJsonParser + (MediaInformation*)from:(NSString*)ffprobeJsonOutput { @@ -40,14 +43,21 @@ return nil; } - NSArray* array = [jsonDictionary objectForKey:@"streams"]; + NSArray* jsonStreamArray = [jsonDictionary objectForKey:MediaInformationJsonParserKeyStreams]; NSMutableArray *streamArray = [[NSMutableArray alloc] init]; - for(int i = 0; i Date: Sun, 19 Dec 2021 23:35:28 +0000 Subject: [PATCH 27/45] test android build scripts on ndk r23b --- .github/workflows/android-build-scripts.yml | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/.github/workflows/android-build-scripts.yml b/.github/workflows/android-build-scripts.yml index 702ecc8..44a20c0 100644 --- a/.github/workflows/android-build-scripts.yml +++ b/.github/workflows/android-build-scripts.yml @@ -15,7 +15,7 @@ jobs: runs-on: ubuntu-20.04 strategy: matrix: - ndk-version: [ 'r21e-linux-x86_64', 'r22b-linux-x86_64', 'r23-linux' ] + ndk-version: [ 'r21e-linux-x86_64', 'r22b-linux-x86_64', 'r23b-linux' ] defaults: run: shell: bash @@ -44,7 +44,7 @@ jobs: runs-on: ubuntu-20.04 strategy: matrix: - ndk-version: [ 'r21e-linux-x86_64', 'r22b-linux-x86_64', 'r23-linux' ] + ndk-version: [ 'r21e-linux-x86_64', 'r22b-linux-x86_64', 'r23b-linux' ] defaults: run: shell: bash @@ -73,7 +73,7 @@ jobs: runs-on: macos-10.15 strategy: matrix: - ndk-version: [ 'r21e-darwin-x86_64', 'r22b-darwin-x86_64', 'r23-darwin' ] + ndk-version: [ 'r21e-darwin-x86_64', 'r22b-darwin-x86_64', 'r23b-darwin' ] defaults: run: shell: bash @@ -102,7 +102,7 @@ jobs: runs-on: macos-10.15 strategy: matrix: - ndk-version: [ 'r21e-darwin-x86_64', 'r22b-darwin-x86_64', 'r23-darwin' ] + ndk-version: [ 'r21e-darwin-x86_64', 'r22b-darwin-x86_64', 'r23b-darwin' ] defaults: run: shell: bash From 15345abc271e8791479ec928da989339f08176e0 Mon Sep 17 00:00:00 2001 From: Taner Sener Date: Sun, 19 Dec 2021 23:58:33 +0000 Subject: [PATCH 28/45] replace @jlink with @link in android javadocs --- .../com/arthenica/ffmpegkit/FFmpegKit.java | 16 +++++------ .../arthenica/ffmpegkit/FFmpegKitConfig.java | 12 ++++---- .../com/arthenica/ffmpegkit/FFprobeKit.java | 28 +++++++++---------- 3 files changed, 28 insertions(+), 28 deletions(-) diff --git a/android/ffmpeg-kit-android-lib/src/main/java/com/arthenica/ffmpegkit/FFmpegKit.java b/android/ffmpeg-kit-android-lib/src/main/java/com/arthenica/ffmpegkit/FFmpegKit.java index dc15539..d419907 100644 --- a/android/ffmpeg-kit-android-lib/src/main/java/com/arthenica/ffmpegkit/FFmpegKit.java +++ b/android/ffmpeg-kit-android-lib/src/main/java/com/arthenica/ffmpegkit/FFmpegKit.java @@ -66,7 +66,7 @@ public class FFmpegKit { *

Starts an asynchronous FFmpeg execution with arguments provided. * *

Note that this method returns immediately and does not wait the execution to complete. You must use an - * {@jlink ExecuteCallback} if you want to be notified about the result. + * {@link ExecuteCallback} if you want to be notified about the result. * * @param arguments FFmpeg command options/arguments as string array * @param executeCallback callback that will be called when the execution is completed @@ -85,7 +85,7 @@ public class FFmpegKit { *

Starts an asynchronous FFmpeg execution with arguments provided. * *

Note that this method returns immediately and does not wait the execution to complete. You must use an - * {@jlink ExecuteCallback} if you want to be notified about the result. + * {@link ExecuteCallback} if you want to be notified about the result. * * @param arguments FFmpeg command options/arguments as string array * @param executeCallback callback that will be called when the execution is completed @@ -108,7 +108,7 @@ public class FFmpegKit { *

Starts an asynchronous FFmpeg execution with arguments provided. * *

Note that this method returns immediately and does not wait the execution to complete. You must use an - * {@jlink ExecuteCallback} if you want to be notified about the result. + * {@link ExecuteCallback} if you want to be notified about the result. * * @param arguments FFmpeg command options/arguments as string array * @param executeCallback callback that will be called when the execution is completed @@ -129,7 +129,7 @@ public class FFmpegKit { *

Starts an asynchronous FFmpeg execution with arguments provided. * *

Note that this method returns immediately and does not wait the execution to complete. You must use an - * {@jlink ExecuteCallback} if you want to be notified about the result. + * {@link ExecuteCallback} if you want to be notified about the result. * * @param arguments FFmpeg command options/arguments as string array * @param executeCallback callback that will be called when the execution is completed @@ -167,7 +167,7 @@ public class FFmpegKit { * into arguments. You can use single or double quote characters to specify arguments inside your command. * *

Note that this method returns immediately and does not wait the execution to complete. You must use an - * {@jlink ExecuteCallback} if you want to be notified about the result. + * {@link ExecuteCallback} if you want to be notified about the result. * * @param command FFmpeg command * @param executeCallback callback that will be called when the execution is completed @@ -183,7 +183,7 @@ public class FFmpegKit { * into arguments. You can use single or double quote characters to specify arguments inside your command. * *

Note that this method returns immediately and does not wait the execution to complete. You must use an - * {@jlink ExecuteCallback} if you want to be notified about the result. + * {@link ExecuteCallback} if you want to be notified about the result. * * @param command FFmpeg command * @param executeCallback callback that will be called when the execution is completed @@ -203,7 +203,7 @@ public class FFmpegKit { * into arguments. You can use single or double quote characters to specify arguments inside your command. * *

Note that this method returns immediately and does not wait the execution to complete. You must use an - * {@jlink ExecuteCallback} if you want to be notified about the result. + * {@link ExecuteCallback} if you want to be notified about the result. * * @param command FFmpeg command * @param executeCallback callback that will be called when the execution is completed @@ -225,7 +225,7 @@ public class FFmpegKit { * into arguments. You can use single or double quote characters to specify arguments inside your command. * *

Note that this method returns immediately and does not wait the execution to complete. You must use an - * {@jlink ExecuteCallback} if you want to be notified about the result. + * {@link ExecuteCallback} if you want to be notified about the result. * * @param command FFmpeg command * @param executeCallback callback that will be called when the execution is completed diff --git a/android/ffmpeg-kit-android-lib/src/main/java/com/arthenica/ffmpegkit/FFmpegKitConfig.java b/android/ffmpeg-kit-android-lib/src/main/java/com/arthenica/ffmpegkit/FFmpegKitConfig.java index 62a459b..8fcb438 100644 --- a/android/ffmpeg-kit-android-lib/src/main/java/com/arthenica/ffmpegkit/FFmpegKitConfig.java +++ b/android/ffmpeg-kit-android-lib/src/main/java/com/arthenica/ffmpegkit/FFmpegKitConfig.java @@ -705,7 +705,7 @@ public class FFmpegKitConfig { *

Starts an asynchronous FFmpeg execution for the given session. * *

Note that this method returns immediately and does not wait the execution to complete. You must use an - * {@jlink ExecuteCallback} if you want to be notified about the result. + * {@link ExecuteCallback} if you want to be notified about the result. * * @param ffmpegSession FFmpeg session which includes command options/arguments */ @@ -719,7 +719,7 @@ public class FFmpegKitConfig { *

Starts an asynchronous FFmpeg execution for the given session. * *

Note that this method returns immediately and does not wait the execution to complete. You must use an - * {@jlink ExecuteCallback} if you want to be notified about the result. + * {@link ExecuteCallback} if you want to be notified about the result. * * @param ffmpegSession FFmpeg session which includes command options/arguments * @param executorService executor service that will be used to run this asynchronous operation @@ -734,7 +734,7 @@ public class FFmpegKitConfig { *

Starts an asynchronous FFprobe execution for the given session. * *

Note that this method returns immediately and does not wait the execution to complete. You must use an - * {@jlink ExecuteCallback} if you want to be notified about the result. + * {@link ExecuteCallback} if you want to be notified about the result. * * @param ffprobeSession FFprobe session which includes command options/arguments */ @@ -748,7 +748,7 @@ public class FFmpegKitConfig { *

Starts an asynchronous FFprobe execution for the given session. * *

Note that this method returns immediately and does not wait the execution to complete. You must use an - * {@jlink ExecuteCallback} if you want to be notified about the result. + * {@link ExecuteCallback} if you want to be notified about the result. * * @param ffprobeSession FFprobe session which includes command options/arguments * @param executorService executor service that will be used to run this asynchronous operation @@ -763,7 +763,7 @@ public class FFmpegKitConfig { *

Starts an asynchronous FFprobe execution for the given media information session. * *

Note that this method returns immediately and does not wait the execution to complete. You must use an - * {@jlink ExecuteCallback} if you want to be notified about the result. + * {@link ExecuteCallback} if you want to be notified about the result. * * @param mediaInformationSession media information session which includes command options/arguments * @param waitTimeout max time to wait until media information is transmitted @@ -778,7 +778,7 @@ public class FFmpegKitConfig { *

Starts an asynchronous FFprobe execution for the given media information session. * *

Note that this method returns immediately and does not wait the execution to complete. You must use an - * {@jlink ExecuteCallback} if you want to be notified about the result. + * {@link ExecuteCallback} if you want to be notified about the result. * * @param mediaInformationSession media information session which includes command options/arguments * @param executorService executor service that will be used to run this asynchronous operation diff --git a/android/ffmpeg-kit-android-lib/src/main/java/com/arthenica/ffmpegkit/FFprobeKit.java b/android/ffmpeg-kit-android-lib/src/main/java/com/arthenica/ffmpegkit/FFprobeKit.java index 9b9a6a3..139d510 100644 --- a/android/ffmpeg-kit-android-lib/src/main/java/com/arthenica/ffmpegkit/FFprobeKit.java +++ b/android/ffmpeg-kit-android-lib/src/main/java/com/arthenica/ffmpegkit/FFprobeKit.java @@ -80,7 +80,7 @@ public class FFprobeKit { *

Starts an asynchronous FFprobe execution with arguments provided. * *

Note that this method returns immediately and does not wait the execution to complete. You must use an - * {@jlink ExecuteCallback} if you want to be notified about the result. + * {@link ExecuteCallback} if you want to be notified about the result. * * @param arguments FFprobe command options/arguments as string array * @param executeCallback callback that will be called when the execution is completed @@ -99,7 +99,7 @@ public class FFprobeKit { *

Starts an asynchronous FFprobe execution with arguments provided. * *

Note that this method returns immediately and does not wait the execution to complete. You must use an - * {@jlink ExecuteCallback} if you want to be notified about the result. + * {@link ExecuteCallback} if you want to be notified about the result. * * @param arguments FFprobe command options/arguments as string array * @param executeCallback callback that will be notified when execution is completed @@ -120,7 +120,7 @@ public class FFprobeKit { *

Starts an asynchronous FFprobe execution with arguments provided. * *

Note that this method returns immediately and does not wait the execution to complete. You must use an - * {@jlink ExecuteCallback} if you want to be notified about the result. + * {@link ExecuteCallback} if you want to be notified about the result. * * @param arguments FFprobe command options/arguments as string array * @param executeCallback callback that will be called when the execution is completed @@ -141,7 +141,7 @@ public class FFprobeKit { *

Starts an asynchronous FFprobe execution with arguments provided. * *

Note that this method returns immediately and does not wait the execution to complete. You must use an - * {@jlink ExecuteCallback} if you want to be notified about the result. + * {@link ExecuteCallback} if you want to be notified about the result. * * @param arguments FFprobe command options/arguments as string array * @param executeCallback callback that will be notified when execution is completed @@ -177,7 +177,7 @@ public class FFprobeKit { * into arguments. You can use single or double quote characters to specify arguments inside your command. * *

Note that this method returns immediately and does not wait the execution to complete. You must use an - * {@jlink ExecuteCallback} if you want to be notified about the result. + * {@link ExecuteCallback} if you want to be notified about the result. * * @param command FFprobe command * @param executeCallback callback that will be called when the execution is completed @@ -193,7 +193,7 @@ public class FFprobeKit { * into arguments. You can use single or double quote characters to specify arguments inside your command. * *

Note that this method returns immediately and does not wait the execution to complete. You must use an - * {@jlink ExecuteCallback} if you want to be notified about the result. + * {@link ExecuteCallback} if you want to be notified about the result. * * @param command FFprobe command * @param executeCallback callback that will be notified when execution is completed @@ -211,7 +211,7 @@ public class FFprobeKit { * into arguments. You can use single or double quote characters to specify arguments inside your command. * *

Note that this method returns immediately and does not wait the execution to complete. You must use an - * {@jlink ExecuteCallback} if you want to be notified about the result. + * {@link ExecuteCallback} if you want to be notified about the result. * * @param command FFprobe command * @param executeCallback callback that will be called when the execution is completed @@ -233,7 +233,7 @@ public class FFprobeKit { * into arguments. You can use single or double quote characters to specify arguments inside your command. * *

Note that this method returns immediately and does not wait the execution to complete. You must use an - * {@jlink ExecuteCallback} if you want to be notified about the result. + * {@link ExecuteCallback} if you want to be notified about the result. * * @param command FFprobe command * @param executeCallback callback that will be called when the execution is completed @@ -286,7 +286,7 @@ public class FFprobeKit { *

Starts an asynchronous FFprobe execution to extract the media information for the specified file. * *

Note that this method returns immediately and does not wait the execution to complete. You must use an - * {@jlink ExecuteCallback} if you want to be notified about the result. + * {@link ExecuteCallback} if you want to be notified about the result. * * @param path path or uri of a media file * @param executeCallback callback that will be called when the execution is completed @@ -305,7 +305,7 @@ public class FFprobeKit { *

Starts an asynchronous FFprobe execution to extract the media information for the specified file. * *

Note that this method returns immediately and does not wait the execution to complete. You must use an - * {@jlink ExecuteCallback} if you want to be notified about the result. + * {@link ExecuteCallback} if you want to be notified about the result. * * @param path path or uri of a media file * @param executeCallback callback that will be notified when execution is completed @@ -328,7 +328,7 @@ public class FFprobeKit { *

Starts an asynchronous FFprobe execution to extract the media information for the specified file. * *

Note that this method returns immediately and does not wait the execution to complete. You must use an - * {@jlink ExecuteCallback} if you want to be notified about the result. + * {@link ExecuteCallback} if you want to be notified about the result. * * @param path path or uri of a media file * @param executeCallback callback that will be called when the execution is completed @@ -349,7 +349,7 @@ public class FFprobeKit { *

Starts an asynchronous FFprobe execution to extract the media information for the specified file. * *

Note that this method returns immediately and does not wait the execution to complete. You must use an - * {@jlink ExecuteCallback} if you want to be notified about the result. + * {@link ExecuteCallback} if you want to be notified about the result. * * @param path path or uri of a media file * @param executeCallback callback that will be notified when execution is completed @@ -389,7 +389,7 @@ public class FFprobeKit { * this method must generate the output in JSON format in order to successfully extract media information from it. * *

Note that this method returns immediately and does not wait the execution to complete. You must use an - * {@jlink ExecuteCallback} if you want to be notified about the result. + * {@link ExecuteCallback} if you want to be notified about the result. * * @param command FFprobe command that prints media information for a file in JSON format * @param executeCallback callback that will be notified when execution is completed @@ -410,7 +410,7 @@ public class FFprobeKit { * from it. * *

Note that this method returns immediately and does not wait the execution to complete. You must use an - * {@jlink ExecuteCallback} if you want to be notified about the result. + * {@link ExecuteCallback} if you want to be notified about the result. * * @param arguments FFprobe command arguments that print media information for a file in JSON format * @param executeCallback callback that will be notified when execution is completed From cb94734c94b7fa30749f9b2ef8c30a0694605ba7 Mon Sep 17 00:00:00 2001 From: Taner Sener Date: Mon, 20 Dec 2021 00:14:20 +0000 Subject: [PATCH 29/45] allow building any ios and tvos architecture when --no-framework is specified --- ios.sh | 6 +++--- tvos.sh | 2 +- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/ios.sh b/ios.sh index db756e7..4e7b39f 100755 --- a/ios.sh +++ b/ios.sh @@ -173,19 +173,19 @@ disable_ios_architecture_not_supported_on_detected_sdk_version "${ARCH_ARM64_SIM # CHECK SOME RULES FOR .framework BUNDLES # 1. DISABLE arm64-mac-catalyst IN framework BUNDLES -if [[ -z ${FFMPEG_KIT_XCF_BUILD} ]] && [[ ${ENABLED_ARCHITECTURES[${ARCH_ARM64_MAC_CATALYST}]} -eq 1 ]]; then +if [[ ${NO_FRAMEWORK} -ne 1 ]] && [[ -z ${FFMPEG_KIT_XCF_BUILD} ]] && [[ ${ENABLED_ARCHITECTURES[${ARCH_ARM64_MAC_CATALYST}]} -eq 1 ]]; then echo -e "INFO: Disabled arm64-mac-catalyst architecture which cannot exist in a framework bundle.\n" 1>>"${BASEDIR}"/build.log 2>&1 disable_arch "arm64-mac-catalyst" fi # 2. DISABLE x86-64-mac-catalyst IN framework BUNDLES -if [[ -z ${FFMPEG_KIT_XCF_BUILD} ]] && [[ ${ENABLED_ARCHITECTURES[${ARCH_X86_64_MAC_CATALYST}]} -eq 1 ]]; then +if [[ ${NO_FRAMEWORK} -ne 1 ]] && [[ -z ${FFMPEG_KIT_XCF_BUILD} ]] && [[ ${ENABLED_ARCHITECTURES[${ARCH_X86_64_MAC_CATALYST}]} -eq 1 ]]; then echo -e "INFO: Disabled x86-64-mac-catalyst architecture which cannot exist in a framework bundle.\n" 1>>"${BASEDIR}"/build.log 2>&1 disable_arch "x86-64-mac-catalyst" fi # 3. DISABLE arm64-simulator WHEN arm64 IS ENABLED IN framework BUNDLES -if [[ -z ${FFMPEG_KIT_XCF_BUILD} ]] && [[ ${ENABLED_ARCHITECTURES[${ARCH_ARM64}]} -eq 1 ]] && [[ ${ENABLED_ARCHITECTURES[${ARCH_ARM64_SIMULATOR}]} -eq 1 ]]; then +if [[ ${NO_FRAMEWORK} -ne 1 ]] && [[ -z ${FFMPEG_KIT_XCF_BUILD} ]] && [[ ${ENABLED_ARCHITECTURES[${ARCH_ARM64}]} -eq 1 ]] && [[ ${ENABLED_ARCHITECTURES[${ARCH_ARM64_SIMULATOR}]} -eq 1 ]]; then echo -e "INFO: Disabled arm64-simulator architecture which cannot co-exist with arm64 in the same framework bundle.\n" 1>>"${BASEDIR}"/build.log 2>&1 disable_arch "arm64-simulator" fi diff --git a/tvos.sh b/tvos.sh index ac03120..16d2723 100755 --- a/tvos.sh +++ b/tvos.sh @@ -162,7 +162,7 @@ disable_tvos_architecture_not_supported_on_detected_sdk_version "${ARCH_ARM64_SI # CHECK SOME RULES FOR .framework BUNDLES # 1. DISABLE arm64-simulator WHEN arm64 IS ENABLED IN framework BUNDLES -if [[ -z ${FFMPEG_KIT_XCF_BUILD} ]] && [[ ${ENABLED_ARCHITECTURES[${ARCH_ARM64}]} -eq 1 ]] && [[ ${ENABLED_ARCHITECTURES[${ARCH_ARM64_SIMULATOR}]} -eq 1 ]]; then +if [[ ${NO_FRAMEWORK} -ne 1 ]] && [[ -z ${FFMPEG_KIT_XCF_BUILD} ]] && [[ ${ENABLED_ARCHITECTURES[${ARCH_ARM64}]} -eq 1 ]] && [[ ${ENABLED_ARCHITECTURES[${ARCH_ARM64_SIMULATOR}]} -eq 1 ]]; then echo -e "INFO: Disabled arm64-simulator architecture which cannot co-exist with arm64 in the same framework bundle.\n" 1>>"${BASEDIR}"/build.log 2>&1 disable_arch "arm64-simulator" fi From 39dfa48c80b0d2994b2c4ae473f9a39b0f490c4b Mon Sep 17 00:00:00 2001 From: Taner Sener Date: Mon, 20 Dec 2021 00:15:40 +0000 Subject: [PATCH 30/45] use detected ios version to auto-disable arm64e architecture --- scripts/function-apple.sh | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/scripts/function-apple.sh b/scripts/function-apple.sh index fc21d57..8e7f345 100755 --- a/scripts/function-apple.sh +++ b/scripts/function-apple.sh @@ -39,7 +39,7 @@ disable_ios_architecture_not_supported_on_detected_sdk_version() { arm64e) # INTRODUCED IN IOS SDK 10.1 - if [[ $(compare_versions "$IOS_MIN_VERSION" "10.1") -ge 1 ]]; then + if [[ $(compare_versions "$DETECTED_IOS_SDK_VERSION" "10.1") -ge 1 ]]; then local SUPPORTED=1 else local SUPPORTED=0 From 4cf58501468b631da8047fcec676022b36eb8459 Mon Sep 17 00:00:00 2001 From: Taner Sener Date: Mon, 20 Dec 2021 23:53:50 +0000 Subject: [PATCH 31/45] auto-disable videotoolbox when tvos sdk version set does not support it --- scripts/function-apple.sh | 9 +++++++++ scripts/function-ios.sh | 5 ----- scripts/function-tvos.sh | 3 --- scripts/function.sh | 15 +-------------- tvos.sh | 3 +++ 5 files changed, 13 insertions(+), 22 deletions(-) diff --git a/scripts/function-apple.sh b/scripts/function-apple.sh index 8e7f345..17280cc 100755 --- a/scripts/function-apple.sh +++ b/scripts/function-apple.sh @@ -143,6 +143,15 @@ disable_macos_architecture_not_supported_on_detected_sdk_version() { fi } +disable_tvos_videotoolbox_on_not_supported_sdk_version() { + + # INTRODUCED IN TVOS SDK 10.2 + if [[ $(compare_versions "$TVOS_MIN_VERSION" "10.2") -lt 0 ]]; then + set_library "tvos-videotoolbox" 0 + echo -e "INFO: Disabled tvos-videotoolbox which is not supported on tvOS SDK $TVOS_MIN_VERSION\n" 1>>"${BASEDIR}"/build.log 2>&1 + fi +} + build_apple_architecture_variant_strings() { export ALL_IOS_ARCHITECTURES="$(get_apple_architectures_for_variant "${ARCH_VAR_IOS}")" export IPHONEOS_ARCHITECTURES="$(get_apple_architectures_for_variant "${ARCH_VAR_IPHONEOS}")" diff --git a/scripts/function-ios.sh b/scripts/function-ios.sh index 86e4b92..a5284c2 100755 --- a/scripts/function-ios.sh +++ b/scripts/function-ios.sh @@ -90,11 +90,6 @@ enable_lts_build() { # MAC CATALYST IS INTRODUCED IN 13.0 export MAC_CATALYST_MIN_VERSION=13.0 fi - - # IOS SDK 9.3 SUPPORTS VIDEOTOOLBOX - # HOWEVER, THE LATEST FFMPEG VERSION USES SDK 11.0 APIS - # THEREFORE, VIDEOTOOLBOX IS DISABLED IN LTS RELEASES - ENABLED_LIBRARIES[LIBRARY_VIDEOTOOLBOX]=0 } get_common_includes() { diff --git a/scripts/function-tvos.sh b/scripts/function-tvos.sh index 9d9750b..f953e96 100755 --- a/scripts/function-tvos.sh +++ b/scripts/function-tvos.sh @@ -64,9 +64,6 @@ enable_lts_build() { # XCODE 7.3 HAS TVOS SDK 9.2 export TVOS_MIN_VERSION=9.2 fi - - # TVOS SDK 9.2 DOES NOT INCLUDE VIDEOTOOLBOX - ENABLED_LIBRARIES[LIBRARY_VIDEOTOOLBOX]=0 } get_common_includes() { diff --git a/scripts/function.sh b/scripts/function.sh index 7bf23cc..d678bf0 100755 --- a/scripts/function.sh +++ b/scripts/function.sh @@ -265,19 +265,6 @@ is_library_supported_on_platform() { fi ;; - # ONLY IOS, MACOS AND TVOS MAIN - 52) - if [[ ${FFMPEG_KIT_BUILD_TYPE} == "ios" ]] && [[ $1 == "ios-videotoolbox" ]] && [[ -z ${FFMPEG_KIT_LTS_BUILD} ]]; then - echo "0" - elif [[ ${FFMPEG_KIT_BUILD_TYPE} == "macos" ]] && [[ $1 == "macos-videotoolbox" ]]; then - echo "0" - elif [[ ${FFMPEG_KIT_BUILD_TYPE} == "tvos" ]] && [[ $1 == "tvos-videotoolbox" ]] && [[ -z ${FFMPEG_KIT_LTS_BUILD} ]]; then - echo "0" - else - echo "1" - fi - ;; - # ONLY IOS AND MACOS 53) if [[ ${FFMPEG_KIT_BUILD_TYPE} == "ios" ]] && [[ $1 == "ios-avfoundation" ]]; then @@ -290,7 +277,7 @@ is_library_supported_on_platform() { ;; # IOS, MACOS AND TVOS - 49 | 50 | 51 | 54 | 55) + 49 | 50 | 51 | 52 | 54 | 55) if [[ ${FFMPEG_KIT_BUILD_TYPE} == "ios" ]] || [[ ${FFMPEG_KIT_BUILD_TYPE} == "tvos" ]] || [[ ${FFMPEG_KIT_BUILD_TYPE} == "macos" ]]; then echo "0" else diff --git a/tvos.sh b/tvos.sh index 16d2723..c0d4081 100755 --- a/tvos.sh +++ b/tvos.sh @@ -159,6 +159,9 @@ fi # DISABLE NOT SUPPORTED ARCHITECTURES disable_tvos_architecture_not_supported_on_detected_sdk_version "${ARCH_ARM64_SIMULATOR}" +# DISABLE NOT SUPPORTED LIBRARIES +disable_tvos_videotoolbox_on_not_supported_sdk_version + # CHECK SOME RULES FOR .framework BUNDLES # 1. DISABLE arm64-simulator WHEN arm64 IS ENABLED IN framework BUNDLES From 4b7b8dcfddb35de7af294eba3b6e1770e7c85781 Mon Sep 17 00:00:00 2001 From: Taner Sener Date: Tue, 21 Dec 2021 00:27:13 +0000 Subject: [PATCH 32/45] auto-disabling not supported android features --- scripts/function-android.sh | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/scripts/function-android.sh b/scripts/function-android.sh index f604ca7..4ed78b6 100755 --- a/scripts/function-android.sh +++ b/scripts/function-android.sh @@ -404,10 +404,13 @@ get_common_linked_libraries() { case $1 in ffmpeg) - if [[ -z ${FFMPEG_KIT_LTS_BUILD} ]]; then + + # SUPPORTED ON API LEVEL 24 AND LATER + if [[ ${API} -ge 24 ]]; then echo "-lc -lm -ldl -llog -lcamera2ndk -lmediandk ${COMMON_LIBRARY_PATHS}" else echo "-lc -lm -ldl -llog ${COMMON_LIBRARY_PATHS}" + echo -e "INFO: Building ffmpeg without native camera API which is not supported on Android API Level ${API}\n" 1>>"${BASEDIR}"/build.log 2>&1 fi ;; libvpx) From 64a67922c77aad97d7434855214e461c18361e20 Mon Sep 17 00:00:00 2001 From: Taner Sener Date: Tue, 21 Dec 2021 00:35:10 +0000 Subject: [PATCH 33/45] update min sdk version in build.gradle when api level is explicitly set --- android.sh | 4 ++++ android/.gitignore | 1 + scripts/function-android.sh | 4 ++-- scripts/function-ios.sh | 4 ++-- scripts/function-macos.sh | 4 ++-- scripts/function-tvos.sh | 4 ++-- 6 files changed, 13 insertions(+), 8 deletions(-) diff --git a/android.sh b/android.sh index bf94df5..4f9e484 100755 --- a/android.sh +++ b/android.sh @@ -155,6 +155,10 @@ if [[ -n ${DISPLAY_HELP} ]]; then exit 0 fi +# SET API LEVEL IN build.gradle +${SED_INLINE} "s/minSdkVersion .*/minSdkVersion ${API}/g" "${BASEDIR}"/android/ffmpeg-kit-android-lib/build.gradle 1>>"${BASEDIR}"/build.log 2>&1 +${SED_INLINE} "s/versionCode ..0/versionCode ${API}0/g" "${BASEDIR}"/android/ffmpeg-kit-android-lib/build.gradle 1>>"${BASEDIR}"/build.log 2>&1 + echo -e "\nBuilding ffmpeg-kit ${BUILD_TYPE_ID}library for Android\n" echo -e -n "INFO: Building ffmpeg-kit ${BUILD_VERSION} ${BUILD_TYPE_ID}library for Android: " 1>>"${BASEDIR}"/build.log 2>&1 echo -e "$(date)\n" 1>>"${BASEDIR}"/build.log 2>&1 diff --git a/android/.gitignore b/android/.gitignore index b10a5b5..d639a70 100644 --- a/android/.gitignore +++ b/android/.gitignore @@ -5,3 +5,4 @@ /libs/ /obj/ /ffmpeg-kit-android-lib/build/ +*.tmp diff --git a/scripts/function-android.sh b/scripts/function-android.sh index 4ed78b6..389a2c8 100755 --- a/scripts/function-android.sh +++ b/scripts/function-android.sh @@ -2,6 +2,8 @@ source "${BASEDIR}/scripts/function.sh" +prepare_inline_sed + enable_default_android_architectures() { ENABLED_ARCHITECTURES[ARCH_ARM_V7A]=1 ENABLED_ARCHITECTURES[ARCH_ARM_V7A_NEON]=1 @@ -1033,8 +1035,6 @@ set_toolchain_paths() { if [ ! -f "${ZLIB_PACKAGE_CONFIG_PATH}" ]; then create_zlib_system_package_config 1>>"${BASEDIR}"/build.log 2>&1 fi - - prepare_inline_sed } build_android_lts_support() { diff --git a/scripts/function-ios.sh b/scripts/function-ios.sh index a5284c2..f00de1a 100755 --- a/scripts/function-ios.sh +++ b/scripts/function-ios.sh @@ -2,6 +2,8 @@ source "${BASEDIR}/scripts/function-apple.sh" +prepare_inline_sed + enable_default_ios_architectures() { ENABLED_ARCHITECTURES[ARCH_ARMV7]=1 ENABLED_ARCHITECTURES[ARCH_ARMV7S]=1 @@ -479,8 +481,6 @@ set_toolchain_paths() { if [ ! -f "${LIB_UUID_PACKAGE_CONFIG_PATH}" ]; then create_libuuid_system_package_config fi - - prepare_inline_sed } initialize_prebuilt_ios_folders() { diff --git a/scripts/function-macos.sh b/scripts/function-macos.sh index 6762ee4..a746133 100755 --- a/scripts/function-macos.sh +++ b/scripts/function-macos.sh @@ -2,6 +2,8 @@ source "${BASEDIR}/scripts/function-apple.sh" +prepare_inline_sed + enable_default_macos_architectures() { ENABLED_ARCHITECTURES[ARCH_ARM64]=1 ENABLED_ARCHITECTURES[ARCH_X86_64]=1 @@ -375,8 +377,6 @@ set_toolchain_paths() { if [ ! -f "${LIB_UUID_PACKAGE_CONFIG_PATH}" ]; then create_libuuid_system_package_config fi - - prepare_inline_sed } initialize_prebuilt_macos_folders() { diff --git a/scripts/function-tvos.sh b/scripts/function-tvos.sh index f953e96..605336e 100755 --- a/scripts/function-tvos.sh +++ b/scripts/function-tvos.sh @@ -2,6 +2,8 @@ source "${BASEDIR}/scripts/function-apple.sh" +prepare_inline_sed + enable_default_tvos_architectures() { ENABLED_ARCHITECTURES[ARCH_ARM64]=1 ENABLED_ARCHITECTURES[ARCH_X86_64]=1 @@ -426,8 +428,6 @@ set_toolchain_paths() { if [ ! -f "${LIB_UUID_PACKAGE_CONFIG_PATH}" ]; then create_libuuid_system_package_config fi - - prepare_inline_sed } initialize_prebuilt_tvos_folders() { From d1fc22d96ffbe52266ebe580d5eb976de552739c Mon Sep 17 00:00:00 2001 From: Taner Sener Date: Tue, 21 Dec 2021 00:48:34 +0000 Subject: [PATCH 34/45] build android library using ndk 23b --- android/ffmpeg-kit-android-lib/build.gradle | 2 +- tools/release/android/build.gradle | 2 +- tools/release/android/build.lts.gradle | 2 +- 3 files changed, 3 insertions(+), 3 deletions(-) diff --git a/android/ffmpeg-kit-android-lib/build.gradle b/android/ffmpeg-kit-android-lib/build.gradle index be18375..2fc5175 100644 --- a/android/ffmpeg-kit-android-lib/build.gradle +++ b/android/ffmpeg-kit-android-lib/build.gradle @@ -2,7 +2,7 @@ apply plugin: 'com.android.library' android { compileSdkVersion 30 - ndkVersion "23.0.7599858" + ndkVersion "23.1.7779620" defaultConfig { minSdkVersion 24 diff --git a/tools/release/android/build.gradle b/tools/release/android/build.gradle index be18375..2fc5175 100644 --- a/tools/release/android/build.gradle +++ b/tools/release/android/build.gradle @@ -2,7 +2,7 @@ apply plugin: 'com.android.library' android { compileSdkVersion 30 - ndkVersion "23.0.7599858" + ndkVersion "23.1.7779620" defaultConfig { minSdkVersion 24 diff --git a/tools/release/android/build.lts.gradle b/tools/release/android/build.lts.gradle index a0d146f..7158d54 100644 --- a/tools/release/android/build.lts.gradle +++ b/tools/release/android/build.lts.gradle @@ -2,7 +2,7 @@ apply plugin: 'com.android.library' android { compileSdkVersion 30 - ndkVersion "23.0.7599858" + ndkVersion "23.1.7779620" defaultConfig { minSdkVersion 16 From d8945c1fca16c11a41982b91ad8e50b7ae9b0e78 Mon Sep 17 00:00:00 2001 From: Taner Sener Date: Tue, 21 Dec 2021 20:54:21 +0000 Subject: [PATCH 35/45] unify the names of execute methods that accept a string for android --- .../src/main/java/com/arthenica/ffmpegkit/FFmpegKit.java | 4 ++-- .../src/main/java/com/arthenica/ffmpegkit/FFprobeKit.java | 4 ++-- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/android/ffmpeg-kit-android-lib/src/main/java/com/arthenica/ffmpegkit/FFmpegKit.java b/android/ffmpeg-kit-android-lib/src/main/java/com/arthenica/ffmpegkit/FFmpegKit.java index d419907..84750a8 100644 --- a/android/ffmpeg-kit-android-lib/src/main/java/com/arthenica/ffmpegkit/FFmpegKit.java +++ b/android/ffmpeg-kit-android-lib/src/main/java/com/arthenica/ffmpegkit/FFmpegKit.java @@ -54,7 +54,7 @@ public class FFmpegKit { * @param arguments FFmpeg command options/arguments as string array * @return FFmpeg session created for this execution */ - public static FFmpegSession execute(final String[] arguments) { + public static FFmpegSession executeWithArguments(final String[] arguments) { final FFmpegSession session = new FFmpegSession(arguments); FFmpegKitConfig.ffmpegExecute(session); @@ -159,7 +159,7 @@ public class FFmpegKit { * @return FFmpeg session created for this execution */ public static FFmpegSession execute(final String command) { - return execute(FFmpegKitConfig.parseArguments(command)); + return executeWithArguments(FFmpegKitConfig.parseArguments(command)); } /** diff --git a/android/ffmpeg-kit-android-lib/src/main/java/com/arthenica/ffmpegkit/FFprobeKit.java b/android/ffmpeg-kit-android-lib/src/main/java/com/arthenica/ffmpegkit/FFprobeKit.java index 139d510..a0a74b9 100644 --- a/android/ffmpeg-kit-android-lib/src/main/java/com/arthenica/ffmpegkit/FFprobeKit.java +++ b/android/ffmpeg-kit-android-lib/src/main/java/com/arthenica/ffmpegkit/FFprobeKit.java @@ -68,7 +68,7 @@ public class FFprobeKit { * @param arguments FFprobe command options/arguments as string array * @return FFprobe session created for this execution */ - public static FFprobeSession execute(final String[] arguments) { + public static FFprobeSession executeWithArguments(final String[] arguments) { final FFprobeSession session = new FFprobeSession(arguments); FFmpegKitConfig.ffprobeExecute(session); @@ -169,7 +169,7 @@ public class FFprobeKit { * @return FFprobe session created for this execution */ public static FFprobeSession execute(final String command) { - return execute(FFmpegKitConfig.parseArguments(command)); + return executeWithArguments(FFmpegKitConfig.parseArguments(command)); } /** From 6d1493d08d5a38c05442510f3c98597e70299783 Mon Sep 17 00:00:00 2001 From: Taner Sener Date: Wed, 22 Dec 2021 00:20:15 +0000 Subject: [PATCH 36/45] fix synchronous execution errors in get media information from command methods for android --- .../src/main/java/com/arthenica/ffmpegkit/FFprobeKit.java | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/android/ffmpeg-kit-android-lib/src/main/java/com/arthenica/ffmpegkit/FFprobeKit.java b/android/ffmpeg-kit-android-lib/src/main/java/com/arthenica/ffmpegkit/FFprobeKit.java index a0a74b9..48cf946 100644 --- a/android/ffmpeg-kit-android-lib/src/main/java/com/arthenica/ffmpegkit/FFprobeKit.java +++ b/android/ffmpeg-kit-android-lib/src/main/java/com/arthenica/ffmpegkit/FFprobeKit.java @@ -371,7 +371,7 @@ public class FFprobeKit { } /** - *

Extracts media information using the command provided asynchronously. + *

Extracts media information using the command provided. * * @param command FFprobe command that prints media information for a file in JSON format * @return media information session created for this execution @@ -379,7 +379,7 @@ public class FFprobeKit { public static MediaInformationSession getMediaInformationFromCommand(final String command) { final MediaInformationSession session = new MediaInformationSession(FFmpegKitConfig.parseArguments(command)); - FFmpegKitConfig.asyncGetMediaInformationExecute(session, AbstractSession.DEFAULT_TIMEOUT_FOR_ASYNCHRONOUS_MESSAGES_IN_TRANSMIT); + FFmpegKitConfig.getMediaInformationExecute(session, AbstractSession.DEFAULT_TIMEOUT_FOR_ASYNCHRONOUS_MESSAGES_IN_TRANSMIT); return session; } @@ -424,7 +424,7 @@ public class FFprobeKit { final int waitTimeout) { final MediaInformationSession session = new MediaInformationSession(arguments, executeCallback, logCallback); - FFmpegKitConfig.getMediaInformationExecute(session, waitTimeout); + FFmpegKitConfig.asyncGetMediaInformationExecute(session, waitTimeout); return session; } From 38d88e0c1219ecd67c6c9ced53427023ebc91c7e Mon Sep 17 00:00:00 2001 From: Taner Sener Date: Thu, 23 Dec 2021 23:10:13 +0000 Subject: [PATCH 37/45] replace execute callback with session specific complete callbacks, fixes #197 --- .../arthenica/ffmpegkit/AbstractSession.java | 21 +- .../ffmpegkit/AsyncFFmpegExecuteTask.java | 18 +- .../ffmpegkit/AsyncFFprobeExecuteTask.java | 18 +- .../AsyncGetMediaInformationTask.java | 18 +- .../arthenica/ffmpegkit/ExecuteCallback.java | 51 --- .../com/arthenica/ffmpegkit/FFmpegKit.java | 135 ++++---- .../arthenica/ffmpegkit/FFmpegKitConfig.java | 164 +++++++--- .../arthenica/ffmpegkit/FFmpegSession.java | 60 ++-- .../FFmpegSessionCompleteCallback.java | 35 ++ .../com/arthenica/ffmpegkit/FFprobeKit.java | 298 ++++++++++-------- .../arthenica/ffmpegkit/FFprobeSession.java | 47 ++- .../FFprobeSessionCompleteCallback.java | 35 ++ .../ffmpegkit/MediaInformationSession.java | 51 ++- ...diaInformationSessionCompleteCallback.java | 36 +++ .../java/com/arthenica/ffmpegkit/Session.java | 20 +- .../ffmpegkit/FFmpegSessionTest.java | 24 +- .../ffmpegkit/FFprobeSessionTest.java | 24 +- apple/src/AbstractSession.h | 7 +- apple/src/AbstractSession.m | 14 +- apple/src/FFmpegKit.h | 105 +++--- apple/src/FFmpegKit.m | 32 +- apple/src/FFmpegKitConfig.h | 73 +++-- apple/src/FFmpegKitConfig.m | 107 +++++-- apple/src/FFmpegSession.h | 42 +-- apple/src/FFmpegSession.m | 28 +- ...back.h => FFmpegSessionCompleteCallback.h} | 14 +- apple/src/FFprobeKit.h | 173 +++++----- apple/src/FFprobeKit.m | 62 ++-- apple/src/FFprobeSession.h | 32 +- apple/src/FFprobeSession.m | 49 ++- apple/src/FFprobeSessionCompleteCallback.h | 50 +++ apple/src/Makefile.am | 40 +-- apple/src/Makefile.in | 40 +-- apple/src/MediaInformationSession.h | 26 +- apple/src/MediaInformationSession.m | 42 ++- .../MediaInformationSessionCompleteCallback.h | 51 +++ apple/src/Session.h | 17 +- scripts/function-apple.sh | 4 +- 38 files changed, 1283 insertions(+), 780 deletions(-) delete mode 100644 android/ffmpeg-kit-android-lib/src/main/java/com/arthenica/ffmpegkit/ExecuteCallback.java create mode 100644 android/ffmpeg-kit-android-lib/src/main/java/com/arthenica/ffmpegkit/FFmpegSessionCompleteCallback.java create mode 100644 android/ffmpeg-kit-android-lib/src/main/java/com/arthenica/ffmpegkit/FFprobeSessionCompleteCallback.java create mode 100644 android/ffmpeg-kit-android-lib/src/main/java/com/arthenica/ffmpegkit/MediaInformationSessionCompleteCallback.java rename apple/src/{ExecuteCallback.h => FFmpegSessionCompleteCallback.h} (79%) create mode 100644 apple/src/FFprobeSessionCompleteCallback.h create mode 100644 apple/src/MediaInformationSessionCompleteCallback.h diff --git a/android/ffmpeg-kit-android-lib/src/main/java/com/arthenica/ffmpegkit/AbstractSession.java b/android/ffmpeg-kit-android-lib/src/main/java/com/arthenica/ffmpegkit/AbstractSession.java index 9e799af..fcb8c62 100644 --- a/android/ffmpeg-kit-android-lib/src/main/java/com/arthenica/ffmpegkit/AbstractSession.java +++ b/android/ffmpeg-kit-android-lib/src/main/java/com/arthenica/ffmpegkit/AbstractSession.java @@ -28,8 +28,8 @@ import java.util.concurrent.Future; import java.util.concurrent.atomic.AtomicLong; /** - * Abstract session implementation which includes common features shared by FFmpeg - * and FFprobe sessions. + * Abstract session implementation which includes common features shared by FFmpeg, + * FFprobe and MediaInformation sessions. */ public abstract class AbstractSession implements Session { @@ -49,12 +49,7 @@ public abstract class AbstractSession implements Session { protected final long sessionId; /** - * Session specific execute callback function. - */ - protected final ExecuteCallback executeCallback; - - /** - * Session specific log callback function. + * Session specific log callback. */ protected final LogCallback logCallback; @@ -117,16 +112,13 @@ public abstract class AbstractSession implements Session { * Creates a new abstract session. * * @param arguments command arguments - * @param executeCallback session specific execute callback function - * @param logCallback session specific log callback function + * @param logCallback session specific log callback * @param logRedirectionStrategy session specific log redirection strategy */ public AbstractSession(final String[] arguments, - final ExecuteCallback executeCallback, final LogCallback logCallback, final LogRedirectionStrategy logRedirectionStrategy) { this.sessionId = sessionIdGenerator.getAndIncrement(); - this.executeCallback = executeCallback; this.logCallback = logCallback; this.createTime = new Date(); this.startTime = null; @@ -143,11 +135,6 @@ public abstract class AbstractSession implements Session { FFmpegKitConfig.addSession(this); } - @Override - public ExecuteCallback getExecuteCallback() { - return executeCallback; - } - @Override public LogCallback getLogCallback() { return logCallback; diff --git a/android/ffmpeg-kit-android-lib/src/main/java/com/arthenica/ffmpegkit/AsyncFFmpegExecuteTask.java b/android/ffmpeg-kit-android-lib/src/main/java/com/arthenica/ffmpegkit/AsyncFFmpegExecuteTask.java index 56c4d30..934787f 100644 --- a/android/ffmpeg-kit-android-lib/src/main/java/com/arthenica/ffmpegkit/AsyncFFmpegExecuteTask.java +++ b/android/ffmpeg-kit-android-lib/src/main/java/com/arthenica/ffmpegkit/AsyncFFmpegExecuteTask.java @@ -26,33 +26,33 @@ import com.arthenica.smartexception.java.Exceptions; */ public class AsyncFFmpegExecuteTask implements Runnable { private final FFmpegSession ffmpegSession; - private final ExecuteCallback executeCallback; + private final FFmpegSessionCompleteCallback completeCallback; public AsyncFFmpegExecuteTask(final FFmpegSession ffmpegSession) { this.ffmpegSession = ffmpegSession; - this.executeCallback = ffmpegSession.getExecuteCallback(); + this.completeCallback = ffmpegSession.getCompleteCallback(); } @Override public void run() { FFmpegKitConfig.ffmpegExecute(ffmpegSession); - if (executeCallback != null) { + if (completeCallback != null) { try { // NOTIFY SESSION CALLBACK DEFINED - executeCallback.apply(ffmpegSession); + completeCallback.apply(ffmpegSession); } catch (final Exception e) { - android.util.Log.e(FFmpegKitConfig.TAG, String.format("Exception thrown inside session ExecuteCallback block.%s", Exceptions.getStackTraceString(e))); + android.util.Log.e(FFmpegKitConfig.TAG, String.format("Exception thrown inside session complete callback.%s", Exceptions.getStackTraceString(e))); } } - final ExecuteCallback globalExecuteCallbackFunction = FFmpegKitConfig.getExecuteCallback(); - if (globalExecuteCallbackFunction != null) { + final FFmpegSessionCompleteCallback globalFFmpegSessionCompleteCallback = FFmpegKitConfig.getFFmpegSessionCompleteCallback(); + if (globalFFmpegSessionCompleteCallback != null) { try { // NOTIFY GLOBAL CALLBACK DEFINED - globalExecuteCallbackFunction.apply(ffmpegSession); + globalFFmpegSessionCompleteCallback.apply(ffmpegSession); } catch (final Exception e) { - android.util.Log.e(FFmpegKitConfig.TAG, String.format("Exception thrown inside global ExecuteCallback block.%s", Exceptions.getStackTraceString(e))); + android.util.Log.e(FFmpegKitConfig.TAG, String.format("Exception thrown inside global complete callback.%s", Exceptions.getStackTraceString(e))); } } } diff --git a/android/ffmpeg-kit-android-lib/src/main/java/com/arthenica/ffmpegkit/AsyncFFprobeExecuteTask.java b/android/ffmpeg-kit-android-lib/src/main/java/com/arthenica/ffmpegkit/AsyncFFprobeExecuteTask.java index 74182c9..9d2a3e8 100644 --- a/android/ffmpeg-kit-android-lib/src/main/java/com/arthenica/ffmpegkit/AsyncFFprobeExecuteTask.java +++ b/android/ffmpeg-kit-android-lib/src/main/java/com/arthenica/ffmpegkit/AsyncFFprobeExecuteTask.java @@ -26,33 +26,33 @@ import com.arthenica.smartexception.java.Exceptions; */ public class AsyncFFprobeExecuteTask implements Runnable { private final FFprobeSession ffprobeSession; - private final ExecuteCallback executeCallback; + private final FFprobeSessionCompleteCallback completeCallback; public AsyncFFprobeExecuteTask(final FFprobeSession ffprobeSession) { this.ffprobeSession = ffprobeSession; - this.executeCallback = ffprobeSession.getExecuteCallback(); + this.completeCallback = ffprobeSession.getCompleteCallback(); } @Override public void run() { FFmpegKitConfig.ffprobeExecute(ffprobeSession); - if (executeCallback != null) { + if (completeCallback != null) { try { // NOTIFY SESSION CALLBACK DEFINED - executeCallback.apply(ffprobeSession); + completeCallback.apply(ffprobeSession); } catch (final Exception e) { - android.util.Log.e(FFmpegKitConfig.TAG, String.format("Exception thrown inside session ExecuteCallback block.%s", Exceptions.getStackTraceString(e))); + android.util.Log.e(FFmpegKitConfig.TAG, String.format("Exception thrown inside session complete callback.%s", Exceptions.getStackTraceString(e))); } } - final ExecuteCallback globalExecuteCallbackFunction = FFmpegKitConfig.getExecuteCallback(); - if (globalExecuteCallbackFunction != null) { + final FFprobeSessionCompleteCallback globalFFprobeSessionCompleteCallback = FFmpegKitConfig.getFFprobeSessionCompleteCallback(); + if (globalFFprobeSessionCompleteCallback != null) { try { // NOTIFY GLOBAL CALLBACK DEFINED - globalExecuteCallbackFunction.apply(ffprobeSession); + globalFFprobeSessionCompleteCallback.apply(ffprobeSession); } catch (final Exception e) { - android.util.Log.e(FFmpegKitConfig.TAG, String.format("Exception thrown inside global ExecuteCallback block.%s", Exceptions.getStackTraceString(e))); + android.util.Log.e(FFmpegKitConfig.TAG, String.format("Exception thrown inside global complete callback.%s", Exceptions.getStackTraceString(e))); } } } diff --git a/android/ffmpeg-kit-android-lib/src/main/java/com/arthenica/ffmpegkit/AsyncGetMediaInformationTask.java b/android/ffmpeg-kit-android-lib/src/main/java/com/arthenica/ffmpegkit/AsyncGetMediaInformationTask.java index c59d81d..cbfc3fa 100644 --- a/android/ffmpeg-kit-android-lib/src/main/java/com/arthenica/ffmpegkit/AsyncGetMediaInformationTask.java +++ b/android/ffmpeg-kit-android-lib/src/main/java/com/arthenica/ffmpegkit/AsyncGetMediaInformationTask.java @@ -26,7 +26,7 @@ import com.arthenica.smartexception.java.Exceptions; */ public class AsyncGetMediaInformationTask implements Runnable { private final MediaInformationSession mediaInformationSession; - private final ExecuteCallback executeCallback; + private final MediaInformationSessionCompleteCallback completeCallback; private final Integer waitTimeout; public AsyncGetMediaInformationTask(final MediaInformationSession mediaInformationSession) { @@ -35,7 +35,7 @@ public class AsyncGetMediaInformationTask implements Runnable { public AsyncGetMediaInformationTask(final MediaInformationSession mediaInformationSession, final Integer waitTimeout) { this.mediaInformationSession = mediaInformationSession; - this.executeCallback = mediaInformationSession.getExecuteCallback(); + this.completeCallback = mediaInformationSession.getCompleteCallback(); this.waitTimeout = waitTimeout; } @@ -43,22 +43,22 @@ public class AsyncGetMediaInformationTask implements Runnable { public void run() { FFmpegKitConfig.getMediaInformationExecute(mediaInformationSession, waitTimeout); - if (executeCallback != null) { + if (completeCallback != null) { try { // NOTIFY SESSION CALLBACK DEFINED - executeCallback.apply(mediaInformationSession); + completeCallback.apply(mediaInformationSession); } catch (final Exception e) { - android.util.Log.e(FFmpegKitConfig.TAG, String.format("Exception thrown inside session ExecuteCallback block.%s", Exceptions.getStackTraceString(e))); + android.util.Log.e(FFmpegKitConfig.TAG, String.format("Exception thrown inside session complete callback.%s", Exceptions.getStackTraceString(e))); } } - final ExecuteCallback globalExecuteCallbackFunction = FFmpegKitConfig.getExecuteCallback(); - if (globalExecuteCallbackFunction != null) { + final MediaInformationSessionCompleteCallback globalMediaInformationSessionCompleteCallback = FFmpegKitConfig.getMediaInformationSessionCompleteCallback(); + if (globalMediaInformationSessionCompleteCallback != null) { try { // NOTIFY GLOBAL CALLBACK DEFINEDs - globalExecuteCallbackFunction.apply(mediaInformationSession); + globalMediaInformationSessionCompleteCallback.apply(mediaInformationSession); } catch (final Exception e) { - android.util.Log.e(FFmpegKitConfig.TAG, String.format("Exception thrown inside global ExecuteCallback block.%s", Exceptions.getStackTraceString(e))); + android.util.Log.e(FFmpegKitConfig.TAG, String.format("Exception thrown inside global complete callback.%s", Exceptions.getStackTraceString(e))); } } } diff --git a/android/ffmpeg-kit-android-lib/src/main/java/com/arthenica/ffmpegkit/ExecuteCallback.java b/android/ffmpeg-kit-android-lib/src/main/java/com/arthenica/ffmpegkit/ExecuteCallback.java deleted file mode 100644 index 2d1af84..0000000 --- a/android/ffmpeg-kit-android-lib/src/main/java/com/arthenica/ffmpegkit/ExecuteCallback.java +++ /dev/null @@ -1,51 +0,0 @@ -/* - * Copyright (c) 2018-2021 Taner Sener - * - * This file is part of FFmpegKit. - * - * FFmpegKit is free software: you can redistribute it and/or modify - * it under the terms of the GNU Lesser General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. - * - * FFmpegKit is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public License - * along with FFmpegKit. If not, see . - */ - -package com.arthenica.ffmpegkit; - -/** - *

Callback function invoked when an asynchronous session ends running. - *

Session has either {@link SessionState#COMPLETED} or {@link SessionState#FAILED} state when - * the callback is invoked. - *

If it has {@link SessionState#COMPLETED} state, ReturnCode should be checked to - * see the execution result. - *

If getState returns {@link SessionState#FAILED} then - * getFailStackTrace should be used to get the failure reason. - *

- *  switch (session.getState()) {
- *      case COMPLETED: {
- *          ReturnCode returnCode = session.getReturnCode();
- *      } break;
- *      case FAILED: {
- *          String failStackTrace = session.getFailStackTrace();
- *      } break;
- *  }
- * 
- */ -@FunctionalInterface -public interface ExecuteCallback { - - /** - *

Called when an asynchronous session ends running. - * - * @param session session - */ - void apply(final Session session); - -} diff --git a/android/ffmpeg-kit-android-lib/src/main/java/com/arthenica/ffmpegkit/FFmpegKit.java b/android/ffmpeg-kit-android-lib/src/main/java/com/arthenica/ffmpegkit/FFmpegKit.java index 84750a8..d0b6dee 100644 --- a/android/ffmpeg-kit-android-lib/src/main/java/com/arthenica/ffmpegkit/FFmpegKit.java +++ b/android/ffmpeg-kit-android-lib/src/main/java/com/arthenica/ffmpegkit/FFmpegKit.java @@ -23,16 +23,16 @@ import java.util.List; import java.util.concurrent.ExecutorService; /** - *

Main class to run FFmpeg commands. Supports executing commands both synchronously and - * asynchronously. + *

Main class to run FFmpeg commands. Supports executing commands both + * synchronously and asynchronously. *

  * FFmpegSession session = FFmpegKit.execute("-i file1.mp4 -c:v libxvid file1.avi");
  *
- * FFmpegSession asyncSession = FFmpegKit.executeAsync("-i file1.mp4 -c:v libxvid file1.avi", executeCallback);
+ * FFmpegSession asyncSession = FFmpegKit.executeAsync("-i file1.mp4 -c:v libxvid file1.avi", completeCallback);
  * 
*

Provides overloaded execute methods to define session specific callbacks. *

- * FFmpegSession asyncSession = FFmpegKit.executeAsync("-i file1.mp4 -c:v libxvid file1.avi", executeCallback, logCallback, statisticsCallback);
+ * FFmpegSession asyncSession = FFmpegKit.executeAsync("-i file1.mp4 -c:v libxvid file1.avi", completeCallback, logCallback, statisticsCallback);
  * 
*/ public class FFmpegKit { @@ -65,16 +65,17 @@ public class FFmpegKit { /** *

Starts an asynchronous FFmpeg execution with arguments provided. * - *

Note that this method returns immediately and does not wait the execution to complete. You must use an - * {@link ExecuteCallback} if you want to be notified about the result. + *

Note that this method returns immediately and does not wait the execution to complete. + * You must use an {@link FFmpegSessionCompleteCallback} if you want to be notified about the + * result. * - * @param arguments FFmpeg command options/arguments as string array - * @param executeCallback callback that will be called when the execution is completed + * @param arguments FFmpeg command options/arguments as string array + * @param completeCallback callback that will be called when the execution has completed * @return FFmpeg session created for this execution */ public static FFmpegSession executeWithArgumentsAsync(final String[] arguments, - final ExecuteCallback executeCallback) { - final FFmpegSession session = new FFmpegSession(arguments, executeCallback); + final FFmpegSessionCompleteCallback completeCallback) { + final FFmpegSession session = new FFmpegSession(arguments, completeCallback); FFmpegKitConfig.asyncFFmpegExecute(session); @@ -84,20 +85,21 @@ public class FFmpegKit { /** *

Starts an asynchronous FFmpeg execution with arguments provided. * - *

Note that this method returns immediately and does not wait the execution to complete. You must use an - * {@link ExecuteCallback} if you want to be notified about the result. + *

Note that this method returns immediately and does not wait the execution to complete. + * You must use an {@link FFmpegSessionCompleteCallback} if you want to be notified about the + * result. * * @param arguments FFmpeg command options/arguments as string array - * @param executeCallback callback that will be called when the execution is completed + * @param completeCallback callback that will be called when the execution has completed * @param logCallback callback that will receive logs * @param statisticsCallback callback that will receive statistics * @return FFmpeg session created for this execution */ public static FFmpegSession executeWithArgumentsAsync(final String[] arguments, - final ExecuteCallback executeCallback, + final FFmpegSessionCompleteCallback completeCallback, final LogCallback logCallback, final StatisticsCallback statisticsCallback) { - final FFmpegSession session = new FFmpegSession(arguments, executeCallback, logCallback, statisticsCallback); + final FFmpegSession session = new FFmpegSession(arguments, completeCallback, logCallback, statisticsCallback); FFmpegKitConfig.asyncFFmpegExecute(session); @@ -107,18 +109,19 @@ public class FFmpegKit { /** *

Starts an asynchronous FFmpeg execution with arguments provided. * - *

Note that this method returns immediately and does not wait the execution to complete. You must use an - * {@link ExecuteCallback} if you want to be notified about the result. + *

Note that this method returns immediately and does not wait the execution to complete. + * You must use an {@link FFmpegSessionCompleteCallback} if you want to be notified about the + * result. * - * @param arguments FFmpeg command options/arguments as string array - * @param executeCallback callback that will be called when the execution is completed - * @param executorService executor service that will be used to run this asynchronous operation + * @param arguments FFmpeg command options/arguments as string array + * @param completeCallback callback that will be called when the execution has completed + * @param executorService executor service that will be used to run this asynchronous operation * @return FFmpeg session created for this execution */ public static FFmpegSession executeWithArgumentsAsync(final String[] arguments, - final ExecuteCallback executeCallback, + final FFmpegSessionCompleteCallback completeCallback, final ExecutorService executorService) { - final FFmpegSession session = new FFmpegSession(arguments, executeCallback); + final FFmpegSession session = new FFmpegSession(arguments, completeCallback); FFmpegKitConfig.asyncFFmpegExecute(session, executorService); @@ -128,22 +131,24 @@ public class FFmpegKit { /** *

Starts an asynchronous FFmpeg execution with arguments provided. * - *

Note that this method returns immediately and does not wait the execution to complete. You must use an - * {@link ExecuteCallback} if you want to be notified about the result. + *

Note that this method returns immediately and does not wait the execution to complete. + * You must use an {@link FFmpegSessionCompleteCallback} if you want to be notified about the + * result. * * @param arguments FFmpeg command options/arguments as string array - * @param executeCallback callback that will be called when the execution is completed + * @param completeCallback callback that will be called when the execution has completed * @param logCallback callback that will receive logs * @param statisticsCallback callback that will receive statistics - * @param executorService executor service that will be used to run this asynchronous operation + * @param executorService executor service that will be used to run this asynchronous + * operation * @return FFmpeg session created for this execution */ public static FFmpegSession executeWithArgumentsAsync(final String[] arguments, - final ExecuteCallback executeCallback, + final FFmpegSessionCompleteCallback completeCallback, final LogCallback logCallback, final StatisticsCallback statisticsCallback, final ExecutorService executorService) { - final FFmpegSession session = new FFmpegSession(arguments, executeCallback, logCallback, statisticsCallback); + final FFmpegSession session = new FFmpegSession(arguments, completeCallback, logCallback, statisticsCallback); FFmpegKitConfig.asyncFFmpegExecute(session, executorService); @@ -163,57 +168,63 @@ public class FFmpegKit { } /** - *

Starts an asynchronous FFmpeg execution for the given command. Space character is used to split the command - * into arguments. You can use single or double quote characters to specify arguments inside your command. + *

Starts an asynchronous FFmpeg execution for the given command. Space character is used to + * split the command into arguments. You can use single or double quote characters to specify + * arguments inside your command. * - *

Note that this method returns immediately and does not wait the execution to complete. You must use an - * {@link ExecuteCallback} if you want to be notified about the result. + *

Note that this method returns immediately and does not wait the execution to complete. + * You must use an {@link FFmpegSessionCompleteCallback} if you want to be notified about the + * result. * - * @param command FFmpeg command - * @param executeCallback callback that will be called when the execution is completed + * @param command FFmpeg command + * @param completeCallback callback that will be called when the execution has completed * @return FFmpeg session created for this execution */ public static FFmpegSession executeAsync(final String command, - final ExecuteCallback executeCallback) { - return executeWithArgumentsAsync(FFmpegKitConfig.parseArguments(command), executeCallback); + final FFmpegSessionCompleteCallback completeCallback) { + return executeWithArgumentsAsync(FFmpegKitConfig.parseArguments(command), completeCallback); } /** - *

Starts an asynchronous FFmpeg execution for the given command. Space character is used to split the command - * into arguments. You can use single or double quote characters to specify arguments inside your command. + *

Starts an asynchronous FFmpeg execution for the given command. Space character is used to + * split the command into arguments. You can use single or double quote characters to specify + * arguments inside your command. * - *

Note that this method returns immediately and does not wait the execution to complete. You must use an - * {@link ExecuteCallback} if you want to be notified about the result. + *

Note that this method returns immediately and does not wait the execution to complete. + * You must use an {@link FFmpegSessionCompleteCallback} if you want to be notified about the + * result. * * @param command FFmpeg command - * @param executeCallback callback that will be called when the execution is completed + * @param completeCallback callback that will be called when the execution has completed * @param logCallback callback that will receive logs * @param statisticsCallback callback that will receive statistics * @return FFmpeg session created for this execution */ public static FFmpegSession executeAsync(final String command, - final ExecuteCallback executeCallback, + final FFmpegSessionCompleteCallback completeCallback, final LogCallback logCallback, final StatisticsCallback statisticsCallback) { - return executeWithArgumentsAsync(FFmpegKitConfig.parseArguments(command), executeCallback, logCallback, statisticsCallback); + return executeWithArgumentsAsync(FFmpegKitConfig.parseArguments(command), completeCallback, logCallback, statisticsCallback); } /** - *

Starts an asynchronous FFmpeg execution for the given command. Space character is used to split the command - * into arguments. You can use single or double quote characters to specify arguments inside your command. + *

Starts an asynchronous FFmpeg execution for the given command. Space character is used to + * split the command into arguments. You can use single or double quote characters to specify + * arguments inside your command. * - *

Note that this method returns immediately and does not wait the execution to complete. You must use an - * {@link ExecuteCallback} if you want to be notified about the result. + *

Note that this method returns immediately and does not wait the execution to complete. + * You must use an {@link FFmpegSessionCompleteCallback} if you want to be notified about the + * result. * - * @param command FFmpeg command - * @param executeCallback callback that will be called when the execution is completed - * @param executorService executor service that will be used to run this asynchronous operation + * @param command FFmpeg command + * @param completeCallback callback that will be called when the execution has completed + * @param executorService executor service that will be used to run this asynchronous operation * @return FFmpeg session created for this execution */ public static FFmpegSession executeAsync(final String command, - final ExecuteCallback executeCallback, + final FFmpegSessionCompleteCallback completeCallback, final ExecutorService executorService) { - final FFmpegSession session = new FFmpegSession(FFmpegKitConfig.parseArguments(command), executeCallback); + final FFmpegSession session = new FFmpegSession(FFmpegKitConfig.parseArguments(command), completeCallback); FFmpegKitConfig.asyncFFmpegExecute(session, executorService); @@ -221,25 +232,27 @@ public class FFmpegKit { } /** - *

Starts an asynchronous FFmpeg execution for the given command. Space character is used to split the command - * into arguments. You can use single or double quote characters to specify arguments inside your command. + *

Starts an asynchronous FFmpeg execution for the given command. Space character is used to + * split the command into arguments. You can use single or double quote characters to specify + * arguments inside your command. * - *

Note that this method returns immediately and does not wait the execution to complete. You must use an - * {@link ExecuteCallback} if you want to be notified about the result. + *

Note that this method returns immediately and does not wait the execution to complete. + * You must use an {@link FFmpegSessionCompleteCallback} if you want to be notified about the + * result. * * @param command FFmpeg command - * @param executeCallback callback that will be called when the execution is completed + * @param completeCallback callback that will be called when the execution has completed * @param logCallback callback that will receive logs * @param statisticsCallback callback that will receive statistics * @param executorService executor service that will be used to run this asynchronous operation * @return FFmpeg session created for this execution */ public static FFmpegSession executeAsync(final String command, - final ExecuteCallback executeCallback, + final FFmpegSessionCompleteCallback completeCallback, final LogCallback logCallback, final StatisticsCallback statisticsCallback, final ExecutorService executorService) { - final FFmpegSession session = new FFmpegSession(FFmpegKitConfig.parseArguments(command), executeCallback, logCallback, statisticsCallback); + final FFmpegSession session = new FFmpegSession(FFmpegKitConfig.parseArguments(command), completeCallback, logCallback, statisticsCallback); FFmpegKitConfig.asyncFFmpegExecute(session, executorService); @@ -249,7 +262,7 @@ public class FFmpegKit { /** *

Cancels all running sessions. * - *

This function does not wait for termination to complete and returns immediately. + *

This method does not wait for termination to complete and returns immediately. */ public static void cancel() { @@ -264,7 +277,7 @@ public class FFmpegKit { /** *

Cancels the session specified with sessionId. * - *

This function does not wait for termination to complete and returns immediately. + *

This method does not wait for termination to complete and returns immediately. * * @param sessionId id of the session that will be cancelled */ diff --git a/android/ffmpeg-kit-android-lib/src/main/java/com/arthenica/ffmpegkit/FFmpegKitConfig.java b/android/ffmpeg-kit-android-lib/src/main/java/com/arthenica/ffmpegkit/FFmpegKitConfig.java index 8fcb438..16b8829 100644 --- a/android/ffmpeg-kit-android-lib/src/main/java/com/arthenica/ffmpegkit/FFmpegKitConfig.java +++ b/android/ffmpeg-kit-android-lib/src/main/java/com/arthenica/ffmpegkit/FFmpegKitConfig.java @@ -120,9 +120,11 @@ public class FFmpegKitConfig { private static ExecutorService asyncExecutorService; /* Global callbacks */ - private static LogCallback globalLogCallbackFunction; - private static StatisticsCallback globalStatisticsCallbackFunction; - private static ExecuteCallback globalExecuteCallbackFunction; + private static LogCallback globalLogCallback; + private static StatisticsCallback globalStatisticsCallback; + private static FFmpegSessionCompleteCallback globalFFmpegSessionCompleteCallback; + private static FFprobeSessionCompleteCallback globalFFprobeSessionCompleteCallback; + private static MediaInformationSessionCompleteCallback globalMediaInformationSessionCompleteCallback; private static final SparseArray safIdMap; private static final SparseArray safFileDescriptorMap; private static LogRedirectionStrategy globalLogRedirectionStrategy; @@ -163,9 +165,11 @@ public class FFmpegKitConfig { sessionHistoryList = new LinkedList<>(); sessionHistoryLock = new Object(); - globalLogCallbackFunction = null; - globalStatisticsCallbackFunction = null; - globalExecuteCallbackFunction = null; + globalLogCallback = null; + globalStatisticsCallback = null; + globalFFmpegSessionCompleteCallback = null; + globalFFprobeSessionCompleteCallback = null; + globalMediaInformationSessionCompleteCallback = null; safIdMap = new SparseArray<>(); safFileDescriptorMap = new SparseArray<>(); @@ -239,12 +243,12 @@ public class FFmpegKitConfig { // NOTIFY SESSION CALLBACK DEFINED session.getLogCallback().apply(log); } catch (final Exception e) { - android.util.Log.e(FFmpegKitConfig.TAG, String.format("Exception thrown inside session LogCallback block.%s", Exceptions.getStackTraceString(e))); + android.util.Log.e(FFmpegKitConfig.TAG, String.format("Exception thrown inside session log callback.%s", Exceptions.getStackTraceString(e))); } } } - final LogCallback globalLogCallbackFunction = FFmpegKitConfig.globalLogCallbackFunction; + final LogCallback globalLogCallbackFunction = FFmpegKitConfig.globalLogCallback; if (globalLogCallbackFunction != null) { globalCallbackDefined = true; @@ -252,7 +256,7 @@ public class FFmpegKitConfig { // NOTIFY GLOBAL CALLBACK DEFINED globalLogCallbackFunction.apply(log); } catch (final Exception e) { - android.util.Log.e(FFmpegKitConfig.TAG, String.format("Exception thrown inside global LogCallback block.%s", Exceptions.getStackTraceString(e))); + android.util.Log.e(FFmpegKitConfig.TAG, String.format("Exception thrown inside global log callback.%s", Exceptions.getStackTraceString(e))); } } @@ -345,18 +349,18 @@ public class FFmpegKitConfig { // NOTIFY SESSION CALLBACK IF DEFINED ffmpegSession.getStatisticsCallback().apply(statistics); } catch (final Exception e) { - android.util.Log.e(FFmpegKitConfig.TAG, String.format("Exception thrown inside session StatisticsCallback block.%s", Exceptions.getStackTraceString(e))); + android.util.Log.e(FFmpegKitConfig.TAG, String.format("Exception thrown inside session statistics callback.%s", Exceptions.getStackTraceString(e))); } } } - final StatisticsCallback globalStatisticsCallbackFunction = FFmpegKitConfig.globalStatisticsCallbackFunction; + final StatisticsCallback globalStatisticsCallbackFunction = FFmpegKitConfig.globalStatisticsCallback; if (globalStatisticsCallbackFunction != null) { try { // NOTIFY GLOBAL CALLBACK IF DEFINED globalStatisticsCallbackFunction.apply(statistics); } catch (final Exception e) { - android.util.Log.e(FFmpegKitConfig.TAG, String.format("Exception thrown inside global StatisticsCallback block.%s", Exceptions.getStackTraceString(e))); + android.util.Log.e(FFmpegKitConfig.TAG, String.format("Exception thrown inside global statistics callback.%s", Exceptions.getStackTraceString(e))); } } } @@ -704,8 +708,9 @@ public class FFmpegKitConfig { /** *

Starts an asynchronous FFmpeg execution for the given session. * - *

Note that this method returns immediately and does not wait the execution to complete. You must use an - * {@link ExecuteCallback} if you want to be notified about the result. + *

Note that this method returns immediately and does not wait the execution to complete. + * You must use an {@link FFmpegSessionCompleteCallback} if you want to be notified about the + * result. * * @param ffmpegSession FFmpeg session which includes command options/arguments */ @@ -718,8 +723,9 @@ public class FFmpegKitConfig { /** *

Starts an asynchronous FFmpeg execution for the given session. * - *

Note that this method returns immediately and does not wait the execution to complete. You must use an - * {@link ExecuteCallback} if you want to be notified about the result. + *

Note that this method returns immediately and does not wait the execution to complete. + * You must use an {@link FFmpegSessionCompleteCallback} if you want to be notified about the + * result. * * @param ffmpegSession FFmpeg session which includes command options/arguments * @param executorService executor service that will be used to run this asynchronous operation @@ -733,8 +739,9 @@ public class FFmpegKitConfig { /** *

Starts an asynchronous FFprobe execution for the given session. * - *

Note that this method returns immediately and does not wait the execution to complete. You must use an - * {@link ExecuteCallback} if you want to be notified about the result. + *

Note that this method returns immediately and does not wait the execution to complete. + * You must use an {@link FFprobeSessionCompleteCallback} if you want to be notified about the + * result. * * @param ffprobeSession FFprobe session which includes command options/arguments */ @@ -747,8 +754,9 @@ public class FFmpegKitConfig { /** *

Starts an asynchronous FFprobe execution for the given session. * - *

Note that this method returns immediately and does not wait the execution to complete. You must use an - * {@link ExecuteCallback} if you want to be notified about the result. + *

Note that this method returns immediately and does not wait the execution to complete. + * You must use an {@link FFprobeSessionCompleteCallback} if you want to be notified about the + * result. * * @param ffprobeSession FFprobe session which includes command options/arguments * @param executorService executor service that will be used to run this asynchronous operation @@ -762,10 +770,12 @@ public class FFmpegKitConfig { /** *

Starts an asynchronous FFprobe execution for the given media information session. * - *

Note that this method returns immediately and does not wait the execution to complete. You must use an - * {@link ExecuteCallback} if you want to be notified about the result. + *

Note that this method returns immediately and does not wait the execution to complete. + * You must use a {@link MediaInformationSessionCompleteCallback} if you want to be notified + * about the result. * - * @param mediaInformationSession media information session which includes command options/arguments + * @param mediaInformationSession media information session which includes command + * options/arguments * @param waitTimeout max time to wait until media information is transmitted */ public static void asyncGetMediaInformationExecute(final MediaInformationSession mediaInformationSession, final int waitTimeout) { @@ -777,11 +787,14 @@ public class FFmpegKitConfig { /** *

Starts an asynchronous FFprobe execution for the given media information session. * - *

Note that this method returns immediately and does not wait the execution to complete. You must use an - * {@link ExecuteCallback} if you want to be notified about the result. + *

Note that this method returns immediately and does not wait the execution to complete. + * You must use a {@link MediaInformationSessionCompleteCallback} if you want to be notified + * about the result. * - * @param mediaInformationSession media information session which includes command options/arguments - * @param executorService executor service that will be used to run this asynchronous operation + * @param mediaInformationSession media information session which includes command + * options/arguments + * @param executorService executor service that will be used to run this asynchronous + * operation * @param waitTimeout max time to wait until media information is transmitted */ public static void asyncGetMediaInformationExecute(final MediaInformationSession mediaInformationSession, final ExecutorService executorService, final int waitTimeout) { @@ -822,42 +835,82 @@ public class FFmpegKitConfig { } /** - *

Sets a global callback function to redirect FFmpeg/FFprobe logs. + *

Sets a global callback to redirect FFmpeg/FFprobe logs. * - * @param logCallback log callback function or null to disable a previously defined - * callback + * @param logCallback log callback or null to disable a previously defined callback */ public static void enableLogCallback(final LogCallback logCallback) { - globalLogCallbackFunction = logCallback; + globalLogCallback = logCallback; } /** - *

Sets a global callback function to redirect FFmpeg statistics. + *

Sets a global callback to redirect FFmpeg statistics. * - * @param statisticsCallback statistics callback function or null to disable a previously + * @param statisticsCallback statistics callback or null to disable a previously * defined callback */ public static void enableStatisticsCallback(final StatisticsCallback statisticsCallback) { - globalStatisticsCallbackFunction = statisticsCallback; + globalStatisticsCallback = statisticsCallback; + } + + /** + *

Sets a global FFmpegSessionCompleteCallback to receive execution results for FFmpeg + * sessions. + * + * @param ffmpegSessionCompleteCallback complete callback or null to disable a + * previously defined callback + */ + public static void enableFFmpegSessionCompleteCallback(final FFmpegSessionCompleteCallback ffmpegSessionCompleteCallback) { + globalFFmpegSessionCompleteCallback = ffmpegSessionCompleteCallback; + } + + /** + *

Returns the global FFmpegSessionCompleteCallback set. + * + * @return global FFmpegSessionCompleteCallback or null if it is not set + */ + public static FFmpegSessionCompleteCallback getFFmpegSessionCompleteCallback() { + return globalFFmpegSessionCompleteCallback; } /** - *

Sets a global callback function to receive execution results. + *

Sets a global FFprobeSessionCompleteCallback to receive execution results for FFprobe + * sessions. * - * @param executeCallback execute callback function or null to disable a previously - * defined callback + * @param ffprobeSessionCompleteCallback complete callback or null to disable a + * previously defined callback */ - public static void enableExecuteCallback(final ExecuteCallback executeCallback) { - globalExecuteCallbackFunction = executeCallback; + public static void enableFFprobeSessionCompleteCallback(final FFprobeSessionCompleteCallback ffprobeSessionCompleteCallback) { + globalFFprobeSessionCompleteCallback = ffprobeSessionCompleteCallback; } /** - *

Returns the global execute callback function. + *

Returns the global FFprobeSessionCompleteCallback set. * - * @return global execute callback function + * @return global FFprobeSessionCompleteCallback or null if it is not set */ - static ExecuteCallback getExecuteCallback() { - return globalExecuteCallbackFunction; + public static FFprobeSessionCompleteCallback getFFprobeSessionCompleteCallback() { + return globalFFprobeSessionCompleteCallback; + } + + /** + *

Sets a global MediaInformationSessionCompleteCallback to receive execution results for + * MediaInformation sessions. + * + * @param mediaInformationSessionCompleteCallback complete callback or null to disable + * a previously defined callback + */ + public static void enableMediaInformationSessionCompleteCallback(final MediaInformationSessionCompleteCallback mediaInformationSessionCompleteCallback) { + globalMediaInformationSessionCompleteCallback = mediaInformationSessionCompleteCallback; + } + + /** + *

Returns the global MediaInformationSessionCompleteCallback set. + * + * @return global MediaInformationSessionCompleteCallback or null if it is not set + */ + public static MediaInformationSessionCompleteCallback getMediaInformationSessionCompleteCallback() { + return globalMediaInformationSessionCompleteCallback; } /** @@ -1135,7 +1188,7 @@ public class FFmpegKitConfig { * * @return all FFmpeg sessions in the session history */ - static List getFFmpegSessions() { + public static List getFFmpegSessions() { final LinkedList list = new LinkedList<>(); synchronized (sessionHistoryLock) { @@ -1154,7 +1207,7 @@ public class FFmpegKitConfig { * * @return all FFprobe sessions in the session history */ - static List getFFprobeSessions() { + public static List getFFprobeSessions() { final LinkedList list = new LinkedList<>(); synchronized (sessionHistoryLock) { @@ -1168,6 +1221,25 @@ public class FFmpegKitConfig { return list; } + /** + *

Returns all MediaInformation sessions in the session history. + * + * @return all MediaInformation sessions in the session history + */ + public static List getMediaInformationSessions() { + final LinkedList list = new LinkedList<>(); + + synchronized (sessionHistoryLock) { + for (Session session : sessionHistoryList) { + if (session.isMediaInformation()) { + list.add((MediaInformationSession) session); + } + } + } + + return list; + } + /** *

Returns sessions that have the given state. * @@ -1357,7 +1429,7 @@ public class FFmpegKitConfig { native static int nativeFFprobeExecute(final long sessionId, final String[] arguments); /** - *

Cancels an ongoing FFmpeg operation natively. This function does not wait for termination + *

Cancels an ongoing FFmpeg operation natively. This method does not wait for termination * to complete and returns immediately. * * @param sessionId id of the session diff --git a/android/ffmpeg-kit-android-lib/src/main/java/com/arthenica/ffmpegkit/FFmpegSession.java b/android/ffmpeg-kit-android-lib/src/main/java/com/arthenica/ffmpegkit/FFmpegSession.java index 2a897fe..ca7d105 100644 --- a/android/ffmpeg-kit-android-lib/src/main/java/com/arthenica/ffmpegkit/FFmpegSession.java +++ b/android/ffmpeg-kit-android-lib/src/main/java/com/arthenica/ffmpegkit/FFmpegSession.java @@ -28,10 +28,15 @@ import java.util.List; public class FFmpegSession extends AbstractSession implements Session { /** - * Session specific statistics callback function. + * Session specific statistics callback. */ private final StatisticsCallback statisticsCallback; + /** + * Session specific complete callback. + */ + private final FFmpegSessionCompleteCallback completeCallback; + /** * Statistics entries received for this session. */ @@ -54,44 +59,45 @@ public class FFmpegSession extends AbstractSession implements Session { /** * Builds a new FFmpeg session. * - * @param arguments command arguments - * @param executeCallback session specific execute callback function + * @param arguments command arguments + * @param completeCallback session specific complete callback */ - public FFmpegSession(final String[] arguments, final ExecuteCallback executeCallback) { - this(arguments, executeCallback, null, null); + public FFmpegSession(final String[] arguments, final FFmpegSessionCompleteCallback completeCallback) { + this(arguments, completeCallback, null, null); } /** * Builds a new FFmpeg session. * * @param arguments command arguments - * @param executeCallback session specific execute callback function - * @param logCallback session specific log callback function - * @param statisticsCallback session specific statistics callback function + * @param completeCallback session specific complete callback + * @param logCallback session specific log callback + * @param statisticsCallback session specific statistics callback */ public FFmpegSession(final String[] arguments, - final ExecuteCallback executeCallback, + final FFmpegSessionCompleteCallback completeCallback, final LogCallback logCallback, final StatisticsCallback statisticsCallback) { - this(arguments, executeCallback, logCallback, statisticsCallback, FFmpegKitConfig.getLogRedirectionStrategy()); + this(arguments, completeCallback, logCallback, statisticsCallback, FFmpegKitConfig.getLogRedirectionStrategy()); } /** * Builds a new FFmpeg session. * * @param arguments command arguments - * @param executeCallback session specific execute callback function - * @param logCallback session specific log callback function - * @param statisticsCallback session specific statistics callback function + * @param completeCallback session specific complete callback + * @param logCallback session specific log callback + * @param statisticsCallback session specific statistics callback * @param logRedirectionStrategy session specific log redirection strategy */ public FFmpegSession(final String[] arguments, - final ExecuteCallback executeCallback, + final FFmpegSessionCompleteCallback completeCallback, final LogCallback logCallback, final StatisticsCallback statisticsCallback, final LogRedirectionStrategy logRedirectionStrategy) { - super(arguments, executeCallback, logCallback, logRedirectionStrategy); + super(arguments, logCallback, logRedirectionStrategy); + this.completeCallback = completeCallback; this.statisticsCallback = statisticsCallback; this.statistics = new LinkedList<>(); @@ -99,14 +105,23 @@ public class FFmpegSession extends AbstractSession implements Session { } /** - * Returns the session specific statistics callback function. + * Returns the session specific statistics callback. * - * @return session specific statistics callback function + * @return session specific statistics callback */ public StatisticsCallback getStatisticsCallback() { return statisticsCallback; } + /** + * Returns the session specific complete callback. + * + * @return session specific complete callback + */ + public FFmpegSessionCompleteCallback getCompleteCallback() { + return completeCallback; + } + /** * Returns all statistics entries generated for this session. If there are asynchronous * messages that are not delivered yet, this method waits for them until the given timeout. @@ -165,10 +180,8 @@ public class FFmpegSession extends AbstractSession implements Session { } /** - * Adds a new statistics entry for this session. - * - * It is invoked internally by FFmpegKit library methods. Must not be used by user - * applications. + * Adds a new statistics entry for this session. It is invoked internally by + * FFmpegKit library methods. Must not be used by user applications. * * @param statistics statistics entry */ @@ -188,6 +201,11 @@ public class FFmpegSession extends AbstractSession implements Session { return false; } + @Override + public boolean isMediaInformation() { + return false; + } + @Override public String toString() { final StringBuilder stringBuilder = new StringBuilder(); diff --git a/android/ffmpeg-kit-android-lib/src/main/java/com/arthenica/ffmpegkit/FFmpegSessionCompleteCallback.java b/android/ffmpeg-kit-android-lib/src/main/java/com/arthenica/ffmpegkit/FFmpegSessionCompleteCallback.java new file mode 100644 index 0000000..98dd9de --- /dev/null +++ b/android/ffmpeg-kit-android-lib/src/main/java/com/arthenica/ffmpegkit/FFmpegSessionCompleteCallback.java @@ -0,0 +1,35 @@ +/* + * Copyright (c) 2018-2021 Taner Sener + * + * This file is part of FFmpegKit. + * + * FFmpegKit is free software: you can redistribute it and/or modify + * it under the terms of the GNU Lesser General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * FFmpegKit is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public License + * along with FFmpegKit. If not, see . + */ + +package com.arthenica.ffmpegkit; + +/** + *

Callback function that is invoked when an asynchronous FFmpeg session has ended. + */ +@FunctionalInterface +public interface FFmpegSessionCompleteCallback { + + /** + *

Called when an FFmpeg session has ended. + * + * @param session FFmpeg session + */ + void apply(final FFmpegSession session); + +} diff --git a/android/ffmpeg-kit-android-lib/src/main/java/com/arthenica/ffmpegkit/FFprobeKit.java b/android/ffmpeg-kit-android-lib/src/main/java/com/arthenica/ffmpegkit/FFprobeKit.java index 48cf946..d64c0d5 100644 --- a/android/ffmpeg-kit-android-lib/src/main/java/com/arthenica/ffmpegkit/FFprobeKit.java +++ b/android/ffmpeg-kit-android-lib/src/main/java/com/arthenica/ffmpegkit/FFprobeKit.java @@ -23,16 +23,16 @@ import java.util.List; import java.util.concurrent.ExecutorService; /** - *

Main class to run FFprobe commands. Supports executing commands both synchronously and - * asynchronously. + *

Main class to run FFprobe commands. Supports executing commands both + * synchronously and asynchronously. *

  * FFprobeSession session = FFprobeKit.execute("-hide_banner -v error -show_entries format=size -of default=noprint_wrappers=1 file1.mp4");
  *
- * FFprobeSession asyncSession = FFprobeKit.executeAsync("-hide_banner -v error -show_entries format=size -of default=noprint_wrappers=1 file1.mp4", executeCallback);
+ * FFprobeSession asyncSession = FFprobeKit.executeAsync("-hide_banner -v error -show_entries format=size -of default=noprint_wrappers=1 file1.mp4", completeCallback);
  * 
*

Provides overloaded execute methods to define session specific callbacks. *

- * FFprobeSession session = FFprobeKit.executeAsync("-hide_banner -v error -show_entries format=size -of default=noprint_wrappers=1 file1.mp4", executeCallback, logCallback);
+ * FFprobeSession session = FFprobeKit.executeAsync("-hide_banner -v error -show_entries format=size -of default=noprint_wrappers=1 file1.mp4", completeCallback, logCallback);
  * 
*

It can extract media information for a file or a url, using {@link #getMediaInformation(String)} method. *

@@ -79,16 +79,17 @@ public class FFprobeKit {
     /**
      * 

Starts an asynchronous FFprobe execution with arguments provided. * - *

Note that this method returns immediately and does not wait the execution to complete. You must use an - * {@link ExecuteCallback} if you want to be notified about the result. + *

Note that this method returns immediately and does not wait the execution to complete. + * You must use an {@link FFprobeSessionCompleteCallback} if you want to be notified about the + * result. * - * @param arguments FFprobe command options/arguments as string array - * @param executeCallback callback that will be called when the execution is completed + * @param arguments FFprobe command options/arguments as string array + * @param completeCallback callback that will be called when the execution has completed * @return FFprobe session created for this execution */ public static FFprobeSession executeWithArgumentsAsync(final String[] arguments, - final ExecuteCallback executeCallback) { - final FFprobeSession session = new FFprobeSession(arguments, executeCallback); + final FFprobeSessionCompleteCallback completeCallback) { + final FFprobeSession session = new FFprobeSession(arguments, completeCallback); FFmpegKitConfig.asyncFFprobeExecute(session); @@ -98,18 +99,19 @@ public class FFprobeKit { /** *

Starts an asynchronous FFprobe execution with arguments provided. * - *

Note that this method returns immediately and does not wait the execution to complete. You must use an - * {@link ExecuteCallback} if you want to be notified about the result. + *

Note that this method returns immediately and does not wait the execution to complete. + * You must use an {@link FFprobeSessionCompleteCallback} if you want to be notified about the + * result. * - * @param arguments FFprobe command options/arguments as string array - * @param executeCallback callback that will be notified when execution is completed - * @param logCallback callback that will receive logs + * @param arguments FFprobe command options/arguments as string array + * @param completeCallback callback that will be notified when execution has completed + * @param logCallback callback that will receive logs * @return FFprobe session created for this execution */ public static FFprobeSession executeWithArgumentsAsync(final String[] arguments, - final ExecuteCallback executeCallback, + final FFprobeSessionCompleteCallback completeCallback, final LogCallback logCallback) { - final FFprobeSession session = new FFprobeSession(arguments, executeCallback, logCallback); + final FFprobeSession session = new FFprobeSession(arguments, completeCallback, logCallback); FFmpegKitConfig.asyncFFprobeExecute(session); @@ -119,18 +121,19 @@ public class FFprobeKit { /** *

Starts an asynchronous FFprobe execution with arguments provided. * - *

Note that this method returns immediately and does not wait the execution to complete. You must use an - * {@link ExecuteCallback} if you want to be notified about the result. + *

Note that this method returns immediately and does not wait the execution to complete. + * You must use an {@link FFprobeSessionCompleteCallback} if you want to be notified about the + * result. * - * @param arguments FFprobe command options/arguments as string array - * @param executeCallback callback that will be called when the execution is completed - * @param executorService executor service that will be used to run this asynchronous operation + * @param arguments FFprobe command options/arguments as string array + * @param completeCallback callback that will be called when the execution has completed + * @param executorService executor service that will be used to run this asynchronous operation * @return FFprobe session created for this execution */ public static FFprobeSession executeWithArgumentsAsync(final String[] arguments, - final ExecuteCallback executeCallback, + final FFprobeSessionCompleteCallback completeCallback, final ExecutorService executorService) { - final FFprobeSession session = new FFprobeSession(arguments, executeCallback); + final FFprobeSession session = new FFprobeSession(arguments, completeCallback); FFmpegKitConfig.asyncFFprobeExecute(session, executorService); @@ -140,20 +143,21 @@ public class FFprobeKit { /** *

Starts an asynchronous FFprobe execution with arguments provided. * - *

Note that this method returns immediately and does not wait the execution to complete. You must use an - * {@link ExecuteCallback} if you want to be notified about the result. + *

Note that this method returns immediately and does not wait the execution to complete. + * You must use an {@link FFprobeSessionCompleteCallback} if you want to be notified about the + * result. * - * @param arguments FFprobe command options/arguments as string array - * @param executeCallback callback that will be notified when execution is completed - * @param logCallback callback that will receive logs - * @param executorService executor service that will be used to run this asynchronous operation + * @param arguments FFprobe command options/arguments as string array + * @param completeCallback callback that will be notified when execution has completed + * @param logCallback callback that will receive logs + * @param executorService executor service that will be used to run this asynchronous operation * @return FFprobe session created for this execution */ public static FFprobeSession executeWithArgumentsAsync(final String[] arguments, - final ExecuteCallback executeCallback, + final FFprobeSessionCompleteCallback completeCallback, final LogCallback logCallback, final ExecutorService executorService) { - final FFprobeSession session = new FFprobeSession(arguments, executeCallback, logCallback); + final FFprobeSession session = new FFprobeSession(arguments, completeCallback, logCallback); FFmpegKitConfig.asyncFFprobeExecute(session, executorService); @@ -173,55 +177,61 @@ public class FFprobeKit { } /** - *

Starts an asynchronous FFprobe execution for the given command. Space character is used to split the command - * into arguments. You can use single or double quote characters to specify arguments inside your command. + *

Starts an asynchronous FFprobe execution for the given command. Space character is used + * to split the command into arguments. You can use single or double quote characters to + * specify arguments inside your command. * - *

Note that this method returns immediately and does not wait the execution to complete. You must use an - * {@link ExecuteCallback} if you want to be notified about the result. + *

Note that this method returns immediately and does not wait the execution to complete. + * You must use an {@link FFprobeSessionCompleteCallback} if you want to be notified about the + * result. * - * @param command FFprobe command - * @param executeCallback callback that will be called when the execution is completed + * @param command FFprobe command + * @param completeCallback callback that will be called when the execution has completed * @return FFprobe session created for this execution */ public static FFprobeSession executeAsync(final String command, - final ExecuteCallback executeCallback) { - return executeWithArgumentsAsync(FFmpegKitConfig.parseArguments(command), executeCallback); + final FFprobeSessionCompleteCallback completeCallback) { + return executeWithArgumentsAsync(FFmpegKitConfig.parseArguments(command), completeCallback); } /** - *

Starts an asynchronous FFprobe execution for the given command. Space character is used to split the command - * into arguments. You can use single or double quote characters to specify arguments inside your command. + *

Starts an asynchronous FFprobe execution for the given command. Space character is used + * to split the command into arguments. You can use single or double quote characters to + * specify arguments inside your command. * - *

Note that this method returns immediately and does not wait the execution to complete. You must use an - * {@link ExecuteCallback} if you want to be notified about the result. + *

Note that this method returns immediately and does not wait the execution to complete. + * You must use an {@link FFprobeSessionCompleteCallback} if you want to be notified about the + * result. * - * @param command FFprobe command - * @param executeCallback callback that will be notified when execution is completed - * @param logCallback callback that will receive logs + * @param command FFprobe command + * @param completeCallback callback that will be notified when execution has completed + * @param logCallback callback that will receive logs * @return FFprobe session created for this execution */ public static FFprobeSession executeAsync(final String command, - final ExecuteCallback executeCallback, + final FFprobeSessionCompleteCallback completeCallback, final LogCallback logCallback) { - return executeWithArgumentsAsync(FFmpegKitConfig.parseArguments(command), executeCallback, logCallback); + return executeWithArgumentsAsync(FFmpegKitConfig.parseArguments(command), completeCallback, logCallback); } /** - *

Starts an asynchronous FFprobe execution for the given command. Space character is used to split the command - * into arguments. You can use single or double quote characters to specify arguments inside your command. + *

Starts an asynchronous FFprobe execution for the given command. Space character is used + * to split the command into arguments. You can use single or double quote characters to + * specify arguments inside your command. * - *

Note that this method returns immediately and does not wait the execution to complete. You must use an - * {@link ExecuteCallback} if you want to be notified about the result. + *

Note that this method returns immediately and does not wait the execution to complete. + * You must use an {@link FFprobeSessionCompleteCallback} if you want to be notified about the + * result. * - * @param command FFprobe command - * @param executeCallback callback that will be called when the execution is completed - * @param executorService executor service that will be used to run this asynchronous operation + * @param command FFprobe command + * @param completeCallback callback that will be called when the execution has completed + * @param executorService executor service that will be used to run this asynchronous operation * @return FFprobe session created for this execution */ public static FFprobeSession executeAsync(final String command, - final ExecuteCallback executeCallback, + final FFprobeSessionCompleteCallback completeCallback, final ExecutorService executorService) { - final FFprobeSession session = new FFprobeSession(FFmpegKitConfig.parseArguments(command), executeCallback); + final FFprobeSession session = new FFprobeSession(FFmpegKitConfig.parseArguments(command), completeCallback); FFmpegKitConfig.asyncFFprobeExecute(session, executorService); @@ -229,23 +239,25 @@ public class FFprobeKit { } /** - *

Starts an asynchronous FFprobe execution for the given command. Space character is used to split the command - * into arguments. You can use single or double quote characters to specify arguments inside your command. - * - *

Note that this method returns immediately and does not wait the execution to complete. You must use an - * {@link ExecuteCallback} if you want to be notified about the result. - * - * @param command FFprobe command - * @param executeCallback callback that will be called when the execution is completed - * @param logCallback callback that will receive logs - * @param executorService executor service that will be used to run this asynchronous operation + *

Starts an asynchronous FFprobe execution for the given command. Space character is used + * to split the command into arguments. You can use single or double quote characters to + * specify arguments inside your command. + * + *

Note that this method returns immediately and does not wait the execution to complete. + * You must use an {@link FFprobeSessionCompleteCallback} if you want to be notified about the + * result. + * + * @param command FFprobe command + * @param completeCallback callback that will be called when the execution has completed + * @param logCallback callback that will receive logs + * @param executorService executor service that will be used to run this asynchronous operation * @return FFprobe session created for this execution */ public static FFprobeSession executeAsync(final String command, - final ExecuteCallback executeCallback, + final FFprobeSessionCompleteCallback completeCallback, final LogCallback logCallback, final ExecutorService executorService) { - final FFprobeSession session = new FFprobeSession(FFmpegKitConfig.parseArguments(command), executeCallback, logCallback); + final FFprobeSession session = new FFprobeSession(FFmpegKitConfig.parseArguments(command), completeCallback, logCallback); FFmpegKitConfig.asyncFFprobeExecute(session, executorService); @@ -283,18 +295,20 @@ public class FFprobeKit { } /** - *

Starts an asynchronous FFprobe execution to extract the media information for the specified file. + *

Starts an asynchronous FFprobe execution to extract the media information for the + * specified file. * - *

Note that this method returns immediately and does not wait the execution to complete. You must use an - * {@link ExecuteCallback} if you want to be notified about the result. + *

Note that this method returns immediately and does not wait the execution to complete. + * You must use a {@link MediaInformationSessionCompleteCallback} if you want to be notified + * about the result. * - * @param path path or uri of a media file - * @param executeCallback callback that will be called when the execution is completed + * @param path path or uri of a media file + * @param completeCallback callback that will be called when the execution has completed * @return media information session created for this execution */ public static MediaInformationSession getMediaInformationAsync(final String path, - final ExecuteCallback executeCallback) { - final MediaInformationSession session = new MediaInformationSession(defaultGetMediaInformationCommandArguments(path), executeCallback); + final MediaInformationSessionCompleteCallback completeCallback) { + final MediaInformationSession session = new MediaInformationSession(defaultGetMediaInformationCommandArguments(path), completeCallback); FFmpegKitConfig.asyncGetMediaInformationExecute(session, AbstractSession.DEFAULT_TIMEOUT_FOR_ASYNCHRONOUS_MESSAGES_IN_TRANSMIT); @@ -302,22 +316,24 @@ public class FFprobeKit { } /** - *

Starts an asynchronous FFprobe execution to extract the media information for the specified file. + *

Starts an asynchronous FFprobe execution to extract the media information for the + * specified file. * - *

Note that this method returns immediately and does not wait the execution to complete. You must use an - * {@link ExecuteCallback} if you want to be notified about the result. + *

Note that this method returns immediately and does not wait the execution to complete. + * You must use a {@link MediaInformationSessionCompleteCallback} if you want to be notified + * about the result. * - * @param path path or uri of a media file - * @param executeCallback callback that will be notified when execution is completed - * @param logCallback callback that will receive logs - * @param waitTimeout max time to wait until media information is transmitted + * @param path path or uri of a media file + * @param completeCallback callback that will be notified when execution has completed + * @param logCallback callback that will receive logs + * @param waitTimeout max time to wait until media information is transmitted * @return media information session created for this execution */ public static MediaInformationSession getMediaInformationAsync(final String path, - final ExecuteCallback executeCallback, + final MediaInformationSessionCompleteCallback completeCallback, final LogCallback logCallback, final int waitTimeout) { - final MediaInformationSession session = new MediaInformationSession(defaultGetMediaInformationCommandArguments(path), executeCallback, logCallback); + final MediaInformationSession session = new MediaInformationSession(defaultGetMediaInformationCommandArguments(path), completeCallback, logCallback); FFmpegKitConfig.asyncGetMediaInformationExecute(session, waitTimeout); @@ -325,20 +341,22 @@ public class FFprobeKit { } /** - *

Starts an asynchronous FFprobe execution to extract the media information for the specified file. + *

Starts an asynchronous FFprobe execution to extract the media information for the + * specified file. * - *

Note that this method returns immediately and does not wait the execution to complete. You must use an - * {@link ExecuteCallback} if you want to be notified about the result. + *

Note that this method returns immediately and does not wait the execution to complete. + * You must use a {@link MediaInformationSessionCompleteCallback} if you want to be notified + * about the result. * - * @param path path or uri of a media file - * @param executeCallback callback that will be called when the execution is completed - * @param executorService executor service that will be used to run this asynchronous operation + * @param path path or uri of a media file + * @param completeCallback callback that will be called when the execution has completed + * @param executorService executor service that will be used to run this asynchronous operation * @return media information session created for this execution */ public static MediaInformationSession getMediaInformationAsync(final String path, - final ExecuteCallback executeCallback, + final MediaInformationSessionCompleteCallback completeCallback, final ExecutorService executorService) { - final MediaInformationSession session = new MediaInformationSession(defaultGetMediaInformationCommandArguments(path), executeCallback); + final MediaInformationSession session = new MediaInformationSession(defaultGetMediaInformationCommandArguments(path), completeCallback); FFmpegKitConfig.asyncGetMediaInformationExecute(session, executorService, AbstractSession.DEFAULT_TIMEOUT_FOR_ASYNCHRONOUS_MESSAGES_IN_TRANSMIT); @@ -346,24 +364,26 @@ public class FFprobeKit { } /** - *

Starts an asynchronous FFprobe execution to extract the media information for the specified file. - * - *

Note that this method returns immediately and does not wait the execution to complete. You must use an - * {@link ExecuteCallback} if you want to be notified about the result. - * - * @param path path or uri of a media file - * @param executeCallback callback that will be notified when execution is completed - * @param logCallback callback that will receive logs - * @param executorService executor service that will be used to run this asynchronous operation - * @param waitTimeout max time to wait until media information is transmitted + *

Starts an asynchronous FFprobe execution to extract the media information for the + * specified file. + * + *

Note that this method returns immediately and does not wait the execution to complete. + * You must use a {@link MediaInformationSessionCompleteCallback} if you want to be notified + * about the result. + * + * @param path path or uri of a media file + * @param completeCallback callback that will be notified when execution has completed + * @param logCallback callback that will receive logs + * @param executorService executor service that will be used to run this asynchronous operation + * @param waitTimeout max time to wait until media information is transmitted * @return media information session created for this execution */ public static MediaInformationSession getMediaInformationAsync(final String path, - final ExecuteCallback executeCallback, + final MediaInformationSessionCompleteCallback completeCallback, final LogCallback logCallback, final ExecutorService executorService, final int waitTimeout) { - final MediaInformationSession session = new MediaInformationSession(defaultGetMediaInformationCommandArguments(path), executeCallback, logCallback); + final MediaInformationSession session = new MediaInformationSession(defaultGetMediaInformationCommandArguments(path), completeCallback, logCallback); FFmpegKitConfig.asyncGetMediaInformationExecute(session, executorService, waitTimeout); @@ -385,44 +405,49 @@ public class FFprobeKit { } /** - *

Starts an asynchronous FFprobe execution to extract media information using a command. The command passed to - * this method must generate the output in JSON format in order to successfully extract media information from it. - * - *

Note that this method returns immediately and does not wait the execution to complete. You must use an - * {@link ExecuteCallback} if you want to be notified about the result. - * - * @param command FFprobe command that prints media information for a file in JSON format - * @param executeCallback callback that will be notified when execution is completed - * @param logCallback callback that will receive logs - * @param waitTimeout max time to wait until media information is transmitted + *

Starts an asynchronous FFprobe execution to extract media information using a command. + * The command passed to this method must generate the output in JSON format in order to + * successfully extract media information from it. + * + *

Note that this method returns immediately and does not wait the execution to complete. + * You must use a {@link MediaInformationSessionCompleteCallback} if you want to be notified + * about the result. + * + * @param command FFprobe command that prints media information for a file in JSON + * format + * @param completeCallback callback that will be notified when execution has completed + * @param logCallback callback that will receive logs + * @param waitTimeout max time to wait until media information is transmitted * @return media information session created for this execution */ public static MediaInformationSession getMediaInformationFromCommandAsync(final String command, - final ExecuteCallback executeCallback, + final MediaInformationSessionCompleteCallback completeCallback, final LogCallback logCallback, final int waitTimeout) { - return getMediaInformationFromCommandArgumentsAsync(FFmpegKitConfig.parseArguments(command), executeCallback, logCallback, waitTimeout); + return getMediaInformationFromCommandArgumentsAsync(FFmpegKitConfig.parseArguments(command), completeCallback, logCallback, waitTimeout); } /** - *

Starts an asynchronous FFprobe execution to extract media information using command arguments. The command - * passed to this method must generate the output in JSON format in order to successfully extract media information - * from it. - * - *

Note that this method returns immediately and does not wait the execution to complete. You must use an - * {@link ExecuteCallback} if you want to be notified about the result. - * - * @param arguments FFprobe command arguments that print media information for a file in JSON format - * @param executeCallback callback that will be notified when execution is completed - * @param logCallback callback that will receive logs - * @param waitTimeout max time to wait until media information is transmitted + *

Starts an asynchronous FFprobe execution to extract media information using command + * arguments. The command passed to this method must generate the output in JSON format in + * order to successfully extract media information from it. + * + *

Note that this method returns immediately and does not wait the execution to complete. + * You must use a {@link MediaInformationSessionCompleteCallback} if you want to be notified + * about the result. + * + * @param arguments FFprobe command arguments that print media information for a file in + * JSON format + * @param completeCallback callback that will be notified when execution has completed + * @param logCallback callback that will receive logs + * @param waitTimeout max time to wait until media information is transmitted * @return media information session created for this execution */ private static MediaInformationSession getMediaInformationFromCommandArgumentsAsync(final String[] arguments, - final ExecuteCallback executeCallback, + final MediaInformationSessionCompleteCallback completeCallback, final LogCallback logCallback, final int waitTimeout) { - final MediaInformationSession session = new MediaInformationSession(arguments, executeCallback, logCallback); + final MediaInformationSession session = new MediaInformationSession(arguments, completeCallback, logCallback); FFmpegKitConfig.asyncGetMediaInformationExecute(session, waitTimeout); @@ -434,8 +459,17 @@ public class FFprobeKit { * * @return all FFprobe sessions in the session history */ - public static List listSessions() { + public static List listFFprobeSessions() { return FFmpegKitConfig.getFFprobeSessions(); } + /** + *

Lists all MediaInformation sessions in the session history. + * + * @return all MediaInformation sessions in the session history + */ + public static List listMediaInformationSessions() { + return FFmpegKitConfig.getMediaInformationSessions(); + } + } diff --git a/android/ffmpeg-kit-android-lib/src/main/java/com/arthenica/ffmpegkit/FFprobeSession.java b/android/ffmpeg-kit-android-lib/src/main/java/com/arthenica/ffmpegkit/FFprobeSession.java index 43fe477..2d97220 100644 --- a/android/ffmpeg-kit-android-lib/src/main/java/com/arthenica/ffmpegkit/FFprobeSession.java +++ b/android/ffmpeg-kit-android-lib/src/main/java/com/arthenica/ffmpegkit/FFprobeSession.java @@ -24,6 +24,11 @@ package com.arthenica.ffmpegkit; */ public class FFprobeSession extends AbstractSession implements Session { + /** + * Session specific complete callback. + */ + private final FFprobeSessionCompleteCallback completeCallback; + /** * Builds a new FFprobe session. * @@ -36,39 +41,50 @@ public class FFprobeSession extends AbstractSession implements Session { /** * Builds a new FFprobe session. * - * @param arguments command arguments - * @param executeCallback session specific execute callback function + * @param arguments command arguments + * @param completeCallback session specific complete callback */ - public FFprobeSession(final String[] arguments, final ExecuteCallback executeCallback) { - this(arguments, executeCallback, null); + public FFprobeSession(final String[] arguments, final FFprobeSessionCompleteCallback completeCallback) { + this(arguments, completeCallback, null); } /** * Builds a new FFprobe session. * - * @param arguments command arguments - * @param executeCallback session specific execute callback function - * @param logCallback session specific log callback function + * @param arguments command arguments + * @param completeCallback session specific complete callback + * @param logCallback session specific log callback */ public FFprobeSession(final String[] arguments, - final ExecuteCallback executeCallback, + final FFprobeSessionCompleteCallback completeCallback, final LogCallback logCallback) { - this(arguments, executeCallback, logCallback, FFmpegKitConfig.getLogRedirectionStrategy()); + this(arguments, completeCallback, logCallback, FFmpegKitConfig.getLogRedirectionStrategy()); } /** * Builds a new FFprobe session. * * @param arguments command arguments - * @param executeCallback session specific execute callback function - * @param logCallback session specific log callback function + * @param completeCallback session specific complete callback + * @param logCallback session specific log callback * @param logRedirectionStrategy session specific log redirection strategy */ public FFprobeSession(final String[] arguments, - final ExecuteCallback executeCallback, + final FFprobeSessionCompleteCallback completeCallback, final LogCallback logCallback, final LogRedirectionStrategy logRedirectionStrategy) { - super(arguments, executeCallback, logCallback, logRedirectionStrategy); + super(arguments, logCallback, logRedirectionStrategy); + + this.completeCallback = completeCallback; + } + + /** + * Returns the session specific complete callback. + * + * @return session specific complete callback + */ + public FFprobeSessionCompleteCallback getCompleteCallback() { + return completeCallback; } @Override @@ -81,6 +97,11 @@ public class FFprobeSession extends AbstractSession implements Session { return true; } + @Override + public boolean isMediaInformation() { + return false; + } + @Override public String toString() { final StringBuilder stringBuilder = new StringBuilder(); diff --git a/android/ffmpeg-kit-android-lib/src/main/java/com/arthenica/ffmpegkit/FFprobeSessionCompleteCallback.java b/android/ffmpeg-kit-android-lib/src/main/java/com/arthenica/ffmpegkit/FFprobeSessionCompleteCallback.java new file mode 100644 index 0000000..3654916 --- /dev/null +++ b/android/ffmpeg-kit-android-lib/src/main/java/com/arthenica/ffmpegkit/FFprobeSessionCompleteCallback.java @@ -0,0 +1,35 @@ +/* + * Copyright (c) 2018-2021 Taner Sener + * + * This file is part of FFmpegKit. + * + * FFmpegKit is free software: you can redistribute it and/or modify + * it under the terms of the GNU Lesser General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * FFmpegKit is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public License + * along with FFmpegKit. If not, see . + */ + +package com.arthenica.ffmpegkit; + +/** + *

Callback function that is invoked when an asynchronous FFprobe session has ended. + */ +@FunctionalInterface +public interface FFprobeSessionCompleteCallback { + + /** + *

Called when an FFprobe session has ended. + * + * @param session FFprobe session + */ + void apply(final FFprobeSession session); + +} diff --git a/android/ffmpeg-kit-android-lib/src/main/java/com/arthenica/ffmpegkit/MediaInformationSession.java b/android/ffmpeg-kit-android-lib/src/main/java/com/arthenica/ffmpegkit/MediaInformationSession.java index 004e1dd..97ed2d2 100644 --- a/android/ffmpeg-kit-android-lib/src/main/java/com/arthenica/ffmpegkit/MediaInformationSession.java +++ b/android/ffmpeg-kit-android-lib/src/main/java/com/arthenica/ffmpegkit/MediaInformationSession.java @@ -23,13 +23,18 @@ package com.arthenica.ffmpegkit; *

A custom FFprobe session, which produces a MediaInformation object using the * FFprobe output. */ -public class MediaInformationSession extends FFprobeSession implements Session { +public class MediaInformationSession extends AbstractSession implements Session { /** * Media information extracted in the session. */ private MediaInformation mediaInformation; + /** + * Session specific complete callback. + */ + private final MediaInformationSessionCompleteCallback completeCallback; + /** * Creates a new media information session. * @@ -42,22 +47,24 @@ public class MediaInformationSession extends FFprobeSession implements Session { /** * Creates a new media information session. * - * @param arguments command arguments - * @param executeCallback session specific execute callback function + * @param arguments command arguments + * @param completeCallback session specific complete callback */ - public MediaInformationSession(final String[] arguments, final ExecuteCallback executeCallback) { - this(arguments, executeCallback, null); + public MediaInformationSession(final String[] arguments, final MediaInformationSessionCompleteCallback completeCallback) { + this(arguments, completeCallback, null); } /** * Creates a new media information session. * - * @param arguments command arguments - * @param executeCallback session specific execute callback function - * @param logCallback session specific log callback function + * @param arguments command arguments + * @param completeCallback session specific complete callback + * @param logCallback session specific log callback */ - public MediaInformationSession(final String[] arguments, final ExecuteCallback executeCallback, final LogCallback logCallback) { - super(arguments, executeCallback, logCallback, LogRedirectionStrategy.NEVER_PRINT_LOGS); + public MediaInformationSession(final String[] arguments, final MediaInformationSessionCompleteCallback completeCallback, final LogCallback logCallback) { + super(arguments, logCallback, LogRedirectionStrategy.NEVER_PRINT_LOGS); + + this.completeCallback = completeCallback; } /** @@ -79,6 +86,30 @@ public class MediaInformationSession extends FFprobeSession implements Session { this.mediaInformation = mediaInformation; } + /** + * Returns the session specific complete callback. + * + * @return session specific complete callback + */ + public MediaInformationSessionCompleteCallback getCompleteCallback() { + return completeCallback; + } + + @Override + public boolean isFFmpeg() { + return false; + } + + @Override + public boolean isFFprobe() { + return false; + } + + @Override + public boolean isMediaInformation() { + return true; + } + @Override public String toString() { final StringBuilder stringBuilder = new StringBuilder(); diff --git a/android/ffmpeg-kit-android-lib/src/main/java/com/arthenica/ffmpegkit/MediaInformationSessionCompleteCallback.java b/android/ffmpeg-kit-android-lib/src/main/java/com/arthenica/ffmpegkit/MediaInformationSessionCompleteCallback.java new file mode 100644 index 0000000..544b58b --- /dev/null +++ b/android/ffmpeg-kit-android-lib/src/main/java/com/arthenica/ffmpegkit/MediaInformationSessionCompleteCallback.java @@ -0,0 +1,36 @@ +/* + * Copyright (c) 2018-2021 Taner Sener + * + * This file is part of FFmpegKit. + * + * FFmpegKit is free software: you can redistribute it and/or modify + * it under the terms of the GNU Lesser General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * FFmpegKit is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public License + * along with FFmpegKit. If not, see . + */ + +package com.arthenica.ffmpegkit; + +/** + *

Callback function that is invoked when an asynchronous MediaInformation session + * has ended. + */ +@FunctionalInterface +public interface MediaInformationSessionCompleteCallback { + + /** + *

Called when a media information session has ended. + * + * @param session media information session + */ + void apply(final MediaInformationSession session); + +} diff --git a/android/ffmpeg-kit-android-lib/src/main/java/com/arthenica/ffmpegkit/Session.java b/android/ffmpeg-kit-android-lib/src/main/java/com/arthenica/ffmpegkit/Session.java index c12c9a6..74aa7df 100644 --- a/android/ffmpeg-kit-android-lib/src/main/java/com/arthenica/ffmpegkit/Session.java +++ b/android/ffmpeg-kit-android-lib/src/main/java/com/arthenica/ffmpegkit/Session.java @@ -29,16 +29,9 @@ import java.util.concurrent.Future; public interface Session { /** - * Returns the session specific execute callback function. + * Returns the session specific log callback. * - * @return session specific execute callback function - */ - ExecuteCallback getExecuteCallback(); - - /** - * Returns the session specific log callback function. - * - * @return session specific log callback function + * @return session specific log callback */ LogCallback getLogCallback(); @@ -198,7 +191,7 @@ public interface Session { /** * Adds a new log entry for this session. - * + *

* It is invoked internally by FFmpegKit library methods. Must not be used by user * applications. * @@ -227,6 +220,13 @@ public interface Session { */ boolean isFFprobe(); + /** + * Returns whether it is a MediaInformation session or not. + * + * @return true if it is a MediaInformation session, false otherwise + */ + boolean isMediaInformation(); + /** * Cancels running the session. */ diff --git a/android/ffmpeg-kit-android-lib/src/test/java/com/arthenica/ffmpegkit/FFmpegSessionTest.java b/android/ffmpeg-kit-android-lib/src/test/java/com/arthenica/ffmpegkit/FFmpegSessionTest.java index b387225..488da35 100644 --- a/android/ffmpeg-kit-android-lib/src/test/java/com/arthenica/ffmpegkit/FFmpegSessionTest.java +++ b/android/ffmpeg-kit-android-lib/src/test/java/com/arthenica/ffmpegkit/FFmpegSessionTest.java @@ -32,8 +32,8 @@ public class FFmpegSessionTest { public void constructorTest() { FFmpegSession ffmpegSession = new FFmpegSession(TEST_ARGUMENTS); - // 1. getExecuteCallback - Assert.assertNull(ffmpegSession.getExecuteCallback()); + // 1. getCompleteCallback + Assert.assertNull(ffmpegSession.getCompleteCallback()); // 2. getLogCallback Assert.assertNull(ffmpegSession.getLogCallback()); @@ -93,17 +93,17 @@ public class FFmpegSessionTest { @Test public void constructorTest2() { - ExecuteCallback executeCallback = new ExecuteCallback() { + FFmpegSessionCompleteCallback completeCallback = new FFmpegSessionCompleteCallback() { @Override - public void apply(Session session) { + public void apply(FFmpegSession session) { } }; - FFmpegSession ffmpegSession = new FFmpegSession(TEST_ARGUMENTS, executeCallback); + FFmpegSession ffmpegSession = new FFmpegSession(TEST_ARGUMENTS, completeCallback); - // 1. getExecuteCallback - Assert.assertEquals(ffmpegSession.getExecuteCallback(), executeCallback); + // 1. getCompleteCallback + Assert.assertEquals(ffmpegSession.getCompleteCallback(), completeCallback); // 2. getLogCallback Assert.assertNull(ffmpegSession.getLogCallback()); @@ -163,10 +163,10 @@ public class FFmpegSessionTest { @Test public void constructorTest3() { - ExecuteCallback executeCallback = new ExecuteCallback() { + FFmpegSessionCompleteCallback completeCallback = new FFmpegSessionCompleteCallback() { @Override - public void apply(Session session) { + public void apply(FFmpegSession session) { } }; @@ -184,10 +184,10 @@ public class FFmpegSessionTest { } }; - FFmpegSession ffmpegSession = new FFmpegSession(TEST_ARGUMENTS, executeCallback, logCallback, statisticsCallback); + FFmpegSession ffmpegSession = new FFmpegSession(TEST_ARGUMENTS, completeCallback, logCallback, statisticsCallback); - // 1. getExecuteCallback - Assert.assertEquals(ffmpegSession.getExecuteCallback(), executeCallback); + // 1. getCompleteCallback + Assert.assertEquals(ffmpegSession.getCompleteCallback(), completeCallback); // 2. getLogCallback Assert.assertEquals(ffmpegSession.getLogCallback(), logCallback); diff --git a/android/ffmpeg-kit-android-lib/src/test/java/com/arthenica/ffmpegkit/FFprobeSessionTest.java b/android/ffmpeg-kit-android-lib/src/test/java/com/arthenica/ffmpegkit/FFprobeSessionTest.java index 634e901..7374e6c 100644 --- a/android/ffmpeg-kit-android-lib/src/test/java/com/arthenica/ffmpegkit/FFprobeSessionTest.java +++ b/android/ffmpeg-kit-android-lib/src/test/java/com/arthenica/ffmpegkit/FFprobeSessionTest.java @@ -32,8 +32,8 @@ public class FFprobeSessionTest { public void constructorTest() { FFprobeSession ffprobeSession = new FFprobeSession(TEST_ARGUMENTS); - // 1. getExecuteCallback - Assert.assertNull(ffprobeSession.getExecuteCallback()); + // 1. getCompleteCallback + Assert.assertNull(ffprobeSession.getCompleteCallback()); // 2. getLogCallback Assert.assertNull(ffprobeSession.getLogCallback()); @@ -90,17 +90,17 @@ public class FFprobeSessionTest { @Test public void constructorTest2() { - ExecuteCallback executeCallback = new ExecuteCallback() { + FFprobeSessionCompleteCallback completeCallback = new FFprobeSessionCompleteCallback() { @Override - public void apply(Session session) { + public void apply(FFprobeSession session) { } }; - FFprobeSession ffprobeSession = new FFprobeSession(TEST_ARGUMENTS, executeCallback); + FFprobeSession ffprobeSession = new FFprobeSession(TEST_ARGUMENTS, completeCallback); - // 1. getExecuteCallback - Assert.assertEquals(ffprobeSession.getExecuteCallback(), executeCallback); + // 1. getCompleteCallback + Assert.assertEquals(ffprobeSession.getCompleteCallback(), completeCallback); // 2. getLogCallback Assert.assertNull(ffprobeSession.getLogCallback()); @@ -157,10 +157,10 @@ public class FFprobeSessionTest { @Test public void constructorTest3() { - ExecuteCallback executeCallback = new ExecuteCallback() { + FFprobeSessionCompleteCallback completeCallback = new FFprobeSessionCompleteCallback() { @Override - public void apply(Session session) { + public void apply(FFprobeSession session) { } }; @@ -171,10 +171,10 @@ public class FFprobeSessionTest { } }; - FFprobeSession ffprobeSession = new FFprobeSession(TEST_ARGUMENTS, executeCallback, logCallback); + FFprobeSession ffprobeSession = new FFprobeSession(TEST_ARGUMENTS, completeCallback, logCallback); - // 1. getExecuteCallback - Assert.assertEquals(ffprobeSession.getExecuteCallback(), executeCallback); + // 1. getCompleteCallback + Assert.assertEquals(ffprobeSession.getCompleteCallback(), completeCallback); // 2. getLogCallback Assert.assertEquals(ffprobeSession.getLogCallback(), logCallback); diff --git a/apple/src/AbstractSession.h b/apple/src/AbstractSession.h index 31dfc9a..e44ea5e 100644 --- a/apple/src/AbstractSession.h +++ b/apple/src/AbstractSession.h @@ -29,8 +29,8 @@ extern int const AbstractSessionDefaultTimeoutForAsynchronousMessagesInTransmit; /** - * Abstract session implementation which includes common features shared by FFmpeg - * and FFprobe sessions. + * Abstract session implementation which includes common features shared by FFmpeg, + * FFprobe and MediaInformation sessions. */ @interface AbstractSession : NSObject @@ -38,11 +38,10 @@ extern int const AbstractSessionDefaultTimeoutForAsynchronousMessagesInTransmit; * Creates a new abstract session. * * @param arguments command arguments - * @param executeCallback session specific execute callback * @param logCallback session specific log callback * @param logRedirectionStrategy session specific log redirection strategy */ -- (instancetype)init:(NSArray*)arguments withExecuteCallback:(ExecuteCallback)executeCallback withLogCallback:(LogCallback)logCallback withLogRedirectionStrategy:(LogRedirectionStrategy)logRedirectionStrategy; +- (instancetype)init:(NSArray*)arguments withLogCallback:(LogCallback)logCallback withLogRedirectionStrategy:(LogRedirectionStrategy)logRedirectionStrategy; /** * Waits for all asynchronous messages to be transmitted until the given timeout. diff --git a/apple/src/AbstractSession.m b/apple/src/AbstractSession.m index b60d813..f2e40ac 100644 --- a/apple/src/AbstractSession.m +++ b/apple/src/AbstractSession.m @@ -19,7 +19,6 @@ #import "AbstractSession.h" #import "AtomicLong.h" -#import "ExecuteCallback.h" #import "FFmpegKit.h" #import "FFmpegKitConfig.h" #import "LogCallback.h" @@ -33,7 +32,6 @@ extern void addSessionToSessionHistory(id session); @implementation AbstractSession { long _sessionId; - ExecuteCallback _executeCallback; LogCallback _logCallback; NSDate* _createTime; NSDate* _startTime; @@ -51,11 +49,10 @@ extern void addSessionToSessionHistory(id session); sessionIdGenerator = [[AtomicLong alloc] initWithValue:1]; } -- (instancetype)init:(NSArray*)arguments withExecuteCallback:(ExecuteCallback)executeCallback withLogCallback:(LogCallback)logCallback withLogRedirectionStrategy:(LogRedirectionStrategy)logRedirectionStrategy { +- (instancetype)init:(NSArray*)arguments withLogCallback:(LogCallback)logCallback withLogRedirectionStrategy:(LogRedirectionStrategy)logRedirectionStrategy { self = [super init]; if (self) { _sessionId = [sessionIdGenerator getAndIncrement]; - _executeCallback = executeCallback; _logCallback = logCallback; _createTime = [NSDate date]; _startTime = nil; @@ -74,10 +71,6 @@ extern void addSessionToSessionHistory(id session); return self; } -- (ExecuteCallback)getExecuteCallback { - return _executeCallback; -} - - (LogCallback)getLogCallback { return _logCallback; } @@ -230,6 +223,11 @@ extern void addSessionToSessionHistory(id session); return false; } +- (BOOL)isMediaInformation { + // IMPLEMENTED IN SUBCLASSES + return false; +} + - (void)cancel { if (_state == SessionStateRunning) { [FFmpegKit cancel:_sessionId]; diff --git a/apple/src/FFmpegKit.h b/apple/src/FFmpegKit.h index bcf8c85..9ae4993 100644 --- a/apple/src/FFmpegKit.h +++ b/apple/src/FFmpegKit.h @@ -23,7 +23,6 @@ #import #import #import -#import "ExecuteCallback.h" #import "LogCallback.h" #import "FFmpegSession.h" #import "StatisticsCallback.h" @@ -34,11 +33,11 @@ *

  * FFmpegSession *session = [FFmpegKit execute:@"-i file1.mp4 -c:v libxvid file1.avi"];
  *
- * FFmpegSession *asyncSession = [FFmpegKit executeAsync:@"-i file1.mp4 -c:v libxvid file1.avi" withExecuteCallback:executeCallback];
+ * FFmpegSession *asyncSession = [FFmpegKit executeAsync:@"-i file1.mp4 -c:v libxvid file1.avi" withCompleteCallback:completeCallback];
  * 
*

Provides overloaded execute methods to define session specific callbacks. *

- * FFmpegSession *asyncSession = [FFmpegKit executeAsync:@"-i file1.mp4 -c:v libxvid file1.avi" withExecuteCallback:executeCallback withLogCallback:logCallback withStatisticsCallback:statisticsCallback];
+ * FFmpegSession *asyncSession = [FFmpegKit executeAsync:@"-i file1.mp4 -c:v libxvid file1.avi" withCompleteCallback:completeCallback withLogCallback:logCallback withStatisticsCallback:statisticsCallback];
  * 
*/ @interface FFmpegKit : NSObject @@ -54,56 +53,56 @@ /** *

Starts an asynchronous FFmpeg execution with arguments provided. * - *

Note that this method returns immediately and does not wait the execution to complete. You must use an - * ExecuteCallback if you want to be notified about the result. + *

Note that this method returns immediately and does not wait the execution to complete. + * You must use an FFmpegSessionCompleteCallback if you want to be notified about the result. * - * @param arguments FFmpeg command options/arguments as string array - * @param executeCallback callback that will be called when the execution is completed + * @param arguments FFmpeg command options/arguments as string array + * @param completeCallback callback that will be called when the execution has completed * @return FFmpeg session created for this execution */ -+ (FFmpegSession*)executeWithArgumentsAsync:(NSArray*)arguments withExecuteCallback:(ExecuteCallback)executeCallback; ++ (FFmpegSession*)executeWithArgumentsAsync:(NSArray*)arguments withCompleteCallback:(FFmpegSessionCompleteCallback)completeCallback; /** *

Starts an asynchronous FFmpeg execution with arguments provided. * - *

Note that this method returns immediately and does not wait the execution to complete. You must use an - * ExecuteCallback if you want to be notified about the result. + *

Note that this method returns immediately and does not wait the execution to complete. + * You must use an FFmpegSessionCompleteCallback if you want to be notified about the result. * - * @param arguments FFmpeg command options/arguments as string array - * @param executeCallback callback that will be called when the execution is completed - * @param logCallback callback that will receive logs - * @param statisticsCallback callback that will receive statistics + * @param arguments FFmpeg command options/arguments as string array + * @param completeCallback callback that will be called when the execution has completed + * @param logCallback callback that will receive logs + * @param statisticsCallback callback that will receive statistics * @return FFmpeg session created for this execution */ -+ (FFmpegSession*)executeWithArgumentsAsync:(NSArray*)arguments withExecuteCallback:(ExecuteCallback)executeCallback withLogCallback:(LogCallback)logCallback withStatisticsCallback:(StatisticsCallback)statisticsCallback; ++ (FFmpegSession*)executeWithArgumentsAsync:(NSArray*)arguments withCompleteCallback:(FFmpegSessionCompleteCallback)completeCallback withLogCallback:(LogCallback)logCallback withStatisticsCallback:(StatisticsCallback)statisticsCallback; /** *

Starts an asynchronous FFmpeg execution with arguments provided. * - *

Note that this method returns immediately and does not wait the execution to complete. You must use an - * ExecuteCallback if you want to be notified about the result. + *

Note that this method returns immediately and does not wait the execution to complete. + * You must use an FFmpegSessionCompleteCallback if you want to be notified about the result. * - * @param arguments FFmpeg command options/arguments as string array - * @param executeCallback callback that will be called when the execution is completed - * @param queue dispatch queue that will be used to run this asynchronous operation + * @param arguments FFmpeg command options/arguments as string array + * @param completeCallback callback that will be called when the execution has completed + * @param queue dispatch queue that will be used to run this asynchronous operation * @return FFmpeg session created for this execution */ -+ (FFmpegSession*)executeWithArgumentsAsync:(NSArray*)arguments withExecuteCallback:(ExecuteCallback)executeCallback onDispatchQueue:(dispatch_queue_t)queue; ++ (FFmpegSession*)executeWithArgumentsAsync:(NSArray*)arguments withCompleteCallback:(FFmpegSessionCompleteCallback)completeCallback onDispatchQueue:(dispatch_queue_t)queue; /** *

Starts an asynchronous FFmpeg execution with arguments provided. * - *

Note that this method returns immediately and does not wait the execution to complete. You must use an - * ExecuteCallback if you want to be notified about the result. + *

Note that this method returns immediately and does not wait the execution to complete. + * You must use an FFmpegSessionCompleteCallback if you want to be notified about the result. * - * @param arguments FFmpeg command options/arguments as string array - * @param executeCallback callback that will be called when the execution is completed - * @param logCallback callback that will receive logs - * @param statisticsCallback callback that will receive statistics - * @param queue dispatch queue that will be used to run this asynchronous operation + * @param arguments FFmpeg command options/arguments as string array + * @param completeCallback callback that will be called when the execution has completed + * @param logCallback callback that will receive logs + * @param statisticsCallback callback that will receive statistics + * @param queue dispatch queue that will be used to run this asynchronous operation * @return FFmpeg session created for this execution */ -+ (FFmpegSession*)executeWithArgumentsAsync:(NSArray*)arguments withExecuteCallback:(ExecuteCallback)executeCallback withLogCallback:(LogCallback)logCallback withStatisticsCallback:(StatisticsCallback)statisticsCallback onDispatchQueue:(dispatch_queue_t)queue; ++ (FFmpegSession*)executeWithArgumentsAsync:(NSArray*)arguments withCompleteCallback:(FFmpegSessionCompleteCallback)completeCallback withLogCallback:(LogCallback)logCallback withStatisticsCallback:(StatisticsCallback)statisticsCallback onDispatchQueue:(dispatch_queue_t)queue; /** *

Synchronously executes FFmpeg command provided. Space character is used to split command @@ -120,70 +119,70 @@ * into arguments. You can use single or double quote characters to specify arguments inside your command. * *

Note that this method returns immediately and does not wait the execution to complete. You must use an - * ExecuteCallback if you want to be notified about the result. + * FFmpegSessionCompleteCallback if you want to be notified about the result. * - * @param command FFmpeg command - * @param executeCallback callback that will be called when the execution is completed + * @param command FFmpeg command + * @param completeCallback callback that will be called when the execution has completed * @return FFmpeg session created for this execution */ -+ (FFmpegSession*)executeAsync:(NSString*)command withExecuteCallback:(ExecuteCallback)executeCallback; ++ (FFmpegSession*)executeAsync:(NSString*)command withCompleteCallback:(FFmpegSessionCompleteCallback)completeCallback; /** *

Starts an asynchronous FFmpeg execution for the given command. Space character is used to split the command * into arguments. You can use single or double quote characters to specify arguments inside your command. * *

Note that this method returns immediately and does not wait the execution to complete. You must use an - * ExecuteCallback if you want to be notified about the result. + * FFmpegSessionCompleteCallback if you want to be notified about the result. * - * @param command FFmpeg command - * @param executeCallback callback that will be called when the execution is completed - * @param logCallback callback that will receive logs - * @param statisticsCallback callback that will receive statistics + * @param command FFmpeg command + * @param completeCallback callback that will be called when the execution has completed + * @param logCallback callback that will receive logs + * @param statisticsCallback callback that will receive statistics * @return FFmpeg session created for this execution */ -+ (FFmpegSession*)executeAsync:(NSString*)command withExecuteCallback:(ExecuteCallback)executeCallback withLogCallback:(LogCallback)logCallback withStatisticsCallback:(StatisticsCallback)statisticsCallback; ++ (FFmpegSession*)executeAsync:(NSString*)command withCompleteCallback:(FFmpegSessionCompleteCallback)completeCallback withLogCallback:(LogCallback)logCallback withStatisticsCallback:(StatisticsCallback)statisticsCallback; /** *

Starts an asynchronous FFmpeg execution for the given command. Space character is used to split the command * into arguments. You can use single or double quote characters to specify arguments inside your command. * *

Note that this method returns immediately and does not wait the execution to complete. You must use an - * ExecuteCallback if you want to be notified about the result. + * FFmpegSessionCompleteCallback if you want to be notified about the result. * - * @param command FFmpeg command - * @param executeCallback callback that will be called when the execution is completed - * @param queue dispatch queue that will be used to run this asynchronous operation + * @param command FFmpeg command + * @param completeCallback callback that will be called when the execution has completed + * @param queue dispatch queue that will be used to run this asynchronous operation * @return FFmpeg session created for this execution */ -+ (FFmpegSession*)executeAsync:(NSString*)command withExecuteCallback:(ExecuteCallback)executeCallback onDispatchQueue:(dispatch_queue_t)queue; ++ (FFmpegSession*)executeAsync:(NSString*)command withCompleteCallback:(FFmpegSessionCompleteCallback)completeCallback onDispatchQueue:(dispatch_queue_t)queue; /** *

Starts an asynchronous FFmpeg execution for the given command. Space character is used to split the command * into arguments. You can use single or double quote characters to specify arguments inside your command. * *

Note that this method returns immediately and does not wait the execution to complete. You must use an - * ExecuteCallback if you want to be notified about the result. + * FFmpegSessionCompleteCallback if you want to be notified about the result. * - * @param command FFmpeg command - * @param executeCallback callback that will be called when the execution is completed - * @param logCallback callback that will receive logs - * @param statisticsCallback callback that will receive statistics - * @param queue dispatch queue that will be used to run this asynchronous operation + * @param command FFmpeg command + * @param completeCallback callback that will be called when the execution has completed + * @param logCallback callback that will receive logs + * @param statisticsCallback callback that will receive statistics + * @param queue dispatch queue that will be used to run this asynchronous operation * @return FFmpeg session created for this execution */ -+ (FFmpegSession*)executeAsync:(NSString*)command withExecuteCallback:(ExecuteCallback)executeCallback withLogCallback:(LogCallback)logCallback withStatisticsCallback:(StatisticsCallback)statisticsCallback onDispatchQueue:(dispatch_queue_t)queue; ++ (FFmpegSession*)executeAsync:(NSString*)command withCompleteCallback:(FFmpegSessionCompleteCallback)completeCallback withLogCallback:(LogCallback)logCallback withStatisticsCallback:(StatisticsCallback)statisticsCallback onDispatchQueue:(dispatch_queue_t)queue; /** *

Cancels all running sessions. * - *

This function does not wait for termination to complete and returns immediately. + *

This method does not wait for termination to complete and returns immediately. */ + (void)cancel; /** *

Cancels the session specified with sessionId. * - *

This function does not wait for termination to complete and returns immediately. + *

This method does not wait for termination to complete and returns immediately. * * @param sessionId id of the session that will be cancelled */ diff --git a/apple/src/FFmpegKit.m b/apple/src/FFmpegKit.m index 9c082c8..562c0af 100644 --- a/apple/src/FFmpegKit.m +++ b/apple/src/FFmpegKit.m @@ -40,26 +40,26 @@ return session; } -+ (FFmpegSession*)executeWithArgumentsAsync:(NSArray*)arguments withExecuteCallback:(ExecuteCallback)executeCallback { - FFmpegSession* session = [[FFmpegSession alloc] init:arguments withExecuteCallback:executeCallback]; ++ (FFmpegSession*)executeWithArgumentsAsync:(NSArray*)arguments withCompleteCallback:(FFmpegSessionCompleteCallback)completeCallback { + FFmpegSession* session = [[FFmpegSession alloc] init:arguments withCompleteCallback:completeCallback]; [FFmpegKitConfig asyncFFmpegExecute:session]; return session; } -+ (FFmpegSession*)executeWithArgumentsAsync:(NSArray*)arguments withExecuteCallback:(ExecuteCallback)executeCallback withLogCallback:(LogCallback)logCallback withStatisticsCallback:(StatisticsCallback)statisticsCallback { - FFmpegSession* session = [[FFmpegSession alloc] init:arguments withExecuteCallback:executeCallback withLogCallback:logCallback withStatisticsCallback:statisticsCallback]; ++ (FFmpegSession*)executeWithArgumentsAsync:(NSArray*)arguments withCompleteCallback:(FFmpegSessionCompleteCallback)completeCallback withLogCallback:(LogCallback)logCallback withStatisticsCallback:(StatisticsCallback)statisticsCallback { + FFmpegSession* session = [[FFmpegSession alloc] init:arguments withCompleteCallback:completeCallback withLogCallback:logCallback withStatisticsCallback:statisticsCallback]; [FFmpegKitConfig asyncFFmpegExecute:session]; return session; } -+ (FFmpegSession*)executeWithArgumentsAsync:(NSArray*)arguments withExecuteCallback:(ExecuteCallback)executeCallback onDispatchQueue:(dispatch_queue_t)queue { - FFmpegSession* session = [[FFmpegSession alloc] init:arguments withExecuteCallback:executeCallback]; ++ (FFmpegSession*)executeWithArgumentsAsync:(NSArray*)arguments withCompleteCallback:(FFmpegSessionCompleteCallback)completeCallback onDispatchQueue:(dispatch_queue_t)queue { + FFmpegSession* session = [[FFmpegSession alloc] init:arguments withCompleteCallback:completeCallback]; [FFmpegKitConfig asyncFFmpegExecute:session onDispatchQueue:queue]; return session; } -+ (FFmpegSession*)executeWithArgumentsAsync:(NSArray*)arguments withExecuteCallback:(ExecuteCallback)executeCallback withLogCallback:(LogCallback)logCallback withStatisticsCallback:(StatisticsCallback)statisticsCallback onDispatchQueue:(dispatch_queue_t)queue { - FFmpegSession* session = [[FFmpegSession alloc] init:arguments withExecuteCallback:executeCallback withLogCallback:logCallback withStatisticsCallback:statisticsCallback]; ++ (FFmpegSession*)executeWithArgumentsAsync:(NSArray*)arguments withCompleteCallback:(FFmpegSessionCompleteCallback)completeCallback withLogCallback:(LogCallback)logCallback withStatisticsCallback:(StatisticsCallback)statisticsCallback onDispatchQueue:(dispatch_queue_t)queue { + FFmpegSession* session = [[FFmpegSession alloc] init:arguments withCompleteCallback:completeCallback withLogCallback:logCallback withStatisticsCallback:statisticsCallback]; [FFmpegKitConfig asyncFFmpegExecute:session onDispatchQueue:queue]; return session; } @@ -70,26 +70,26 @@ return session; } -+ (FFmpegSession*)executeAsync:(NSString*)command withExecuteCallback:(ExecuteCallback)executeCallback { - FFmpegSession* session = [[FFmpegSession alloc] init:[FFmpegKitConfig parseArguments:command] withExecuteCallback:executeCallback]; ++ (FFmpegSession*)executeAsync:(NSString*)command withCompleteCallback:(FFmpegSessionCompleteCallback)completeCallback { + FFmpegSession* session = [[FFmpegSession alloc] init:[FFmpegKitConfig parseArguments:command] withCompleteCallback:completeCallback]; [FFmpegKitConfig asyncFFmpegExecute:session]; return session; } -+ (FFmpegSession*)executeAsync:(NSString*)command withExecuteCallback:(ExecuteCallback)executeCallback withLogCallback:(LogCallback)logCallback withStatisticsCallback:(StatisticsCallback)statisticsCallback { - FFmpegSession* session = [[FFmpegSession alloc] init:[FFmpegKitConfig parseArguments:command] withExecuteCallback:executeCallback withLogCallback:logCallback withStatisticsCallback:statisticsCallback]; ++ (FFmpegSession*)executeAsync:(NSString*)command withCompleteCallback:(FFmpegSessionCompleteCallback)completeCallback withLogCallback:(LogCallback)logCallback withStatisticsCallback:(StatisticsCallback)statisticsCallback { + FFmpegSession* session = [[FFmpegSession alloc] init:[FFmpegKitConfig parseArguments:command] withCompleteCallback:completeCallback withLogCallback:logCallback withStatisticsCallback:statisticsCallback]; [FFmpegKitConfig asyncFFmpegExecute:session]; return session; } -+ (FFmpegSession*)executeAsync:(NSString*)command withExecuteCallback:(ExecuteCallback)executeCallback onDispatchQueue:(dispatch_queue_t)queue { - FFmpegSession* session = [[FFmpegSession alloc] init:[FFmpegKitConfig parseArguments:command] withExecuteCallback:executeCallback]; ++ (FFmpegSession*)executeAsync:(NSString*)command withCompleteCallback:(FFmpegSessionCompleteCallback)completeCallback onDispatchQueue:(dispatch_queue_t)queue { + FFmpegSession* session = [[FFmpegSession alloc] init:[FFmpegKitConfig parseArguments:command] withCompleteCallback:completeCallback]; [FFmpegKitConfig asyncFFmpegExecute:session onDispatchQueue:queue]; return session; } -+ (FFmpegSession*)executeAsync:(NSString*)command withExecuteCallback:(ExecuteCallback)executeCallback withLogCallback:(LogCallback)logCallback withStatisticsCallback:(StatisticsCallback)statisticsCallback onDispatchQueue:(dispatch_queue_t)queue { - FFmpegSession* session = [[FFmpegSession alloc] init:[FFmpegKitConfig parseArguments:command] withExecuteCallback:executeCallback withLogCallback:logCallback withStatisticsCallback:statisticsCallback]; ++ (FFmpegSession*)executeAsync:(NSString*)command withCompleteCallback:(FFmpegSessionCompleteCallback)completeCallback withLogCallback:(LogCallback)logCallback withStatisticsCallback:(StatisticsCallback)statisticsCallback onDispatchQueue:(dispatch_queue_t)queue { + FFmpegSession* session = [[FFmpegSession alloc] init:[FFmpegKitConfig parseArguments:command] withCompleteCallback:completeCallback withLogCallback:logCallback withStatisticsCallback:statisticsCallback]; [FFmpegKitConfig asyncFFmpegExecute:session onDispatchQueue:queue]; return session; } diff --git a/apple/src/FFmpegKitConfig.h b/apple/src/FFmpegKitConfig.h index 59ddb62..acfad88 100644 --- a/apple/src/FFmpegKitConfig.h +++ b/apple/src/FFmpegKitConfig.h @@ -24,7 +24,6 @@ #import #import #import -#import "ExecuteCallback.h" #import "FFmpegSession.h" #import "FFprobeSession.h" #import "LogCallback.h" @@ -191,8 +190,8 @@ typedef NS_ENUM(NSUInteger, Signal) { /** *

Starts an asynchronous FFmpeg execution for the given session. * - *

Note that this method returns immediately and does not wait the execution to complete. You must use an - * ExecuteCallback if you want to be notified about the result. + *

Note that this method returns immediately and does not wait the execution to complete. + * You must use an FFmpegSessionCompleteCallback if you want to be notified about the result. * * @param ffmpegSession FFmpeg session which includes command options/arguments */ @@ -201,8 +200,8 @@ typedef NS_ENUM(NSUInteger, Signal) { /** *

Starts an asynchronous FFmpeg execution for the given session. * - *

Note that this method returns immediately and does not wait the execution to complete. You must use an - * ExecuteCallback if you want to be notified about the result. + *

Note that this method returns immediately and does not wait the execution to complete. + * You must use an FFmpegSessionCompleteCallback if you want to be notified about the result. * * @param ffmpegSession FFmpeg session which includes command options/arguments * @param queue dispatch queue that will be used to run this asynchronous operation @@ -212,8 +211,8 @@ typedef NS_ENUM(NSUInteger, Signal) { /** *

Starts an asynchronous FFprobe execution for the given session. * - *

Note that this method returns immediately and does not wait the execution to complete. You must use an - * ExecuteCallback if you want to be notified about the result. + *

Note that this method returns immediately and does not wait the execution to complete. + * You must use an FFprobeSessionCompleteCallback if you want to be notified about the result. * * @param ffprobeSession FFprobe session which includes command options/arguments */ @@ -222,8 +221,8 @@ typedef NS_ENUM(NSUInteger, Signal) { /** *

Starts an asynchronous FFprobe execution for the given session. * - *

Note that this method returns immediately and does not wait the execution to complete. You must use an - * ExecuteCallback if you want to be notified about the result. + *

Note that this method returns immediately and does not wait the execution to complete. + * You must use an FFprobeSessionCompleteCallback if you want to be notified about the result. * * @param ffprobeSession FFprobe session which includes command options/arguments * @param queue dispatch queue that will be used to run this asynchronous operation @@ -233,8 +232,8 @@ typedef NS_ENUM(NSUInteger, Signal) { /** *

Starts an asynchronous FFprobe execution for the given media information session. * - *

Note that this method returns immediately and does not wait the execution to complete. You must use an - * ExecuteCallback if you want to be notified about the result. + *

Note that this method returns immediately and does not wait the execution to complete. + * You must use an MediaInformationSessionCompleteCallback if you want to be notified about the result. * * @param mediaInformationSession media information session which includes command options/arguments * @param waitTimeout max time to wait until media information is transmitted @@ -244,8 +243,8 @@ typedef NS_ENUM(NSUInteger, Signal) { /** *

Starts an asynchronous FFprobe execution for the given media information session. * - *

Note that this method returns immediately and does not wait the execution to complete. You must use an - * ExecuteCallback if you want to be notified about the result. + *

Note that this method returns immediately and does not wait the execution to complete. + * You must use an MediaInformationSessionCompleteCallback if you want to be notified about the result. * * @param mediaInformationSession media information session which includes command options/arguments * @param queue dispatch queue that will be used to run this asynchronous operation @@ -268,18 +267,47 @@ typedef NS_ENUM(NSUInteger, Signal) { + (void)enableStatisticsCallback:(StatisticsCallback)statisticsCallback; /** - *

Sets a global execute callback to receive execution results. + *

Sets a global FFmpegSessionCompleteCallback to receive execution results for FFmpeg sessions. * - * @param executeCallback execute callback or nil to disable a previously execute callback + * @param ffmpegSessionCompleteCallback complete callback or nil to disable a previously defined callback */ -+ (void)enableExecuteCallback:(ExecuteCallback)executeCallback; ++ (void)enableFFmpegSessionCompleteCallback:(FFmpegSessionCompleteCallback)ffmpegSessionCompleteCallback; /** - *

Returns the global execute callback. + *

Returns the global FFmpegSessionCompleteCallback set. * - * @return global execute callback + * @return global FFmpegSessionCompleteCallback or nil if it is not set */ -+ (ExecuteCallback)getExecuteCallback; ++ (FFmpegSessionCompleteCallback)getFFmpegSessionCompleteCallback; + +/** + *

Sets a global FFprobeSessionCompleteCallback to receive execution results for FFprobe sessions. + * + * @param ffprobeSessionCompleteCallback complete callback or nil to disable a previously defined callback + */ ++ (void)enableFFprobeSessionCompleteCallback:(FFprobeSessionCompleteCallback)ffprobeSessionCompleteCallback; + +/** + *

Returns the global FFprobeSessionCompleteCallback set. + * + * @return global FFprobeSessionCompleteCallback or nil if it is not set + */ ++ (FFprobeSessionCompleteCallback)getFFprobeSessionCompleteCallback; + +/** + *

Sets a global MediaInformationSessionCompleteCallback to receive execution results for MediaInformation sessions. + * + * @param mediaInformationSessionCompleteCallback complete callback or nil to disable a previously defined + * callback + */ ++ (void)enableMediaInformationSessionCompleteCallback:(MediaInformationSessionCompleteCallback)mediaInformationSessionCompleteCallback; + +/** + *

Returns the global MediaInformationSessionCompleteCallback set. + * + * @return global MediaInformationSessionCompleteCallback or nil if it is not set + */ ++ (MediaInformationSessionCompleteCallback)getMediaInformationSessionCompleteCallback; /** * Returns the current log level. @@ -367,6 +395,13 @@ typedef NS_ENUM(NSUInteger, Signal) { */ + (NSArray*)getFFprobeSessions; +/** + *

Returns all MediaInformation sessions in the session history. + * + * @return all MediaInformation sessions in the session history + */ ++ (NSArray*)getMediaInformationSessions; + /** *

Returns sessions that have the given state. * diff --git a/apple/src/FFmpegKitConfig.m b/apple/src/FFmpegKitConfig.m index 8896186..37a4756 100644 --- a/apple/src/FFmpegKitConfig.m +++ b/apple/src/FFmpegKitConfig.m @@ -67,8 +67,10 @@ static LogCallback logCallback; /** Holds callback defined to redirect statistics */ static StatisticsCallback statisticsCallback; -/** Holds callback defined to redirect asynchronous execution results */ -static ExecuteCallback executeCallback; +/** Holds complete callbacks defined to redirect asynchronous execution results */ +static FFmpegSessionCompleteCallback ffmpegSessionCompleteCallback; +static FFprobeSessionCompleteCallback ffprobeSessionCompleteCallback; +static MediaInformationSessionCompleteCallback mediaInformationSessionCompleteCallback; static LogRedirectionStrategy globalLogRedirectionStrategy; @@ -507,7 +509,7 @@ void process_log(long sessionId, int levelValue, AVBPrint* logMessage) { sessionLogCallback(log); } @catch(NSException* exception) { - NSLog(@"Exception thrown inside session LogCallback block. %@", [exception callStackSymbols]); + NSLog(@"Exception thrown inside session log callback. %@", [exception callStackSymbols]); } } } @@ -521,7 +523,7 @@ void process_log(long sessionId, int levelValue, AVBPrint* logMessage) { globalLogCallback(log); } @catch(NSException* exception) { - NSLog(@"Exception thrown inside global LogCallback block. %@", [exception callStackSymbols]); + NSLog(@"Exception thrown inside global log callback. %@", [exception callStackSymbols]); } } @@ -580,7 +582,7 @@ void process_statistics(long sessionId, int videoFrameNumber, float videoFps, fl sessionStatisticsCallback(statistics); } @catch(NSException* exception) { - NSLog(@"Exception thrown inside session StatisticsCallback block. %@", [exception callStackSymbols]); + NSLog(@"Exception thrown inside session statistics callback. %@", [exception callStackSymbols]); } } } @@ -591,7 +593,7 @@ void process_statistics(long sessionId, int videoFrameNumber, float videoFps, fl globalStatisticsCallback(statistics); } @catch(NSException* exception) { - NSLog(@"Exception thrown inside global StatisticsCallback block. %@", [exception callStackSymbols]); + NSLog(@"Exception thrown inside global statistics callback. %@", [exception callStackSymbols]); } } } @@ -751,7 +753,9 @@ int executeFFprobe(long sessionId, NSArray* arguments) { logCallback = nil; statisticsCallback = nil; - executeCallback = nil; + ffmpegSessionCompleteCallback = nil; + ffprobeSessionCompleteCallback = nil; + mediaInformationSessionCompleteCallback = nil; globalLogRedirectionStrategy = LogRedirectionStrategyPrintLogsWhenNoCallbacksDefined; @@ -1008,25 +1012,25 @@ int executeFFprobe(long sessionId, NSArray* arguments) { dispatch_async(queue, ^{ [FFmpegKitConfig ffmpegExecute:ffmpegSession]; - ExecuteCallback sessionExecuteCallback = [ffmpegSession getExecuteCallback]; - if (sessionExecuteCallback != nil) { + FFmpegSessionCompleteCallback completeCallback = [ffmpegSession getCompleteCallback]; + if (completeCallback != nil) { @try { // NOTIFY SESSION CALLBACK DEFINED - sessionExecuteCallback(ffmpegSession); + completeCallback(ffmpegSession); } @catch(NSException* exception) { - NSLog(@"Exception thrown inside session ExecuteCallback block. %@", [exception callStackSymbols]); + NSLog(@"Exception thrown inside session complete callback. %@", [exception callStackSymbols]); } } - ExecuteCallback globalExecuteCallback = [FFmpegKitConfig getExecuteCallback]; - if (globalExecuteCallback != nil) { + FFmpegSessionCompleteCallback globalFFmpegSessionCompleteCallback = [FFmpegKitConfig getFFmpegSessionCompleteCallback]; + if (globalFFmpegSessionCompleteCallback != nil) { @try { // NOTIFY SESSION CALLBACK DEFINED - globalExecuteCallback(ffmpegSession); + globalFFmpegSessionCompleteCallback(ffmpegSession); } @catch(NSException* exception) { - NSLog(@"Exception thrown inside session ExecuteCallback block. %@", [exception callStackSymbols]); + NSLog(@"Exception thrown inside global complete callback. %@", [exception callStackSymbols]); } } }); @@ -1040,25 +1044,25 @@ int executeFFprobe(long sessionId, NSArray* arguments) { dispatch_async(queue, ^{ [FFmpegKitConfig ffprobeExecute:ffprobeSession]; - ExecuteCallback sessionExecuteCallback = [ffprobeSession getExecuteCallback]; - if (sessionExecuteCallback != nil) { + FFprobeSessionCompleteCallback completeCallback = [ffprobeSession getCompleteCallback]; + if (completeCallback != nil) { @try { // NOTIFY SESSION CALLBACK DEFINED - sessionExecuteCallback(ffprobeSession); + completeCallback(ffprobeSession); } @catch(NSException* exception) { - NSLog(@"Exception thrown inside session ExecuteCallback block. %@", [exception callStackSymbols]); + NSLog(@"Exception thrown inside session complete callback. %@", [exception callStackSymbols]); } } - ExecuteCallback globalExecuteCallback = [FFmpegKitConfig getExecuteCallback]; - if (globalExecuteCallback != nil) { + FFprobeSessionCompleteCallback globalFFprobeSessionCompleteCallback = [FFmpegKitConfig getFFprobeSessionCompleteCallback]; + if (globalFFprobeSessionCompleteCallback != nil) { @try { // NOTIFY SESSION CALLBACK DEFINED - globalExecuteCallback(ffprobeSession); + globalFFprobeSessionCompleteCallback(ffprobeSession); } @catch(NSException* exception) { - NSLog(@"Exception thrown inside session ExecuteCallback block. %@", [exception callStackSymbols]); + NSLog(@"Exception thrown inside global complete callback. %@", [exception callStackSymbols]); } } }); @@ -1072,25 +1076,25 @@ int executeFFprobe(long sessionId, NSArray* arguments) { dispatch_async(queue, ^{ [FFmpegKitConfig getMediaInformationExecute:mediaInformationSession withTimeout:waitTimeout]; - ExecuteCallback sessionExecuteCallback = [mediaInformationSession getExecuteCallback]; - if (sessionExecuteCallback != nil) { + MediaInformationSessionCompleteCallback completeCallback = [mediaInformationSession getCompleteCallback]; + if (completeCallback != nil) { @try { // NOTIFY SESSION CALLBACK DEFINED - sessionExecuteCallback(mediaInformationSession); + completeCallback(mediaInformationSession); } @catch(NSException* exception) { - NSLog(@"Exception thrown inside session ExecuteCallback block. %@", [exception callStackSymbols]); + NSLog(@"Exception thrown inside session complete callback. %@", [exception callStackSymbols]); } } - ExecuteCallback globalExecuteCallback = [FFmpegKitConfig getExecuteCallback]; - if (globalExecuteCallback != nil) { + MediaInformationSessionCompleteCallback globalMediaInformationSessionCompleteCallback = [FFmpegKitConfig getMediaInformationSessionCompleteCallback]; + if (globalMediaInformationSessionCompleteCallback != nil) { @try { // NOTIFY SESSION CALLBACK DEFINED - globalExecuteCallback(mediaInformationSession); + globalMediaInformationSessionCompleteCallback(mediaInformationSession); } @catch(NSException* exception) { - NSLog(@"Exception thrown inside session ExecuteCallback block. %@", [exception callStackSymbols]); + NSLog(@"Exception thrown inside global complete callback. %@", [exception callStackSymbols]); } } }); @@ -1104,12 +1108,28 @@ int executeFFprobe(long sessionId, NSArray* arguments) { statisticsCallback = callback; } -+ (void)enableExecuteCallback:(ExecuteCallback)callback { - executeCallback = callback; ++ (void)enableFFmpegSessionCompleteCallback:(FFmpegSessionCompleteCallback)completeCallback { + ffmpegSessionCompleteCallback = completeCallback; } -+ (ExecuteCallback)getExecuteCallback { - return executeCallback; ++ (FFmpegSessionCompleteCallback)getFFmpegSessionCompleteCallback { + return ffmpegSessionCompleteCallback; +} + ++ (void)enableFFprobeSessionCompleteCallback:(FFprobeSessionCompleteCallback)completeCallback { + ffprobeSessionCompleteCallback = completeCallback; +} + ++ (FFprobeSessionCompleteCallback)getFFprobeSessionCompleteCallback { + return ffprobeSessionCompleteCallback; +} + ++ (void)enableMediaInformationSessionCompleteCallback:(MediaInformationSessionCompleteCallback)completeCallback { + mediaInformationSessionCompleteCallback = completeCallback; +} + ++ (MediaInformationSessionCompleteCallback)getMediaInformationSessionCompleteCallback { + return mediaInformationSessionCompleteCallback; } + (int)getLogLevel { @@ -1243,6 +1263,23 @@ int executeFFprobe(long sessionId, NSArray* arguments) { return ffprobeSessions; } ++ (NSArray*)getMediaInformationSessions { + NSMutableArray* mediaInformationSessions = [[NSMutableArray alloc] init]; + + [sessionHistoryLock lock]; + + for(int i = 0; i < [sessionHistoryList count]; i++) { + id session = [sessionHistoryList objectAtIndex:i]; + if ([session isMediaInformation]) { + [mediaInformationSessions addObject:session]; + } + } + + [sessionHistoryLock unlock]; + + return mediaInformationSessions; +} + + (NSArray*)getSessionsByState:(SessionState)state { NSMutableArray* sessions = [[NSMutableArray alloc] init]; diff --git a/apple/src/FFmpegSession.h b/apple/src/FFmpegSession.h index da376aa..fac4ff5 100644 --- a/apple/src/FFmpegSession.h +++ b/apple/src/FFmpegSession.h @@ -23,6 +23,7 @@ #import #import "AbstractSession.h" #import "StatisticsCallback.h" +#import "FFmpegSessionCompleteCallback.h" /** *

An FFmpeg session. @@ -39,31 +40,31 @@ /** * Builds a new FFmpeg session. * - * @param arguments command arguments - * @param executeCallback session specific execute callback + * @param arguments command arguments + * @param completeCallback session specific complete callback */ -- (instancetype)init:(NSArray*)arguments withExecuteCallback:(ExecuteCallback)executeCallback; +- (instancetype)init:(NSArray*)arguments withCompleteCallback:(FFmpegSessionCompleteCallback)completeCallback; /** * Builds a new FFmpeg session. * - * @param arguments command arguments - * @param executeCallback session specific execute callback - * @param logCallback session specific log callback - * @param statisticsCallback session specific statistics callback + * @param arguments command arguments + * @param completeCallback session specific complete callback + * @param logCallback session specific log callback + * @param statisticsCallback session specific statistics callback */ -- (instancetype)init:(NSArray*)arguments withExecuteCallback:(ExecuteCallback)executeCallback withLogCallback:(LogCallback)logCallback withStatisticsCallback:(StatisticsCallback)statisticsCallback; +- (instancetype)init:(NSArray*)arguments withCompleteCallback:(FFmpegSessionCompleteCallback)completeCallback withLogCallback:(LogCallback)logCallback withStatisticsCallback:(StatisticsCallback)statisticsCallback; /** * Builds a new FFmpeg session. * - * @param arguments command arguments - * @param executeCallback session specific execute callback - * @param logCallback session specific log callback - * @param statisticsCallback session specific statistics callback - * @param logRedirectionStrategy session specific log redirection strategy + * @param arguments command arguments + * @param completeCallback session specific complete callback + * @param logCallback session specific log callback + * @param statisticsCallback session specific statistics callback + * @param logRedirectionStrategy session specific log redirection strategy */ -- (instancetype)init:(NSArray*)arguments withExecuteCallback:(ExecuteCallback)executeCallback withLogCallback:(LogCallback)logCallback withStatisticsCallback:(StatisticsCallback)statisticsCallback withLogRedirectionStrategy:(LogRedirectionStrategy)logRedirectionStrategy; +- (instancetype)init:(NSArray*)arguments withCompleteCallback:(FFmpegSessionCompleteCallback)completeCallback withLogCallback:(LogCallback)logCallback withStatisticsCallback:(StatisticsCallback)statisticsCallback withLogRedirectionStrategy:(LogRedirectionStrategy)logRedirectionStrategy; /** * Returns the session specific statistics callback. @@ -72,6 +73,13 @@ */ - (StatisticsCallback)getStatisticsCallback; +/** + * Returns the session specific complete callback. + * + * @return session specific complete callback + */ +- (FFmpegSessionCompleteCallback)getCompleteCallback; + /** * Returns all statistics entries generated for this session. If there are asynchronous * messages that are not delivered yet, this method waits for them until the given timeout. @@ -108,10 +116,8 @@ - (Statistics*)getLastReceivedStatistics; /** - * Adds a new statistics entry for this session. - * - * It is invoked internally by FFmpegKit library methods. Must not be used by user - * applications. + * Adds a new statistics entry for this session. It is invoked internally by FFmpegKit library methods. + * Must not be used by user applications. * * @param statistics statistics entry */ diff --git a/apple/src/FFmpegSession.m b/apple/src/FFmpegSession.m index 0290153..6fdcd68 100644 --- a/apple/src/FFmpegSession.m +++ b/apple/src/FFmpegSession.m @@ -17,7 +17,6 @@ * along with FFmpegKit. If not, see . */ -#import "ExecuteCallback.h" #import "FFmpegSession.h" #import "FFmpegKitConfig.h" #import "LogCallback.h" @@ -25,6 +24,7 @@ @implementation FFmpegSession { StatisticsCallback _statisticsCallback; + FFmpegSessionCompleteCallback _completeCallback; NSMutableArray* _statistics; NSRecursiveLock* _statisticsLock; } @@ -35,10 +35,11 @@ - (instancetype)init:(NSArray*)arguments { - self = [super init:arguments withExecuteCallback:nil withLogCallback:nil withLogRedirectionStrategy:[FFmpegKitConfig getLogRedirectionStrategy]]; + self = [super init:arguments withLogCallback:nil withLogRedirectionStrategy:[FFmpegKitConfig getLogRedirectionStrategy]]; if (self) { _statisticsCallback = nil; + _completeCallback = nil; _statistics = [[NSMutableArray alloc] init]; _statisticsLock = [[NSRecursiveLock alloc] init]; } @@ -46,12 +47,13 @@ return self; } -- (instancetype)init:(NSArray*)arguments withExecuteCallback:(ExecuteCallback)executeCallback { +- (instancetype)init:(NSArray*)arguments withCompleteCallback:(FFmpegSessionCompleteCallback)completeCallback { - self = [super init:arguments withExecuteCallback:executeCallback withLogCallback:nil withLogRedirectionStrategy:[FFmpegKitConfig getLogRedirectionStrategy]]; + self = [super init:arguments withLogCallback:nil withLogRedirectionStrategy:[FFmpegKitConfig getLogRedirectionStrategy]]; if (self) { _statisticsCallback = nil; + _completeCallback = completeCallback; _statistics = [[NSMutableArray alloc] init]; _statisticsLock = [[NSRecursiveLock alloc] init]; } @@ -59,12 +61,13 @@ return self; } -- (instancetype)init:(NSArray*)arguments withExecuteCallback:(ExecuteCallback)executeCallback withLogCallback:(LogCallback)logCallback withStatisticsCallback:(StatisticsCallback)statisticsCallback { +- (instancetype)init:(NSArray*)arguments withCompleteCallback:(FFmpegSessionCompleteCallback)completeCallback withLogCallback:(LogCallback)logCallback withStatisticsCallback:(StatisticsCallback)statisticsCallback { - self = [super init:arguments withExecuteCallback:executeCallback withLogCallback:logCallback withLogRedirectionStrategy:[FFmpegKitConfig getLogRedirectionStrategy]]; + self = [super init:arguments withLogCallback:logCallback withLogRedirectionStrategy:[FFmpegKitConfig getLogRedirectionStrategy]]; if (self) { _statisticsCallback = statisticsCallback; + _completeCallback = completeCallback; _statistics = [[NSMutableArray alloc] init]; _statisticsLock = [[NSRecursiveLock alloc] init]; } @@ -72,12 +75,13 @@ return self; } -- (instancetype)init:(NSArray*)arguments withExecuteCallback:(ExecuteCallback)executeCallback withLogCallback:(LogCallback)logCallback withStatisticsCallback:(StatisticsCallback)statisticsCallback withLogRedirectionStrategy:(LogRedirectionStrategy)logRedirectionStrategy { +- (instancetype)init:(NSArray*)arguments withCompleteCallback:(FFmpegSessionCompleteCallback)completeCallback withLogCallback:(LogCallback)logCallback withStatisticsCallback:(StatisticsCallback)statisticsCallback withLogRedirectionStrategy:(LogRedirectionStrategy)logRedirectionStrategy { - self = [super init:arguments withExecuteCallback:executeCallback withLogCallback:logCallback withLogRedirectionStrategy:logRedirectionStrategy]; + self = [super init:arguments withLogCallback:logCallback withLogRedirectionStrategy:logRedirectionStrategy]; if (self) { _statisticsCallback = statisticsCallback; + _completeCallback = completeCallback; _statistics = [[NSMutableArray alloc] init]; _statisticsLock = [[NSRecursiveLock alloc] init]; } @@ -89,6 +93,10 @@ return _statisticsCallback; } +- (FFmpegSessionCompleteCallback)getCompleteCallback { + return _completeCallback; +} + - (NSArray*)getAllStatisticsWithTimeout:(int)waitTimeout { [self waitForAsynchronousMessagesInTransmit:waitTimeout]; @@ -137,5 +145,9 @@ return false; } +- (BOOL)isMediaInformation { + return false; +} + @end diff --git a/apple/src/ExecuteCallback.h b/apple/src/FFmpegSessionCompleteCallback.h similarity index 79% rename from apple/src/ExecuteCallback.h rename to apple/src/FFmpegSessionCompleteCallback.h index 44e113d..b874966 100644 --- a/apple/src/ExecuteCallback.h +++ b/apple/src/FFmpegSessionCompleteCallback.h @@ -17,13 +17,13 @@ * along with FFmpegKit. If not, see . */ -#ifndef FFMPEG_KIT_EXECUTE_CALLBACK_H -#define FFMPEG_KIT_EXECUTE_CALLBACK_H +#ifndef FFMPEG_KIT_FFMPEG_SESSION_COMPLETE_CALLBACK_H +#define FFMPEG_KIT_FFMPEG_SESSION_COMPLETE_CALLBACK_H -@protocol Session; +@class FFmpegSession; /** - *

Callback invoked when an asynchronous session ends running. + *

Callback function that is invoked when an asynchronous FFmpeg session has ended. *

Session has either SessionStateCompleted or SessionStateFailed state when * the callback is invoked. *

If it has SessionStateCompleted state, ReturnCode should be checked to @@ -43,8 +43,8 @@ * * @param session session of the completed execution */ -typedef void (^ExecuteCallback)(id session); +typedef void (^FFmpegSessionCompleteCallback)(FFmpegSession* session); -#import "Session.h" +#import "FFmpegSession.h" -#endif // FFMPEG_KIT_EXECUTE_CALLBACK_H +#endif // FFMPEG_KIT_FFMPEG_SESSION_COMPLETE_CALLBACK_H diff --git a/apple/src/FFprobeKit.h b/apple/src/FFprobeKit.h index 27efb99..dccb7de 100644 --- a/apple/src/FFprobeKit.h +++ b/apple/src/FFprobeKit.h @@ -32,11 +32,11 @@ *

  * FFprobeSession *session = [FFprobeKit execute:@"-hide_banner -v error -show_entries format=size -of default=noprint_wrappers=1 file1.mp4"];
  *
- * FFprobeSession *asyncSession = [FFprobeKit executeAsync:@"-hide_banner -v error -show_entries format=size -of default=noprint_wrappers=1 file1.mp4" withExecuteCallback:executeCallback];
+ * FFprobeSession *asyncSession = [FFprobeKit executeAsync:@"-hide_banner -v error -show_entries format=size -of default=noprint_wrappers=1 file1.mp4" withCompleteCallback:completeCallback];
  * 
*

Provides overloaded execute methods to define session specific callbacks. *

- * FFprobeSession *session = [FFprobeKit executeAsync:@"-hide_banner -v error -show_entries format=size -of default=noprint_wrappers=1 file1.mp4" withExecuteCallback:executeCallback withLogCallback:logCallback];
+ * FFprobeSession *session = [FFprobeKit executeAsync:@"-hide_banner -v error -show_entries format=size -of default=noprint_wrappers=1 file1.mp4" withCompleteCallback:completeCallback withLogCallback:logCallback];
  * 
*

It can extract media information for a file or a url, using getMediaInformation method. *

@@ -56,54 +56,54 @@
 /**
  * 

Starts an asynchronous FFprobe execution with arguments provided. * - *

Note that this method returns immediately and does not wait the execution to complete. You must use an - * ExecuteCallback if you want to be notified about the result. + *

Note that this method returns immediately and does not wait the execution to complete. + * You must use an FFprobeSessionCompleteCallback if you want to be notified about the result. * - * @param arguments FFprobe command options/arguments as string array - * @param executeCallback callback that will be called when the execution is completed + * @param arguments FFprobe command options/arguments as string array + * @param completeCallback callback that will be called when the execution has completed * @return FFprobe session created for this execution */ -+ (FFprobeSession*)executeWithArgumentsAsync:(NSArray*)arguments withExecuteCallback:(ExecuteCallback)executeCallback; ++ (FFprobeSession*)executeWithArgumentsAsync:(NSArray*)arguments withCompleteCallback:(FFprobeSessionCompleteCallback)completeCallback; /** *

Starts an asynchronous FFprobe execution with arguments provided. * - *

Note that this method returns immediately and does not wait the execution to complete. You must use an - * ExecuteCallback if you want to be notified about the result. + *

Note that this method returns immediately and does not wait the execution to complete. + * You must use an FFprobeSessionCompleteCallback if you want to be notified about the result. * - * @param arguments FFprobe command options/arguments as string array - * @param executeCallback callback that will be notified when execution is completed - * @param logCallback callback that will receive logs + * @param arguments FFprobe command options/arguments as string array + * @param completeCallback callback that will be notified when execution has completed + * @param logCallback callback that will receive logs * @return FFprobe session created for this execution */ -+ (FFprobeSession*)executeWithArgumentsAsync:(NSArray*)arguments withExecuteCallback:(ExecuteCallback)executeCallback withLogCallback:(LogCallback)logCallback; ++ (FFprobeSession*)executeWithArgumentsAsync:(NSArray*)arguments withCompleteCallback:(FFprobeSessionCompleteCallback)completeCallback withLogCallback:(LogCallback)logCallback; /** *

Starts an asynchronous FFprobe execution with arguments provided. * - *

Note that this method returns immediately and does not wait the execution to complete. You must use an - * ExecuteCallback if you want to be notified about the result. + *

Note that this method returns immediately and does not wait the execution to complete. + * You must use an FFprobeSessionCompleteCallback if you want to be notified about the result. * - * @param arguments FFprobe command options/arguments as string array - * @param executeCallback callback that will be called when the execution is completed - * @param queue dispatch queue that will be used to run this asynchronous operation + * @param arguments FFprobe command options/arguments as string array + * @param completeCallback callback that will be called when the execution has completed + * @param queue dispatch queue that will be used to run this asynchronous operation * @return FFprobe session created for this execution */ -+ (FFprobeSession*)executeWithArgumentsAsync:(NSArray*)arguments withExecuteCallback:(ExecuteCallback)executeCallback onDispatchQueue:(dispatch_queue_t)queue; ++ (FFprobeSession*)executeWithArgumentsAsync:(NSArray*)arguments withCompleteCallback:(FFprobeSessionCompleteCallback)completeCallback onDispatchQueue:(dispatch_queue_t)queue; /** *

Starts an asynchronous FFprobe execution with arguments provided. * - *

Note that this method returns immediately and does not wait the execution to complete. You must use an - * ExecuteCallback if you want to be notified about the result. + *

Note that this method returns immediately and does not wait the execution to complete. + * You must use an FFprobeSessionCompleteCallback if you want to be notified about the result. * - * @param arguments FFprobe command options/arguments as string array - * @param executeCallback callback that will be notified when execution is completed - * @param logCallback callback that will receive logs - * @param queue dispatch queue that will be used to run this asynchronous operation + * @param arguments FFprobe command options/arguments as string array + * @param completeCallback callback that will be notified when execution has completed + * @param logCallback callback that will receive logs + * @param queue dispatch queue that will be used to run this asynchronous operation * @return FFprobe session created for this execution */ -+ (FFprobeSession*)executeWithArgumentsAsync:(NSArray*)arguments withExecuteCallback:(ExecuteCallback)executeCallback withLogCallback:(LogCallback)logCallback onDispatchQueue:(dispatch_queue_t)queue; ++ (FFprobeSession*)executeWithArgumentsAsync:(NSArray*)arguments withCompleteCallback:(FFprobeSessionCompleteCallback)completeCallback withLogCallback:(LogCallback)logCallback onDispatchQueue:(dispatch_queue_t)queue; /** *

Synchronously executes FFprobe command provided. Space character is used to split command @@ -120,56 +120,56 @@ * into arguments. You can use single or double quote characters to specify arguments inside your command. * *

Note that this method returns immediately and does not wait the execution to complete. You must use an - * ExecuteCallback if you want to be notified about the result. + * FFprobeSessionCompleteCallback if you want to be notified about the result. * - * @param command FFprobe command - * @param executeCallback callback that will be called when the execution is completed + * @param command FFprobe command + * @param completeCallback callback that will be called when the execution has completed * @return FFprobe session created for this execution */ -+ (FFprobeSession*)executeAsync:(NSString*)command withExecuteCallback:(ExecuteCallback)executeCallback; ++ (FFprobeSession*)executeAsync:(NSString*)command withCompleteCallback:(FFprobeSessionCompleteCallback)completeCallback; /** *

Starts an asynchronous FFprobe execution for the given command. Space character is used to split the command * into arguments. You can use single or double quote characters to specify arguments inside your command. * *

Note that this method returns immediately and does not wait the execution to complete. You must use an - * ExecuteCallback if you want to be notified about the result. + * FFprobeSessionCompleteCallback if you want to be notified about the result. * - * @param command FFprobe command - * @param executeCallback callback that will be notified when execution is completed - * @param logCallback callback that will receive logs + * @param command FFprobe command + * @param completeCallback callback that will be notified when execution has completed + * @param logCallback callback that will receive logs * @return FFprobe session created for this execution */ -+ (FFprobeSession*)executeAsync:(NSString*)command withExecuteCallback:(ExecuteCallback)executeCallback withLogCallback:(LogCallback)logCallback; ++ (FFprobeSession*)executeAsync:(NSString*)command withCompleteCallback:(FFprobeSessionCompleteCallback)completeCallback withLogCallback:(LogCallback)logCallback; /** *

Starts an asynchronous FFprobe execution for the given command. Space character is used to split the command * into arguments. You can use single or double quote characters to specify arguments inside your command. * *

Note that this method returns immediately and does not wait the execution to complete. You must use an - * ExecuteCallback if you want to be notified about the result. + * FFprobeSessionCompleteCallback if you want to be notified about the result. * - * @param command FFprobe command - * @param executeCallback callback that will be called when the execution is completed - * @param queue dispatch queue that will be used to run this asynchronous operation + * @param command FFprobe command + * @param completeCallback callback that will be called when the execution has completed + * @param queue dispatch queue that will be used to run this asynchronous operation * @return FFprobe session created for this execution */ -+ (FFprobeSession*)executeAsync:(NSString*)command withExecuteCallback:(ExecuteCallback)executeCallback onDispatchQueue:(dispatch_queue_t)queue; ++ (FFprobeSession*)executeAsync:(NSString*)command withCompleteCallback:(FFprobeSessionCompleteCallback)completeCallback onDispatchQueue:(dispatch_queue_t)queue; /** *

Starts an asynchronous FFprobe execution for the given command. Space character is used to split the command * into arguments. You can use single or double quote characters to specify arguments inside your command. * *

Note that this method returns immediately and does not wait the execution to complete. You must use an - * ExecuteCallback if you want to be notified about the result. + * FFprobeSessionCompleteCallback if you want to be notified about the result. * - * @param command FFprobe command - * @param executeCallback callback that will be called when the execution is completed - * @param logCallback callback that will receive logs - * @param queue dispatch queue that will be used to run this asynchronous operation + * @param command FFprobe command + * @param completeCallback callback that will be called when the execution has completed + * @param logCallback callback that will receive logs + * @param queue dispatch queue that will be used to run this asynchronous operation * @return FFprobe session created for this execution */ -+ (FFprobeSession*)executeAsync:(NSString*)command withExecuteCallback:(ExecuteCallback)executeCallback withLogCallback:(LogCallback)logCallback onDispatchQueue:(dispatch_queue_t)queue; ++ (FFprobeSession*)executeAsync:(NSString*)command withCompleteCallback:(FFprobeSessionCompleteCallback)completeCallback withLogCallback:(LogCallback)logCallback onDispatchQueue:(dispatch_queue_t)queue; /** *

Extracts media information for the file specified with path. @@ -192,55 +192,55 @@ *

Starts an asynchronous FFprobe execution to extract the media information for the specified file. * *

Note that this method returns immediately and does not wait the execution to complete. You must use an - * ExecuteCallback if you want to be notified about the result. + * MediaInformationSessionCompleteCallback if you want to be notified about the result. * - * @param path path or uri of a media file - * @param executeCallback callback that will be called when the execution is completed + * @param path path or uri of a media file + * @param completeCallback callback that will be called when the execution has completed * @return media information session created for this execution */ -+ (MediaInformationSession*)getMediaInformationAsync:(NSString*)path withExecuteCallback:(ExecuteCallback)executeCallback; ++ (MediaInformationSession*)getMediaInformationAsync:(NSString*)path withCompleteCallback:(MediaInformationSessionCompleteCallback)completeCallback; /** *

Starts an asynchronous FFprobe execution to extract the media information for the specified file. * *

Note that this method returns immediately and does not wait the execution to complete. You must use an - * ExecuteCallback if you want to be notified about the result. + * MediaInformationSessionCompleteCallback if you want to be notified about the result. * - * @param path path or uri of a media file - * @param executeCallback callback that will be notified when execution is completed - * @param logCallback callback that will receive logs - * @param waitTimeout max time to wait until media information is transmitted + * @param path path or uri of a media file + * @param completeCallback callback that will be notified when execution has completed + * @param logCallback callback that will receive logs + * @param waitTimeout max time to wait until media information is transmitted * @return media information session created for this execution */ -+ (MediaInformationSession*)getMediaInformationAsync:(NSString*)path withExecuteCallback:(ExecuteCallback)executeCallback withLogCallback:(LogCallback)logCallback withTimeout:(int)waitTimeout; ++ (MediaInformationSession*)getMediaInformationAsync:(NSString*)path withCompleteCallback:(MediaInformationSessionCompleteCallback)completeCallback withLogCallback:(LogCallback)logCallback withTimeout:(int)waitTimeout; /** *

Starts an asynchronous FFprobe execution to extract the media information for the specified file. * *

Note that this method returns immediately and does not wait the execution to complete. You must use an - * ExecuteCallback if you want to be notified about the result. + * MediaInformationSessionCompleteCallback if you want to be notified about the result. * - * @param path path or uri of a media file - * @param executeCallback callback that will be called when the execution is completed - * @param queue dispatch queue that will be used to run this asynchronous operation + * @param path path or uri of a media file + * @param completeCallback callback that will be called when the execution has completed + * @param queue dispatch queue that will be used to run this asynchronous operation * @return media information session created for this execution */ -+ (MediaInformationSession*)getMediaInformationAsync:(NSString*)path withExecuteCallback:(ExecuteCallback)executeCallback onDispatchQueue:(dispatch_queue_t)queue; ++ (MediaInformationSession*)getMediaInformationAsync:(NSString*)path withCompleteCallback:(MediaInformationSessionCompleteCallback)completeCallback onDispatchQueue:(dispatch_queue_t)queue; /** *

Starts an asynchronous FFprobe execution to extract the media information for the specified file. * *

Note that this method returns immediately and does not wait the execution to complete. You must use an - * ExecuteCallback if you want to be notified about the result. + * MediaInformationSessionCompleteCallback if you want to be notified about the result. * - * @param path path or uri of a media file - * @param executeCallback callback that will be notified when execution is completed - * @param logCallback callback that will receive logs - * @param queue dispatch queue that will be used to run this asynchronous operation - * @param waitTimeout max time to wait until media information is transmitted + * @param path path or uri of a media file + * @param completeCallback callback that will be notified when execution has completed + * @param logCallback callback that will receive logs + * @param queue dispatch queue that will be used to run this asynchronous operation + * @param waitTimeout max time to wait until media information is transmitted * @return media information session created for this execution */ -+ (MediaInformationSession*)getMediaInformationAsync:(NSString*)path withExecuteCallback:(ExecuteCallback)executeCallback withLogCallback:(LogCallback)logCallback onDispatchQueue:(dispatch_queue_t)queue withTimeout:(int)waitTimeout; ++ (MediaInformationSession*)getMediaInformationAsync:(NSString*)path withCompleteCallback:(MediaInformationSessionCompleteCallback)completeCallback withLogCallback:(LogCallback)logCallback onDispatchQueue:(dispatch_queue_t)queue withTimeout:(int)waitTimeout; /** *

Extracts media information using the command provided asynchronously. @@ -255,16 +255,16 @@ * this method must generate the output in JSON format in order to successfully extract media information from it. * *

Note that this method returns immediately and does not wait the execution to complete. You must use an - * ExecuteCallback if you want to be notified about the result. + * MediaInformationSessionCompleteCallback if you want to be notified about the result. * - * @param command FFprobe command that prints media information for a file in JSON format - * @param executeCallback callback that will be notified when execution is completed - * @param logCallback callback that will receive logs - * @param queue dispatch queue that will be used to run this asynchronous operation - * @param waitTimeout max time to wait until media information is transmitted + * @param command FFprobe command that prints media information for a file in JSON format + * @param completeCallback callback that will be notified when execution has completed + * @param logCallback callback that will receive logs + * @param queue dispatch queue that will be used to run this asynchronous operation + * @param waitTimeout max time to wait until media information is transmitted * @return media information session created for this execution */ -+ (MediaInformationSession*)getMediaInformationFromCommandAsync:(NSString*)command withExecuteCallback:(ExecuteCallback)executeCallback withLogCallback:(LogCallback)logCallback onDispatchQueue:(dispatch_queue_t)queue withTimeout:(int)waitTimeout; ++ (MediaInformationSession*)getMediaInformationFromCommandAsync:(NSString*)command withCompleteCallback:(MediaInformationSessionCompleteCallback)completeCallback withLogCallback:(LogCallback)logCallback onDispatchQueue:(dispatch_queue_t)queue withTimeout:(int)waitTimeout; /** *

Starts an asynchronous FFprobe execution to extract media information using command arguments. The command @@ -272,23 +272,30 @@ * from it. * *

Note that this method returns immediately and does not wait the execution to complete. You must use an - * ExecuteCallback if you want to be notified about the result. + * MediaInformationSessionCompleteCallback if you want to be notified about the result. * - * @param command FFprobe command that prints media information for a file in JSON format - * @param executeCallback callback that will be notified when execution is completed - * @param logCallback callback that will receive logs - * @param queue dispatch queue that will be used to run this asynchronous operation - * @param waitTimeout max time to wait until media information is transmitted + * @param command FFprobe command that prints media information for a file in JSON format + * @param completeCallback callback that will be notified when execution has completed + * @param logCallback callback that will receive logs + * @param queue dispatch queue that will be used to run this asynchronous operation + * @param waitTimeout max time to wait until media information is transmitted * @return media information session created for this execution */ -+ (MediaInformationSession*)getMediaInformationFromCommandArgumentsAsync:(NSArray*)arguments withExecuteCallback:(ExecuteCallback)executeCallback withLogCallback:(LogCallback)logCallback onDispatchQueue:(dispatch_queue_t)queue withTimeout:(int)waitTimeout; ++ (MediaInformationSession*)getMediaInformationFromCommandArgumentsAsync:(NSArray*)arguments withCompleteCallback:(MediaInformationSessionCompleteCallback)completeCallback withLogCallback:(LogCallback)logCallback onDispatchQueue:(dispatch_queue_t)queue withTimeout:(int)waitTimeout; /** *

Lists all FFprobe sessions in the session history. * * @return all FFprobe sessions in the session history */ -+ (NSArray*)listSessions; ++ (NSArray*)listFFprobeSessions; + +/** + *

Lists all MediaInformation sessions in the session history. + * + * @return all MediaInformation sessions in the session history + */ ++ (NSArray*)listMediaInformationSessions; @end diff --git a/apple/src/FFprobeKit.m b/apple/src/FFprobeKit.m index cc013ea..59cdeab 100644 --- a/apple/src/FFprobeKit.m +++ b/apple/src/FFprobeKit.m @@ -38,26 +38,26 @@ return session; } -+ (FFprobeSession*)executeWithArgumentsAsync:(NSArray*)arguments withExecuteCallback:(ExecuteCallback)executeCallback { - FFprobeSession* session = [[FFprobeSession alloc] init:arguments withExecuteCallback:executeCallback]; ++ (FFprobeSession*)executeWithArgumentsAsync:(NSArray*)arguments withCompleteCallback:(FFprobeSessionCompleteCallback)completeCallback { + FFprobeSession* session = [[FFprobeSession alloc] init:arguments withCompleteCallback:completeCallback]; [FFmpegKitConfig asyncFFprobeExecute:session]; return session; } -+ (FFprobeSession*)executeWithArgumentsAsync:(NSArray*)arguments withExecuteCallback:(ExecuteCallback)executeCallback withLogCallback:(LogCallback)logCallback { - FFprobeSession* session = [[FFprobeSession alloc] init:arguments withExecuteCallback:executeCallback withLogCallback:logCallback]; ++ (FFprobeSession*)executeWithArgumentsAsync:(NSArray*)arguments withCompleteCallback:(FFprobeSessionCompleteCallback)completeCallback withLogCallback:(LogCallback)logCallback { + FFprobeSession* session = [[FFprobeSession alloc] init:arguments withCompleteCallback:completeCallback withLogCallback:logCallback]; [FFmpegKitConfig asyncFFprobeExecute:session]; return session; } -+ (FFprobeSession*)executeWithArgumentsAsync:(NSArray*)arguments withExecuteCallback:(ExecuteCallback)executeCallback onDispatchQueue:(dispatch_queue_t)queue { - FFprobeSession* session = [[FFprobeSession alloc] init:arguments withExecuteCallback:executeCallback]; ++ (FFprobeSession*)executeWithArgumentsAsync:(NSArray*)arguments withCompleteCallback:(FFprobeSessionCompleteCallback)completeCallback onDispatchQueue:(dispatch_queue_t)queue { + FFprobeSession* session = [[FFprobeSession alloc] init:arguments withCompleteCallback:completeCallback]; [FFmpegKitConfig asyncFFprobeExecute:session onDispatchQueue:queue]; return session; } -+ (FFprobeSession*)executeWithArgumentsAsync:(NSArray*)arguments withExecuteCallback:(ExecuteCallback)executeCallback withLogCallback:(LogCallback)logCallback onDispatchQueue:(dispatch_queue_t)queue { - FFprobeSession* session = [[FFprobeSession alloc] init:arguments withExecuteCallback:executeCallback withLogCallback:logCallback]; ++ (FFprobeSession*)executeWithArgumentsAsync:(NSArray*)arguments withCompleteCallback:(FFprobeSessionCompleteCallback)completeCallback withLogCallback:(LogCallback)logCallback onDispatchQueue:(dispatch_queue_t)queue { + FFprobeSession* session = [[FFprobeSession alloc] init:arguments withCompleteCallback:completeCallback withLogCallback:logCallback]; [FFmpegKitConfig asyncFFprobeExecute:session onDispatchQueue:queue]; return session; } @@ -68,26 +68,26 @@ return session; } -+ (FFprobeSession*)executeAsync:(NSString*)command withExecuteCallback:(ExecuteCallback)executeCallback { - FFprobeSession* session = [[FFprobeSession alloc] init:[FFmpegKitConfig parseArguments:command] withExecuteCallback:executeCallback]; ++ (FFprobeSession*)executeAsync:(NSString*)command withCompleteCallback:(FFprobeSessionCompleteCallback)completeCallback { + FFprobeSession* session = [[FFprobeSession alloc] init:[FFmpegKitConfig parseArguments:command] withCompleteCallback:completeCallback]; [FFmpegKitConfig asyncFFprobeExecute:session]; return session; } -+ (FFprobeSession*)executeAsync:(NSString*)command withExecuteCallback:(ExecuteCallback)executeCallback withLogCallback:(LogCallback)logCallback { - FFprobeSession* session = [[FFprobeSession alloc] init:[FFmpegKitConfig parseArguments:command] withExecuteCallback:executeCallback withLogCallback:logCallback]; ++ (FFprobeSession*)executeAsync:(NSString*)command withCompleteCallback:(FFprobeSessionCompleteCallback)completeCallback withLogCallback:(LogCallback)logCallback { + FFprobeSession* session = [[FFprobeSession alloc] init:[FFmpegKitConfig parseArguments:command] withCompleteCallback:completeCallback withLogCallback:logCallback]; [FFmpegKitConfig asyncFFprobeExecute:session]; return session; } -+ (FFprobeSession*)executeAsync:(NSString*)command withExecuteCallback:(ExecuteCallback)executeCallback onDispatchQueue:(dispatch_queue_t)queue { - FFprobeSession* session = [[FFprobeSession alloc] init:[FFmpegKitConfig parseArguments:command] withExecuteCallback:executeCallback]; ++ (FFprobeSession*)executeAsync:(NSString*)command withCompleteCallback:(FFprobeSessionCompleteCallback)completeCallback onDispatchQueue:(dispatch_queue_t)queue { + FFprobeSession* session = [[FFprobeSession alloc] init:[FFmpegKitConfig parseArguments:command] withCompleteCallback:completeCallback]; [FFmpegKitConfig asyncFFprobeExecute:session onDispatchQueue:queue]; return session; } -+ (FFprobeSession*)executeAsync:(NSString*)command withExecuteCallback:(ExecuteCallback)executeCallback withLogCallback:(LogCallback)logCallback onDispatchQueue:(dispatch_queue_t)queue { - FFprobeSession* session = [[FFprobeSession alloc] init:[FFmpegKitConfig parseArguments:command] withExecuteCallback:executeCallback withLogCallback:logCallback]; ++ (FFprobeSession*)executeAsync:(NSString*)command withCompleteCallback:(FFprobeSessionCompleteCallback)completeCallback withLogCallback:(LogCallback)logCallback onDispatchQueue:(dispatch_queue_t)queue { + FFprobeSession* session = [[FFprobeSession alloc] init:[FFmpegKitConfig parseArguments:command] withCompleteCallback:completeCallback withLogCallback:logCallback]; [FFmpegKitConfig asyncFFprobeExecute:session onDispatchQueue:queue]; return session; } @@ -106,30 +106,30 @@ return session; } -+ (MediaInformationSession*)getMediaInformationAsync:(NSString*)path withExecuteCallback:(ExecuteCallback)executeCallback { ++ (MediaInformationSession*)getMediaInformationAsync:(NSString*)path withCompleteCallback:(MediaInformationSessionCompleteCallback)completeCallback { NSArray* arguments = [FFprobeKit defaultGetMediaInformationCommandArguments:path]; - MediaInformationSession* session = [[MediaInformationSession alloc] init:arguments withExecuteCallback:executeCallback]; + MediaInformationSession* session = [[MediaInformationSession alloc] init:arguments withCompleteCallback:completeCallback]; [FFmpegKitConfig asyncGetMediaInformationExecute:session withTimeout:AbstractSessionDefaultTimeoutForAsynchronousMessagesInTransmit]; return session; } -+ (MediaInformationSession*)getMediaInformationAsync:(NSString*)path withExecuteCallback:(ExecuteCallback)executeCallback withLogCallback:(LogCallback)logCallback withTimeout:(int)waitTimeout { ++ (MediaInformationSession*)getMediaInformationAsync:(NSString*)path withCompleteCallback:(MediaInformationSessionCompleteCallback)completeCallback withLogCallback:(LogCallback)logCallback withTimeout:(int)waitTimeout { NSArray* arguments = [FFprobeKit defaultGetMediaInformationCommandArguments:path]; - MediaInformationSession* session = [[MediaInformationSession alloc] init:arguments withExecuteCallback:executeCallback withLogCallback:logCallback]; + MediaInformationSession* session = [[MediaInformationSession alloc] init:arguments withCompleteCallback:completeCallback withLogCallback:logCallback]; [FFmpegKitConfig asyncGetMediaInformationExecute:session withTimeout:waitTimeout]; return session; } -+ (MediaInformationSession*)getMediaInformationAsync:(NSString*)path withExecuteCallback:(ExecuteCallback)executeCallback onDispatchQueue:(dispatch_queue_t)queue { ++ (MediaInformationSession*)getMediaInformationAsync:(NSString*)path withCompleteCallback:(MediaInformationSessionCompleteCallback)completeCallback onDispatchQueue:(dispatch_queue_t)queue { NSArray* arguments = [FFprobeKit defaultGetMediaInformationCommandArguments:path]; - MediaInformationSession* session = [[MediaInformationSession alloc] init:arguments withExecuteCallback:executeCallback]; + MediaInformationSession* session = [[MediaInformationSession alloc] init:arguments withCompleteCallback:completeCallback]; [FFmpegKitConfig asyncGetMediaInformationExecute:session onDispatchQueue:queue withTimeout:AbstractSessionDefaultTimeoutForAsynchronousMessagesInTransmit]; return session; } -+ (MediaInformationSession*)getMediaInformationAsync:(NSString*)path withExecuteCallback:(ExecuteCallback)executeCallback withLogCallback:(LogCallback)logCallback onDispatchQueue:(dispatch_queue_t)queue withTimeout:(int)waitTimeout { ++ (MediaInformationSession*)getMediaInformationAsync:(NSString*)path withCompleteCallback:(MediaInformationSessionCompleteCallback)completeCallback withLogCallback:(LogCallback)logCallback onDispatchQueue:(dispatch_queue_t)queue withTimeout:(int)waitTimeout { NSArray* arguments = [FFprobeKit defaultGetMediaInformationCommandArguments:path]; - MediaInformationSession* session = [[MediaInformationSession alloc] init:arguments withExecuteCallback:executeCallback]; + MediaInformationSession* session = [[MediaInformationSession alloc] init:arguments withCompleteCallback:completeCallback]; [FFmpegKitConfig asyncGetMediaInformationExecute:session onDispatchQueue:queue withTimeout:waitTimeout]; return session; } @@ -140,20 +140,24 @@ return session; } -+ (MediaInformationSession*)getMediaInformationFromCommandAsync:(NSString*)command withExecuteCallback:(ExecuteCallback)executeCallback withLogCallback:(LogCallback)logCallback onDispatchQueue:(dispatch_queue_t)queue withTimeout:(int)waitTimeout { - MediaInformationSession* session = [[MediaInformationSession alloc] init:[FFmpegKitConfig parseArguments:command] withExecuteCallback:executeCallback withLogCallback:logCallback]; ++ (MediaInformationSession*)getMediaInformationFromCommandAsync:(NSString*)command withCompleteCallback:(MediaInformationSessionCompleteCallback)completeCallback withLogCallback:(LogCallback)logCallback onDispatchQueue:(dispatch_queue_t)queue withTimeout:(int)waitTimeout { + MediaInformationSession* session = [[MediaInformationSession alloc] init:[FFmpegKitConfig parseArguments:command] withCompleteCallback:completeCallback withLogCallback:logCallback]; [FFmpegKitConfig asyncGetMediaInformationExecute:session onDispatchQueue:queue withTimeout:waitTimeout]; return session; } -+ (MediaInformationSession*)getMediaInformationFromCommandArgumentsAsync:(NSArray*)arguments withExecuteCallback:(ExecuteCallback)executeCallback withLogCallback:(LogCallback)logCallback onDispatchQueue:(dispatch_queue_t)queue withTimeout:(int)waitTimeout { - MediaInformationSession* session = [[MediaInformationSession alloc] init:arguments withExecuteCallback:executeCallback withLogCallback:logCallback]; ++ (MediaInformationSession*)getMediaInformationFromCommandArgumentsAsync:(NSArray*)arguments withCompleteCallback:(MediaInformationSessionCompleteCallback)completeCallback withLogCallback:(LogCallback)logCallback onDispatchQueue:(dispatch_queue_t)queue withTimeout:(int)waitTimeout { + MediaInformationSession* session = [[MediaInformationSession alloc] init:arguments withCompleteCallback:completeCallback withLogCallback:logCallback]; [FFmpegKitConfig asyncGetMediaInformationExecute:session onDispatchQueue:queue withTimeout:waitTimeout]; return session; } -+ (NSArray*)listSessions { ++ (NSArray*)listFFprobeSessions { return [FFmpegKitConfig getFFprobeSessions]; } ++ (NSArray*)listMediaInformationSessions { + return [FFmpegKitConfig getMediaInformationSessions]; +} + @end diff --git a/apple/src/FFprobeSession.h b/apple/src/FFprobeSession.h index 4565fca..40f62df 100644 --- a/apple/src/FFprobeSession.h +++ b/apple/src/FFprobeSession.h @@ -22,6 +22,7 @@ #import #import "AbstractSession.h" +#import "FFprobeSessionCompleteCallback.h" /** *

An FFprobe session. @@ -38,29 +39,36 @@ /** * Builds a new FFprobe session. * - * @param arguments command arguments - * @param executeCallback session specific execute callback + * @param arguments command arguments + * @param completeCallback session specific complete callback */ -- (instancetype)init:(NSArray*)arguments withExecuteCallback:(ExecuteCallback)executeCallback; +- (instancetype)init:(NSArray*)arguments withCompleteCallback:(FFprobeSessionCompleteCallback)completeCallback; /** * Builds a new FFprobe session. * - * @param arguments command arguments - * @param executeCallback session specific execute callback - * @param logCallback session specific log callback + * @param arguments command arguments + * @param completeCallback session specific complete callback + * @param logCallback session specific log callback */ -- (instancetype)init:(NSArray*)arguments withExecuteCallback:(ExecuteCallback)executeCallback withLogCallback:(LogCallback)logCallback; +- (instancetype)init:(NSArray*)arguments withCompleteCallback:(FFprobeSessionCompleteCallback)completeCallback withLogCallback:(LogCallback)logCallback; /** * Builds a new FFprobe session. * - * @param arguments command arguments - * @param executeCallback session specific execute callback - * @param logCallback session specific log callback - * @param logRedirectionStrategy session specific log redirection strategy + * @param arguments command arguments + * @param completeCallback session specific complete callback + * @param logCallback session specific log callback + * @param logRedirectionStrategy session specific log redirection strategy */ -- (instancetype)init:(NSArray*)arguments withExecuteCallback:(ExecuteCallback)executeCallback withLogCallback:(LogCallback)logCallback withLogRedirectionStrategy:(LogRedirectionStrategy)logRedirectionStrategy; +- (instancetype)init:(NSArray*)arguments withCompleteCallback:(FFprobeSessionCompleteCallback)completeCallback withLogCallback:(LogCallback)logCallback withLogRedirectionStrategy:(LogRedirectionStrategy)logRedirectionStrategy; + +/** + * Returns the session specific complete callback. + * + * @return session specific complete callback + */ +- (FFprobeSessionCompleteCallback)getCompleteCallback; @end diff --git a/apple/src/FFprobeSession.m b/apple/src/FFprobeSession.m index f6c1582..8036d91 100644 --- a/apple/src/FFprobeSession.m +++ b/apple/src/FFprobeSession.m @@ -17,45 +17,66 @@ * along with FFmpegKit. If not, see . */ -#import "ExecuteCallback.h" #import "FFprobeSession.h" #import "FFmpegKitConfig.h" #import "LogCallback.h" -@implementation FFprobeSession +@implementation FFprobeSession { + FFprobeSessionCompleteCallback _completeCallback; +} + ++ (void)initialize { + // EMPTY INITIALIZE +} - (instancetype)init:(NSArray*)arguments { - self = [super init:arguments withExecuteCallback:nil withLogCallback:nil withLogRedirectionStrategy:[FFmpegKitConfig getLogRedirectionStrategy]]; + self = [super init:arguments withLogCallback:nil withLogRedirectionStrategy:[FFmpegKitConfig getLogRedirectionStrategy]]; + + if (self) { + _completeCallback = nil; + } return self; } -+ (void)initialize { - // EMPTY INITIALIZE -} +- (instancetype)init:(NSArray*)arguments withCompleteCallback:(FFprobeSessionCompleteCallback)completeCallback { -- (instancetype)init:(NSArray*)arguments withExecuteCallback:(ExecuteCallback)executeCallback { + self = [super init:arguments withLogCallback:nil withLogRedirectionStrategy:[FFmpegKitConfig getLogRedirectionStrategy]]; - self = [super init:arguments withExecuteCallback:executeCallback withLogCallback:nil withLogRedirectionStrategy:[FFmpegKitConfig getLogRedirectionStrategy]]; + if (self) { + _completeCallback = completeCallback; + } return self; } -- (instancetype)init:(NSArray*)arguments withExecuteCallback:(ExecuteCallback)executeCallback withLogCallback:(LogCallback)logCallback { +- (instancetype)init:(NSArray*)arguments withCompleteCallback:(FFprobeSessionCompleteCallback)completeCallback withLogCallback:(LogCallback)logCallback { + + self = [super init:arguments withLogCallback:logCallback withLogRedirectionStrategy:[FFmpegKitConfig getLogRedirectionStrategy]]; - self = [super init:arguments withExecuteCallback:executeCallback withLogCallback:logCallback withLogRedirectionStrategy:[FFmpegKitConfig getLogRedirectionStrategy]]; + if (self) { + _completeCallback = completeCallback; + } return self; } -- (instancetype)init:(NSArray*)arguments withExecuteCallback:(ExecuteCallback)executeCallback withLogCallback:(LogCallback)logCallback withLogRedirectionStrategy:(LogRedirectionStrategy)logRedirectionStrategy { +- (instancetype)init:(NSArray*)arguments withCompleteCallback:(FFprobeSessionCompleteCallback)completeCallback withLogCallback:(LogCallback)logCallback withLogRedirectionStrategy:(LogRedirectionStrategy)logRedirectionStrategy { - self = [super init:arguments withExecuteCallback:executeCallback withLogCallback:logCallback withLogRedirectionStrategy:logRedirectionStrategy]; + self = [super init:arguments withLogCallback:logCallback withLogRedirectionStrategy:logRedirectionStrategy]; + + if (self) { + _completeCallback = completeCallback; + } return self; } +- (FFprobeSessionCompleteCallback)getCompleteCallback { + return _completeCallback; +} + - (BOOL)isFFmpeg { return false; } @@ -64,5 +85,9 @@ return true; } +- (BOOL)isMediaInformation { + return false; +} + @end diff --git a/apple/src/FFprobeSessionCompleteCallback.h b/apple/src/FFprobeSessionCompleteCallback.h new file mode 100644 index 0000000..6189634 --- /dev/null +++ b/apple/src/FFprobeSessionCompleteCallback.h @@ -0,0 +1,50 @@ +/* + * Copyright (c) 2020-2021 Taner Sener + * + * This file is part of FFmpegKit. + * + * FFmpegKit is free software: you can redistribute it and/or modify + * it under the terms of the GNU Lesser General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * FFmpegKit is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public License + * along with FFmpegKit. If not, see . + */ + +#ifndef FFMPEG_KIT_FFPROBE_SESSION_COMPLETE_CALLBACK_H +#define FFMPEG_KIT_FFPROBE_SESSION_COMPLETE_CALLBACK_H + +@class FFprobeSession; + +/** + *

Callback function that is invoked when an asynchronous FFprobe session has ended. + *

Session has either SessionStateCompleted or SessionStateFailed state when + * the callback is invoked. + *

If it has SessionStateCompleted state, ReturnCode should be checked to + * see the execution result. + *

If getState returns SessionStateFailed then + * getFailStackTrace should be used to get the failure reason. + *

+ *  switch ([session getState]) {
+ *      case SessionStateCompleted:
+ *          ReturnCode *returnCode = [session getReturnCode];
+ *          break;
+ *      case SessionStateFailed:
+ *          NSString *failStackTrace = [session getFailStackTrace];
+ *          break;
+ *  }
+ * 
+ * + * @param session session of the completed execution + */ +typedef void (^FFprobeSessionCompleteCallback)(FFprobeSession* session); + +#import "FFprobeSession.h" + +#endif // FFMPEG_KIT_FFPROBE_SESSION_COMPLETE_CALLBACK_H diff --git a/apple/src/Makefile.am b/apple/src/Makefile.am index 2a2d6d8..40ce966 100644 --- a/apple/src/Makefile.am +++ b/apple/src/Makefile.am @@ -37,28 +37,30 @@ include_HEADERS = \ ArchDetect.h \ AtomicLong.h \ Chapter.h \ - ExecuteCallback.h \ FFmpegKit.h \ FFmpegKitConfig.h \ FFmpegSession.h \ - FFprobeKit.h \ - FFprobeSession.h \ - Level.h \ - Log.h \ - LogCallback.h \ - LogRedirectionStrategy.h \ - MediaInformation.h \ - MediaInformationJsonParser.h \ - MediaInformationSession.h \ - Packages.h \ - ReturnCode.h \ - Session.h \ - SessionState.h \ - Statistics.h \ - StatisticsCallback.h \ - StreamInformation.h \ - ffmpegkit_exception.h \ - fftools_cmdutils.h \ + FFmpegSessionCompleteCallback.h \ + FFprobeKit.h \ + FFprobeSession.h \ + FFprobeSessionCompleteCallback.h \ + Level.h \ + Log.h \ + LogCallback.h \ + LogRedirectionStrategy.h \ + MediaInformation.h \ + MediaInformationJsonParser.h \ + MediaInformationSession.h \ + MediaInformationSessionCompleteCallback.h \ + Packages.h \ + ReturnCode.h \ + Session.h \ + SessionState.h \ + Statistics.h \ + StatisticsCallback.h \ + StreamInformation.h \ + ffmpegkit_exception.h \ + fftools_cmdutils.h \ fftools_ffmpeg.h libffmpegkit_la_CFLAGS = $(CFLAGS) diff --git a/apple/src/Makefile.in b/apple/src/Makefile.in index 600e946..1020462 100644 --- a/apple/src/Makefile.in +++ b/apple/src/Makefile.in @@ -414,28 +414,30 @@ include_HEADERS = \ ArchDetect.h \ AtomicLong.h \ Chapter.h \ - ExecuteCallback.h \ FFmpegKit.h \ FFmpegKitConfig.h \ FFmpegSession.h \ - FFprobeKit.h \ - FFprobeSession.h \ - Level.h \ - Log.h \ - LogCallback.h \ - LogRedirectionStrategy.h \ - MediaInformation.h \ - MediaInformationJsonParser.h \ - MediaInformationSession.h \ - Packages.h \ - ReturnCode.h \ - Session.h \ - SessionState.h \ - Statistics.h \ - StatisticsCallback.h \ - StreamInformation.h \ - ffmpegkit_exception.h \ - fftools_cmdutils.h \ + FFmpegSessionCompleteCallback.h \ + FFprobeKit.h \ + FFprobeSession.h \ + FFprobeSessionCompleteCallback.h \ + Level.h \ + Log.h \ + LogCallback.h \ + LogRedirectionStrategy.h \ + MediaInformation.h \ + MediaInformationJsonParser.h \ + MediaInformationSession.h \ + MediaInformationSessionCompleteCallback.h \ + Packages.h \ + ReturnCode.h \ + Session.h \ + SessionState.h \ + Statistics.h \ + StatisticsCallback.h \ + StreamInformation.h \ + ffmpegkit_exception.h \ + fftools_cmdutils.h \ fftools_ffmpeg.h libffmpegkit_la_CFLAGS = $(CFLAGS) diff --git a/apple/src/MediaInformationSession.h b/apple/src/MediaInformationSession.h index 3b6f2c7..e529edb 100644 --- a/apple/src/MediaInformationSession.h +++ b/apple/src/MediaInformationSession.h @@ -21,14 +21,15 @@ #define FFMPEG_KIT_MEDIA_INFORMATION_SESSION_H #import -#import "FFprobeSession.h" +#import "AbstractSession.h" #import "MediaInformation.h" +#import "MediaInformationSessionCompleteCallback.h" /** *

A custom FFprobe session, which produces a MediaInformation object using the * FFprobe output. */ -@interface MediaInformationSession : FFprobeSession +@interface MediaInformationSession : AbstractSession /** * Creates a new media information session. @@ -40,19 +41,19 @@ /** * Creates a new media information session. * - * @param arguments command arguments - * @param executeCallback session specific execute callback + * @param arguments command arguments + * @param completeCallback session specific complete callback */ -- (instancetype)init:(NSArray*)arguments withExecuteCallback:(ExecuteCallback)executeCallback; +- (instancetype)init:(NSArray*)arguments withCompleteCallback:(MediaInformationSessionCompleteCallback)completeCallback; /** * Creates a new media information session. * - * @param arguments command arguments - * @param executeCallback session specific execute callback - * @param logCallback session specific log callback + * @param arguments command arguments + * @param completeCallback session specific complete callback + * @param logCallback session specific log callback */ -- (instancetype)init:(NSArray*)arguments withExecuteCallback:(ExecuteCallback)executeCallback withLogCallback:(LogCallback)logCallback; +- (instancetype)init:(NSArray*)arguments withCompleteCallback:(MediaInformationSessionCompleteCallback)completeCallback withLogCallback:(LogCallback)logCallback; /** * Returns the media information extracted in this session. @@ -69,6 +70,13 @@ */ - (void)setMediaInformation:(MediaInformation*)mediaInformation; +/** + * Returns the session specific complete callback. + * + * @return session specific complete callback + */ +- (MediaInformationSessionCompleteCallback)getCompleteCallback; + @end #endif // FFMPEG_KIT_MEDIA_INFORMATION_SESSION_H diff --git a/apple/src/MediaInformationSession.m b/apple/src/MediaInformationSession.m index da59e42..76214b0 100644 --- a/apple/src/MediaInformationSession.m +++ b/apple/src/MediaInformationSession.m @@ -17,13 +17,13 @@ * along with FFmpegKit. If not, see . */ -#import "ExecuteCallback.h" +#import "MediaInformationSession.h" #import "LogCallback.h" #import "MediaInformation.h" -#import "MediaInformationSession.h" @implementation MediaInformationSession { MediaInformation* _mediaInformation; + MediaInformationSessionCompleteCallback _completeCallback; } + (void)initialize { @@ -32,21 +32,33 @@ - (instancetype)init:(NSArray*)arguments { - self = [super init:arguments withExecuteCallback:nil withLogCallback:nil withLogRedirectionStrategy:LogRedirectionStrategyNeverPrintLogs]; + self = [super init:arguments withLogCallback:nil withLogRedirectionStrategy:LogRedirectionStrategyNeverPrintLogs]; + + if (self) { + _completeCallback = nil; + } return self; } -- (instancetype)init:(NSArray*)arguments withExecuteCallback:(ExecuteCallback)executeCallback { +- (instancetype)init:(NSArray*)arguments withCompleteCallback:(MediaInformationSessionCompleteCallback)completeCallback { + + self = [super init:arguments withLogCallback:nil withLogRedirectionStrategy:LogRedirectionStrategyNeverPrintLogs]; - self = [super init:arguments withExecuteCallback:executeCallback withLogCallback:nil withLogRedirectionStrategy:LogRedirectionStrategyNeverPrintLogs]; + if (self) { + _completeCallback = completeCallback; + } return self; } -- (instancetype)init:(NSArray*)arguments withExecuteCallback:(ExecuteCallback)executeCallback withLogCallback:(LogCallback)logCallback { +- (instancetype)init:(NSArray*)arguments withCompleteCallback:(MediaInformationSessionCompleteCallback)completeCallback withLogCallback:(LogCallback)logCallback { - self = [super init:arguments withExecuteCallback:executeCallback withLogCallback:logCallback withLogRedirectionStrategy:LogRedirectionStrategyNeverPrintLogs]; + self = [super init:arguments withLogCallback:logCallback withLogRedirectionStrategy:LogRedirectionStrategyNeverPrintLogs]; + + if (self) { + _completeCallback = completeCallback; + } return self; } @@ -59,5 +71,21 @@ _mediaInformation = mediaInformation; } +- (MediaInformationSessionCompleteCallback)getCompleteCallback { + return _completeCallback; +} + +- (BOOL)isFFmpeg { + return false; +} + +- (BOOL)isFFprobe { + return false; +} + +- (BOOL)isMediaInformation { + return true; +} + @end diff --git a/apple/src/MediaInformationSessionCompleteCallback.h b/apple/src/MediaInformationSessionCompleteCallback.h new file mode 100644 index 0000000..aedbe7b --- /dev/null +++ b/apple/src/MediaInformationSessionCompleteCallback.h @@ -0,0 +1,51 @@ +/* + * Copyright (c) 2020-2021 Taner Sener + * + * This file is part of FFmpegKit. + * + * FFmpegKit is free software: you can redistribute it and/or modify + * it under the terms of the GNU Lesser General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * FFmpegKit is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public License + * along with FFmpegKit. If not, see . + */ + +#ifndef FFMPEG_KIT_MEDIA_INFORMATION_SESSION_COMPLETE_CALLBACK_H +#define FFMPEG_KIT_MEDIA_INFORMATION_SESSION_COMPLETE_CALLBACK_H + +@class MediaInformationSession; + +/** + *

Callback function that is invoked when an asynchronous MediaInformation session + * has ended. + *

Session has either SessionStateCompleted or SessionStateFailed state when + * the callback is invoked. + *

If it has SessionStateCompleted state, ReturnCode should be checked to + * see the execution result. + *

If getState returns SessionStateFailed then + * getFailStackTrace should be used to get the failure reason. + *

+ *  switch ([session getState]) {
+ *      case SessionStateCompleted:
+ *          ReturnCode *returnCode = [session getReturnCode];
+ *          break;
+ *      case SessionStateFailed:
+ *          NSString *failStackTrace = [session getFailStackTrace];
+ *          break;
+ *  }
+ * 
+ * + * @param session session of the completed execution + */ +typedef void (^MediaInformationSessionCompleteCallback)(MediaInformationSession* session); + +#import "MediaInformationSession.h" + +#endif // FFMPEG_KIT_MEDIA_INFORMATION_SESSION_COMPLETE_CALLBACK_H diff --git a/apple/src/Session.h b/apple/src/Session.h index 17ea178..980fad3 100644 --- a/apple/src/Session.h +++ b/apple/src/Session.h @@ -21,7 +21,6 @@ #define FFMPEG_KIT_SESSION_H #import -#import "ExecuteCallback.h" #import "Log.h" #import "LogCallback.h" #import "LogRedirectionStrategy.h" @@ -35,13 +34,6 @@ @required -/** - * Returns the session specific execute callback. - * - * @return session specific execute callback - */ -- (ExecuteCallback)getExecuteCallback; - /** * Returns the session specific log callback. * @@ -171,7 +163,7 @@ * that end with SessionStateCompleted state. If a session is not started, still running or failed then * this method returns nil. * - * @return the return code for this session if the session is completed, nil if session is + * @return the return code for this session if the session has completed, nil if session is * not started, still running or failed */ - (ReturnCode*)getReturnCode; @@ -246,6 +238,13 @@ */ - (BOOL)isFFprobe; +/** + * Returns whether it is a MediaInformation session or not. + * + * @return true if it is a MediaInformation session, false otherwise + */ +- (BOOL)isMediaInformation; + /** * Cancels running the session. */ diff --git a/scripts/function-apple.sh b/scripts/function-apple.sh index 17280cc..f41b10a 100755 --- a/scripts/function-apple.sh +++ b/scripts/function-apple.sh @@ -841,12 +841,13 @@ framework module ffmpegkit { header "ArchDetect.h" header "AtomicLong.h" header "Chapter.h" - header "ExecuteCallback.h" header "FFmpegKit.h" header "FFmpegKitConfig.h" header "FFmpegSession.h" + header "FFmpegSessionCompleteCallback.h" header "FFprobeKit.h" header "FFprobeSession.h" + header "FFprobeSessionCompleteCallback.h" header "Level.h" header "Log.h" header "LogCallback.h" @@ -854,6 +855,7 @@ framework module ffmpegkit { header "MediaInformation.h" header "MediaInformationJsonParser.h" header "MediaInformationSession.h" + header "MediaInformationSessionCompleteCallback.h" header "Packages.h" header "ReturnCode.h" header "Session.h" From ae708befead7cbe41dac71ac4f11f1e7bfe32d4c Mon Sep 17 00:00:00 2001 From: Taner Sener Date: Sat, 25 Dec 2021 18:07:45 +0000 Subject: [PATCH 38/45] add support for zimg openssl and srt, fixes #28 and #241 --- README.md | 36 ++-- android.sh | 6 +- android/ffmpeg-kit-android-lib/build.gradle | 4 +- .../com/arthenica/ffmpegkit/NativeLoader.java | 12 +- .../com/arthenica/ffmpegkit/Packages.java | 12 +- apple.sh | 46 +---- apple/README.md | 28 +-- ios.sh | 4 +- macos.sh | 4 +- scripts/android/ffmpeg.sh | 27 ++- scripts/android/freetype.sh | 2 +- scripts/android/harfbuzz.sh | 2 +- scripts/android/libtheora.sh | 2 +- scripts/android/openssl.sh | 54 ++++++ scripts/android/srt.sh | 62 +++++++ scripts/android/twolame.sh | 2 +- scripts/android/zimg.sh | 25 +++ scripts/apple/ffmpeg.sh | 22 ++- scripts/apple/freetype.sh | 2 +- scripts/apple/gnutls.sh | 8 - scripts/apple/harfbuzz.sh | 2 +- scripts/apple/libtheora.sh | 2 +- scripts/apple/openssl.sh | 49 +++++ scripts/apple/sdl.sh | 2 +- scripts/apple/srt.sh | 54 ++++++ scripts/apple/twolame.sh | 2 +- scripts/apple/zimg.sh | 34 ++++ scripts/function-android.sh | 48 ++++- scripts/function-apple.sh | 4 +- scripts/function-ios.sh | 19 +- scripts/function-macos.sh | 11 +- scripts/function-tvos.sh | 11 +- scripts/function.sh | 170 ++++++++++-------- scripts/main-android.sh | 14 +- scripts/main-ios.sh | 14 +- scripts/main-macos.sh | 14 +- scripts/main-tvos.sh | 14 +- scripts/source.sh | 15 ++ scripts/variable.sh | 55 +++--- src/.gitignore | 3 + tools/release/android/build.gradle | 4 +- tools/release/android/build.lts.gradle | 4 +- .../apple/ffmpeg-kit-ios-audio.podspec | 2 +- .../apple/ffmpeg-kit-ios-full-gpl.podspec | 2 +- .../release/apple/ffmpeg-kit-ios-full.podspec | 2 +- .../apple/ffmpeg-kit-ios-https-gpl.podspec | 2 +- .../apple/ffmpeg-kit-ios-https.podspec | 2 +- .../apple/ffmpeg-kit-ios-min-gpl.podspec | 2 +- .../release/apple/ffmpeg-kit-ios-min.podspec | 2 +- .../apple/ffmpeg-kit-ios-video.podspec | 2 +- .../apple/ffmpeg-kit-macos-audio.podspec | 2 +- .../apple/ffmpeg-kit-macos-full-gpl.podspec | 2 +- .../apple/ffmpeg-kit-macos-full.podspec | 2 +- .../apple/ffmpeg-kit-macos-https-gpl.podspec | 2 +- .../apple/ffmpeg-kit-macos-https.podspec | 2 +- .../apple/ffmpeg-kit-macos-min-gpl.podspec | 2 +- .../apple/ffmpeg-kit-macos-min.podspec | 2 +- .../apple/ffmpeg-kit-macos-video.podspec | 2 +- .../apple/ffmpeg-kit-tvos-audio.podspec | 2 +- .../apple/ffmpeg-kit-tvos-full-gpl.podspec | 2 +- .../apple/ffmpeg-kit-tvos-full.podspec | 2 +- .../apple/ffmpeg-kit-tvos-https-gpl.podspec | 2 +- .../apple/ffmpeg-kit-tvos-https.podspec | 2 +- .../apple/ffmpeg-kit-tvos-min-gpl.podspec | 2 +- .../release/apple/ffmpeg-kit-tvos-min.podspec | 2 +- .../apple/ffmpeg-kit-tvos-video.podspec | 2 +- tools/release/ios.sh | 2 +- tools/release/macos.sh | 2 +- tools/release/tvos.sh | 2 +- tvos.sh | 4 +- 70 files changed, 684 insertions(+), 279 deletions(-) create mode 100644 scripts/android/openssl.sh create mode 100644 scripts/android/srt.sh create mode 100644 scripts/android/zimg.sh create mode 100644 scripts/apple/openssl.sh create mode 100644 scripts/apple/srt.sh create mode 100644 scripts/apple/zimg.sh diff --git a/README.md b/README.md index ad2ccda..511d5b5 100644 --- a/README.md +++ b/README.md @@ -137,25 +137,25 @@ indicates that `FFmpeg` source code is cloned from the `FFmpeg` `master` branch. This table shows the differences between two variants. -| | Main Release | LTS Release | -| :----: | :----: | :----: | -| Android API Level | 24 | 16 | -| Android Camera Access | Yes | - | +| | Main Release | LTS Release | +| :----: | :----: |:---------------------------------------------------------:| +| Android API Level | 24 | 16 | +| Android Camera Access | Yes | - | | Android Architectures | arm-v7a-neon
arm64-v8a
x86
x86-64 | arm-v7a
arm-v7a-neon
arm64-v8a
x86
x86-64 | -| iOS Min SDK | 12.1 | 9.3 | -| iOS VideoToolbox | Yes | - | -| iOS AVFoundation | Yes | - | -| iOS Architectures | arm64
arm64-simulator
arm64-mac-catalyst
x86-64
x86-64-mac-catalyst | armv7
arm64
i386
x86-64 | -| iOS Bundle Format | XCFrameworks | Frameworks | -| Mac Catalyst Min Version | 14.0 | - | -| macOS Min SDK | 10.15 | 10.11 | -| macOS AVFoundation | Yes | - | -| macOS Architectures | arm64
x86-64 | x86-64 | -| macOS Bundle Format | XCFrameworks | Frameworks | -| tvOS Min SDK | 11.0 | 9.2 | -| tvOS VideoToolbox | Yes | - | -| tvOS Architectures | arm64
x86-64
arm64-simulator | arm64
x86-64 | -| tvOS Bundle Format | XCFrameworks | Frameworks | +| iOS Min SDK | 12.1 | 10 | +| iOS VideoToolbox | Yes | - | +| iOS AVFoundation | Yes | - | +| iOS Architectures | arm64
arm64-simulator
arm64-mac-catalyst
x86-64
x86-64-mac-catalyst | armv7
arm64
i386
x86-64 | +| iOS Bundle Format | XCFrameworks | Frameworks | +| Mac Catalyst Min Version | 14.0 | - | +| macOS Min SDK | 10.15 | 10.12 | +| macOS AVFoundation | Yes | - | +| macOS Architectures | arm64
x86-64 | x86-64 | +| macOS Bundle Format | XCFrameworks | Frameworks | +| tvOS Min SDK | 11.0 | 10.0 | +| tvOS VideoToolbox | Yes | - | +| tvOS Architectures | arm64
x86-64
arm64-simulator | arm64
x86-64 | +| tvOS Bundle Format | XCFrameworks | Frameworks | ### 11. Documentation diff --git a/android.sh b/android.sh index 4f9e484..89d488d 100755 --- a/android.sh +++ b/android.sh @@ -138,7 +138,7 @@ fi # PROCESS FULL OPTION AS LAST OPTION if [[ -n ${BUILD_FULL} ]]; then - for library in {0..58}; do + for library in {0..61}; do if [ ${GPL_ENABLED} == "yes" ]; then enable_library "$(get_library_name $library)" 1 else @@ -214,7 +214,7 @@ for run_arch in {0..12}; do . "${BASEDIR}"/scripts/main-android.sh "${ENABLED_LIBRARIES[@]}" || exit 1 # CLEAR FLAGS - for library in {0..58}; do + for library in {0..61}; do library_name=$(get_library_name ${library}) unset "$(echo "OK_${library_name}" | sed "s/\-/\_/g")" unset "$(echo "DEPENDENCY_REBUILT_${library_name}" | sed "s/\-/\_/g")" @@ -272,7 +272,7 @@ if [[ -n ${ANDROID_ARCHITECTURES} ]]; then # COPY LICENSES LICENSE_BASEDIR="${BASEDIR}"/android/ffmpeg-kit-android-lib/src/main/res/raw rm -f "${LICENSE_BASEDIR}"/*.txt 1>>"${BASEDIR}"/build.log 2>&1 || exit 1 - for library in {0..46}; do + for library in {0..49}; do if [[ ${ENABLED_LIBRARIES[$library]} -eq 1 ]]; then ENABLED_LIBRARY=$(get_library_name ${library} | sed 's/-/_/g') LICENSE_FILE="${LICENSE_BASEDIR}/license_${ENABLED_LIBRARY}.txt" diff --git a/android/ffmpeg-kit-android-lib/build.gradle b/android/ffmpeg-kit-android-lib/build.gradle index 2fc5175..2b88073 100644 --- a/android/ffmpeg-kit-android-lib/build.gradle +++ b/android/ffmpeg-kit-android-lib/build.gradle @@ -44,8 +44,8 @@ task javadoc(type: Javadoc) { } dependencies { - implementation 'com.arthenica:smart-exception-java:0.1.0' - testImplementation "androidx.test.ext:junit:1.1.2" + implementation 'com.arthenica:smart-exception-java:0.1.1' + testImplementation "androidx.test.ext:junit:1.1.3" testImplementation "org.json:json:20201115" } diff --git a/android/ffmpeg-kit-android-lib/src/main/java/com/arthenica/ffmpegkit/NativeLoader.java b/android/ffmpeg-kit-android-lib/src/main/java/com/arthenica/ffmpegkit/NativeLoader.java index d82fe6c..388e5c3 100644 --- a/android/ffmpeg-kit-android-lib/src/main/java/com/arthenica/ffmpegkit/NativeLoader.java +++ b/android/ffmpeg-kit-android-lib/src/main/java/com/arthenica/ffmpegkit/NativeLoader.java @@ -27,6 +27,7 @@ import java.text.SimpleDateFormat; import java.util.Collections; import java.util.Date; import java.util.List; +import java.util.Locale; /** *

Responsible of loading native libraries. @@ -35,6 +36,8 @@ public class NativeLoader { static final String[] FFMPEG_LIBRARIES = {"avutil", "swscale", "swresample", "avcodec", "avformat", "avfilter", "avdevice"}; + static final String[] LIBRARIES_LINKED_WITH_CXX = {"openh264", "rubberband", "snappy", "srt", "tesseract", "x265", "zimg"}; + static boolean isTestModeDisabled() { return (System.getProperty("enable.ffmpeg.kit.test.mode") == null); } @@ -113,7 +116,7 @@ public class NativeLoader { if (isTestModeDisabled()) { return FFmpegKitConfig.getBuildDate(); } else { - return new SimpleDateFormat("yyyyMMdd").format(new Date()); + return new SimpleDateFormat("yyyyMMdd", Locale.getDefault()).format(new Date()); } } @@ -135,8 +138,11 @@ public class NativeLoader { /* LOADING LINKED LIBRARIES MANUALLY ON API < 21 */ final List externalLibrariesEnabled = loadExternalLibraries(); - if (externalLibrariesEnabled.contains("tesseract") || externalLibrariesEnabled.contains("x265") || externalLibrariesEnabled.contains("snappy") || externalLibrariesEnabled.contains("openh264") || externalLibrariesEnabled.contains("rubberband")) { - loadLibrary("c++_shared"); + for (String dependantLibrary : LIBRARIES_LINKED_WITH_CXX) { + if (externalLibrariesEnabled.contains(dependantLibrary)) { + loadLibrary("c++_shared"); + break; + } } if (AbiDetect.ARM_V7A.equals(loadNativeAbi())) { diff --git a/android/ffmpeg-kit-android-lib/src/main/java/com/arthenica/ffmpegkit/Packages.java b/android/ffmpeg-kit-android-lib/src/main/java/com/arthenica/ffmpegkit/Packages.java index 6696d1c..70f9dea 100644 --- a/android/ffmpeg-kit-android-lib/src/main/java/com/arthenica/ffmpegkit/Packages.java +++ b/android/ffmpeg-kit-android-lib/src/main/java/com/arthenica/ffmpegkit/Packages.java @@ -51,6 +51,7 @@ public class Packages { supportedExternalLibraries.add("libxml2"); supportedExternalLibraries.add("opencore-amr"); supportedExternalLibraries.add("openh264"); + supportedExternalLibraries.add("openssl"); supportedExternalLibraries.add("opus"); supportedExternalLibraries.add("rubberband"); supportedExternalLibraries.add("sdl2"); @@ -58,11 +59,13 @@ public class Packages { supportedExternalLibraries.add("snappy"); supportedExternalLibraries.add("soxr"); supportedExternalLibraries.add("speex"); + supportedExternalLibraries.add("srt"); supportedExternalLibraries.add("tesseract"); supportedExternalLibraries.add("twolame"); supportedExternalLibraries.add("x264"); supportedExternalLibraries.add("x265"); supportedExternalLibraries.add("xvid"); + supportedExternalLibraries.add("zimg"); } /** @@ -134,7 +137,8 @@ public class Packages { externalLibraryList.contains("twolame") && externalLibraryList.contains("x264") && externalLibraryList.contains("x265") && - externalLibraryList.contains("xvid")) { + externalLibraryList.contains("xvid") && + externalLibraryList.contains("zimg")) { return "full-gpl"; } else { return "custom"; @@ -164,7 +168,8 @@ public class Packages { externalLibraryList.contains("snappy") && externalLibraryList.contains("soxr") && externalLibraryList.contains("speex") && - externalLibraryList.contains("twolame")) { + externalLibraryList.contains("twolame") && + externalLibraryList.contains("zimg")) { return "full"; } else { return "custom"; @@ -182,7 +187,8 @@ public class Packages { externalLibraryList.contains("libtheora") && externalLibraryList.contains("libvpx") && externalLibraryList.contains("libwebp") && - externalLibraryList.contains("snappy")) { + externalLibraryList.contains("snappy") && + externalLibraryList.contains("zimg")) { return "video"; } else { return "custom"; diff --git a/apple.sh b/apple.sh index a05295f..a1a1325 100755 --- a/apple.sh +++ b/apple.sh @@ -63,15 +63,18 @@ After that this script should be used to create an umbrella xcframework.\n" echo -e " --enable-libxml2\t\tbuild umbrella xcframework for libxml2 [no]" echo -e " --enable-opencore-amr\t\tbuild umbrella xcframework for opencore-amr [no]" echo -e " --enable-openh264\t\tbuild umbrella xcframework for openh264 [no]" + echo -e " --enable-openssl\t\tbuild umbrella xcframework for openssl [no]" echo -e " --enable-opus\t\t\tbuild umbrella xcframework for opus [no]" echo -e " --enable-sdl\t\t\tbuild umbrella xcframework for sdl [no]" echo -e " --enable-shine\t\tbuild umbrella xcframework for shine [no]" echo -e " --enable-snappy\t\tbuild umbrella xcframework for snappy [no]" echo -e " --enable-soxr\t\t\tbuild umbrella xcframework for soxr [no]" echo -e " --enable-speex\t\tbuild umbrella xcframework for speex [no]" + echo -e " --enable-srt\t\t\tbuild umbrella xcframework for srt [no]" echo -e " --enable-tesseract\t\tbuild umbrella xcframework for tesseract [no]" echo -e " --enable-twolame\t\tbuild umbrella xcframework for twolame [no]" - echo -e " --enable-vo-amrwbenc\t\tbuild umbrella xcframework for vo-amrwbenc [no]\n" + echo -e " --enable-vo-amrwbenc\t\tbuild umbrella xcframework for vo-amrwbenc [no]" + echo -e " --enable-zimg\t\t\tbuild umbrella xcframework for zimg [no]\n" echo -e "GPL libraries:" echo -e " --enable-libvidstab\t\tbuild umbrella xcframework for libvidstab [no]" @@ -244,7 +247,7 @@ done # PROCESS FULL OPTION AS LAST OPTION if [[ -n ${BUILD_FULL} ]]; then - for library in {0..58}; do + for library in {0..61}; do if [ ${GPL_ENABLED} == "yes" ]; then set_library "$(get_library_name "$library")" 1 else @@ -309,45 +312,6 @@ if [[ -n ${TARGET_ARCHITECTURE_VARIANT_INDEX_ARRAY[0]} ]]; then # INITIALIZE TARGET FOLDERS initialize_prebuilt_umbrella_xcframework_folders - # BUILD XCFRAMEWORKS FOR ENABLED LIBRARIES ON ENABLED ARCHITECTURE VARIANTS - for library in {0..46}; do - if [[ ${ENABLED_LIBRARIES[${library}]} -eq 1 ]]; then - - if [[ ${LIBRARY_LIBTHEORA} == "${library}" ]]; then - - create_umbrella_xcframework "libtheora" - create_umbrella_xcframework "libtheoraenc" - create_umbrella_xcframework "libtheoradec" - - elif [[ ${LIBRARY_LIBVORBIS} == "${library}" ]]; then - - create_umbrella_xcframework "libvorbisfile" - create_umbrella_xcframework "libvorbisenc" - create_umbrella_xcframework "libvorbis" - - elif [[ ${LIBRARY_LIBWEBP} == "${library}" ]]; then - - create_umbrella_xcframework "libwebpmux" - create_umbrella_xcframework "libwebpdemux" - create_umbrella_xcframework "libwebp" - - elif [[ ${LIBRARY_OPENCOREAMR} == "${library}" ]]; then - - create_umbrella_xcframework "libopencore-amrnb" - - elif [[ ${LIBRARY_NETTLE} == "${library}" ]]; then - - create_umbrella_xcframework "libnettle" - create_umbrella_xcframework "libhogweed" - - else - - create_umbrella_xcframework "$(get_static_archive_name "${library}")" - - fi - fi - done - for FFMPEG_LIB in "${FFMPEG_LIBS[@]}"; do create_umbrella_xcframework "${FFMPEG_LIB}" done diff --git a/apple/README.md b/apple/README.md index 110b16d..2beaaad 100644 --- a/apple/README.md +++ b/apple/README.md @@ -2,36 +2,36 @@ ### 1. Features #### 1.1 iOS -- Supports `iOS SDK 12.1+` on Main releases and `iOS SDK 9.3+` on LTS releases +- Supports `iOS SDK 12.1+` on Main releases and `iOS SDK 10+` on LTS releases - Includes `armv7`, `armv7s`, `arm64`, `arm64-simulator`, `arm64e`, `i386`, `x86_64`, `x86_64-mac-catalyst` and `arm64-mac-catalyst` architectures - Objective-C API - Camera access - `ARC` enabled library - Built with `-fembed-bitcode` flag -- Creates static `frameworks`, static `xcframeworks` and static `universal (fat)` libraries (.a) +- Creates shared `frameworks` and `xcframeworks` #### 1.2 macOS -- Supports `macOS SDK 10.15+` on Main releases and `macOS SDK 10.11+` on LTS releases +- Supports `macOS SDK 10.15+` on Main releases and `macOS SDK 10.12+` on LTS releases - Includes `arm64` and `x86_64` architectures - Objective-C API - Camera access - `ARC` enabled library - Built with `-fembed-bitcode` flag -- Creates static `frameworks`, static `xcframeworks` and static `universal (fat)` libraries (.a) +- Creates shared `frameworks` and `xcframeworks` #### 1.3 tvOS -- Supports `tvOS SDK 10.2+` on Main releases and `tvOS SDK 9.2+` on LTS releases +- Supports `tvOS SDK 11.0+` on Main releases and `tvOS SDK 10.0+` on LTS releases - Includes `arm64`, `arm64-simulator` and `x86_64` architectures - Objective-C API - `ARC` enabled library - Built with `-fembed-bitcode` flag -- Creates static `frameworks`, static `xcframeworks` and static `universal (fat)` libraries (.a) +- Creates shared `frameworks` and `xcframeworks` ### 2. Building -Run `ios.sh`/`macos.sh`/`tvos.sh` at project root directory to build `ffmpeg-kit` and `ffmpeg` static libraries for a -platform. +Run `ios.sh`/`macos.sh`/`tvos.sh` inside the project root to build `ffmpeg-kit` and `ffmpeg` shared libraries +for a platform. Optionally, use `apple.sh` to combine bundles created by these three scripts in a single bundle. @@ -45,20 +45,20 @@ Please note that `FFmpegKit` project repository includes the source code of `FFm ##### 2.1.1 iOS -- **Xcode 7.3.1** or later -- **iOS SDK 9.3** or later +- **Xcode 8.0** or later +- **iOS SDK 10** or later - **Command Line Tools** ##### 2.1.2 macOS -- **Xcode 7.3.1** or later -- **macOS SDK 10.11** or later +- **Xcode 8.0** or later +- **macOS SDK 10.12** or later - **Command Line Tools** ##### 2.1.3 tvOS -- **Xcode 7.3.1** or later -- **tvOS SDK 9.2** or later +- **Xcode 8.0** or later +- **tvOS SDK 10.0** or later - **Command Line Tools** ##### 2.1.4 Packages diff --git a/ios.sh b/ios.sh index 4e7b39f..7e3677f 100755 --- a/ios.sh +++ b/ios.sh @@ -144,7 +144,7 @@ done # PROCESS FULL OPTION AS LAST OPTION if [[ -n ${BUILD_FULL} ]]; then - for library in {0..58}; do + for library in {0..61}; do if [ ${GPL_ENABLED} == "yes" ]; then enable_library "$(get_library_name "$library")" 1 else @@ -240,7 +240,7 @@ for run_arch in {0..12}; do TARGET_ARCH_LIST+=("${FULL_ARCH}") # CLEAR FLAGS - for library in {0..58}; do + for library in {0..61}; do library_name=$(get_library_name "${library}") unset "$(echo "OK_${library_name}" | sed "s/\-/\_/g")" unset "$(echo "DEPENDENCY_REBUILT_${library_name}" | sed "s/\-/\_/g")" diff --git a/macos.sh b/macos.sh index 988ae64..a6ae0d7 100755 --- a/macos.sh +++ b/macos.sh @@ -139,7 +139,7 @@ done # PROCESS FULL OPTION AS LAST OPTION if [[ -n ${BUILD_FULL} ]]; then - for library in {0..58}; do + for library in {0..61}; do if [ ${GPL_ENABLED} == "yes" ]; then enable_library "$(get_library_name "$library")" 1 else @@ -209,7 +209,7 @@ for run_arch in {0..12}; do TARGET_ARCH_LIST+=("${FULL_ARCH}") # CLEAR FLAGS - for library in {0..58}; do + for library in {0..61}; do library_name=$(get_library_name "${library}") unset "$(echo "OK_${library_name}" | sed "s/\-/\_/g")" unset "$(echo "DEPENDENCY_REBUILT_${library_name}" | sed "s/\-/\_/g")" diff --git a/scripts/android/ffmpeg.sh b/scripts/android/ffmpeg.sh index c04b9e9..627bded 100755 --- a/scripts/android/ffmpeg.sh +++ b/scripts/android/ffmpeg.sh @@ -72,7 +72,7 @@ CONFIGURE_POSTFIX="" HIGH_PRIORITY_INCLUDES="" # SET CONFIGURE OPTIONS -for library in {1..58}; do +for library in {1..62}; do if [[ ${!library} -eq 1 ]]; then ENABLED_LIBRARY=$(get_library_name $((library - 1))) @@ -194,6 +194,11 @@ for library in {1..58}; do LDFLAGS+=" $(pkg-config --libs --static openh264 2>>"${BASEDIR}"/build.log)" CONFIGURE_POSTFIX+=" --enable-libopenh264" ;; + openssl) + CFLAGS+=" $(pkg-config --cflags openssl 2>>"${BASEDIR}"/build.log)" + LDFLAGS+=" $(pkg-config --libs --static openssl 2>>"${BASEDIR}"/build.log)" + CONFIGURE_POSTFIX+=" --enable-openssl" + ;; opus) CFLAGS+=" $(pkg-config --cflags opus 2>>"${BASEDIR}"/build.log)" LDFLAGS+=" $(pkg-config --libs --static opus 2>>"${BASEDIR}"/build.log)" @@ -229,6 +234,11 @@ for library in {1..58}; do LDFLAGS+=" $(pkg-config --libs --static speex 2>>"${BASEDIR}"/build.log)" CONFIGURE_POSTFIX+=" --enable-libspeex" ;; + srt) + CFLAGS+=" $(pkg-config --cflags srt 2>>"${BASEDIR}"/build.log)" + LDFLAGS+=" $(pkg-config --libs --static srt 2>>"${BASEDIR}"/build.log)" + CONFIGURE_POSTFIX+=" --enable-libsrt" + ;; tesseract) CFLAGS+=" $(pkg-config --cflags tesseract 2>>"${BASEDIR}"/build.log)" LDFLAGS+=" $(pkg-config --libs --static tesseract 2>>"${BASEDIR}"/build.log)" @@ -261,6 +271,11 @@ for library in {1..58}; do LDFLAGS+=" $(pkg-config --libs --static xvidcore 2>>"${BASEDIR}"/build.log)" CONFIGURE_POSTFIX+=" --enable-libxvid --enable-gpl" ;; + zimg) + CFLAGS+=" $(pkg-config --cflags zimg 2>>"${BASEDIR}"/build.log)" + LDFLAGS+=" $(pkg-config --libs --static zimg 2>>"${BASEDIR}"/build.log)" + CONFIGURE_POSTFIX+=" --enable-libzimg" + ;; expat) CFLAGS+=" $(pkg-config --cflags expat 2>>"${BASEDIR}"/build.log)" LDFLAGS+=" $(pkg-config --libs --static expat 2>>"${BASEDIR}"/build.log)" @@ -302,6 +317,8 @@ for library in {1..58}; do CONFIGURE_POSTFIX+=" --disable-zlib" elif [[ ${library} -eq $((LIBRARY_ANDROID_MEDIA_CODEC + 1)) ]]; then CONFIGURE_POSTFIX+=" --disable-mediacodec" + elif [[ ${library} -eq $((LIBRARY_OPENSSL + 1)) ]]; then + CONFIGURE_POSTFIX+=" --disable-openssl" fi fi done @@ -394,25 +411,27 @@ fi --enable-version3 \ --arch="${TARGET_ARCH}" \ --cpu="${TARGET_CPU}" \ + --target-os=android \ + ${ASM_OPTIONS} \ + --ar="${AR}" \ --cc="${CC}" \ --cxx="${CXX}" \ --ranlib="${RANLIB}" \ --strip="${STRIP}" \ --nm="${NM}" \ --extra-libs="$(pkg-config --libs --static cpu-features)" \ - --target-os=android \ - ${ASM_OPTIONS} \ + --disable-autodetect \ --enable-cross-compile \ --enable-pic \ --enable-jni \ --enable-optimizations \ --enable-swscale \ ${BUILD_LIBRARY_OPTIONS} \ + --enable-pthreads \ --enable-v4l2-m2m \ --disable-outdev=fbdev \ --disable-indev=fbdev \ ${SIZE_OPTIONS} \ - --disable-openssl \ --disable-xmm-clobber-test \ ${DEBUG_OPTIONS} \ --disable-neon-clobber-test \ diff --git a/scripts/android/freetype.sh b/scripts/android/freetype.sh index e455dfd..17cd945 100755 --- a/scripts/android/freetype.sh +++ b/scripts/android/freetype.sh @@ -11,7 +11,7 @@ make distclean 2>/dev/null 1>/dev/null if [[ ! -f "${BASEDIR}"/src/"${LIB_NAME}"/builds/unix/configure ]] || [[ ${RECONF_freetype} -eq 1 ]]; then # NOTE THAT FREETYPE DOES NOT SUPPORT AUTORECONF BUT IT COMES WITH AN autogen.sh - ./autogen.sh || return 1 + ./autogen.sh || exit 1 fi ./configure \ diff --git a/scripts/android/harfbuzz.sh b/scripts/android/harfbuzz.sh index f739d4f..7955637 100755 --- a/scripts/android/harfbuzz.sh +++ b/scripts/android/harfbuzz.sh @@ -5,7 +5,7 @@ make distclean 2>/dev/null 1>/dev/null # REGENERATE BUILD FILES IF NECESSARY OR REQUESTED if [[ ! -f "${BASEDIR}"/src/"${LIB_NAME}"/configure ]] || [[ ${RECONF_harfbuzz} -eq 1 ]]; then - NOCONFIGURE=1 ./autogen.sh || return 1 + NOCONFIGURE=1 ./autogen.sh || exit 1 fi ./configure \ diff --git a/scripts/android/libtheora.sh b/scripts/android/libtheora.sh index c84f049..a28053b 100755 --- a/scripts/android/libtheora.sh +++ b/scripts/android/libtheora.sh @@ -16,7 +16,7 @@ if [[ ! -f "${BASEDIR}"/src/"${LIB_NAME}"/configure ]] || [[ ${RECONF_libtheora} # WORKAROUND NOT TO RUN CONFIGURE AT THE END OF autogen.sh ${SED_INLINE} 's/$srcdir\/configure/#$srcdir\/configure/g' "${BASEDIR}"/src/"${LIB_NAME}"/autogen.sh || return 1 - ./autogen.sh || return 1 + ./autogen.sh || exit 1 fi ./configure \ diff --git a/scripts/android/openssl.sh b/scripts/android/openssl.sh new file mode 100644 index 0000000..1179a21 --- /dev/null +++ b/scripts/android/openssl.sh @@ -0,0 +1,54 @@ +#!/bin/bash + +if [[ ${ARCH} == "x86" ]]; then + + # openssl does not support 32-bit apple architectures + echo -e "ERROR: openssl is not supported on $ARCH architecture for $FFMPEG_KIT_BUILD_TYPE platform.\n" 1>>"${BASEDIR}"/build.log 2>&1 + return 200 +fi + +# SET BUILD OPTIONS +ASM_OPTIONS="" +case ${ARCH} in +arm-v7a | arm-v7a-neon) + ASM_OPTIONS="linux-generic32" + ;; +arm64-v8a) + ASM_OPTIONS="linux-generic64 enable-ec_nistp_64_gcc_128" + ;; +x86) + ASM_OPTIONS="linux-generic32 386" + ;; +x86-64) + ASM_OPTIONS="linux-generic64 enable-ec_nistp_64_gcc_128" + ;; +esac + +# ALWAYS CLEAN THE PREVIOUS BUILD +make distclean 2>/dev/null 1>/dev/null + +# REGENERATE BUILD FILES IF NECESSARY OR REQUESTED +if [[ ! -f "${BASEDIR}"/src/"${LIB_NAME}"/configure ]] || [[ ${RECONF_openssl} -eq 1 ]]; then + autoreconf_library "${LIB_NAME}" 1>>"${BASEDIR}"/build.log 2>&1 || exit 1 +fi + +INT128_AVAILABLE=$($CC -dM -E - >"${BASEDIR}"/build.log | grep __SIZEOF_INT128__) + +echo -e "INFO: __uint128_t detection output: $INT128_AVAILABLE\n" 1>>"${BASEDIR}"/build.log 2>&1 + +./Configure \ + --prefix="${LIB_INSTALL_PREFIX}" \ + zlib \ + no-shared \ + no-engine \ + no-dso \ + no-legacy \ + ${ASM_OPTIONS} \ + no-tests || return 1 + +make -j$(get_cpu_count) build_sw || return 1 + +make install_sw install_ssldirs || return 1 + +# MANUALLY COPY PKG-CONFIG FILES +cp ./*.pc "${INSTALL_PKG_CONFIG_DIR}" || return 1 diff --git a/scripts/android/srt.sh b/scripts/android/srt.sh new file mode 100644 index 0000000..b12bdca --- /dev/null +++ b/scripts/android/srt.sh @@ -0,0 +1,62 @@ +#!/bin/bash + +# ALWAYS CLEAN THE PREVIOUS BUILD +git clean -dfx 2>/dev/null 1>/dev/null + +# OVERRIDE SYSTEM PROCESSOR +SYSTEM_PROCESSOR="" +case ${ARCH} in +arm-v7a | arm-v7a-neon) + SYSTEM_PROCESSOR="armv7-a" + ;; +arm64-v8a) + SYSTEM_PROCESSOR="aarch64" + ;; +x86) + SYSTEM_PROCESSOR="i686" + ;; +x86-64) + SYSTEM_PROCESSOR="x86_64" + ;; +esac + +# WORKAROUND TO GENERATE BASE BUILD FILES +./configure || echo "" 2>/dev/null 1>/dev/null + +cmake -Wno-dev \ + -DUSE_ENCLIB=openssl \ + -DCMAKE_VERBOSE_MAKEFILE=0 \ + -DCMAKE_C_FLAGS="${CFLAGS}" \ + -DCMAKE_CXX_FLAGS="${CXXFLAGS}" \ + -DCMAKE_EXE_LINKER_FLAGS="${LDFLAGS}" \ + -DCMAKE_SYSROOT="${ANDROID_SYSROOT}" \ + -DCMAKE_FIND_ROOT_PATH="${ANDROID_SYSROOT}" \ + -DCMAKE_BUILD_TYPE=Release \ + -DCMAKE_INSTALL_PREFIX="${LIB_INSTALL_PREFIX}" \ + -DCMAKE_SYSTEM_NAME=Android \ + -DCMAKE_SYSTEM_VERSION=${API} \ + -DCMAKE_ANDROID_NDK=${ANDROID_NDK_ROOT} \ + -DCMAKE_CXX_COMPILER="${ANDROID_NDK_ROOT}/toolchains/llvm/prebuilt/${TOOLCHAIN}/bin/$CXX" \ + -DCMAKE_C_COMPILER="${ANDROID_NDK_ROOT}/toolchains/llvm/prebuilt/${TOOLCHAIN}/bin/$CC" \ + -DCMAKE_LINKER="${ANDROID_NDK_ROOT}/toolchains/llvm/prebuilt/${TOOLCHAIN}/bin/$LD" \ + -DCMAKE_AR="${ANDROID_NDK_ROOT}/toolchains/llvm/prebuilt/${TOOLCHAIN}/bin/$AR" \ + -DCMAKE_AS="${ANDROID_NDK_ROOT}/toolchains/llvm/prebuilt/${TOOLCHAIN}/bin/$AS" \ + -DCMAKE_SYSTEM_LOADED=1 \ + -DCMAKE_SYSTEM_PROCESSOR="${SYSTEM_PROCESSOR}" \ + -DENABLE_STDCXX_SYNC=1 \ + -DENABLE_MONOTONIC_CLOCK=1 \ + -DENABLE_STDCXX_SYNC=1 \ + -DENABLE_CXX11=1 \ + -DUSE_OPENSSL_PC=1 \ + -DENABLE_DEBUG=0 \ + -DENABLE_LOGGING=0 \ + -DENABLE_HEAVY_LOGGING=0 \ + -DENABLE_APPS=0 \ + -DENABLE_SHARED=0 "${BASEDIR}"/src/"${LIB_NAME}" || return 1 + +make -j$(get_cpu_count) || return 1 + +make install || return 1 + +# CREATE PACKAGE CONFIG MANUALLY +create_srt_package_config "1.4.4" || return 1 \ No newline at end of file diff --git a/scripts/android/twolame.sh b/scripts/android/twolame.sh index 8b6a340..51c208d 100755 --- a/scripts/android/twolame.sh +++ b/scripts/android/twolame.sh @@ -9,7 +9,7 @@ make distclean 2>/dev/null 1>/dev/null # REGENERATE BUILD FILES IF NECESSARY OR REQUESTED if [[ ! -f "${BASEDIR}"/src/"${LIB_NAME}"/configure ]] || [[ ${RECONF_twolame} -eq 1 ]]; then - NOCONFIGURE=1 ./autogen.sh || return 1 + NOCONFIGURE=1 ./autogen.sh || exit 1 fi ./configure \ diff --git a/scripts/android/zimg.sh b/scripts/android/zimg.sh new file mode 100644 index 0000000..08713d7 --- /dev/null +++ b/scripts/android/zimg.sh @@ -0,0 +1,25 @@ +#!/bin/bash + +# ALWAYS CLEAN THE PREVIOUS BUILD +make distclean 2>/dev/null 1>/dev/null + +# REGENERATE BUILD FILES IF NECESSARY OR REQUESTED +if [[ ! -f "${BASEDIR}"/src/"${LIB_NAME}"/configure ]] || [[ ${RECONF_zimg} -eq 1 ]]; then + autoreconf_library "${LIB_NAME}" 1>>"${BASEDIR}"/build.log 2>&1 || exit 1 +fi + +./configure \ + --prefix="${LIB_INSTALL_PREFIX}" \ + --with-pic \ + --with-sysroot="${SDK_PATH}" \ + --enable-static \ + --disable-shared \ + --disable-fast-install \ + --host="${HOST}" || return 1 + +make -j$(get_cpu_count) || return 1 + +make install || return 1 + +# CREATE PACKAGE CONFIG MANUALLY +create_zimg_package_config "3.0.3" || return 1 diff --git a/scripts/apple/ffmpeg.sh b/scripts/apple/ffmpeg.sh index e24bebf..68f3c15 100755 --- a/scripts/apple/ffmpeg.sh +++ b/scripts/apple/ffmpeg.sh @@ -104,7 +104,7 @@ esac CONFIGURE_POSTFIX="" # SET CONFIGURE OPTIONS -for library in {1..59}; do +for library in {1..62}; do if [[ ${!library} -eq 1 ]]; then ENABLED_LIBRARY=$(get_library_name $((library - 1))) @@ -211,6 +211,11 @@ for library in {1..59}; do FFMPEG_LDFLAGS+=" $(pkg-config --libs --static openh264 2>>"${BASEDIR}"/build.log)" CONFIGURE_POSTFIX+=" --enable-libopenh264" ;; + openssl) + FFMPEG_CFLAGS+=" $(pkg-config --cflags openssl 2>>"${BASEDIR}"/build.log)" + FFMPEG_LDFLAGS+=" $(pkg-config --libs --static openssl 2>>"${BASEDIR}"/build.log)" + CONFIGURE_POSTFIX+=" --enable-openssl" + ;; opus) FFMPEG_CFLAGS+=" $(pkg-config --cflags opus 2>>"${BASEDIR}"/build.log)" FFMPEG_LDFLAGS+=" $(pkg-config --libs --static opus 2>>"${BASEDIR}"/build.log)" @@ -247,6 +252,11 @@ for library in {1..59}; do FFMPEG_LDFLAGS+=" $(pkg-config --libs --static speex 2>>"${BASEDIR}"/build.log)" CONFIGURE_POSTFIX+=" --enable-libspeex" ;; + srt) + FFMPEG_CFLAGS+=" $(pkg-config --cflags srt 2>>"${BASEDIR}"/build.log)" + FFMPEG_LDFLAGS+=" $(pkg-config --libs --static srt 2>>"${BASEDIR}"/build.log)" + CONFIGURE_POSTFIX+=" --enable-libsrt" + ;; tesseract) FFMPEG_CFLAGS+=" $(pkg-config --cflags tesseract 2>>"${BASEDIR}"/build.log)" FFMPEG_LDFLAGS+=" $(pkg-config --libs --static tesseract 2>>"${BASEDIR}"/build.log)" @@ -279,6 +289,11 @@ for library in {1..59}; do FFMPEG_LDFLAGS+=" $(pkg-config --libs --static xvidcore 2>>"${BASEDIR}"/build.log)" CONFIGURE_POSTFIX+=" --enable-libxvid --enable-gpl" ;; + zimg) + FFMPEG_CFLAGS+=" $(pkg-config --cflags zimg 2>>"${BASEDIR}"/build.log)" + FFMPEG_LDFLAGS+=" $(pkg-config --libs --static zimg 2>>"${BASEDIR}"/build.log)" + CONFIGURE_POSTFIX+=" --enable-libzimg" + ;; expat) FFMPEG_CFLAGS+=" $(pkg-config --cflags expat 2>>"${BASEDIR}"/build.log)" FFMPEG_LDFLAGS+=" $(pkg-config --libs --static expat 2>>"${BASEDIR}"/build.log)" @@ -371,6 +386,8 @@ for library in {1..59}; do CONFIGURE_POSTFIX+=" --disable-videotoolbox" elif [[ ${library} -eq $((LIBRARY_APPLE_ZLIB + 1)) ]]; then CONFIGURE_POSTFIX+=" --disable-zlib" + elif [[ ${library} -eq $((LIBRARY_OPENSSL + 1)) ]]; then + CONFIGURE_POSTFIX+=" --disable-openssl" fi fi done @@ -473,8 +490,6 @@ ${SED_INLINE} "s/\$version/$FFMPEG_VERSION/g" "${BASEDIR}"/src/"${LIB_NAME}"/ffb --as="${AS}" \ --ranlib="${RANLIB}" \ --strip="${STRIP}" \ - --ranlib="${RANLIB}" \ - --strip="${STRIP}" \ --nm="${NM}" \ --extra-ldflags="$(get_min_version_cflags)" \ --disable-autodetect \ @@ -491,7 +506,6 @@ ${SED_INLINE} "s/\$version/$FFMPEG_VERSION/g" "${BASEDIR}"/src/"${LIB_NAME}"/ffb --disable-indev=v4l2 \ --disable-indev=fbdev \ ${SIZE_OPTIONS} \ - --disable-openssl \ --disable-xmm-clobber-test \ ${DEBUG_OPTIONS} \ --disable-neon-clobber-test \ diff --git a/scripts/apple/freetype.sh b/scripts/apple/freetype.sh index f70cfcc..88848a8 100755 --- a/scripts/apple/freetype.sh +++ b/scripts/apple/freetype.sh @@ -11,7 +11,7 @@ make distclean 2>/dev/null 1>/dev/null if [[ ! -f "${BASEDIR}"/src/"${LIB_NAME}"/builds/unix/configure ]] || [[ ${RECONF_freetype} -eq 1 ]]; then # NOTE THAT FREETYPE DOES NOT SUPPORT AUTORECONF BUT IT COMES WITH AN autogen.sh - ./autogen.sh || return 1 + ./autogen.sh || exit 1 fi # UPDATE CONFIG FILES TO SUPPORT APPLE ARCHITECTURES diff --git a/scripts/apple/gnutls.sh b/scripts/apple/gnutls.sh index 6a1ac91..a86fc50 100755 --- a/scripts/apple/gnutls.sh +++ b/scripts/apple/gnutls.sh @@ -12,14 +12,6 @@ export HOGWEED_LIBS="-L${LIB_INSTALL_BASE}/nettle/lib -lhogweed -L${LIB_INSTALL_ export GMP_CFLAGS="-I${LIB_INSTALL_BASE}/gmp/include" export GMP_LIBS="-L${LIB_INSTALL_BASE}/gmp/lib -lgmp" -# SET BUILD OPTIONS -case ${ARCH} in -i386) - # DISABLING thread_local WHICH IS NOT SUPPORTED ON i386 - export CFLAGS+=" -D__thread=" - ;; -esac - # ALWAYS CLEAN THE PREVIOUS BUILD make distclean 2>/dev/null 1>/dev/null diff --git a/scripts/apple/harfbuzz.sh b/scripts/apple/harfbuzz.sh index 07dba4c..4b71744 100755 --- a/scripts/apple/harfbuzz.sh +++ b/scripts/apple/harfbuzz.sh @@ -5,7 +5,7 @@ make distclean 2>/dev/null 1>/dev/null # REGENERATE BUILD FILES IF NECESSARY OR REQUESTED if [[ ! -f "${BASEDIR}"/src/"${LIB_NAME}"/configure ]] || [[ ${RECONF_harfbuzz} -eq 1 ]]; then - NOCONFIGURE=1 ./autogen.sh || return 1 + NOCONFIGURE=1 ./autogen.sh || exit 1 fi ./configure \ diff --git a/scripts/apple/libtheora.sh b/scripts/apple/libtheora.sh index 84696bb..fe822f3 100755 --- a/scripts/apple/libtheora.sh +++ b/scripts/apple/libtheora.sh @@ -9,7 +9,7 @@ if [[ ! -f "${BASEDIR}"/src/"${LIB_NAME}"/configure ]] || [[ ${RECONF_libtheora} # WORKAROUND NOT TO RUN CONFIGURE AT THE END OF autogen.sh ${SED_INLINE} 's/$srcdir\/configure/#$srcdir\/configure/g' "${BASEDIR}"/src/"${LIB_NAME}"/autogen.sh || return 1 - ./autogen.sh || return 1 + ./autogen.sh || exit 1 fi ./configure \ diff --git a/scripts/apple/openssl.sh b/scripts/apple/openssl.sh new file mode 100644 index 0000000..68d78dc --- /dev/null +++ b/scripts/apple/openssl.sh @@ -0,0 +1,49 @@ +#!/bin/bash + +if [[ ${ARCH} == "i386" ]] || [[ ${ARCH} == "armv7"* ]] || [[ ${FFMPEG_KIT_BUILD_TYPE} == "tvos" ]]; then + + # openssl does not support 32-bit apple architectures and tvos yet + echo -e "ERROR: openssl is not supported on $ARCH architecture for $FFMPEG_KIT_BUILD_TYPE platform.\n" 1>>"${BASEDIR}"/build.log 2>&1 + return 200 +fi + +# SET BUILD OPTIONS +ASM_OPTIONS="" +case ${ARCH} in +arm64 | arm64e | arm64-mac-catalyst | arm64-simulator | x86-64 | x86-64-mac-catalyst) + ASM_OPTIONS="enable-ec_nistp_64_gcc_128" + ;; +i386) + ASM_OPTIONS="386" + ;; +esac + +# ALWAYS CLEAN THE PREVIOUS BUILD +make distclean 2>/dev/null 1>/dev/null + +# REGENERATE BUILD FILES IF NECESSARY OR REQUESTED +if [[ ! -f "${BASEDIR}"/src/"${LIB_NAME}"/configure ]] || [[ ${RECONF_openssl} -eq 1 ]]; then + autoreconf_library "${LIB_NAME}" 1>>"${BASEDIR}"/build.log 2>&1 || exit 1 +fi + +INT128_AVAILABLE=$($CC -dM -E - >"${BASEDIR}"/build.log | grep __SIZEOF_INT128__) + +echo -e "INFO: __uint128_t detection output: $INT128_AVAILABLE\n" 1>>"${BASEDIR}"/build.log 2>&1 + +./Configure \ + --prefix="${LIB_INSTALL_PREFIX}" \ + zlib \ + no-shared \ + no-engine \ + no-dso \ + no-legacy \ + ${ASM_OPTIONS} \ + no-tests \ + iphoneos-cross || return 1 + +make -j$(get_cpu_count) build_sw || return 1 + +make install_sw install_ssldirs || return 1 + +# MANUALLY COPY PKG-CONFIG FILES +cp ./*.pc "${INSTALL_PKG_CONFIG_DIR}" || return 1 diff --git a/scripts/apple/sdl.sh b/scripts/apple/sdl.sh index 43471eb..5c97e99 100755 --- a/scripts/apple/sdl.sh +++ b/scripts/apple/sdl.sh @@ -15,7 +15,7 @@ make distclean 2>/dev/null 1>/dev/null overwrite_file "${BASEDIR}/tools/patch/make/sdl/configure.in" "${BASEDIR}/src/${LIB_NAME}/configure.in" # ALWAYS REGENERATE BUILD FILES - NECESSARY TO APPLY THE WORKAROUNDS -./autogen.sh || return 1 +./autogen.sh || exit 1 # WORKAROUND TO EXCLUDE libunwind.h ON LTS BUILDS if [[ -n ${FFMPEG_KIT_LTS_BUILD} ]]; then diff --git a/scripts/apple/srt.sh b/scripts/apple/srt.sh new file mode 100644 index 0000000..54e0ede --- /dev/null +++ b/scripts/apple/srt.sh @@ -0,0 +1,54 @@ +#!/bin/bash + +mkdir -p "${BUILD_DIR}" || return 1 +cd "${BUILD_DIR}" || return 1 + +# SET BUILD OPTIONS +ASM_OPTIONS="" +case ${ARCH} in +*-mac-catalyst) + ASM_OPTIONS="-DENABLE_MONOTONIC_CLOCK=0" + ;; +*) + ASM_OPTIONS="-DENABLE_MONOTONIC_CLOCK=1" + ;; +esac + +# ALWAYS CLEAN THE PREVIOUS BUILD +git clean -dfx 2>/dev/null 1>/dev/null + +cmake -Wno-dev \ + -DUSE_ENCLIB=openssl \ + -DCMAKE_VERBOSE_MAKEFILE=0 \ + -DCMAKE_C_FLAGS="${CFLAGS}" \ + -DCMAKE_CXX_FLAGS="${CXXFLAGS}" \ + -DCMAKE_EXE_LINKER_FLAGS="${LDFLAGS}" \ + -DCMAKE_SYSROOT="${SDK_PATH}" \ + -DCMAKE_FIND_ROOT_PATH="${SDK_PATH}" \ + -DCMAKE_OSX_SYSROOT="$(get_sdk_name)" \ + -DCMAKE_OSX_ARCHITECTURES="$(get_cmake_osx_architectures)" \ + -DCMAKE_SYSTEM_NAME="${CMAKE_SYSTEM_NAME}" \ + -DCMAKE_BUILD_TYPE=Release \ + -DCMAKE_INSTALL_PREFIX="${LIB_INSTALL_PREFIX}" \ + -DCMAKE_CXX_COMPILER="$CXX" \ + -DCMAKE_C_COMPILER="$CC" \ + -DCMAKE_LINKER="$LD" \ + -DCMAKE_AR="$(xcrun --sdk $(get_sdk_name) -f ar)" \ + -DCMAKE_AS="$AS" \ + -DCMAKE_SYSTEM_PROCESSOR="$(get_target_cpu)" \ + ${ASM_OPTIONS} \ + -DENABLE_STDCXX_SYNC=1 \ + -DENABLE_CXX11=1 \ + -DUSE_OPENSSL_PC=1 \ + -DENABLE_DEBUG=0 \ + -DENABLE_LOGGING=0 \ + -DENABLE_HEAVY_LOGGING=0 \ + -DENABLE_APPS=0 \ + -DENABLE_SHARED=0 "${BASEDIR}"/src/"${LIB_NAME}" || return 1 + +make -j$(get_cpu_count) || return 1 + +make install || return 1 + +# MANUALLY COPY PKG-CONFIG FILES +cp ./*.pc "${INSTALL_PKG_CONFIG_DIR}" || return 1 \ No newline at end of file diff --git a/scripts/apple/twolame.sh b/scripts/apple/twolame.sh index ae27b2f..7a5de63 100755 --- a/scripts/apple/twolame.sh +++ b/scripts/apple/twolame.sh @@ -9,7 +9,7 @@ make distclean 2>/dev/null 1>/dev/null # REGENERATE BUILD FILES IF NECESSARY OR REQUESTED if [[ ! -f "${BASEDIR}"/src/"${LIB_NAME}"/configure ]] || [[ ${RECONF_twolame} -eq 1 ]]; then - NOCONFIGURE=1 ./autogen.sh || return 1 + NOCONFIGURE=1 ./autogen.sh || exit 1 fi ./configure \ diff --git a/scripts/apple/zimg.sh b/scripts/apple/zimg.sh new file mode 100644 index 0000000..0e0ae64 --- /dev/null +++ b/scripts/apple/zimg.sh @@ -0,0 +1,34 @@ +#!/bin/bash + +# SET BUILD OPTIONS +ASM_OPTIONS="" +case ${ARCH} in +armv7 | armv7s) + ASM_OPTIONS="--disable-simd" + ;; +esac + +# ALWAYS CLEAN THE PREVIOUS BUILD +make distclean 2>/dev/null 1>/dev/null + +# REGENERATE BUILD FILES IF NECESSARY OR REQUESTED +if [[ ! -f "${BASEDIR}"/src/"${LIB_NAME}"/configure ]] || [[ ${RECONF_zimg} -eq 1 ]]; then + ./autogen.sh || exit 1 +fi + +./configure \ + --prefix="${LIB_INSTALL_PREFIX}" \ + --with-pic \ + --with-sysroot="${SDK_PATH}" \ + --enable-static \ + --disable-shared \ + --disable-fast-install \ + ${ASM_OPTIONS} \ + --host="${HOST}" || return 1 + +make -j$(get_cpu_count) || return 1 + +make install || return 1 + +# MANUALLY COPY PKG-CONFIG FILES +cp ./zimg.pc "${INSTALL_PKG_CONFIG_DIR}" || return 1 diff --git a/scripts/function-android.sh b/scripts/function-android.sh index 389a2c8..c7894aa 100755 --- a/scripts/function-android.sh +++ b/scripts/function-android.sh @@ -33,7 +33,7 @@ under the prebuilt folder.\n" echo -e "Usage: ./$COMMAND [OPTION]... [VAR=VALUE]...\n" echo -e "Specify environment variables as VARIABLE=VALUE to override default build options.\n" - display_help_options " -l, --lts\t\t\tbuild lts packages to support API 16+ devices" " --api-level=api\t\toverride Android api level" " --no-ffmpeg-kit-protocols\tdisable custom ffmpeg-kit protocols (fd, saf)" + display_help_options " -l, --lts\t\t\tbuild lts packages to support API 16+ devices" " --api-level=api\t\toverride Android api level" " --no-ffmpeg-kit-protocols\tdisable custom ffmpeg-kit protocols (saf)" display_help_licensing echo -e "Architectures:" @@ -69,7 +69,7 @@ build_application_mk() { local LTS_BUILD_FLAG="-DFFMPEG_KIT_LTS " fi - if [[ ${ENABLED_LIBRARIES[$LIBRARY_X265]} -eq 1 ]] || [[ ${ENABLED_LIBRARIES[$LIBRARY_TESSERACT]} -eq 1 ]] || [[ ${ENABLED_LIBRARIES[$LIBRARY_OPENH264]} -eq 1 ]] || [[ ${ENABLED_LIBRARIES[$LIBRARY_SNAPPY]} -eq 1 ]] || [[ ${ENABLED_LIBRARIES[$LIBRARY_RUBBERBAND]} -eq 1 ]]; then + if [[ ${ENABLED_LIBRARIES[$LIBRARY_X265]} -eq 1 ]] || [[ ${ENABLED_LIBRARIES[$LIBRARY_TESSERACT]} -eq 1 ]] || [[ ${ENABLED_LIBRARIES[$LIBRARY_OPENH264]} -eq 1 ]] || [[ ${ENABLED_LIBRARIES[$LIBRARY_SNAPPY]} -eq 1 ]] || [[ ${ENABLED_LIBRARIES[$LIBRARY_RUBBERBAND]} -eq 1 ]] || [[ ${ENABLED_LIBRARIES[$LIBRARY_ZIMG]} -eq 1 ]] || [[ ${ENABLED_LIBRARIES[$LIBRARY_SRT]} -eq 1 ]]; then local APP_STL="c++_shared" else local APP_STL="none" @@ -334,7 +334,7 @@ get_app_specific_cflags() { rubberband) APP_FLAGS="-std=c99 -Wno-unused-function" ;; - libvpx | shine) + libvpx | openssl | shine | srt) APP_FLAGS="-Wno-unused-function" ;; soxr | snappy | libwebp) @@ -392,7 +392,7 @@ get_cxxflags() { x265) echo "-std=c++11 -fno-exceptions ${OPTIMIZATION_FLAGS}" ;; - rubberband) + rubberband | srt | zimg) echo "-std=c++11 ${OPTIMIZATION_FLAGS}" ;; *) @@ -418,7 +418,7 @@ get_common_linked_libraries() { libvpx) echo "-lc -lm ${COMMON_LIBRARY_PATHS}" ;; - tesseract | x265) + srt | tesseract | x265) echo "-lc -lm -ldl -llog -lc++_shared ${COMMON_LIBRARY_PATHS}" ;; *) @@ -803,6 +803,26 @@ Cflags: -I\${includedir} EOF } +create_srt_package_config() { + local SRT_VERSION="$1" + + cat >"${INSTALL_PKG_CONFIG_DIR}/srt.pc" <"${INSTALL_PKG_CONFIG_DIR}/zimg.pc" <>"${BASEDIR}"/build.log 2>&1 fi - for library in {0..46}; do + for library in {0..49}; do if [[ ${ENABLED_LIBRARIES[$library]} -eq 1 ]]; then local ENABLED_LIBRARY_NAME="$(get_library_name ${library})" local ENABLED_LIBRARY_NAME_UPPERCASE=$(echo "${ENABLED_LIBRARY_NAME}" | tr '[a-z]' '[A-Z]') @@ -397,7 +397,7 @@ create_ffmpeg_framework() { # COPY EXTERNAL LIBRARY LICENSES if [[ "${FFMPEG_LIB}" == "libavcodec" ]]; then - for library in {0..46}; do + for library in {0..49}; do if [[ ${ENABLED_LIBRARIES[$library]} -eq 1 ]]; then local ENABLED_LIBRARY_NAME="$(get_library_name ${library})" local ENABLED_LIBRARY_NAME_UPPERCASE=$(echo "${ENABLED_LIBRARY_NAME}" | tr '[a-z]' '[A-Z]') diff --git a/scripts/function-ios.sh b/scripts/function-ios.sh index f00de1a..09fab5b 100755 --- a/scripts/function-ios.sh +++ b/scripts/function-ios.sh @@ -27,7 +27,7 @@ libraries are created under the prebuilt folder.\n" echo -e "Usage: ./$COMMAND [OPTION]...\n" echo -e "Specify environment variables as VARIABLE=VALUE to override default build options.\n" - display_help_options " -x, --xcframework\t\tbuild xcframework bundles instead of framework bundles and universal libraries" " -l, --lts build lts packages to support sdk 9.3+ devices" " --target=ios sdk version\t\t\toverride minimum deployment target [12.1]" " --mac-catalyst-target=ios sdk version\toverride minimum deployment target for mac catalyst [14.0]" + display_help_options " -x, --xcframework\t\tbuild xcframework bundles instead of framework bundles and universal libraries" " -l, --lts build lts packages to support sdk 10+ devices" " --target=ios sdk version\t\t\toverride minimum deployment target [12.1]" " --mac-catalyst-target=ios sdk version\toverride minimum deployment target for mac catalyst [14.0]" display_help_licensing echo -e "Architectures:" @@ -77,12 +77,12 @@ enable_main_build() { enable_lts_build() { export FFMPEG_KIT_LTS_BUILD="1" - if [[ $(compare_versions "$DETECTED_IOS_SDK_VERSION" "9.3") -le 0 ]]; then + if [[ $(compare_versions "$DETECTED_IOS_SDK_VERSION" "10") -le 0 ]]; then export IOS_MIN_VERSION=$DETECTED_IOS_SDK_VERSION else - # XCODE 7.3 HAS IOS SDK 9.3 - export IOS_MIN_VERSION=9.3 + # XCODE 8.0 HAS IOS SDK 10 + export IOS_MIN_VERSION=10 fi if [[ $(compare_versions "$DETECTED_IOS_SDK_VERSION" "13.0") -le 0 ]]; then @@ -139,8 +139,7 @@ get_arch_specific_cflags() { echo "-arch arm64e -target $(get_target) -march=armv8.3-a+crc+crypto -mcpu=generic -DFFMPEG_KIT_ARM64E" ;; i386) - # DISABLING thread_local WHICH IS NOT SUPPORTED ON i386 - echo "-arch i386 -target $(get_target) -march=i386 -mtune=i386 -mssse3 -mfpmath=sse -m32 -DFFMPEG_KIT_I386 -D__thread= " + echo "-arch i386 -target $(get_target) -march=i386 -mtune=i386 -mssse3 -mfpmath=sse -m32 -DFFMPEG_KIT_I386" ;; x86-64) echo "-arch x86_64 -target $(get_target) -march=x86-64 -msse4.2 -mpopcnt -m64 -DFFMPEG_KIT_X86_64" @@ -152,7 +151,6 @@ get_arch_specific_cflags() { } get_size_optimization_cflags() { - local ARCH_OPTIMIZATION="" case ${ARCH} in armv7 | armv7s | arm64 | arm64e | *-mac-catalyst) @@ -167,7 +165,6 @@ get_size_optimization_cflags() { } get_size_optimization_asm_cflags() { - local ARCH_OPTIMIZATION="" case $1 in jpeg | ffmpeg) @@ -189,7 +186,6 @@ get_size_optimization_asm_cflags() { } get_app_specific_cflags() { - local APP_FLAGS="" case $1 in fontconfig) @@ -229,7 +225,7 @@ get_app_specific_cflags() { soxr | snappy) APP_FLAGS="-std=gnu99 -Wno-unused-function -DPIC" ;; - openh264 | x265) + openh264 | openssl | x265) APP_FLAGS="-Wno-unused-function" ;; *) @@ -304,6 +300,9 @@ get_cxxflags() { rubberband) echo "-fno-rtti ${BITCODE_FLAGS} ${COMMON_CFLAGS} ${OPTIMIZATION_FLAGS}" ;; + srt | zimg) + echo "-std=c++11 ${BITCODE_FLAGS} ${COMMON_CFLAGS} ${OPTIMIZATION_FLAGS}" + ;; *) echo "-std=c++11 -fno-exceptions -fno-rtti ${BITCODE_FLAGS} ${COMMON_CFLAGS} ${OPTIMIZATION_FLAGS}" ;; diff --git a/scripts/function-macos.sh b/scripts/function-macos.sh index a746133..68a01f2 100755 --- a/scripts/function-macos.sh +++ b/scripts/function-macos.sh @@ -19,7 +19,7 @@ When compilation ends, libraries are created under the prebuilt folder.\n" echo -e "Usage: ./$COMMAND [OPTION]...\n" echo -e "Specify environment variables as VARIABLE=VALUE to override default build options.\n" - display_help_options " -x, --xcframework\t\tbuild xcframework bundles instead of framework bundles and universal libraries" " -l, --lts build lts packages to support sdk 10.11+ devices" " --target=macos sdk version\toverride minimum deployment target [10.15]" + display_help_options " -x, --xcframework\t\tbuild xcframework bundles instead of framework bundles and universal libraries" " -l, --lts build lts packages to support sdk 10.12+ devices" " --target=macos sdk version\toverride minimum deployment target [10.15]" display_help_licensing echo -e "Architectures:" @@ -59,12 +59,12 @@ enable_main_build() { enable_lts_build() { export FFMPEG_KIT_LTS_BUILD="1" - if [[ $(compare_versions "$DETECTED_MACOS_SDK_VERSION" "10.11") -le 0 ]]; then + if [[ $(compare_versions "$DETECTED_MACOS_SDK_VERSION" "10.12") -le 0 ]]; then export MACOS_MIN_VERSION=$DETECTED_MACOS_SDK_VERSION else - # XCODE 7.3 HAS MACOS SDK 10.11 - export MACOS_MIN_VERSION=10.11 + # XCODE 8.0 HAS MACOS SDK 10.12 + export MACOS_MIN_VERSION=10.12 fi } @@ -241,6 +241,9 @@ get_cxxflags() { rubberband) echo "-fno-rtti ${BITCODE_FLAGS} ${COMMON_CFLAGS} ${OPTIMIZATION_FLAGS}" ;; + srt | zimg) + echo "-std=c++11 ${BITCODE_FLAGS} ${COMMON_CFLAGS} ${OPTIMIZATION_FLAGS}" + ;; *) echo "-std=c++11 -fno-exceptions -fno-rtti ${BITCODE_FLAGS} ${COMMON_CFLAGS} ${OPTIMIZATION_FLAGS}" ;; diff --git a/scripts/function-tvos.sh b/scripts/function-tvos.sh index 605336e..72881dc 100755 --- a/scripts/function-tvos.sh +++ b/scripts/function-tvos.sh @@ -20,7 +20,7 @@ set explicitly. When compilation ends, libraries are created under the prebuilt echo -e "Usage: ./$COMMAND [OPTION]...\n" echo -e "Specify environment variables as VARIABLE=VALUE to override default build options.\n" - display_help_options " -x, --xcframework\t\tbuild xcframework bundles instead of framework bundles and universal libraries" " -l, --lts build lts packages to support sdk 9.2+ devices" " --target=tvos sdk version\toverride minimum deployment target [11.0]" + display_help_options " -x, --xcframework\t\tbuild xcframework bundles instead of framework bundles and universal libraries" " -l, --lts build lts packages to support sdk 10.0+ devices" " --target=tvos sdk version\toverride minimum deployment target [11.0]" display_help_licensing echo -e "Architectures:" @@ -59,12 +59,12 @@ enable_main_build() { enable_lts_build() { export FFMPEG_KIT_LTS_BUILD="1" - if [[ $(compare_versions "$DETECTED_TVOS_SDK_VERSION" "9.2") -le 0 ]]; then + if [[ $(compare_versions "$DETECTED_TVOS_SDK_VERSION" "10.0") -le 0 ]]; then export TVOS_MIN_VERSION=$DETECTED_TVOS_SDK_VERSION else - # XCODE 7.3 HAS TVOS SDK 9.2 - export TVOS_MIN_VERSION=9.2 + # XCODE 8.0 HAS TVOS SDK 10.0 + export TVOS_MIN_VERSION=10.0 fi } @@ -276,6 +276,9 @@ get_cxxflags() { rubberband) echo "-fno-rtti ${BITCODE_FLAGS} ${COMMON_CFLAGS} ${OPTIMIZATION_FLAGS}" ;; + srt | zimg) + echo "-std=c++11 ${BITCODE_FLAGS} ${COMMON_CFLAGS} ${OPTIMIZATION_FLAGS}" + ;; *) echo "-std=c++11 -fno-exceptions -fno-rtti ${BITCODE_FLAGS} ${COMMON_CFLAGS} ${OPTIMIZATION_FLAGS}" ;; diff --git a/scripts/function.sh b/scripts/function.sh index d678bf0..a430fb0 100755 --- a/scripts/function.sh +++ b/scripts/function.sh @@ -82,22 +82,25 @@ get_library_name() { 31) echo "tesseract" ;; 32) echo "openh264" ;; 33) echo "vo-amrwbenc" ;; - 34) echo "giflib" ;; - 35) echo "jpeg" ;; - 36) echo "libogg" ;; - 37) echo "libpng" ;; - 38) echo "libuuid" ;; - 39) echo "nettle" ;; - 40) echo "tiff" ;; - 41) echo "expat" ;; - 42) echo "libsndfile" ;; - 43) echo "leptonica" ;; - 44) echo "libsamplerate" ;; - 45) echo "harfbuzz" ;; - 46) echo "cpu-features" ;; - 47) echo "android-zlib" ;; - 48) echo "android-media-codec" ;; - 49) + 34) echo "zimg" ;; + 35) echo "openssl" ;; + 36) echo "srt" ;; + 37) echo "giflib" ;; + 38) echo "jpeg" ;; + 39) echo "libogg" ;; + 40) echo "libpng" ;; + 41) echo "libuuid" ;; + 42) echo "nettle" ;; + 43) echo "tiff" ;; + 44) echo "expat" ;; + 45) echo "libsndfile" ;; + 46) echo "leptonica" ;; + 47) echo "libsamplerate" ;; + 48) echo "harfbuzz" ;; + 49) echo "cpu-features" ;; + 50) echo "android-zlib" ;; + 51) echo "android-media-codec" ;; + 52) if [[ ${FFMPEG_KIT_BUILD_TYPE} == "ios" ]]; then echo "ios-zlib" elif [[ ${FFMPEG_KIT_BUILD_TYPE} == "macos" ]]; then @@ -106,7 +109,7 @@ get_library_name() { echo "tvos-zlib" fi ;; - 50) + 53) if [[ ${FFMPEG_KIT_BUILD_TYPE} == "ios" ]]; then echo "ios-audiotoolbox" elif [[ ${FFMPEG_KIT_BUILD_TYPE} == "macos" ]]; then @@ -115,7 +118,7 @@ get_library_name() { echo "tvos-audiotoolbox" fi ;; - 51) + 54) if [[ ${FFMPEG_KIT_BUILD_TYPE} == "ios" ]]; then echo "ios-bzip2" elif [[ ${FFMPEG_KIT_BUILD_TYPE} == "macos" ]]; then @@ -124,7 +127,7 @@ get_library_name() { echo "tvos-bzip2" fi ;; - 52) + 55) if [[ ${FFMPEG_KIT_BUILD_TYPE} == "ios" ]]; then echo "ios-videotoolbox" elif [[ ${FFMPEG_KIT_BUILD_TYPE} == "macos" ]]; then @@ -133,14 +136,14 @@ get_library_name() { echo "tvos-videotoolbox" fi ;; - 53) + 56) if [[ ${FFMPEG_KIT_BUILD_TYPE} == "ios" ]]; then echo "ios-avfoundation" elif [[ ${FFMPEG_KIT_BUILD_TYPE} == "macos" ]]; then echo "macos-avfoundation" fi ;; - 54) + 57) if [[ ${FFMPEG_KIT_BUILD_TYPE} == "ios" ]]; then echo "ios-libiconv" elif [[ ${FFMPEG_KIT_BUILD_TYPE} == "macos" ]]; then @@ -149,7 +152,7 @@ get_library_name() { echo "tvos-libiconv" fi ;; - 55) + 58) if [[ ${FFMPEG_KIT_BUILD_TYPE} == "ios" ]]; then echo "ios-libuuid" elif [[ ${FFMPEG_KIT_BUILD_TYPE} == "macos" ]]; then @@ -158,17 +161,17 @@ get_library_name() { echo "tvos-libuuid" fi ;; - 56) + 59) if [[ ${FFMPEG_KIT_BUILD_TYPE} == "macos" ]]; then echo "macos-coreimage" fi ;; - 57) + 60) if [[ ${FFMPEG_KIT_BUILD_TYPE} == "macos" ]]; then echo "macos-opencl" fi ;; - 58) + 61) if [[ ${FFMPEG_KIT_BUILD_TYPE} == "macos" ]]; then echo "macos-opengl" fi @@ -212,31 +215,34 @@ from_library_name() { tesseract) echo 31 ;; openh264) echo 32 ;; vo-amrwbenc) echo 33 ;; - giflib) echo 34 ;; - jpeg) echo 35 ;; - libogg) echo 36 ;; - libpng) echo 37 ;; - libuuid) echo 38 ;; - nettle) echo 39 ;; - tiff) echo 40 ;; - expat) echo 41 ;; - libsndfile) echo 42 ;; - leptonica) echo 43 ;; - libsamplerate) echo 44 ;; - harfbuzz) echo 45 ;; - cpu-features) echo 46 ;; - android-zlib) echo 47 ;; - android-media-codec) echo 48 ;; - ios-zlib | macos-zlib | tvos-zlib) echo 49 ;; - ios-audiotoolbox | macos-audiotoolbox | tvos-audiotoolbox) echo 50 ;; - ios-bzip2 | macos-bzip2 | tvos-bzip2) echo 51 ;; - ios-videotoolbox | macos-videotoolbox | tvos-videotoolbox) echo 52 ;; - ios-avfoundation | macos-avfoundation) echo 53 ;; - ios-libiconv | macos-libiconv | tvos-libiconv) echo 54 ;; - ios-libuuid | macos-libuuid | tvos-libuuid) echo 55 ;; - macos-coreimage) echo 56 ;; - macos-opencl) echo 57 ;; - macos-opengl) echo 58 ;; + zimg) echo 34 ;; + openssl) echo 35 ;; + srt) echo 36 ;; + giflib) echo 37 ;; + jpeg) echo 38 ;; + libogg) echo 39 ;; + libpng) echo 40 ;; + libuuid) echo 41 ;; + nettle) echo 42 ;; + tiff) echo 43 ;; + expat) echo 44 ;; + libsndfile) echo 45 ;; + leptonica) echo 46 ;; + libsamplerate) echo 47 ;; + harfbuzz) echo 48 ;; + cpu-features) echo 49 ;; + android-zlib) echo 50 ;; + android-media-codec) echo 51 ;; + ios-zlib | macos-zlib | tvos-zlib) echo 52 ;; + ios-audiotoolbox | macos-audiotoolbox | tvos-audiotoolbox) echo 53 ;; + ios-bzip2 | macos-bzip2 | tvos-bzip2) echo 54 ;; + ios-videotoolbox | macos-videotoolbox | tvos-videotoolbox) echo 55 ;; + ios-avfoundation | macos-avfoundation) echo 56 ;; + ios-libiconv | macos-libiconv | tvos-libiconv) echo 57 ;; + ios-libuuid | macos-libuuid | tvos-libuuid) echo 58 ;; + macos-coreimage) echo 59 ;; + macos-opencl) echo 60 ;; + macos-opengl) echo 61 ;; esac } @@ -252,12 +258,12 @@ is_library_supported_on_platform() { 21 | 22 | 23 | 24 | 25 | 26 | 27 | 28 | 29 | 30 | 31 | 32 | 33 | 34 | 35 | 36 | 37 | 39 | 40) echo "0" ;; - 41 | 42 | 43 | 44 | 45) + 41 | 42 | 43 | 44 | 45 | 46 | 47 | 48) echo "0" ;; # ANDROID - 7 | 38 | 46 | 47 | 48) + 7 | 38 | 49 | 50 | 51) if [[ ${FFMPEG_KIT_BUILD_TYPE} == "android" ]]; then echo "0" else @@ -266,7 +272,7 @@ is_library_supported_on_platform() { ;; # ONLY IOS AND MACOS - 53) + 56) if [[ ${FFMPEG_KIT_BUILD_TYPE} == "ios" ]] && [[ $1 == "ios-avfoundation" ]]; then echo "0" elif [[ ${FFMPEG_KIT_BUILD_TYPE} == "macos" ]] && [[ $1 == "macos-avfoundation" ]]; then @@ -277,7 +283,7 @@ is_library_supported_on_platform() { ;; # IOS, MACOS AND TVOS - 49 | 50 | 51 | 52 | 54 | 55) + 52 | 53 | 54 | 55 | 57 | 58) if [[ ${FFMPEG_KIT_BUILD_TYPE} == "ios" ]] || [[ ${FFMPEG_KIT_BUILD_TYPE} == "tvos" ]] || [[ ${FFMPEG_KIT_BUILD_TYPE} == "macos" ]]; then echo "0" else @@ -286,7 +292,7 @@ is_library_supported_on_platform() { ;; # ONLY MACOS - 56 | 57 | 58) + 59 | 60 | 61) if [[ ${FFMPEG_KIT_BUILD_TYPE} == "macos" ]]; then echo "0" else @@ -363,13 +369,13 @@ get_package_config_file_name() { 27) echo "aom" ;; 28) echo "libchromaprint" ;; 30) echo "sdl2" ;; - 35) echo "libjpeg" ;; - 36) echo "ogg" ;; - 40) echo "libtiff-4" ;; - 42) echo "sndfile" ;; - 43) echo "lept" ;; - 44) echo "samplerate" ;; - 55) echo "uuid" ;; + 38) echo "libjpeg" ;; + 39) echo "ogg" ;; + 43) echo "libtiff-4" ;; + 45) echo "sndfile" ;; + 46) echo "lept" ;; + 47) echo "samplerate" ;; + 58) echo "uuid" ;; *) echo "$(get_library_name "$1")" ;; esac } @@ -768,15 +774,18 @@ display_help_common_libraries() { echo -e " --enable-libxml2\t\tbuild with libxml2 [no]" echo -e " --enable-opencore-amr\t\tbuild with opencore-amr [no]" echo -e " --enable-openh264\t\tbuild with openh264 [no]" + echo -e " --enable-openssl\t\tbuild with openssl [no]" echo -e " --enable-opus\t\t\tbuild with opus [no]" echo -e " --enable-sdl\t\t\tbuild with sdl [no]" echo -e " --enable-shine\t\tbuild with shine [no]" echo -e " --enable-snappy\t\tbuild with snappy [no]" echo -e " --enable-soxr\t\t\tbuild with soxr [no]" echo -e " --enable-speex\t\tbuild with speex [no]" + echo -e " --enable-srt\t\t\tbuild with srt [no]" echo -e " --enable-tesseract\t\tbuild with tesseract [no]" echo -e " --enable-twolame\t\tbuild with twolame [no]" - echo -e " --enable-vo-amrwbenc\t\tbuild with vo-amrwbenc [no]\n" + echo -e " --enable-vo-amrwbenc\t\tbuild with vo-amrwbenc [no]" + echo -e " --enable-zimg\t\t\tbuild with zimg [no]\n" } display_help_gpl_libraries() { @@ -806,7 +815,7 @@ reconf_library() { local RECONF_VARIABLE=$(echo "RECONF_$1" | sed "s/\-/\_/g") local library_supported=0 - for library in {0..46}; do + for library in {0..49}; do library_name=$(get_library_name ${library}) local library_supported_on_platform=$(is_library_supported_on_platform "${library_name}") @@ -829,7 +838,7 @@ rebuild_library() { local REBUILD_VARIABLE=$(echo "REBUILD_$1" | sed "s/\-/\_/g") local library_supported=0 - for library in {0..46}; do + for library in {0..49}; do library_name=$(get_library_name ${library}) local library_supported_on_platform=$(is_library_supported_on_platform "${library_name}") @@ -852,7 +861,7 @@ redownload_library() { local REDOWNLOAD_VARIABLE=$(echo "REDOWNLOAD_$1" | sed "s/\-/\_/g") local library_supported=0 - for library in {0..46}; do + for library in {0..49}; do library_name=$(get_library_name ${library}) local library_supported_on_platform=$(is_library_supported_on_platform "${library_name}") @@ -1038,6 +1047,9 @@ set_library() { openh264) ENABLED_LIBRARIES[LIBRARY_OPENH264]=$2 ;; + openssl) + ENABLED_LIBRARIES[LIBRARY_OPENSSL]=$2 + ;; opus) ENABLED_LIBRARIES[LIBRARY_OPUS]=$2 ;; @@ -1062,6 +1074,10 @@ set_library() { speex) ENABLED_LIBRARIES[LIBRARY_SPEEX]=$2 ;; + srt) + ENABLED_LIBRARIES[LIBRARY_SRT]=$2 + set_library "openssl" $2 + ;; tesseract) ENABLED_LIBRARIES[LIBRARY_TESSERACT]=$2 ENABLED_LIBRARIES[LIBRARY_LEPTONICA]=$2 @@ -1088,6 +1104,9 @@ set_library() { xvidcore) ENABLED_LIBRARIES[LIBRARY_XVIDCORE]=$2 ;; + zimg) + ENABLED_LIBRARIES[LIBRARY_ZIMG]=$2 + ;; expat | giflib | jpeg | leptonica | libogg | libsamplerate | libsndfile) # THESE LIBRARIES ARE NOT ENABLED DIRECTLY ;; @@ -1277,6 +1296,9 @@ check_if_dependency_rebuilt() { nettle) set_dependency_rebuilt_flag "gnutls" ;; + openssl) + set_dependency_rebuilt_flag "srt" + ;; tiff) set_dependency_rebuilt_flag "libwebp" set_dependency_rebuilt_flag "leptonica" @@ -1338,7 +1360,7 @@ print_enabled_libraries() { let enabled=0 # SUPPLEMENTARY LIBRARIES NOT PRINTED - for library in {47..54} {56..58} {0..33}; do + for library in {50..57} {59..61} {0..36}; do if [[ ${ENABLED_LIBRARIES[$library]} -eq 1 ]]; then if [[ ${enabled} -ge 1 ]]; then echo -n ", " @@ -1361,7 +1383,7 @@ print_enabled_xcframeworks() { let enabled=0 # SUPPLEMENTARY LIBRARIES NOT PRINTED - for library in {0..46}; do + for library in {0..49}; do if [[ ${ENABLED_LIBRARIES[$library]} -eq 1 ]]; then if [[ ${enabled} -ge 1 ]]; then echo -n ", " @@ -1445,16 +1467,16 @@ print_redownload_requested_libraries() { # 1 - library index get_external_library_license_path() { case $1 in - 1) echo "${BASEDIR}/src/$(get_library_name "$1")/LICENSE.TXT" ;; + 1 | 35) echo "${BASEDIR}/src/$(get_library_name "$1")/LICENSE.TXT" ;; 3 | 39) echo "${BASEDIR}/src/$(get_library_name "$1")/COPYING.LESSERv3" ;; 5 | 41) echo "${BASEDIR}/src/$(get_library_name "$1")/$(get_library_name "$1")/COPYING" ;; 19) echo "${BASEDIR}/src/$(get_library_name "$1")/$(get_library_name "$1")/LICENSE" ;; 26) echo "${BASEDIR}/src/$(get_library_name "$1")/COPYING.LGPL" ;; - 28 | 35) echo "${BASEDIR}/src/$(get_library_name "$1")/LICENSE.md " ;; + 28 | 38) echo "${BASEDIR}/src/$(get_library_name "$1")/LICENSE.md " ;; 30) echo "${BASEDIR}/src/$(get_library_name "$1")/COPYING.txt" ;; - 40) echo "${BASEDIR}/src/$(get_library_name "$1")/COPYRIGHT" ;; - 43) echo "${BASEDIR}/src/$(get_library_name "$1")/leptonica-license.txt" ;; - 4 | 10 | 13 | 21 | 27 | 31 | 32 | 37 | 46) echo "${BASEDIR}/src/$(get_library_name "$1")/LICENSE" ;; + 43) echo "${BASEDIR}/src/$(get_library_name "$1")/COPYRIGHT" ;; + 46) echo "${BASEDIR}/src/$(get_library_name "$1")/leptonica-license.txt" ;; + 4 | 10 | 13 | 21 | 27 | 31 | 32 | 36 | 40 | 49) echo "${BASEDIR}/src/$(get_library_name "$1")/LICENSE" ;; *) echo "${BASEDIR}/src/$(get_library_name "$1")/COPYING" ;; esac } @@ -1706,7 +1728,7 @@ downloaded_enabled_library_sources() { exit 1 fi - for library in {1..47}; do + for library in {1..50}; do if [[ ${!library} -eq 1 ]]; then library_name=$(get_library_name $((library - 1))) diff --git a/scripts/main-android.sh b/scripts/main-android.sh index 180a187..de891ab 100755 --- a/scripts/main-android.sh +++ b/scripts/main-android.sh @@ -43,7 +43,7 @@ fi # FILTER WHICH EXTERNAL LIBRARIES WILL BE BUILT # NOTE THAT BUILT-IN LIBRARIES ARE FORWARDED TO FFMPEG SCRIPT WITHOUT ANY PROCESSING enabled_library_list=() -for library in {1..47}; do +for library in {1..50}; do if [[ ${!library} -eq 1 ]]; then ENABLED_LIBRARY=$(get_library_name $((library - 1))) enabled_library_list+=(${ENABLED_LIBRARY}) @@ -138,6 +138,11 @@ while [ ${#enabled_library_list[@]} -gt $completed ]; do run=1 fi ;; + srt) + if [[ $OK_openssl -eq 1 ]]; then + run=1 + fi + ;; tesseract) if [[ $OK_leptonica -eq 1 ]]; then run=1 @@ -175,12 +180,17 @@ while [ ${#enabled_library_list[@]} -gt $completed ]; do "${BASEDIR}"/scripts/run-android.sh "${library}" 1>>"${BASEDIR}"/build.log 2>&1 + RC=$? + # SET SOME FLAGS AFTER THE BUILD - if [ $? -eq 0 ]; then + if [ $RC -eq 0 ]; then ((completed += 1)) declare "$BUILD_COMPLETED_FLAG=1" check_if_dependency_rebuilt "${library}" echo "ok" + elif [ $RC -eq 200 ]; then + echo -e "not supported\n\nSee build.log for details\n" + exit 1 else echo -e "failed\n\nSee build.log for details\n" exit 1 diff --git a/scripts/main-ios.sh b/scripts/main-ios.sh index 1eb1ca6..0455868 100755 --- a/scripts/main-ios.sh +++ b/scripts/main-ios.sh @@ -38,7 +38,7 @@ fi # FILTER WHICH EXTERNAL LIBRARIES WILL BE BUILT # NOTE THAT BUILT-IN LIBRARIES ARE FORWARDED TO FFMPEG SCRIPT WITHOUT ANY PROCESSING enabled_library_list=() -for library in {1..47}; do +for library in {1..50}; do if [[ ${!library} -eq 1 ]]; then ENABLED_LIBRARY=$(get_library_name $((library - 1))) enabled_library_list+=(${ENABLED_LIBRARY}) @@ -108,6 +108,11 @@ while [ ${#enabled_library_list[@]} -gt $completed ]; do run=1 fi ;; + srt) + if [[ $OK_openssl -eq 1 ]]; then + run=1 + fi + ;; tesseract) if [[ $OK_leptonica -eq 1 ]]; then run=1 @@ -145,12 +150,17 @@ while [ ${#enabled_library_list[@]} -gt $completed ]; do "${BASEDIR}"/scripts/run-apple.sh "${library}" 1>>"${BASEDIR}"/build.log 2>&1 + RC=$? + # SET SOME FLAGS AFTER THE BUILD - if [ $? -eq 0 ]; then + if [ $RC -eq 0 ]; then ((completed += 1)) declare "$BUILD_COMPLETED_FLAG=1" check_if_dependency_rebuilt "${library}" echo "ok" + elif [ $RC -eq 200 ]; then + echo -e "not supported\n\nSee build.log for details\n" + exit 1 else echo -e "failed\n\nSee build.log for details\n" exit 1 diff --git a/scripts/main-macos.sh b/scripts/main-macos.sh index ac25bb7..3d6309c 100755 --- a/scripts/main-macos.sh +++ b/scripts/main-macos.sh @@ -38,7 +38,7 @@ fi # FILTER WHICH EXTERNAL LIBRARIES WILL BE BUILT # NOTE THAT BUILT-IN LIBRARIES ARE FORWARDED TO FFMPEG SCRIPT WITHOUT ANY PROCESSING enabled_library_list=() -for library in {1..47}; do +for library in {1..50}; do if [[ ${!library} -eq 1 ]]; then ENABLED_LIBRARY=$(get_library_name $((library - 1))) enabled_library_list+=(${ENABLED_LIBRARY}) @@ -108,6 +108,11 @@ while [ ${#enabled_library_list[@]} -gt $completed ]; do run=1 fi ;; + srt) + if [[ $OK_openssl -eq 1 ]]; then + run=1 + fi + ;; tesseract) if [[ $OK_leptonica -eq 1 ]]; then run=1 @@ -144,12 +149,17 @@ while [ ${#enabled_library_list[@]} -gt $completed ]; do "${BASEDIR}"/scripts/run-apple.sh "${library}" 1>>"${BASEDIR}"/build.log 2>&1 + RC=$? + # SET SOME FLAGS AFTER THE BUILD - if [ $? -eq 0 ]; then + if [ $RC -eq 0 ]; then ((completed += 1)) declare "$BUILD_COMPLETED_FLAG=1" check_if_dependency_rebuilt "${library}" echo "ok" + elif [ $RC -eq 200 ]; then + echo -e "not supported\n\nSee build.log for details\n" + exit 1 else echo -e "failed\n\nSee build.log for details\n" exit 1 diff --git a/scripts/main-tvos.sh b/scripts/main-tvos.sh index da6b876..29249a9 100755 --- a/scripts/main-tvos.sh +++ b/scripts/main-tvos.sh @@ -38,7 +38,7 @@ fi # FILTER WHICH EXTERNAL LIBRARIES WILL BE BUILT # NOTE THAT BUILT-IN LIBRARIES ARE FORWARDED TO FFMPEG SCRIPT WITHOUT ANY PROCESSING enabled_library_list=() -for library in {1..47}; do +for library in {1..50}; do if [[ ${!library} -eq 1 ]]; then ENABLED_LIBRARY=$(get_library_name $((library - 1))) enabled_library_list+=(${ENABLED_LIBRARY}) @@ -108,6 +108,11 @@ while [ ${#enabled_library_list[@]} -gt $completed ]; do run=1 fi ;; + srt) + if [[ $OK_openssl -eq 1 ]]; then + run=1 + fi + ;; tesseract) if [[ $OK_leptonica -eq 1 ]]; then run=1 @@ -143,12 +148,17 @@ while [ ${#enabled_library_list[@]} -gt $completed ]; do "${BASEDIR}"/scripts/run-apple.sh "${library}" 1>>"${BASEDIR}"/build.log 2>&1 + RC=$? + # SET SOME FLAGS AFTER THE BUILD - if [ $? -eq 0 ]; then + if [ $RC -eq 0 ]; then ((completed += 1)) declare "$BUILD_COMPLETED_FLAG=1" check_if_dependency_rebuilt "${library}" echo "ok" + elif [ $RC -eq 200 ]; then + echo -e "not supported\n\nSee build.log for details\n" + exit 1 else echo -e "failed\n\nSee build.log for details\n" exit 1 diff --git a/scripts/source.sh b/scripts/source.sh index 6bcebc1..b4b346a 100755 --- a/scripts/source.sh +++ b/scripts/source.sh @@ -182,6 +182,11 @@ get_library_source() { SOURCE_ID="v2.1.1" SOURCE_TYPE="TAG" ;; + openssl) + SOURCE_REPO_URL="https://github.com/tanersener/openssl" + SOURCE_ID="openssl-3.0.1" + SOURCE_TYPE="TAG" + ;; opus) SOURCE_REPO_URL="https://github.com/tanersener/opus" SOURCE_ID="v1.3.1" @@ -217,6 +222,11 @@ get_library_source() { SOURCE_ID="Speex-1.2.0" SOURCE_TYPE="TAG" ;; + srt) + SOURCE_REPO_URL="https://github.com/tanersener/srt" + SOURCE_ID="v1.4.4" + SOURCE_TYPE="TAG" + ;; tesseract) SOURCE_REPO_URL="https://github.com/tanersener/tesseract" SOURCE_ID="3.05.02" @@ -252,6 +262,11 @@ get_library_source() { SOURCE_ID="release-1_3_7" SOURCE_TYPE="TAG" ;; + zimg) + SOURCE_REPO_URL="https://github.com/tanersener/zimg" + SOURCE_ID="release-3.0.3" + SOURCE_TYPE="TAG" + ;; esac case $2 in diff --git a/scripts/variable.sh b/scripts/variable.sh index ef295f9..13da91e 100755 --- a/scripts/variable.sh +++ b/scripts/variable.sh @@ -10,7 +10,7 @@ ENABLED_ARCHITECTURES=(0 0 0 0 0 0 0 0 0 0 0 0 0) ENABLED_ARCHITECTURE_VARIANTS=(0 0 0 0 0 0 0 0) # ARRAY OF ENABLED LIBRARIES -ENABLED_LIBRARIES=(0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0) +ENABLED_LIBRARIES=(0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0) # ARRAY OF LIBRARIES THAT WILL BE RE-CONFIGURED RECONF_LIBRARIES=() @@ -81,28 +81,31 @@ LIBRARY_SDL=30 LIBRARY_TESSERACT=31 LIBRARY_OPENH264=32 LIBRARY_VO_AMRWBENC=33 -LIBRARY_GIFLIB=34 -LIBRARY_JPEG=35 -LIBRARY_LIBOGG=36 -LIBRARY_LIBPNG=37 -LIBRARY_LIBUUID=38 -LIBRARY_NETTLE=39 -LIBRARY_TIFF=40 -LIBRARY_EXPAT=41 -LIBRARY_SNDFILE=42 -LIBRARY_LEPTONICA=43 -LIBRARY_LIBSAMPLERATE=44 -LIBRARY_HARFBUZZ=45 -LIBRARY_CPU_FEATURES=46 -LIBRARY_ANDROID_ZLIB=47 -LIBRARY_ANDROID_MEDIA_CODEC=48 -LIBRARY_APPLE_ZLIB=49 -LIBRARY_APPLE_AUDIOTOOLBOX=50 -LIBRARY_APPLE_BZIP2=51 -LIBRARY_APPLE_VIDEOTOOLBOX=52 -LIBRARY_APPLE_AVFOUNDATION=53 -LIBRARY_APPLE_LIBICONV=54 -LIBRARY_APPLE_LIBUUID=55 -LIBRARY_APPLE_COREIMAGE=56 -LIBRARY_APPLE_OPENCL=57 -LIBRARY_APPLE_OPENGL=58 +LIBRARY_ZIMG=34 +LIBRARY_OPENSSL=35 +LIBRARY_SRT=36 +LIBRARY_GIFLIB=37 +LIBRARY_JPEG=38 +LIBRARY_LIBOGG=39 +LIBRARY_LIBPNG=40 +LIBRARY_LIBUUID=41 +LIBRARY_NETTLE=42 +LIBRARY_TIFF=43 +LIBRARY_EXPAT=44 +LIBRARY_SNDFILE=45 +LIBRARY_LEPTONICA=46 +LIBRARY_LIBSAMPLERATE=47 +LIBRARY_HARFBUZZ=48 +LIBRARY_CPU_FEATURES=49 +LIBRARY_ANDROID_ZLIB=50 +LIBRARY_ANDROID_MEDIA_CODEC=51 +LIBRARY_APPLE_ZLIB=52 +LIBRARY_APPLE_AUDIOTOOLBOX=53 +LIBRARY_APPLE_BZIP2=54 +LIBRARY_APPLE_VIDEOTOOLBOX=55 +LIBRARY_APPLE_AVFOUNDATION=56 +LIBRARY_APPLE_LIBICONV=57 +LIBRARY_APPLE_LIBUUID=58 +LIBRARY_APPLE_COREIMAGE=59 +LIBRARY_APPLE_OPENCL=60 +LIBRARY_APPLE_OPENGL=61 diff --git a/src/.gitignore b/src/.gitignore index 828d4e3..2767ab3 100644 --- a/src/.gitignore +++ b/src/.gitignore @@ -32,6 +32,7 @@ libxml2 nettle opencore-amr openh264 +openssl opus rubberband sdl @@ -39,6 +40,7 @@ shine snappy soxr speex +srt tesseract tiff twolame @@ -46,3 +48,4 @@ vo-amrwbenc x264 x265 xvidcore +zimg diff --git a/tools/release/android/build.gradle b/tools/release/android/build.gradle index 2fc5175..2b88073 100644 --- a/tools/release/android/build.gradle +++ b/tools/release/android/build.gradle @@ -44,8 +44,8 @@ task javadoc(type: Javadoc) { } dependencies { - implementation 'com.arthenica:smart-exception-java:0.1.0' - testImplementation "androidx.test.ext:junit:1.1.2" + implementation 'com.arthenica:smart-exception-java:0.1.1' + testImplementation "androidx.test.ext:junit:1.1.3" testImplementation "org.json:json:20201115" } diff --git a/tools/release/android/build.lts.gradle b/tools/release/android/build.lts.gradle index 7158d54..89163ed 100644 --- a/tools/release/android/build.lts.gradle +++ b/tools/release/android/build.lts.gradle @@ -44,8 +44,8 @@ task javadoc(type: Javadoc) { } dependencies { - implementation 'com.arthenica:smart-exception-java:0.1.0' - testImplementation "androidx.test.ext:junit:1.1.2" + implementation 'com.arthenica:smart-exception-java:0.1.1' + testImplementation "androidx.test.ext:junit:1.1.3" testImplementation "org.json:json:20201115" } diff --git a/tools/release/apple/ffmpeg-kit-ios-audio.podspec b/tools/release/apple/ffmpeg-kit-ios-audio.podspec index a07c328..666141c 100644 --- a/tools/release/apple/ffmpeg-kit-ios-audio.podspec +++ b/tools/release/apple/ffmpeg-kit-ios-audio.podspec @@ -17,7 +17,7 @@ Pod::Spec.new do |s| s.source = { :http => "https://github.com/tanersener/ffmpeg-kit/releases/download/vVERSION/ffmpeg-kit-audio-VERSION-ios-framework.zip" } - s.ios.deployment_target = '9.3' + s.ios.deployment_target = '10' s.ios.frameworks = 'AudioToolbox','AVFoundation','CoreMedia','VideoToolbox' s.ios.vendored_frameworks = 'ffmpegkit.framework', 'libavcodec.framework', 'libavdevice.framework', 'libavfilter.framework', 'libavformat.framework', 'libavutil.framework', 'libswresample.framework', 'libswscale.framework' diff --git a/tools/release/apple/ffmpeg-kit-ios-full-gpl.podspec b/tools/release/apple/ffmpeg-kit-ios-full-gpl.podspec index 8247000..55e6e9a 100644 --- a/tools/release/apple/ffmpeg-kit-ios-full-gpl.podspec +++ b/tools/release/apple/ffmpeg-kit-ios-full-gpl.podspec @@ -17,7 +17,7 @@ Pod::Spec.new do |s| s.source = { :http => "https://github.com/tanersener/ffmpeg-kit/releases/download/vVERSION/ffmpeg-kit-full-gpl-VERSION-ios-framework.zip" } - s.ios.deployment_target = '9.3' + s.ios.deployment_target = '10' s.ios.frameworks = 'AudioToolbox','AVFoundation','CoreMedia','VideoToolbox' s.ios.vendored_frameworks = 'ffmpegkit.framework', 'libavcodec.framework', 'libavdevice.framework', 'libavfilter.framework', 'libavformat.framework', 'libavutil.framework', 'libswresample.framework', 'libswscale.framework' diff --git a/tools/release/apple/ffmpeg-kit-ios-full.podspec b/tools/release/apple/ffmpeg-kit-ios-full.podspec index 41d2fb0..7530ae1 100644 --- a/tools/release/apple/ffmpeg-kit-ios-full.podspec +++ b/tools/release/apple/ffmpeg-kit-ios-full.podspec @@ -17,7 +17,7 @@ Pod::Spec.new do |s| s.source = { :http => "https://github.com/tanersener/ffmpeg-kit/releases/download/vVERSION/ffmpeg-kit-full-VERSION-ios-framework.zip" } - s.ios.deployment_target = '9.3' + s.ios.deployment_target = '10' s.ios.frameworks = 'AudioToolbox','AVFoundation','CoreMedia','VideoToolbox' s.ios.vendored_frameworks = 'ffmpegkit.framework', 'libavcodec.framework', 'libavdevice.framework', 'libavfilter.framework', 'libavformat.framework', 'libavutil.framework', 'libswresample.framework', 'libswscale.framework' diff --git a/tools/release/apple/ffmpeg-kit-ios-https-gpl.podspec b/tools/release/apple/ffmpeg-kit-ios-https-gpl.podspec index 4551828..edccda2 100644 --- a/tools/release/apple/ffmpeg-kit-ios-https-gpl.podspec +++ b/tools/release/apple/ffmpeg-kit-ios-https-gpl.podspec @@ -17,7 +17,7 @@ Pod::Spec.new do |s| s.source = { :http => "https://github.com/tanersener/ffmpeg-kit/releases/download/vVERSION/ffmpeg-kit-https-gpl-VERSION-ios-framework.zip" } - s.ios.deployment_target = '9.3' + s.ios.deployment_target = '10' s.ios.frameworks = 'AudioToolbox','AVFoundation','CoreMedia','VideoToolbox' s.ios.vendored_frameworks = 'ffmpegkit.framework', 'libavcodec.framework', 'libavdevice.framework', 'libavfilter.framework', 'libavformat.framework', 'libavutil.framework', 'libswresample.framework', 'libswscale.framework' diff --git a/tools/release/apple/ffmpeg-kit-ios-https.podspec b/tools/release/apple/ffmpeg-kit-ios-https.podspec index 82470d2..9c4fb91 100644 --- a/tools/release/apple/ffmpeg-kit-ios-https.podspec +++ b/tools/release/apple/ffmpeg-kit-ios-https.podspec @@ -17,7 +17,7 @@ Pod::Spec.new do |s| s.source = { :http => "https://github.com/tanersener/ffmpeg-kit/releases/download/vVERSION/ffmpeg-kit-https-VERSION-ios-framework.zip" } - s.ios.deployment_target = '9.3' + s.ios.deployment_target = '10' s.ios.frameworks = 'AudioToolbox','AVFoundation','CoreMedia','VideoToolbox' s.ios.vendored_frameworks = 'ffmpegkit.framework', 'libavcodec.framework', 'libavdevice.framework', 'libavfilter.framework', 'libavformat.framework', 'libavutil.framework', 'libswresample.framework', 'libswscale.framework' diff --git a/tools/release/apple/ffmpeg-kit-ios-min-gpl.podspec b/tools/release/apple/ffmpeg-kit-ios-min-gpl.podspec index 1d05c0d..0a25acb 100644 --- a/tools/release/apple/ffmpeg-kit-ios-min-gpl.podspec +++ b/tools/release/apple/ffmpeg-kit-ios-min-gpl.podspec @@ -17,7 +17,7 @@ Pod::Spec.new do |s| s.source = { :http => "https://github.com/tanersener/ffmpeg-kit/releases/download/vVERSION/ffmpeg-kit-min-gpl-VERSION-ios-framework.zip" } - s.ios.deployment_target = '9.3' + s.ios.deployment_target = '10' s.ios.frameworks = 'AudioToolbox','AVFoundation','CoreMedia','VideoToolbox' s.ios.vendored_frameworks = 'ffmpegkit.framework', 'libavcodec.framework', 'libavdevice.framework', 'libavfilter.framework', 'libavformat.framework', 'libavutil.framework', 'libswresample.framework', 'libswscale.framework' diff --git a/tools/release/apple/ffmpeg-kit-ios-min.podspec b/tools/release/apple/ffmpeg-kit-ios-min.podspec index e782125..a11e9cd 100644 --- a/tools/release/apple/ffmpeg-kit-ios-min.podspec +++ b/tools/release/apple/ffmpeg-kit-ios-min.podspec @@ -17,7 +17,7 @@ Pod::Spec.new do |s| s.source = { :http => "https://github.com/tanersener/ffmpeg-kit/releases/download/vVERSION/ffmpeg-kit-min-VERSION-ios-framework.zip" } - s.ios.deployment_target = '9.3' + s.ios.deployment_target = '10' s.ios.frameworks = 'AudioToolbox','AVFoundation','CoreMedia','VideoToolbox' s.ios.vendored_frameworks = 'ffmpegkit.framework', 'libavcodec.framework', 'libavdevice.framework', 'libavfilter.framework', 'libavformat.framework', 'libavutil.framework', 'libswresample.framework', 'libswscale.framework' diff --git a/tools/release/apple/ffmpeg-kit-ios-video.podspec b/tools/release/apple/ffmpeg-kit-ios-video.podspec index 5350564..722014f 100644 --- a/tools/release/apple/ffmpeg-kit-ios-video.podspec +++ b/tools/release/apple/ffmpeg-kit-ios-video.podspec @@ -17,7 +17,7 @@ Pod::Spec.new do |s| s.source = { :http => "https://github.com/tanersener/ffmpeg-kit/releases/download/vVERSION/ffmpeg-kit-video-VERSION-ios-framework.zip" } - s.ios.deployment_target = '9.3' + s.ios.deployment_target = '10' s.ios.frameworks = 'AudioToolbox','AVFoundation','CoreMedia','VideoToolbox' s.ios.vendored_frameworks = 'ffmpegkit.framework', 'libavcodec.framework', 'libavdevice.framework', 'libavfilter.framework', 'libavformat.framework', 'libavutil.framework', 'libswresample.framework', 'libswscale.framework' diff --git a/tools/release/apple/ffmpeg-kit-macos-audio.podspec b/tools/release/apple/ffmpeg-kit-macos-audio.podspec index 035b5c8..4e15dbb 100644 --- a/tools/release/apple/ffmpeg-kit-macos-audio.podspec +++ b/tools/release/apple/ffmpeg-kit-macos-audio.podspec @@ -17,7 +17,7 @@ Pod::Spec.new do |s| s.source = { :http => "https://github.com/tanersener/ffmpeg-kit/releases/download/vVERSION/ffmpeg-kit-audio-VERSION-macos-framework.zip" } - s.osx.deployment_target = '10.11' + s.osx.deployment_target = '10.12' s.osx.frameworks = 'AudioToolbox','AVFoundation','CoreAudio','CoreImage','CoreMedia','OpenCL','OpenGL','VideoToolbox' s.osx.vendored_frameworks = 'ffmpegkit.framework', 'libavcodec.framework', 'libavdevice.framework', 'libavfilter.framework', 'libavformat.framework', 'libavutil.framework', 'libswresample.framework', 'libswscale.framework' diff --git a/tools/release/apple/ffmpeg-kit-macos-full-gpl.podspec b/tools/release/apple/ffmpeg-kit-macos-full-gpl.podspec index f2aa96b..71f1d1e 100644 --- a/tools/release/apple/ffmpeg-kit-macos-full-gpl.podspec +++ b/tools/release/apple/ffmpeg-kit-macos-full-gpl.podspec @@ -17,7 +17,7 @@ Pod::Spec.new do |s| s.source = { :http => "https://github.com/tanersener/ffmpeg-kit/releases/download/vVERSION/ffmpeg-kit-full-gpl-VERSION-macos-framework.zip" } - s.osx.deployment_target = '10.11' + s.osx.deployment_target = '10.12' s.osx.frameworks = 'AudioToolbox','AVFoundation','CoreAudio','CoreImage','CoreMedia','OpenCL','OpenGL', 'Security', 'VideoToolbox' s.osx.vendored_frameworks = 'ffmpegkit.framework', 'libavcodec.framework', 'libavdevice.framework', 'libavfilter.framework', 'libavformat.framework', 'libavutil.framework', 'libswresample.framework', 'libswscale.framework' diff --git a/tools/release/apple/ffmpeg-kit-macos-full.podspec b/tools/release/apple/ffmpeg-kit-macos-full.podspec index 5f6b1e3..10fee8a 100644 --- a/tools/release/apple/ffmpeg-kit-macos-full.podspec +++ b/tools/release/apple/ffmpeg-kit-macos-full.podspec @@ -17,7 +17,7 @@ Pod::Spec.new do |s| s.source = { :http => "https://github.com/tanersener/ffmpeg-kit/releases/download/vVERSION/ffmpeg-kit-full-VERSION-macos-framework.zip" } - s.osx.deployment_target = '10.11' + s.osx.deployment_target = '10.12' s.osx.frameworks = 'AudioToolbox','AVFoundation','CoreAudio','CoreImage','CoreMedia','OpenCL','OpenGL', 'Security', 'VideoToolbox' s.osx.vendored_frameworks = 'ffmpegkit.framework', 'libavcodec.framework', 'libavdevice.framework', 'libavfilter.framework', 'libavformat.framework', 'libavutil.framework', 'libswresample.framework', 'libswscale.framework' diff --git a/tools/release/apple/ffmpeg-kit-macos-https-gpl.podspec b/tools/release/apple/ffmpeg-kit-macos-https-gpl.podspec index c9ca4c3..c847856 100644 --- a/tools/release/apple/ffmpeg-kit-macos-https-gpl.podspec +++ b/tools/release/apple/ffmpeg-kit-macos-https-gpl.podspec @@ -17,7 +17,7 @@ Pod::Spec.new do |s| s.source = { :http => "https://github.com/tanersener/ffmpeg-kit/releases/download/vVERSION/ffmpeg-kit-https-gpl-VERSION-macos-framework.zip" } - s.osx.deployment_target = '10.11' + s.osx.deployment_target = '10.12' s.osx.frameworks = 'AudioToolbox','AVFoundation','CoreAudio','CoreImage','CoreMedia','OpenCL','OpenGL', 'Security', 'VideoToolbox' s.osx.vendored_frameworks = 'ffmpegkit.framework', 'libavcodec.framework', 'libavdevice.framework', 'libavfilter.framework', 'libavformat.framework', 'libavutil.framework', 'libswresample.framework', 'libswscale.framework' diff --git a/tools/release/apple/ffmpeg-kit-macos-https.podspec b/tools/release/apple/ffmpeg-kit-macos-https.podspec index 860fc84..f67a845 100644 --- a/tools/release/apple/ffmpeg-kit-macos-https.podspec +++ b/tools/release/apple/ffmpeg-kit-macos-https.podspec @@ -17,7 +17,7 @@ Pod::Spec.new do |s| s.source = { :http => "https://github.com/tanersener/ffmpeg-kit/releases/download/vVERSION/ffmpeg-kit-https-VERSION-macos-framework.zip" } - s.osx.deployment_target = '10.11' + s.osx.deployment_target = '10.12' s.osx.frameworks = 'AudioToolbox','AVFoundation','CoreAudio','CoreImage','CoreMedia','OpenCL','OpenGL', 'Security', 'VideoToolbox' s.osx.vendored_frameworks = 'ffmpegkit.framework', 'libavcodec.framework', 'libavdevice.framework', 'libavfilter.framework', 'libavformat.framework', 'libavutil.framework', 'libswresample.framework', 'libswscale.framework' diff --git a/tools/release/apple/ffmpeg-kit-macos-min-gpl.podspec b/tools/release/apple/ffmpeg-kit-macos-min-gpl.podspec index b393113..88d9725 100644 --- a/tools/release/apple/ffmpeg-kit-macos-min-gpl.podspec +++ b/tools/release/apple/ffmpeg-kit-macos-min-gpl.podspec @@ -17,7 +17,7 @@ Pod::Spec.new do |s| s.source = { :http => "https://github.com/tanersener/ffmpeg-kit/releases/download/vVERSION/ffmpeg-kit-min-gpl-VERSION-macos-framework.zip" } - s.osx.deployment_target = '10.11' + s.osx.deployment_target = '10.12' s.osx.frameworks = 'AudioToolbox','AVFoundation','CoreAudio','CoreImage','CoreMedia','OpenCL','OpenGL','VideoToolbox' s.osx.vendored_frameworks = 'ffmpegkit.framework', 'libavcodec.framework', 'libavdevice.framework', 'libavfilter.framework', 'libavformat.framework', 'libavutil.framework', 'libswresample.framework', 'libswscale.framework' diff --git a/tools/release/apple/ffmpeg-kit-macos-min.podspec b/tools/release/apple/ffmpeg-kit-macos-min.podspec index 25654f5..4297dd7 100644 --- a/tools/release/apple/ffmpeg-kit-macos-min.podspec +++ b/tools/release/apple/ffmpeg-kit-macos-min.podspec @@ -17,7 +17,7 @@ Pod::Spec.new do |s| s.source = { :http => "https://github.com/tanersener/ffmpeg-kit/releases/download/vVERSION/ffmpeg-kit-min-VERSION-macos-framework.zip" } - s.osx.deployment_target = '10.11' + s.osx.deployment_target = '10.12' s.osx.frameworks = 'AudioToolbox','AVFoundation','CoreAudio','CoreImage','CoreMedia','OpenCL','OpenGL','VideoToolbox' s.osx.vendored_frameworks = 'ffmpegkit.framework', 'libavcodec.framework', 'libavdevice.framework', 'libavfilter.framework', 'libavformat.framework', 'libavutil.framework', 'libswresample.framework', 'libswscale.framework' diff --git a/tools/release/apple/ffmpeg-kit-macos-video.podspec b/tools/release/apple/ffmpeg-kit-macos-video.podspec index cdaaba3..817b612 100644 --- a/tools/release/apple/ffmpeg-kit-macos-video.podspec +++ b/tools/release/apple/ffmpeg-kit-macos-video.podspec @@ -17,7 +17,7 @@ Pod::Spec.new do |s| s.source = { :http => "https://github.com/tanersener/ffmpeg-kit/releases/download/vVERSION/ffmpeg-kit-video-VERSION-macos-framework.zip" } - s.osx.deployment_target = '10.11' + s.osx.deployment_target = '10.12' s.osx.frameworks = 'AudioToolbox','AVFoundation','CoreAudio','CoreImage','CoreMedia','OpenCL','OpenGL','VideoToolbox' s.osx.vendored_frameworks = 'ffmpegkit.framework', 'libavcodec.framework', 'libavdevice.framework', 'libavfilter.framework', 'libavformat.framework', 'libavutil.framework', 'libswresample.framework', 'libswscale.framework' diff --git a/tools/release/apple/ffmpeg-kit-tvos-audio.podspec b/tools/release/apple/ffmpeg-kit-tvos-audio.podspec index ba0f5a2..2c02d50 100644 --- a/tools/release/apple/ffmpeg-kit-tvos-audio.podspec +++ b/tools/release/apple/ffmpeg-kit-tvos-audio.podspec @@ -17,7 +17,7 @@ Pod::Spec.new do |s| s.source = { :http => "https://github.com/tanersener/ffmpeg-kit/releases/download/vVERSION/ffmpeg-kit-audio-VERSION-tvos-framework.zip" } - s.tvos.deployment_target = '9.2' + s.tvos.deployment_target = '10.0' s.tvos.frameworks = 'AudioToolbox','VideoToolbox','CoreMedia' s.tvos.vendored_frameworks = 'ffmpegkit.framework', 'libavcodec.framework', 'libavdevice.framework', 'libavfilter.framework', 'libavformat.framework', 'libavutil.framework', 'libswresample.framework', 'libswscale.framework' diff --git a/tools/release/apple/ffmpeg-kit-tvos-full-gpl.podspec b/tools/release/apple/ffmpeg-kit-tvos-full-gpl.podspec index e8990ef..3213801 100644 --- a/tools/release/apple/ffmpeg-kit-tvos-full-gpl.podspec +++ b/tools/release/apple/ffmpeg-kit-tvos-full-gpl.podspec @@ -17,7 +17,7 @@ Pod::Spec.new do |s| s.source = { :http => "https://github.com/tanersener/ffmpeg-kit/releases/download/vVERSION/ffmpeg-kit-full-gpl-VERSION-tvos-framework.zip" } - s.tvos.deployment_target = '9.2' + s.tvos.deployment_target = '10.0' s.tvos.frameworks = 'AudioToolbox','VideoToolbox','CoreMedia' s.tvos.vendored_frameworks = 'ffmpegkit.framework', 'libavcodec.framework', 'libavdevice.framework', 'libavfilter.framework', 'libavformat.framework', 'libavutil.framework', 'libswresample.framework', 'libswscale.framework' diff --git a/tools/release/apple/ffmpeg-kit-tvos-full.podspec b/tools/release/apple/ffmpeg-kit-tvos-full.podspec index 46e0945..7150f2c 100644 --- a/tools/release/apple/ffmpeg-kit-tvos-full.podspec +++ b/tools/release/apple/ffmpeg-kit-tvos-full.podspec @@ -17,7 +17,7 @@ Pod::Spec.new do |s| s.source = { :http => "https://github.com/tanersener/ffmpeg-kit/releases/download/vVERSION/ffmpeg-kit-full-VERSION-tvos-framework.zip" } - s.tvos.deployment_target = '9.2' + s.tvos.deployment_target = '10.0' s.tvos.frameworks = 'AudioToolbox','VideoToolbox','CoreMedia' s.tvos.vendored_frameworks = 'ffmpegkit.framework', 'libavcodec.framework', 'libavdevice.framework', 'libavfilter.framework', 'libavformat.framework', 'libavutil.framework', 'libswresample.framework', 'libswscale.framework' diff --git a/tools/release/apple/ffmpeg-kit-tvos-https-gpl.podspec b/tools/release/apple/ffmpeg-kit-tvos-https-gpl.podspec index 5ee933d..ac0077f 100644 --- a/tools/release/apple/ffmpeg-kit-tvos-https-gpl.podspec +++ b/tools/release/apple/ffmpeg-kit-tvos-https-gpl.podspec @@ -17,7 +17,7 @@ Pod::Spec.new do |s| s.source = { :http => "https://github.com/tanersener/ffmpeg-kit/releases/download/vVERSION/ffmpeg-kit-https-gpl-VERSION-tvos-framework.zip" } - s.tvos.deployment_target = '9.2' + s.tvos.deployment_target = '10.0' s.tvos.frameworks = 'AudioToolbox','VideoToolbox','CoreMedia' s.tvos.vendored_frameworks = 'ffmpegkit.framework', 'libavcodec.framework', 'libavdevice.framework', 'libavfilter.framework', 'libavformat.framework', 'libavutil.framework', 'libswresample.framework', 'libswscale.framework' diff --git a/tools/release/apple/ffmpeg-kit-tvos-https.podspec b/tools/release/apple/ffmpeg-kit-tvos-https.podspec index d8a2924..3fa42bc 100644 --- a/tools/release/apple/ffmpeg-kit-tvos-https.podspec +++ b/tools/release/apple/ffmpeg-kit-tvos-https.podspec @@ -17,7 +17,7 @@ Pod::Spec.new do |s| s.source = { :http => "https://github.com/tanersener/ffmpeg-kit/releases/download/vVERSION/ffmpeg-kit-https-VERSION-tvos-framework.zip" } - s.tvos.deployment_target = '9.2' + s.tvos.deployment_target = '10.0' s.tvos.frameworks = 'AudioToolbox','VideoToolbox','CoreMedia' s.tvos.vendored_frameworks = 'ffmpegkit.framework', 'libavcodec.framework', 'libavdevice.framework', 'libavfilter.framework', 'libavformat.framework', 'libavutil.framework', 'libswresample.framework', 'libswscale.framework' diff --git a/tools/release/apple/ffmpeg-kit-tvos-min-gpl.podspec b/tools/release/apple/ffmpeg-kit-tvos-min-gpl.podspec index 3056b02..c11ae15 100644 --- a/tools/release/apple/ffmpeg-kit-tvos-min-gpl.podspec +++ b/tools/release/apple/ffmpeg-kit-tvos-min-gpl.podspec @@ -17,7 +17,7 @@ Pod::Spec.new do |s| s.source = { :http => "https://github.com/tanersener/ffmpeg-kit/releases/download/vVERSION/ffmpeg-kit-min-gpl-VERSION-tvos-framework.zip" } - s.tvos.deployment_target = '9.2' + s.tvos.deployment_target = '10.0' s.tvos.frameworks = 'AudioToolbox','VideoToolbox','CoreMedia' s.tvos.vendored_frameworks = 'ffmpegkit.framework', 'libavcodec.framework', 'libavdevice.framework', 'libavfilter.framework', 'libavformat.framework', 'libavutil.framework', 'libswresample.framework', 'libswscale.framework' diff --git a/tools/release/apple/ffmpeg-kit-tvos-min.podspec b/tools/release/apple/ffmpeg-kit-tvos-min.podspec index 25d7a5d..6f7586b 100644 --- a/tools/release/apple/ffmpeg-kit-tvos-min.podspec +++ b/tools/release/apple/ffmpeg-kit-tvos-min.podspec @@ -17,7 +17,7 @@ Pod::Spec.new do |s| s.source = { :http => "https://github.com/tanersener/ffmpeg-kit/releases/download/vVERSION/ffmpeg-kit-min-VERSION-tvos-framework.zip" } - s.tvos.deployment_target = '9.2' + s.tvos.deployment_target = '10.0' s.tvos.frameworks = 'AudioToolbox','VideoToolbox','CoreMedia' s.tvos.vendored_frameworks = 'ffmpegkit.framework', 'libavcodec.framework', 'libavdevice.framework', 'libavfilter.framework', 'libavformat.framework', 'libavutil.framework', 'libswresample.framework', 'libswscale.framework' diff --git a/tools/release/apple/ffmpeg-kit-tvos-video.podspec b/tools/release/apple/ffmpeg-kit-tvos-video.podspec index 1e34365..56448ec 100644 --- a/tools/release/apple/ffmpeg-kit-tvos-video.podspec +++ b/tools/release/apple/ffmpeg-kit-tvos-video.podspec @@ -17,7 +17,7 @@ Pod::Spec.new do |s| s.source = { :http => "https://github.com/tanersener/ffmpeg-kit/releases/download/vVERSION/ffmpeg-kit-video-VERSION-tvos-framework.zip" } - s.tvos.deployment_target = '9.2' + s.tvos.deployment_target = '10.0' s.tvos.frameworks = 'AudioToolbox','VideoToolbox','CoreMedia' s.tvos.vendored_frameworks = 'ffmpegkit.framework', 'libavcodec.framework', 'libavdevice.framework', 'libavfilter.framework', 'libavformat.framework', 'libavutil.framework', 'libswresample.framework', 'libswscale.framework' diff --git a/tools/release/ios.sh b/tools/release/ios.sh index 42715c3..11f68cf 100755 --- a/tools/release/ios.sh +++ b/tools/release/ios.sh @@ -27,7 +27,7 @@ create_package() { sed -i '' "s/\.framework/\.xcframework/g" "${CURRENT_PACKAGE}"/"${PACKAGE_NAME}".podspec || exit 1 sed -i '' "s/-framework/-xcframework/g" "${CURRENT_PACKAGE}"/"${PACKAGE_NAME}".podspec || exit 1 sed -i '' "s/ios\.xcframeworks/ios\.frameworks/g" "${CURRENT_PACKAGE}"/"${PACKAGE_NAME}".podspec || exit 1 - sed -i '' "s/9\.3/12\.1/g" "${CURRENT_PACKAGE}"/"${PACKAGE_NAME}".podspec || exit 1 + sed -i '' "s/10/12\.1/g" "${CURRENT_PACKAGE}"/"${PACKAGE_NAME}".podspec || exit 1 sed -i '' "s/ffmpegkit\.xcframework\/LICENSE/ffmpegkit\.xcframework\/ios-arm64\/ffmpegkit\.framework\/LICENSE/g" "${CURRENT_PACKAGE}"/"${PACKAGE_NAME}".podspec || exit 1 } diff --git a/tools/release/macos.sh b/tools/release/macos.sh index f8c93bb..189b048 100755 --- a/tools/release/macos.sh +++ b/tools/release/macos.sh @@ -27,7 +27,7 @@ create_package() { sed -i '' "s/\.framework/\.xcframework/g" "${CURRENT_PACKAGE}"/"${PACKAGE_NAME}".podspec || exit 1 sed -i '' "s/-framework/-xcframework/g" "${CURRENT_PACKAGE}"/"${PACKAGE_NAME}".podspec || exit 1 sed -i '' "s/osx\.xcframeworks/osx\.frameworks/g" "${CURRENT_PACKAGE}"/"${PACKAGE_NAME}".podspec || exit 1 - sed -i '' "s/10\.11/10\.15/g" "${CURRENT_PACKAGE}"/"${PACKAGE_NAME}".podspec || exit 1 + sed -i '' "s/10\.12/10\.15/g" "${CURRENT_PACKAGE}"/"${PACKAGE_NAME}".podspec || exit 1 sed -i '' "s/ffmpegkit\.xcframework\/LICENSE/ffmpegkit\.xcframework\/macos-arm64_x86_64\/ffmpegkit\.framework\/LICENSE/g" "${CURRENT_PACKAGE}"/"${PACKAGE_NAME}".podspec || exit 1 } diff --git a/tools/release/tvos.sh b/tools/release/tvos.sh index 44b27fb..6dd0c47 100755 --- a/tools/release/tvos.sh +++ b/tools/release/tvos.sh @@ -27,7 +27,7 @@ create_package() { sed -i '' "s/\.framework/\.xcframework/g" "${CURRENT_PACKAGE}"/"${PACKAGE_NAME}".podspec || exit 1 sed -i '' "s/-framework/-xcframework/g" "${CURRENT_PACKAGE}"/"${PACKAGE_NAME}".podspec || exit 1 sed -i '' "s/tvos\.xcframeworks/tvos\.frameworks/g" "${CURRENT_PACKAGE}"/"${PACKAGE_NAME}".podspec || exit 1 - sed -i '' "s/9\.2/10\.2/g" "${CURRENT_PACKAGE}"/"${PACKAGE_NAME}".podspec || exit 1 + sed -i '' "s/10\.0/11\.0/g" "${CURRENT_PACKAGE}"/"${PACKAGE_NAME}".podspec || exit 1 sed -i '' "s/ffmpegkit\.xcframework\/LICENSE/ffmpegkit\.xcframework\/tvos-arm64\/ffmpegkit\.framework\/LICENSE/g" "${CURRENT_PACKAGE}"/"${PACKAGE_NAME}".podspec || exit 1 } diff --git a/tvos.sh b/tvos.sh index c0d4081..9ce73c7 100755 --- a/tvos.sh +++ b/tvos.sh @@ -139,7 +139,7 @@ done # PROCESS FULL OPTION AS LAST OPTION if [[ -n ${BUILD_FULL} ]]; then - for library in {0..58}; do + for library in {0..61}; do if [ ${GPL_ENABLED} == "yes" ]; then enable_library "$(get_library_name "$library")" 1 else @@ -220,7 +220,7 @@ for run_arch in {0..12}; do TARGET_ARCH_LIST+=("${FULL_ARCH}") # CLEAR FLAGS - for library in {0..58}; do + for library in {0..61}; do library_name=$(get_library_name "${library}") unset "$(echo "OK_${library_name}" | sed "s/\-/\_/g")" unset "$(echo "DEPENDENCY_REBUILT_${library_name}" | sed "s/\-/\_/g")" From 3ed992a8225fd0b865d62114ecb7de9a8188c4c9 Mon Sep 17 00:00:00 2001 From: Taner Sener Date: Tue, 28 Dec 2021 00:33:12 +0000 Subject: [PATCH 39/45] implement a build flag to disable an external library --- android.sh | 11 +++++++++++ apple.sh | 11 +++++++++++ ios.sh | 11 +++++++++++ macos.sh | 11 +++++++++++ scripts/function.sh | 3 ++- tvos.sh | 11 +++++++++++ 6 files changed, 57 insertions(+), 1 deletion(-) diff --git a/android.sh b/android.sh index 89d488d..05f5b23 100755 --- a/android.sh +++ b/android.sh @@ -15,6 +15,7 @@ export BASEDIR="$(pwd)" export FFMPEG_KIT_BUILD_TYPE="android" source "${BASEDIR}"/scripts/variable.sh source "${BASEDIR}"/scripts/function-${FFMPEG_KIT_BUILD_TYPE}.sh +disabled_libraries=() # SET DEFAULTS SETTINGS enable_default_android_architectures @@ -111,6 +112,11 @@ while [ ! $# -eq 0 ]; do enable_library "${ENABLED_LIBRARY}" ;; + --disable-lib-*) + DISABLED_LIB=$(echo $1 | sed -e 's/^--[A-Za-z]*-[A-Za-z]*-//g') + + disabled_libraries+=("${DISABLED_LIB}") + ;; --disable-*) DISABLED_ARCH=$(echo $1 | sed -e 's/^--[A-Za-z]*-//g') @@ -149,6 +155,11 @@ if [[ -n ${BUILD_FULL} ]]; then done fi +# DISABLE SPECIFIED LIBRARIES +for disabled_library in ${disabled_libraries[@]}; do + set_library "${disabled_library}" 0 +done + # IF HELP DISPLAYED EXIT if [[ -n ${DISPLAY_HELP} ]]; then display_help diff --git a/apple.sh b/apple.sh index a1a1325..01ee414 100755 --- a/apple.sh +++ b/apple.sh @@ -170,6 +170,7 @@ export BASEDIR="$(pwd)" source "${BASEDIR}"/scripts/variable.sh export FFMPEG_KIT_BUILD_TYPE="apple" source "${BASEDIR}"/scripts/function-${FFMPEG_KIT_BUILD_TYPE}.sh +disabled_libraries=() # SET DEFAULTS SETTINGS enable_default_architecture_variants @@ -233,6 +234,11 @@ while [ ! $# -eq 0 ]; do enable_library "${ENABLED_LIBRARY}" ;; + --disable-lib-*) + DISABLED_LIB=$(echo $1 | sed -e 's/^--[A-Za-z]*-[A-Za-z]*-//g') + + disabled_libraries+=("${DISABLED_LIB}") + ;; --disable-*) DISABLED_ARCH_VARIANT=$(echo $1 | sed -e 's/^--[A-Za-z]*-//g') @@ -258,6 +264,11 @@ if [[ -n ${BUILD_FULL} ]]; then done fi +# DISABLE SPECIFIED LIBRARIES +for disabled_library in ${disabled_libraries[@]}; do + set_library "${disabled_library}" 0 +done + # IF HELP DISPLAYED EXIT if [[ -n ${DISPLAY_HELP} ]]; then display_help diff --git a/ios.sh b/ios.sh index 7e3677f..5a2be2b 100755 --- a/ios.sh +++ b/ios.sh @@ -16,6 +16,7 @@ export BASEDIR="$(pwd)" export FFMPEG_KIT_BUILD_TYPE="ios" source "${BASEDIR}"/scripts/variable.sh source "${BASEDIR}"/scripts/function-${FFMPEG_KIT_BUILD_TYPE}.sh +disabled_libraries=() # SET DEFAULTS SETTINGS enable_default_ios_architectures @@ -120,6 +121,11 @@ while [ ! $# -eq 0 ]; do enable_library "${ENABLED_LIBRARY}" ;; + --disable-lib-*) + DISABLED_LIB=$(echo $1 | sed -e 's/^--[A-Za-z]*-[A-Za-z]*-//g') + + disabled_libraries+=("${DISABLED_LIB}") + ;; --disable-*) DISABLED_ARCH=$(echo $1 | sed -e 's/^--[A-Za-z]*-//g') @@ -155,6 +161,11 @@ if [[ -n ${BUILD_FULL} ]]; then done fi +# DISABLE SPECIFIED LIBRARIES +for disabled_library in ${disabled_libraries[@]}; do + set_library "${disabled_library}" 0 +done + # IF HELP DISPLAYED EXIT if [[ -n ${DISPLAY_HELP} ]]; then display_help diff --git a/macos.sh b/macos.sh index a6ae0d7..9a5e541 100755 --- a/macos.sh +++ b/macos.sh @@ -16,6 +16,7 @@ export BASEDIR="$(pwd)" export FFMPEG_KIT_BUILD_TYPE="macos" source "${BASEDIR}"/scripts/variable.sh source "${BASEDIR}"/scripts/function-${FFMPEG_KIT_BUILD_TYPE}.sh +disabled_libraries=() # SET DEFAULTS SETTINGS enable_default_macos_architectures @@ -120,6 +121,11 @@ while [ ! $# -eq 0 ]; do enable_library "${ENABLED_LIBRARY}" ;; + --disable-lib-*) + DISABLED_LIB=$(echo $1 | sed -e 's/^--[A-Za-z]*-[A-Za-z]*-//g') + + disabled_libraries+=("${DISABLED_LIB}") + ;; --disable-*) DISABLED_ARCH=$(echo $1 | sed -e 's/^--[A-Za-z]*-//g') @@ -150,6 +156,11 @@ if [[ -n ${BUILD_FULL} ]]; then done fi +# DISABLE SPECIFIED LIBRARIES +for disabled_library in ${disabled_libraries[@]}; do + set_library "${disabled_library}" 0 +done + # IF HELP DISPLAYED EXIT if [[ -n ${DISPLAY_HELP} ]]; then display_help diff --git a/scripts/function.sh b/scripts/function.sh index a430fb0..7e4ac0f 100755 --- a/scripts/function.sh +++ b/scripts/function.sh @@ -1467,7 +1467,8 @@ print_redownload_requested_libraries() { # 1 - library index get_external_library_license_path() { case $1 in - 1 | 35) echo "${BASEDIR}/src/$(get_library_name "$1")/LICENSE.TXT" ;; + 1) echo "${BASEDIR}/src/$(get_library_name "$1")/LICENSE.TXT" ;; + 35) echo "${BASEDIR}/src/$(get_library_name "$1")/LICENSE.txt" ;; 3 | 39) echo "${BASEDIR}/src/$(get_library_name "$1")/COPYING.LESSERv3" ;; 5 | 41) echo "${BASEDIR}/src/$(get_library_name "$1")/$(get_library_name "$1")/COPYING" ;; 19) echo "${BASEDIR}/src/$(get_library_name "$1")/$(get_library_name "$1")/LICENSE" ;; diff --git a/tvos.sh b/tvos.sh index 9ce73c7..603b005 100755 --- a/tvos.sh +++ b/tvos.sh @@ -16,6 +16,7 @@ export BASEDIR="$(pwd)" export FFMPEG_KIT_BUILD_TYPE="tvos" source "${BASEDIR}"/scripts/variable.sh source "${BASEDIR}"/scripts/function-${FFMPEG_KIT_BUILD_TYPE}.sh +disabled_libraries=() # SET DEFAULTS SETTINGS enable_default_tvos_architectures @@ -120,6 +121,11 @@ while [ ! $# -eq 0 ]; do enable_library "${ENABLED_LIBRARY}" ;; + --disable-lib-*) + DISABLED_LIB=$(echo $1 | sed -e 's/^--[A-Za-z]*-[A-Za-z]*-//g') + + disabled_libraries+=("${DISABLED_LIB}") + ;; --disable-*) DISABLED_ARCH=$(echo $1 | sed -e 's/^--[A-Za-z]*-//g') @@ -150,6 +156,11 @@ if [[ -n ${BUILD_FULL} ]]; then done fi +# DISABLE SPECIFIED LIBRARIES +for disabled_library in ${disabled_libraries[@]}; do + set_library "${disabled_library}" 0 +done + # IF HELP DISPLAYED EXIT if [[ -n ${DISPLAY_HELP} ]]; then display_help From 3c77c50bf69a96dd761077db6cf90da03540f089 Mon Sep 17 00:00:00 2001 From: Taner Sener Date: Tue, 28 Dec 2021 02:13:06 +0000 Subject: [PATCH 40/45] simplify apple.sh --- apple.sh | 103 +++---------------------------------------------------- 1 file changed, 4 insertions(+), 99 deletions(-) diff --git a/apple.sh b/apple.sh index 01ee414..8eff418 100755 --- a/apple.sh +++ b/apple.sh @@ -12,14 +12,11 @@ enable_default_architecture_variants() { display_help() { COMMAND=$(echo "$0" | sed -e 's/\.\///g') - echo -e "\n'$COMMAND' combines FFmpegKit frameworks created for apple architecture variants in an xcframework. \ + echo -e "\n'$COMMAND' combines FFmpegKit frameworks created for Apple architecture variants in an xcframework. \ It uses frameworks created under the prebuilt folder for iOS, tvOS and macOS architecture variants (iphoneos, \ iphonesimulator, mac-catalyst, appletvos, appletvsimulator, macosx) as input and builds an umbrella xcframework under \ -the prebuilt folder.\n\n\ -Additional options can be specified to disable architectures or to build xcframeworks for external libraries as well.\ -\n\nPlease note that this script is only responsible of packaging existing frameworks, created by 'ios.sh', 'tvos.sh' \ -and 'macos.sh'. Running it will not compile any of these libraries again. Enabling an external library means building \ -an xcframework for that library. It does not guarantee that ffmpeg has support for it. Top level build scripts \ +the prebuilt folder.\n\nPlease note that this script is only responsible of packaging existing frameworks, created by \ +'ios.sh', 'tvos.sh' and 'macos.sh'. Running it will not compile any of these libraries again. Top level build scripts \ ('ios.sh', 'tvos.sh', 'macos.sh') must be used to build ffmpeg with support for a specific external library first. \ After that this script should be used to create an umbrella xcframework.\n" echo -e "Usage: ./$COMMAND [OPTION]...\n" @@ -29,10 +26,7 @@ After that this script should be used to create an umbrella xcframework.\n" echo -e " -h, --help\t\t\tdisplay this help and exit" echo -e " -v, --version\t\t\tdisplay version information and exit" echo -e " -f, --force\t\t\tignore warnings" - echo -e " -l, --lts\t\t\tinclude lts packages to support iOS 9.3+, tvOS 9.2+, macOS 10.11+ devices\n" - - echo -e "Licensing options:" - echo -e " --enable-gpl\t\t\tallow building umbrella xcframeworks for GPL libraries[no]\n" + echo -e " -l, --lts\t\t\tinclude lts packages to support iOS 10+, tvOS 10+, macOS 10.12+ devices\n" echo -e "Architectures:" echo -e " --disable-iphoneos\t\tdo not include iphoneos architecture variant [yes]" @@ -41,47 +35,6 @@ After that this script should be used to create an umbrella xcframework.\n" echo -e " --disable-appletvos\t\tdo not include appletvos architecture variant [yes]" echo -e " --disable-appletvsimulator\tdo not include appletvsimulator architecture variant [yes]" echo -e " --disable-macosx\t\tdo not include macosx architecture variant [yes]\n" - - echo -e "Libraries:" - echo -e " --full\t\t\tbuilds umbrella xcframeworks all non-GPL external libraries" - echo -e " --enable-chromaprint\t\tbuild umbrella xcframework for chromaprint [no]" - echo -e " --enable-dav1d\t\tbuild umbrella xcframework for dav1d [no]" - echo -e " --enable-fontconfig\t\tbuild umbrella xcframework for fontconfig [no]" - echo -e " --enable-freetype\t\tbuild umbrella xcframework for freetype [no]" - echo -e " --enable-fribidi\t\tbuild umbrella xcframework for fribidi [no]" - echo -e " --enable-gmp\t\t\tbuild umbrella xcframework for gmp [no]" - echo -e " --enable-gnutls\t\tbuild umbrella xcframework for gnutls [no]" - echo -e " --enable-kvazaar\t\tbuild umbrella xcframework for kvazaar [no]" - echo -e " --enable-lame\t\t\tbuild umbrella xcframework for lame [no]" - echo -e " --enable-libaom\t\tbuild umbrella xcframework for libaom [no]" - echo -e " --enable-libass\t\tbuild umbrella xcframework for libass [no]" - echo -e " --enable-libilbc\t\tbuild umbrella xcframework for libilbc [no]" - echo -e " --enable-libtheora\t\tbuild umbrella xcframework for libtheora [no]" - echo -e " --enable-libvorbis\t\tbuild umbrella xcframework for libvorbis [no]" - echo -e " --enable-libvpx\t\tbuild umbrella xcframework for libvpx [no]" - echo -e " --enable-libwebp\t\tbuild umbrella xcframework for libwebp [no]" - echo -e " --enable-libxml2\t\tbuild umbrella xcframework for libxml2 [no]" - echo -e " --enable-opencore-amr\t\tbuild umbrella xcframework for opencore-amr [no]" - echo -e " --enable-openh264\t\tbuild umbrella xcframework for openh264 [no]" - echo -e " --enable-openssl\t\tbuild umbrella xcframework for openssl [no]" - echo -e " --enable-opus\t\t\tbuild umbrella xcframework for opus [no]" - echo -e " --enable-sdl\t\t\tbuild umbrella xcframework for sdl [no]" - echo -e " --enable-shine\t\tbuild umbrella xcframework for shine [no]" - echo -e " --enable-snappy\t\tbuild umbrella xcframework for snappy [no]" - echo -e " --enable-soxr\t\t\tbuild umbrella xcframework for soxr [no]" - echo -e " --enable-speex\t\tbuild umbrella xcframework for speex [no]" - echo -e " --enable-srt\t\t\tbuild umbrella xcframework for srt [no]" - echo -e " --enable-tesseract\t\tbuild umbrella xcframework for tesseract [no]" - echo -e " --enable-twolame\t\tbuild umbrella xcframework for twolame [no]" - echo -e " --enable-vo-amrwbenc\t\tbuild umbrella xcframework for vo-amrwbenc [no]" - echo -e " --enable-zimg\t\t\tbuild umbrella xcframework for zimg [no]\n" - - echo -e "GPL libraries:" - echo -e " --enable-libvidstab\t\tbuild umbrella xcframework for libvidstab [no]" - echo -e " --enable-rubberband\t\tbuild umbrella xcframework for rubber band [no]" - echo -e " --enable-x264\t\t\tbuild umbrella xcframework for x264 [no]" - echo -e " --enable-x265\t\t\tbuild umbrella xcframework for x265 [no]" - echo -e " --enable-xvidcore\t\tbuild umbrella xcframework for xvidcore [no]\n" } initialize_prebuilt_umbrella_xcframework_folders() { @@ -170,7 +123,6 @@ export BASEDIR="$(pwd)" source "${BASEDIR}"/scripts/variable.sh export FFMPEG_KIT_BUILD_TYPE="apple" source "${BASEDIR}"/scripts/function-${FFMPEG_KIT_BUILD_TYPE}.sh -disabled_libraries=() # SET DEFAULTS SETTINGS enable_default_architecture_variants @@ -223,22 +175,6 @@ while [ ! $# -eq 0 ]; do -f | --force) export BUILD_FORCE="1" ;; - --full) - BUILD_FULL="1" - ;; - --enable-gpl) - GPL_ENABLED="yes" - ;; - --enable-*) - ENABLED_LIBRARY=$(echo $1 | sed -e 's/^--[A-Za-z]*-//g') - - enable_library "${ENABLED_LIBRARY}" - ;; - --disable-lib-*) - DISABLED_LIB=$(echo $1 | sed -e 's/^--[A-Za-z]*-[A-Za-z]*-//g') - - disabled_libraries+=("${DISABLED_LIB}") - ;; --disable-*) DISABLED_ARCH_VARIANT=$(echo $1 | sed -e 's/^--[A-Za-z]*-//g') @@ -251,24 +187,6 @@ while [ ! $# -eq 0 ]; do shift done -# PROCESS FULL OPTION AS LAST OPTION -if [[ -n ${BUILD_FULL} ]]; then - for library in {0..61}; do - if [ ${GPL_ENABLED} == "yes" ]; then - set_library "$(get_library_name "$library")" 1 - else - if [[ $(is_gpl_licensed "$library") -eq 1 ]]; then - set_library "$(get_library_name "$library")" 1 - fi - fi - done -fi - -# DISABLE SPECIFIED LIBRARIES -for disabled_library in ${disabled_libraries[@]}; do - set_library "${disabled_library}" 0 -done - # IF HELP DISPLAYED EXIT if [[ -n ${DISPLAY_HELP} ]]; then display_help @@ -285,19 +203,6 @@ print_enabled_xcframeworks echo "" -# VALIDATE GPL FLAGS -for gpl_library in {$LIBRARY_X264,$LIBRARY_XVIDCORE,$LIBRARY_X265,$LIBRARY_LIBVIDSTAB,$LIBRARY_RUBBERBAND}; do - if [[ ${ENABLED_LIBRARIES[$gpl_library]} -eq 1 ]]; then - library_name=$(get_library_name "${gpl_library}") - - if [ ${GPL_ENABLED} != "yes" ]; then - echo -e "\n(*) Invalid configuration detected. GPL library ${library_name} enabled without --enable-gpl flag.\n" - echo -e "\n(*) Invalid configuration detected. GPL library ${library_name} enabled without --enable-gpl flag.\n" 1>>"${BASEDIR}"/build.log 2>&1 - exit 1 - fi - fi -done - # THIS WILL SAVE ARCHITECTURE VARIANTS TO BE INCLUDED TARGET_ARCHITECTURE_VARIANT_INDEX_ARRAY=() From ed8fd4b4b2aeda4da13dbc3b47c710577ad791de Mon Sep 17 00:00:00 2001 From: Taner Sener Date: Tue, 28 Dec 2021 11:32:40 +0000 Subject: [PATCH 41/45] support building custom libraries in native build scripts, fixes #28 --- android.sh | 35 +++++++- ios.sh | 13 ++- macos.sh | 13 ++- scripts/android/ffmpeg.sh | 30 ++++--- scripts/apple/ffmpeg.sh | 44 ++++++---- scripts/function-android.sh | 1 + scripts/function-apple.sh | 42 +++++++++ scripts/function-ios.sh | 1 + scripts/function-macos.sh | 1 + scripts/function-tvos.sh | 1 + scripts/function.sh | 170 +++++++++++++++++++++++++++++++++++- scripts/main-android.sh | 40 ++++++++- scripts/main-ios.sh | 42 +++++++-- scripts/main-macos.sh | 42 +++++++-- scripts/main-tvos.sh | 40 ++++++++- scripts/variable.sh | 3 + src/.gitignore | 52 +---------- tvos.sh | 13 ++- 18 files changed, 474 insertions(+), 109 deletions(-) diff --git a/android.sh b/android.sh index 05f5b23..2deaaa4 100755 --- a/android.sh +++ b/android.sh @@ -107,6 +107,14 @@ while [ ! $# -eq 0 ]; do --enable-gpl) GPL_ENABLED="yes" ;; + --enable-custom-library-*) + CUSTOM_LIBRARY_OPTION_KEY=$(echo $1 | sed -e 's/^--enable-custom-//g;s/=.*$//g') + CUSTOM_LIBRARY_OPTION_VALUE=$(echo $1 | sed -e 's/^--enable-custom-.*=//g') + + echo -e "INFO: Custom library options detected: ${CUSTOM_LIBRARY_OPTION_KEY} ${CUSTOM_LIBRARY_OPTION_VALUE}\n" 1>>"${BASEDIR}"/build.log 2>&1 + + generate_custom_library_environment_variables "${CUSTOM_LIBRARY_OPTION_KEY}" "${CUSTOM_LIBRARY_OPTION_VALUE}" + ;; --enable-*) ENABLED_LIBRARY=$(echo $1 | sed -e 's/^--[A-Za-z]*-//g') @@ -180,6 +188,7 @@ print_enabled_libraries print_reconfigure_requested_libraries print_rebuild_requested_libraries print_redownload_requested_libraries +print_custom_libraries # VALIDATE GPL FLAGS for gpl_library in {$LIBRARY_X264,$LIBRARY_XVIDCORE,$LIBRARY_X265,$LIBRARY_LIBVIDSTAB,$LIBRARY_RUBBERBAND}; do @@ -195,13 +204,13 @@ for gpl_library in {$LIBRARY_X264,$LIBRARY_XVIDCORE,$LIBRARY_X265,$LIBRARY_LIBVI done echo -n -e "\nDownloading sources: " -echo -e "INFO: Downloading source code of ffmpeg and enabled external libraries.\n" 1>>"${BASEDIR}"/build.log 2>&1 +echo -e "INFO: Downloading the source code of ffmpeg and external libraries.\n" 1>>"${BASEDIR}"/build.log 2>&1 # DOWNLOAD GNU CONFIG download_gnu_config # DOWNLOAD LIBRARY SOURCES -downloaded_enabled_library_sources "${ENABLED_LIBRARIES[@]}" +downloaded_library_sources "${ENABLED_LIBRARIES[@]}" # SAVE ORIGINAL API LEVEL = NECESSARY TO BUILD 64bit ARCHITECTURES export ORIGINAL_API=${API} @@ -280,7 +289,7 @@ if [[ -n ${ANDROID_ARCHITECTURES} ]]; then cd "${BASEDIR}"/android 1>>"${BASEDIR}"/build.log 2>&1 || exit 1 - # COPY LICENSES + # COPY LIBRARY LICENSES LICENSE_BASEDIR="${BASEDIR}"/android/ffmpeg-kit-android-lib/src/main/res/raw rm -f "${LICENSE_BASEDIR}"/*.txt 1>>"${BASEDIR}"/build.log 2>&1 || exit 1 for library in {0..49}; do @@ -300,6 +309,26 @@ if [[ -n ${ANDROID_ARCHITECTURES} ]]; then fi done + # COPY CUSTOM LIBRARY LICENSES + for custom_library_index in "${CUSTOM_LIBRARIES[@]}"; do + library_name="CUSTOM_LIBRARY_${custom_library_index}_NAME" + relative_license_path="CUSTOM_LIBRARY_${custom_library_index}_LICENSE_FILE" + + destination_license_path="${LICENSE_BASEDIR}/license_${!library_name}.txt" + + cp "${BASEDIR}/src/${!library_name}/${!relative_license_path}" "${destination_license_path}" 1>>"${BASEDIR}"/build.log 2>&1 + + RC=$? + + if [[ ${RC} -ne 0 ]]; then + echo -e "DEBUG: Failed to copy the license file of custom library ${!library_name}\n" 1>>"${BASEDIR}"/build.log 2>&1 + echo -e "failed\n\nSee build.log for details\n" + exit 1 + fi + + echo -e "DEBUG: Copied the license file of custom library ${!library_name} successfully\n" 1>>"${BASEDIR}"/build.log 2>&1 + done + # COPY LIBRARY LICENSES if [[ ${GPL_ENABLED} == "yes" ]]; then cp "${BASEDIR}"/LICENSE.GPLv3 "${LICENSE_BASEDIR}"/license.txt 1>>"${BASEDIR}"/build.log 2>&1 diff --git a/ios.sh b/ios.sh index 5a2be2b..09c5aa1 100755 --- a/ios.sh +++ b/ios.sh @@ -116,6 +116,14 @@ while [ ! $# -eq 0 ]; do --enable-gpl) GPL_ENABLED="yes" ;; + --enable-custom-library-*) + CUSTOM_LIBRARY_OPTION_KEY=$(echo $1 | sed -e 's/^--enable-custom-//g;s/=.*$//g') + CUSTOM_LIBRARY_OPTION_VALUE=$(echo $1 | sed -e 's/^--enable-custom-.*=//g') + + echo -e "INFO: Custom library options detected: ${CUSTOM_LIBRARY_OPTION_KEY} ${CUSTOM_LIBRARY_OPTION_VALUE}\n" 1>>"${BASEDIR}"/build.log 2>&1 + + generate_custom_library_environment_variables "${CUSTOM_LIBRARY_OPTION_KEY}" "${CUSTOM_LIBRARY_OPTION_VALUE}" + ;; --enable-*) ENABLED_LIBRARY=$(echo $1 | sed -e 's/^--[A-Za-z]*-//g') @@ -211,6 +219,7 @@ print_enabled_libraries print_reconfigure_requested_libraries print_rebuild_requested_libraries print_redownload_requested_libraries +print_custom_libraries # VALIDATE GPL FLAGS for gpl_library in {$LIBRARY_X264,$LIBRARY_XVIDCORE,$LIBRARY_X265,$LIBRARY_LIBVIDSTAB,$LIBRARY_RUBBERBAND}; do @@ -226,13 +235,13 @@ for gpl_library in {$LIBRARY_X264,$LIBRARY_XVIDCORE,$LIBRARY_X265,$LIBRARY_LIBVI done echo -n -e "\nDownloading sources: " -echo -e "INFO: Downloading source code of ffmpeg and enabled external libraries.\n" 1>>"${BASEDIR}"/build.log 2>&1 +echo -e "INFO: Downloading the source code of ffmpeg and external libraries.\n" 1>>"${BASEDIR}"/build.log 2>&1 # DOWNLOAD GNU CONFIG download_gnu_config # DOWNLOAD LIBRARY SOURCES -downloaded_enabled_library_sources "${ENABLED_LIBRARIES[@]}" +downloaded_library_sources "${ENABLED_LIBRARIES[@]}" # THIS WILL SAVE ARCHITECTURES TO BUILD TARGET_ARCH_LIST=() diff --git a/macos.sh b/macos.sh index 9a5e541..dec62c8 100755 --- a/macos.sh +++ b/macos.sh @@ -116,6 +116,14 @@ while [ ! $# -eq 0 ]; do --enable-gpl) GPL_ENABLED="yes" ;; + --enable-custom-library-*) + CUSTOM_LIBRARY_OPTION_KEY=$(echo $1 | sed -e 's/^--enable-custom-//g;s/=.*$//g') + CUSTOM_LIBRARY_OPTION_VALUE=$(echo $1 | sed -e 's/^--enable-custom-.*=//g') + + echo -e "INFO: Custom library options detected: ${CUSTOM_LIBRARY_OPTION_KEY} ${CUSTOM_LIBRARY_OPTION_VALUE}\n" 1>>"${BASEDIR}"/build.log 2>&1 + + generate_custom_library_environment_variables "${CUSTOM_LIBRARY_OPTION_KEY}" "${CUSTOM_LIBRARY_OPTION_VALUE}" + ;; --enable-*) ENABLED_LIBRARY=$(echo $1 | sed -e 's/^--[A-Za-z]*-//g') @@ -180,6 +188,7 @@ print_enabled_libraries print_reconfigure_requested_libraries print_rebuild_requested_libraries print_redownload_requested_libraries +print_custom_libraries # VALIDATE GPL FLAGS for gpl_library in {$LIBRARY_X264,$LIBRARY_XVIDCORE,$LIBRARY_X265,$LIBRARY_LIBVIDSTAB,$LIBRARY_RUBBERBAND}; do @@ -195,13 +204,13 @@ for gpl_library in {$LIBRARY_X264,$LIBRARY_XVIDCORE,$LIBRARY_X265,$LIBRARY_LIBVI done echo -n -e "\nDownloading sources: " -echo -e "INFO: Downloading source code of ffmpeg and enabled external libraries.\n" 1>>"${BASEDIR}"/build.log 2>&1 +echo -e "INFO: Downloading the source code of ffmpeg and external libraries.\n" 1>>"${BASEDIR}"/build.log 2>&1 # DOWNLOAD GNU CONFIG download_gnu_config # DOWNLOAD LIBRARY SOURCES -downloaded_enabled_library_sources "${ENABLED_LIBRARIES[@]}" +downloaded_library_sources "${ENABLED_LIBRARIES[@]}" # THIS WILL SAVE ARCHITECTURES TO BUILD TARGET_ARCH_LIST=() diff --git a/scripts/android/ffmpeg.sh b/scripts/android/ffmpeg.sh index 627bded..cc33e9f 100755 --- a/scripts/android/ffmpeg.sh +++ b/scripts/android/ffmpeg.sh @@ -6,9 +6,6 @@ if [ -z "${HOST_PKG_CONFIG_PATH}" ]; then exit 1 fi -# ENABLE COMMON FUNCTIONS -source "${BASEDIR}"/scripts/function-"${FFMPEG_KIT_BUILD_TYPE}".sh 1>>"${BASEDIR}"/build.log 2>&1 || exit 1 - LIB_NAME="ffmpeg" echo -e "----------------------------------------------------------------" 1>>"${BASEDIR}"/build.log 2>&1 @@ -72,9 +69,9 @@ CONFIGURE_POSTFIX="" HIGH_PRIORITY_INCLUDES="" # SET CONFIGURE OPTIONS -for library in {1..62}; do - if [[ ${!library} -eq 1 ]]; then - ENABLED_LIBRARY=$(get_library_name $((library - 1))) +for library in {0..61}; do + if [[ ${ENABLED_LIBRARIES[$library]} -eq 1 ]]; then + ENABLED_LIBRARY=$(get_library_name ${library}) echo -e "INFO: Enabling library ${ENABLED_LIBRARY}\n" 1>>"${BASEDIR}"/build.log 2>&1 @@ -311,18 +308,31 @@ for library in {1..62}; do # THE FOLLOWING LIBRARIES SHOULD BE EXPLICITLY DISABLED TO PREVENT AUTODETECT # NOTE THAT IDS MUST BE +1 OF THE INDEX VALUE - if [[ ${library} -eq $((LIBRARY_SDL + 1)) ]]; then + if [[ ${library} -eq ${LIBRARY_SDL} ]]; then CONFIGURE_POSTFIX+=" --disable-sdl2" - elif [[ ${library} -eq $((LIBRARY_ANDROID_ZLIB + 1)) ]]; then + elif [[ ${library} -eq ${LIBRARY_ANDROID_ZLIB} ]]; then CONFIGURE_POSTFIX+=" --disable-zlib" - elif [[ ${library} -eq $((LIBRARY_ANDROID_MEDIA_CODEC + 1)) ]]; then + elif [[ ${library} -eq ${LIBRARY_ANDROID_MEDIA_CODEC} ]]; then CONFIGURE_POSTFIX+=" --disable-mediacodec" - elif [[ ${library} -eq $((LIBRARY_OPENSSL + 1)) ]]; then + elif [[ ${library} -eq ${LIBRARY_OPENSSL} ]]; then CONFIGURE_POSTFIX+=" --disable-openssl" fi fi done +# SET CONFIGURE OPTIONS FOR CUSTOM LIBRARIES +for custom_library_index in "${CUSTOM_LIBRARIES[@]}"; do + library_name="CUSTOM_LIBRARY_${custom_library_index}_NAME" + pc_file_name="CUSTOM_LIBRARY_${custom_library_index}_PACKAGE_CONFIG_FILE_NAME" + ffmpeg_flag_name="CUSTOM_LIBRARY_${custom_library_index}_FFMPEG_ENABLE_FLAG" + + echo -e "INFO: Enabling custom library ${!library_name}\n" 1>>"${BASEDIR}"/build.log 2>&1 + + CFLAGS+=" $(pkg-config --cflags ${!pc_file_name} 2>>"${BASEDIR}"/build.log)" + LDFLAGS+=" $(pkg-config --libs --static ${!pc_file_name} 2>>"${BASEDIR}"/build.log)" + CONFIGURE_POSTFIX+=" --enable-${!ffmpeg_flag_name}" +done + export LDFLAGS+=" -L${ANDROID_NDK_ROOT}/platforms/android-${API}/arch-${TOOLCHAIN_ARCH}/usr/lib" # LINKING WITH ANDROID LTS SUPPORT LIBRARY IS NECESSARY FOR API < 18 diff --git a/scripts/apple/ffmpeg.sh b/scripts/apple/ffmpeg.sh index 68f3c15..871fd10 100755 --- a/scripts/apple/ffmpeg.sh +++ b/scripts/apple/ffmpeg.sh @@ -6,9 +6,6 @@ if [ -z "${HOST_PKG_CONFIG_PATH}" ]; then exit 1 fi -# ENABLE COMMON FUNCTIONS -source "${BASEDIR}"/scripts/function-"${FFMPEG_KIT_BUILD_TYPE}".sh 1>>"${BASEDIR}"/build.log 2>&1 || exit 1 - LIB_NAME="ffmpeg" echo -e "----------------------------------------------------------------" 1>>"${BASEDIR}"/build.log 2>&1 @@ -104,9 +101,9 @@ esac CONFIGURE_POSTFIX="" # SET CONFIGURE OPTIONS -for library in {1..62}; do - if [[ ${!library} -eq 1 ]]; then - ENABLED_LIBRARY=$(get_library_name $((library - 1))) +for library in {0..61}; do + if [[ ${ENABLED_LIBRARIES[$library]} -eq 1 ]]; then + ENABLED_LIBRARY=$(get_library_name ${library}) echo -e "INFO: Enabling library ${ENABLED_LIBRARY}\n" 1>>"${BASEDIR}"/build.log 2>&1 @@ -366,32 +363,45 @@ for library in {1..62}; do # THE FOLLOWING LIBRARIES SHOULD BE EXPLICITLY DISABLED TO PREVENT AUTODETECT # NOTE THAT IDS MUST BE +1 OF THE INDEX VALUE - if [[ ${library} -eq $((LIBRARY_SDL + 1)) ]]; then + if [[ ${library} -eq ${LIBRARY_SDL} ]]; then CONFIGURE_POSTFIX+=" --disable-sdl2" - elif [[ ${library} -eq $((LIBRARY_APPLE_AUDIOTOOLBOX + 1)) ]]; then + elif [[ ${library} -eq ${LIBRARY_APPLE_AUDIOTOOLBOX} ]]; then CONFIGURE_POSTFIX+=" --disable-audiotoolbox" - elif [[ ${library} -eq $((LIBRARY_APPLE_AVFOUNDATION + 1)) ]]; then + elif [[ ${library} -eq ${LIBRARY_APPLE_AVFOUNDATION} ]]; then CONFIGURE_POSTFIX+=" --disable-avfoundation" - elif [[ ${library} -eq $((LIBRARY_APPLE_BZIP2 + 1)) ]]; then + elif [[ ${library} -eq ${LIBRARY_APPLE_BZIP2} ]]; then CONFIGURE_POSTFIX+=" --disable-bzlib" - elif [[ ${library} -eq $((LIBRARY_APPLE_COREIMAGE + 1)) ]]; then + elif [[ ${library} -eq ${LIBRARY_APPLE_COREIMAGE} ]]; then CONFIGURE_POSTFIX+=" --disable-coreimage --disable-appkit" - elif [[ ${library} -eq $((LIBRARY_APPLE_LIBICONV + 1)) ]]; then + elif [[ ${library} -eq ${LIBRARY_APPLE_LIBICONV} ]]; then CONFIGURE_POSTFIX+=" --disable-iconv" - elif [[ ${library} -eq $((LIBRARY_APPLE_OPENCL + 1)) ]]; then + elif [[ ${library} -eq ${LIBRARY_APPLE_OPENCL} ]]; then CONFIGURE_POSTFIX+=" --disable-opencl" - elif [[ ${library} -eq $((LIBRARY_APPLE_OPENGL + 1)) ]]; then + elif [[ ${library} -eq ${LIBRARY_APPLE_OPENGL} ]]; then CONFIGURE_POSTFIX+=" --disable-opengl" - elif [[ ${library} -eq $((LIBRARY_APPLE_VIDEOTOOLBOX + 1)) ]]; then + elif [[ ${library} -eq ${LIBRARY_APPLE_VIDEOTOOLBOX} ]]; then CONFIGURE_POSTFIX+=" --disable-videotoolbox" - elif [[ ${library} -eq $((LIBRARY_APPLE_ZLIB + 1)) ]]; then + elif [[ ${library} -eq ${LIBRARY_APPLE_ZLIB} ]]; then CONFIGURE_POSTFIX+=" --disable-zlib" - elif [[ ${library} -eq $((LIBRARY_OPENSSL + 1)) ]]; then + elif [[ ${library} -eq ${LIBRARY_OPENSSL} ]]; then CONFIGURE_POSTFIX+=" --disable-openssl" fi fi done +# SET CONFIGURE OPTIONS FOR CUSTOM LIBRARIES +for custom_library_index in "${CUSTOM_LIBRARIES[@]}"; do + library_name="CUSTOM_LIBRARY_${custom_library_index}_NAME" + pc_file_name="CUSTOM_LIBRARY_${custom_library_index}_PACKAGE_CONFIG_FILE_NAME" + ffmpeg_flag_name="CUSTOM_LIBRARY_${custom_library_index}_FFMPEG_ENABLE_FLAG" + + echo -e "INFO: Enabling custom library ${!library_name}\n" 1>>"${BASEDIR}"/build.log 2>&1 + + FFMPEG_CFLAGS+=" $(pkg-config --cflags ${!pc_file_name} 2>>"${BASEDIR}"/build.log)" + FFMPEG_LDFLAGS+=" $(pkg-config --libs --static ${!pc_file_name} 2>>"${BASEDIR}"/build.log)" + CONFIGURE_POSTFIX+=" --enable-${!ffmpeg_flag_name}" +done + # ALWAYS BUILD SHARED LIBRARIES BUILD_LIBRARY_OPTIONS="--enable-shared --disable-static --install-name-dir=@rpath" diff --git a/scripts/function-android.sh b/scripts/function-android.sh index c7894aa..88a555a 100755 --- a/scripts/function-android.sh +++ b/scripts/function-android.sh @@ -50,6 +50,7 @@ under the prebuilt folder.\n" display_help_common_libraries display_help_gpl_libraries + display_help_custom_libraries display_help_advanced_options " --no-archive\t\t\tdo not build Android archive [no]" } diff --git a/scripts/function-apple.sh b/scripts/function-apple.sh index 0acbc38..1d74b93 100755 --- a/scripts/function-apple.sh +++ b/scripts/function-apple.sh @@ -266,6 +266,27 @@ create_ffmpeg_universal_library() { fi done + # COPY CUSTOM LIBRARY LICENSES + for custom_library_index in "${CUSTOM_LIBRARIES[@]}"; do + library_name="CUSTOM_LIBRARY_${custom_library_index}_NAME" + library_name_uppercase=$(echo "${!library_name}" | tr '[a-z]' '[A-Z]') + relative_license_path="CUSTOM_LIBRARY_${custom_library_index}_LICENSE_FILE" + + destination_license_path="${FFMPEG_UNIVERSAL_LIBRARY_DIRECTORY}/LICENSE.${library_name_uppercase}" + + cp "${BASEDIR}/src/${!library_name}/${!relative_license_path}" "${destination_license_path}" 1>>"${BASEDIR}"/build.log 2>&1 + + RC=$? + + if [[ ${RC} -ne 0 ]]; then + echo -e "DEBUG: Failed to copy the license file of custom library ${!library_name}\n" 1>>"${BASEDIR}"/build.log 2>&1 + echo -e "failed\n\nSee build.log for details\n" + exit 1 + fi + + echo -e "DEBUG: Copied the license file of custom library ${!library_name} successfully\n" 1>>"${BASEDIR}"/build.log 2>&1 + done + echo -e "DEBUG: ${LIBRARY_NAME} universal library built for $(get_apple_architecture_variant "${ARCHITECTURE_VARIANT}") platform successfully\n" 1>>"${BASEDIR}"/build.log 2>&1 } @@ -407,6 +428,27 @@ create_ffmpeg_framework() { [[ ${RC} -ne 0 ]] && exit_universal_library "${LIBRARY_NAME}" fi done + + # COPY CUSTOM LIBRARY LICENSES + for custom_library_index in "${CUSTOM_LIBRARIES[@]}"; do + library_name="CUSTOM_LIBRARY_${custom_library_index}_NAME" + library_name_uppercase=$(echo "${!library_name}" | tr '[a-z]' '[A-Z]') + relative_license_path="CUSTOM_LIBRARY_${custom_library_index}_LICENSE_FILE" + + destination_license_path="${FFMPEG_LIB_FRAMEWORK_RESOURCE_PATH}/LICENSE.${ENABLED_LIBRARY_NAME_UPPERCASE}" + + cp "${BASEDIR}/src/${!library_name}/${!relative_license_path}" "${destination_license_path}" 1>>"${BASEDIR}"/build.log 2>&1 + + RC=$? + + if [[ ${RC} -ne 0 ]]; then + echo -e "DEBUG: Failed to copy the license file of custom library ${!library_name}\n" 1>>"${BASEDIR}"/build.log 2>&1 + echo -e "failed\n\nSee build.log for details\n" + exit 1 + fi + + echo -e "DEBUG: Copied the license file of custom library ${!library_name} successfully\n" 1>>"${BASEDIR}"/build.log 2>&1 + done fi build_info_plist "${FFMPEG_LIB_FRAMEWORK_RESOURCE_PATH}/Info.plist" "${FFMPEG_LIB}" "com.arthenica.ffmpegkit.${CAPITAL_CASE_FFMPEG_LIB_NAME}" "${FFMPEG_LIB_VERSION}" "${FFMPEG_LIB_VERSION}" "${ARCHITECTURE_VARIANT}" diff --git a/scripts/function-ios.sh b/scripts/function-ios.sh index 09fab5b..9598476 100755 --- a/scripts/function-ios.sh +++ b/scripts/function-ios.sh @@ -53,6 +53,7 @@ libraries are created under the prebuilt folder.\n" display_help_common_libraries display_help_gpl_libraries + display_help_custom_libraries if [[ -n ${FFMPEG_KIT_XCF_BUILD} ]]; then display_help_advanced_options " --no-framework\t\tdo not build xcframework bundles [no]" else diff --git a/scripts/function-macos.sh b/scripts/function-macos.sh index 68a01f2..ca48301 100755 --- a/scripts/function-macos.sh +++ b/scripts/function-macos.sh @@ -41,6 +41,7 @@ When compilation ends, libraries are created under the prebuilt folder.\n" display_help_common_libraries display_help_gpl_libraries + display_help_custom_libraries if [[ -n ${FFMPEG_KIT_XCF_BUILD} ]]; then display_help_advanced_options " --no-framework\t\tdo not build xcframework bundles [no]" else diff --git a/scripts/function-tvos.sh b/scripts/function-tvos.sh index 72881dc..ecbb600 100755 --- a/scripts/function-tvos.sh +++ b/scripts/function-tvos.sh @@ -41,6 +41,7 @@ set explicitly. When compilation ends, libraries are created under the prebuilt display_help_common_libraries display_help_gpl_libraries + display_help_custom_libraries if [[ -n ${FFMPEG_KIT_XCF_BUILD} ]]; then display_help_advanced_options " --no-framework\t\tdo not build xcframework bundles [no]" else diff --git a/scripts/function.sh b/scripts/function.sh index 7e4ac0f..e644ac4 100755 --- a/scripts/function.sh +++ b/scripts/function.sh @@ -496,6 +496,19 @@ get_host() { esac } +# +# 1. key +# 2. value +# +generate_custom_library_environment_variables() { + CUSTOM_KEY=$(echo "CUSTOM_$1" | sed "s/\-/\_/g" | tr '[a-z]' '[A-Z]') + CUSTOM_VALUE="$2" + + export "${CUSTOM_KEY}"="${CUSTOM_VALUE}" + + echo -e "INFO: Custom library env variable generated: ${CUSTOM_KEY}=${CUSTOM_VALUE}\n" 1>>"${BASEDIR}"/build.log 2>&1 +} + skip_library() { SKIP_VARIABLE=$(echo "SKIP_$1" | sed "s/\-/\_/g") @@ -797,6 +810,17 @@ display_help_gpl_libraries() { echo -e " --enable-xvidcore\t\tbuild with xvidcore [no]\n" } +display_help_custom_libraries() { + echo -e "Custom libraries:" + echo -e " --enable-custom-library-[n]-name=value\t\t\tname of the custom library []" + echo -e " --enable-custom-library-[n]-repo=value\t\t\tgit repository url []" + echo -e " --enable-custom-library-[n]-repo-commit=value\t\t\tgit commit []" + echo -e " --enable-custom-library-[n]-repo-tag=value\t\t\tgit tag []" + echo -e " --enable-custom-library-[n]-package-config-file-name=value\tpackage config file installed by the build script []" + echo -e " --enable-custom-library-[n]-ffmpeg-enable-flag=value\tlibrary name used in ffmpeg configure script to enable the library []" + echo -e " --enable-custom-library-[n]-license-file=value\t\tlicence file path relative to the library source folder []\n" +} + display_help_advanced_options() { echo -e "Advanced options:" echo -e " --reconf-LIBRARY\t\trun autoreconf before building LIBRARY [no]" @@ -827,7 +851,11 @@ reconf_library() { done if [[ ${library_supported} -ne 1 ]]; then - echo -e "INFO: --reconf flag detected for library $1 is not supported.\n" 1>>"${BASEDIR}"/build.log 2>&1 + export ${RECONF_VARIABLE}=1 + RECONF_LIBRARIES+=($1) + echo -e "INFO: --reconf flag detected for custom library $1.\n" 1>>"${BASEDIR}"/build.log 2>&1 + else + echo -e "INFO: --reconf flag detected for library $1.\n" 1>>"${BASEDIR}"/build.log 2>&1 fi } @@ -850,7 +878,11 @@ rebuild_library() { done if [[ ${library_supported} -ne 1 ]]; then - echo -e "INFO: --rebuild flag detected for library $1 is not supported.\n" 1>>"${BASEDIR}"/build.log 2>&1 + export ${REBUILD_VARIABLE}=1 + REBUILD_LIBRARIES+=($1) + echo -e "INFO: --rebuild flag detected for custom library $1.\n" 1>>"${BASEDIR}"/build.log 2>&1 + else + echo -e "INFO: --rebuild flag detected for library $1.\n" 1>>"${BASEDIR}"/build.log 2>&1 fi } @@ -879,7 +911,11 @@ redownload_library() { fi if [[ ${library_supported} -ne 1 ]]; then - echo -e "INFO: --redownload flag detected for library $1 is not supported.\n" 1>>"${BASEDIR}"/build.log 2>&1 + export ${REDOWNLOAD_VARIABLE}=1 + REDOWNLOAD_LIBRARIES+=($1) + echo -e "INFO: --redownload flag detected for custom library $1.\n" 1>>"${BASEDIR}"/build.log 2>&1 + else + echo -e "INFO: --redownload flag detected for library $1.\n" 1>>"${BASEDIR}"/build.log 2>&1 fi } @@ -1464,6 +1500,69 @@ print_redownload_requested_libraries() { fi } +print_custom_libraries() { + local counter=0 + + for index in {1..20}; do + LIBRARY_NAME="CUSTOM_LIBRARY_${index}_NAME" + LIBRARY_REPO="CUSTOM_LIBRARY_${index}_REPO" + LIBRARY_REPO_COMMIT="CUSTOM_LIBRARY_${index}_REPO_COMMIT" + LIBRARY_REPO_TAG="CUSTOM_LIBRARY_${index}_REPO_TAG" + LIBRARY_PACKAGE_CONFIG_FILE_NAME="CUSTOM_LIBRARY_${index}_PACKAGE_CONFIG_FILE_NAME" + LIBRARY_FFMPEG_ENABLE_FLAG="CUSTOM_LIBRARY_${index}_FFMPEG_ENABLE_FLAG" + LIBRARY_LICENSE_FILE="CUSTOM_LIBRARY_${index}_LICENSE_FILE" + + if [[ -z "${!LIBRARY_NAME}" ]]; then + echo -e "INFO: Custom library ${index} not detected\n" 1>>"${BASEDIR}"/build.log 2>&1 + break + fi + + if [[ -z "${!LIBRARY_REPO}" ]]; then + echo -e "INFO: Custom library ${index} repo not set\n" 1>>"${BASEDIR}"/build.log 2>&1 + continue + fi + + if [[ -z "${!LIBRARY_REPO_COMMIT}" ]] && [[ -z "${!LIBRARY_REPO_TAG}" ]]; then + echo -e "INFO: Custom library ${index} repo source not set. Both commit id and tag are empty\n" 1>>"${BASEDIR}"/build.log 2>&1 + continue + fi + + if [[ -z "${!LIBRARY_PACKAGE_CONFIG_FILE_NAME}" ]]; then + echo -e "INFO: Custom library ${index} package config file not set\n" 1>>"${BASEDIR}"/build.log 2>&1 + continue + fi + + if [[ -z "${!LIBRARY_FFMPEG_ENABLE_FLAG}" ]]; then + echo -e "INFO: Custom library ${index} ffmpeg enable flag not set\n" 1>>"${BASEDIR}"/build.log 2>&1 + continue + fi + + if [[ -z "${!LIBRARY_LICENSE_FILE}" ]]; then + echo -e "INFO: Custom library ${index} license file not set\n" 1>>"${BASEDIR}"/build.log 2>&1 + continue + fi + + CUSTOM_LIBRARIES+=("${index}") + + if [[ ${counter} -eq 0 ]]; then + echo -n "Custom libraries: " + else + echo -n ", " + fi + + echo -n "${!LIBRARY_NAME}" + + echo -e "INFO: Custom library options found for ${!LIBRARY_NAME}\n" 1>>"${BASEDIR}"/build.log 2>&1 + + counter=$((${counter} + 1)) + done + + if [[ ${counter} -gt 0 ]]; then + echo -e "INFO: ${counter} valid custom library definitions found\n" 1>>"${BASEDIR}"/build.log 2>&1 + echo "" + fi +} + # 1 - library index get_external_library_license_path() { case $1 in @@ -1720,7 +1819,7 @@ is_gpl_licensed() { echo 1 } -downloaded_enabled_library_sources() { +downloaded_library_sources() { # DOWNLOAD FFMPEG SOURCE CODE FIRST DOWNLOAD_RESULT=$(download_library_source "ffmpeg") @@ -1743,6 +1842,18 @@ downloaded_enabled_library_sources() { fi done + for custom_library_index in "${CUSTOM_LIBRARIES[@]}"; do + library_name="CUSTOM_LIBRARY_${custom_library_index}_NAME" + + echo -e "\nDEBUG: Downloading custom library ${!library_name}\n" 1>>"${BASEDIR}"/build.log 2>&1 + + DOWNLOAD_RESULT=$(download_custom_library_source "${custom_library_index}") + if [[ ${DOWNLOAD_RESULT} -ne 0 ]]; then + echo -e "failed\n" + exit 1 + fi + done + echo -e "ok" } @@ -1819,6 +1930,57 @@ download_library_source() { fi } +# +# 1. custom library index +# +download_custom_library_source() { + local LIBRARY_NAME="CUSTOM_LIBRARY_$1_NAME" + local LIBRARY_REPO="CUSTOM_LIBRARY_$1_REPO" + local LIBRARY_REPO_COMMIT="CUSTOM_LIBRARY_$1_REPO_COMMIT" + local LIBRARY_REPO_TAG="CUSTOM_LIBRARY_$1_REPO_TAG" + + local SOURCE_REPO_URL="" + local LIB_NAME="${!LIBRARY_NAME}" + local LIB_LOCAL_PATH=${BASEDIR}/src/${LIB_NAME} + local SOURCE_ID="" + local LIBRARY_RC="" + local DOWNLOAD_RC="" + local SOURCE_TYPE="" + + echo -e "DEBUG: Downloading custom library source: ${LIB_NAME}\n" 1>>"${BASEDIR}"/build.log 2>&1 + + SOURCE_REPO_URL=${!LIBRARY_REPO} + if [ -n "${!LIBRARY_REPO_TAG}" ]; then + SOURCE_ID=${!LIBRARY_REPO_TAG} + SOURCE_TYPE="TAG" + else + SOURCE_ID=${!LIBRARY_REPO_COMMIT} + SOURCE_TYPE="COMMIT" + fi + + LIBRARY_RC=$(library_is_downloaded "${LIB_NAME}") + + if [ ${LIBRARY_RC} -eq 0 ]; then + echo -e "INFO: ${LIB_NAME} already downloaded. Source folder found at ${LIB_LOCAL_PATH}" 1>>"${BASEDIR}"/build.log 2>&1 + echo 0 + return + fi + + if [ "${SOURCE_TYPE}" == "TAG" ]; then + DOWNLOAD_RC=$(clone_git_repository_with_tag "${SOURCE_REPO_URL}" "${SOURCE_ID}" "${LIB_LOCAL_PATH}") + else + DOWNLOAD_RC=$(clone_git_repository_with_commit_id "${SOURCE_REPO_URL}" "${LIB_LOCAL_PATH}" "${SOURCE_ID}") + fi + + if [ ${DOWNLOAD_RC} -ne 0 ]; then + echo -e "INFO: Downloading custom library ${LIB_NAME} failed. Can not get library from ${SOURCE_REPO_URL}\n" 1>>"${BASEDIR}"/build.log 2>&1 + echo ${DOWNLOAD_RC} + else + echo -e "\nINFO: ${LIB_NAME} custom library downloaded" 1>>"${BASEDIR}"/build.log 2>&1 + echo 0 + fi +} + download_gnu_config() { local SOURCE_REPO_URL="" local LIB_NAME="config" diff --git a/scripts/main-android.sh b/scripts/main-android.sh index de891ab..ceee846 100755 --- a/scripts/main-android.sh +++ b/scripts/main-android.sh @@ -25,9 +25,6 @@ if [[ -z ${TOOLCHAIN_ARCH} ]]; then exit 1 fi -# ENABLE COMMON FUNCTIONS -source "${BASEDIR}"/scripts/function-"${FFMPEG_KIT_BUILD_TYPE}".sh 1>>"${BASEDIR}"/build.log 2>&1 || exit 1 - echo -e "\nBuilding ${ARCH} platform on API level ${API}\n" echo -e "\nINFO: Starting new build for ${ARCH} on API level ${API} at $(date)\n" 1>>"${BASEDIR}"/build.log 2>&1 @@ -206,11 +203,46 @@ while [ ${#enabled_library_list[@]} -gt $completed ]; do done done +# BUILD CUSTOM LIBRARIES +for custom_library_index in "${CUSTOM_LIBRARIES[@]}"; do + library_name="CUSTOM_LIBRARY_${custom_library_index}_NAME" + + echo -e "\nDEBUG: Custom library ${!library_name} will be built\n" 1>>"${BASEDIR}"/build.log 2>&1 + + # DEFINE SOME FLAGS TO REBUILD OPTIONS + REBUILD_FLAG=$(echo "REBUILD_${!library_name}" | sed "s/\-/\_/g") + LIBRARY_IS_INSTALLED=$(library_is_installed "${LIB_INSTALL_BASE}" "${!library_name}") + + echo -e "INFO: Flags detected for custom library ${!library_name}: already installed=${LIBRARY_IS_INSTALLED}, rebuild requested by user=${!REBUILD_FLAG}\n" 1>>"${BASEDIR}"/build.log 2>&1 + + if [[ ${LIBRARY_IS_INSTALLED} -ne 1 ]] || [[ ${!REBUILD_FLAG} -eq 1 ]]; then + + echo -n "${!library_name}: " + + "${BASEDIR}"/scripts/run-android.sh "${!library_name}" 1>>"${BASEDIR}"/build.log 2>&1 + + RC=$? + + # SET SOME FLAGS AFTER THE BUILD + if [ $RC -eq 0 ]; then + echo "ok" + elif [ $RC -eq 200 ]; then + echo -e "not supported\n\nSee build.log for details\n" + exit 1 + else + echo -e "failed\n\nSee build.log for details\n" + exit 1 + fi + else + echo "${!library_name}: already built" + fi +done + # SKIP TO SPEED UP THE BUILD if [[ ${SKIP_ffmpeg} -ne 1 ]]; then # BUILD FFMPEG - "${BASEDIR}"/scripts/android/ffmpeg.sh "$@" + source "${BASEDIR}"/scripts/android/ffmpeg.sh if [[ $? -ne 0 ]]; then exit 1 diff --git a/scripts/main-ios.sh b/scripts/main-ios.sh index 0455868..1d46a78 100755 --- a/scripts/main-ios.sh +++ b/scripts/main-ios.sh @@ -20,9 +20,6 @@ if [[ -z ${SDK_PATH} ]]; then exit 1 fi -# ENABLE COMMON FUNCTIONS -source "${BASEDIR}"/scripts/function-"${FFMPEG_KIT_BUILD_TYPE}".sh 1>>"${BASEDIR}"/build.log 2>&1 || exit 1 - echo -e "\nBuilding ${ARCH} platform targeting iOS SDK ${IOS_MIN_VERSION} and Mac Catalyst ${MAC_CATALYST_MIN_VERSION}\n" echo -e "\nINFO: Starting new build for ${ARCH} targeting iOS SDK ${IOS_MIN_VERSION} and Mac Catalyst ${MAC_CATALYST_MIN_VERSION} at $(date)\n" 1>>"${BASEDIR}"/build.log 2>&1 @@ -176,6 +173,41 @@ while [ ${#enabled_library_list[@]} -gt $completed ]; do done done +# BUILD CUSTOM LIBRARIES +for custom_library_index in "${CUSTOM_LIBRARIES[@]}"; do + library_name="CUSTOM_LIBRARY_${custom_library_index}_NAME" + + echo -e "\nDEBUG: Custom library ${!library_name} will be built\n" 1>>"${BASEDIR}"/build.log 2>&1 + + # DEFINE SOME FLAGS TO REBUILD OPTIONS + REBUILD_FLAG=$(echo "REBUILD_${!library_name}" | sed "s/\-/\_/g") + LIBRARY_IS_INSTALLED=$(library_is_installed "${LIB_INSTALL_BASE}" "${!library_name}") + + echo -e "INFO: Flags detected for custom library ${!library_name}: already installed=${LIBRARY_IS_INSTALLED}, rebuild requested by user=${!REBUILD_FLAG}\n" 1>>"${BASEDIR}"/build.log 2>&1 + + if [[ ${LIBRARY_IS_INSTALLED} -ne 1 ]] || [[ ${!REBUILD_FLAG} -eq 1 ]]; then + + echo -n "${!library_name}: " + + "${BASEDIR}"/scripts/run-apple.sh "${!library_name}" 1>>"${BASEDIR}"/build.log 2>&1 + + RC=$? + + # SET SOME FLAGS AFTER THE BUILD + if [ $RC -eq 0 ]; then + echo "ok" + elif [ $RC -eq 200 ]; then + echo -e "not supported\n\nSee build.log for details\n" + exit 1 + else + echo -e "failed\n\nSee build.log for details\n" + exit 1 + fi + else + echo "${!library_name}: already built" + fi +done + # SKIP TO SPEED UP THE BUILD if [[ ${SKIP_ffmpeg} -ne 1 ]]; then @@ -192,10 +224,10 @@ if [[ ${SKIP_ffmpeg} -ne 1 ]]; then cd "${BASEDIR}"/src/"${LIB_NAME}" 1>>"${BASEDIR}"/build.log 2>&1 || exit 1 - LIB_INSTALL_PREFIX="${LIB_INSTALL_BASE}"/"${LIB_NAME}" + LIB_INSTALL_PREFIX="${LIB_INSTALL_BASE}/${LIB_NAME}" # BUILD FFMPEG - source "${BASEDIR}"/scripts/apple/ffmpeg.sh "$@" + source "${BASEDIR}"/scripts/apple/ffmpeg.sh if [[ $? -ne 0 ]]; then exit 1 diff --git a/scripts/main-macos.sh b/scripts/main-macos.sh index 3d6309c..7509ece 100755 --- a/scripts/main-macos.sh +++ b/scripts/main-macos.sh @@ -20,9 +20,6 @@ if [[ -z ${SDK_PATH} ]]; then exit 1 fi -# ENABLE COMMON FUNCTIONS -source "${BASEDIR}"/scripts/function-"${FFMPEG_KIT_BUILD_TYPE}".sh 1>>"${BASEDIR}"/build.log 2>&1 || exit 1 - echo -e "\nBuilding ${ARCH} platform targeting macOS SDK ${MACOS_MIN_VERSION}\n" echo -e "\nINFO: Starting new build for ${ARCH} targeting macOS SDK ${MACOS_MIN_VERSION} at $(date)\n" 1>>"${BASEDIR}"/build.log 2>&1 @@ -175,6 +172,41 @@ while [ ${#enabled_library_list[@]} -gt $completed ]; do done done +# BUILD CUSTOM LIBRARIES +for custom_library_index in "${CUSTOM_LIBRARIES[@]}"; do + library_name="CUSTOM_LIBRARY_${custom_library_index}_NAME" + + echo -e "\nDEBUG: Custom library ${!library_name} will be built\n" 1>>"${BASEDIR}"/build.log 2>&1 + + # DEFINE SOME FLAGS TO REBUILD OPTIONS + REBUILD_FLAG=$(echo "REBUILD_${!library_name}" | sed "s/\-/\_/g") + LIBRARY_IS_INSTALLED=$(library_is_installed "${LIB_INSTALL_BASE}" "${!library_name}") + + echo -e "INFO: Flags detected for custom library ${!library_name}: already installed=${LIBRARY_IS_INSTALLED}, rebuild requested by user=${!REBUILD_FLAG}\n" 1>>"${BASEDIR}"/build.log 2>&1 + + if [[ ${LIBRARY_IS_INSTALLED} -ne 1 ]] || [[ ${!REBUILD_FLAG} -eq 1 ]]; then + + echo -n "${!library_name}: " + + "${BASEDIR}"/scripts/run-apple.sh "${!library_name}" 1>>"${BASEDIR}"/build.log 2>&1 + + RC=$? + + # SET SOME FLAGS AFTER THE BUILD + if [ $RC -eq 0 ]; then + echo "ok" + elif [ $RC -eq 200 ]; then + echo -e "not supported\n\nSee build.log for details\n" + exit 1 + else + echo -e "failed\n\nSee build.log for details\n" + exit 1 + fi + else + echo "${!library_name}: already built" + fi +done + # SKIP TO SPEED UP THE BUILD if [[ ${SKIP_ffmpeg} -ne 1 ]]; then @@ -191,10 +223,10 @@ if [[ ${SKIP_ffmpeg} -ne 1 ]]; then cd "${BASEDIR}"/src/"${LIB_NAME}" 1>>"${BASEDIR}"/build.log 2>&1 || exit 1 - LIB_INSTALL_PREFIX="${LIB_INSTALL_BASE}"/"${LIB_NAME}" + LIB_INSTALL_PREFIX="${LIB_INSTALL_BASE}/${LIB_NAME}" # BUILD FFMPEG - source "${BASEDIR}"/scripts/apple/ffmpeg.sh "$@" + source "${BASEDIR}"/scripts/apple/ffmpeg.sh if [[ $? -ne 0 ]]; then exit 1 diff --git a/scripts/main-tvos.sh b/scripts/main-tvos.sh index 29249a9..bee6d23 100755 --- a/scripts/main-tvos.sh +++ b/scripts/main-tvos.sh @@ -20,9 +20,6 @@ if [[ -z ${SDK_PATH} ]]; then exit 1 fi -# ENABLE COMMON FUNCTIONS -source "${BASEDIR}"/scripts/function-"${FFMPEG_KIT_BUILD_TYPE}".sh 1>>"${BASEDIR}"/build.log 2>&1 || exit 1 - echo -e "\nBuilding ${ARCH} platform targeting tvOS SDK ${TVOS_MIN_VERSION}\n" echo -e "\nINFO: Starting new build for ${ARCH} targeting tvOS SDK ${TVOS_MIN_VERSION} at $(date)\n" 1>>"${BASEDIR}"/build.log 2>&1 @@ -174,6 +171,41 @@ while [ ${#enabled_library_list[@]} -gt $completed ]; do done done +# BUILD CUSTOM LIBRARIES +for custom_library_index in "${CUSTOM_LIBRARIES[@]}"; do + library_name="CUSTOM_LIBRARY_${custom_library_index}_NAME" + + echo -e "\nDEBUG: Custom library ${!library_name} will be built\n" 1>>"${BASEDIR}"/build.log 2>&1 + + # DEFINE SOME FLAGS TO REBUILD OPTIONS + REBUILD_FLAG=$(echo "REBUILD_${!library_name}" | sed "s/\-/\_/g") + LIBRARY_IS_INSTALLED=$(library_is_installed "${LIB_INSTALL_BASE}" "${!library_name}") + + echo -e "INFO: Flags detected for custom library ${!library_name}: already installed=${LIBRARY_IS_INSTALLED}, rebuild requested by user=${!REBUILD_FLAG}\n" 1>>"${BASEDIR}"/build.log 2>&1 + + if [[ ${LIBRARY_IS_INSTALLED} -ne 1 ]] || [[ ${!REBUILD_FLAG} -eq 1 ]]; then + + echo -n "${!library_name}: " + + "${BASEDIR}"/scripts/run-apple.sh "${!library_name}" 1>>"${BASEDIR}"/build.log 2>&1 + + RC=$? + + # SET SOME FLAGS AFTER THE BUILD + if [ $RC -eq 0 ]; then + echo "ok" + elif [ $RC -eq 200 ]; then + echo -e "not supported\n\nSee build.log for details\n" + exit 1 + else + echo -e "failed\n\nSee build.log for details\n" + exit 1 + fi + else + echo "${!library_name}: already built" + fi +done + # SKIP TO SPEED UP THE BUILD if [[ ${SKIP_ffmpeg} -ne 1 ]]; then @@ -193,7 +225,7 @@ if [[ ${SKIP_ffmpeg} -ne 1 ]]; then LIB_INSTALL_PREFIX="${LIB_INSTALL_BASE}/${LIB_NAME}" # BUILD FFMPEG - source "${BASEDIR}"/scripts/apple/ffmpeg.sh "$@" + source "${BASEDIR}"/scripts/apple/ffmpeg.sh if [[ $? -ne 0 ]]; then exit 1 diff --git a/scripts/variable.sh b/scripts/variable.sh index 13da91e..70c2a92 100755 --- a/scripts/variable.sh +++ b/scripts/variable.sh @@ -21,6 +21,9 @@ REBUILD_LIBRARIES=() # ARRAY OF LIBRARIES THAT WILL BE RE-DOWNLOADED REDOWNLOAD_LIBRARIES=() +# ARRAY OF CUSTOM LIBRARIES +CUSTOM_LIBRARIES=() + # ARCH INDEXES ARCH_ARM_V7A=0 # android ARCH_ARM_V7A_NEON=1 # android diff --git a/src/.gitignore b/src/.gitignore index 2767ab3..33662f5 100644 --- a/src/.gitignore +++ b/src/.gitignore @@ -1,51 +1 @@ -chromaprint -cpu-features -dav1d -expat -ffmpeg -fontconfig -freetype -fribidi -giflib -gmp -gnutls -harfbuzz -jpeg -kvazaar -lame -leptonica -libaom -libass -libiconv -libilbc -libogg -libpng -libsamplerate -libsndfile -libtheora -libuuid -libvidstab -libvorbis -libvpx -libwebp -libxml2 -nettle -opencore-amr -openh264 -openssl -opus -rubberband -sdl -shine -snappy -soxr -speex -srt -tesseract -tiff -twolame -vo-amrwbenc -x264 -x265 -xvidcore -zimg +/* diff --git a/tvos.sh b/tvos.sh index 603b005..aefecde 100755 --- a/tvos.sh +++ b/tvos.sh @@ -116,6 +116,14 @@ while [ ! $# -eq 0 ]; do --enable-gpl) GPL_ENABLED="yes" ;; + --enable-custom-library-*) + CUSTOM_LIBRARY_OPTION_KEY=$(echo $1 | sed -e 's/^--enable-custom-//g;s/=.*$//g') + CUSTOM_LIBRARY_OPTION_VALUE=$(echo $1 | sed -e 's/^--enable-custom-.*=//g') + + echo -e "INFO: Custom library options detected: ${CUSTOM_LIBRARY_OPTION_KEY} ${CUSTOM_LIBRARY_OPTION_VALUE}\n" 1>>"${BASEDIR}"/build.log 2>&1 + + generate_custom_library_environment_variables "${CUSTOM_LIBRARY_OPTION_KEY}" "${CUSTOM_LIBRARY_OPTION_VALUE}" + ;; --enable-*) ENABLED_LIBRARY=$(echo $1 | sed -e 's/^--[A-Za-z]*-//g') @@ -191,6 +199,7 @@ print_enabled_libraries print_reconfigure_requested_libraries print_rebuild_requested_libraries print_redownload_requested_libraries +print_custom_libraries # VALIDATE GPL FLAGS for gpl_library in {$LIBRARY_X264,$LIBRARY_XVIDCORE,$LIBRARY_X265,$LIBRARY_LIBVIDSTAB,$LIBRARY_RUBBERBAND}; do @@ -206,13 +215,13 @@ for gpl_library in {$LIBRARY_X264,$LIBRARY_XVIDCORE,$LIBRARY_X265,$LIBRARY_LIBVI done echo -n -e "\nDownloading sources: " -echo -e "INFO: Downloading source code of ffmpeg and enabled external libraries.\n" 1>>"${BASEDIR}"/build.log 2>&1 +echo -e "INFO: Downloading the source code of ffmpeg and external libraries.\n" 1>>"${BASEDIR}"/build.log 2>&1 # DOWNLOAD GNU CONFIG download_gnu_config # DOWNLOAD LIBRARY SOURCES -downloaded_enabled_library_sources "${ENABLED_LIBRARIES[@]}" +downloaded_library_sources "${ENABLED_LIBRARIES[@]}" # THIS WILL SAVE ARCHITECTURES TO BUILD TARGET_ARCH_LIST=() From 42257524ed988704b6b668089e8def0f9d86fdc0 Mon Sep 17 00:00:00 2001 From: Taner Sener Date: Tue, 28 Dec 2021 20:59:56 +0000 Subject: [PATCH 42/45] specify --enable-gpl flag only once --- scripts/android/ffmpeg.sh | 15 ++++++++++----- scripts/apple/ffmpeg.sh | 15 ++++++++++----- 2 files changed, 20 insertions(+), 10 deletions(-) diff --git a/scripts/android/ffmpeg.sh b/scripts/android/ffmpeg.sh index cc33e9f..3781a4b 100755 --- a/scripts/android/ffmpeg.sh +++ b/scripts/android/ffmpeg.sh @@ -158,7 +158,7 @@ for library in {0..61}; do libvidstab) CFLAGS+=" $(pkg-config --cflags vidstab 2>>"${BASEDIR}"/build.log)" LDFLAGS+=" $(pkg-config --libs --static vidstab 2>>"${BASEDIR}"/build.log)" - CONFIGURE_POSTFIX+=" --enable-libvidstab --enable-gpl" + CONFIGURE_POSTFIX+=" --enable-libvidstab" ;; libvorbis) CFLAGS+=" $(pkg-config --cflags vorbis 2>>"${BASEDIR}"/build.log)" @@ -204,7 +204,7 @@ for library in {0..61}; do rubberband) CFLAGS+=" $(pkg-config --cflags rubberband 2>>"${BASEDIR}"/build.log)" LDFLAGS+=" $(pkg-config --libs --static rubberband 2>>"${BASEDIR}"/build.log)" - CONFIGURE_POSTFIX+=" --enable-librubberband --enable-gpl" + CONFIGURE_POSTFIX+=" --enable-librubberband" ;; sdl) CFLAGS+=" $(pkg-config --cflags sdl2 2>>"${BASEDIR}"/build.log)" @@ -256,17 +256,17 @@ for library in {0..61}; do x264) CFLAGS+=" $(pkg-config --cflags x264 2>>"${BASEDIR}"/build.log)" LDFLAGS+=" $(pkg-config --libs --static x264 2>>"${BASEDIR}"/build.log)" - CONFIGURE_POSTFIX+=" --enable-libx264 --enable-gpl" + CONFIGURE_POSTFIX+=" --enable-libx264" ;; x265) CFLAGS+=" $(pkg-config --cflags x265 2>>"${BASEDIR}"/build.log)" LDFLAGS+=" $(pkg-config --libs --static x265 2>>"${BASEDIR}"/build.log)" - CONFIGURE_POSTFIX+=" --enable-libx265 --enable-gpl" + CONFIGURE_POSTFIX+=" --enable-libx265" ;; xvidcore) CFLAGS+=" $(pkg-config --cflags xvidcore 2>>"${BASEDIR}"/build.log)" LDFLAGS+=" $(pkg-config --libs --static xvidcore 2>>"${BASEDIR}"/build.log)" - CONFIGURE_POSTFIX+=" --enable-libxvid --enable-gpl" + CONFIGURE_POSTFIX+=" --enable-libxvid" ;; zimg) CFLAGS+=" $(pkg-config --cflags zimg 2>>"${BASEDIR}"/build.log)" @@ -333,6 +333,11 @@ for custom_library_index in "${CUSTOM_LIBRARIES[@]}"; do CONFIGURE_POSTFIX+=" --enable-${!ffmpeg_flag_name}" done +# SET ENABLE GPL FLAG WHEN REQUESTED +if [ "$GPL_ENABLED" == "yes" ]; then + CONFIGURE_POSTFIX+=" --enable-gpl" +fi + export LDFLAGS+=" -L${ANDROID_NDK_ROOT}/platforms/android-${API}/arch-${TOOLCHAIN_ARCH}/usr/lib" # LINKING WITH ANDROID LTS SUPPORT LIBRARY IS NECESSARY FOR API < 18 diff --git a/scripts/apple/ffmpeg.sh b/scripts/apple/ffmpeg.sh index 871fd10..6224fe9 100755 --- a/scripts/apple/ffmpeg.sh +++ b/scripts/apple/ffmpeg.sh @@ -176,7 +176,7 @@ for library in {0..61}; do libvidstab) FFMPEG_CFLAGS+=" $(pkg-config --cflags vidstab 2>>"${BASEDIR}"/build.log)" FFMPEG_LDFLAGS+=" $(pkg-config --libs --static vidstab 2>>"${BASEDIR}"/build.log)" - CONFIGURE_POSTFIX+=" --enable-libvidstab --enable-gpl" + CONFIGURE_POSTFIX+=" --enable-libvidstab" ;; libvorbis) FFMPEG_CFLAGS+=" $(pkg-config --cflags vorbis 2>>"${BASEDIR}"/build.log)" @@ -222,7 +222,7 @@ for library in {0..61}; do FFMPEG_CFLAGS+=" $(pkg-config --cflags rubberband 2>>"${BASEDIR}"/build.log)" FFMPEG_LDFLAGS+=" $(pkg-config --libs --static rubberband 2>>"${BASEDIR}"/build.log)" FFMPEG_LDFLAGS+=" -framework Accelerate" - CONFIGURE_POSTFIX+=" --enable-librubberband --enable-gpl" + CONFIGURE_POSTFIX+=" --enable-librubberband" ;; sdl) FFMPEG_CFLAGS+=" $(pkg-config --cflags sdl2 2>>"${BASEDIR}"/build.log)" @@ -274,17 +274,17 @@ for library in {0..61}; do x264) FFMPEG_CFLAGS+=" $(pkg-config --cflags x264 2>>"${BASEDIR}"/build.log)" FFMPEG_LDFLAGS+=" $(pkg-config --libs --static x264 2>>"${BASEDIR}"/build.log)" - CONFIGURE_POSTFIX+=" --enable-libx264 --enable-gpl" + CONFIGURE_POSTFIX+=" --enable-libx264" ;; x265) FFMPEG_CFLAGS+=" $(pkg-config --cflags x265 2>>"${BASEDIR}"/build.log)" FFMPEG_LDFLAGS+=" $(pkg-config --libs --static x265 2>>"${BASEDIR}"/build.log)" - CONFIGURE_POSTFIX+=" --enable-libx265 --enable-gpl" + CONFIGURE_POSTFIX+=" --enable-libx265" ;; xvidcore) FFMPEG_CFLAGS+=" $(pkg-config --cflags xvidcore 2>>"${BASEDIR}"/build.log)" FFMPEG_LDFLAGS+=" $(pkg-config --libs --static xvidcore 2>>"${BASEDIR}"/build.log)" - CONFIGURE_POSTFIX+=" --enable-libxvid --enable-gpl" + CONFIGURE_POSTFIX+=" --enable-libxvid" ;; zimg) FFMPEG_CFLAGS+=" $(pkg-config --cflags zimg 2>>"${BASEDIR}"/build.log)" @@ -402,6 +402,11 @@ for custom_library_index in "${CUSTOM_LIBRARIES[@]}"; do CONFIGURE_POSTFIX+=" --enable-${!ffmpeg_flag_name}" done +# SET ENABLE GPL FLAG WHEN REQUESTED +if [ "$GPL_ENABLED" == "yes" ]; then + CONFIGURE_POSTFIX+=" --enable-gpl" +fi + # ALWAYS BUILD SHARED LIBRARIES BUILD_LIBRARY_OPTIONS="--enable-shared --disable-static --install-name-dir=@rpath" From 018f063b64ca66be044985a6cfee4d04f46c62df Mon Sep 17 00:00:00 2001 From: Taner Sener Date: Tue, 28 Dec 2021 21:21:47 +0000 Subject: [PATCH 43/45] put libc++ inside aar package when custom library uses c++ --- scripts/function-android.sh | 2 +- scripts/function.sh | 19 +++++++++++++++---- 2 files changed, 16 insertions(+), 5 deletions(-) diff --git a/scripts/function-android.sh b/scripts/function-android.sh index 88a555a..41cd5a1 100755 --- a/scripts/function-android.sh +++ b/scripts/function-android.sh @@ -70,7 +70,7 @@ build_application_mk() { local LTS_BUILD_FLAG="-DFFMPEG_KIT_LTS " fi - if [[ ${ENABLED_LIBRARIES[$LIBRARY_X265]} -eq 1 ]] || [[ ${ENABLED_LIBRARIES[$LIBRARY_TESSERACT]} -eq 1 ]] || [[ ${ENABLED_LIBRARIES[$LIBRARY_OPENH264]} -eq 1 ]] || [[ ${ENABLED_LIBRARIES[$LIBRARY_SNAPPY]} -eq 1 ]] || [[ ${ENABLED_LIBRARIES[$LIBRARY_RUBBERBAND]} -eq 1 ]] || [[ ${ENABLED_LIBRARIES[$LIBRARY_ZIMG]} -eq 1 ]] || [[ ${ENABLED_LIBRARIES[$LIBRARY_SRT]} -eq 1 ]]; then + if [[ ${ENABLED_LIBRARIES[$LIBRARY_X265]} -eq 1 ]] || [[ ${ENABLED_LIBRARIES[$LIBRARY_TESSERACT]} -eq 1 ]] || [[ ${ENABLED_LIBRARIES[$LIBRARY_OPENH264]} -eq 1 ]] || [[ ${ENABLED_LIBRARIES[$LIBRARY_SNAPPY]} -eq 1 ]] || [[ ${ENABLED_LIBRARIES[$LIBRARY_RUBBERBAND]} -eq 1 ]] || [[ ${ENABLED_LIBRARIES[$LIBRARY_ZIMG]} -eq 1 ]] || [[ ${ENABLED_LIBRARIES[$LIBRARY_SRT]} -eq 1 ]] || [[ -n ${CUSTOM_LIBRARY_USES_CPP} ]]; then local APP_STL="c++_shared" else local APP_STL="none" diff --git a/scripts/function.sh b/scripts/function.sh index e644ac4..b38503f 100755 --- a/scripts/function.sh +++ b/scripts/function.sh @@ -813,12 +813,17 @@ display_help_gpl_libraries() { display_help_custom_libraries() { echo -e "Custom libraries:" echo -e " --enable-custom-library-[n]-name=value\t\t\tname of the custom library []" - echo -e " --enable-custom-library-[n]-repo=value\t\t\tgit repository url []" - echo -e " --enable-custom-library-[n]-repo-commit=value\t\t\tgit commit []" - echo -e " --enable-custom-library-[n]-repo-tag=value\t\t\tgit tag []" + echo -e " --enable-custom-library-[n]-repo=value\t\t\tgit repository of the source code []" + echo -e " --enable-custom-library-[n]-repo-commit=value\t\t\tgit commit to download the source code from []" + echo -e " --enable-custom-library-[n]-repo-tag=value\t\t\tgit tag to download the source code from []" echo -e " --enable-custom-library-[n]-package-config-file-name=value\tpackage config file installed by the build script []" echo -e " --enable-custom-library-[n]-ffmpeg-enable-flag=value\tlibrary name used in ffmpeg configure script to enable the library []" - echo -e " --enable-custom-library-[n]-license-file=value\t\tlicence file path relative to the library source folder []\n" + echo -e " --enable-custom-library-[n]-license-file=value\t\tlicence file path relative to the library source folder []" + if [ ${FFMPEG_KIT_BUILD_TYPE} == "android" ]; then + echo -e " --enable-custom-library-[n]-uses-cpp\t\t\t\tflag to specify that the library uses libc++ []\n" + else + echo "" + fi } display_help_advanced_options() { @@ -1511,6 +1516,7 @@ print_custom_libraries() { LIBRARY_PACKAGE_CONFIG_FILE_NAME="CUSTOM_LIBRARY_${index}_PACKAGE_CONFIG_FILE_NAME" LIBRARY_FFMPEG_ENABLE_FLAG="CUSTOM_LIBRARY_${index}_FFMPEG_ENABLE_FLAG" LIBRARY_LICENSE_FILE="CUSTOM_LIBRARY_${index}_LICENSE_FILE" + LIBRARY_USES_CPP="CUSTOM_LIBRARY_${index}_USES_CPP" if [[ -z "${!LIBRARY_NAME}" ]]; then echo -e "INFO: Custom library ${index} not detected\n" 1>>"${BASEDIR}"/build.log 2>&1 @@ -1542,6 +1548,11 @@ print_custom_libraries() { continue fi + if [[ -n "${!LIBRARY_USES_CPP}" ]] && [[ ${FFMPEG_KIT_BUILD_TYPE} == "android" ]]; then + echo -e "INFO: Custom library ${index} is marked as uses libc++ \n" 1>>"${BASEDIR}"/build.log 2>&1 + export CUSTOM_LIBRARY_USES_CPP=1 + fi + CUSTOM_LIBRARIES+=("${index}") if [[ ${counter} -eq 0 ]]; then From 9c8ee760a04b0c1517e68de60e3d15798b3ea026 Mon Sep 17 00:00:00 2001 From: Taner Sener Date: Tue, 28 Dec 2021 23:25:06 +0000 Subject: [PATCH 44/45] increase library versions before the next release --- scripts/android/chromaprint.sh | 7 +++++-- scripts/android/expat.sh | 2 +- scripts/android/ffmpeg.sh | 12 +++++------ scripts/android/fontconfig.sh | 11 +++++++---- scripts/android/freetype.sh | 4 ++-- scripts/android/fribidi.sh | 2 +- scripts/android/giflib.sh | 2 +- scripts/android/gmp.sh | 2 +- scripts/android/harfbuzz.sh | 2 +- scripts/android/kvazaar.sh | 2 +- scripts/android/lame.sh | 2 +- scripts/android/leptonica.sh | 2 +- scripts/android/libaom.sh | 2 +- scripts/android/libass.sh | 2 +- scripts/android/libiconv.sh | 2 +- scripts/android/libilbc.sh | 2 +- scripts/android/libogg.sh | 2 +- scripts/android/libpng.sh | 2 +- scripts/android/libsamplerate.sh | 2 +- scripts/android/libsndfile.sh | 2 +- scripts/android/libtheora.sh | 2 +- scripts/android/libuuid.sh | 2 +- scripts/android/libvidstab.sh | 2 +- scripts/android/libvorbis.sh | 2 +- scripts/android/libwebp.sh | 2 +- scripts/android/libxml2.sh | 2 +- scripts/android/nettle.sh | 2 +- scripts/android/opencore-amr.sh | 2 +- scripts/android/openssl.sh | 2 +- scripts/android/opus.sh | 2 +- scripts/android/rubberband.sh | 2 +- scripts/android/sdl.sh | 2 +- scripts/android/shine.sh | 2 +- scripts/android/speex.sh | 2 +- scripts/android/tesseract.sh | 2 +- scripts/android/tiff.sh | 2 +- scripts/android/twolame.sh | 2 +- scripts/android/vo-amrwbenc.sh | 2 +- scripts/android/x264.sh | 2 +- scripts/android/zimg.sh | 2 +- scripts/apple/chromaprint.sh | 6 ++++-- scripts/apple/expat.sh | 2 +- scripts/apple/ffmpeg-kit.sh | 16 +++++++-------- scripts/apple/ffmpeg.sh | 34 ++++++++++++++++---------------- scripts/apple/fontconfig.sh | 7 +++++-- scripts/apple/freetype.sh | 4 ++-- scripts/apple/fribidi.sh | 2 +- scripts/apple/giflib.sh | 2 +- scripts/apple/gmp.sh | 2 +- scripts/apple/harfbuzz.sh | 2 +- scripts/apple/kvazaar.sh | 2 +- scripts/apple/lame.sh | 2 +- scripts/apple/leptonica.sh | 2 +- scripts/apple/libass.sh | 2 +- scripts/apple/libilbc.sh | 2 +- scripts/apple/libogg.sh | 2 +- scripts/apple/libpng.sh | 2 +- scripts/apple/libsamplerate.sh | 2 +- scripts/apple/libsndfile.sh | 2 +- scripts/apple/libtheora.sh | 2 +- scripts/apple/libvidstab.sh | 2 +- scripts/apple/libvorbis.sh | 2 +- scripts/apple/libwebp.sh | 2 +- scripts/apple/libxml2.sh | 2 +- scripts/apple/nettle.sh | 2 +- scripts/apple/opencore-amr.sh | 2 +- scripts/apple/openssl.sh | 2 +- scripts/apple/opus.sh | 2 +- scripts/apple/rubberband.sh | 2 +- scripts/apple/sdl.sh | 2 +- scripts/apple/shine.sh | 2 +- scripts/apple/speex.sh | 2 +- scripts/apple/tesseract.sh | 2 +- scripts/apple/tiff.sh | 2 +- scripts/apple/twolame.sh | 2 +- scripts/apple/vo-amrwbenc.sh | 2 +- scripts/apple/x264.sh | 5 ++++- scripts/apple/zimg.sh | 2 +- scripts/function-ios.sh | 2 +- scripts/function-macos.sh | 2 +- scripts/function-tvos.sh | 2 +- scripts/function.sh | 18 +++++++++-------- scripts/main-android.sh | 2 +- scripts/main-ios.sh | 6 +++--- scripts/main-macos.sh | 6 +++--- scripts/main-tvos.sh | 6 +++--- scripts/source.sh | 26 ++++++++++++------------ 87 files changed, 164 insertions(+), 148 deletions(-) diff --git a/scripts/android/chromaprint.sh b/scripts/android/chromaprint.sh index 52e0972..947ab55 100755 --- a/scripts/android/chromaprint.sh +++ b/scripts/android/chromaprint.sh @@ -14,17 +14,20 @@ cmake -Wno-dev \ -DCMAKE_INSTALL_PREFIX="${LIB_INSTALL_PREFIX}" \ -DCMAKE_SYSTEM_NAME=Generic \ -DCMAKE_C_COMPILER="${ANDROID_NDK_ROOT}/toolchains/llvm/prebuilt/${TOOLCHAIN}/bin/$CC" \ + -DCMAKE_CXX_COMPILER="${ANDROID_NDK_ROOT}/toolchains/llvm/prebuilt/${TOOLCHAIN}/bin/$CXX" \ -DCMAKE_LINKER="${ANDROID_NDK_ROOT}/toolchains/llvm/prebuilt/${TOOLCHAIN}/bin/$LD" \ -DCMAKE_AR="${ANDROID_NDK_ROOT}/toolchains/llvm/prebuilt/${TOOLCHAIN}/bin/$AR" \ -DCMAKE_AS="${ANDROID_NDK_ROOT}/toolchains/llvm/prebuilt/${TOOLCHAIN}/bin/$AS" \ -DCMAKE_SYSTEM_PROCESSOR=$(get_cmake_system_processor) \ -DCMAKE_POSITION_INDEPENDENT_CODE=1 \ -DFFT_LIB=kissfft \ - -DBUILD_SHARED_LIBS=0 "${BASEDIR}"/src/"${LIB_NAME}" || return 1 + -DKISSFFT_SOURCE_DIR="${BASEDIR}"/src/"${LIB_NAME}"/src/3rdparty/kissfft \ + -DBUILD_SHARED_LIBS=0 \ + -DBUILD_TESTS=0 "${BASEDIR}"/src/"${LIB_NAME}" || return 1 make -j$(get_cpu_count) || return 1 make install || return 1 # CREATE PACKAGE CONFIG MANUALLY -create_chromaprint_package_config "1.5.0" || return 1 +create_chromaprint_package_config "1.5.1" || return 1 diff --git a/scripts/android/expat.sh b/scripts/android/expat.sh index 62794bb..6cf67d4 100755 --- a/scripts/android/expat.sh +++ b/scripts/android/expat.sh @@ -7,7 +7,7 @@ make distclean 2>/dev/null 1>/dev/null # REGENERATE BUILD FILES IF NECESSARY OR REQUESTED if [[ ! -f "${BASEDIR}"/src/"${LIB_NAME}"/"${LIB_NAME}"/configure ]] || [[ ${RECONF_expat} -eq 1 ]]; then - autoreconf_library "${LIB_NAME}" 1>>"${BASEDIR}"/build.log 2>&1 || exit 1 + autoreconf_library "${LIB_NAME}" 1>>"${BASEDIR}"/build.log 2>&1 || return 1 fi ./configure \ diff --git a/scripts/android/ffmpeg.sh b/scripts/android/ffmpeg.sh index 3781a4b..7b6d2d7 100755 --- a/scripts/android/ffmpeg.sh +++ b/scripts/android/ffmpeg.sh @@ -29,7 +29,7 @@ export CXXFLAGS=$(get_cxxflags "${LIB_NAME}") export LDFLAGS=$(get_ldflags "${LIB_NAME}") export PKG_CONFIG_LIBDIR="${INSTALL_PKG_CONFIG_DIR}" -cd "${BASEDIR}"/src/"${LIB_NAME}" 1>>"${BASEDIR}"/build.log 2>&1 || exit 1 +cd "${BASEDIR}"/src/"${LIB_NAME}" 1>>"${BASEDIR}"/build.log 2>&1 || return 1 # SET BUILD OPTIONS TARGET_CPU="" @@ -389,19 +389,19 @@ export CFLAGS="${HIGH_PRIORITY_INCLUDES} ${CFLAGS}" ulimit -n 2048 1>>"${BASEDIR}"/build.log 2>&1 ########################### CUSTOMIZATIONS ####################### -cd "${BASEDIR}" 1>>"${BASEDIR}"/build.log 2>&1 || exit 1 +cd "${BASEDIR}" 1>>"${BASEDIR}"/build.log 2>&1 || return 1 git checkout android/ffmpeg-kit-android-lib/src/main/cpp/ffmpegkit.c 1>>"${BASEDIR}"/build.log 2>&1 -cd "${BASEDIR}"/src/"${LIB_NAME}" 1>>"${BASEDIR}"/build.log 2>&1 || exit 1 +cd "${BASEDIR}"/src/"${LIB_NAME}" 1>>"${BASEDIR}"/build.log 2>&1 || return 1 git checkout libavformat/file.c 1>>"${BASEDIR}"/build.log 2>&1 git checkout libavformat/protocols.c 1>>"${BASEDIR}"/build.log 2>&1 git checkout libavutil 1>>"${BASEDIR}"/build.log 2>&1 # 1. Use thread local log levels -${SED_INLINE} 's/static int av_log_level/__thread int av_log_level/g' "${BASEDIR}"/src/"${LIB_NAME}"/libavutil/log.c 1>>"${BASEDIR}"/build.log 2>&1 || exit 1 +${SED_INLINE} 's/static int av_log_level/__thread int av_log_level/g' "${BASEDIR}"/src/"${LIB_NAME}"/libavutil/log.c 1>>"${BASEDIR}"/build.log 2>&1 || return 1 # 2. Set friendly ffmpeg version FFMPEG_VERSION="v$(get_user_friendly_ffmpeg_version)" -${SED_INLINE} "s/\$version/$FFMPEG_VERSION/g" "${BASEDIR}"/src/"${LIB_NAME}"/ffbuild/version.sh 1>>"${BASEDIR}"/build.log 2>&1 || exit 1 +${SED_INLINE} "s/\$version/$FFMPEG_VERSION/g" "${BASEDIR}"/src/"${LIB_NAME}"/ffbuild/version.sh 1>>"${BASEDIR}"/build.log 2>&1 || return 1 # 3. Enable ffmpeg-kit protocols if [[ ${NO_FFMPEG_KIT_PROTOCOLS} == "1" ]]; then @@ -503,7 +503,7 @@ fi # DELETE THE PREVIOUS BUILD OF THE LIBRARY BEFORE INSTALLING if [ -d "${FFMPEG_LIBRARY_PATH}" ]; then - rm -rf "${FFMPEG_LIBRARY_PATH}" 1>>"${BASEDIR}"/build.log 2>&1 || exit 1 + rm -rf "${FFMPEG_LIBRARY_PATH}" 1>>"${BASEDIR}"/build.log 2>&1 || return 1 fi make install 1>>"${BASEDIR}"/build.log 2>&1 diff --git a/scripts/android/fontconfig.sh b/scripts/android/fontconfig.sh index 695728c..c490f35 100755 --- a/scripts/android/fontconfig.sh +++ b/scripts/android/fontconfig.sh @@ -3,16 +3,19 @@ # ALWAYS CLEAN THE PREVIOUS BUILD make distclean 2>/dev/null 1>/dev/null +# WORKAROUND FOR "bad flag in substitute command" +${SED_INLINE} "s|in \"\$default_fonts\"|in \$default_fonts|g" "${BASEDIR}"/src/"${LIB_NAME}"/configure.ac 1>>"${BASEDIR}"/build.log 2>&1 + # REGENERATE BUILD FILES IF NECESSARY OR REQUESTED if [[ ! -f "${BASEDIR}"/src/"${LIB_NAME}"/configure ]] || [[ ${RECONF_fontconfig} -eq 1 ]]; then - autoreconf_library "${LIB_NAME}" 1>>"${BASEDIR}"/build.log 2>&1 || exit 1 + autoreconf_library "${LIB_NAME}" 1>>"${BASEDIR}"/build.log 2>&1 || return 1 fi # WORKAROUND TO FIX NOT-APPLIED HAVE_POSIX_FADVISE define ON MACOS if [[ -n ${FFMPEG_KIT_LTS_BUILD} ]]; then - ${SED_INLINE} "s/(HAVE_POSIX_FADVISE)/(NO_HAVE_POSIX_FADVISE)/g" "${BASEDIR}"/src/"${LIB_NAME}"/src/fccache.c 1>>"${BASEDIR}"/build.log 2>&1 || exit 1 + ${SED_INLINE} "s/(HAVE_POSIX_FADVISE)/(NO_HAVE_POSIX_FADVISE)/g" "${BASEDIR}"/src/"${LIB_NAME}"/src/fccache.c 1>>"${BASEDIR}"/build.log 2>&1 || return 1 else - ${SED_INLINE} "s/NO_HAVE_POSIX_FADVISE/HAVE_POSIX_FADVISE/g" "${BASEDIR}"/src/"${LIB_NAME}"/src/fccache.c 1>>"${BASEDIR}"/build.log 2>&1 || exit 1 + ${SED_INLINE} "s/NO_HAVE_POSIX_FADVISE/HAVE_POSIX_FADVISE/g" "${BASEDIR}"/src/"${LIB_NAME}"/src/fccache.c 1>>"${BASEDIR}"/build.log 2>&1 || return 1 fi ./configure \ @@ -34,4 +37,4 @@ make -j$(get_cpu_count) || return 1 make install || return 1 # CREATE PACKAGE CONFIG MANUALLY -create_fontconfig_package_config "2.13.93" || return 1 +create_fontconfig_package_config "2.13.94" || return 1 diff --git a/scripts/android/freetype.sh b/scripts/android/freetype.sh index 17cd945..03943f0 100755 --- a/scripts/android/freetype.sh +++ b/scripts/android/freetype.sh @@ -11,7 +11,7 @@ make distclean 2>/dev/null 1>/dev/null if [[ ! -f "${BASEDIR}"/src/"${LIB_NAME}"/builds/unix/configure ]] || [[ ${RECONF_freetype} -eq 1 ]]; then # NOTE THAT FREETYPE DOES NOT SUPPORT AUTORECONF BUT IT COMES WITH AN autogen.sh - ./autogen.sh || exit 1 + ./autogen.sh || return 1 fi ./configure \ @@ -37,4 +37,4 @@ make -j$(get_cpu_count) || return 1 make install || return 1 # CREATE PACKAGE CONFIG MANUALLY -create_freetype_package_config "24.0.18" || return 1 +create_freetype_package_config "24.1.18" || return 1 diff --git a/scripts/android/fribidi.sh b/scripts/android/fribidi.sh index 845377f..ed5bd88 100755 --- a/scripts/android/fribidi.sh +++ b/scripts/android/fribidi.sh @@ -5,7 +5,7 @@ make distclean 2>/dev/null 1>/dev/null # REGENERATE BUILD FILES IF NECESSARY OR REQUESTED if [[ ! -f "${BASEDIR}"/src/"${LIB_NAME}"/configure ]] || [[ ${RECONF_fribidi} -eq 1 ]]; then - autoreconf_library "${LIB_NAME}" 1>>"${BASEDIR}"/build.log 2>&1 || exit 1 + autoreconf_library "${LIB_NAME}" 1>>"${BASEDIR}"/build.log 2>&1 || return 1 fi ./configure \ diff --git a/scripts/android/giflib.sh b/scripts/android/giflib.sh index ebf1ff2..ce75034 100755 --- a/scripts/android/giflib.sh +++ b/scripts/android/giflib.sh @@ -8,7 +8,7 @@ make distclean 2>/dev/null 1>/dev/null # REGENERATE BUILD FILES IF NECESSARY OR REQUESTED if [[ ! -f "${BASEDIR}"/src/"${LIB_NAME}"/configure ]] || [[ ${RECONF_giflib} -eq 1 ]]; then - autoreconf_library "${LIB_NAME}" 1>>"${BASEDIR}"/build.log 2>&1 || exit 1 + autoreconf_library "${LIB_NAME}" 1>>"${BASEDIR}"/build.log 2>&1 || return 1 fi ./configure \ diff --git a/scripts/android/gmp.sh b/scripts/android/gmp.sh index 4b1edd2..3cfc749 100755 --- a/scripts/android/gmp.sh +++ b/scripts/android/gmp.sh @@ -5,7 +5,7 @@ make distclean 2>/dev/null 1>/dev/null # REGENERATE BUILD FILES IF NECESSARY OR REQUESTED if [[ ! -f "${BASEDIR}"/src/"${LIB_NAME}"/configure ]] || [[ ${RECONF_gmp} -eq 1 ]]; then - autoreconf_library "${LIB_NAME}" 1>>"${BASEDIR}"/build.log 2>&1 || exit 1 + autoreconf_library "${LIB_NAME}" 1>>"${BASEDIR}"/build.log 2>&1 || return 1 fi ./configure \ diff --git a/scripts/android/harfbuzz.sh b/scripts/android/harfbuzz.sh index 7955637..f739d4f 100755 --- a/scripts/android/harfbuzz.sh +++ b/scripts/android/harfbuzz.sh @@ -5,7 +5,7 @@ make distclean 2>/dev/null 1>/dev/null # REGENERATE BUILD FILES IF NECESSARY OR REQUESTED if [[ ! -f "${BASEDIR}"/src/"${LIB_NAME}"/configure ]] || [[ ${RECONF_harfbuzz} -eq 1 ]]; then - NOCONFIGURE=1 ./autogen.sh || exit 1 + NOCONFIGURE=1 ./autogen.sh || return 1 fi ./configure \ diff --git a/scripts/android/kvazaar.sh b/scripts/android/kvazaar.sh index 5793862..f668c43 100755 --- a/scripts/android/kvazaar.sh +++ b/scripts/android/kvazaar.sh @@ -5,7 +5,7 @@ make distclean 2>/dev/null 1>/dev/null # REGENERATE BUILD FILES IF NECESSARY OR REQUESTED if [[ ! -f "${BASEDIR}"/src/"${LIB_NAME}"/configure ]] || [[ ${RECONF_kvazaar} -eq 1 ]]; then - autoreconf_library "${LIB_NAME}" 1>>"${BASEDIR}"/build.log 2>&1 || exit 1 + autoreconf_library "${LIB_NAME}" 1>>"${BASEDIR}"/build.log 2>&1 || return 1 fi # UPDATE BUILD FLAGS diff --git a/scripts/android/lame.sh b/scripts/android/lame.sh index 5352851..35b896a 100755 --- a/scripts/android/lame.sh +++ b/scripts/android/lame.sh @@ -7,7 +7,7 @@ make distclean 2>/dev/null 1>/dev/null # REGENERATE BUILD FILES IF NECESSARY OR REQUESTED if [[ ! -f "${BASEDIR}"/src/"${LIB_NAME}"/configure ]] || [[ ${RECONF_lame} -eq 1 ]]; then - autoreconf_library "${LIB_NAME}" 1>>"${BASEDIR}"/build.log 2>&1 || exit 1 + autoreconf_library "${LIB_NAME}" 1>>"${BASEDIR}"/build.log 2>&1 || return 1 fi ./configure \ diff --git a/scripts/android/leptonica.sh b/scripts/android/leptonica.sh index 610f59d..95301b0 100755 --- a/scripts/android/leptonica.sh +++ b/scripts/android/leptonica.sh @@ -23,7 +23,7 @@ make distclean 2>/dev/null 1>/dev/null # REGENERATE BUILD FILES IF NECESSARY OR REQUESTED if [[ ! -f "${BASEDIR}"/src/"${LIB_NAME}"/configure ]] || [[ ${RECONF_leptonica} -eq 1 ]]; then - autoreconf_library "${LIB_NAME}" 1>>"${BASEDIR}"/build.log 2>&1 || exit 1 + autoreconf_library "${LIB_NAME}" 1>>"${BASEDIR}"/build.log 2>&1 || return 1 fi ./configure \ diff --git a/scripts/android/libaom.sh b/scripts/android/libaom.sh index ae5a4d0..6078f97 100755 --- a/scripts/android/libaom.sh +++ b/scripts/android/libaom.sh @@ -56,4 +56,4 @@ make -j$(get_cpu_count) || return 1 make install || return 1 # CREATE PACKAGE CONFIG MANUALLY -create_libaom_package_config "3.1.2" || return 1 +create_libaom_package_config "3.2.0" || return 1 diff --git a/scripts/android/libass.sh b/scripts/android/libass.sh index 02e5c14..648d589 100755 --- a/scripts/android/libass.sh +++ b/scripts/android/libass.sh @@ -19,7 +19,7 @@ make distclean 2>/dev/null 1>/dev/null # REGENERATE BUILD FILES IF NECESSARY OR REQUESTED if [[ ! -f "${BASEDIR}"/src/"${LIB_NAME}"/configure ]] || [[ ${RECONF_libass} -eq 1 ]]; then - autoreconf_library "${LIB_NAME}" 1>>"${BASEDIR}"/build.log 2>&1 || exit 1 + autoreconf_library "${LIB_NAME}" 1>>"${BASEDIR}"/build.log 2>&1 || return 1 fi ./configure \ diff --git a/scripts/android/libiconv.sh b/scripts/android/libiconv.sh index db36b77..a4dd556 100755 --- a/scripts/android/libiconv.sh +++ b/scripts/android/libiconv.sh @@ -8,7 +8,7 @@ make distclean 2>/dev/null 1>/dev/null # REGENERATE BUILD FILES IF NECESSARY OR REQUESTED if [[ ! -f "${BASEDIR}"/src/"${LIB_NAME}"/configure ]] || [[ ${RECONF_libiconv} -eq 1 ]]; then - autoreconf_library "${LIB_NAME}" 1>>"${BASEDIR}"/build.log 2>&1 || exit 1 + autoreconf_library "${LIB_NAME}" 1>>"${BASEDIR}"/build.log 2>&1 || return 1 fi ./configure \ diff --git a/scripts/android/libilbc.sh b/scripts/android/libilbc.sh index f1361d7..c2c14ef 100755 --- a/scripts/android/libilbc.sh +++ b/scripts/android/libilbc.sh @@ -5,7 +5,7 @@ make distclean 2>/dev/null 1>/dev/null # REGENERATE BUILD FILES IF NECESSARY OR REQUESTED if [[ ! -f "${BASEDIR}"/src/"${LIB_NAME}"/configure ]] || [[ ${RECONF_libilbc} -eq 1 ]]; then - autoreconf_library "${LIB_NAME}" 1>>"${BASEDIR}"/build.log 2>&1 || exit 1 + autoreconf_library "${LIB_NAME}" 1>>"${BASEDIR}"/build.log 2>&1 || return 1 fi ./configure \ diff --git a/scripts/android/libogg.sh b/scripts/android/libogg.sh index ec9816e..c44ff2b 100755 --- a/scripts/android/libogg.sh +++ b/scripts/android/libogg.sh @@ -5,7 +5,7 @@ make distclean 2>/dev/null 1>/dev/null # REGENERATE BUILD FILES IF NECESSARY OR REQUESTED if [[ ! -f "${BASEDIR}"/src/"${LIB_NAME}"/configure ]] || [[ ${RECONF_libogg} -eq 1 ]]; then - autoreconf_library "${LIB_NAME}" 1>>"${BASEDIR}"/build.log 2>&1 || exit 1 + autoreconf_library "${LIB_NAME}" 1>>"${BASEDIR}"/build.log 2>&1 || return 1 fi ./configure \ diff --git a/scripts/android/libpng.sh b/scripts/android/libpng.sh index c1f1509..af42569 100755 --- a/scripts/android/libpng.sh +++ b/scripts/android/libpng.sh @@ -22,7 +22,7 @@ make distclean 2>/dev/null 1>/dev/null # REGENERATE BUILD FILES IF NECESSARY OR REQUESTED if [[ ! -f "${BASEDIR}"/src/"${LIB_NAME}"/configure ]] || [[ ${RECONF_libpng} -eq 1 ]]; then - autoreconf_library "${LIB_NAME}" 1>>"${BASEDIR}"/build.log 2>&1 || exit 1 + autoreconf_library "${LIB_NAME}" 1>>"${BASEDIR}"/build.log 2>&1 || return 1 fi ./configure \ diff --git a/scripts/android/libsamplerate.sh b/scripts/android/libsamplerate.sh index 3609c3f..f527814 100755 --- a/scripts/android/libsamplerate.sh +++ b/scripts/android/libsamplerate.sh @@ -5,7 +5,7 @@ make distclean 2>/dev/null 1>/dev/null # REGENERATE BUILD FILES IF NECESSARY OR REQUESTED if [[ ! -f "${BASEDIR}"/src/"${LIB_NAME}"/configure ]] || [[ ${RECONF_libsamplerate} -eq 1 ]]; then - autoreconf_library "${LIB_NAME}" 1>>"${BASEDIR}"/build.log 2>&1 || exit 1 + autoreconf_library "${LIB_NAME}" 1>>"${BASEDIR}"/build.log 2>&1 || return 1 fi ./configure \ diff --git a/scripts/android/libsndfile.sh b/scripts/android/libsndfile.sh index 2508a08..9fa645e 100755 --- a/scripts/android/libsndfile.sh +++ b/scripts/android/libsndfile.sh @@ -5,7 +5,7 @@ make distclean 2>/dev/null 1>/dev/null # REGENERATE BUILD FILES IF NECESSARY OR REQUESTED if [[ ! -f "${BASEDIR}"/src/"${LIB_NAME}"/configure ]] || [[ ${RECONF_libsndfile} -eq 1 ]]; then - autoreconf_library "${LIB_NAME}" 1>>"${BASEDIR}"/build.log 2>&1 || exit 1 + autoreconf_library "${LIB_NAME}" 1>>"${BASEDIR}"/build.log 2>&1 || return 1 fi ./configure \ diff --git a/scripts/android/libtheora.sh b/scripts/android/libtheora.sh index a28053b..c84f049 100755 --- a/scripts/android/libtheora.sh +++ b/scripts/android/libtheora.sh @@ -16,7 +16,7 @@ if [[ ! -f "${BASEDIR}"/src/"${LIB_NAME}"/configure ]] || [[ ${RECONF_libtheora} # WORKAROUND NOT TO RUN CONFIGURE AT THE END OF autogen.sh ${SED_INLINE} 's/$srcdir\/configure/#$srcdir\/configure/g' "${BASEDIR}"/src/"${LIB_NAME}"/autogen.sh || return 1 - ./autogen.sh || exit 1 + ./autogen.sh || return 1 fi ./configure \ diff --git a/scripts/android/libuuid.sh b/scripts/android/libuuid.sh index 94e1429..ad5c983 100755 --- a/scripts/android/libuuid.sh +++ b/scripts/android/libuuid.sh @@ -5,7 +5,7 @@ make distclean 2>/dev/null 1>/dev/null # REGENERATE BUILD FILES IF NECESSARY OR REQUESTED if [[ ! -f "${BASEDIR}"/src/"${LIB_NAME}"/configure ]] || [[ ${RECONF_libuuid} -eq 1 ]]; then - autoreconf_library "${LIB_NAME}" 1>>"${BASEDIR}"/build.log 2>&1 || exit 1 + autoreconf_library "${LIB_NAME}" 1>>"${BASEDIR}"/build.log 2>&1 || return 1 fi ./configure \ diff --git a/scripts/android/libvidstab.sh b/scripts/android/libvidstab.sh index b82c06c..8803af9 100755 --- a/scripts/android/libvidstab.sh +++ b/scripts/android/libvidstab.sh @@ -15,7 +15,7 @@ mkdir -p "${BUILD_DIR}" || return 1 cd "${BUILD_DIR}" || return 1 # WORKAROUND TO DETECT ASM FLAGS PROPERLY -${SED_INLINE} 's/ ${CPUINFO}/ "${CPUINFO}"/g' "${BASEDIR}"/src/"${LIB_NAME}"/CMakeModules/FindSSE.cmake 1>>"${BASEDIR}"/build.log 2>&1 || exit 1 +${SED_INLINE} 's/ ${CPUINFO}/ "${CPUINFO}"/g' "${BASEDIR}"/src/"${LIB_NAME}"/CMakeModules/FindSSE.cmake 1>>"${BASEDIR}"/build.log 2>&1 || return 1 cmake -Wno-dev \ -DCMAKE_VERBOSE_MAKEFILE=0 \ diff --git a/scripts/android/libvorbis.sh b/scripts/android/libvorbis.sh index 6f0d87b..4e6c8fd 100755 --- a/scripts/android/libvorbis.sh +++ b/scripts/android/libvorbis.sh @@ -9,7 +9,7 @@ if [[ ! -f "${BASEDIR}"/src/"${LIB_NAME}"/configure ]] || [[ ${RECONF_libvorbis} # -mno-ieee-fp OPTION IS NOT COMPATIBLE WITH clang. REMOVING IT ${SED_INLINE} 's/\-mno-ieee-fp//g' "${BASEDIR}"/src/"${LIB_NAME}"/configure.ac || return 1 - autoreconf_library "${LIB_NAME}" 1>>"${BASEDIR}"/build.log 2>&1 || exit 1 + autoreconf_library "${LIB_NAME}" 1>>"${BASEDIR}"/build.log 2>&1 || return 1 fi PKG_CONFIG= ./configure \ diff --git a/scripts/android/libwebp.sh b/scripts/android/libwebp.sh index 183fb63..0df1311 100755 --- a/scripts/android/libwebp.sh +++ b/scripts/android/libwebp.sh @@ -19,7 +19,7 @@ make distclean 2>/dev/null 1>/dev/null # REGENERATE BUILD FILES IF NECESSARY OR REQUESTED if [[ ! -f "${BASEDIR}"/src/"${LIB_NAME}"/configure ]] || [[ ${RECONF_libwebp} -eq 1 ]]; then - autoreconf_library "${LIB_NAME}" 1>>"${BASEDIR}"/build.log 2>&1 || exit 1 + autoreconf_library "${LIB_NAME}" 1>>"${BASEDIR}"/build.log 2>&1 || return 1 fi ./configure \ diff --git a/scripts/android/libxml2.sh b/scripts/android/libxml2.sh index 2007321..eaa497c 100755 --- a/scripts/android/libxml2.sh +++ b/scripts/android/libxml2.sh @@ -11,7 +11,7 @@ make distclean 2>/dev/null 1>/dev/null # REGENERATE BUILD FILES IF NECESSARY OR REQUESTED if [[ ! -f "${BASEDIR}"/src/"${LIB_NAME}"/configure ]] || [[ ${RECONF_libxml2} -eq 1 ]]; then - autoreconf_library "${LIB_NAME}" 1>>"${BASEDIR}"/build.log 2>&1 || exit 1 + autoreconf_library "${LIB_NAME}" 1>>"${BASEDIR}"/build.log 2>&1 || return 1 fi ./configure \ diff --git a/scripts/android/nettle.sh b/scripts/android/nettle.sh index 1061111..8461116 100755 --- a/scripts/android/nettle.sh +++ b/scripts/android/nettle.sh @@ -20,7 +20,7 @@ if [[ ! -f "${BASEDIR}"/src/"${LIB_NAME}"/configure ]] || [[ ${RECONF_nettle} -e # WORKAROUND TO FIX BUILD SYSTEM COMPILER ON macOS overwrite_file "${BASEDIR}"/tools/patch/make/nettle/aclocal.m4 "${BASEDIR}"/src/"${LIB_NAME}"/aclocal.m4 - autoreconf_library "${LIB_NAME}" 1>>"${BASEDIR}"/build.log 2>&1 || exit 1 + autoreconf_library "${LIB_NAME}" 1>>"${BASEDIR}"/build.log 2>&1 || return 1 fi ./configure \ diff --git a/scripts/android/opencore-amr.sh b/scripts/android/opencore-amr.sh index 3d4b863..99fe14a 100755 --- a/scripts/android/opencore-amr.sh +++ b/scripts/android/opencore-amr.sh @@ -5,7 +5,7 @@ make distclean 2>/dev/null 1>/dev/null # REGENERATE BUILD FILES IF NECESSARY OR REQUESTED if [[ ! -f "${BASEDIR}"/src/"${LIB_NAME}"/configure ]] || [[ ${RECONF_opencore_amr} -eq 1 ]]; then - autoreconf_library "${LIB_NAME}" 1>>"${BASEDIR}"/build.log 2>&1 || exit 1 + autoreconf_library "${LIB_NAME}" 1>>"${BASEDIR}"/build.log 2>&1 || return 1 fi ./configure \ diff --git a/scripts/android/openssl.sh b/scripts/android/openssl.sh index 1179a21..76eb706 100644 --- a/scripts/android/openssl.sh +++ b/scripts/android/openssl.sh @@ -29,7 +29,7 @@ make distclean 2>/dev/null 1>/dev/null # REGENERATE BUILD FILES IF NECESSARY OR REQUESTED if [[ ! -f "${BASEDIR}"/src/"${LIB_NAME}"/configure ]] || [[ ${RECONF_openssl} -eq 1 ]]; then - autoreconf_library "${LIB_NAME}" 1>>"${BASEDIR}"/build.log 2>&1 || exit 1 + autoreconf_library "${LIB_NAME}" 1>>"${BASEDIR}"/build.log 2>&1 || return 1 fi INT128_AVAILABLE=$($CC -dM -E - >"${BASEDIR}"/build.log | grep __SIZEOF_INT128__) diff --git a/scripts/android/opus.sh b/scripts/android/opus.sh index 89e14b7..ea1d22f 100755 --- a/scripts/android/opus.sh +++ b/scripts/android/opus.sh @@ -5,7 +5,7 @@ make distclean 2>/dev/null 1>/dev/null # REGENERATE BUILD FILES IF NECESSARY OR REQUESTED if [[ ! -f "${BASEDIR}"/src/"${LIB_NAME}"/configure ]] || [[ ${RECONF_opus} -eq 1 ]]; then - autoreconf_library "${LIB_NAME}" 1>>"${BASEDIR}"/build.log 2>&1 || exit 1 + autoreconf_library "${LIB_NAME}" 1>>"${BASEDIR}"/build.log 2>&1 || return 1 fi ./configure \ diff --git a/scripts/android/rubberband.sh b/scripts/android/rubberband.sh index b4dde77..77040ce 100755 --- a/scripts/android/rubberband.sh +++ b/scripts/android/rubberband.sh @@ -12,7 +12,7 @@ overwrite_file "${BASEDIR}"/tools/patch/make/rubberband/rubberband.pc.in "${BASE ${SED_INLINE} 's/%DEPENDENCIES%/sndfile, samplerate/g' "${BASEDIR}"/src/"${LIB_NAME}"/rubberband.pc.in || return 1 # ALWAYS REGENERATE BUILD FILES - NECESSARY TO APPLY THE WORKAROUNDS -autoreconf_library "${LIB_NAME}" 1>>"${BASEDIR}"/build.log 2>&1 || exit 1 +autoreconf_library "${LIB_NAME}" 1>>"${BASEDIR}"/build.log 2>&1 || return 1 ./configure \ --prefix="${LIB_INSTALL_PREFIX}" \ diff --git a/scripts/android/sdl.sh b/scripts/android/sdl.sh index 4a728b0..6022ab1 100755 --- a/scripts/android/sdl.sh +++ b/scripts/android/sdl.sh @@ -5,7 +5,7 @@ make distclean 2>/dev/null 1>/dev/null # REGENERATE BUILD FILES IF NECESSARY OR REQUESTED if [[ ! -f "${BASEDIR}"/src/"${LIB_NAME}"/configure ]] || [[ ${RECONF_sdl} -eq 1 ]]; then - autoreconf_library "${LIB_NAME}" 1>>"${BASEDIR}"/build.log 2>&1 || exit 1 + autoreconf_library "${LIB_NAME}" 1>>"${BASEDIR}"/build.log 2>&1 || return 1 fi ./configure \ diff --git a/scripts/android/shine.sh b/scripts/android/shine.sh index 5be2f29..7b0087c 100755 --- a/scripts/android/shine.sh +++ b/scripts/android/shine.sh @@ -5,7 +5,7 @@ make distclean 2>/dev/null 1>/dev/null # REGENERATE BUILD FILES IF NECESSARY OR REQUESTED if [[ ! -f "${BASEDIR}"/src/"${LIB_NAME}"/configure ]] || [[ ${RECONF_shine} -eq 1 ]]; then - autoreconf_library "${LIB_NAME}" 1>>"${BASEDIR}"/build.log 2>&1 || exit 1 + autoreconf_library "${LIB_NAME}" 1>>"${BASEDIR}"/build.log 2>&1 || return 1 fi ./configure \ diff --git a/scripts/android/speex.sh b/scripts/android/speex.sh index 3187784..8c60cc3 100755 --- a/scripts/android/speex.sh +++ b/scripts/android/speex.sh @@ -13,7 +13,7 @@ make distclean 2>/dev/null 1>/dev/null # REGENERATE BUILD FILES IF NECESSARY OR REQUESTED if [[ ! -f "${BASEDIR}"/src/"${LIB_NAME}"/configure ]] || [[ ${RECONF_soxr} -eq 1 ]]; then - autoreconf_library "${LIB_NAME}" 1>>"${BASEDIR}"/build.log 2>&1 || exit 1 + autoreconf_library "${LIB_NAME}" 1>>"${BASEDIR}"/build.log 2>&1 || return 1 fi ./configure \ diff --git a/scripts/android/tesseract.sh b/scripts/android/tesseract.sh index c96c8ba..a99ec0f 100755 --- a/scripts/android/tesseract.sh +++ b/scripts/android/tesseract.sh @@ -9,7 +9,7 @@ make distclean 2>/dev/null 1>/dev/null # REGENERATE BUILD FILES IF NECESSARY OR REQUESTED if [[ ! -f "${BASEDIR}"/src/"${LIB_NAME}"/configure ]] || [[ ${RECONF_tesseract} -eq 1 ]]; then - autoreconf_library "${LIB_NAME}" 1>>"${BASEDIR}"/build.log 2>&1 || exit 1 + autoreconf_library "${LIB_NAME}" 1>>"${BASEDIR}"/build.log 2>&1 || return 1 fi # WORKAROUND TO MANUALLY SET ENDIANNESS diff --git a/scripts/android/tiff.sh b/scripts/android/tiff.sh index beeaf13..b484450 100755 --- a/scripts/android/tiff.sh +++ b/scripts/android/tiff.sh @@ -5,7 +5,7 @@ make distclean 2>/dev/null 1>/dev/null # REGENERATE BUILD FILES IF NECESSARY OR REQUESTED if [[ ! -f "${BASEDIR}"/src/"${LIB_NAME}"/configure ]] || [[ ${RECONF_tiff} -eq 1 ]]; then - autoreconf_library "${LIB_NAME}" 1>>"${BASEDIR}"/build.log 2>&1 || exit 1 + autoreconf_library "${LIB_NAME}" 1>>"${BASEDIR}"/build.log 2>&1 || return 1 fi ./configure \ diff --git a/scripts/android/twolame.sh b/scripts/android/twolame.sh index 51c208d..8b6a340 100755 --- a/scripts/android/twolame.sh +++ b/scripts/android/twolame.sh @@ -9,7 +9,7 @@ make distclean 2>/dev/null 1>/dev/null # REGENERATE BUILD FILES IF NECESSARY OR REQUESTED if [[ ! -f "${BASEDIR}"/src/"${LIB_NAME}"/configure ]] || [[ ${RECONF_twolame} -eq 1 ]]; then - NOCONFIGURE=1 ./autogen.sh || exit 1 + NOCONFIGURE=1 ./autogen.sh || return 1 fi ./configure \ diff --git a/scripts/android/vo-amrwbenc.sh b/scripts/android/vo-amrwbenc.sh index 778af4e..914a793 100755 --- a/scripts/android/vo-amrwbenc.sh +++ b/scripts/android/vo-amrwbenc.sh @@ -13,7 +13,7 @@ make distclean 2>/dev/null 1>/dev/null # REGENERATE BUILD FILES IF NECESSARY OR REQUESTED if [[ ! -f "${BASEDIR}"/src/"${LIB_NAME}"/configure ]] || [[ ${RECONF_vo_amrwbenc} -eq 1 ]]; then - autoreconf_library "${LIB_NAME}" 1>>"${BASEDIR}"/build.log 2>&1 || exit 1 + autoreconf_library "${LIB_NAME}" 1>>"${BASEDIR}"/build.log 2>&1 || return 1 fi ./configure \ diff --git a/scripts/android/x264.sh b/scripts/android/x264.sh index 0e41ba0..7115e2a 100755 --- a/scripts/android/x264.sh +++ b/scripts/android/x264.sh @@ -28,7 +28,7 @@ make distclean 2>/dev/null 1>/dev/null # REGENERATE BUILD FILES IF NECESSARY OR REQUESTED if [[ ! -f "${BASEDIR}"/src/"${LIB_NAME}"/configure ]] || [[ ${RECONF_x264} -eq 1 ]]; then - autoreconf_library "${LIB_NAME}" 1>>"${BASEDIR}"/build.log 2>&1 || exit 1 + autoreconf_library "${LIB_NAME}" 1>>"${BASEDIR}"/build.log 2>&1 || return 1 fi ./configure \ diff --git a/scripts/android/zimg.sh b/scripts/android/zimg.sh index 08713d7..97b71b1 100644 --- a/scripts/android/zimg.sh +++ b/scripts/android/zimg.sh @@ -5,7 +5,7 @@ make distclean 2>/dev/null 1>/dev/null # REGENERATE BUILD FILES IF NECESSARY OR REQUESTED if [[ ! -f "${BASEDIR}"/src/"${LIB_NAME}"/configure ]] || [[ ${RECONF_zimg} -eq 1 ]]; then - autoreconf_library "${LIB_NAME}" 1>>"${BASEDIR}"/build.log 2>&1 || exit 1 + autoreconf_library "${LIB_NAME}" 1>>"${BASEDIR}"/build.log 2>&1 || return 1 fi ./configure \ diff --git a/scripts/apple/chromaprint.sh b/scripts/apple/chromaprint.sh index 808275d..9ecb96f 100755 --- a/scripts/apple/chromaprint.sh +++ b/scripts/apple/chromaprint.sh @@ -15,14 +15,16 @@ cmake -Wno-dev \ -DCMAKE_SYSTEM_NAME="${CMAKE_SYSTEM_NAME}" \ -DCMAKE_BUILD_TYPE=Release \ -DCMAKE_INSTALL_PREFIX="${LIB_INSTALL_PREFIX}" \ + -DCMAKE_CXX_COMPILER="$CXX" \ -DCMAKE_C_COMPILER="$CC" \ -DCMAKE_LINKER="$LD" \ -DCMAKE_AR="$(xcrun --sdk "$(get_sdk_name)" -f ar)" \ -DCMAKE_AS="$AS" \ -DFFT_LIB=kissfft \ - -DKISSFFT_SOURCE_DIR="${BASEDIR}"/src/"${LIB_NAME}"/vendor/kissfft \ + -DKISSFFT_SOURCE_DIR="${BASEDIR}"/src/"${LIB_NAME}"/src/3rdparty/kissfft \ -DCMAKE_SYSTEM_PROCESSOR="$(get_target_cpu)" \ - -DBUILD_SHARED_LIBS=0 "${BASEDIR}"/src/"${LIB_NAME}" || return 1 + -DBUILD_SHARED_LIBS=0 \ + -DBUILD_TESTS=0 "${BASEDIR}"/src/"${LIB_NAME}" || return 1 make -j$(get_cpu_count) || return 1 diff --git a/scripts/apple/expat.sh b/scripts/apple/expat.sh index d2b4a18..3d97a82 100755 --- a/scripts/apple/expat.sh +++ b/scripts/apple/expat.sh @@ -7,7 +7,7 @@ make distclean 2>/dev/null 1>/dev/null # REGENERATE BUILD FILES IF NECESSARY OR REQUESTED if [[ ! -f "${BASEDIR}"/src/"${LIB_NAME}"/"${LIB_NAME}"/configure ]] || [[ ${RECONF_expat} -eq 1 ]]; then - autoreconf_library "${LIB_NAME}" 1>>"${BASEDIR}"/build.log 2>&1 || exit 1 + autoreconf_library "${LIB_NAME}" 1>>"${BASEDIR}"/build.log 2>&1 || return 1 fi ./configure \ diff --git a/scripts/apple/ffmpeg-kit.sh b/scripts/apple/ffmpeg-kit.sh index 28a463f..96af136 100755 --- a/scripts/apple/ffmpeg-kit.sh +++ b/scripts/apple/ffmpeg-kit.sh @@ -1,7 +1,7 @@ #!/bin/bash # ENABLE COMMON FUNCTIONS -source "${BASEDIR}"/scripts/function-"${FFMPEG_KIT_BUILD_TYPE}".sh 1>>"${BASEDIR}"/build.log 2>&1 || exit 1 +source "${BASEDIR}"/scripts/function-"${FFMPEG_KIT_BUILD_TYPE}".sh 1>>"${BASEDIR}"/build.log 2>&1 || return 1 LIB_NAME="ffmpeg-kit" @@ -25,7 +25,7 @@ export CXXFLAGS=$(get_cxxflags ${LIB_NAME}) export LDFLAGS="$(get_ldflags ${LIB_NAME}) -F${LIB_INSTALL_BASE}/ffmpeg/framework -framework Foundation -framework CoreVideo -framework libavdevice" export PKG_CONFIG_LIBDIR="${INSTALL_PKG_CONFIG_DIR}" -cd "${BASEDIR}"/apple 1>>"${BASEDIR}"/build.log 2>&1 || exit 1 +cd "${BASEDIR}"/apple 1>>"${BASEDIR}"/build.log 2>&1 || return 1 # ALWAYS BUILD SHARED LIBRARIES BUILD_LIBRARY_OPTIONS="--enable-shared --disable-static" @@ -43,19 +43,19 @@ if [[ ${ENABLED_LIBRARIES[$LIBRARY_APPLE_VIDEOTOOLBOX]} -eq 1 ]]; then fi # ALWAYS REGENERATE BUILD FILES - NECESSARY TO APPLY THE WORKAROUNDS -autoreconf_library "${LIB_NAME}" 1>>"${BASEDIR}"/build.log 2>&1 || exit 1 +autoreconf_library "${LIB_NAME}" 1>>"${BASEDIR}"/build.log 2>&1 || return 1 # WORKAROUNDS if [[ ${FFMPEG_KIT_BUILD_TYPE} != "macos" ]]; then # REMOVE OPTIONS FROM CONFIGURE TO FIX THE FOLLOWING ERROR # ld: -flat_namespace and -bitcode_bundle (Xcode setting ENABLE_BITCODE=YES) cannot be used together - ${SED_INLINE} 's/$wl-flat_namespace //g' configure 1>>"${BASEDIR}"/build.log 2>&1 || exit 1 - ${SED_INLINE} 's/$wl-undefined //g' configure 1>>"${BASEDIR}"/build.log 2>&1 || exit 1 - ${SED_INLINE} 's/${wl}suppress//g' configure 1>>"${BASEDIR}"/build.log 2>&1 || exit 1 + ${SED_INLINE} 's/$wl-flat_namespace //g' configure 1>>"${BASEDIR}"/build.log 2>&1 || return 1 + ${SED_INLINE} 's/$wl-undefined //g' configure 1>>"${BASEDIR}"/build.log 2>&1 || return 1 + ${SED_INLINE} 's/${wl}suppress//g' configure 1>>"${BASEDIR}"/build.log 2>&1 || return 1 # ld: file not found: dynamic_lookup - ${SED_INLINE} 's/${wl}dynamic_lookup//g' configure 1>>"${BASEDIR}"/build.log 2>&1 || exit 1 + ${SED_INLINE} 's/${wl}dynamic_lookup//g' configure 1>>"${BASEDIR}"/build.log 2>&1 || return 1 fi ./configure \ @@ -79,7 +79,7 @@ fi # DELETE THE PREVIOUS BUILD OF THE LIBRARY if [ -d "${FFMPEG_KIT_LIBRARY_PATH}" ]; then - rm -rf "${FFMPEG_KIT_LIBRARY_PATH}" 1>>"${BASEDIR}"/build.log 2>&1 || exit 1 + rm -rf "${FFMPEG_KIT_LIBRARY_PATH}" 1>>"${BASEDIR}"/build.log 2>&1 || return 1 fi make -j$(get_cpu_count) 1>>"${BASEDIR}"/build.log 2>&1 diff --git a/scripts/apple/ffmpeg.sh b/scripts/apple/ffmpeg.sh index 6224fe9..7142f69 100755 --- a/scripts/apple/ffmpeg.sh +++ b/scripts/apple/ffmpeg.sh @@ -28,7 +28,7 @@ export CXXFLAGS=$(get_cxxflags "${LIB_NAME}") export LDFLAGS=$(get_ldflags "${LIB_NAME}") export PKG_CONFIG_LIBDIR="${INSTALL_PKG_CONFIG_DIR}" -cd "${BASEDIR}"/src/"${LIB_NAME}" 1>>"${BASEDIR}"/build.log 2>&1 || exit 1 +cd "${BASEDIR}"/src/"${LIB_NAME}" 1>>"${BASEDIR}"/build.log 2>&1 || return 1 # SET EXTRA BUILD FLAGS FFMPEG_CFLAGS="" @@ -471,21 +471,21 @@ git checkout libavformat/protocols.c 1>>"${BASEDIR}"/build.log 2>&1 git checkout libavutil 1>>"${BASEDIR}"/build.log 2>&1 # 1. Workaround to prevent adding of -mdynamic-no-pic flag -${SED_INLINE} 's/check_cflags -mdynamic-no-pic && add_asflags -mdynamic-no-pic;/check_cflags -mdynamic-no-pic;/g' ./configure 1>>"${BASEDIR}"/build.log 2>&1 || exit 1 +${SED_INLINE} 's/check_cflags -mdynamic-no-pic && add_asflags -mdynamic-no-pic;/check_cflags -mdynamic-no-pic;/g' ./configure 1>>"${BASEDIR}"/build.log 2>&1 || return 1 # 2. Workaround for videotoolbox on mac catalyst if [[ ${ARCH} == *-mac-catalyst ]]; then - ${SED_INLINE} 's/ CFDictionarySetValue(buffer_attributes\, kCVPixelBufferOpenGLESCompatibilityKey/ \/\/ CFDictionarySetValue(buffer_attributes\, kCVPixelBufferOpenGLESCompatibilityKey/g' "${BASEDIR}"/src/${LIB_NAME}/libavcodec/videotoolbox.c || exit 1 + ${SED_INLINE} 's/ CFDictionarySetValue(buffer_attributes\, kCVPixelBufferOpenGLESCompatibilityKey/ \/\/ CFDictionarySetValue(buffer_attributes\, kCVPixelBufferOpenGLESCompatibilityKey/g' "${BASEDIR}"/src/${LIB_NAME}/libavcodec/videotoolbox.c || return 1 else - ${SED_INLINE} 's/ \/\/ CFDictionarySetValue(buffer_attributes\, kCVPixelBufferOpenGLESCompatibilityKey/ CFDictionarySetValue(buffer_attributes\, kCVPixelBufferOpenGLESCompatibilityKey/g' "${BASEDIR}"/src/${LIB_NAME}/libavcodec/videotoolbox.c || exit 1 + ${SED_INLINE} 's/ \/\/ CFDictionarySetValue(buffer_attributes\, kCVPixelBufferOpenGLESCompatibilityKey/ CFDictionarySetValue(buffer_attributes\, kCVPixelBufferOpenGLESCompatibilityKey/g' "${BASEDIR}"/src/${LIB_NAME}/libavcodec/videotoolbox.c || return 1 fi # 3. Use thread local log levels -${SED_INLINE} 's/static int av_log_level/__thread int av_log_level/g' "${BASEDIR}"/src/${LIB_NAME}/libavutil/log.c 1>>"${BASEDIR}"/build.log 2>&1 || exit 1 +${SED_INLINE} 's/static int av_log_level/__thread int av_log_level/g' "${BASEDIR}"/src/${LIB_NAME}/libavutil/log.c 1>>"${BASEDIR}"/build.log 2>&1 || return 1 # 4. Set friendly ffmpeg version FFMPEG_VERSION="v$(get_user_friendly_ffmpeg_version)" -${SED_INLINE} "s/\$version/$FFMPEG_VERSION/g" "${BASEDIR}"/src/"${LIB_NAME}"/ffbuild/version.sh 1>>"${BASEDIR}"/build.log 2>&1 || exit 1 +${SED_INLINE} "s/\$version/$FFMPEG_VERSION/g" "${BASEDIR}"/src/"${LIB_NAME}"/ffbuild/version.sh 1>>"${BASEDIR}"/build.log 2>&1 || return 1 ################################################################### @@ -580,14 +580,14 @@ install_ffmpeg() { # DELETE THE PREVIOUS BUILD if [ -d "${FFMPEG_LIBRARY_PATH}" ]; then - rm -rf "${FFMPEG_LIBRARY_PATH}" 1>>"${BASEDIR}"/build.log 2>&1 || exit 1 + rm -rf "${FFMPEG_LIBRARY_PATH}" 1>>"${BASEDIR}"/build.log 2>&1 || return 1 fi else # LEAVE EVERYTHING EXCEPT frameworks - rm -rf "${FFMPEG_LIBRARY_PATH}/include" 1>>"${BASEDIR}"/build.log 2>&1 || exit 1 - rm -rf "${FFMPEG_LIBRARY_PATH}/lib" 1>>"${BASEDIR}"/build.log 2>&1 || exit 1 - rm -rf "${FFMPEG_LIBRARY_PATH}/share" 1>>"${BASEDIR}"/build.log 2>&1 || exit 1 + rm -rf "${FFMPEG_LIBRARY_PATH}/include" 1>>"${BASEDIR}"/build.log 2>&1 || return 1 + rm -rf "${FFMPEG_LIBRARY_PATH}/lib" 1>>"${BASEDIR}"/build.log 2>&1 || return 1 + rm -rf "${FFMPEG_LIBRARY_PATH}/share" 1>>"${BASEDIR}"/build.log 2>&1 || return 1 fi make install 1>>"${BASEDIR}"/build.log 2>&1 @@ -597,7 +597,7 @@ install_ffmpeg() { fi } -${SED_INLINE} 's|$(SLIBNAME_WITH_MAJOR),|$(SLIBPREF)$(FULLNAME).framework/$(SLIBPREF)$(FULLNAME),|g' ${BASEDIR}/src/ffmpeg/ffbuild/config.mak 1>>"${BASEDIR}"/build.log 2>&1 || exit 1 +${SED_INLINE} 's|$(SLIBNAME_WITH_MAJOR),|$(SLIBPREF)$(FULLNAME).framework/$(SLIBPREF)$(FULLNAME),|g' ${BASEDIR}/src/ffmpeg/ffbuild/config.mak 1>>"${BASEDIR}"/build.log 2>&1 || return 1 # BUILD DYNAMIC LIBRARIES WITH DEFAULT OPTIONS build_ffmpeg @@ -610,8 +610,8 @@ echo -e "\nShared libraries built successfully. Building frameworks.\n" 1>>"${BA create_temporary_framework() { local FRAMEWORK_NAME="$1" - mkdir -p "${FFMPEG_LIBRARY_PATH}/framework/${FRAMEWORK_NAME}.framework" 1>>"${BASEDIR}"/build.log 2>&1 || exit 1 - cp "${FFMPEG_LIBRARY_PATH}/lib/${FRAMEWORK_NAME}.dylib" "${FFMPEG_LIBRARY_PATH}/framework/${FRAMEWORK_NAME}.framework/${FRAMEWORK_NAME}" 1>>"${BASEDIR}"/build.log 2>&1 || exit 1 + mkdir -p "${FFMPEG_LIBRARY_PATH}/framework/${FRAMEWORK_NAME}.framework" 1>>"${BASEDIR}"/build.log 2>&1 || return 1 + cp "${FFMPEG_LIBRARY_PATH}/lib/${FRAMEWORK_NAME}.dylib" "${FFMPEG_LIBRARY_PATH}/framework/${FRAMEWORK_NAME}.framework/${FRAMEWORK_NAME}" 1>>"${BASEDIR}"/build.log 2>&1 || return 1 } create_temporary_framework "libavcodec" @@ -622,10 +622,10 @@ create_temporary_framework "libavutil" create_temporary_framework "libswresample" create_temporary_framework "libswscale" -${SED_INLINE} 's|$(SLIBNAME_WITH_MAJOR),|$(SLIBPREF)$(FULLNAME).framework/$(SLIBPREF)$(FULLNAME),|g' ${BASEDIR}/src/ffmpeg/ffbuild/config.mak 1>>"${BASEDIR}"/build.log 2>&1 || exit 1 -${SED_INLINE} "s|^ALLFFLIBS = .*|ALLFFLIBS = ${FFMPEG_LIBRARY_PATH}/framework|g" ${BASEDIR}/src/ffmpeg/ffbuild/common.mak 1>>"${BASEDIR}"/build.log 2>&1 || exit 1 -${SED_INLINE} 's|$(LD_LIB)|-framework lib% |g' ${BASEDIR}/src/ffmpeg/ffbuild/common.mak 1>>"${BASEDIR}"/build.log 2>&1 || exit 1 -${SED_INLINE} 's|$(LD_PATH)lib|-F |g' ${BASEDIR}/src/ffmpeg/ffbuild/common.mak 1>>"${BASEDIR}"/build.log 2>&1 || exit 1 +${SED_INLINE} 's|$(SLIBNAME_WITH_MAJOR),|$(SLIBPREF)$(FULLNAME).framework/$(SLIBPREF)$(FULLNAME),|g' ${BASEDIR}/src/ffmpeg/ffbuild/config.mak 1>>"${BASEDIR}"/build.log 2>&1 || return 1 +${SED_INLINE} "s|^ALLFFLIBS = .*|ALLFFLIBS = ${FFMPEG_LIBRARY_PATH}/framework|g" ${BASEDIR}/src/ffmpeg/ffbuild/common.mak 1>>"${BASEDIR}"/build.log 2>&1 || return 1 +${SED_INLINE} 's|$(LD_LIB)|-framework lib% |g' ${BASEDIR}/src/ffmpeg/ffbuild/common.mak 1>>"${BASEDIR}"/build.log 2>&1 || return 1 +${SED_INLINE} 's|$(LD_PATH)lib|-F |g' ${BASEDIR}/src/ffmpeg/ffbuild/common.mak 1>>"${BASEDIR}"/build.log 2>&1 || return 1 # BUILD FRAMEWORKS AS DYNAMIC LIBRARIES build_ffmpeg diff --git a/scripts/apple/fontconfig.sh b/scripts/apple/fontconfig.sh index 3cbd24d..06dc1ee 100755 --- a/scripts/apple/fontconfig.sh +++ b/scripts/apple/fontconfig.sh @@ -3,9 +3,12 @@ # ALWAYS CLEAN THE PREVIOUS BUILD make distclean 2>/dev/null 1>/dev/null +# WORKAROUND FOR "bad flag in substitute command" +${SED_INLINE} "s|in \"\$default_fonts\"|in \$default_fonts|g" "${BASEDIR}"/src/"${LIB_NAME}"/configure.ac 1>>"${BASEDIR}"/build.log 2>&1 + # REGENERATE BUILD FILES IF NECESSARY OR REQUESTED if [[ ! -f "${BASEDIR}"/src/"${LIB_NAME}"/configure ]] || [[ ${RECONF_fontconfig} -eq 1 ]]; then - autoreconf_library "${LIB_NAME}" 1>>"${BASEDIR}"/build.log 2>&1 || exit 1 + autoreconf_library "${LIB_NAME}" 1>>"${BASEDIR}"/build.log 2>&1 || return 1 fi ./configure \ @@ -31,4 +34,4 @@ make -j$(get_cpu_count) || return 1 make install || return 1 # CREATE PACKAGE CONFIG MANUALLY -create_fontconfig_package_config "2.13.93" || return 1 +create_fontconfig_package_config "2.13.94" || return 1 diff --git a/scripts/apple/freetype.sh b/scripts/apple/freetype.sh index 88848a8..dc77a6d 100755 --- a/scripts/apple/freetype.sh +++ b/scripts/apple/freetype.sh @@ -11,7 +11,7 @@ make distclean 2>/dev/null 1>/dev/null if [[ ! -f "${BASEDIR}"/src/"${LIB_NAME}"/builds/unix/configure ]] || [[ ${RECONF_freetype} -eq 1 ]]; then # NOTE THAT FREETYPE DOES NOT SUPPORT AUTORECONF BUT IT COMES WITH AN autogen.sh - ./autogen.sh || exit 1 + ./autogen.sh || return 1 fi # UPDATE CONFIG FILES TO SUPPORT APPLE ARCHITECTURES @@ -41,4 +41,4 @@ make -j$(get_cpu_count) || return 1 make install || return 1 # CREATE PACKAGE CONFIG MANUALLY -create_freetype_package_config "24.0.18" || return 1 +create_freetype_package_config "24.1.18" || return 1 diff --git a/scripts/apple/fribidi.sh b/scripts/apple/fribidi.sh index 2ec2e83..abc51f8 100755 --- a/scripts/apple/fribidi.sh +++ b/scripts/apple/fribidi.sh @@ -5,7 +5,7 @@ make distclean 2>/dev/null 1>/dev/null # REGENERATE BUILD FILES IF NECESSARY OR REQUESTED if [[ ! -f "${BASEDIR}"/src/"${LIB_NAME}"/configure ]] || [[ ${RECONF_fribidi} -eq 1 ]]; then - autoreconf_library "${LIB_NAME}" 1>>"${BASEDIR}"/build.log 2>&1 || exit 1 + autoreconf_library "${LIB_NAME}" 1>>"${BASEDIR}"/build.log 2>&1 || return 1 fi ./configure \ diff --git a/scripts/apple/giflib.sh b/scripts/apple/giflib.sh index e8b474e..737f084 100755 --- a/scripts/apple/giflib.sh +++ b/scripts/apple/giflib.sh @@ -8,7 +8,7 @@ make distclean 2>/dev/null 1>/dev/null # REGENERATE BUILD FILES IF NECESSARY OR REQUESTED if [[ ! -f "${BASEDIR}"/src/"${LIB_NAME}"/configure ]] || [[ ${RECONF_giflib} -eq 1 ]]; then - autoreconf_library "${LIB_NAME}" 1>>"${BASEDIR}"/build.log 2>&1 || exit 1 + autoreconf_library "${LIB_NAME}" 1>>"${BASEDIR}"/build.log 2>&1 || return 1 fi ./configure \ diff --git a/scripts/apple/gmp.sh b/scripts/apple/gmp.sh index 053ce77..7efaf91 100755 --- a/scripts/apple/gmp.sh +++ b/scripts/apple/gmp.sh @@ -17,7 +17,7 @@ make distclean 2>/dev/null 1>/dev/null # REGENERATE BUILD FILES IF NECESSARY OR REQUESTED if [[ ! -f "${BASEDIR}"/src/"${LIB_NAME}"/configure ]] || [[ ${RECONF_gmp} -eq 1 ]]; then - autoreconf_library "${LIB_NAME}" 1>>"${BASEDIR}"/build.log 2>&1 || exit 1 + autoreconf_library "${LIB_NAME}" 1>>"${BASEDIR}"/build.log 2>&1 || return 1 fi # UPDATE CONFIG FILES TO SUPPORT APPLE ARCHITECTURES diff --git a/scripts/apple/harfbuzz.sh b/scripts/apple/harfbuzz.sh index 4b71744..07dba4c 100755 --- a/scripts/apple/harfbuzz.sh +++ b/scripts/apple/harfbuzz.sh @@ -5,7 +5,7 @@ make distclean 2>/dev/null 1>/dev/null # REGENERATE BUILD FILES IF NECESSARY OR REQUESTED if [[ ! -f "${BASEDIR}"/src/"${LIB_NAME}"/configure ]] || [[ ${RECONF_harfbuzz} -eq 1 ]]; then - NOCONFIGURE=1 ./autogen.sh || exit 1 + NOCONFIGURE=1 ./autogen.sh || return 1 fi ./configure \ diff --git a/scripts/apple/kvazaar.sh b/scripts/apple/kvazaar.sh index fefb229..0f905ac 100755 --- a/scripts/apple/kvazaar.sh +++ b/scripts/apple/kvazaar.sh @@ -16,7 +16,7 @@ make distclean 2>/dev/null 1>/dev/null # REGENERATE BUILD FILES IF NECESSARY OR REQUESTED if [[ ! -f "${BASEDIR}"/src/"${LIB_NAME}"/configure ]] || [[ ${RECONF_kvazaar} -eq 1 ]]; then - autoreconf_library "${LIB_NAME}" 1>>"${BASEDIR}"/build.log 2>&1 || exit 1 + autoreconf_library "${LIB_NAME}" 1>>"${BASEDIR}"/build.log 2>&1 || return 1 fi ./configure \ diff --git a/scripts/apple/lame.sh b/scripts/apple/lame.sh index a28e996..28bb2d2 100755 --- a/scripts/apple/lame.sh +++ b/scripts/apple/lame.sh @@ -7,7 +7,7 @@ make distclean 2>/dev/null 1>/dev/null # REGENERATE BUILD FILES IF NECESSARY OR REQUESTED if [[ ! -f "${BASEDIR}"/src/"${LIB_NAME}"/configure ]] || [[ ${RECONF_lame} -eq 1 ]]; then - autoreconf_library "${LIB_NAME}" 1>>"${BASEDIR}"/build.log 2>&1 || exit 1 + autoreconf_library "${LIB_NAME}" 1>>"${BASEDIR}"/build.log 2>&1 || return 1 fi ./configure \ diff --git a/scripts/apple/leptonica.sh b/scripts/apple/leptonica.sh index dbb1327..21d9eaa 100755 --- a/scripts/apple/leptonica.sh +++ b/scripts/apple/leptonica.sh @@ -27,7 +27,7 @@ make distclean 2>/dev/null 1>/dev/null # REGENERATE BUILD FILES IF NECESSARY OR REQUESTED if [[ ! -f "${BASEDIR}"/src/"${LIB_NAME}"/configure ]] || [[ ${RECONF_leptonica} -eq 1 ]]; then - autoreconf_library "${LIB_NAME}" 1>>"${BASEDIR}"/build.log 2>&1 || exit 1 + autoreconf_library "${LIB_NAME}" 1>>"${BASEDIR}"/build.log 2>&1 || return 1 fi ./configure \ diff --git a/scripts/apple/libass.sh b/scripts/apple/libass.sh index 53374c2..0a7daa2 100755 --- a/scripts/apple/libass.sh +++ b/scripts/apple/libass.sh @@ -13,7 +13,7 @@ make distclean 2>/dev/null 1>/dev/null # REGENERATE BUILD FILES IF NECESSARY OR REQUESTED if [[ ! -f "${BASEDIR}"/src/"${LIB_NAME}"/configure ]] || [[ ${RECONF_libass} -eq 1 ]]; then - autoreconf_library "${LIB_NAME}" 1>>"${BASEDIR}"/build.log 2>&1 || exit 1 + autoreconf_library "${LIB_NAME}" 1>>"${BASEDIR}"/build.log 2>&1 || return 1 fi ./configure \ diff --git a/scripts/apple/libilbc.sh b/scripts/apple/libilbc.sh index 98cc7cb..ee1792d 100755 --- a/scripts/apple/libilbc.sh +++ b/scripts/apple/libilbc.sh @@ -5,7 +5,7 @@ make distclean 2>/dev/null 1>/dev/null # REGENERATE BUILD FILES IF NECESSARY OR REQUESTED if [[ ! -f "${BASEDIR}"/src/"${LIB_NAME}"/configure ]] || [[ ${RECONF_libilbc} -eq 1 ]]; then - autoreconf_library "${LIB_NAME}" 1>>"${BASEDIR}"/build.log 2>&1 || exit 1 + autoreconf_library "${LIB_NAME}" 1>>"${BASEDIR}"/build.log 2>&1 || return 1 fi ./configure \ diff --git a/scripts/apple/libogg.sh b/scripts/apple/libogg.sh index 5154d6c..13f0051 100755 --- a/scripts/apple/libogg.sh +++ b/scripts/apple/libogg.sh @@ -5,7 +5,7 @@ make distclean 2>/dev/null 1>/dev/null # REGENERATE BUILD FILES IF NECESSARY OR REQUESTED if [[ ! -f "${BASEDIR}"/src/"${LIB_NAME}"/configure ]] || [[ ${RECONF_libogg} -eq 1 ]]; then - autoreconf_library "${LIB_NAME}" 1>>"${BASEDIR}"/build.log 2>&1 || exit 1 + autoreconf_library "${LIB_NAME}" 1>>"${BASEDIR}"/build.log 2>&1 || return 1 fi # FIX INCLUDE PATHS diff --git a/scripts/apple/libpng.sh b/scripts/apple/libpng.sh index 0035ed8..149632c 100755 --- a/scripts/apple/libpng.sh +++ b/scripts/apple/libpng.sh @@ -21,7 +21,7 @@ if [[ ! -f "${BASEDIR}"/src/"${LIB_NAME}"/configure ]] || [[ ${RECONF_libpng} -e overwrite_file "${FFMPEG_KIT_TMPDIR}"/source/config/config.guess "${BASEDIR}"/src/"${LIB_NAME}"/config.guess || return 1 overwrite_file "${FFMPEG_KIT_TMPDIR}"/source/config/config.sub "${BASEDIR}"/src/"${LIB_NAME}"/config.sub || return 1 - autoreconf_library "${LIB_NAME}" 1>>"${BASEDIR}"/build.log 2>&1 || exit 1 + autoreconf_library "${LIB_NAME}" 1>>"${BASEDIR}"/build.log 2>&1 || return 1 fi ./configure \ diff --git a/scripts/apple/libsamplerate.sh b/scripts/apple/libsamplerate.sh index 3f7f843..f3c73ee 100755 --- a/scripts/apple/libsamplerate.sh +++ b/scripts/apple/libsamplerate.sh @@ -5,7 +5,7 @@ make distclean 2>/dev/null 1>/dev/null # REGENERATE BUILD FILES IF NECESSARY OR REQUESTED if [[ ! -f "${BASEDIR}"/src/"${LIB_NAME}"/configure ]] || [[ ${RECONF_libsamplerate} -eq 1 ]]; then - autoreconf_library "${LIB_NAME}" 1>>"${BASEDIR}"/build.log 2>&1 || exit 1 + autoreconf_library "${LIB_NAME}" 1>>"${BASEDIR}"/build.log 2>&1 || return 1 fi ./configure \ diff --git a/scripts/apple/libsndfile.sh b/scripts/apple/libsndfile.sh index 3fe0675..a7ce0af 100755 --- a/scripts/apple/libsndfile.sh +++ b/scripts/apple/libsndfile.sh @@ -5,7 +5,7 @@ make distclean 2>/dev/null 1>/dev/null # REGENERATE BUILD FILES IF NECESSARY OR REQUESTED if [[ ! -f "${BASEDIR}"/src/"${LIB_NAME}"/configure ]] || [[ ${RECONF_libsndfile} -eq 1 ]]; then - autoreconf_library "${LIB_NAME}" 1>>"${BASEDIR}"/build.log 2>&1 || exit 1 + autoreconf_library "${LIB_NAME}" 1>>"${BASEDIR}"/build.log 2>&1 || return 1 fi ./configure \ diff --git a/scripts/apple/libtheora.sh b/scripts/apple/libtheora.sh index fe822f3..84696bb 100755 --- a/scripts/apple/libtheora.sh +++ b/scripts/apple/libtheora.sh @@ -9,7 +9,7 @@ if [[ ! -f "${BASEDIR}"/src/"${LIB_NAME}"/configure ]] || [[ ${RECONF_libtheora} # WORKAROUND NOT TO RUN CONFIGURE AT THE END OF autogen.sh ${SED_INLINE} 's/$srcdir\/configure/#$srcdir\/configure/g' "${BASEDIR}"/src/"${LIB_NAME}"/autogen.sh || return 1 - ./autogen.sh || exit 1 + ./autogen.sh || return 1 fi ./configure \ diff --git a/scripts/apple/libvidstab.sh b/scripts/apple/libvidstab.sh index 8668111..305fea7 100755 --- a/scripts/apple/libvidstab.sh +++ b/scripts/apple/libvidstab.sh @@ -15,7 +15,7 @@ mkdir -p "${BUILD_DIR}" || return 1 cd "${BUILD_DIR}" || return 1 # WORKAROUND TO DETECT ASM FLAGS PROPERLY -${SED_INLINE} 's/ ${CPUINFO}/ "${CPUINFO}"/g' "${BASEDIR}"/src/"${LIB_NAME}"/CMakeModules/FindSSE.cmake 1>>"${BASEDIR}"/build.log 2>&1 || exit 1 +${SED_INLINE} 's/ ${CPUINFO}/ "${CPUINFO}"/g' "${BASEDIR}"/src/"${LIB_NAME}"/CMakeModules/FindSSE.cmake 1>>"${BASEDIR}"/build.log 2>&1 || return 1 cmake -Wno-dev \ -DCMAKE_VERBOSE_MAKEFILE=0 \ diff --git a/scripts/apple/libvorbis.sh b/scripts/apple/libvorbis.sh index 4feee40..00dbee7 100755 --- a/scripts/apple/libvorbis.sh +++ b/scripts/apple/libvorbis.sh @@ -8,7 +8,7 @@ make distclean 2>/dev/null 1>/dev/null ${SED_INLINE} 's/\-mno-ieee-fp//g' "${BASEDIR}"/src/"${LIB_NAME}"/configure.ac || return 1 # ALWAYS REGENERATE BUILD FILES - NECESSARY TO APPLY THE WORKAROUNDS -autoreconf_library "${LIB_NAME}" 1>>"${BASEDIR}"/build.log 2>&1 || exit 1 +autoreconf_library "${LIB_NAME}" 1>>"${BASEDIR}"/build.log 2>&1 || return 1 if [[ ${FFMPEG_KIT_BUILD_TYPE} != "macos" ]]; then diff --git a/scripts/apple/libwebp.sh b/scripts/apple/libwebp.sh index 9ead71d..b5b9b1b 100755 --- a/scripts/apple/libwebp.sh +++ b/scripts/apple/libwebp.sh @@ -19,7 +19,7 @@ make distclean 2>/dev/null 1>/dev/null # REGENERATE BUILD FILES IF NECESSARY OR REQUESTED if [[ ! -f "${BASEDIR}"/src/"${LIB_NAME}"/configure ]] || [[ ${RECONF_libwebp} -eq 1 ]]; then - autoreconf_library "${LIB_NAME}" 1>>"${BASEDIR}"/build.log 2>&1 || exit 1 + autoreconf_library "${LIB_NAME}" 1>>"${BASEDIR}"/build.log 2>&1 || return 1 fi ./configure \ diff --git a/scripts/apple/libxml2.sh b/scripts/apple/libxml2.sh index 6a5401c..a4c4065 100755 --- a/scripts/apple/libxml2.sh +++ b/scripts/apple/libxml2.sh @@ -5,7 +5,7 @@ make distclean 2>/dev/null 1>/dev/null # REGENERATE BUILD FILES IF NECESSARY OR REQUESTED if [[ ! -f "${BASEDIR}"/src/"${LIB_NAME}"/configure ]] || [[ ${RECONF_libxml2} -eq 1 ]]; then - autoreconf_library "${LIB_NAME}" 1>>"${BASEDIR}"/build.log 2>&1 || exit 1 + autoreconf_library "${LIB_NAME}" 1>>"${BASEDIR}"/build.log 2>&1 || return 1 fi ./configure \ diff --git a/scripts/apple/nettle.sh b/scripts/apple/nettle.sh index 0abe399..449619c 100755 --- a/scripts/apple/nettle.sh +++ b/scripts/apple/nettle.sh @@ -20,7 +20,7 @@ if [[ ! -f "${BASEDIR}"/src/"${LIB_NAME}"/configure ]] || [[ ${RECONF_nettle} -e # WORKAROUND TO FIX BUILD SYSTEM COMPILER ON macOS overwrite_file "${BASEDIR}"/tools/patch/make/nettle/aclocal.m4 "${BASEDIR}"/src/"${LIB_NAME}"/aclocal.m4 - autoreconf_library "${LIB_NAME}" 1>>"${BASEDIR}"/build.log 2>&1 || exit 1 + autoreconf_library "${LIB_NAME}" 1>>"${BASEDIR}"/build.log 2>&1 || return 1 fi # UPDATE CONFIG FILES TO SUPPORT APPLE ARCHITECTURES diff --git a/scripts/apple/opencore-amr.sh b/scripts/apple/opencore-amr.sh index b110ec5..e51503f 100755 --- a/scripts/apple/opencore-amr.sh +++ b/scripts/apple/opencore-amr.sh @@ -18,7 +18,7 @@ make distclean 2>/dev/null 1>/dev/null # REGENERATE BUILD FILES IF NECESSARY OR REQUESTED if [[ ! -f "${BASEDIR}"/src/"${LIB_NAME}"/configure ]] || [[ ${RECONF_opencore_amr} -eq 1 ]]; then - autoreconf_library "${LIB_NAME}" 1>>"${BASEDIR}"/build.log 2>&1 || exit 1 + autoreconf_library "${LIB_NAME}" 1>>"${BASEDIR}"/build.log 2>&1 || return 1 fi ./configure \ diff --git a/scripts/apple/openssl.sh b/scripts/apple/openssl.sh index 68d78dc..1043c3d 100644 --- a/scripts/apple/openssl.sh +++ b/scripts/apple/openssl.sh @@ -23,7 +23,7 @@ make distclean 2>/dev/null 1>/dev/null # REGENERATE BUILD FILES IF NECESSARY OR REQUESTED if [[ ! -f "${BASEDIR}"/src/"${LIB_NAME}"/configure ]] || [[ ${RECONF_openssl} -eq 1 ]]; then - autoreconf_library "${LIB_NAME}" 1>>"${BASEDIR}"/build.log 2>&1 || exit 1 + autoreconf_library "${LIB_NAME}" 1>>"${BASEDIR}"/build.log 2>&1 || return 1 fi INT128_AVAILABLE=$($CC -dM -E - >"${BASEDIR}"/build.log | grep __SIZEOF_INT128__) diff --git a/scripts/apple/opus.sh b/scripts/apple/opus.sh index faa1ad1..64884a4 100755 --- a/scripts/apple/opus.sh +++ b/scripts/apple/opus.sh @@ -5,7 +5,7 @@ make distclean 2>/dev/null 1>/dev/null # REGENERATE BUILD FILES IF NECESSARY OR REQUESTED if [[ ! -f "${BASEDIR}"/src/"${LIB_NAME}"/configure ]] || [[ ${RECONF_opus} -eq 1 ]]; then - autoreconf_library "${LIB_NAME}" 1>>"${BASEDIR}"/build.log 2>&1 || exit 1 + autoreconf_library "${LIB_NAME}" 1>>"${BASEDIR}"/build.log 2>&1 || return 1 fi ./configure \ diff --git a/scripts/apple/rubberband.sh b/scripts/apple/rubberband.sh index bad41ee..251c56a 100755 --- a/scripts/apple/rubberband.sh +++ b/scripts/apple/rubberband.sh @@ -12,7 +12,7 @@ overwrite_file "${BASEDIR}"/tools/patch/make/rubberband/rubberband.pc.in "${BASE ${SED_INLINE} 's/%DEPENDENCIES%/sndfile, samplerate/g' "${BASEDIR}"/src/"${LIB_NAME}"/rubberband.pc.in || return 1 # ALWAYS REGENERATE BUILD FILES - NECESSARY TO APPLY THE WORKAROUNDS -autoreconf_library "${LIB_NAME}" 1>>"${BASEDIR}"/build.log 2>&1 || exit 1 +autoreconf_library "${LIB_NAME}" 1>>"${BASEDIR}"/build.log 2>&1 || return 1 ./configure \ --prefix="${LIB_INSTALL_PREFIX}" \ diff --git a/scripts/apple/sdl.sh b/scripts/apple/sdl.sh index 5c97e99..43471eb 100755 --- a/scripts/apple/sdl.sh +++ b/scripts/apple/sdl.sh @@ -15,7 +15,7 @@ make distclean 2>/dev/null 1>/dev/null overwrite_file "${BASEDIR}/tools/patch/make/sdl/configure.in" "${BASEDIR}/src/${LIB_NAME}/configure.in" # ALWAYS REGENERATE BUILD FILES - NECESSARY TO APPLY THE WORKAROUNDS -./autogen.sh || exit 1 +./autogen.sh || return 1 # WORKAROUND TO EXCLUDE libunwind.h ON LTS BUILDS if [[ -n ${FFMPEG_KIT_LTS_BUILD} ]]; then diff --git a/scripts/apple/shine.sh b/scripts/apple/shine.sh index d9b10d0..129c2b2 100755 --- a/scripts/apple/shine.sh +++ b/scripts/apple/shine.sh @@ -5,7 +5,7 @@ make distclean 2>/dev/null 1>/dev/null # REGENERATE BUILD FILES IF NECESSARY OR REQUESTED if [[ ! -f "${BASEDIR}"/src/"${LIB_NAME}"/configure ]] || [[ ${RECONF_shine} -eq 1 ]]; then - autoreconf_library "${LIB_NAME}" 1>>"${BASEDIR}"/build.log 2>&1 || exit 1 + autoreconf_library "${LIB_NAME}" 1>>"${BASEDIR}"/build.log 2>&1 || return 1 fi ./configure \ diff --git a/scripts/apple/speex.sh b/scripts/apple/speex.sh index 058e0fa..955baaa 100755 --- a/scripts/apple/speex.sh +++ b/scripts/apple/speex.sh @@ -13,7 +13,7 @@ make distclean 2>/dev/null 1>/dev/null # REGENERATE BUILD FILES IF NECESSARY OR REQUESTED if [[ ! -f "${BASEDIR}"/src/"${LIB_NAME}"/configure ]] || [[ ${RECONF_soxr} -eq 1 ]]; then - autoreconf_library "${LIB_NAME}" 1>>"${BASEDIR}"/build.log 2>&1 || exit 1 + autoreconf_library "${LIB_NAME}" 1>>"${BASEDIR}"/build.log 2>&1 || return 1 fi ./configure \ diff --git a/scripts/apple/tesseract.sh b/scripts/apple/tesseract.sh index d94661d..60f47b4 100755 --- a/scripts/apple/tesseract.sh +++ b/scripts/apple/tesseract.sh @@ -9,7 +9,7 @@ make distclean 2>/dev/null 1>/dev/null # REGENERATE BUILD FILES IF NECESSARY OR REQUESTED if [[ ! -f "${BASEDIR}"/src/"${LIB_NAME}"/configure ]] || [[ ${RECONF_tesseract} -eq 1 ]]; then - autoreconf_library "${LIB_NAME}" 1>>"${BASEDIR}"/build.log 2>&1 || exit 1 + autoreconf_library "${LIB_NAME}" 1>>"${BASEDIR}"/build.log 2>&1 || return 1 fi ./configure \ diff --git a/scripts/apple/tiff.sh b/scripts/apple/tiff.sh index c782a59..37fe273 100755 --- a/scripts/apple/tiff.sh +++ b/scripts/apple/tiff.sh @@ -10,7 +10,7 @@ if [[ ! -f "${BASEDIR}"/src/"${LIB_NAME}"/configure ]] || [[ ${RECONF_tiff} -eq overwrite_file "${FFMPEG_KIT_TMPDIR}"/source/config/config.guess "${BASEDIR}"/src/"${LIB_NAME}"/config.guess || return 1 overwrite_file "${FFMPEG_KIT_TMPDIR}"/source/config/config.sub "${BASEDIR}"/src/"${LIB_NAME}"/config.sub || return 1 - autoreconf_library "${LIB_NAME}" 1>>"${BASEDIR}"/build.log 2>&1 || exit 1 + autoreconf_library "${LIB_NAME}" 1>>"${BASEDIR}"/build.log 2>&1 || return 1 fi ./configure \ diff --git a/scripts/apple/twolame.sh b/scripts/apple/twolame.sh index 7a5de63..ae27b2f 100755 --- a/scripts/apple/twolame.sh +++ b/scripts/apple/twolame.sh @@ -9,7 +9,7 @@ make distclean 2>/dev/null 1>/dev/null # REGENERATE BUILD FILES IF NECESSARY OR REQUESTED if [[ ! -f "${BASEDIR}"/src/"${LIB_NAME}"/configure ]] || [[ ${RECONF_twolame} -eq 1 ]]; then - NOCONFIGURE=1 ./autogen.sh || exit 1 + NOCONFIGURE=1 ./autogen.sh || return 1 fi ./configure \ diff --git a/scripts/apple/vo-amrwbenc.sh b/scripts/apple/vo-amrwbenc.sh index 40ce136..d0d8fb1 100755 --- a/scripts/apple/vo-amrwbenc.sh +++ b/scripts/apple/vo-amrwbenc.sh @@ -15,7 +15,7 @@ make distclean 2>/dev/null 1>/dev/null # REGENERATE BUILD FILES IF NECESSARY OR REQUESTED if [[ ! -f "${BASEDIR}"/src/"${LIB_NAME}"/configure ]] || [[ ${RECONF_vo_amrwbenc} -eq 1 ]]; then - autoreconf_library "${LIB_NAME}" 1>>"${BASEDIR}"/build.log 2>&1 || exit 1 + autoreconf_library "${LIB_NAME}" 1>>"${BASEDIR}"/build.log 2>&1 || return 1 fi ./configure \ diff --git a/scripts/apple/x264.sh b/scripts/apple/x264.sh index d3a3922..e80ed9c 100755 --- a/scripts/apple/x264.sh +++ b/scripts/apple/x264.sh @@ -20,13 +20,16 @@ make distclean 2>/dev/null 1>/dev/null # REGENERATE BUILD FILES IF NECESSARY OR REQUESTED if [[ ! -f "${BASEDIR}"/src/"${LIB_NAME}"/configure ]] || [[ ${RECONF_x264} -eq 1 ]]; then - autoreconf_library "${LIB_NAME}" 1>>"${BASEDIR}"/build.log 2>&1 || exit 1 + autoreconf_library "${LIB_NAME}" 1>>"${BASEDIR}"/build.log 2>&1 || return 1 fi # UPDATE CONFIG FILES TO SUPPORT APPLE ARCHITECTURES overwrite_file "${FFMPEG_KIT_TMPDIR}"/source/config/config.guess "${BASEDIR}"/src/"${LIB_NAME}"/config.guess || return 1 overwrite_file "${FFMPEG_KIT_TMPDIR}"/source/config/config.sub "${BASEDIR}"/src/"${LIB_NAME}"/config.sub || return 1 +# WORKAROUND TO FIX arm64 BUILDS +${SED_INLINE} 's/\-arch arm64//g' "${BASEDIR}"/src/"${LIB_NAME}"/configure 1>>"${BASEDIR}"/build.log 2>&1 || return 1 + ./configure \ --prefix="${LIB_INSTALL_PREFIX}" \ --enable-pic \ diff --git a/scripts/apple/zimg.sh b/scripts/apple/zimg.sh index 0e0ae64..44c5739 100644 --- a/scripts/apple/zimg.sh +++ b/scripts/apple/zimg.sh @@ -13,7 +13,7 @@ make distclean 2>/dev/null 1>/dev/null # REGENERATE BUILD FILES IF NECESSARY OR REQUESTED if [[ ! -f "${BASEDIR}"/src/"${LIB_NAME}"/configure ]] || [[ ${RECONF_zimg} -eq 1 ]]; then - ./autogen.sh || exit 1 + ./autogen.sh || return 1 fi ./configure \ diff --git a/scripts/function-ios.sh b/scripts/function-ios.sh index 9598476..e5cda43 100755 --- a/scripts/function-ios.sh +++ b/scripts/function-ios.sh @@ -409,7 +409,7 @@ set_toolchain_paths() { if [[ ${DOWNLOAD_RESULT} -ne 0 ]]; then exit 1 fi - (chmod +x "${FFMPEG_KIT_TMPDIR}"/gas-preprocessor.pl 1>>"${BASEDIR}"/build.log 2>&1) || exit 1 + (chmod +x "${FFMPEG_KIT_TMPDIR}"/gas-preprocessor.pl 1>>"${BASEDIR}"/build.log 2>&1) || return 1 # patch gas-preprocessor.pl against the following warning # Unescaped left brace in regex is deprecated here (and will be fatal in Perl 5.32), passed through in regex; marked by <-- HERE in m/(?:ld|st)\d\s+({ <-- HERE \s*v(\d+)\.(\d[bhsdBHSD])\s*-\s*v(\d+)\.(\d[bhsdBHSD])\s*})/ at /Users/taner/Projects/ffmpeg-kit/.tmp/gas-preprocessor.pl line 1065. diff --git a/scripts/function-macos.sh b/scripts/function-macos.sh index ca48301..8683674 100755 --- a/scripts/function-macos.sh +++ b/scripts/function-macos.sh @@ -318,7 +318,7 @@ set_toolchain_paths() { if [[ ${DOWNLOAD_RESULT} -ne 0 ]]; then exit 1 fi - (chmod +x "${FFMPEG_KIT_TMPDIR}"/gas-preprocessor.pl 1>>"${BASEDIR}"/build.log 2>&1) || exit 1 + (chmod +x "${FFMPEG_KIT_TMPDIR}"/gas-preprocessor.pl 1>>"${BASEDIR}"/build.log 2>&1) || return 1 # patch gas-preprocessor.pl against the following warning # Unescaped left brace in regex is deprecated here (and will be fatal in Perl 5.32), passed through in regex; marked by <-- HERE in m/(?:ld|st)\d\s+({ <-- HERE \s*v(\d+)\.(\d[bhsdBHSD])\s*-\s*v(\d+)\.(\d[bhsdBHSD])\s*})/ at /Users/taner/Projects/ffmpeg-kit/.tmp/gas-preprocessor.pl line 1065. diff --git a/scripts/function-tvos.sh b/scripts/function-tvos.sh index ecbb600..6016b42 100755 --- a/scripts/function-tvos.sh +++ b/scripts/function-tvos.sh @@ -367,7 +367,7 @@ set_toolchain_paths() { if [[ ${DOWNLOAD_RESULT} -ne 0 ]]; then exit 1 fi - (chmod +x "${FFMPEG_KIT_TMPDIR}"/gas-preprocessor.pl 1>>"${BASEDIR}"/build.log 2>&1) || exit 1 + (chmod +x "${FFMPEG_KIT_TMPDIR}"/gas-preprocessor.pl 1>>"${BASEDIR}"/build.log 2>&1) || return 1 # patch gas-preprocessor.pl against the following warning # Unescaped left brace in regex is deprecated here (and will be fatal in Perl 5.32), passed through in regex; marked by <-- HERE in m/(?:ld|st)\d\s+({ <-- HERE \s*v(\d+)\.(\d[bhsdBHSD])\s*-\s*v(\d+)\.(\d[bhsdBHSD])\s*})/ at /Users/taner/Projects/ffmpeg-kit/.tmp/gas-preprocessor.pl line 1065. diff --git a/scripts/function.sh b/scripts/function.sh index b38503f..65f5d22 100755 --- a/scripts/function.sh +++ b/scripts/function.sh @@ -255,15 +255,15 @@ is_library_supported_on_platform() { 0 | 1 | 2 | 3 | 4 | 5 | 6 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20) echo "0" ;; - 21 | 22 | 23 | 24 | 25 | 26 | 27 | 28 | 29 | 30 | 31 | 32 | 33 | 34 | 35 | 36 | 37 | 39 | 40) + 21 | 22 | 23 | 24 | 25 | 26 | 27 | 28 | 29 | 30 | 31 | 32 | 33 | 34 | 35 | 36 | 37 | 38 | 39 | 40) echo "0" ;; - 41 | 42 | 43 | 44 | 45 | 46 | 47 | 48) + 42 | 43 | 44 | 45 | 46 | 47 | 48) echo "0" ;; # ANDROID - 7 | 38 | 49 | 50 | 51) + 7 | 41 | 49 | 50 | 51) if [[ ${FFMPEG_KIT_BUILD_TYPE} == "android" ]]; then echo "0" else @@ -929,11 +929,13 @@ redownload_library() { # 2. ignore unknown libraries # enable_library() { - local library_supported_on_platform=$(is_library_supported_on_platform "$1") - if [[ $library_supported_on_platform == 0 ]]; then - set_library "$1" 1 - elif [[ $2 -ne 1 ]]; then - print_unknown_library "$1" + if [ -n "$1" ]; then + local library_supported_on_platform=$(is_library_supported_on_platform "$1") + if [[ $library_supported_on_platform == 0 ]]; then + set_library "$1" 1 + elif [[ $2 -ne 1 ]]; then + print_unknown_library "$1" + fi fi } diff --git a/scripts/main-android.sh b/scripts/main-android.sh index ceee846..7266dbd 100755 --- a/scripts/main-android.sh +++ b/scripts/main-android.sh @@ -34,7 +34,7 @@ export LIB_INSTALL_BASE="${BASEDIR}/prebuilt/$(get_build_directory)" # CREATE PACKAGE CONFIG DIRECTORY FOR THIS ARCHITECTURE PKG_CONFIG_DIRECTORY="${LIB_INSTALL_BASE}/pkgconfig" if [ ! -d "${PKG_CONFIG_DIRECTORY}" ]; then - mkdir -p "${PKG_CONFIG_DIRECTORY}" || exit 1 + mkdir -p "${PKG_CONFIG_DIRECTORY}" || return 1 fi # FILTER WHICH EXTERNAL LIBRARIES WILL BE BUILT diff --git a/scripts/main-ios.sh b/scripts/main-ios.sh index 1d46a78..1a4f693 100755 --- a/scripts/main-ios.sh +++ b/scripts/main-ios.sh @@ -29,7 +29,7 @@ export LIB_INSTALL_BASE="${BASEDIR}/prebuilt/$(get_build_directory)" # CREATE PACKAGE CONFIG DIRECTORY FOR THIS ARCHITECTURE PKG_CONFIG_DIRECTORY="${LIB_INSTALL_BASE}/pkgconfig" if [ ! -d "${PKG_CONFIG_DIRECTORY}" ]; then - mkdir -p "${PKG_CONFIG_DIRECTORY}" || exit 1 + mkdir -p "${PKG_CONFIG_DIRECTORY}" || return 1 fi # FILTER WHICH EXTERNAL LIBRARIES WILL BE BUILT @@ -222,7 +222,7 @@ if [[ ${SKIP_ffmpeg} -ne 1 ]]; then export LDFLAGS=$(get_ldflags "${LIB_NAME}") export PKG_CONFIG_LIBDIR="${INSTALL_PKG_CONFIG_DIR}" - cd "${BASEDIR}"/src/"${LIB_NAME}" 1>>"${BASEDIR}"/build.log 2>&1 || exit 1 + cd "${BASEDIR}"/src/"${LIB_NAME}" 1>>"${BASEDIR}"/build.log 2>&1 || return 1 LIB_INSTALL_PREFIX="${LIB_INSTALL_BASE}/${LIB_NAME}" @@ -240,7 +240,7 @@ fi if [[ ${SKIP_ffmpeg_kit} -ne 1 ]]; then # BUILD FFMPEG KIT - . "${BASEDIR}"/scripts/apple/ffmpeg-kit.sh "$@" || exit 1 + . "${BASEDIR}"/scripts/apple/ffmpeg-kit.sh "$@" || return 1 else echo -e "\nffmpeg-kit: skipped" fi diff --git a/scripts/main-macos.sh b/scripts/main-macos.sh index 7509ece..96481ab 100755 --- a/scripts/main-macos.sh +++ b/scripts/main-macos.sh @@ -29,7 +29,7 @@ export LIB_INSTALL_BASE="${BASEDIR}/prebuilt/$(get_build_directory)" # CREATE PACKAGE CONFIG DIRECTORY FOR THIS ARCHITECTURE PKG_CONFIG_DIRECTORY="${LIB_INSTALL_BASE}/pkgconfig" if [ ! -d "${PKG_CONFIG_DIRECTORY}" ]; then - mkdir -p "${PKG_CONFIG_DIRECTORY}" || exit 1 + mkdir -p "${PKG_CONFIG_DIRECTORY}" || return 1 fi # FILTER WHICH EXTERNAL LIBRARIES WILL BE BUILT @@ -221,7 +221,7 @@ if [[ ${SKIP_ffmpeg} -ne 1 ]]; then export LDFLAGS=$(get_ldflags "${LIB_NAME}") export PKG_CONFIG_LIBDIR="${INSTALL_PKG_CONFIG_DIR}" - cd "${BASEDIR}"/src/"${LIB_NAME}" 1>>"${BASEDIR}"/build.log 2>&1 || exit 1 + cd "${BASEDIR}"/src/"${LIB_NAME}" 1>>"${BASEDIR}"/build.log 2>&1 || return 1 LIB_INSTALL_PREFIX="${LIB_INSTALL_BASE}/${LIB_NAME}" @@ -239,7 +239,7 @@ fi if [[ ${SKIP_ffmpeg_kit} -ne 1 ]]; then # BUILD FFMPEG KIT - . "${BASEDIR}"/scripts/apple/ffmpeg-kit.sh "$@" || exit 1 + . "${BASEDIR}"/scripts/apple/ffmpeg-kit.sh "$@" || return 1 else echo -e "\nffmpeg-kit: skipped" fi diff --git a/scripts/main-tvos.sh b/scripts/main-tvos.sh index bee6d23..c11d177 100755 --- a/scripts/main-tvos.sh +++ b/scripts/main-tvos.sh @@ -29,7 +29,7 @@ export LIB_INSTALL_BASE="${BASEDIR}/prebuilt/$(get_build_directory)" # CREATE PACKAGE CONFIG DIRECTORY FOR THIS ARCHITECTURE PKG_CONFIG_DIRECTORY="${LIB_INSTALL_BASE}/pkgconfig" if [ ! -d "${PKG_CONFIG_DIRECTORY}" ]; then - mkdir -p "${PKG_CONFIG_DIRECTORY}" || exit 1 + mkdir -p "${PKG_CONFIG_DIRECTORY}" || return 1 fi # FILTER WHICH EXTERNAL LIBRARIES WILL BE BUILT @@ -220,7 +220,7 @@ if [[ ${SKIP_ffmpeg} -ne 1 ]]; then export LDFLAGS=$(get_ldflags "${LIB_NAME}") export PKG_CONFIG_LIBDIR="${INSTALL_PKG_CONFIG_DIR}" - cd "${BASEDIR}"/src/"${LIB_NAME}" 1>>"${BASEDIR}"/build.log 2>&1 || exit 1 + cd "${BASEDIR}"/src/"${LIB_NAME}" 1>>"${BASEDIR}"/build.log 2>&1 || return 1 LIB_INSTALL_PREFIX="${LIB_INSTALL_BASE}/${LIB_NAME}" @@ -238,7 +238,7 @@ fi if [[ ${SKIP_ffmpeg_kit} -ne 1 ]]; then # BUILD FFMPEG - . "${BASEDIR}"/scripts/apple/ffmpeg-kit.sh "$@" || exit 1 + . "${BASEDIR}"/scripts/apple/ffmpeg-kit.sh "$@" || return 1 else echo -e "\nffmpeg-kit: skipped" fi diff --git a/scripts/source.sh b/scripts/source.sh index b4b346a..bec2696 100755 --- a/scripts/source.sh +++ b/scripts/source.sh @@ -13,7 +13,7 @@ get_library_source() { ;; chromaprint) SOURCE_REPO_URL="https://github.com/tanersener/chromaprint" - SOURCE_ID="v1.5.0" + SOURCE_ID="v1.5.1" SOURCE_TYPE="TAG" ;; cpu-features) @@ -28,28 +28,28 @@ get_library_source() { ;; expat) SOURCE_REPO_URL="https://github.com/tanersener/libexpat" - SOURCE_ID="R_2_4_1" + SOURCE_ID="R_2_4_2" SOURCE_TYPE="TAG" ;; ffmpeg) SOURCE_REPO_URL="https://github.com/tanersener/FFmpeg" - SOURCE_ID="b5ba74053c1ef9f38d9e7b3a036675f06d2b2714" + SOURCE_ID="30322ebe3c55d0fb18bea4ae04d0fcaf1f97d27f" SOURCE_TYPE="COMMIT" - SOURCE_GIT_DESCRIBE="n4.5-dev-3138-gb5ba74053c" # git describe --tags + SOURCE_GIT_DESCRIBE="n4.5-dev-3393-g30322ebe3c" # git describe --tags ;; fontconfig) SOURCE_REPO_URL="https://github.com/tanersener/fontconfig" - SOURCE_ID="2.13.93" + SOURCE_ID="2.13.94" SOURCE_TYPE="TAG" ;; freetype) SOURCE_REPO_URL="https://github.com/tanersener/freetype2" - SOURCE_ID="VER-2-11-0" + SOURCE_ID="VER-2-11-1" SOURCE_TYPE="TAG" ;; fribidi) SOURCE_REPO_URL="https://github.com/tanersener/fribidi" - SOURCE_ID="v1.0.10" + SOURCE_ID="v1.0.11" SOURCE_TYPE="TAG" ;; giflib) @@ -69,17 +69,17 @@ get_library_source() { ;; harfbuzz) SOURCE_REPO_URL="https://github.com/tanersener/harfbuzz" - SOURCE_ID="2.9.1" + SOURCE_ID="3.2.0" SOURCE_TYPE="TAG" ;; jpeg) SOURCE_REPO_URL="https://github.com/tanersener/libjpeg-turbo" - SOURCE_ID="2.1.1" + SOURCE_ID="2.1.2" SOURCE_TYPE="TAG" ;; kvazaar) SOURCE_REPO_URL="https://github.com/tanersener/kvazaar" - SOURCE_ID="v2.0.0" + SOURCE_ID="v2.1.0" SOURCE_TYPE="TAG" ;; lame) @@ -94,7 +94,7 @@ get_library_source() { ;; libaom) SOURCE_REPO_URL="https://github.com/tanersener/libaom" - SOURCE_ID="v3.1.2" + SOURCE_ID="v3.2.0" SOURCE_TYPE="TAG" ;; libass) @@ -154,7 +154,7 @@ get_library_source() { ;; libvpx) SOURCE_REPO_URL="https://github.com/tanersener/libvpx" - SOURCE_ID="v1.10.0" + SOURCE_ID="v1.11.0" SOURCE_TYPE="TAG" ;; libwebp) @@ -249,7 +249,7 @@ get_library_source() { ;; x264) SOURCE_REPO_URL="https://github.com/tanersener/x264" - SOURCE_ID="55d517bc4569272a2c9a367a4106c234aba2ffbc" + SOURCE_ID="5db6aa6cab1b146e07b60cc1736a01f21da01154" SOURCE_TYPE="COMMIT" # COMMIT -> r3027 ;; x265) From a2908f5d326a8cdf599eecc9dcef2c9a407646e3 Mon Sep 17 00:00:00 2001 From: Taner Sener Date: Wed, 29 Dec 2021 11:53:56 +0000 Subject: [PATCH 45/45] freeze v4.5.1 --- .github/workflows/android-build-scripts.yml | 8 ++-- README.md | 9 ++-- android/README.md | 42 +++++++++++++++---- android/ffmpeg-kit-android-lib/Doxyfile | 2 +- android/ffmpeg-kit-android-lib/build.gradle | 4 +- .../ffmpeg-kit-android-lib/proguard-rules.pro | 3 +- .../src/main/cpp/ffmpegkit.h | 2 +- .../arthenica/ffmpegkit/FFmpegKitConfig.java | 2 +- .../com/arthenica/ffmpegkit/NativeLoader.java | 2 +- apple/Doxyfile | 2 +- apple/README.md | 25 ++++++----- apple/configure | 20 ++++----- apple/configure.ac | 4 +- apple/src/FFmpegKitConfig.m | 2 +- scripts/function-android.sh | 4 +- scripts/function.sh | 6 +-- tools/create_ios_universal_test_package.sh | 15 ------- tools/create_macos_universal_test_package.sh | 15 ------- tools/create_tvos_universal_test_package.sh | 15 ------- tools/release/android.lts.sh | 3 +- tools/release/android.sh | 3 +- tools/release/android/build.gradle | 4 +- tools/release/android/build.lts.gradle | 4 +- tools/release/common.sh | 12 +++--- tools/release/ios.lts.sh | 32 +------------- tools/release/ios.sh | 2 +- tools/release/macos.lts.sh | 33 +-------------- tools/release/macos.sh | 2 +- tools/release/tvos.lts.sh | 32 +------------- tools/release/tvos.sh | 2 +- 30 files changed, 105 insertions(+), 206 deletions(-) delete mode 100755 tools/create_ios_universal_test_package.sh delete mode 100755 tools/create_macos_universal_test_package.sh delete mode 100755 tools/create_tvos_universal_test_package.sh diff --git a/.github/workflows/android-build-scripts.yml b/.github/workflows/android-build-scripts.yml index 44a20c0..74f7d12 100644 --- a/.github/workflows/android-build-scripts.yml +++ b/.github/workflows/android-build-scripts.yml @@ -15,7 +15,7 @@ jobs: runs-on: ubuntu-20.04 strategy: matrix: - ndk-version: [ 'r21e-linux-x86_64', 'r22b-linux-x86_64', 'r23b-linux' ] + ndk-version: [ 'r22b-linux-x86_64', 'r23b-linux' ] defaults: run: shell: bash @@ -44,7 +44,7 @@ jobs: runs-on: ubuntu-20.04 strategy: matrix: - ndk-version: [ 'r21e-linux-x86_64', 'r22b-linux-x86_64', 'r23b-linux' ] + ndk-version: [ 'r22b-linux-x86_64', 'r23b-linux' ] defaults: run: shell: bash @@ -73,7 +73,7 @@ jobs: runs-on: macos-10.15 strategy: matrix: - ndk-version: [ 'r21e-darwin-x86_64', 'r22b-darwin-x86_64', 'r23b-darwin' ] + ndk-version: [ 'r22b-darwin-x86_64', 'r23b-darwin' ] defaults: run: shell: bash @@ -102,7 +102,7 @@ jobs: runs-on: macos-10.15 strategy: matrix: - ndk-version: [ 'r21e-darwin-x86_64', 'r22b-darwin-x86_64', 'r23b-darwin' ] + ndk-version: [ 'r22b-darwin-x86_64', 'r23b-darwin' ] defaults: run: shell: bash diff --git a/README.md b/README.md index 511d5b5..07722ac 100644 --- a/README.md +++ b/README.md @@ -1,4 +1,4 @@ -# FFmpegKit ![GitHub release](https://img.shields.io/badge/release-v4.5-blue.svg) ![Maven Central](https://img.shields.io/maven-central/v/com.arthenica/ffmpeg-kit-min) ![CocoaPods](https://img.shields.io/cocoapods/v/ffmpeg-kit-ios-min) ![pub](https://img.shields.io/pub/v/ffmpeg_kit_flutter.svg) ![npm](https://img.shields.io/npm/v/ffmpeg-kit-react-native.svg) +# FFmpegKit ![GitHub release](https://img.shields.io/badge/release-v4.5.1-blue.svg) ![Maven Central](https://img.shields.io/maven-central/v/com.arthenica/ffmpeg-kit-min) ![CocoaPods](https://img.shields.io/cocoapods/v/ffmpeg-kit-ios-min) ![pub](https://img.shields.io/pub/v/ffmpeg_kit_flutter.svg) ![npm](https://img.shields.io/npm/v/ffmpeg-kit-react-native.svg) @@ -83,9 +83,9 @@ include them. gmp
gnutls gmp
gnutls
vid.stab
x264
x265
xvidcore lame
libilbc
libvorbis
opencore-amr
opus
shine
soxr
speex
twolame
vo-amrwbenc -dav1d
fontconfig
freetype
fribidi
kvazaar
libass
libiconv
libtheora
libvpx
libwebp
snappy -dav1d
fontconfig
freetype
fribidi
gmp
gnutls
kvazaar
lame
libass
libiconv
libilbc
libtheora
libvorbis
libvpx
libwebp
libxml2
opencore-amr
opus
shine
snappy
soxr
speex
twolame
vo-amrwbenc -dav1d
fontconfig
freetype
fribidi
gmp
gnutls
kvazaar
lame
libass
libiconv
libilbc
libtheora
libvorbis
libvpx
libwebp
libxml2
opencore-amr
opus
shine
snappy
soxr
speex
twolame
vid.stab
vo-amrwbenc
x264
x265
xvidcore +dav1d
fontconfig
freetype
fribidi
kvazaar
libass
libiconv
libtheora
libvpx
libwebp
snappy
zimg +dav1d
fontconfig
freetype
fribidi
gmp
gnutls
kvazaar
lame
libass
libiconv
libilbc
libtheora
libvorbis
libvpx
libwebp
libxml2
opencore-amr
opus
shine
snappy
soxr
speex
twolame
vo-amrwbenc
zimg +dav1d
fontconfig
freetype
fribidi
gmp
gnutls
kvazaar
lame
libass
libiconv
libilbc
libtheora
libvorbis
libvpx
libwebp
libxml2
opencore-amr
opus
shine
snappy
soxr
speex
twolame
vid.stab
vo-amrwbenc
x264
x265
xvidcore
zimg android system libraries @@ -109,6 +109,7 @@ include them. - `AVFoundation` is not available on `tvOS` - `VideoToolbox` is not available on LTS releases of `iOS` and `tvOS` + - `zimg` is supported since `v4.5.1` ### 9. Versions diff --git a/android/README.md b/android/README.md index 2b52687..ef14f61 100644 --- a/android/README.md +++ b/android/README.md @@ -22,7 +22,7 @@ external libraries enabled. ##### 2.1.1 Android Tools - Android SDK Build Tools - - Android NDK r21e or later with LLDB and CMake + - Android NDK r22b or later with LLDB and CMake ##### 2.1.2 Packages @@ -77,7 +77,7 @@ All libraries created by `android.sh` can be found under the `prebuilt` director } dependencies { - implementation 'com.arthenica:ffmpeg-kit-full:4.5' + implementation 'com.arthenica:ffmpeg-kit-full:4.5.1' } ``` @@ -144,10 +144,10 @@ All libraries created by `android.sh` can be found under the `prebuilt` director 4. Execute asynchronous `FFmpeg` commands by providing session specific `execute`/`log`/`session` callbacks. ```java - FFmpegKit.executeAsync("-i file1.mp4 -c:v mpeg4 file2.mp4", new ExecuteCallback() { + FFmpegKit.executeAsync("-i file1.mp4 -c:v mpeg4 file2.mp4", new FFmpegSessionCompleteCallback() { @Override - public void apply(Session session) { + public void apply(FFmpegSession session) { SessionState state = session.getState(); ReturnCode returnCode = session.getReturnCode(); @@ -189,10 +189,10 @@ All libraries created by `android.sh` can be found under the `prebuilt` director - Asynchronous ```java - FFprobeKit.executeAsync(ffprobeCommand, new ExecuteCallback() { + FFprobeKit.executeAsync(ffprobeCommand, new FFprobeSessionCompleteCallback() { @Override - public void apply(Session session) { + public void apply(FFprobeSession session) { CALLED WHEN SESSION IS EXECUTED @@ -235,6 +235,14 @@ All libraries created by `android.sh` can be found under the `prebuilt` director FFmpegKit.execute("-i file1.mp4 -c:v mpeg4 " + outputVideoPath); ``` + - Writing to a file in a custom mode. + + ```java + Uri safUri = intent.getData(); + String path = FFmpegKitConfig.getSafParameter(requireContext(), safUri, "rw"); + FFmpegKit.execute("-i file1.mp4 -c:v mpeg4 " + path); + ``` + 9. Get previous `FFmpeg` and `FFprobe` sessions from session history. ```java @@ -253,13 +261,29 @@ All libraries created by `android.sh` can be found under the `prebuilt` director 10. Enable global callbacks. - - Execute Callback, called when an async execution is ended + - Session type specific Complete Callbacks, called when an async session has been completed ```java - FFmpegKitConfig.enableExecuteCallback(new ExecuteCallback() { + FFmpegKitConfig.enableFFmpegSessionCompleteCallback(new FFmpegSessionCompleteCallback() { + + @Override + public void apply(FFmpegSession session) { + + } + }); + + FFmpegKitConfig.enableFFprobeSessionCompleteCallback(new FFprobeSessionCompleteCallback() { + + @Override + public void apply(FFprobeSession session) { + + } + }); + + FFmpegKitConfig.enableMediaInformationSessionCompleteCallback(new MediaInformationSessionCompleteCallback() { @Override - public void apply(Session session) { + public void apply(MediaInformationSession session) { } }); diff --git a/android/ffmpeg-kit-android-lib/Doxyfile b/android/ffmpeg-kit-android-lib/Doxyfile index ae2944f..9272c39 100644 --- a/android/ffmpeg-kit-android-lib/Doxyfile +++ b/android/ffmpeg-kit-android-lib/Doxyfile @@ -38,7 +38,7 @@ PROJECT_NAME = "FFmpegKit Android API" # could be handy for archiving the generated documentation or if some version # control system is used. -PROJECT_NUMBER = 4.5 +PROJECT_NUMBER = 4.5.1 # Using the PROJECT_BRIEF tag one can provide an optional one line description # for a project that appears at the top of each page and should give viewer a diff --git a/android/ffmpeg-kit-android-lib/build.gradle b/android/ffmpeg-kit-android-lib/build.gradle index 2b88073..927cf4a 100644 --- a/android/ffmpeg-kit-android-lib/build.gradle +++ b/android/ffmpeg-kit-android-lib/build.gradle @@ -7,8 +7,8 @@ android { defaultConfig { minSdkVersion 24 targetSdkVersion 30 - versionCode 240450 - versionName "4.5" + versionCode 240451 + versionName "4.5.1" project.archivesBaseName = "ffmpeg-kit" consumerProguardFiles 'proguard-rules.pro' } diff --git a/android/ffmpeg-kit-android-lib/proguard-rules.pro b/android/ffmpeg-kit-android-lib/proguard-rules.pro index 3436a7b..e76a81a 100644 --- a/android/ffmpeg-kit-android-lib/proguard-rules.pro +++ b/android/ffmpeg-kit-android-lib/proguard-rules.pro @@ -9,7 +9,8 @@ native ; void log(long, int, byte[]); void statistics(long, int, float, float, long , int, double, double); - void closeParcelFileDescriptor(int); + int safOpen(int); + int safClose(int); } -keep class com.arthenica.ffmpegkit.AbiDetect { diff --git a/android/ffmpeg-kit-android-lib/src/main/cpp/ffmpegkit.h b/android/ffmpeg-kit-android-lib/src/main/cpp/ffmpegkit.h index 5570e12..dc1660d 100644 --- a/android/ffmpeg-kit-android-lib/src/main/cpp/ffmpegkit.h +++ b/android/ffmpeg-kit-android-lib/src/main/cpp/ffmpegkit.h @@ -27,7 +27,7 @@ #include "libavutil/ffversion.h" /** Library version string */ -#define FFMPEG_KIT_VERSION "4.5" +#define FFMPEG_KIT_VERSION "4.5.1" /** Defines tag used for Android logging. */ #define LIB_NAME "ffmpeg-kit" diff --git a/android/ffmpeg-kit-android-lib/src/main/java/com/arthenica/ffmpegkit/FFmpegKitConfig.java b/android/ffmpeg-kit-android-lib/src/main/java/com/arthenica/ffmpegkit/FFmpegKitConfig.java index 16b8829..1f58a8e 100644 --- a/android/ffmpeg-kit-android-lib/src/main/java/com/arthenica/ffmpegkit/FFmpegKitConfig.java +++ b/android/ffmpeg-kit-android-lib/src/main/java/com/arthenica/ffmpegkit/FFmpegKitConfig.java @@ -952,7 +952,7 @@ public class FFmpegKitConfig { *

Converts the given Structured Access Framework Uri ("content:…") into an * SAF protocol url that can be used in FFmpeg and FFprobe commands. * - *

Requires API Level >= 19. On older API levels it returns an empty url. + *

Requires API Level 19+. On older API levels it returns an empty url. * * @param context application context * @param uri SAF uri diff --git a/android/ffmpeg-kit-android-lib/src/main/java/com/arthenica/ffmpegkit/NativeLoader.java b/android/ffmpeg-kit-android-lib/src/main/java/com/arthenica/ffmpegkit/NativeLoader.java index 388e5c3..1197e83 100644 --- a/android/ffmpeg-kit-android-lib/src/main/java/com/arthenica/ffmpegkit/NativeLoader.java +++ b/android/ffmpeg-kit-android-lib/src/main/java/com/arthenica/ffmpegkit/NativeLoader.java @@ -85,7 +85,7 @@ public class NativeLoader { } static String loadVersion() { - final String version = "4.5"; + final String version = "4.5.1"; if (isTestModeDisabled()) { return FFmpegKitConfig.getVersion(); diff --git a/apple/Doxyfile b/apple/Doxyfile index 38dc890..473ffef 100644 --- a/apple/Doxyfile +++ b/apple/Doxyfile @@ -38,7 +38,7 @@ PROJECT_NAME = "FFmpegKit iOS / macOS / tvOS API" # could be handy for archiving the generated documentation or if some version # control system is used. -PROJECT_NUMBER = 4.5 +PROJECT_NUMBER = 4.5.1 # Using the PROJECT_BRIEF tag one can provide an optional one line description # for a project that appears at the top of each page and should give viewer a diff --git a/apple/README.md b/apple/README.md index 2beaaad..821ae37 100644 --- a/apple/README.md +++ b/apple/README.md @@ -97,13 +97,10 @@ All libraries created can be found under the `prebuilt` directory. - `tvOS` `xcframeworks` for `Main` builds are located under the `bundle-apple-xcframework-tvos` folder. - `iOS` `frameworks` for `Main` builds are located under the `bundle-apple-framework-ios` folder. - `iOS` `frameworks` for `LTS` builds are located under the `bundle-apple-framework-ios-lts` folder. -- `iOS` `universal (fat) libraries (.a)` for `LTS` builds are located under the `bundle-apple-universal-ios-lts` folder. - `macOS` `frameworks` for `Main` builds are located under the `bundle-apple-framework-macos` folder. - `macOS` `frameworks` for `LTS` builds are located under the `bundle-apple-framework-macos-lts` folder. -- `macOS` `universal (fat) libraries (.a)` for `LTS` builds are located under the `bundle-apple-universal-macos-lts` folder. - `tvOS` `frameworks` for `Main` builds are located under the `bundle-apple-framework-tvos` folder. - `tvOS` `frameworks` for `LTS` builds are located under the `bundle-apple-framework-tvos-lts` folder. -- `tvOS` `universal (fat) libraries (.a)` for `LTS` builds are located under the `bundle-apple-universal-tvos-lts` folder. ### 3. Using @@ -114,17 +111,17 @@ All libraries created can be found under the `prebuilt` directory. - iOS ```yaml - pod 'ffmpeg-kit-ios-full', '~> 4.5' + pod 'ffmpeg-kit-ios-full', '~> 4.5.1' ``` - macOS ```yaml - pod 'ffmpeg-kit-macos-full', '~> 4.5' + pod 'ffmpeg-kit-macos-full', '~> 4.5.1' ``` - tvOS ```yaml - pod 'ffmpeg-kit-tvos-full', '~> 4.5' + pod 'ffmpeg-kit-tvos-full', '~> 4.5.1' ``` 2. Execute synchronous `FFmpeg` commands. @@ -191,7 +188,7 @@ All libraries created can be found under the `prebuilt` directory. 4. Execute asynchronous `FFmpeg` commands by providing session specific `execute`/`log`/`session` callbacks. ```objectivec - id session = [FFmpegKit executeAsync:@"-i file1.mp4 -c:v mpeg4 file2.mp4" withExecuteCallback:^(id session){ + FFmpegSession* session = [FFmpegKit executeAsync:@"-i file1.mp4 -c:v mpeg4 file2.mp4" withCompleteCallback:^(FFmpegSession* session){ SessionState state = [session getState]; ReturnCode *returnCode = [session getReturnCode]; @@ -225,7 +222,7 @@ All libraries created can be found under the `prebuilt` directory. - Asynchronous ```objectivec - [FFprobeKit executeAsync:ffmpegCommand withExecuteCallback:^(id session) { + [FFprobeKit executeAsync:ffmpegCommand withCompleteCallback:^(FFprobeSession* session) { CALLED WHEN SESSION IS EXECUTED @@ -268,10 +265,18 @@ All libraries created can be found under the `prebuilt` directory. 9. Enable global callbacks. - - Execute Callback, called when an async execution is ended + - Session type specific Complete Callbacks, called when an async session has been completed ```objectivec - [FFmpegKitConfig enableExecuteCallback:^(id session) { + [FFmpegKitConfig enableFFmpegSessionCompleteCallback:^(FFmpegSession* session) { + ... + }]; + + [FFmpegKitConfig enableFFprobeSessionCompleteCallback:^(FFprobeSession* session) { + ... + }]; + + [FFmpegKitConfig enableMediaInformationSessionCompleteCallback:^(MediaInformationSession* session) { ... }]; ``` diff --git a/apple/configure b/apple/configure index 8502b08..46b3882 100755 --- a/apple/configure +++ b/apple/configure @@ -1,6 +1,6 @@ #! /bin/sh # Guess values for system-dependent variables and create Makefiles. -# Generated by GNU Autoconf 2.71 for ffmpeg-kit 4.5. +# Generated by GNU Autoconf 2.71 for ffmpeg-kit 4.5.1. # # Report bugs to . # @@ -622,8 +622,8 @@ MAKEFLAGS= # Identity of this package. PACKAGE_NAME='ffmpeg-kit' PACKAGE_TARNAME='ffmpeg-kit' -PACKAGE_VERSION='4.5' -PACKAGE_STRING='ffmpeg-kit 4.5' +PACKAGE_VERSION='4.5.1' +PACKAGE_STRING='ffmpeg-kit 4.5.1' PACKAGE_BUGREPORT='https://github.com/tanersener/ffmpeg-kit/issues/new' PACKAGE_URL='' @@ -1367,7 +1367,7 @@ if test "$ac_init_help" = "long"; then # Omit some internal or obsolete options to make the list less imposing. # This message is too long to be a string in the A/UX 3.1 sh. cat <<_ACEOF -\`configure' configures ffmpeg-kit 4.5 to adapt to many kinds of systems. +\`configure' configures ffmpeg-kit 4.5.1 to adapt to many kinds of systems. Usage: $0 [OPTION]... [VAR=VALUE]... @@ -1438,7 +1438,7 @@ fi if test -n "$ac_init_help"; then case $ac_init_help in - short | recursive ) echo "Configuration of ffmpeg-kit 4.5:";; + short | recursive ) echo "Configuration of ffmpeg-kit 4.5.1:";; esac cat <<\_ACEOF @@ -1554,7 +1554,7 @@ fi test -n "$ac_init_help" && exit $ac_status if $ac_init_version; then cat <<\_ACEOF -ffmpeg-kit configure 4.5 +ffmpeg-kit configure 4.5.1 generated by GNU Autoconf 2.71 Copyright (C) 2021 Free Software Foundation, Inc. @@ -2048,7 +2048,7 @@ cat >config.log <<_ACEOF This file contains any messages produced by compilers while running configure, to aid debugging if configure makes a mistake. -It was created by ffmpeg-kit $as_me 4.5, which was +It was created by ffmpeg-kit $as_me 4.5.1, which was generated by GNU Autoconf 2.71. Invocation command line was $ $0$ac_configure_args_raw @@ -3320,7 +3320,7 @@ fi # Define the identity of the package. PACKAGE='ffmpeg-kit' - VERSION='4.5' + VERSION='4.5.1' printf "%s\n" "#define PACKAGE \"$PACKAGE\"" >>confdefs.h @@ -15374,7 +15374,7 @@ cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1 # report actual input values of CONFIG_FILES etc. instead of their # values after options handling. ac_log=" -This file was extended by ffmpeg-kit $as_me 4.5, which was +This file was extended by ffmpeg-kit $as_me 4.5.1, which was generated by GNU Autoconf 2.71. Invocation command line was CONFIG_FILES = $CONFIG_FILES @@ -15433,7 +15433,7 @@ ac_cs_config_escaped=`printf "%s\n" "$ac_cs_config" | sed "s/^ //; s/'/'\\\\\\\\ cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 ac_cs_config='$ac_cs_config_escaped' ac_cs_version="\\ -ffmpeg-kit config.status 4.5 +ffmpeg-kit config.status 4.5.1 configured by $0, generated by GNU Autoconf 2.71, with options \\"\$ac_cs_config\\" diff --git a/apple/configure.ac b/apple/configure.ac index 99de66f..ae43e5f 100644 --- a/apple/configure.ac +++ b/apple/configure.ac @@ -1,6 +1,6 @@ -# ffmpeg-kit 4.5 configure.ac +# ffmpeg-kit 4.5.1 configure.ac -AC_INIT([ffmpeg-kit], [4.5], [https://github.com/tanersener/ffmpeg-kit/issues/new]) +AC_INIT([ffmpeg-kit], [4.5.1], [https://github.com/tanersener/ffmpeg-kit/issues/new]) AC_CONFIG_MACRO_DIR([m4]) AC_CONFIG_SRCDIR([src/FFmpegKit.m]) diff --git a/apple/src/FFmpegKitConfig.m b/apple/src/FFmpegKitConfig.m index 37a4756..a9f4296 100644 --- a/apple/src/FFmpegKitConfig.m +++ b/apple/src/FFmpegKitConfig.m @@ -36,7 +36,7 @@ #import "SessionState.h" /** Global library version */ -NSString* const FFmpegKitVersion = @"4.5"; +NSString* const FFmpegKitVersion = @"4.5.1"; /** * Prefix of named pipes created by ffmpeg-kit. diff --git a/scripts/function-android.sh b/scripts/function-android.sh index 41cd5a1..c1c6029 100755 --- a/scripts/function-android.sh +++ b/scripts/function-android.sh @@ -251,7 +251,7 @@ get_arch_specific_cflags() { x86) case ${DETECTED_NDK_VERSION} in 23*) - echo "-march=i686 -mssse3 -mfpmath=sse -m32 -DFFMPEG_KIT_X86" + echo "-march=i686 -mtune=generic -mssse3 -mfpmath=sse -m32 -DFFMPEG_KIT_X86" ;; *) echo "-march=i686 -mtune=intel -mssse3 -mfpmath=sse -m32 -DFFMPEG_KIT_X86" @@ -261,7 +261,7 @@ get_arch_specific_cflags() { x86-64) case ${DETECTED_NDK_VERSION} in 23*) - echo "-march=x86-64 -msse4.2 -mpopcnt -m64 -DFFMPEG_KIT_X86_64" + echo "-march=x86-64 -msse4.2 -mpopcnt -m64 -mtune=generic -DFFMPEG_KIT_X86_64" ;; *) echo "-march=x86-64 -msse4.2 -mpopcnt -m64 -mtune=intel -DFFMPEG_KIT_X86_64" diff --git a/scripts/function.sh b/scripts/function.sh index 65f5d22..02f1ff3 100755 --- a/scripts/function.sh +++ b/scripts/function.sh @@ -1581,15 +1581,15 @@ get_external_library_license_path() { case $1 in 1) echo "${BASEDIR}/src/$(get_library_name "$1")/LICENSE.TXT" ;; 35) echo "${BASEDIR}/src/$(get_library_name "$1")/LICENSE.txt" ;; - 3 | 39) echo "${BASEDIR}/src/$(get_library_name "$1")/COPYING.LESSERv3" ;; - 5 | 41) echo "${BASEDIR}/src/$(get_library_name "$1")/$(get_library_name "$1")/COPYING" ;; + 3 | 42) echo "${BASEDIR}/src/$(get_library_name "$1")/COPYING.LESSERv3" ;; + 5 | 44) echo "${BASEDIR}/src/$(get_library_name "$1")/$(get_library_name "$1")/COPYING" ;; 19) echo "${BASEDIR}/src/$(get_library_name "$1")/$(get_library_name "$1")/LICENSE" ;; 26) echo "${BASEDIR}/src/$(get_library_name "$1")/COPYING.LGPL" ;; 28 | 38) echo "${BASEDIR}/src/$(get_library_name "$1")/LICENSE.md " ;; 30) echo "${BASEDIR}/src/$(get_library_name "$1")/COPYING.txt" ;; 43) echo "${BASEDIR}/src/$(get_library_name "$1")/COPYRIGHT" ;; 46) echo "${BASEDIR}/src/$(get_library_name "$1")/leptonica-license.txt" ;; - 4 | 10 | 13 | 21 | 27 | 31 | 32 | 36 | 40 | 49) echo "${BASEDIR}/src/$(get_library_name "$1")/LICENSE" ;; + 4 | 10 | 13 | 17 | 21 | 27 | 31 | 32 | 36 | 40 | 49) echo "${BASEDIR}/src/$(get_library_name "$1")/LICENSE" ;; *) echo "${BASEDIR}/src/$(get_library_name "$1")/COPYING" ;; esac } diff --git a/tools/create_ios_universal_test_package.sh b/tools/create_ios_universal_test_package.sh deleted file mode 100755 index c6e2c99..0000000 --- a/tools/create_ios_universal_test_package.sh +++ /dev/null @@ -1,15 +0,0 @@ -#!/bin/bash - -cd ../prebuilt/bundle-apple-universal-ios || exit 1 -find . -name "*.dylib" -not -path "./ffmpeg-kit/*" -exec cp {} ./ffmpeg-kit/lib \; || exit 1 -cp -r ffmpeg/include/* ffmpeg-kit/include || exit 1 - -# COPY LICENSE FILE OF EACH LIBRARY -LICENSE_FILES=$(find . -name LICENSE | grep -vi ffmpeg) -for LICENSE_FILE in ${LICENSE_FILES[@]} -do - LIBRARY_NAME=$(echo ${LICENSE_FILE} | sed 's/\.\///g;s/\/LICENSE//g') - cp ${LICENSE_FILE} ffmpeg-kit/LICENSE.${LIBRARY_NAME} || exit 1 -done - -zip -r "../ffmpeg-kit-ios-universal.zip" ffmpeg-kit || exit 1 \ No newline at end of file diff --git a/tools/create_macos_universal_test_package.sh b/tools/create_macos_universal_test_package.sh deleted file mode 100755 index 1bbb6c3..0000000 --- a/tools/create_macos_universal_test_package.sh +++ /dev/null @@ -1,15 +0,0 @@ -#!/bin/bash - -cd ../prebuilt/bundle-apple-universal-macos || exit 1 -find . -name "*.dylib" -not -path "./ffmpeg-kit/*" -exec cp {} ./ffmpeg-kit/lib \; || exit 1 -cp -r ffmpeg/include/* ffmpeg-kit/include || exit 1 - -# COPY LICENSE FILE OF EACH LIBRARY -LICENSE_FILES=$(find . -name LICENSE | grep -vi ffmpeg) -for LICENSE_FILE in ${LICENSE_FILES[@]} -do - LIBRARY_NAME=$(echo ${LICENSE_FILE} | sed 's/\.\///g;s/\/LICENSE//g') - cp ${LICENSE_FILE} ffmpeg-kit/LICENSE.${LIBRARY_NAME} || exit 1 -done - -zip -r "../ffmpeg-kit-macos-universal.zip" ffmpeg-kit || exit 1 \ No newline at end of file diff --git a/tools/create_tvos_universal_test_package.sh b/tools/create_tvos_universal_test_package.sh deleted file mode 100755 index 80ab6d0..0000000 --- a/tools/create_tvos_universal_test_package.sh +++ /dev/null @@ -1,15 +0,0 @@ -#!/bin/bash - -cd ../prebuilt/bundle-apple-universal-tvos || exit 1 -find . -name "*.dylib" -not -path "./ffmpeg-kit/*" -exec cp {} ./ffmpeg-kit/lib \; || exit 1 -cp -r ffmpeg/include/* ffmpeg-kit/include || exit 1 - -# COPY LICENSE FILE OF EACH LIBRARY -LICENSE_FILES=$(find . -name LICENSE | grep -vi ffmpeg) -for LICENSE_FILE in ${LICENSE_FILES[@]} -do - LIBRARY_NAME=$(echo ${LICENSE_FILE} | sed 's/\.\///g;s/\/LICENSE//g') - cp ${LICENSE_FILE} ffmpeg-kit/LICENSE.${LIBRARY_NAME} || exit 1 -done - -zip -r "../ffmpeg-kit-tvos-universal.zip" ffmpeg-kit || exit 1 \ No newline at end of file diff --git a/tools/release/android.lts.sh b/tools/release/android.lts.sh index 72e0213..4e03eab 100755 --- a/tools/release/android.lts.sh +++ b/tools/release/android.lts.sh @@ -22,7 +22,8 @@ if [ $# -ne 1 ]; then exit 1 fi -export VERSION_CODE="${ANDROID_LTS_MIN_SDK}0"$(echo $1 | sed "s/\.//g")"0" +VERSION_CODE="${ANDROID_LTS_MIN_SDK}0"$(echo $1 | sed "s/\.//g")"0" +export VERSION_CODE=${VERSION_CODE:0:6} # VALIDATE VERSIONS if [[ "${ANDROID_FFMPEG_KIT_VERSION}" != "$1" ]]; then diff --git a/tools/release/android.sh b/tools/release/android.sh index b39d8aa..df2581a 100755 --- a/tools/release/android.sh +++ b/tools/release/android.sh @@ -22,7 +22,8 @@ if [ $# -ne 1 ]; then exit 1 fi -export VERSION_CODE="${ANDROID_MAIN_MIN_SDK}0"$(echo $1 | sed "s/\.//g")"0" +VERSION_CODE="${ANDROID_MAIN_MIN_SDK}0"$(echo $1 | sed "s/\.//g")"0" +export VERSION_CODE=${VERSION_CODE:0:6} # VALIDATE VERSIONS if [[ "${ANDROID_FFMPEG_KIT_VERSION}" != "$1" ]]; then diff --git a/tools/release/android/build.gradle b/tools/release/android/build.gradle index 2b88073..927cf4a 100644 --- a/tools/release/android/build.gradle +++ b/tools/release/android/build.gradle @@ -7,8 +7,8 @@ android { defaultConfig { minSdkVersion 24 targetSdkVersion 30 - versionCode 240450 - versionName "4.5" + versionCode 240451 + versionName "4.5.1" project.archivesBaseName = "ffmpeg-kit" consumerProguardFiles 'proguard-rules.pro' } diff --git a/tools/release/android/build.lts.gradle b/tools/release/android/build.lts.gradle index 89163ed..e916858 100644 --- a/tools/release/android/build.lts.gradle +++ b/tools/release/android/build.lts.gradle @@ -7,8 +7,8 @@ android { defaultConfig { minSdkVersion 16 targetSdkVersion 30 - versionCode 160450 - versionName "4.5.LTS" + versionCode 160451 + versionName "4.5.1.LTS" project.archivesBaseName = "ffmpeg-kit" consumerProguardFiles 'proguard-rules.pro' } diff --git a/tools/release/common.sh b/tools/release/common.sh index 1e092ff..857bed9 100755 --- a/tools/release/common.sh +++ b/tools/release/common.sh @@ -6,7 +6,7 @@ export ANDROID_MAIN_OPTIONS="--disable-arm-v7a --enable-android-media-codec --en export ANDROID_LTS_OPTIONS="--lts --enable-android-media-codec --enable-android-zlib" export IOS_MAIN_OPTIONS="--xcframework --disable-armv7 --disable-armv7s --disable-i386 --disable-arm64e --enable-ios-audiotoolbox --enable-ios-avfoundation --enable-ios-bzip2 --enable-ios-libiconv --enable-ios-videotoolbox --enable-ios-zlib" -export IOS_LTS_OPTIONS="--disable-armv7s --lts --enable-ios-audiotoolbox --enable-ios-bzip2 --enable-ios-libiconv --enable-ios-zlib" +export IOS_LTS_OPTIONS="--disable-armv7s --disable-arm64e --lts --enable-ios-audiotoolbox --enable-ios-bzip2 --enable-ios-libiconv --enable-ios-zlib" export TVOS_MAIN_OPTIONS="--xcframework --enable-tvos-bzip2 --enable-tvos-audiotoolbox --enable-tvos-libiconv --enable-tvos-videotoolbox --enable-tvos-zlib" export TVOS_LTS_OPTIONS="--disable-arm64-simulator --lts --enable-tvos-bzip2 --enable-tvos-audiotoolbox --enable-tvos-libiconv --enable-tvos-zlib" @@ -25,8 +25,8 @@ fi export GPL_PACKAGES="--enable-gpl --enable-libvidstab --enable-x264 --enable-x265 --enable-xvidcore" export HTTPS_PACKAGES="--enable-gnutls --enable-gmp" export AUDIO_PACKAGES="--enable-lame --enable-libilbc --enable-libvorbis --enable-opencore-amr --enable-opus --enable-shine --enable-soxr --enable-speex --enable-twolame --enable-vo-amrwbenc" -export VIDEO_PACKAGES="--enable-dav1d --enable-fontconfig --enable-freetype --enable-fribidi --enable-kvazaar --enable-libass ${ANDROID_EXTRA_VIDEO_PACKAGES} --enable-libtheora --enable-libvpx --enable-snappy --enable-libwebp" -export FULL_PACKAGES="--enable-dav1d --enable-fontconfig --enable-freetype --enable-fribidi --enable-gmp --enable-gnutls --enable-kvazaar --enable-lame --enable-libass ${ANDROID_EXTRA_VIDEO_PACKAGES} --enable-libilbc --enable-libtheora --enable-libvorbis --enable-libvpx --enable-libwebp --enable-libxml2 --enable-opencore-amr --enable-opus --enable-shine --enable-snappy --enable-soxr --enable-speex --enable-twolame --enable-vo-amrwbenc" +export VIDEO_PACKAGES="--enable-dav1d --enable-fontconfig --enable-freetype --enable-fribidi --enable-kvazaar --enable-libass ${ANDROID_EXTRA_VIDEO_PACKAGES} --enable-libtheora --enable-libvpx --enable-snappy --enable-libwebp --enable-zimg" +export FULL_PACKAGES="--enable-dav1d --enable-fontconfig --enable-freetype --enable-fribidi --enable-gmp --enable-gnutls --enable-kvazaar --enable-lame --enable-libass ${ANDROID_EXTRA_VIDEO_PACKAGES} --enable-libilbc --enable-libtheora --enable-libvorbis --enable-libvpx --enable-libwebp --enable-zimg --enable-libxml2 --enable-opencore-amr --enable-opus --enable-shine --enable-snappy --enable-soxr --enable-speex --enable-twolame --enable-vo-amrwbenc" export ANDROID_FFMPEG_KIT_VERSION=$(grep '#define FFMPEG_KIT_VERSION' "${BASEDIR}"/../../android/ffmpeg-kit-android-lib/src/main/cpp/ffmpegkit.h | grep -Eo '\".*\"' | sed -e 's/\"//g') export APPLE_FFMPEG_KIT_VERSION=$(grep 'FFmpegKitVersion ' ${BASEDIR}/../../apple/src/FFmpegKitConfig.m | grep -Eo '\".*\"' | sed -e 's/\"//g') @@ -40,6 +40,6 @@ export LIBRARY_DESCRIPTION_MIN_GPL="Includes FFmpeg with libvid.stab, x264, x265 export LIBRARY_DESCRIPTION_HTTPS="Includes FFmpeg with gmp and gnutls libraries enabled." export LIBRARY_DESCRIPTION_HTTPS_GPL="Includes FFmpeg with gmp, gnutls, libvid.stab, x264, x265 and xvidcore libraries enabled." export LIBRARY_DESCRIPTION_AUDIO="Includes FFmpeg with lame, libilbc, libvorbis, opencore-amr, opus, shine, soxr, speex, twolame and vo-amrwbenc libraries enabled." -export LIBRARY_DESCRIPTION_VIDEO="Includes FFmpeg with dav1d, fontconfig, freetype, fribidi, kvazaar, libass, ${ANDROID_EXTRA_DESCRIPTION}libtheora, libvpx, snappy and libwebp libraries enabled." -export LIBRARY_DESCRIPTION_FULL="Includes FFmpeg with dav1d, fontconfig, freetype, fribidi, gmp, gnutls, kvazaar, lame, libass, ${ANDROID_EXTRA_DESCRIPTION}libilbc, libtheora, libvorbis, libvpx, libwebp, libxml2, opencore-amr, opus, shine, snappy, soxr, speex, twolame and vo-amrwbenc libraries enabled." -export LIBRARY_DESCRIPTION_FULL_GPL="Includes FFmpeg with dav1d, fontconfig, freetype, fribidi, gmp, gnutls, kvazaar, lame, libass, ${ANDROID_EXTRA_DESCRIPTION}libilbc, libtheora, libvid.stab, libvorbis, libvpx, libwebp, libxml2, opencore-amr, opus, shine, snappy, soxr, speex, twolame, vo-amrwbenc, x264, x265 and xvidcore libraries enabled." +export LIBRARY_DESCRIPTION_VIDEO="Includes FFmpeg with dav1d, fontconfig, freetype, fribidi, kvazaar, libass, ${ANDROID_EXTRA_DESCRIPTION}libtheora, libvpx, snappy, libwebp and zimg libraries enabled." +export LIBRARY_DESCRIPTION_FULL="Includes FFmpeg with dav1d, fontconfig, freetype, fribidi, gmp, gnutls, kvazaar, lame, libass, ${ANDROID_EXTRA_DESCRIPTION}libilbc, libtheora, libvorbis, libvpx, libwebp, zimg, libxml2, opencore-amr, opus, shine, snappy, soxr, speex, twolame and vo-amrwbenc libraries enabled." +export LIBRARY_DESCRIPTION_FULL_GPL="Includes FFmpeg with dav1d, fontconfig, freetype, fribidi, gmp, gnutls, kvazaar, lame, libass, ${ANDROID_EXTRA_DESCRIPTION}libilbc, libtheora, libvid.stab, libvorbis, libvpx, libwebp, zimg, libxml2, opencore-amr, opus, shine, snappy, soxr, speex, twolame, vo-amrwbenc, x264, x265 and xvidcore libraries enabled." diff --git a/tools/release/ios.lts.sh b/tools/release/ios.lts.sh index 3cb42a6..c5ad8de 100755 --- a/tools/release/ios.lts.sh +++ b/tools/release/ios.lts.sh @@ -6,8 +6,6 @@ source ./common.sh export SOURCE_PACKAGE="${BASEDIR}/../../prebuilt/bundle-apple-framework-ios-lts" export COCOAPODS_DIRECTORY="${BASEDIR}/../../prebuilt/bundle-apple-cocoapods-ios-lts" -export SOURCE_UNIVERSAL_PACKAGE="${BASEDIR}/../../prebuilt/bundle-apple-universal-ios-lts" -export ALL_UNIVERSAL_DIRECTORY="${BASEDIR}/../../prebuilt/bundle-apple-all-universal-ios-lts" create_package() { local PACKAGE_NAME="ffmpeg-kit-ios-$1" @@ -20,7 +18,7 @@ create_package() { cp -R "${SOURCE_PACKAGE}"/* "${CURRENT_PACKAGE}" || exit 1 cd "${CURRENT_PACKAGE}" || exit 1 - zip -r "../ffmpeg-kit-$1-${PACKAGE_VERSION}-ios-framework.zip" * || exit 1 + zip -r -y "../ffmpeg-kit-$1-${PACKAGE_VERSION}-ios-framework.zip" * || exit 1 # COPY PODSPEC AS THE LAST ITEM cp "${BASEDIR}"/apple/"${PACKAGE_NAME}".podspec "${CURRENT_PACKAGE}" || exit 1 @@ -28,31 +26,6 @@ create_package() { sed -i '' "s/DESCRIPTION/${PACKAGE_DESCRIPTION}/g" "${CURRENT_PACKAGE}"/"${PACKAGE_NAME}".podspec || exit 1 sed -i '' "s/\,\'AVFoundation\'//g" "${CURRENT_PACKAGE}"/"${PACKAGE_NAME}".podspec || exit 1 sed -i '' "s/\,\'VideoToolbox\'//g" "${CURRENT_PACKAGE}"/"${PACKAGE_NAME}".podspec || exit 1 - - mkdir -p "${ALL_UNIVERSAL_DIRECTORY}" || exit 1 - local CURRENT_UNIVERSAL_PACKAGE="${ALL_UNIVERSAL_DIRECTORY}/${PACKAGE_NAME}-universal" - rm -rf "${CURRENT_UNIVERSAL_PACKAGE}" - mkdir -p "${CURRENT_UNIVERSAL_PACKAGE}"/include || exit 1 - mkdir -p "${CURRENT_UNIVERSAL_PACKAGE}"/lib || exit 1 - - cd "${SOURCE_UNIVERSAL_PACKAGE}" || exit 1 - find . -name "*.dylib" -exec cp {} "${CURRENT_UNIVERSAL_PACKAGE}"/lib \; || exit 1 - - # COPY THE LICENSE FILE OF EACH LIBRARY - LICENSE_FILES=$(find . -name LICENSE | grep -vi ffmpeg) - - for LICENSE_FILE in ${LICENSE_FILES[@]} - do - LIBRARY_NAME=$(echo "${LICENSE_FILE}" | sed 's/\.\///g;s/\/LICENSE//g') - cp "${LICENSE_FILE}" "${CURRENT_UNIVERSAL_PACKAGE}"/LICENSE."${LIBRARY_NAME}" || exit 1 - done - - cp -R "${SOURCE_UNIVERSAL_PACKAGE}"/ffmpeg-kit/include/* "${CURRENT_UNIVERSAL_PACKAGE}"/include || exit 1 - cp -R "${SOURCE_UNIVERSAL_PACKAGE}"/ffmpeg/include/* "${CURRENT_UNIVERSAL_PACKAGE}"/include || exit 1 - cp "${SOURCE_UNIVERSAL_PACKAGE}"/ffmpeg/LICENSE "${CURRENT_UNIVERSAL_PACKAGE}"/LICENSE || exit 1 - - cd "${ALL_UNIVERSAL_DIRECTORY}" || exit 1 - zip -r "ffmpeg-kit-$1-${PACKAGE_VERSION}-ios-static-universal.zip" "${PACKAGE_NAME}"-universal || exit 1 } if [[ $# -ne 1 ]]; @@ -77,9 +50,6 @@ fi rm -rf "${COCOAPODS_DIRECTORY}" mkdir -p "${COCOAPODS_DIRECTORY}" || exit 1 -rm -rf "${ALL_UNIVERSAL_DIRECTORY}" -mkdir -p "${ALL_UNIVERSAL_DIRECTORY}" || exit 1 - # MIN RELEASE cd "${BASEDIR}/../.." || exit 1 ./ios.sh ${IOS_LTS_OPTIONS} || exit 1 diff --git a/tools/release/ios.sh b/tools/release/ios.sh index 11f68cf..74db917 100755 --- a/tools/release/ios.sh +++ b/tools/release/ios.sh @@ -18,7 +18,7 @@ create_package() { cp -R "${SOURCE_PACKAGE}"/* "${CURRENT_PACKAGE}" || exit 1 cd "${CURRENT_PACKAGE}" || exit 1 - zip -r "../ffmpeg-kit-$1-${PACKAGE_VERSION}-ios-xcframework.zip" * || exit 1 + zip -r -y "../ffmpeg-kit-$1-${PACKAGE_VERSION}-ios-xcframework.zip" * || exit 1 # COPY PODSPEC AS THE LAST ITEM cp "${BASEDIR}"/apple/"${PACKAGE_NAME}".podspec "${CURRENT_PACKAGE}" || exit 1 diff --git a/tools/release/macos.lts.sh b/tools/release/macos.lts.sh index 3eaee4d..0b60ebe 100755 --- a/tools/release/macos.lts.sh +++ b/tools/release/macos.lts.sh @@ -6,8 +6,6 @@ source ./common.sh export SOURCE_PACKAGE="${BASEDIR}/../../prebuilt/bundle-apple-framework-macos-lts" export COCOAPODS_DIRECTORY="${BASEDIR}/../../prebuilt/bundle-apple-cocoapods-macos-lts" -export SOURCE_UNIVERSAL_PACKAGE="${BASEDIR}/../../prebuilt/bundle-apple-universal-macos-lts" -export ALL_UNIVERSAL_DIRECTORY="${BASEDIR}/../../prebuilt/bundle-apple-all-universal-macos-lts" create_package() { local PACKAGE_NAME="ffmpeg-kit-macos-$1" @@ -20,38 +18,14 @@ create_package() { cp -R "${SOURCE_PACKAGE}"/* "${CURRENT_PACKAGE}" || exit 1 cd "${CURRENT_PACKAGE}" || exit 1 - zip -r "../ffmpeg-kit-$1-${PACKAGE_VERSION}-macos-framework.zip" * || exit 1 + zip -r -y "../ffmpeg-kit-$1-${PACKAGE_VERSION}-macos-framework.zip" * || exit 1 # COPY PODSPEC AS THE LAST ITEM cp "${BASEDIR}"/apple/"${PACKAGE_NAME}".podspec "${CURRENT_PACKAGE}" || exit 1 sed -i '' "s/VERSION/${PACKAGE_VERSION}/g" "${CURRENT_PACKAGE}"/"${PACKAGE_NAME}".podspec || exit 1 sed -i '' "s/DESCRIPTION/${PACKAGE_DESCRIPTION}/g" "${CURRENT_PACKAGE}"/"${PACKAGE_NAME}".podspec || exit 1 + sed -i '' "s|ffmpegkit\.framework\/LICENSE|ffmpegkit\.framework\/Resources\/LICENSE|g" "${CURRENT_PACKAGE}"/"${PACKAGE_NAME}".podspec || exit 1 sed -i '' "s/\,\'AVFoundation\'//g" "${CURRENT_PACKAGE}"/"${PACKAGE_NAME}".podspec || exit 1 - - mkdir -p "${ALL_UNIVERSAL_DIRECTORY}" || exit 1 - local CURRENT_UNIVERSAL_PACKAGE="${ALL_UNIVERSAL_DIRECTORY}/${PACKAGE_NAME}-universal" - rm -rf "${CURRENT_UNIVERSAL_PACKAGE}" - mkdir -p "${CURRENT_UNIVERSAL_PACKAGE}"/include || exit 1 - mkdir -p "${CURRENT_UNIVERSAL_PACKAGE}"/lib || exit 1 - - cd "${SOURCE_UNIVERSAL_PACKAGE}" || exit 1 - find . -name "*.dylib" -exec cp {} "${CURRENT_UNIVERSAL_PACKAGE}"/lib \; || exit 1 - - # COPY THE LICENSE FILE OF EACH LIBRARY - LICENSE_FILES=$(find . -name LICENSE | grep -vi ffmpeg) - - for LICENSE_FILE in ${LICENSE_FILES[@]} - do - LIBRARY_NAME=$(echo "${LICENSE_FILE}" | sed 's/\.\///g;s/\/LICENSE//g') - cp "${LICENSE_FILE}" "${CURRENT_UNIVERSAL_PACKAGE}"/LICENSE."${LIBRARY_NAME}" || exit 1 - done - - cp -R "${SOURCE_UNIVERSAL_PACKAGE}"/ffmpeg-kit/include/* "${CURRENT_UNIVERSAL_PACKAGE}"/include || exit 1 - cp -R "${SOURCE_UNIVERSAL_PACKAGE}"/ffmpeg/include/* "${CURRENT_UNIVERSAL_PACKAGE}"/include || exit 1 - cp "${SOURCE_UNIVERSAL_PACKAGE}"/ffmpeg/LICENSE "${CURRENT_UNIVERSAL_PACKAGE}"/LICENSE || exit 1 - - cd "${ALL_UNIVERSAL_DIRECTORY}" || exit 1 - zip -r "ffmpeg-kit-$1-${PACKAGE_VERSION}-macos-static-universal.zip" "${PACKAGE_NAME}"-universal || exit 1 } if [[ $# -ne 1 ]]; @@ -76,9 +50,6 @@ fi rm -rf "${COCOAPODS_DIRECTORY}" mkdir -p "${COCOAPODS_DIRECTORY}" || exit 1 -rm -rf "${ALL_UNIVERSAL_DIRECTORY}" -mkdir -p "${ALL_UNIVERSAL_DIRECTORY}" || exit 1 - # MIN RELEASE cd "${BASEDIR}/../.." || exit 1 ./macos.sh ${MACOS_LTS_OPTIONS} || exit 1 diff --git a/tools/release/macos.sh b/tools/release/macos.sh index 189b048..036266c 100755 --- a/tools/release/macos.sh +++ b/tools/release/macos.sh @@ -18,7 +18,7 @@ create_package() { cp -R "${SOURCE_PACKAGE}"/* "${CURRENT_PACKAGE}" || exit 1 cd "${CURRENT_PACKAGE}" || exit 1 - zip -r "../ffmpeg-kit-$1-${PACKAGE_VERSION}-macos-xcframework.zip" * || exit 1 + zip -r -y "../ffmpeg-kit-$1-${PACKAGE_VERSION}-macos-xcframework.zip" * || exit 1 # COPY PODSPEC AS THE LAST ITEM cp "${BASEDIR}"/apple/"${PACKAGE_NAME}".podspec "${CURRENT_PACKAGE}" || exit 1 diff --git a/tools/release/tvos.lts.sh b/tools/release/tvos.lts.sh index b1f52d7..c386f29 100755 --- a/tools/release/tvos.lts.sh +++ b/tools/release/tvos.lts.sh @@ -6,8 +6,6 @@ source ./common.sh export SOURCE_PACKAGE="${BASEDIR}/../../prebuilt/bundle-apple-framework-tvos-lts" export COCOAPODS_DIRECTORY="${BASEDIR}/../../prebuilt/bundle-apple-cocoapods-tvos-lts" -export SOURCE_UNIVERSAL_PACKAGE="${BASEDIR}/../../prebuilt/bundle-apple-universal-tvos-lts" -export ALL_UNIVERSAL_DIRECTORY="${BASEDIR}/../../prebuilt/bundle-apple-all-universal-tvos-lts" create_package() { local PACKAGE_NAME="ffmpeg-kit-tvos-$1" @@ -20,38 +18,13 @@ create_package() { cp -R "${SOURCE_PACKAGE}"/* "${CURRENT_PACKAGE}" || exit 1 cd "${CURRENT_PACKAGE}" || exit 1 - zip -r "../ffmpeg-kit-$1-${PACKAGE_VERSION}-tvos-framework.zip" * || exit 1 + zip -r -y "../ffmpeg-kit-$1-${PACKAGE_VERSION}-tvos-framework.zip" * || exit 1 # COPY PODSPEC AS THE LAST ITEM cp "${BASEDIR}"/apple/"${PACKAGE_NAME}".podspec "${CURRENT_PACKAGE}" || exit 1 sed -i '' "s/VERSION/${PACKAGE_VERSION}/g" "${CURRENT_PACKAGE}"/"${PACKAGE_NAME}".podspec || exit 1 sed -i '' "s/DESCRIPTION/${PACKAGE_DESCRIPTION}/g" "${CURRENT_PACKAGE}"/"${PACKAGE_NAME}".podspec || exit 1 sed -i '' "s/\,\'VideoToolbox\'//g" "${CURRENT_PACKAGE}"/"${PACKAGE_NAME}".podspec || exit 1 - - mkdir -p "${ALL_UNIVERSAL_DIRECTORY}" || exit 1 - local CURRENT_UNIVERSAL_PACKAGE="${ALL_UNIVERSAL_DIRECTORY}/${PACKAGE_NAME}-universal" - rm -rf "${CURRENT_UNIVERSAL_PACKAGE}" - mkdir -p "${CURRENT_UNIVERSAL_PACKAGE}"/include || exit 1 - mkdir -p "${CURRENT_UNIVERSAL_PACKAGE}"/lib || exit 1 - - cd "${SOURCE_UNIVERSAL_PACKAGE}" || exit 1 - find . -name "*.dylib" -exec cp {} "${CURRENT_UNIVERSAL_PACKAGE}"/lib \; || exit 1 - - # COPY LICENSE FILE OF EACH LIBRARY - LICENSE_FILES=$(find . -name LICENSE | grep -vi ffmpeg) - - for LICENSE_FILE in ${LICENSE_FILES[@]} - do - LIBRARY_NAME=$(echo "${LICENSE_FILE}" | sed 's/\.\///g;s/\/LICENSE//g') - cp "${LICENSE_FILE}" "${CURRENT_UNIVERSAL_PACKAGE}"/LICENSE."${LIBRARY_NAME}" || exit 1 - done - - cp -R "${SOURCE_UNIVERSAL_PACKAGE}"/ffmpeg-kit/include/* "${CURRENT_UNIVERSAL_PACKAGE}"/include || exit 1 - cp -R "${SOURCE_UNIVERSAL_PACKAGE}"/ffmpeg/include/* "${CURRENT_UNIVERSAL_PACKAGE}"/include || exit 1 - cp "${SOURCE_UNIVERSAL_PACKAGE}"/ffmpeg/LICENSE "${CURRENT_UNIVERSAL_PACKAGE}"/LICENSE || exit 1 - - cd "${ALL_UNIVERSAL_DIRECTORY}" || exit 1 - zip -r "ffmpeg-kit-$1-${PACKAGE_VERSION}-tvos-static-universal.zip" "${PACKAGE_NAME}"-universal || exit 1 } if [[ $# -ne 1 ]]; @@ -76,9 +49,6 @@ fi rm -rf "${COCOAPODS_DIRECTORY}" mkdir -p "${COCOAPODS_DIRECTORY}" || exit 1 -rm -rf "${ALL_UNIVERSAL_DIRECTORY}" -mkdir -p "${ALL_UNIVERSAL_DIRECTORY}" || exit 1 - # MIN RELEASE cd "${BASEDIR}/../.." || exit 1 ./tvos.sh ${TVOS_LTS_OPTIONS} || exit 1 diff --git a/tools/release/tvos.sh b/tools/release/tvos.sh index 6dd0c47..8f635a1 100755 --- a/tools/release/tvos.sh +++ b/tools/release/tvos.sh @@ -18,7 +18,7 @@ create_package() { cp -R "${SOURCE_PACKAGE}"/* "${CURRENT_PACKAGE}" || exit 1 cd "${CURRENT_PACKAGE}" || exit 1 - zip -r "../ffmpeg-kit-$1-${PACKAGE_VERSION}-tvos-xcframework.zip" * || exit 1 + zip -r -y "../ffmpeg-kit-$1-${PACKAGE_VERSION}-tvos-xcframework.zip" * || exit 1 # COPY PODSPEC AS THE LAST ITEM cp "${BASEDIR}"/apple/"${PACKAGE_NAME}".podspec "${CURRENT_PACKAGE}" || exit 1