hc
2024-08-12 233ab1bd4c5697f5cdec94e60206e8c6ac609b4c
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
#!/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}