diff options
author | Dan Albert <danalbert@google.com> | 2015-08-28 12:58:03 -0700 |
---|---|---|
committer | Dan Albert <danalbert@google.com> | 2015-08-28 12:58:03 -0700 |
commit | e2c6a2756cc96f570889c196b1caf413181e2fb3 (patch) | |
tree | f4efc31e3b237bcd51dcdf7f7a4d172baaa3469b | |
parent | d4d816b443cb5798f0f41e0c3f05f6c2dd1d87b5 (diff) | |
download | yasm-e2c6a2756cc96f570889c196b1caf413181e2fb3.tar.gz |
Move build-yasm.sh from ndk/ to toolchain/yasm/.
Change-Id: If8834c3f44136cccd69bcb422a170ac7f5d4d717
-rwxr-xr-x | build-yasm.sh | 150 |
1 files changed, 150 insertions, 0 deletions
diff --git a/build-yasm.sh b/build-yasm.sh new file mode 100755 index 00000000..2356f7c9 --- /dev/null +++ b/build-yasm.sh @@ -0,0 +1,150 @@ +#!/bin/sh +# +# Copyright (C) 2013 The Android Open Source Project +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +# +# Build the host version of the yasm executable and place it +# at the right location + +PROGDIR=$(dirname $0) +. $PROGDIR/prebuilt-common.sh + +PROGRAM_PARAMETERS="<src-dir> <ndk-dir>" +PROGRAM_DESCRIPTION=\ +"Rebuild yasm tool used by the NDK." + +register_try64_option +register_canadian_option +register_jobs_option + +BUILD_OUT=$TMPDIR/build/yasm +OPTION_BUILD_OUT= +register_var_option "--build-out=<path>" OPTION_BUILD_OUT "Set temporary build directory" + +PACKAGE_DIR= +register_var_option "--package-dir=<path>" PACKAGE_DIR "Archive binaries into package directory" + +extract_parameters "$@" + +set_parameters () +{ + SRC_DIR="$1" + NDK_DIR="$2" + + # Check source directory + # + if [ -z "$SRC_DIR" ] ; then + echo "ERROR: Missing source directory parameter. See --help for details." + exit 1 + fi + + if [ ! -d "$SRC_DIR/yasm" ] ; then + echo "ERROR: Source directory does not contain llvm sources: $SRC_DIR/yasm" + exit 1 + fi + + SRC_DIR=`cd $SRC_DIR; pwd` + log "Using source directory: $SRC_DIR" + + # Check NDK installation directory + # + if [ -z "$NDK_DIR" ] ; then + echo "ERROR: Missing NDK directory parameter. See --help for details." + exit 1 + fi + + if [ ! -d "$NDK_DIR" ] ; then + mkdir -p $NDK_DIR + if [ $? != 0 ] ; then + echo "ERROR: Could not create target NDK installation path: $NDK_DIR" + exit 1 + fi + fi + NDK_DIR=`cd $NDK_DIR; pwd` + log "Using NDK directory: $NDK_DIR" +} + +set_parameters $PARAMETERS + +prepare_abi_configure_build +prepare_host_build + +fix_option BUILD_OUT "$OPTION_BUILD_OUT" "build directory" +setup_default_log_file $BUILD_OUT/config.log + +rm -rf $BUILD_OUT +mkdir -p $BUILD_OUT + +log "Copying yasm sources to $BUILD_OUT/src" +mkdir -p "$BUILD_OUT/src" && copy_directory "$SRC_DIR/yasm" "$BUILD_OUT/src" +fail_panic "Could not copy yasm sources to: $BUILD_OUT/src" + +CONFIGURE_FLAGS="--disable-nls --disable-rpath --prefix=$BUILD_OUT/prefix" +if [ "$MINGW" = "yes" ]; then + # Required for a proper mingw cross compile + CONFIGURE_FLAGS=$CONFIGURE_FLAGS" --host=i586-pc-mingw32" +fi + +if [ "$DARWIN" = "yes" ]; then + # Required for a proper darwin cross compile + CONFIGURE_FLAGS=$CONFIGURE_FLAGS" --host=$ABI_CONFIGURE_HOST" +fi + +prepare_canadian_toolchain $BUILD_OUT + +CFLAGS=$HOST_CFLAGS" -O2 -s" +export CC CFLAGS + +log "Configuring the build" +cd $BUILD_OUT/src && run ./configure $CONFIGURE_FLAGS --build=$ABI_CONFIGURE_BUILD +fail_panic "configure failed in $BUILD_OUT/yasm!" + +log "Building yasm" +# build yasm in -j1 to avoid a race condition not well understood at this moment +# which causes failure with error message reads: +# perfect.c: Duplicates keys! +# make: *** [x86insn_nasm.c] Error 1 +# make: *** Waiting for unfinished jobs.... +run make -j1 # -j$NUM_JOBS +fail_panic "Failed to build the $BUILD_OUT/yasm!" + +log "Installing yasm" +run make install +fail_panic "Failed to install $BUILD_OUT/yasm!" + +run rm -rf $BUILD_OUT/prefix/share + +log "Stripping yasm" +test -z "$STRIP" && STRIP=strip +find $BUILD_OUT/prefix/bin -maxdepth 1 -type f -exec $STRIP {} \; + +log "Copying yasm" +#run copy_directory "$BUILD_OUT/prefix" "$(get_prebuilt_install_prefix)" +SUBDIR=$(get_prebuilt_host_exec yasm) +OUT=$NDK_DIR/$SUBDIR +run mkdir -p $(dirname "$OUT") && cp $BUILD_OUT/prefix/bin/$(get_host_exec_name yasm) $OUT +fail_panic "Could not copy yasm" + +if [ "$PACKAGE_DIR" ]; then + ARCHIVE=ndk-yasm-$HOST_TAG.tar.bz2 + dump "Packaging: $ARCHIVE" + mkdir -p "$PACKAGE_DIR" && + pack_archive "$PACKAGE_DIR/$ARCHIVE" "$NDK_DIR" "$SUBDIR" + fail_panic "Could not package archive: $PACKAGE_DIR/$ARCHIVE" +fi + +log "Cleaning up" +if [ -z "$OPTION_BUILD_OUT" ] ; then + rm -rf $BUILD_OUT +fi |