Magellan Linux

Contents of /smage/trunk/include/multilib.sminc

Parent Directory Parent Directory | Revision Log Revision Log


Revision 3 - (show annotations) (download)
Sat Jan 2 16:59:51 2010 UTC (14 years, 4 months ago) by niro
File size: 9479 byte(s)
-initial smage includes
1 # $Header: /magellan-cvs/smage/include/multilib.sminc,v 1.33 2007-11-13 15:49:09 niro Exp $
2 # multilib abis
3
4 # do not define EMUL_LINUX_32 after inherit of multlib !!
5 # it may break i*86 builds
6
7 # default ABIs to be build
8 case ${ARCH} in
9 x86_64)
10 : ${MULTILIB_ABIS="m32 m64"}
11 # default false
12 : ${EMUL_LINUX_32="false"}
13
14 # add linux32 to the dependencies
15 if [[ ${EMUL_LINUX_32} = true ]]
16 then
17 EMUL_LINUX_32_SDEPENDS_x86_64=">= dev-util/linux32-1"
18 SPECIAL_VARS="${SPECIAL_VARS} EMUL_LINUX_32_SDEPENDS_x86_64"
19 fi
20 ;;
21 i*86)
22 : ${MULTILIB_ABIS="m32"}
23 # always false
24 EMUL_LINUX_32="false"
25 ;;
26 esac
27
28 # add linux32 to the dependencies
29 if [[ ${EMUL_LINUX_32} = true ]]
30 then
31 # very dirty trick to get the dependencies right
32 # ; is the IFS, tr replaces ; with an crlfs
33 # the var ist decided with our common eval+echo magic
34 if [[ -z ${SDEPEND} ]]
35 then
36 SDEPEND="\$(eval echo \\\$EMUL_LINUX_32_SDEPENDS_\${ARCH/i*86/x86} | tr ';' '\n')"
37 else
38 SDEPEND="${SDEPEND}
39 \$(eval echo \\\$EMUL_LINUX_32_SDEPENDS_\${ARCH/i*86/x86} | tr ';' '\n')"
40 fi
41 fi
42
43 ##
44 # overide some defaults to respect ABI_LIBDIR
45 ##
46 mlibdir()
47 {
48 local libdir=lib
49 [[ ${ARCH} = x86_64 ]] && libdir=lib64
50 [[ -n ${ABI_LIBDIR} ]] && libdir="${ABI_LIBDIR}"
51
52 echo "${libdir}"
53 }
54
55 ##
56 # multilib abi changers
57 ##
58 abi-m32()
59 {
60 export ABI="m32"
61 export CC="gcc -${ABI}"
62 export CXX="g++ -${ABI}"
63 export ABI_LIBDIR="lib"
64 if [[ ${EXPORT_ABI_LDFLAGS} != false ]]
65 then
66 export LDFLAGS="-L/${ABI_LIBDIR} -L/usr/${ABI_LIBDIR}"
67 fi
68 export PKG_CONFIG_PATH="/usr/${ABI_LIBDIR}/pkgconfig"
69
70 echo -e "${COLBLUE}*** ${COLGREEN}running with -${ABI} ABI${COLDEFAULT}"
71 echo -e "${COLBLUE}*** ${COLGREEN} ABI${COLDEFAULT}='${ABI}'"
72 echo -e "${COLBLUE}*** ${COLGREEN} CC${COLDEFAULT}='${CC}'"
73 echo -e "${COLBLUE}*** ${COLGREEN} CXX${COLDEFAULT}='${CXX}'"
74 echo -e "${COLBLUE}*** ${COLGREEN} ABI_LIBDIR${COLDEFAULT}='${ABI_LIBDIR}'"
75 if [[ ${EXPORT_ABI_LDFLAGS} != false ]]
76 then
77 echo -e "${COLBLUE}*** ${COLGREEN} LDFLAGS${COLDEFAULT}='${LDFLAGS}'"
78 else
79 echo -e "${COLBLUE}*** ${COLGREEN} LDFLAGS${COLDEFAULT}='${COLYELLOW}not exported${COLDEFAULT}'"
80 fi
81 echo -e "${COLBLUE}*** ${COLGREEN} PKG_CONFIG_PATH${COLDEFAULT}='${PKG_CONFIG_PATH}'"
82
83 # configure a linux32 emulated build
84 if [[ ${EMUL_LINUX_32} = true ]]
85 then
86 echo -e "${COLBLUE}*** ${COLGREEN} EMUL_LINUX_32${COLDEFAULT}='${EMUL_LINUX_32}'"
87 uname(){ linux32 uname $@; } && export -f uname
88 ORIG_CHOST="${CHOST}" && export CHOST="i686-pc-linux-gnu"
89 fi
90 echo -e "${COLBLUE}*** ${COLGREEN} CHOST${COLDEFAULT}='${CHOST}'"
91
92 # run any given command
93 eval $@ || die
94
95 unset ABI CC CXX ABI_LIBDIR LDFLAGS PKG_CONFIG_PATH
96
97 # restore original settings
98 if [[ ${EMUL_LINUX_32} = true ]]
99 then
100 unset uname
101 export CHOST="${ORIG_CHOST}" && unset ORIG_CHOST
102 fi
103 }
104
105 abi-m64()
106 {
107 export ABI="m64"
108 export CC="gcc -${ABI}"
109 export CXX="g++ -${ABI}"
110 export ABI_LIBDIR="lib64"
111 if [[ ${EXPORT_ABI_LDFLAGS} != false ]]
112 then
113 export LDFLAGS="-L/${ABI_LIBDIR} -L/usr/${ABI_LIBDIR}"
114 fi
115 export PKG_CONFIG_PATH="/usr/${ABI_LIBDIR}/pkgconfig"
116
117 echo -e "${COLBLUE}*** ${COLGREEN}running with -${ABI} ABI${COLDEFAULT}"
118 echo -e "${COLBLUE}*** ${COLGREEN} ABI${COLDEFAULT}='${ABI}'"
119 echo -e "${COLBLUE}*** ${COLGREEN} CC${COLDEFAULT}='${CC}'"
120 echo -e "${COLBLUE}*** ${COLGREEN} CXX${COLDEFAULT}='${CXX}'"
121 echo -e "${COLBLUE}*** ${COLGREEN} ABI_LIBDIR${COLDEFAULT}='${ABI_LIBDIR}'"
122 if [[ ${EXPORT_ABI_LDFLAGS} != false ]]
123 then
124 echo -e "${COLBLUE}*** ${COLGREEN} LDFLAGS${COLDEFAULT}='${LDFLAGS}'"
125 else
126 echo -e "${COLBLUE}*** ${COLGREEN} LDFLAGS${COLDEFAULT}='${COLYELLOW}not exported${COLDEFAULT}'"
127 fi
128 echo -e "${COLBLUE}*** ${COLGREEN} CHOST${COLDEFAULT}='${CHOST}'"
129 echo -e "${COLBLUE}*** ${COLGREEN} PKG_CONFIG_PATH${COLDEFAULT}='${PKG_CONFIG_PATH}'"
130
131 # run any given command
132 eval $@ || die
133
134 unset ABI CC CXX ABI_LIBDIR LDFLAGS PKG_CONFIG_PATH
135 }
136
137 only-m32()
138 {
139 local abi=m32
140 local i
141
142 for i in ${MULTILIB_ABIS}
143 do
144 if [[ ${i} = ${abi} ]]
145 then
146 # export this for mpatch etc (to repect only-${abi})
147 export MULTILIB_ONLY_ABI=${abi}
148
149 cd ${SRCDIR}-${abi}
150 abi-${abi} $@ || die
151
152 # unset this is very important
153 unset MULTILIB_ONLY_ABI
154 fi
155 done
156 }
157
158 only-m64()
159 {
160 local abi=m64
161 local i
162
163 for i in ${MULTILIB_ABIS}
164 do
165 if [[ ${i} = ${abi} ]]
166 then
167 # export this for mpatch etc (to repect only-${abi})
168 export MULTILIB_ONLY_ABI=${abi}
169
170 cd ${SRCDIR}-${abi}
171 abi-${abi} $@ || die
172
173 # unset this is very important
174 unset MULTILIB_ONLY_ABI
175 fi
176 done
177 }
178
179 all-abis()
180 {
181 local abi
182 for abi in ${MULTILIB_ABIS}
183 do
184 cd ${SRCDIR}-${abi}
185 abi-${abi} $@ || die
186 done
187 }
188
189 ##
190 # multilib compile functions
191 ##
192
193 if [[ ! -z $(typeset -f mconfigure) ]]
194 then
195 # rename the old one
196 old_mconfigure=old$(typeset -f mconfigure)
197 eval "${old_mconfigure}"
198 fi
199 mconfigure()
200 {
201 local abi
202 local abis_to_run="${MULTILIB_ABIS}"
203
204 # respect MULTILIB_ONLY_ABI variable
205 [[ ! -z ${MULTILIB_ONLY_ABI} ]] && abis_to_run="${MULTILIB_ONLY_ABI}"
206
207 for abi in ${abis_to_run}
208 do
209 cd ${SRCDIR}-${abi}
210 abi-${abi} oldmconfigure $@ || die
211 done
212 }
213
214 if [[ ! -z $(typeset -f cmake_configure) ]]
215 then
216 # rename the old one
217 old_cmake_configure=old$(typeset -f cmake_configure)
218 eval "${old_cmake_configure}"
219 fi
220 cmake_configure()
221 {
222 local abi
223 local abis_to_run="${MULTILIB_ABIS}"
224
225 # respect MULTILIB_ONLY_ABI variable
226 [[ ! -z ${MULTILIB_ONLY_ABI} ]] && abis_to_run="${MULTILIB_ONLY_ABI}"
227
228 local saved_SRCDIR="${SRCDIR}"
229 for abi in ${abis_to_run}
230 do
231 SRCDIR="${saved_SRCDIR}-${abi}"
232 cd ${SRCDIR}
233 abi-${abi} oldcmake_configure $@ || die
234 done
235 }
236
237 if [[ ! -z $(typeset -f munpack) ]]
238 then
239 # rename the old one
240 old_munpack=old$(typeset -f munpack)
241 eval "${old_munpack}"
242 fi
243 munpack()
244 {
245 local abi
246 local abis_to_run="${MULTILIB_ABIS}"
247
248 # respect MULTILIB_ONLY_ABI variable
249 [[ ! -z ${MULTILIB_ONLY_ABI} ]] && abis_to_run="${MULTILIB_ONLY_ABI}"
250
251 for abi in ${abis_to_run}
252 do
253 echo -e "${COLBLUE}*** ${COLGREEN}unpacking for ABI -${abi}${COLDEFAULT}"
254 oldmunpack ${SRCFILE} || die
255 mv ${SRCDIR} ${SRCDIR}-${abi} || die
256 done
257 }
258
259 if [[ ! -z $(typeset -f mmake) ]]
260 then
261 # rename the old one
262 old_mmake=old$(typeset -f mmake)
263 eval "${old_mmake}"
264 fi
265 mmake()
266 {
267 local abi
268 local abis_to_run="${MULTILIB_ABIS}"
269
270 # respect MULTILIB_ONLY_ABI variable
271 [[ ! -z ${MULTILIB_ONLY_ABI} ]] && abis_to_run="${MULTILIB_ONLY_ABI}"
272
273 for abi in ${abis_to_run}
274 do
275 echo -e "${COLBLUE}*** ${COLGREEN}compiling for ABI -${abi}${COLDEFAULT}"
276 cd ${SRCDIR}-${abi}
277 abi-${abi} oldmmake $@ || die
278 done
279 }
280
281 if [[ ! -z $(typeset -f minstall) ]]
282 then
283 # rename the old one
284 old_minstall=old$(typeset -f minstall)
285 eval "${old_minstall}"
286 fi
287 minstall()
288 {
289 local abi
290 local abis_to_run="${MULTILIB_ABIS}"
291
292 # respect MULTILIB_ONLY_ABI variable
293 [[ ! -z ${MULTILIB_ONLY_ABI} ]] && abis_to_run="${MULTILIB_ONLY_ABI}"
294
295 for abi in ${abis_to_run}
296 do
297 echo -e "${COLBLUE}*** ${COLGREEN}installing for ABI -${abi}${COLDEFAULT}"
298 cd ${SRCDIR}-${abi}
299 abi-${abi} oldminstall $@ || die
300 done
301 }
302
303 minstall_destdir()
304 {
305 local abi
306 local abis_to_run="${MULTILIB_ABIS}"
307
308 # respect MULTILIB_ONLY_ABI variable
309 [[ ! -z ${MULTILIB_ONLY_ABI} ]] && abis_to_run="${MULTILIB_ONLY_ABI}"
310
311 for abi in ${abis_to_run}
312 do
313 echo -e "${COLBLUE}*** ${COLGREEN}installing for ABI -${abi}${COLDEFAULT}"
314 cd ${SRCDIR}-${abi}
315 make DESTDIR=${BINDIR} $@ install || die
316 done
317 }
318
319 if [[ ! -z $(typeset -f mpatch) ]]
320 then
321 # rename the old one
322 old_mpatch=old$(typeset -f mpatch)
323 eval "${old_mpatch}"
324 fi
325 mpatch()
326 {
327 local abi
328 local abis_to_run="${MULTILIB_ABIS}"
329
330 # respect MULTILIB_ONLY_ABI variable
331 [[ ! -z ${MULTILIB_ONLY_ABI} ]] && abis_to_run="${MULTILIB_ONLY_ABI}"
332
333 for abi in ${abis_to_run}
334 do
335 echo -e "${COLBLUE}*** ${COLGREEN}appling patch for ABI -${abi}${COLDEFAULT}"
336 cd ${SRCDIR}-${abi}
337 oldmpatch $@ || die
338 done
339 }
340
341 if [[ ! -z $(typeset -f mlibtoolize) ]]
342 then
343 # rename the old one
344 old_mlibtoolize=old$(typeset -f mlibtoolize)
345 eval "${old_mlibtoolize}"
346 fi
347 mlibtoolize()
348 {
349 local abi
350 local abis_to_run="${MULTILIB_ABIS}"
351
352 # respect MULTILIB_ONLY_ABI variable
353 [[ ! -z ${MULTILIB_ONLY_ABI} ]] && abis_to_run="${MULTILIB_ONLY_ABI}"
354
355 for abi in ${abis_to_run}
356 do
357 echo -e "${COLBLUE}*** ${COLGREEN}running mlibtoolize for ABI -${abi}${COLDEFAULT}"
358 cd ${SRCDIR}-${abi}
359 oldmlibtoolize $@ || die
360 done
361 }
362
363 minstalldocs()
364 {
365 local abi
366 local docfiles
367 docfiles="$@"
368
369 local abis_to_run="${MULTILIB_ABIS}"
370
371 # respect MULTILIB_ONLY_ABI variable
372 [[ ! -z ${MULTILIB_ONLY_ABI} ]] && abis_to_run="${MULTILIB_ONLY_ABI}"
373
374 for abi in ${abis_to_run}
375 do
376 cd ${SRCDIR}-${abi}
377 if [ ! -d ${BINDIR}/usr/share/doc/${PNAME}-${PVER} ]
378 then
379 install -d ${BINDIR}/usr/share/doc/${PNAME}-${PVER} || die "creating doc dirs."
380 fi
381
382 for i in ${docfiles}
383 do
384 cat ${SRCDIR}-${abi}/${i} | gzip -9c > ${SRCDIR}-${abi}/${i}.gz || die "gzipping docs."
385 install -m 0644 ${SRCDIR}-${abi}/${i}.gz \
386 ${BINDIR}/usr/share/doc/${PNAME}-${PVER} || die "coping docs."
387 done
388 done
389 }
390
391 ##
392 # multilib mbuild wrappers
393 ##
394 multilib_src_prepare()
395 {
396 munpack
397 }
398
399 multilib_src_compile()
400 {
401 mconfigure
402 mmake
403 }
404
405 multilib_src_install()
406 {
407 minstall_destdir
408
409 local i
410 for abi in ${MULTILIB_ABIS}
411 do
412 cd ${SRCDIR}-${abi}
413 for i in ABOUT-NLS AUTHORS BUGS CHANGES ChangeLog COPYING \
414 FAQ LICENSE NEWS README TODO
415 do
416 if [ -f ${SRCDIR}-${abi}/${i} ]
417 then
418 minstalldocs ${i} || die
419 fi
420 done
421 done
422 }
423
424 export_inherits multilib src_prepare src_compile src_install