1 #!/bin/sh 2 ## 3 ## Copyright (c) 2010 The WebM project authors. All Rights Reserved. 4 ## 5 ## Use of this source code is governed by a BSD-style license 6 ## that can be found in the LICENSE file in the root of the source 7 ## tree. An additional intellectual property rights grant can be found 8 ## in the file PATENTS. All contributing project authors may 9 ## be found in the AUTHORS file in the root of the source tree. 10 ## 11 12 13 14 self=$0 15 16 for opt; do 17 case $opt in 18 --clean) clean=yes;; 19 -j*) jopt=$opt;; 20 *) echo "Unsupported option $opt"; exit 1;; 21 esac 22 done 23 24 TAB="$(printf '\t')" 25 cat > release.mk << EOF 26 %\$(BUILD_SFX).tar.bz2: %/.done 27 ${TAB}@echo "\$(subst .tar.bz2,,\$@): tarball" 28 ${TAB}@cd \$(dir \$<); tar -cf - \$(subst .tar.bz2,,\$@) | bzip2 > ../\$@ 29 30 %\$(BUILD_SFX).zip: %/.done 31 ${TAB}@echo "\$(subst .zip,,\$@): zip" 32 ${TAB}@rm -f \$@; cd \$(dir \$<); zip -rq ../\$@ \$(subst .zip,,\$@) 33 34 logs/%\$(BUILD_SFX).log.bz2: %/.done 35 ${TAB}@echo "\$(subst .log.bz2,,\$(notdir \$@)): tarlog" 36 ${TAB}@mkdir -p logs 37 ${TAB}@cat \$< | bzip2 > \$@ 38 39 %/.done: 40 ${TAB}@mkdir -p \$(dir \$@) 41 ${TAB}@echo "\$(dir \$@): configure \$(CONFIG_OPTS) \$(EXTRA_PATH)" 42 ${TAB}@cd \$(dir \$@); export PATH=\$\$PATH\$(EXTRA_PATH); ../\$(SRC_ROOT)/configure \$(CONFIG_OPTS) >makelog.txt 2>&1 43 ${TAB}@echo "\$(dir \$@): make" 44 ${TAB}@cd \$(dir \$@); PATH=\$\$PATH\$(EXTRA_PATH) \$(MAKE) >>makelog.txt 2>&1 45 ${TAB}@echo "\$(dir \$@): test install" 46 ${TAB}@cd \$(dir \$@); PATH=\$\$PATH\$(EXTRA_PATH) \$(MAKE) install >>makelog.txt 2>&1 47 ${TAB}@cd \$(dir \$@)/dist/build; PATH=\$\$PATH\$(EXTRA_PATH) \$(MAKE) >>makelog.txt 2>&1 48 ${TAB}@echo "\$(dir \$@): install" 49 ${TAB}@cd \$(dir \$@); PATH=\$\$PATH\$(EXTRA_PATH) \$(MAKE) install DIST_DIR=\$(TGT) >>makelog.txt 2>&1 50 ${TAB}@touch \$@ 51 52 #include release-deps.mk 53 EOF 54 55 #[ -f release-deps.mk ] || \ 56 # find ${self%/*} -name .git -prune -o -type f -print0 \ 57 # | xargs -0 -n1 echo \ 58 # | sed -e 's; ;\\ ;g' | awk '{print "$(TGT)/.done: "$0}' > release-deps.mk 59 60 build_config_list() { 61 for codec in $CODEC_LIST; do 62 for arch in $ARCH_LIST; do 63 if [ -n "$OS_LIST" ]; then 64 for os in $OS_LIST; do 65 CONFIGS="$CONFIGS vpx-${codec}-${arch}-${os}" 66 done 67 else 68 CONFIGS="$CONFIGS vpx-${codec}-${arch}" 69 fi 70 done 71 done 72 } 73 74 CODEC_LIST="vp8 vp8cx vp8dx" 75 case `uname` in 76 Linux*) 77 ARCH_LIST="x86 x86_64" 78 OS_LIST="linux" 79 build_config_list 80 ARCH_LIST="armv5te armv6 armv7" 81 OS_LIST="linux-gcc" 82 83 ;; 84 CYGWIN*) 85 TAR_SFX=.zip 86 for vs in vs7 vs8; do 87 for arch in x86-win32 x86_64-win64; do 88 for msvcrt in md mt; do 89 case $vs,$arch in 90 vs7,x86_64-win64) continue ;; 91 esac 92 ARCH_LIST="$ARCH_LIST ${arch}${msvcrt}-${vs}" 93 done 94 done 95 done 96 ;; 97 Darwin*) 98 ARCH_LIST="universal" 99 OS_LIST="darwin8 darwin9" 100 ;; 101 sun_os*) 102 ARCH_LIST="x86 x86_64" 103 OS_LIST="solaris" 104 ;; 105 esac 106 build_config_list 107 108 TAR_SFX=${TAR_SFX:-.tar.bz2} 109 ARM_TOOLCHAIN=/usr/local/google/csl-2009q3-67 110 for cfg in $CONFIGS; do 111 full_cfg=$cfg 112 cfg=${cfg#vpx-} 113 opts= 114 rm -f makelog.txt 115 116 case $cfg in 117 src-*) opts="$opts --enable-codec-srcs" 118 cfg=${cfg#src-} 119 ;; 120 eval-*) opts="$opts --enable-eval-limit" 121 cfg=${cfg#src-} 122 ;; 123 esac 124 125 case $cfg in 126 # 127 # Linux 128 # 129 *x86-linux) 130 opts="$opts --target=x86-linux-gcc" ;; 131 *x86_64-linux) 132 opts="$opts --target=x86_64-linux-gcc" ;; 133 *arm*-linux-gcc) 134 armv=${cfg##*armv} 135 armv=${armv%%-*} 136 opts="$opts --target=armv${armv}-linux-gcc" ;; 137 *arm*-linux-rvct) 138 armv=${cfg##*armv} 139 armv=${armv%%-*} 140 opts="$opts --target=armv${armv}-linux-rvct" 141 opts="$opts --libc=${ARM_TOOLCHAIN}/arm-none-linux-gnueabi/libc" ;; 142 143 144 # 145 # Windows 146 # 147 # need --enable-debug-libs for now until we're smarter about 148 # building the debug/release from the customer installed 149 # environment 150 *-x86-win32*-vs*) 151 opts="$opts --target=x86-win32-vs${cfg##*-vs} --enable-debug-libs";; 152 *-x86_64-win64*-vs8) 153 opts="$opts --target=x86_64-win64-vs8 --enable-debug-libs" ;; 154 155 # 156 # Darwin 157 # 158 *-universal-darwin*) 159 opts="$opts --target=universal-darwin${cfg##*-darwin}-gcc" ;; 160 161 # 162 # Solaris 163 # 164 *x86-solaris) 165 opts="$opts --target=x86-solaris-gcc" ;; 166 *x86_64-solaris) 167 opts="$opts --target=x86_64-solaris-gcc" ;; 168 esac 169 170 case $cfg in 171 *x86-linux | *x86-solaris) opts="$opts --enable-pic" ;; 172 esac 173 174 case $cfg in 175 *-win[36][24]mt*) opts="$opts --enable-static-msvcrt" ;; 176 *-win[36][24]md*) opts="$opts --disable-static-msvcrt" ;; 177 esac 178 179 opts="$opts --disable-codecs" 180 case $cfg in 181 vp8*) opts="$opts --enable-vp8" ;; 182 esac 183 case $cfg in 184 *cx-*) opts="${opts}-encoder" ;; 185 *dx-*) opts="${opts}-decoder" ;; 186 esac 187 opts="$opts --enable-postproc" 188 189 [ "x${clean}" = "xyes" ] \ 190 && rm -rf ${full_cfg}${BUILD_SFX}${TAR_SFX} \ 191 && rm -rf logs/${full_cfg}${BUILD_SFX}.log.bz2 192 193 TGT=${full_cfg}${BUILD_SFX} 194 BUILD_TARGETS="logs/${TGT}.log.bz2 ${TGT}${TAR_SFX}" 195 echo "${BUILD_TARGETS}: CONFIG_OPTS=$opts" >>release.mk 196 echo "${BUILD_TARGETS}: TGT=${TGT}" >>release.mk 197 case $cfg in 198 *-arm*-linux-*) 199 echo "${BUILD_TARGETS}: EXTRA_PATH=:${ARM_TOOLCHAIN}/bin/" >>release.mk ;; 200 *-vs7) 201 echo "${BUILD_TARGETS}: EXTRA_PATH=:/cygdrive/c/Program\ Files/Microsoft\ Visual\ Studio\ .NET\ 2003/Common7/IDE" >>release.mk ;; 202 *-vs8) 203 echo "${BUILD_TARGETS}: EXTRA_PATH=:/cygdrive/c/Program\ Files/Microsoft\ Visual\ Studio\ 8/Common7/IDE" >>release.mk ;; 204 esac 205 MAKE_TGTS="$MAKE_TGTS ${TGT}${TAR_SFX} logs/${TGT}.log.bz2" 206 done 207 208 209 ${MAKE:-make} ${jopt:--j3} -f release.mk \ 210 SRC_ROOT=${self%/*} BUILD_SFX=${BUILD_SFX} ${MAKE_TGTS} 211