diff options
Diffstat (limited to 'release.sh')
-rwxr-xr-x | release.sh | 209 |
1 files changed, 209 insertions, 0 deletions
diff --git a/release.sh b/release.sh new file mode 100755 index 000000000..3b77dad72 --- /dev/null +++ b/release.sh @@ -0,0 +1,209 @@ +#!/bin/bash +## +## Copyright (c) 2010 The VP8 project authors. All Rights Reserved. +## +## Use of this source code is governed by a BSD-style license and patent +## grant that can be found in the LICENSE file in the root of the source +## tree. All contributing project authors may be found in the AUTHORS +## file in the root of the source tree. +## + + + +self=$0 + +for opt; do + case $opt in + --clean) clean=yes;; + -j*) jopt=$opt;; + *) echo "Unsupported option $opt"; exit 1;; + esac +done + +TAB=$'\t' +cat > release.mk << EOF +%\$(BUILD_SFX).tar.bz2: %/.done +${TAB}@echo "\$(subst .tar.bz2,,\$@): tarball" +${TAB}@cd \$(dir \$<); tar -cf - \$(subst .tar.bz2,,\$@) | bzip2 > ../\$@ + +%\$(BUILD_SFX).zip: %/.done +${TAB}@echo "\$(subst .zip,,\$@): zip" +${TAB}@rm -f \$@; cd \$(dir \$<); zip -rq ../\$@ \$(subst .zip,,\$@) + +logs/%\$(BUILD_SFX).log.bz2: %/.done +${TAB}@echo "\$(subst .log.bz2,,\$(notdir \$@)): tarlog" +${TAB}@mkdir -p logs +${TAB}@cat \$< | bzip2 > \$@ + +%/.done: +${TAB}@mkdir -p \$(dir \$@) +${TAB}@echo "\$(dir \$@): configure \$(CONFIG_OPTS) \$(EXTRA_PATH)" +${TAB}@cd \$(dir \$@); export PATH=\$\$PATH\$(EXTRA_PATH); ../\$(SRC_ROOT)/configure \$(CONFIG_OPTS) >makelog.txt 2>&1 +${TAB}@echo "\$(dir \$@): make" +${TAB}@cd \$(dir \$@); PATH=\$\$PATH\$(EXTRA_PATH) \$(MAKE) >>makelog.txt 2>&1 +${TAB}@echo "\$(dir \$@): test install" +${TAB}@cd \$(dir \$@); PATH=\$\$PATH\$(EXTRA_PATH) \$(MAKE) install >>makelog.txt 2>&1 +${TAB}@cd \$(dir \$@)/dist/build; PATH=\$\$PATH\$(EXTRA_PATH) \$(MAKE) >>makelog.txt 2>&1 +${TAB}@echo "\$(dir \$@): install" +${TAB}@cd \$(dir \$@); PATH=\$\$PATH\$(EXTRA_PATH) \$(MAKE) install DIST_DIR=\$(TGT) >>makelog.txt 2>&1 +${TAB}@touch \$@ + +#include release-deps.mk +EOF + +#[ -f release-deps.mk ] || \ +# find ${self%/*} -name .git -prune -o -type f -print0 \ +# | xargs -0 -n1 echo \ +# | sed -e 's; ;\\ ;g' | awk '{print "$(TGT)/.done: "$0}' > release-deps.mk + +build_config_list() { + for codec in $CODEC_LIST; do + for arch in $ARCH_LIST; do + if [ -n "$OS_LIST" ]; then + for os in $OS_LIST; do + CONFIGS="$CONFIGS vpx-${codec}-${arch}-${os}" + done + else + CONFIGS="$CONFIGS vpx-${codec}-${arch}" + fi + done + done +} + +CODEC_LIST="vp8 vp8cx vp8dx" +case `uname` in + Linux*) + ARCH_LIST="x86 x86_64" + OS_LIST="linux" + build_config_list + ARCH_LIST="armv5te armv6 armv7" + OS_LIST="linux-gcc" + + ;; + CYGWIN*) + TAR_SFX=.zip + for vs in vs7 vs8; do + for arch in x86-win32 x86_64-win64; do + for msvcrt in md mt; do + case $vs,$arch in + vs7,x86_64-win64) continue ;; + esac + ARCH_LIST="$ARCH_LIST ${arch}${msvcrt}-${vs}" + done + done + done + ;; + Darwin*) + ARCH_LIST="universal" + OS_LIST="darwin8 darwin9" + ;; + sun_os*) + ARCH_LIST="x86 x86_64" + OS_LIST="solaris" + ;; +esac +build_config_list + +TAR_SFX=${TAR_SFX:-.tar.bz2} +ARM_TOOLCHAIN=/usr/local/google/csl-2009q3-67 +for cfg in $CONFIGS; do + full_cfg=$cfg + cfg=${cfg#vpx-} + opts= + rm -f makelog.txt + + case $cfg in + src-*) opts="$opts --enable-codec-srcs" + cfg=${cfg#src-} + ;; + eval-*) opts="$opts --enable-eval-limit" + cfg=${cfg#src-} + ;; + esac + + case $cfg in + # + # Linux + # + *x86-linux) + opts="$opts --target=x86-linux-gcc" ;; + *x86_64-linux) + opts="$opts --target=x86_64-linux-gcc" ;; + *arm*-linux-gcc) + armv=${cfg##*armv} + armv=${armv%%-*} + opts="$opts --target=armv${armv}-linux-gcc" ;; + *arm*-linux-rvct) + armv=${cfg##*armv} + armv=${armv%%-*} + opts="$opts --target=armv${armv}-linux-rvct" + opts="$opts --libc=${ARM_TOOLCHAIN}/arm-none-linux-gnueabi/libc" ;; + + + # + # Windows + # + # need --enable-debug-libs for now until we're smarter about + # building the debug/release from the customer installed + # environment + *-x86-win32*-vs*) + opts="$opts --target=x86-win32-vs${cfg##*-vs} --enable-debug-libs";; + *-x86_64-win64*-vs8) + opts="$opts --target=x86_64-win64-vs8 --enable-debug-libs" ;; + + # + # Darwin + # + *-universal-darwin*) + opts="$opts --target=universal-darwin${cfg##*-darwin}-gcc" ;; + + # + # Solaris + # + *x86-solaris) + opts="$opts --target=x86-solaris-gcc" ;; + *x86_64-solaris) + opts="$opts --target=x86_64-solaris-gcc" ;; + esac + + case $cfg in + *x86-linux | *x86-solaris) opts="$opts --enable-pic" ;; + esac + + case $cfg in + *-win[36][24]mt*) opts="$opts --enable-static-msvcrt" ;; + *-win[36][24]md*) opts="$opts --disable-static-msvcrt" ;; + esac + + opts="$opts --disable-codecs" + case $cfg in + vp8*) opts="$opts --enable-vp8" ;; + esac + case $cfg in + *cx-*) opts="${opts}-encoder" ;; + *dx-*) opts="${opts}-decoder" ;; + esac + opts="$opts --enable-postproc" + + [ "x${clean}" == "xyes" ] \ + && rm -rf ${full_cfg}${BUILD_SFX}${TAR_SFX} \ + && rm -rf logs/${full_cfg}${BUILD_SFX}.log.bz2 + + TGT=${full_cfg}${BUILD_SFX} + BUILD_TARGETS="logs/${TGT}.log.bz2 ${TGT}${TAR_SFX}" + echo "${BUILD_TARGETS}: CONFIG_OPTS=$opts" >>release.mk + echo "${BUILD_TARGETS}: TGT=${TGT}" >>release.mk + case $cfg in + *-arm*-linux-*) + echo "${BUILD_TARGETS}: EXTRA_PATH=:${ARM_TOOLCHAIN}/bin/" >>release.mk ;; + *-vs7) + echo "${BUILD_TARGETS}: EXTRA_PATH=:/cygdrive/c/Program\ Files/Microsoft\ Visual\ Studio\ .NET\ 2003/Common7/IDE" >>release.mk ;; + *-vs8) + echo "${BUILD_TARGETS}: EXTRA_PATH=:/cygdrive/c/Program\ Files/Microsoft\ Visual\ Studio\ 8/Common7/IDE" >>release.mk ;; + esac + MAKE_TGTS="$MAKE_TGTS ${TGT}${TAR_SFX} logs/${TGT}.log.bz2" +done + + +${MAKE:-make} ${jopt:--j3} -f release.mk \ + SRC_ROOT=${self%/*} BUILD_SFX=${BUILD_SFX} ${MAKE_TGTS} |