1 | #!/bin/bash |
---|
2 | |
---|
3 | # cross-lfs cross glibc header creation |
---|
4 | # ------------------------------------- |
---|
5 | # $LastChangedBy$ |
---|
6 | # $LastChangedDate$ |
---|
7 | # $LastChangedRevision$ |
---|
8 | # $HeadURL$ |
---|
9 | # |
---|
10 | |
---|
11 | cd ${SRC} |
---|
12 | LOG="glibc-cross-headers.log" |
---|
13 | unpack_tarball glibc-${GLIBC_VER} |
---|
14 | |
---|
15 | cd ${PKGDIR} |
---|
16 | #3.1b1 - get real version of the glibc we are installing 20030527 |
---|
17 | target_glibc_ver=`grep VERSION version.h | \ |
---|
18 | sed 's@.*\"\([0-9.]*\)\"@\1@'` |
---|
19 | export target_glibc_ver |
---|
20 | |
---|
21 | # if target is same as build host, adjust build slightly |
---|
22 | if [ "${TARGET}" = "${BUILD}" ]; then |
---|
23 | BUILD=`echo ${BUILD} | sed 's@\([_a-zA-Z0-9]*\)\(-[_a-zA-Z0-9]*\)\(.*\)@\1\2x\3@'` |
---|
24 | fi |
---|
25 | |
---|
26 | # unpack linuxthreads add-on if required |
---|
27 | if [ ! "Y" = "${USE_NPTL}" -a ! -d ${SRC}/${PKGDIR}/linuxthreads ]; then |
---|
28 | cd ${SRC}/${PKGDIR} |
---|
29 | OLDPKGDIR=${PKGDIR} ; unpack_tarball glibc-linuxthreads-${GLIBC_VER} |
---|
30 | PKGDIR=${OLDPKGDIR} |
---|
31 | fi |
---|
32 | |
---|
33 | # unpack libidn add-on if required (should be supplied with cvs versions) |
---|
34 | case ${target_glibc_ver} in |
---|
35 | 2.3.[4-9]* | 2.4* ) |
---|
36 | cd ${SRC}/${PKGDIR} |
---|
37 | if [ ! -d libidn ]; then |
---|
38 | OLDPKGDIR=${PKGDIR} ; unpack_tarball glibc-libidn-${GLIBC_VER} |
---|
39 | PKGDIR=${OLDPKGDIR} |
---|
40 | fi |
---|
41 | ;; |
---|
42 | esac |
---|
43 | |
---|
44 | # MIPS specific fixes |
---|
45 | case ${TGT_ARCH} in |
---|
46 | mips* ) |
---|
47 | # Fix syscalls for mips w 2.3.4 |
---|
48 | case ${GLIBC_VER} in |
---|
49 | 2.3.[45] ) apply_patch glibc-2.3.4-mips_syscall-2 ;; |
---|
50 | esac |
---|
51 | # For mips we need to use a mips compiler for generating headers |
---|
52 | # this should have been created by cross-gcc-static-no-thread.sh |
---|
53 | CC="${TARGET}-gcc" |
---|
54 | ;; |
---|
55 | esac |
---|
56 | |
---|
57 | if [ "${USE_SYSROOT}" = "Y" ]; then |
---|
58 | BUILD_PREFIX=/usr |
---|
59 | INSTALL_PREFIX="${LFS}${BUILD_PREFIX}" |
---|
60 | INSTALL_OPTIONS="install_root=${LFS}" |
---|
61 | else |
---|
62 | BUILD_PREFIX=${TGT_TOOLS} |
---|
63 | INSTALL_PREFIX="${TGT_TOOLS}" |
---|
64 | INSTALL_OPTIONS="" |
---|
65 | fi |
---|
66 | |
---|
67 | if [ "${USE_SANITISED_HEADERS}" = "Y" ]; then |
---|
68 | KERN_HDR_DIR="${INSTALL_PREFIX}/kernel-hdrs" |
---|
69 | else |
---|
70 | KERN_HDR_DIR="${INSTALL_PREFIX}/include" |
---|
71 | fi |
---|
72 | |
---|
73 | test -d ${SRC}/glibc-${GLIBC_VER}-hdrs && |
---|
74 | rm -rf ${SRC}/glibc-${GLIBC_VER}-hdrs |
---|
75 | |
---|
76 | mkdir -p ${SRC}/glibc-${GLIBC_VER}-hdrs |
---|
77 | cd ${SRC}/glibc-${GLIBC_VER}-hdrs |
---|
78 | max_log_init Glibc ${GLIBC_VER} Cross ${CONFLOGS} ${LOG} |
---|
79 | |
---|
80 | # NOTE: ran into this during nptl configury |
---|
81 | # TODO: look into if this is required wo nptl |
---|
82 | if [ "Y" = ${USE_NPTL} ]; then |
---|
83 | case ${TGT_ARCH} in |
---|
84 | powerpc* | ppc* ) |
---|
85 | echo "libc_cv_ppc_machine=yes" >> config.cache |
---|
86 | ;; |
---|
87 | esac |
---|
88 | fi |
---|
89 | |
---|
90 | # set without-fp if target has no floating point unit |
---|
91 | if [ "${WITHOUT_FPU}" = "Y" ]; then |
---|
92 | extra_conf="${extra_conf} --without-fp" |
---|
93 | fi |
---|
94 | |
---|
95 | # HACK: hack around 2.6.8.1 release |
---|
96 | case ${KERNEL_VER} in 2.6.8.* ) KERNEL_VER=2.6.8 ;; esac |
---|
97 | |
---|
98 | # Have to use the hosts cpp to generate the headers |
---|
99 | CC=${CC-gcc} ../${PKGDIR}/configure --prefix=${BUILD_PREFIX} \ |
---|
100 | --host=${TARGET} --build=${BUILD} \ |
---|
101 | --without-cvs --disable-sanity-checks \ |
---|
102 | --enable-kernel=${KERNEL_VER} \ |
---|
103 | --with-headers=${KERN_HDR_DIR} \ |
---|
104 | --with-binutils=${HST_TOOLS}/${TARGET}/bin \ |
---|
105 | --cache-file=config.cache ${extra_conf} \ |
---|
106 | >> ${LOGFILE} 2>&1 && |
---|
107 | |
---|
108 | # Use target ld gas et al |
---|
109 | PATH=${HST_TOOLS}/${TARGET}/bin:${PATH} \ |
---|
110 | make ${INSTALL_OPTIONS} install-headers \ |
---|
111 | >> ${LOGFILE} 2>&1 && |
---|
112 | echo " o install-headers OK" || barf |
---|
113 | |
---|
114 | echo " include/bits should have been created" |
---|
115 | cp bits/stdio_lim.h ${INSTALL_PREFIX}/include/bits && |
---|
116 | touch ${INSTALL_PREFIX}/include/gnu/stubs.h |
---|
117 | |
---|
118 | # copy across threading headers |
---|
119 | cd ${SRC}/${PKGDIR} |
---|
120 | |
---|
121 | # Firstly we need to use the correct directory for our target |
---|
122 | # arch. All ix86 builds should point to i386, sparc/sparc32/sparc64 |
---|
123 | # to point to sparc, powerpc/powerpc64 to powerpc etc... |
---|
124 | case ${TGT_ARCH} in |
---|
125 | i?86 ) |
---|
126 | ARCH=i386 |
---|
127 | ;; |
---|
128 | x86_64 ) |
---|
129 | ARCH=x86_64 |
---|
130 | TYPE=x86_64 |
---|
131 | ;; |
---|
132 | sparc64* ) |
---|
133 | ARCH=sparc |
---|
134 | TYPE=sparc64 |
---|
135 | ;; |
---|
136 | sparc* ) |
---|
137 | ARCH=sparc |
---|
138 | TYPE=sparc32 |
---|
139 | ;; |
---|
140 | alpha ) |
---|
141 | ARCH=alpha |
---|
142 | ;; |
---|
143 | powerpc64 | ppc64 ) |
---|
144 | ARCH=powerpc |
---|
145 | TYPE=powerpc64 |
---|
146 | ;; |
---|
147 | powerpc | ppc ) |
---|
148 | ARCH=powerpc |
---|
149 | TYPE=powerpc32 |
---|
150 | ;; |
---|
151 | s390x ) |
---|
152 | ARCH=s390 |
---|
153 | TYPE=s390x |
---|
154 | ;; |
---|
155 | s390 ) |
---|
156 | ARCH=s390 |
---|
157 | TYPE=s390 |
---|
158 | ;; |
---|
159 | mips* ) |
---|
160 | ARCH=mips |
---|
161 | ;; |
---|
162 | esac |
---|
163 | |
---|
164 | if [ "${USE_NPTL}" = "Y" ]; then |
---|
165 | |
---|
166 | #NPTL |
---|
167 | cp nptl/sysdeps/pthread/pthread.h ${INSTALL_PREFIX}/include/ |
---|
168 | cp nptl/sysdeps/unix/sysv/linux/${ARCH}/bits/pthreadtypes.h \ |
---|
169 | ${INSTALL_PREFIX}/include/bits/ |
---|
170 | |
---|
171 | # On s390, powerpc and sparc we also need to get |
---|
172 | # sysdeps/${ARCH}/${TGT_ARCH}/bits/wordsize.h |
---|
173 | |
---|
174 | # As of 20040909 pthread.h pulls in bits/wordsize.h . |
---|
175 | # TODO: investigate whether the correct wordsize.h gets copied |
---|
176 | # across for a straight 64bit target (alpha) when doing this |
---|
177 | # on a 32bit system. ( see sysdeps/wordsize-{32,64} ) |
---|
178 | if [ -f sysdeps/${ARCH}/${TYPE}/bits/wordsize.h ]; then |
---|
179 | if [ ! -f ${INSTALL_PREFIX}/include/bits/wordsize.h ]; then |
---|
180 | echo " - copying sysdeps/${ARCH}/${TYPE}/bits/wordsize.h" |
---|
181 | cp sysdeps/${ARCH}/${TYPE}/bits/wordsize.h ${INSTALL_PREFIX}/include/bits/ |
---|
182 | fi |
---|
183 | fi |
---|
184 | |
---|
185 | else |
---|
186 | |
---|
187 | #Linuxthreads |
---|
188 | cp linuxthreads/sysdeps/pthread/pthread.h ${INSTALL_PREFIX}/include/ |
---|
189 | cp linuxthreads/sysdeps/pthread/bits/pthreadtypes.h \ |
---|
190 | ${INSTALL_PREFIX}/include/bits/ |
---|
191 | |
---|
192 | # TODO: on hppa we'd probably want |
---|
193 | # sysdeps/unix/sysv/linux/hppa/bits/initspin.h |
---|
194 | # instead |
---|
195 | cp linuxthreads/sysdeps/pthread/bits/initspin.h \ |
---|
196 | ${INSTALL_PREFIX}/include/bits/ |
---|
197 | fi |
---|