buildcrossbinutils 3.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170
  1. #!/bin/sh
  2. #
  3. # A script to build the crossutils for a set of platforms.
  4. # Note:cygwin seems to like to have all platforms qualified.
  5. #
  6. BASE=~
  7. # where to store the built tree of binutils?
  8. DESTDIR=${BASE}/cross
  9. # directory where logs go
  10. LOGDIR=${BASE}/logs
  11. # where can I decrunch and build?
  12. WORKDIR=${BASE}/buildme
  13. # where is the binutils archive?
  14. BINUTILSPATH=~
  15. # what is it's base name?
  16. BINUTILSBASE=binutils
  17. # what is the version part of the archive?
  18. BINUTILSVERSION=2.14
  19. # is binutils archive gz or bz2?
  20. BINUTILS_GZIP=no
  21. # what i6868 platform do you want/need to build for?
  22. MYINTEL=i686
  23. # target info, OSes per processor with "WIN" as special case
  24. BSD="freebsd netbsd openbsd"
  25. TARGETS_WIN="cygwin mingw32 msdosdjgpp"
  26. TARGETS_I386="${BSD} linux solaris darwin"
  27. TARGETS_POWERPC="${BSD} linux darwin"
  28. TARGETS_SPARC="${BSD} linux solaris"
  29. #TARGETS_M68k=
  30. # I use the below because my default system is dual proc.
  31. #EXTRAOPT=-j 4
  32. ###########################################################################
  33. # don't edit below
  34. #
  35. #
  36. #
  37. #
  38. LD_FLAGS="${LD_FLAGS} -static"
  39. LDFLAGS="${LD_FLAGS} -s"
  40. CFLAGS="${CFLAGS} -static"
  41. CPPFLAGS="${CPPFLAGS} -static"
  42. CXXFLAGS="${CXXFLAGS} -static"
  43. #
  44. # Make a list of targets
  45. #
  46. TARGETS=""
  47. for OS in ${TARGETS_WIN}; do
  48. TARGETS="${TARGETS} ${MYINTEL}-${OS}"
  49. done;
  50. for OS in ${TARGETS_I386}; do
  51. TARGETS="${TARGETS} ${MYINTEL}-${OS}"
  52. done;
  53. for OS in ${TARGETS_POWERPC}; do
  54. TARGETS="${TARGETS} powerpc-${OS}"
  55. done;
  56. for OS in ${TARGETS_SPARC}; do
  57. TARGETS="${TARGETS} sparc-${OS}"
  58. done;
  59. for OS in ${TARGETS_M68K}; do
  60. TARGETS="${TARGETS} m68k-${OS}"
  61. done;
  62. #
  63. # force slash
  64. #
  65. DESTDIR=${DESTDIR%/}/
  66. WORKDIR=${WORKDIR%/}/
  67. LOGDIR=${LOGDIR%/}/
  68. BINUTILSPATH=${BINUTILSPATH%/}/
  69. BINUTILSARCHIVE=${BINUTILSPATH}${BINUTILSBASE}-${BINUTILSVERSION}
  70. MAKE=make
  71. #
  72. # Make sure they exist
  73. #
  74. mkdir -p $DESTDIR
  75. mkdir -p $WORKDIR
  76. mkdir -p $LOGDIR
  77. #
  78. # BSD? -> gmake
  79. #
  80. SYSTEM=`uname -s`
  81. case "$SYSTEM" in
  82. *BSD*) MAKE=gmake
  83. ;;
  84. *bsd*) MAKE=gmake
  85. ;;
  86. esac
  87. #
  88. # tar.gz or .tar.bz2 ?
  89. #
  90. if [ $BINUTILS_GZIP = "no" ] ; then
  91. BINUTILSARCHIVE=${BINUTILSARCHIVE}.tar.bz2
  92. else
  93. BINUTILSARCHIVE=${BINUTILSARCHIVE}.tar.gz
  94. fi
  95. #
  96. # depack or clean dir
  97. #
  98. cd ${WORKDIR}
  99. if [ ! -d ${WORKDIR}${BINUTILSBASE}-${BINUTILSVERSION} ]; then
  100. if [ $BINUTILS_GZIP = "no" ]; then
  101. bzip2 -dc $BINUTILSARCHIVE |tar xvf - > ${LOGDIR}log-extract
  102. else
  103. tar xvzf $BINUTILSARCHIVE > ${LOGDIR}log-extract
  104. fi
  105. if [ ! $? = 0 ]; then
  106. echo DECRUNCHING OF ${BINUTILSARCHIVE} failed
  107. exit
  108. fi
  109. else
  110. echo It seams that you already have a build directory. Skipping.
  111. cd ${WORKDIR}${BINUTILSBASE}-${BINUTILSVERSION}
  112. ${MAKE} clean >/dev/null
  113. fi
  114. cd ${WORKDIR}${BINUTILSBASE}-${BINUTILSVERSION}
  115. #
  116. # build loop.
  117. #
  118. FAILURES=""
  119. for a in $TARGETS; do
  120. if [ ! -f ${DESTDIR}bin/${a}-as ] ; then
  121. echo Building $a
  122. { ./configure --disable-nls --disable-shared --target=$a --prefix=${DESTDIR} && ${MAKE} $(EXTRAOPT) && ${MAKE} install && ${MAKE} clean; } > ${LOGDIR}log-${a} 2>&1
  123. if [ ! $? = 0 ]; then
  124. echo $a FAILES!
  125. FAILURES="${FAILURES} ${a}"
  126. fi
  127. fi
  128. done;
  129. echo Failed targets: ${FAILURES}