summaryrefslogtreecommitdiff
path: root/scripts/build/tools/200-sstrip.sh
blob: 16a13494db097a7cc2f517d0cb7dceb048390084 (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
# This will build and install sstrip to run on host and sstrip target files

is_enabled="${CT_SSTRIP}"

case "${CT_SSTRIP_FROM}" in
    ELFkickers)
        do_print_filename() {
            echo "ELFkickers-${CT_SSTRIP_ELFKICKERS_VERSION}"
        }
        do_tools_sstrip_get() {
            CT_GetFile "ELFkickers-${CT_SSTRIP_ELFKICKERS_VERSION}"     \
                       http://www.muppetlabs.com/~breadbox/pub/software
        }
        do_tools_sstrip_extract() {
            CT_ExtractAndPatch "ELFkickers-${CT_SSTRIP_ELFKICKERS_VERSION}"
        }
        do_tools_sstrip_build() {
            CT_DoStep INFO "Installing sstrip"
            mkdir -p "${CT_BUILD_DIR}/build-strip"
            cd "${CT_BUILD_DIR}/build-strip"
            ( cd "${CT_SRC_DIR}/ELFkickers-${CT_SSTRIP_ELFKICKERS_VERSION}/sstrip"; tar cf - . ) |tar xf -

            CT_DoLog EXTRA "Building sstrip"
            CT_DoExecLog ALL make CC="${CT_CC_NATIVE}" sstrip
            
            CT_DoLog EXTRA "Installing sstrip"
            CT_DoExecLog ALL install -m 755 sstrip "${CT_PREFIX_DIR}/bin/${CT_TARGET}-sstrip"

            CT_EndStep
        }
    ;;

    buildroot)
        CT_HasOrAbort lynx
        sstrip_url='http://buildroot.uclibc.org/cgi-bin/viewcvs.cgi/trunk/buildroot/toolchain/sstrip/sstrip.c'
        do_print_filename() {
            echo "sstrip.c"
        }
        do_tools_sstrip_get() {
            # With this one, we must handle the download by ourselves,
            # we can't leave the job to the classic CT_GetFile.
            if [ -f "${CT_TARBALLS_DIR}/sstrip.c" ]; then
                return 0
            fi
            if [ -f "${CT_LOCAL_TARBALLS_DIR}/sstrip.c" ]; then
                CT_DoLog EXTRA "Using 'sstrip' from local storage"
                ln -sf "${CT_LOCAL_TARBALLS_DIR}/sstrip.c"  \
                       "${CT_TARBALLS_DIR}/sstrip.c"        2>&1 |CT_DoLog ALL
                return 0
            fi
            CT_Pushd "${CT_TARBALLS_DIR}"
            CT_DoLog EXTRA "Retrieving 'sstrip' from network"
            http_data=$(lynx -dump "${sstrip_url}")
            link=$(echo -en "${http_data}"                          \
                  |egrep '\[[[:digit:]]+\]download'                 \
                  |sed -r -e 's/.*\[([[:digit:]]+)\]download.*/\1/;')
            rev_url=$(echo -en "${http_data}"                       \
                     |egrep '^ *8\.'                                \
                     |sed -r -e 's/^ *'${link}'\. +(.+)$/\1/;')
            CT_DoGetFile "${rev_url}" 2>&1 |CT_DoLog ALL
            mv -v sstrip.c?* sstrip.c 2>&1 |CT_DoLog DEBUG
            if [ "${CT_SAVE_TARBALLS}" = "y" ]; then
                CT_DoLog EXTRA "Saving 'sstrip.c' to local storage"
                CT_DoExecLog ALL cp -v sstrip.c "${CT_LOCAL_TARBALLS_DIR}"
            fi
            CT_Popd
        }
        do_tools_sstrip_extract() {
            # We'll let buildroot guys take care of sstrip maintenance and patching.
            mkdir -p "${CT_SRC_DIR}/sstrip"
            CT_DoExecLog ALL cp -v "${CT_TARBALLS_DIR}/sstrip.c" "${CT_SRC_DIR}/sstrip"
        }
        do_tools_sstrip_build() {
            CT_DoStep INFO "Installing sstrip"
            mkdir -p "${CT_BUILD_DIR}/build-sstrip"
            cd "${CT_BUILD_DIR}/build-sstrip"

            CT_DoLog EXTRA "Building sstrip"
            CT_DoExecLog ALL ${CT_CC_NATIVE} -Wall -o sstrip "${CT_SRC_DIR}/sstrip/sstrip.c"

            CT_DoLog EXTRA "Installing sstrip"
            CT_DoExecLog ALL install -m 755 sstrip "${CT_PREFIX_DIR}/bin/${CT_TARGET}-sstrip"

            CT_EndStep
        }
    ;;

    *)  do_print_filename() {
            :
        }
        do_tools_sstrip_get() {
            :
        }
        do_tools_sstrip_extract() {
            :
        }
        do_tools_sstrip_build() {
            :
        }
    ;;
esac