comparison build.sh @ 8:0068264ad65a

Some work I did back in october but hadn't checked in yet: let setupfor() specify source directory to allow gcc to build out of tree. Add basic uClibc build.
author Rob Landley <rob@landley.net>
date Tue, 28 Nov 2006 16:15:07 -0500
parents 1b721a51e9c6
children 6cd344d090de
comparison
equal deleted inserted replaced
7:f8c588578fa1 8:0068264ad65a
24 fi 24 fi
25 done 25 done
26 echo 26 echo
27 } 27 }
28 28
29 # Extract package $1, use work directory $2 (or $1 if no $2) 29 # Extract package $1, use work directory $2 (or $1 if no $2), use source
30 # directory $3 (or $1 if no $3)
30 31
31 function setupfor() 32 function setupfor()
32 { 33 {
33 echo "=== Building $1" 34 echo "=== Building $1"
34 echo -n "Extracting" 35 echo -n "Extracting"
40 cd "$1"* || dienow 41 cd "$1"* || dienow
41 else 42 else
42 mkdir "$2" 43 mkdir "$2"
43 cd "$2" || dienow 44 cd "$2" || dienow
44 fi 45 fi
45 export CURSRC="${WORK}/$1"* 46 export CURSRC="$1"
47 [ ! -z "$3" ] && CURSRC="$3"
48 export CURSRC=`echo "${WORK}/${CURSRC}"*`
46 [ ! -d "${CURSRC}" ] && dienow 49 [ ! -d "${CURSRC}" ] && dienow
47 } 50 }
48 51
49 # Setup 52 # Setup
50 53
53 56
54 # Find/create directories 57 # Find/create directories
55 58
56 TOP=`pwd` 59 TOP=`pwd`
57 export SOURCES="${TOP}/sources" 60 export SOURCES="${TOP}/sources"
58 export CROSS="${TOP}/build/cross-compiler" 61 export CROSS="${TOP}/build/cross-compiler/"
59 export WORK="${TOP}/build/temp" 62 export WORK="${TOP}/build/temp"
60 mkdir -p "${CROSS}" "${WORK}" 63 mkdir -p "${CROSS}" "${WORK}"
61 64
62 [ $? -ne 0 ] && dienow 65 [ $? -ne 0 ] && dienow
63 66
71 [ "$ARCH" == x86_64 ] && export BUILD64="-m64" 74 [ "$ARCH" == x86_64 ] && export BUILD64="-m64"
72 export CROSS_HOST=i686-pc-linux-gnu 75 export CROSS_HOST=i686-pc-linux-gnu
73 export CROSS_TARGET=${ARCH}-unknown-linux-gnu 76 export CROSS_TARGET=${ARCH}-unknown-linux-gnu
74 77
75 export STAGE=build-cross 78 export STAGE=build-cross
76
77 if false
78 then
79 79
80 echo === Install linux-headers. 80 echo === Install linux-headers.
81 81
82 setupfor linux-headers 82 setupfor linux-headers
83 #cd "${WORK}" 83 #cd "${WORK}"
103 cp binutils-*/include/libiberty.h "${CROSS}/include" && 103 cp binutils-*/include/libiberty.h "${CROSS}/include" &&
104 rm -rf binutils-* build-binutils 104 rm -rf binutils-* build-binutils
105 105
106 [ $? -ne 0 ] && dienow 106 [ $? -ne 0 ] && dienow
107 107
108 108 setupfor gcc-core build-gcc gcc-
109 setupfor gcc-core build-gcc
110 # Remove /usr/libexec/gcc and /usr/lib/gcc from gcc's search path. (Don't grab 109 # Remove /usr/libexec/gcc and /usr/lib/gcc from gcc's search path. (Don't grab
111 # random host libraries when cross-compiling, it's not polite.) 110 # random host libraries when cross-compiling, it's not polite.)
112 sed -ie 's/standard_exec_prefix_//;T;N;d' "${CURSRC}/gcc/gcc.c" && 111 sed -ie 's/standard_exec_prefix_//;T;N;d' "${CURSRC}/gcc/gcc.c" &&
113 # Adjust StartFile Spec to point to cross libraries. 112 # Adjust StartFile Spec to point to cross libraries.
114 #echo -e "\n#undef STARTFILE_PREFIX_SPEC\n#define STARTFILE_PREFIX_SPEC \"${CROSS}/lib/\"" >> ../gcc-*/gcc/config/linux.h && 113 echo -e "\n#undef STARTFILE_PREFIX_SPEC\n#define STARTFILE_PREFIX_SPEC \"${CROSS}/lib/\"" >> ../gcc-*/gcc/config/linux.h &&
115 # Adjust preprocessor's default search path 114 # Adjust preprocessor's default search path
116 #sed -ire "s@(^CROSS_SYSTEM_HEADER_DIR =).*@\1 ${CROSS}/include@g" ../gcc-*/gcc/Makefile.in && 115 sed -ire "s@(^CROSS_SYSTEM_HEADER_DIR =).*@\1 ${CROSS}/include@g" ../gcc-*/gcc/Makefile.in &&
117 "${CURSRC}/configure" --prefix="${CROSS}" --host=${CROSS_HOST} \ 116 "${CURSRC}/configure" --prefix="${CROSS}" --host=${CROSS_HOST} \
118 --target=${CROSS_TARGET} --with-local-prefix="${CROSS}" \ 117 --target=${CROSS_TARGET} --with-local-prefix="${CROSS}" \
119 --disable-multilib --disable-nls --disable-shared --disable-threads \ 118 --disable-multilib --disable-nls --disable-shared --disable-threads \
120 --enable-languages=c && 119 --enable-languages=c &&
121 make all-gcc && 120 make all-gcc &&
122 make install-gcc && 121 make install-gcc &&
123 cd .. && 122 cd .. &&
124 rm -rf "${CURSRC}" build-gcc 123 rm -rf "${CURSRC}" build-gcc
125 124
126 fi 125 [ $? -ne 0 ] && dienow
126
127 setupfor uClibc
128 make TARGET_ARCH=${ARCH} CROSS=${CROSS_TARGET}- defconfig &&
129 make TARGET_ARCH=${ARCH} CROSS=${CROSS_TARGET}- KERNEL_SOURCE="${CROSS}" &&
130 make TARGET_ARCH=${ARCH} CROSS=${CROSS_TARGET}- utils &&
131 # The kernel headers are already installed, but uClibc's install will try to
132 # be "helpful" and copy them over themselves, at which point hilarity ensues.
133 # Make it not do that.
134 rm include/{asm,asm-generic,linux} &&
135 make RUNTIME_PREFIX="${CROSS}" DEVEL_PREFIX="${CROSS}" \
136 install_runtime install_dev &&
137 cd .. &&
138 rm -rf uClibc
127 139
128 [ $? -ne 0 ] && dienow 140 [ $? -ne 0 ] && dienow