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