-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathtrampoline.build
executable file
·150 lines (118 loc) · 3.36 KB
/
trampoline.build
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
#!/bin/bash
# Stop if any command fails
set -e
# Settings
TRAMPOLINE=trampoline2b49
TRAMPOLINE_URL=http://trampoline.rts-software.org/IMG/tgz/${TRAMPOLINE}.tgz
TRAMPOLINE=trampoline
TRAMPOLINE_REV=1277
TRAMPOLINE_URL=https://trampoline.rts-software.org/svn/trunk
TRAMPOLINE_USER=anonymous
TRAMPOLINE_PASS=anonymous
LIBPM=libpm-lf
LIBPM_VERSION=2.1.0
LIBPM_URL=http://galgas.rts-software.org/download/${LIBPM_VERSION}/${LIBPM}.tar.bz2
SUMMON_DIR=$(pwd)
PREFIX=${SUMMON_DIR}/trampoline
SOURCES=${SUMMON_DIR}/sources
STAMPS=${SUMMON_DIR}/stamps
BUILD=${SUMMON_DIR}/build
# Flags
CPUS=$(getconf _NPROCESSORS_ONLN)
PARALLEL=-j$((CPUS + 1))
echo "${CPUS} cpu's detected running make with '${PARALLEL}' flag"
MAKEFLAGS=${PARALLEL}
##############################################################################
# OS and Tooldetection section
# Detects which tools and flags to use
##############################################################################
case "$(uname)" in
Linux)
echo "Found Linux OS."
GOIL_MAKEDIR=${BUILD}/${TRAMPOLINE}/goil/makefile_unix/
;;
Darwin)
echo "Found Darwin OS."
GOIL_MAKEDIR=${BUILD}/${TRAMPOLINE}/goil/makefile_macosx/
;;
*)
echo "Found unknown OS. Aborting!"
exit 1
;;
esac
########################################
# Building Section
########################################
# Log a message out to the console
function log {
echo "* $*"
}
# Unpack an archive
function unpack {
log Unpacking $*
ARCHIVE=$(ls ${SOURCES}/$1.*)
case ${ARCHIVE} in
*.bz2)
bzip2 -dkc ${ARCHIVE} | tar -xf -
;;
*.gz | *.tgz)
gzip -dc ${ARCHIVE} | tar -xf -
;;
*)
echo "Unknown archive type of $1"
echo ${ARCHIVE}
exit 1
;;
esac
}
# Fetch a versioned file from a URL
function fetch {
if [ ! -e ${STAMPS}/$1.fetch ]; then
log "Downloading $1 sources..."
wget -c $2
touch ${STAMPS}/$1.fetch
fi
}
# Create a directory if required
function touchdir {
if [ ! -e $1 ]; then
mkdir -p $1
fi
}
# Create required directories
touchdir ${PREFIX}
touchdir ${PREFIX}/bin
touchdir ${SOURCES}
touchdir ${STAMPS}
touchdir ${BUILD}
# Download sources
cd ${SOURCES}
[ ! -e ${STAMPS}/trampoline.fetch ] && svn export --username ${TRAMPOLINE_USER} --password ${TRAMPOLINE_PASS} --revision ${TRAMPOLINE_REV} ${TRAMPOLINE_URL} ./${TRAMPOLINE}
touch ${STAMPS}/trampoline.fetch
fetch ${LIBPM} ${LIBPM_URL}
# Build and install trampoline and goild templates
cd ${BUILD}
if [ ! -e ${STAMPS}/${TRAMPOLINE}.build ]; then
cp -r ${SOURCES}/${TRAMPOLINE} ./${TRAMPOLINE}
unpack ${LIBPM}
log "Adding libpm symlink to trampoline"
cp -r ${BUILD}/libpm ${BUILD}/${TRAMPOLINE}/libpm
export LIBPM_PATH_ENV_VAR=${BUILD}/${TRAMPOLINE}/libpm
export LIBPM_PATH=${BUILD}/${TRAMPOLINE}/libpm
export LIB_PM_PATH=${BUILD}/${TRAMPOLINE}/libpm
log "Moving to build goil ($GOIL_MAKEDIR)"
cd ${GOIL_MAKEDIR}
make ${MAKEFLAGS}
cd ${BUILD}
log "Installing goil binaries."
install ${GOIL_MAKEDIR}/goil{,_debug} ${PREFIX}/bin
log "Installing trampoline and goil templates."
cp -r ${BUILD}/${TRAMPOLINE}/{autosar,os,com,debug,machines,make} ${PREFIX}
mkdir -p ${PREFIX}/goil && cp -r ${BUILD}/${TRAMPOLINE}/goil/templates ${PREFIX}/goil/
log "Patching trampoline"
log " [add nxt_motor_rotate function]"
cd ${PREFIX}
patch -p0 < ${SUMMON_DIR}/trampoline.patch
touch ${STAMPS}/${TRAMPOLINE}.build
fi
log "Done."