aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorDan Albert <danalbert@google.com>2015-08-28 12:58:03 -0700
committerDan Albert <danalbert@google.com>2015-08-28 12:58:03 -0700
commite2c6a2756cc96f570889c196b1caf413181e2fb3 (patch)
treef4efc31e3b237bcd51dcdf7f7a4d172baaa3469b
parentd4d816b443cb5798f0f41e0c3f05f6c2dd1d87b5 (diff)
downloadyasm-e2c6a2756cc96f570889c196b1caf413181e2fb3.tar.gz
Move build-yasm.sh from ndk/ to toolchain/yasm/.
Change-Id: If8834c3f44136cccd69bcb422a170ac7f5d4d717
-rwxr-xr-xbuild-yasm.sh150
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