Magellan Linux

Contents of /trunk/include/multilib.sminc

Parent Directory Parent Directory | Revision Log Revision Log


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