1# FFmpeg build configure 2 3#!/bin/bash 4 5set -ex 6FFMPEG_PATH=$1 7FFMPEG_OUT_PATH=$2 8FFMPEG_PLAT=$3 9LLVM_PATH=$4 10SYSROOT_PATH=$5 11USE_CLANG_COVERAGE=$6 12 13oldPath=`pwd` 14FFMPEG_PATH=${oldPath}/${FFMPEG_PATH} 15FFMPEG_OUT_PATH=${oldPath}/${FFMPEG_OUT_PATH} 16currentPath=${oldPath}/${FFMPEG_OUT_PATH}tmp 17mkdir -p ${currentPath} 18cd ${currentPath} 19if [ ${FFMPEG_PLAT} = "aarch64" ]; then 20 21FF_CONFIG_OPTIONS=" 22 --arch=aarch64 23 --target-os=darwin 24 --disable-programs 25 --disable-avdevice 26 --disable-postproc 27 --disable-avfilter 28 --disable-network 29 --disable-dwt 30 --disable-faan 31 --disable-pixelutils 32 --disable-bsfs 33 --disable-encoders 34 --disable-decoders 35 --disable-hwaccels 36 --disable-muxers 37 --disable-demuxers 38 --disable-parsers 39 --disable-protocols 40 --disable-devices 41 --disable-filters 42 --disable-doc 43 --disable-debug 44 --disable-iconv 45 --disable-stripping 46 --disable-vaapi 47 --disable-vdpau 48 --disable-zlib 49 --disable-xlib 50 --disable-cuvid 51 --disable-cuda 52 --disable-libxcb 53 --disable-libxcb_shm 54 --disable-libxcb_shape 55 --disable-libxcb_xfixes 56 --disable-sdl2 57 --disable-bzlib 58 --disable-lzma 59 --disable-vulkan 60 --enable-demuxer=mp3,aac,ape,flac,ogg,wav,mov,mpegts,amr,amrnb,amrwb,matroska 61 --enable-muxer=mp4,h264,ipod 62 --enable-parser=h263,h264,mpeg4video,vp8,vp9,mpegvideo 63 --enable-parser=mpegaudio,aac,aac_latm,av3a,amr 64 --enable-decoder=h263,h264,mpeg2video,mpeg4,vp8,vp9 65 --enable-decoder=mp3,mp3float,aac,aac_latm,ape,flac,vorbis,opus,amrnb,amrwb 66 --enable-decoder=png,bmp 67 --enable-encoder=aac,aac_latm,opus,flac 68 --enable-encoder=mpeg4,h263 69 --enable-bsf=h264_mp4toannexb 70 --enable-protocol=file 71 --enable-cross-compile 72 --enable-shared 73 --enable-lsp 74 --cc=${LLVM_PATH}/bin/clang 75 --ld=${LLVM_PATH}/bin/clang 76 --strip=${LLVM_PATH}/bin/llvm-strip 77" 78EXTRA_CFLAGS=" 79 --target=aarch64-darwin 80 --sysroot=${SYSROOT_PATH} 81" 82EXTRA_LDFLAGS=" 83 --target=aarch64-darwin 84 --sysroot=${SYSROOT_PATH} 85" 86 87if [ ${USE_CLANG_COVERAGE} = "true" ]; then 88 EXTRA_CFLAGS=" 89 --target=aarch64-darwin 90 --sysroot=${SYSROOT_PATH} 91 --coverage 92 -mllvm 93 -limited-coverage-experimental=true 94 " 95 EXTRA_LDFLAGS=" 96 --target=aarch64-darwin 97 --sysroot=${SYSROOT_PATH} 98 --coverage 99 -fno-use-cxa-atexit 100 " 101fi 102 103FF_CONFIG_OPTIONS=`echo $FF_CONFIG_OPTIONS` 104 105${FFMPEG_PATH}/configure ${FF_CONFIG_OPTIONS} --extra-cflags="${EXTRA_CFLAGS}" --extra-ldflags="${EXTRA_LDFLAGS}" 106 107else 108 109FF_CONFIG_OPTIONS=" 110 --disable-programs 111 --disable-avdevice 112 --disable-postproc 113 --disable-avfilter 114 --disable-network 115 --disable-dwt 116 --disable-faan 117 --disable-pixelutils 118 --disable-bsfs 119 --disable-encoders 120 --disable-decoders 121 --disable-hwaccels 122 --disable-muxers 123 --disable-demuxers 124 --disable-parsers 125 --disable-protocols 126 --disable-devices 127 --disable-filters 128 --disable-asm 129 --disable-doc 130 --disable-debug 131 --disable-iconv 132 --disable-stripping 133 --disable-vaapi 134 --disable-vdpau 135 --disable-zlib 136 --disable-xlib 137 --disable-cuvid 138 --disable-cuda 139 --disable-libxcb 140 --disable-libxcb_shm 141 --disable-libxcb_shape 142 --disable-libxcb_xfixes 143 --disable-sdl2 144 --disable-bzlib 145 --disable-lzma 146 --enable-demuxer=mp3,aac,ape,flac,ogg,wav,mov,mpegts,amr,amrnb,amrwb,matroska 147 --enable-muxer=mp4,h264,ipod 148 --enable-parser=h263,h264,mpeg4video,vp8,vp9,mpegvideo 149 --enable-parser=mpegaudio,aac,aac_latm,av3a,amr 150 --enable-decoder=h263,h264,mpeg2video,mpeg4,vp8,vp9 151 --enable-decoder=mp3,mp3float,aac,aac_latm,ape,flac,vorbis,opus,amrnb,amrwb 152 --enable-decoder=png,bmp 153 --enable-encoder=aac,aac_latm,opus,flac 154 --enable-encoder=mpeg4,h263 155 --enable-bsf=h264_mp4toannexb 156 --enable-protocol=file 157 --enable-lsp 158" 159 160FF_CONFIG_OPTIONS=`echo $FF_CONFIG_OPTIONS` 161 162${FFMPEG_PATH}/configure ${FF_CONFIG_OPTIONS} 163 164fi 165sed -i '' 's/HAVE_SYSCTL 1/HAVE_SYSCTL 0/g' config.h 166sed -i '' 's/HAVE_SYSCTL=yes/!HAVE_SYSCTL=yes/g' ./ffbuild/config.mak 167sed -i '' 's/HAVE_GLOB 1/HAVE_GLOB 0/g' config.h 168sed -i '' 's/HAVE_GLOB=yes/!HAVE_GLOB=yes/g' config.h 169sed -i '' 's/HAVE_GMTIME_R 1/HAVE_GMTIME_R 0/g' config.h 170sed -i '' 's/HAVE_LOCALTIME_R 1/HAVE_LOCALTIME_R 0/g' config.h 171sed -i '' 's/HAVE_PTHREAD_CANCEL 1/HAVE_PTHREAD_CANCEL 0/g' config.h 172sed -i '' 's/HAVE_VALGRIND_VALGRIND_H 1/HAVE_VALGRIND_VALGRIND_H 0/g' config.h 173 174tmp_file=".tmpfile" 175## remove invalid restrict define 176sed 's/#define av_restrict restrict/#define av_restrict/' ./config.h >$tmp_file 177 178mv $tmp_file ./config.h 179 180## replace original FFMPEG_CONFIGURATION define with $FF_CONFIG_OPTIONS 181sed '/^#define FFMPEG_CONFIGURATION/d' ./config.h >$tmp_file 182mv $tmp_file ./config.h 183total_line=`wc -l ./config.h | sed -e 's/^[ \t]*//g' | cut -d ' ' -f 1` 184tail_line=`expr $total_line - 3` 185head -3 config.h > $tmp_file 186echo "#define FFMPEG_CONFIGURATION \"${FF_CONFIG_OPTIONS}\"" >> $tmp_file 187tail -$tail_line config.h >> $tmp_file 188mv $tmp_file ./config.h 189 190rm -f config.err 191 192## rm BUILD_ROOT information 193sed '/^BUILD_ROOT=/d' ./ffbuild/config.mak > $tmp_file 194rm -f ./ffbuild/config.mak 195mv $tmp_file ./ffbuild/config.mak 196 197## rm amr-eabi-gcc 198sed '/^CC=arm-eabi-gcc/d' ./ffbuild/config.mak > $tmp_file 199rm -f ./ffbuild/config.mak 200mv $tmp_file ./ffbuild/config.mak 201 202## rm amr-eabi-gcc 203sed '/^AS=arm-eabi-gcc/d' ./ffbuild/config.mak > $tmp_file 204rm -f ./ffbuild/config.mak 205mv $tmp_file ./ffbuild/config.mak 206 207 208## rm amr-eabi-gcc 209sed '/^LD=arm-eabi-gcc/d' ./ffbuild/config.mak > $tmp_file 210rm -f ./ffbuild/config.mak 211mv $tmp_file ./ffbuild/config.mak 212 213## rm amr-eabi-gcc 214sed '/^DEPCC=arm-eabi-gcc/d' ./ffbuild/config.mak > $tmp_file 215rm -f ./ffbuild/config.mak 216mv $tmp_file ./ffbuild/config.mak 217 218sed -i '' 's/restrict restrict/restrict /g' config.h 219 220sed -i '' '/getenv(x)/d' config.h 221sed -i '' 's/HAVE_DOS_PATHS 0/HAVE_DOS_PATHS 1/g' config.h 222 223mv config.h ${FFMPEG_OUT_PATH}/config.h 224mv ./ffbuild/config.mak ${FFMPEG_OUT_PATH}/config.mak 225rm -rf ${FFMPEG_OUT_PATH}/libavcodec 226mv -f libavcodec ${FFMPEG_OUT_PATH} 227rm -rf ${FFMPEG_OUT_PATH}/libavformat 228mv -f libavformat ${FFMPEG_OUT_PATH} 229rm -rf ${FFMPEG_OUT_PATH}/libavutil 230mv -f libavutil ${FFMPEG_OUT_PATH} 231rm -rf ${FFMPEG_OUT_PATH}/libavdevice 232mv -f libavdevice ${FFMPEG_OUT_PATH} 233rm -rf ${FFMPEG_OUT_PATH}/libavfilter 234mv -f libavfilter ${FFMPEG_OUT_PATH} 235rm -rf ./ffbuild 236cd $oldPath 237rm -rf ${currentPath} 238 239## other work need to be done manually 240cat <<!EOF 241##################################################### 242 ****NOTICE**** 243You need to modify the file config.mak and delete 244all full path string in macro: 245SRC_PATH, SRC_PATH_BARE, BUILD_ROOT, LDFLAGS. 246Please refer to the old version of config.mak to 247check how to modify it. 248##################################################### 249!EOF 250