buildcrossbinutils 3.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175
  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_X86_64="${BSD} linux"
  28. TARGETS_POWERPC="${BSD} linux darwin"
  29. TARGETS_SPARC="${BSD} linux solaris"
  30. #TARGETS_M68k=
  31. # I use the below because my default system is dual proc.
  32. #EXTRAOPT=-j 4
  33. ###########################################################################
  34. # don't edit below
  35. #
  36. #
  37. #
  38. #
  39. LD_FLAGS="${LD_FLAGS} -static"
  40. LDFLAGS="${LD_FLAGS} -s"
  41. CFLAGS="${CFLAGS} -static"
  42. CPPFLAGS="${CPPFLAGS} -static"
  43. CXXFLAGS="${CXXFLAGS} -static"
  44. #
  45. # Make a list of targets
  46. #
  47. TARGETS=""
  48. for OS in ${TARGETS_WIN}; do
  49. TARGETS="${TARGETS} ${MYINTEL}-${OS}"
  50. done;
  51. for OS in ${TARGETS_I386}; do
  52. TARGETS="${TARGETS} ${MYINTEL}-${OS}"
  53. done;
  54. for OS in ${TARGETS_X86_64}; do
  55. TARGETS="${TARGETS} x86_64-${OS}"
  56. done;
  57. for OS in ${TARGETS_POWERPC}; do
  58. TARGETS="${TARGETS} powerpc-${OS}"
  59. done;
  60. for OS in ${TARGETS_SPARC}; do
  61. TARGETS="${TARGETS} sparc-${OS}"
  62. done;
  63. for OS in ${TARGETS_M68K}; do
  64. TARGETS="${TARGETS} m68k-${OS}"
  65. done;
  66. #
  67. # force slash
  68. #
  69. DESTDIR=${DESTDIR%/}/
  70. WORKDIR=${WORKDIR%/}/
  71. LOGDIR=${LOGDIR%/}/
  72. BINUTILSPATH=${BINUTILSPATH%/}/
  73. BINUTILSARCHIVE=${BINUTILSPATH}${BINUTILSBASE}-${BINUTILSVERSION}
  74. MAKE=make
  75. #
  76. # Make sure they exist
  77. #
  78. mkdir -p $DESTDIR
  79. mkdir -p $WORKDIR
  80. mkdir -p $LOGDIR
  81. #
  82. # BSD? -> gmake
  83. #
  84. SYSTEM=`uname -s`
  85. case "$SYSTEM" in
  86. *BSD*) MAKE=gmake
  87. ;;
  88. *bsd*) MAKE=gmake
  89. ;;
  90. esac
  91. #
  92. # tar.gz or .tar.bz2 ?
  93. #
  94. if [ $BINUTILS_GZIP = "no" ] ; then
  95. BINUTILSARCHIVE=${BINUTILSARCHIVE}.tar.bz2
  96. else
  97. BINUTILSARCHIVE=${BINUTILSARCHIVE}.tar.gz
  98. fi
  99. #
  100. # depack or clean dir
  101. #
  102. cd ${WORKDIR}
  103. if [ ! -d ${WORKDIR}${BINUTILSBASE}-${BINUTILSVERSION} ]; then
  104. if [ $BINUTILS_GZIP = "no" ]; then
  105. bzip2 -dc $BINUTILSARCHIVE |tar xvf - > ${LOGDIR}log-extract
  106. else
  107. tar xvzf $BINUTILSARCHIVE > ${LOGDIR}log-extract
  108. fi
  109. if [ ! $? = 0 ]; then
  110. echo DECRUNCHING OF ${BINUTILSARCHIVE} failed
  111. exit
  112. fi
  113. else
  114. echo It seams that you already have a build directory. Skipping.
  115. cd ${WORKDIR}${BINUTILSBASE}-${BINUTILSVERSION}
  116. ${MAKE} clean >/dev/null
  117. fi
  118. cd ${WORKDIR}${BINUTILSBASE}-${BINUTILSVERSION}
  119. #
  120. # build loop.
  121. #
  122. FAILURES=""
  123. for a in $TARGETS; do
  124. if [ ! -f ${DESTDIR}bin/${a}-as ] ; then
  125. echo Building $a
  126. { ./configure --disable-nls --disable-shared --target=$a --prefix=${DESTDIR} && ${MAKE} $(EXTRAOPT) && ${MAKE} install && ${MAKE} clean; } > ${LOGDIR}log-${a} 2>&1
  127. if [ ! $? = 0 ]; then
  128. echo $a FAILES!
  129. FAILURES="${FAILURES} ${a}"
  130. fi
  131. fi
  132. done;
  133. echo Failed targets: ${FAILURES}