summaryrefslogtreecommitdiff
path: root/scripts/build/debug/gdb.sh
blob: 457e89986cd02b08474f690b83721cadd1de74b5 (plain)
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
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
# Build script for the gdb debug facility

is_enabled="${CT_GDB}"

do_debug_gdb_suffix() {
    case "${CT_GDB_VERSION}" in
        snapshot)   ;;
        *)          echo "-${CT_GDB_VERSION}";;
    esac
}

do_debug_gdb_get() {
    CT_GetFile "gdb`do_debug_gdb_suffix`"                           \
               ftp://ftp.gnu.org/pub/gnu/gdb                        \
               ftp://sources.redhat.com/pub/gdb/releases            \
               ftp://sources.redhat.com/pub/gdb/old-releases        \
               ftp://sources.redhat.com/pub/gdb/snapshots/current 
}

do_debug_gdb_extract() {
    CT_ExtractAndPatch "gdb`do_debug_gdb_suffix`"
}

do_debug_gdb_build() {
    gdb_src_dir="${CT_SRC_DIR}/gdb`do_debug_gdb_suffix`"

    extra_config=
    # Version 6.3 and below behave badly with gdbmi
    case "${CT_GDB_VERSION}" in
        6.2*|6.3)   extra_config="${extra_config} --disable-gdbmi";;
    esac

    if [ "${CT_GDB_CROSS}" = "y" ]; then
        CT_DoStep EXTRA "Installing cross-gdb"
        CT_DoLog EXTRA "Configuring cross-gdb"

        mkdir -p "${CT_BUILD_DIR}/build-gdb-cross"
        cd "${CT_BUILD_DIR}/build-gdb-cross"

        "${gdb_src_dir}/configure"                      \
            --build=${CT_BUILD}                         \
            --host=${CT_HOST}                           \
            --target=${CT_TARGET}                       \
            --prefix="${CT_INSTALL_DIR}"                \
            --with-build-sysroot="${CT_SYSROOT_DIR}"    \
            --enable-threads                            \
            ${extra_config}                             2>&1 |CT_DoLog ALL

        CT_DoLog EXTRA "Building cross-gdb"
        make ${PARALLELMFLAGS}                          2>&1 |CT_DoLog ALL

        CT_DoLog EXTRA "Installing cross-gdb"
        make install                                    2>&1 |CT_DoLog ALL

        CT_EndStep

        CT_DoStep EXTRA "Installing gdbserver"
        CT_DoLog EXTRA "Configuring gdbserver"

        mkdir -p "${CT_BUILD_DIR}/build-gdb-gdbserver"
        cd "${CT_BUILD_DIR}/build-gdb-gdbserver"

        # Workaround for bad versions, where the configure
        # script for gdbserver is not executable...
        # Bah, GNU folks strike again... :-(
        chmod +x "${gdb_src_dir}/gdb/gdbserver/configure"

        "${gdb_src_dir}/gdb/gdbserver/configure"        \
            --build=${CT_BUILD}                         \
            --host=${CT_TARGET}                         \
            --target=${CT_TARGET}                       \
            --prefix=/usr                               \
            --sysconfdir=/etc                           \
            --localstatedir=/var                        \
            --includedir="${CT_HEADERS_DIR}"            \
            --with-build-sysroot="${CT_SYSROOT_DIR}"    \
            --program-prefix=                           \
            --without-uiout                             \
            --disable-tui                               \
            --disable-gdbtk                             \
            --without-x                                 \
            --without-included-gettext                  \
            ${extra_config}                             2>&1 |CT_DoLog ALL

        CT_DoLog EXTRA "Building gdbserver"
        make ${PARALLELMFLAGS} CC=${CT_TARGET}-gcc      2>&1 |CT_DoLog ALL

        CT_DoLog EXTRA "Installing gdbserver"
        make DESTDIR="${CT_DEBUG_INSTALL_DIR}" install  2>&1 |CT_DoLog ALL

        CT_EndStep
    fi

    if [ "${CT_GDB_NATIVE}" = "y" ]; then
        CT_DoStep EXTRA "Installing native gdb"
        CT_DoLog EXTRA "Configuring native gdb"

        mkdir -p "${CT_BUILD_DIR}/build-gdb-cross"
        cd "${CT_BUILD_DIR}/build-gdb-cross"

        "${gdb_src_dir}/configure"                      \
            --build=${CT_BUILD}                         \
            --host=${CT_TARGET}                         \
            --target=${CT_TARGET}                       \
            --prefix=/usr                               \
            --with-build-sysroot="${CT_SYSROOT_DIR}"    \
            --without-uiout                             \
            --disable-tui                               \
            --disable-gdbtk                             \
            --without-x                                 \
            --disable-sim                               \
            --enable-gdbserver                          \
            --without-included-gettext                  \
            ${extra_config}                             2>&1 |CT_DoLog ALL

        CT_DoLog EXTRA "Building native gdb"
        make ${PARALLELMFLAGS} CC=${CT_TARGET}-gcc      2>&1 |CT_DoLog ALL

        CT_DoLog EXTRA "Installing native gdb"
        make DESTDIR="${CT_DEBUG_INSTALL_DIR}" install  2>&1 |CT_DoLog ALL

        CT_EndStep
    fi
}