| #!/bin/sh |
| # |
| # Copyright (C) 2010 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. |
| # |
| # This shell script is a wrapper to launch the NDK build from the |
| # command-line inside an application project path. |
| # |
| # Typical usage is: |
| # |
| # cd $PROJECT_PATH |
| # ndk-build |
| # |
| # Assuming that the Android NDK root path is in your PATH. However, |
| # you can also invoke it directly as: |
| # |
| # $NDK_ROOT/ndk-build |
| # |
| # This really is a tiny wrapper around GNU Make. |
| # |
| |
| # Ensure we get the full path of this script's directory |
| # this is needed if the caller uses the -C <path> GNU Make |
| # option, as in: |
| # |
| # cd ndk |
| # ./ndk-build -C <project-path> |
| # |
| |
| if [ -z "$NDK_ROOT" ] ; then |
| if [ $# -lt 1 ]; then |
| echo "Usage: $0 --ndk-root=<where> ..." |
| echo |
| exit 1 |
| fi |
| |
| if [ `echo $1 | awk -F '=' '{print $1}'` != "--ndk-root" ]; then |
| echo "Usage: $0 --ndk-root=<where> ..." |
| echo |
| exit 1 |
| fi |
| NDK_ROOT=`echo $1 | awk -F '=' '{print $2}'` |
| shift 1 |
| fi |
| |
| PROGDIR=`dirname $0` |
| PROGDIR=`cd $PROGDIR && pwd` |
| |
| if [ -z "$OUT" ] ; then |
| echo "ERROR: Your OUT variable is not defined. Please set it by running \"lunch PRODUCT\"" |
| echo "This is a workaroud for libbcc" |
| exit 1 |
| fi |
| |
| # If GNUMAKE is defined, check that it points to a valid file |
| if [ -n "$GNUMAKE" ] ; then |
| ABS_GNUMAKE=`which $GNUMAKE 2> /dev/null` |
| if [ $? != 0 ] ; then |
| echo "ERROR: Your GNUMAKE variable is defined to an invalid name: $GNUMAKE" |
| echo "Please fix it to point to a valid make executable (e.g. /usr/bin/make)" |
| exit 1 |
| fi |
| GNUMAKE="$ABS_GNUMAKE" |
| else |
| # Otherwise, use 'make' and check that it is available |
| GNUMAKE=`which make 2> /dev/null` |
| if [ $? != 0 ] ; then |
| echo "ERROR: Cannot find 'make' program. Please install Cygwin make package" |
| echo "or define the GNUMAKE variable to point to it." |
| exit 1 |
| fi |
| fi |
| |
| # On Windows, when running under cygwin, check that we are |
| # invoking a cygwin-compatible GNU Make binary. It is unfortunately |
| # common for app developers to have another non-cygwin compatible |
| # |
| if [ "$OSTYPE" = "cygwin" ] ; then |
| GNUMAKE=`cygpath -u $GNUMAKE` |
| PROGDIR_MIXED=`cygpath -m $PROGDIR` |
| CYGWIN_GNUMAKE=`$GNUMAKE -f "$PROGDIR_MIXED/build/core/check-cygwin-make.mk" 2>&1` |
| if [ $? != 0 ] ; then |
| echo "ERROR: You are using a non-Cygwin compatible Make program." |
| echo "Currently using: `cygpath -m $GNUMAKE`" |
| echo "" |
| echo "To solve the issue, follow these steps:" |
| echo "" |
| echo "1. Ensure that the Cygwin 'make' package is installed." |
| echo " NOTE: You will need GNU Make 3.81 or later!" |
| echo "" |
| echo "2. Define the GNUMAKE environment variable to point to it, as in:" |
| echo "" |
| echo " export GNUMAKE=/usr/bin/make" |
| echo "" |
| echo "3. Call 'ndk-build' again." |
| echo "" |
| exit 1 |
| fi |
| fi |
| |
| NDK_ROOT=$NDK_ROOT $GNUMAKE -f $PROGDIR/build/core/build-local.mk "$@" |
| |
| # Transfer the control power to NDK |
| if [ $? -eq 0 ]; then |
| $GNUMAKE -f $NDK_ROOT/build/core/build-local.mk "$@" |
| fi |