#!/bin/sh
|
|
# This script registers the toolchain of a Buildroot project into the
|
# Eclipse plugin. To do so, it adds a new line for the Buildroot
|
# toolchain into the $HOME/.buildroot-eclipse.toolchains file, which
|
# the Eclipse Buildroot plugin reads to discover automatically the
|
# available Buildroot toolchains on the system.
|
#
|
# This script should typically not be called manually. Instead, one
|
# should enable the BR2_ECLIPSE_REGISTER configuration option, which
|
# will lead Buildroot to automatically call this script with the
|
# appropriate arguments.
|
#
|
# Usage:
|
# eclipse-register-toolchain project-directory toolchain-prefix architecture
|
#
|
# project-directory is the absolute path to the Buildroot project
|
# output directory (which contains the host/, target/, build/,
|
# images/, etc. subdirectories). It should be an absolute and
|
# canonical path.
|
#
|
# toolchain-prefix is the prefix of the cross-compilation tools, i.e
|
# 'arm-linux-' if the cross-compiler executable is 'arm-linux-gcc'.
|
#
|
# architecture is the lower-cased name of the architecture targetted
|
# by the Buildroot project.
|
|
if test $# -ne 3; then
|
echo "Invalid number of arguments."
|
echo "Usage: $0 project-directory toolchain-prefix architecture"
|
exit 1
|
fi
|
|
project_directory=$1
|
toolchain_prefix=$2
|
architecture=$3
|
|
if test ! -d ${project_directory} ; then
|
echo "Non-existing project directory ${project_directory}"
|
exit 1
|
fi
|
|
if test ! -d ${project_directory}/host ; then
|
echo "Your project directory does not look like a Buildroot output"
|
exit 1
|
fi
|
|
if test ! -e ${project_directory}/host/bin/${toolchain_prefix}gcc ; then
|
echo "Cannot find the cross-compiler in the project directory"
|
exit 1
|
fi
|
|
TOOLCHAIN_ECLIPSE_FILE=${HOME}/.buildroot-eclipse.toolchains
|
|
# First, we remove all lines from the ${TOOLCHAIN_ECLISPE_FILE} that
|
# correspond to toolchains that no longer exist.
|
if test -f ${TOOLCHAIN_ECLIPSE_FILE} ; then
|
mv ${TOOLCHAIN_ECLIPSE_FILE} ${TOOLCHAIN_ECLIPSE_FILE}.tmp
|
cat ${TOOLCHAIN_ECLIPSE_FILE}.tmp | while read toolchain ; do
|
path=$(echo ${toolchain} | cut -f1 -d ':')
|
# Filter lines corresponding to still existing projects
|
echo "Testing ${path} ..."
|
if ! test -d ${path} ; then
|
continue
|
fi
|
# .. and the current project
|
if test ${path} = ${project_directory} ; then
|
continue
|
fi
|
echo ${toolchain} >> ${TOOLCHAIN_ECLIPSE_FILE}
|
done
|
rm ${TOOLCHAIN_ECLIPSE_FILE}.tmp
|
fi
|
|
# Add the toolchain
|
echo "${project_directory}:${toolchain_prefix}:${architecture}" >> ${TOOLCHAIN_ECLIPSE_FILE}
|