summaryrefslogtreecommitdiffstats
path: root/c/src/lib/libbsp/bare/do-bare-bsp-build
blob: 644975640548baa2506c59b79b20b6976d399001 (plain) (blame)
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
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
#!/bin/bash
#
# $Id$
#
# RTEMS Bare BSP Build Script.
#
# This is designed to allow recording of stdout to log. The log
# forms part of a clean build trace for validation and verification
# reasons.
#

. `echo $0 | sed -e 's/do-rtems-build/build-tools/'`

#
# The current versions we are building.
#
# Note: Please change to suite.
#

RTEMS=rtems-980618

#
# The list of processors we want the tools built for.
#

CPUS="m68k"

#
# RTEMS CPU target we want to build.
#

RTEMS_M68K_TARGETS="68000 68030 cpu32"

#
# The particular host settings we have.
#
# Map particulars for different hosts here.
#

HOST=`hostname`

case "${HOST}" in
  kiwi*)
    ARCHIVE="/ods/archive"
    TOOLS="/ods/egcs"
    RTEMS_PATH=development/rtems/${RTEMS}
    ;;
  *)
    fatal_error "host is not known."
    ;;
esac

#
# Where will RTEMS live when installed ?
#

RTEMS_PREFIX=${TOOLS}/test

echo "Building on ${HOST}, archives in ${ARCHIVE}"

#
# Who is doing the build.
#

echo "User profile : "`id`

#
# Find out where we are
#

TOPDIR=`pwd`

echo "Top directory is ${TOPDIR}"

#
# Test the paths to the archives exist.
#

test_path ${ARCHIVE}/${RTEMS_PATH}

#
# Get the RTEMS source and patch.
#

echo "Unpacking rtems source ${ARCHIVE}/${RTEMS_PATH}/${RTEMS}.tgz ... "
tar zxf ${ARCHIVE}/${RTEMS_PATH}/${RTEMS}.tgz
check_fatal $? "failed to unpack ${RTEMS}.tgz."

#
# Build all the processors we support.
#

for cpu in ${CPUS}; do
{
  #
  # Create the target.
  #

  TARGET=${cpu}-rtems

  #
  # On to RTEMS.
  #

  case ${cpu} in
    m68k)
      RTEMS_TARGETS=${RTEMS_M68K_TARGETS}
      ;;
    *)
      fatal_error "unknown cpu ${cpu}"
      ;;
  esac

  for rtems_target in ${RTEMS_TARGETS}; do 
  {
    #
    # Remove the target if found.
    #

    echo "Removing the RTEMS bare bsp directory rtems-bare-${rtems_target} ... "
    rm -rf rtems-bare-${rtems_target}
    check_fatal $? "failed to remove rtems-bare-${rtems_target}."

    echo "Creating the RTEM build directory for target ${rtems_target} ... "
    checked_mkdir rtems-bare-${rtems_target} 

    cd rtems-bare-${rtems_target}

    #
    # Configure RTEMS.
    #
    # FIXME: the mapping from the rtems_target to the cpu flags
    #        just happens to work for the m68k targets. This should
    #        be mapped in a way which does not depends on the rtems_target,
    #        or RTEMS should support multilibs.
    #
    
    echo "Configuring RTEMS target bare-${rtems_target} ... "
    ../${RTEMS}/configure --target=${TARGET} --prefix=${RTEMS_PREFIX} \
      --enable-cxx --enable-gmake-print-directory \
      --disable-tests --disable-posix --enable-ka9q \
      --enable-bare-cpu-cflags=-m${rtems_target} \
      --enable-bare-cpu-model=m${rtems_target} \
      --enable-rtemsbsp=bare
    check_fatal $? "failed to configure rtems target."

    #
    # Do the RTEMS build.
    #

    echo "Building RTEMS target bare-${rtems_target} ... "
    make all install
    check_fatal $? "failed to complete rtems build for target ${rtems_target}."

    #
    # Remove the target if found.
    #

    echo "Removing the RTEMS bare bsp directory ${RTEMS_PREFIX}/rtems/bare-${rtems_target} ... "
    rm -rf ${RTEMS_PREFIX}/rtems/bare-${rtems_target}
    check_fatal $? "failed to remove ${RTEMS_PREFIX}/rtems/bare-${rtems_target}."

    #
    # Fix up the fact that RTEMS always installsthe bare bsp to the bare directory
    #

    echo "Moving the RTEMS bare bsp directory to bare-${rtems_target} ... "
    mv ${RTEMS_PREFIX}/rtems/bare ${RTEMS_PREFIX}/rtems/bare-${rtems_target}
    check_fatal $? "failed to move the bare bsp directory to bare-${rtems_target}."

    cd ../
  }; done
}; done
 
cd ../

my_exit 0