Changes in tools/toolchain.sh [603c8740:71e3289] in mainline
- File:
-
- 1 edited
-
tools/toolchain.sh (modified) (12 diffs)
Legend:
- Unmodified
- Added
- Removed
-
tools/toolchain.sh
r603c8740 r71e3289 28 28 # THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. 29 29 # 30 31 GMP_MAIN=<<EOF32 #define GCC_GMP_VERSION_NUM(a, b, c) \33 (((a) << 16L) | ((b) << 8) | (c))34 35 #define GCC_GMP_VERSION \36 GCC_GMP_VERSION_NUM(__GNU_MP_VERSION, __GNU_MP_VERSION_MINOR, __GNU_MP_VERSION_PATCHLEVEL)37 38 #if GCC_GMP_VERSION < GCC_GMP_VERSION_NUM(4,3,2)39 choke me40 #endif41 EOF42 43 MPFR_MAIN=<<EOF44 #if MPFR_VERSION < MPFR_VERSION_NUM(2, 4, 2)45 choke me46 #endif47 EOF48 49 MPC_MAIN=<<EOF50 #if MPC_VERSION < MPC_VERSION_NUM(0, 8, 1)51 choke me52 #endif53 EOF54 55 BINUTILS_VERSION="2.21"56 GCC_VERSION="4.6.0"57 58 BASEDIR="`pwd`"59 BINUTILS="binutils-${BINUTILS_VERSION}.tar.bz2"60 GCC_CORE="gcc-core-${GCC_VERSION}.tar.bz2"61 GCC_OBJC="gcc-objc-${GCC_VERSION}.tar.bz2"62 GCC_CPP="gcc-g++-${GCC_VERSION}.tar.bz2"63 64 #65 # Check if the library described in the argument66 # exists and has acceptable version.67 #68 check_dependency() {69 DEPENDENCY="$1"70 HEADER="$2"71 BODY="$3"72 73 FNAME="/tmp/conftest-$$"74 75 echo "#include ${HEADER}" > "${FNAME}.c"76 echo >> "${FNAME}.c"77 echo "int main()" >> "${FNAME}.c"78 echo "{" >> "${FNAME}.c"79 echo "${BODY}" >> "${FNAME}.c"80 echo " return 0;" >> "${FNAME}.c"81 echo "}" >> "${FNAME}.c"82 83 cc -c -o "${FNAME}.o" "${FNAME}.c" 2> "${FNAME}.log"84 RC="$?"85 86 if [ "$RC" -ne "0" ] ; then87 echo " ${DEPENDENCY} not found, too old or compiler error."88 echo " Please recheck manually the source file \"${FNAME}.c\"."89 echo " The compilation of the toolchain is probably going to fail,"90 echo " you have been warned."91 echo92 echo " ===== Compiler output ====="93 cat "${FNAME}.log"94 echo " ==========================="95 echo96 else97 echo " ${DEPENDENCY} found"98 rm -f "${FNAME}.log" "${FNAME}.o" "${FNAME}.c"99 fi100 }101 102 check_dependecies() {103 echo ">>> Basic dependency check"104 check_dependency "GMP" "<gmp.h>" "${GMP_MAIN}"105 check_dependency "MPFR" "<mpfr.h>" "${MPFR_MAIN}"106 check_dependency "MPC" "<mpc.h>" "${MPC_MAIN}"107 echo108 }109 30 110 31 check_error() { … … 148 69 echo " sparc64 SPARC V9" 149 70 echo " all build all targets" 150 echo " parallel same as 'all', but in parallel"151 echo152 echo "The toolchain will be installed to the directory specified by"153 echo "the CROSS_PREFIX environment variable. If the variable is not"154 echo "defined, /usr/local/cross will be used by default."155 71 echo 156 72 … … 202 118 echo " - native C library with headers" 203 119 echo 204 } 205 206 download_fetch() { 120 121 show_countdown 10 122 } 123 124 download_check() { 207 125 SOURCE="$1" 208 126 FILE="$2" … … 218 136 } 219 137 220 source_check() {221 FILE="$1"222 223 if [ ! -f "${FILE}" ]; then224 echo225 echo "File ${FILE} not found."226 227 exit 4228 fi229 }230 231 138 cleanup_dir() { 232 139 DIR="$1" … … 262 169 } 263 170 264 prepare() { 265 show_dependencies 266 check_dependecies 267 show_countdown 10 268 269 BINUTILS_SOURCE="ftp://ftp.gnu.org/gnu/binutils/" 270 GCC_SOURCE="ftp://ftp.gnu.org/gnu/gcc/gcc-${GCC_VERSION}/" 271 272 download_fetch "${BINUTILS_SOURCE}" "${BINUTILS}" "c84c5acc9d266f1a7044b51c85a823f5" 273 download_fetch "${GCC_SOURCE}" "${GCC_CORE}" "b1957f3209080b2f55bc3756d3a62b7c" 274 download_fetch "${GCC_SOURCE}" "${GCC_OBJC}" "120d4675366ee82ea52f9ed65b57da04" 275 download_fetch "${GCC_SOURCE}" "${GCC_CPP}" "a30090fa655d0db4c970740d353c81f1" 171 patch_binutils() { 172 PLATFORM="$1" 173 174 if [ "${PLATFORM}" == "arm32" ] ; then 175 patch -p1 <<EOF 176 diff -Naur binutils-2.20.orig/gas/config/tc-arm.c binutils-2.20/gas/config/tc-arm.c 177 --- binutils-2.20.orig/gas/config/tc-arm.c 2009-08-30 00:10:59.000000000 +0200 178 +++ binutils-2.20/gas/config/tc-arm.c 2009-11-02 14:25:11.000000000 +0100 179 @@ -2485,8 +2485,9 @@ 180 know (frag->tc_frag_data.first_map == NULL); 181 frag->tc_frag_data.first_map = symbolP; 182 } 183 - if (frag->tc_frag_data.last_map != NULL) 184 + if (frag->tc_frag_data.last_map != NULL) { 185 know (S_GET_VALUE (frag->tc_frag_data.last_map) < S_GET_VALUE (symbolP)); 186 + } 187 frag->tc_frag_data.last_map = symbolP; 188 } 189 EOF 190 check_error $? "Error patching binutils" 191 fi 276 192 } 277 193 … … 280 196 TARGET="$2" 281 197 282 WORKDIR="${BASEDIR}/${PLATFORM}" 198 BINUTILS_VERSION="2.20" 199 GCC_VERSION="4.5.1" 200 201 BINUTILS="binutils-${BINUTILS_VERSION}.tar.bz2" 202 GCC_CORE="gcc-core-${GCC_VERSION}.tar.bz2" 203 GCC_OBJC="gcc-objc-${GCC_VERSION}.tar.bz2" 204 GCC_CPP="gcc-g++-${GCC_VERSION}.tar.bz2" 205 206 BINUTILS_SOURCE="ftp://ftp.gnu.org/gnu/binutils/" 207 GCC_SOURCE="ftp://ftp.gnu.org/gnu/gcc/gcc-${GCC_VERSION}/" 208 209 WORKDIR="`pwd`" 283 210 BINUTILSDIR="${WORKDIR}/binutils-${BINUTILS_VERSION}" 284 211 GCCDIR="${WORKDIR}/gcc-${GCC_VERSION}" … … 286 213 287 214 if [ -z "${CROSS_PREFIX}" ] ; then 288 CROSS_PREFIX="/usr/local /cross"215 CROSS_PREFIX="/usr/local" 289 216 fi 290 217 … … 292 219 293 220 echo ">>> Downloading tarballs" 294 source_check "${BASEDIR}/${BINUTILS}"295 source_check "${BASEDIR}/${GCC_CORE}"296 source_check "${BASEDIR}/${GCC_OBJC}"297 source_check "${BASEDIR}/${GCC_CPP}"221 download_check "${BINUTILS_SOURCE}" "${BINUTILS}" "ee2d3e996e9a2d669808713360fa96f8" 222 download_check "${GCC_SOURCE}" "${GCC_CORE}" "dc8959e31b01a65ce10d269614815054" 223 download_check "${GCC_SOURCE}" "${GCC_OBJC}" "3c11b7037896e967eddf8178af2ddd98" 224 download_check "${GCC_SOURCE}" "${GCC_CPP}" "b294953ff0bb2f20c7acb2bf005d832a" 298 225 299 226 echo ">>> Removing previous content" 300 227 cleanup_dir "${PREFIX}" 301 cleanup_dir "${WORKDIR}" 228 cleanup_dir "${OBJDIR}" 229 cleanup_dir "${BINUTILSDIR}" 230 cleanup_dir "${GCCDIR}" 302 231 303 232 create_dir "${PREFIX}" "destination directory" … … 305 234 306 235 echo ">>> Unpacking tarballs" 307 cd "${WORKDIR}" 308 check_error $? "Change directory failed." 309 310 unpack_tarball "${BASEDIR}/${BINUTILS}" "binutils" 311 unpack_tarball "${BASEDIR}/${GCC_CORE}" "GCC Core" 312 unpack_tarball "${BASEDIR}/${GCC_OBJC}" "Objective C" 313 unpack_tarball "${BASEDIR}/${GCC_CPP}" "C++" 236 unpack_tarball "${BINUTILS}" "binutils" 237 unpack_tarball "${GCC_CORE}" "GCC Core" 238 unpack_tarball "${GCC_OBJC}" "Objective C" 239 unpack_tarball "${GCC_CPP}" "C++" 314 240 315 241 echo ">>> Processing binutils (${PLATFORM})" 316 242 cd "${BINUTILSDIR}" 317 243 check_error $? "Change directory failed." 244 patch_binutils "${PLATFORM}" 318 245 319 246 change_title "binutils: configure (${PLATFORM})" … … 337 264 check_error $? "Error compiling/installing GCC." 338 265 339 cd "${ BASEDIR}"266 cd "${WORKDIR}" 340 267 check_error $? "Change directory failed." 341 268 342 269 echo ">>> Cleaning up" 343 cleanup_dir "${WORKDIR}" 270 cleanup_dir "${OBJDIR}" 271 cleanup_dir "${BINUTILSDIR}" 272 cleanup_dir "${GCCDIR}" 344 273 345 274 echo … … 351 280 fi 352 281 282 show_dependencies 283 353 284 case "$1" in 354 285 "amd64") 355 prepare356 286 build_target "amd64" "amd64-linux-gnu" 357 287 ;; 358 288 "arm32") 359 prepare360 289 build_target "arm32" "arm-linux-gnu" 361 290 ;; 362 291 "ia32") 363 prepare364 292 build_target "ia32" "i686-pc-linux-gnu" 365 293 ;; 366 294 "ia64") 367 prepare368 295 build_target "ia64" "ia64-pc-linux-gnu" 369 296 ;; 297 "ia64") 298 build_target "ia64" "ia64-pc-linux-gnu" 299 ;; 370 300 "mips32") 371 prepare372 301 build_target "mips32" "mipsel-linux-gnu" 373 302 ;; 374 303 "mips32eb") 375 prepare376 304 build_target "mips32eb" "mips-linux-gnu" 377 305 ;; 378 306 "mips64") 379 prepare380 307 build_target "mips64" "mips64el-linux-gnu" 381 308 ;; 382 309 "ppc32") 383 prepare384 310 build_target "ppc32" "ppc-linux-gnu" 385 311 ;; 386 312 "ppc64") 387 prepare388 313 build_target "ppc64" "ppc64-linux-gnu" 389 314 ;; 390 315 "sparc64") 391 prepare392 316 build_target "sparc64" "sparc64-linux-gnu" 393 317 ;; 394 318 "all") 395 prepare396 319 build_target "amd64" "amd64-linux-gnu" 397 320 build_target "arm32" "arm-linux-gnu" 398 321 build_target "ia32" "i686-pc-linux-gnu" 322 build_target "ia64" "ia64-pc-linux-gnu" 399 323 build_target "ia64" "ia64-pc-linux-gnu" 400 324 build_target "mips32" "mipsel-linux-gnu" … … 405 329 build_target "sparc64" "sparc64-linux-gnu" 406 330 ;; 407 "parallel")408 prepare409 build_target "amd64" "amd64-linux-gnu" &410 build_target "arm32" "arm-linux-gnu" &411 build_target "ia32" "i686-pc-linux-gnu" &412 build_target "ia64" "ia64-pc-linux-gnu" &413 build_target "mips32" "mipsel-linux-gnu" &414 build_target "mips32eb" "mips-linux-gnu" &415 build_target "mips64" "mips64el-linux-gnu" &416 build_target "ppc32" "ppc-linux-gnu" &417 build_target "ppc64" "ppc64-linux-gnu" &418 build_target "sparc64" "sparc64-linux-gnu" &419 wait420 ;;421 331 *) 422 332 show_usage
Note:
See TracChangeset
for help on using the changeset viewer.
