...
This commit is contained in:
Executable
+216
@@ -0,0 +1,216 @@
|
||||
#!/bin/bash
|
||||
|
||||
# LOAD INITIAL SETTINGS
|
||||
export BASEDIR="$(pwd)"
|
||||
export FFMPEG_KIT_BUILD_TYPE="linux"
|
||||
source "${BASEDIR}"/scripts/variable.sh
|
||||
source "${BASEDIR}"/scripts/function-${FFMPEG_KIT_BUILD_TYPE}.sh
|
||||
disabled_libraries=()
|
||||
|
||||
# SET DEFAULTS SETTINGS
|
||||
enable_default_linux_architectures
|
||||
|
||||
echo -e "INFO: Build options: $*\n" 1>>"${BASEDIR}"/build.log 2>&1
|
||||
|
||||
# SET DEFAULT BUILD OPTIONS
|
||||
export GPL_ENABLED="no"
|
||||
DISPLAY_HELP=""
|
||||
BUILD_FULL=""
|
||||
BUILD_TYPE_ID=""
|
||||
BUILD_VERSION=$(git describe --tags --always 2>>"${BASEDIR}"/build.log)
|
||||
|
||||
# MAIN BUILDS ENABLED BY DEFAULT
|
||||
enable_main_build
|
||||
|
||||
# PROCESS BUILD OPTIONS
|
||||
while [ ! $# -eq 0 ]; do
|
||||
|
||||
case $1 in
|
||||
-h | --help)
|
||||
DISPLAY_HELP="1"
|
||||
;;
|
||||
-v | --version)
|
||||
display_version
|
||||
exit 0
|
||||
;;
|
||||
--skip-*)
|
||||
SKIP_LIBRARY=$(echo $1 | sed -e 's/^--[A-Za-z]*-//g')
|
||||
|
||||
skip_library "${SKIP_LIBRARY}"
|
||||
;;
|
||||
--no-output-redirection)
|
||||
no_output_redirection
|
||||
;;
|
||||
--no-workspace-cleanup-*)
|
||||
NO_WORKSPACE_CLEANUP_LIBRARY=$(echo $1 | sed -e 's/^--[A-Za-z]*-[A-Za-z]*-[A-Za-z]*-//g')
|
||||
|
||||
no_workspace_cleanup_library "${NO_WORKSPACE_CLEANUP_LIBRARY}"
|
||||
;;
|
||||
--no-link-time-optimization)
|
||||
no_link_time_optimization
|
||||
;;
|
||||
-d | --debug)
|
||||
enable_debug
|
||||
;;
|
||||
-s | --speed)
|
||||
optimize_for_speed
|
||||
;;
|
||||
-l | --lts) ;;
|
||||
-f | --force)
|
||||
export BUILD_FORCE="1"
|
||||
;;
|
||||
--reconf-*)
|
||||
CONF_LIBRARY=$(echo $1 | sed -e 's/^--[A-Za-z]*-//g')
|
||||
|
||||
reconf_library "${CONF_LIBRARY}"
|
||||
;;
|
||||
--rebuild-*)
|
||||
BUILD_LIBRARY=$(echo $1 | sed -e 's/^--[A-Za-z]*-//g')
|
||||
|
||||
rebuild_library "${BUILD_LIBRARY}"
|
||||
;;
|
||||
--redownload-*)
|
||||
DOWNLOAD_LIBRARY=$(echo $1 | sed -e 's/^--[A-Za-z]*-//g')
|
||||
|
||||
redownload_library "${DOWNLOAD_LIBRARY}"
|
||||
;;
|
||||
--full)
|
||||
BUILD_FULL="1"
|
||||
;;
|
||||
--enable-gpl)
|
||||
export 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')
|
||||
|
||||
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')
|
||||
|
||||
disable_arch "${DISABLED_ARCH}"
|
||||
;;
|
||||
--api-level=*)
|
||||
API_LEVEL=$(echo $1 | sed -e 's/^--[A-Za-z]*-[A-Za-z]*=//g')
|
||||
|
||||
export API=${API_LEVEL}
|
||||
;;
|
||||
*)
|
||||
print_unknown_option "$1"
|
||||
;;
|
||||
esac
|
||||
shift
|
||||
done
|
||||
|
||||
if [[ -z ${BUILD_VERSION} ]]; then
|
||||
echo -e "\n(*) error: Can not run git commands in this folder. See build.log.\n"
|
||||
exit 1
|
||||
fi
|
||||
|
||||
# PROCESS FULL OPTION AS LAST OPTION
|
||||
if [[ -n ${BUILD_FULL} ]]; then
|
||||
for library in {0..91}; do
|
||||
if [ ${GPL_ENABLED} == "yes" ]; then
|
||||
enable_library "$(get_library_name $library)" 1
|
||||
else
|
||||
if [[ $(is_gpl_licensed $library) -eq 1 ]]; then
|
||||
enable_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
|
||||
exit 0
|
||||
fi
|
||||
|
||||
echo -e "\nBuilding ffmpeg-kit ${BUILD_TYPE_ID}library for Linux\n"
|
||||
echo -e -n "INFO: Building ffmpeg-kit ${BUILD_VERSION} ${BUILD_TYPE_ID}library for Linux: " 1>>"${BASEDIR}"/build.log 2>&1
|
||||
echo -e "$(date)\n" 1>>"${BASEDIR}"/build.log 2>&1
|
||||
|
||||
# PRINT BUILD SUMMARY
|
||||
print_enabled_architectures
|
||||
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_LINUX_XVIDCORE,$LIBRARY_LINUX_X265,$LIBRARY_LINUX_LIBVIDSTAB,$LIBRARY_LINUX_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
|
||||
|
||||
echo -n -e "\nDownloading sources: "
|
||||
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_library_sources "${ENABLED_LIBRARIES[@]}"
|
||||
|
||||
# THIS WILL SAVE ARCHITECTURES TO BUILD
|
||||
TARGET_ARCH_LIST=()
|
||||
|
||||
# BUILD ENABLED LIBRARIES ON ENABLED ARCHITECTURES
|
||||
for run_arch in {0..12}; do
|
||||
if [[ ${ENABLED_ARCHITECTURES[$run_arch]} -eq 1 ]]; then
|
||||
export ARCH=$(get_arch_name "$run_arch")
|
||||
export FULL_ARCH=$(get_full_arch_name "$run_arch")
|
||||
|
||||
# EXECUTE MAIN BUILD SCRIPT
|
||||
. "${BASEDIR}"/scripts/main-linux.sh "${ENABLED_LIBRARIES[@]}"
|
||||
|
||||
TARGET_ARCH_LIST+=("${FULL_ARCH}")
|
||||
|
||||
# CLEAR FLAGS
|
||||
for library in {0..91}; do
|
||||
library_name=$(get_library_name "${library}")
|
||||
unset "$(echo "OK_${library_name}" | sed "s/\-/\_/g")"
|
||||
unset "$(echo "DEPENDENCY_REBUILT_${library_name}" | sed "s/\-/\_/g")"
|
||||
done
|
||||
fi
|
||||
done
|
||||
|
||||
# BUILD FFMPEG-KIT BUNDLE
|
||||
if [[ -n ${TARGET_ARCH_LIST[0]} ]]; then
|
||||
|
||||
echo -e -n "\nCreating the bundle under prebuilt: "
|
||||
|
||||
echo -e "DEBUG: Creating the bundle directory\n" 1>>"${BASEDIR}"/build.log 2>&1
|
||||
|
||||
initialize_folder "${BASEDIR}/prebuilt/$(get_bundle_directory)"
|
||||
|
||||
create_linux_bundle
|
||||
|
||||
echo -e "ok\n"
|
||||
fi
|
||||
Reference in New Issue
Block a user