diff options
Diffstat (limited to 'eclipse/scripts/create_all_symlinks.sh')
-rwxr-xr-x | eclipse/scripts/create_all_symlinks.sh | 396 |
1 files changed, 0 insertions, 396 deletions
diff --git a/eclipse/scripts/create_all_symlinks.sh b/eclipse/scripts/create_all_symlinks.sh deleted file mode 100755 index a78cf1f..0000000 --- a/eclipse/scripts/create_all_symlinks.sh +++ /dev/null @@ -1,396 +0,0 @@ -#!/bin/bash -# See usage() below for the description. - -function usage() { - cat <<EOF -# This script copies the .jar files that each plugin depends on into the plugins libs folder. -# By default, on Mac & Linux, this script creates symlinks from the libs folder to the jar file. -# Since Windows does not support symlinks, the jar files are copied. -# -# Options: -# -f : to copy files rather than creating symlinks on the Mac/Linux platforms. -# -d : print make dependencies instead of running make; doesn't copy files. -# -c : copy files expected after make dependencies (reported by -d) have been built. -# -# The purpose of -d/-c is to include the workflow in a make file: -# - the make rule should depend on \$(shell create_all_symlinks -d) -# - the rule body should perform \$(shell create_all_symlinks -c [-f]) -EOF -} - -# CD to the top android directory -PROG_DIR=`dirname "$0"` -cd "${PROG_DIR}/../../../" - -HOST=`uname` -USE_COPY="" # force copy dependent jar files rather than creating symlinks -ONLY_SHOW_DEPS="" # only report make dependencies but don't build them nor copy. -ONLY_COPY_DEPS="" # only copy dependencies built by make; uses -f as needed. - -function die() { - echo "Error: $*" >/dev/stderr - exit 1 -} - -function warn() { - # Only print something if not in show-deps mode - if [[ -z $ONLY_SHOW_DEPS ]]; then - echo "$*" - fi -} - -function printGradleJarPath() { - # Prints to stdout the absolute path of the JAR assembled for a given gradle project. - # $1 = source dir, e.g. tools/base or tools/swt - # $2 = the gradle project name e.g. common or lint-api - echo "## Quering Gradle properties for '$2' in '$1'." > /dev/stderr - ( cd $1 && \ - ./gradlew :$2:properties | awk ' - BEGIN { B=""; N=""; V="" } - /^archivesBaseName:/ { N=$2 } - /^buildDir:/ { D=$2 } - /^version:/ { V=$2 } - END { print D "/libs/" N "-" V ".jar" }' ) -} - -## parse arguments -while [ $# -gt 0 ]; do - case "$1" in - "-f" ) - USE_COPY="1" - ;; - "-d" ) - ONLY_SHOW_DEPS="1" - ;; - "-c" ) - ONLY_COPY_DEPS="1" - ;; - * ) - usage - exit 2 - esac - shift -done - -warn "## Running $0" - -if [[ "${HOST:0:6}" == "CYGWIN" || "$USE_MINGW" == "1" ]]; then - # This is either Cygwin or Linux/Mingw cross-compiling to Windows. - PLATFORM="windows-x86" - if [[ "${HOST:0:6}" == "CYGWIN" ]]; then - # We can't use symlinks under Cygwin - USE_COPY="1" - fi -elif [[ "$HOST" == "Linux" ]]; then - PLATFORM="linux-x86" -elif [[ "$HOST" == "Darwin" ]]; then - PLATFORM="darwin-x86" -else - die "Unsupported platform ($HOST). Aborting." -fi - -if [[ "$USE_COPY" == "1" ]]; then - function cpfile { # $1=source $2=dest $3=optional dest filename - cp -fv $1 $2/$3 - } -else - # computes the "reverse" path, e.g. "a/b/c" => "../../.." - function back() { - echo $1 | sed 's@[^/]*@..@g' - } - - function cpfile { # $1=source $2=dest $3=optional dest filename - local src=$1 - if [[ "${src:0:1}" != "/" ]]; then - # Not an absolute path. We assume a relative path to be - # relative to the android root and we want to make it - # relative to the destination dir. - src=$(back $2)/$1 - fi - ln -svf $src $2/$3 - } -fi - -DEST="sdk/eclipse/scripts" - -set -e # fail early -LIBS="" -CP_FILES="" - - -### Configure which libs to build. -# -# Each entry for LIBS needs to be prefixed with the way we want to build it: -# make: - a library built using its traditional Android.mk -# base: - a gradle library located in tools/base -# swt: - a gradle library located in toosl/swt -# -# LIBS entries without or with an unknown ":" prefix will generate an error. - -### BASE ### - -BASE_PLUGIN_DEST="sdk/eclipse/plugins/com.android.ide.eclipse.base/libs" -BASE_PLUGIN_LIBS="base:common swt:sdkstats base:sdklib base:dvlib base:layoutlib-api base:sdk-common" -BASE_PLUGIN_PREBUILTS="\ - prebuilts/tools/common/m2/repository/net/sf/kxml/kxml2/2.3.0/kxml2-2.3.0.jar \ - prebuilts/tools/common/m2/repository/org/apache/commons/commons-compress/1.0/commons-compress-1.0.jar \ - prebuilts/tools/common/m2/repository/com/google/guava/guava/15.0/guava-15.0.jar \ - prebuilts/tools/common/m2/repository/commons-logging/commons-logging/1.1.1/commons-logging-1.1.1.jar \ - prebuilts/tools/common/m2/repository/commons-codec/commons-codec/1.4/commons-codec-1.4.jar \ - prebuilts/tools/common/m2/repository/org/apache/httpcomponents/httpclient/4.1.1/httpclient-4.1.1.jar \ - prebuilts/tools/common/m2/repository/org/apache/httpcomponents/httpcore/4.1/httpcore-4.1.jar \ - prebuilts/tools/common/m2/repository/org/apache/httpcomponents/httpmime/4.1/httpmime-4.1.jar" - -# temporarily disabled -# prebuilts/tools/common/m2/repository/org/bouncycastle/bcpkix-jdk15on/1.48/bcpkix-jdk15on-1.48.jar \ -# prebuilts/tools/common/m2/repository/org/bouncycastle/bcprov-jdk15on/1.48/bcprov-jdk15on-1.48.jar" - -LIBS="$LIBS $BASE_PLUGIN_LIBS" -CP_FILES="$CP_FILES @:$BASE_PLUGIN_DEST $BASE_PLUGIN_LIBS $BASE_PLUGIN_PREBUILTS" - - -### ADT ### - -ADT_DEST="sdk/eclipse/plugins/com.android.ide.eclipse.adt/libs" -ADT_LIBS="make:ant-glob base:asset-studio base:lint-api base:lint-checks base:ninepatch make:propertysheet \ - base:rule-api swt:sdkuilib swt:swtmenubar base:manifest-merger" -ADT_PREBUILTS="\ - prebuilts/tools/common/freemarker/freemarker-2.3.19.jar \ - prebuilts/tools/common/m2/repository/org/ow2/asm/asm/5.0.3/asm-5.0.3.jar \ - prebuilts/tools/common/m2/repository/org/ow2/asm/asm-tree/5.0.3/asm-tree-5.0.3.jar \ - prebuilts/tools/common/m2/repository/org/ow2/asm/asm-analysis/5.0.3/asm-analysis-5.0.3.jar \ - prebuilts/tools/common/m2/repository/com/android/tools/external/lombok/lombok-ast/0.2.3/lombok-ast-0.2.3.jar" - -LIBS="$LIBS $ADT_LIBS" -CP_FILES="$CP_FILES @:$ADT_DEST $ADT_LIBS $ADT_PREBUILTS" - - -### DDMS ### - -DDMS_DEST="sdk/eclipse/plugins/com.android.ide.eclipse.ddms/libs" -DDMS_LIBS="base:ddmlib swt:ddmuilib swt:swtmenubar swt:uiautomatorviewer" - -DDMS_PREBUILTS="\ - prebuilts/tools/common/m2/repository/jfree/jcommon/1.0.12/jcommon-1.0.12.jar \ - prebuilts/tools/common/m2/repository/jfree/jfreechart/1.0.9/jfreechart-1.0.9.jar \ - prebuilts/tools/common/m2/repository/jfree/jfreechart-swt/1.0.9/jfreechart-swt-1.0.9.jar" - -LIBS="$LIBS $DDMS_LIBS" -CP_FILES="$CP_FILES @:$DDMS_DEST $DDMS_LIBS $DDMS_PREBUILTS" - - -### TEST ### - -TEST_DEST="sdk/eclipse/plugins/com.android.ide.eclipse.tests" -TEST_LIBS="make:easymock base:testutils" -TEST_PREBUILTS="prebuilts/tools/common/m2/repository/net/sf/kxml/kxml2/2.3.0/kxml2-2.3.0.jar" - -LIBS="$LIBS $TEST_LIBS" -CP_FILES="$CP_FILES @:$TEST_DEST $TEST_LIBS $TEST_PREBUILTS" - - -### BRIDGE ### - -if [[ $PLATFORM != "windows-x86" ]]; then - # We can't build enough of the platform on Cygwin to create layoutlib - BRIDGE_LIBS="make:layoutlib base:ninepatch" - - LIBS="$LIBS $BRIDGE_LIBS" -fi - - -### HIERARCHYVIEWER ### - -HV_DEST="sdk/eclipse/plugins/com.android.ide.eclipse.hierarchyviewer/libs" -HV_LIBS="swt:hierarchyviewer2lib swt:swtmenubar" - -LIBS="$LIBS $HV_LIBS" -CP_FILES="$CP_FILES @:$HV_DEST $HV_LIBS" - - -### TRACEVIEW ### - -TV_DEST="sdk/eclipse/plugins/com.android.ide.eclipse.traceview/libs" -TV_LIBS="swt:traceview" - -LIBS="$LIBS $TV_LIBS" -CP_FILES="$CP_FILES @:$TV_DEST $TV_LIBS" - - -### MONITOR ### - -MONITOR_DEST="sdk/eclipse/plugins/com.android.ide.eclipse.monitor/libs" -MONITOR_LIBS="swt:sdkuilib" - -LIBS="$LIBS $MONITOR_LIBS" -CP_FILES="$CP_FILES @:$MONITOR_DEST $MONITOR_LIBS" - - -### SDKMANAGER ### - -SDKMAN_LIBS="swt:swtmenubar" - -LIBS="$LIBS $SDKMAN_LIBS" - - -### GL DEBUGGER ### - -if [[ $PLATFORM != "windows-x86" ]]; then - # liblzf doesn't build under cygwin. If necessary, this should be fixed first. - - GLD_DEST="sdk/eclipse/plugins/com.android.ide.eclipse.gldebugger/libs" - GLD_LIBS="make:host-libprotobuf-java-2.3.0-lite make:liblzf" - - LIBS="$LIBS $GLD_LIBS" - CP_FILES="$CP_FILES @:$GLD_DEST $GLD_LIBS" -fi - - -#--- Determine what to build - -UNPROCESSED="" -GRADLE_SWT="" -GRADLE_BASE="" -MAKE_TARGETS="" -for LIB in $LIBS; do - if [[ "${LIB:0:5}" == "base:" ]]; then - GRADLE_BASE="$GRADLE_BASE :${LIB:5}:assemble" - elif [[ "${LIB:0:4}" == "swt:" ]]; then - GRADLE_SWT="$GRADLE_SWT :${LIB:4}:assemble" - elif [[ "${LIB:0:5}" == "make:" ]]; then - MAKE_TARGETS="$MAKE_TARGETS ${LIB:5}" - else - UNPROCESSED="$UNPROCESSED $LIB" - fi -done - -unset LIBS # we shouldn't use this anymore, it has been split up just above. - - -if [[ -n $UNPROCESSED ]]; then - die "## The following libs lack a prefix (make:, base: or swt:): $UNPROCESSED" -fi - -# In the mode to only echo dependencies, output them and we're done -if [[ -n $ONLY_SHOW_DEPS ]]; then - echo $MAKE_TARGETS - exit 0 -fi - -# --- Gradle Build --- - -# tools/base: if we need it for SWT, we build them all and public local. -# Otherwise we do a specific tools/base build on just the requested targets. - -if [[ -n "$GRADLE_SWT" ]]; then - echo "### Starting tools/base: gradlew assemble publishLocal" - (cd tools/base && ./gradlew assemble publishLocal) -elif [[ -n "$GRADLE_BASE" ]]; then - echo "### Starting tools/base: gradlew $GRADLE_BASE" - (cd tools/base && ./gradlew $GRADLE_BASE) -fi - -# tools/swt: build requested targets - -if [[ -n "$GRADLE_SWT" ]]; then - echo "### Starting tools/swt: gradlew $GRADLE_SWT" - (cd tools/swt && ./gradlew $GRADLE_SWT) -fi - -# --- Android.mk Build --- - -# If some of the libs are available in prebuilts/devtools, use link to them directly -# instead of trying to rebuild them so remove them from the libs to build. Note that -# they are already listed in CP_FILES so we'll adjust the source to copy later. - -NEW_TARGETS="" -for LIB in $MAKE_TARGETS; do - J="prebuilts/devtools/tools/lib/$LIB.jar" - if [[ ! -f $J ]]; then - J="prebuilts/devtools/adt/lib/$LIB.jar" - fi - if [[ -f $J ]]; then - warn "## Using existing $J" - else - NEW_TARGETS="$NEW_TARGETS $LIB" - fi -done -MAKE_TARGETS="$NEW_TARGETS" -unset NEW_TARGETS - -if [[ -z $ONLY_COPY_DEPS ]]; then - if [[ -n $MAKE_TARGETS ]]; then - ( # Make sure we have lunch sdk-<something> - if [[ ! "$TARGET_PRODUCT" ]]; then - warn "## TARGET_PRODUCT is not set, running build/envsetup.sh" - . build/envsetup.sh - warn "## lunch sdk-eng" - lunch sdk-eng - fi - - J="4" - [[ $(uname) == "Darwin" ]] && J=$(sysctl hw.ncpu | cut -d : -f 2 | tr -d ' ') - [[ $(uname) == "Linux" ]] && J=$(cat /proc/cpuinfo | grep processor | wc -l) - - warn "## Building libs: make -j$J $MAKE_TARGETS" - make -j${J} $MAKE_TARGETS - ) - fi -fi - -# --- Copy resulting files --- - -DEST="" -for SRC in $CP_FILES; do - if [[ "${SRC:0:2}" == "@:" ]]; then - DEST="${SRC:2}" - mkdir -vp "$DEST" - continue - fi - - ORIG_SRC="$SRC" - DEST_FILE="" - - if [[ "${SRC:0:5}" == "base:" ]]; then - SRC="${SRC:5}" - ORIG_SRC="$SRC" - DEST_FILE="$SRC.jar" - SRC=$(printGradleJarPath tools/base $SRC) - elif [[ "${SRC:0:4}" == "swt:" ]]; then - SRC="${SRC:4}" - ORIG_SRC="$SRC" - DEST_FILE="$SRC.jar" - SRC=$(printGradleJarPath tools/swt $SRC) - elif [[ "${SRC:0:5}" == "make:" ]]; then - SRC="${SRC:5}" - ORIG_SRC="$SRC" - fi - - if [[ ! -f "$SRC" ]]; then - # Take a prebuilts/devtools instead of a framework one if possible. - SRC="prebuilts/devtools/tools/lib/$SRC.jar" - if [[ ! -f "$SRC" ]]; then - SRC="prebuilts/devtools/adt/lib/$ORIG_SRC.jar" - fi - if [[ ! -f "$SRC" ]]; then - SRC="out/host/$PLATFORM/framework/$ORIG_SRC.jar" - fi - fi - if [[ -f "$SRC" ]]; then - if [[ ! -d "$DEST" ]]; then - die "Invalid cp_file dest directory: $DEST" - fi - - cpfile "$SRC" "$DEST" "$DEST_FILE" - else - die "## Unknown source '$ORIG_SRC' to copy in '$DEST'" - fi -done - -# OS-specific post operations - -if [ "${HOST:0:6}" == "CYGWIN" ]; then - chmod -v a+rx "$ADT_DEST"/*.jar -fi - -echo "### $0 done" |