Magellan Linux

Annotation of /smage/branches/alx07x-unstable/include/multilib.sminc

Parent Directory Parent Directory | Revision Log Revision Log


Revision 5461 - (hide annotations) (download)
Tue Mar 25 10:52:50 2014 UTC (10 years, 1 month ago) by niro
Original Path: smage/trunk/include/multilib.sminc
File size: 13296 byte(s)
-sync with upstream
1 niro 1665 # $Id$
2     # multilib abis
3    
4 niro 3573 # 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 niro 1665 # 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 niro 3573 EMUL_LINUX_32_SDEPEND_x86_64=">= sys-apps/util-linux-2.19"
27 niro 1665 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 niro 3573 local saved_ldflags="${LDFLAGS}"
76     export LDFLAGS="${LDFLAGS} -L/${ABI_LIBDIR} -L/usr/${ABI_LIBDIR}"
77 niro 1665 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 niro 3573 if [[ ${MULTILIB_VERBOSE} = true ]]
83 niro 1665 then
84 niro 3573 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 niro 1665 fi
99    
100     # configure a linux32 emulated build
101     if [[ ${EMUL_LINUX_32} = true ]]
102     then
103 niro 3573 if [[ ${MULTILIB_VERBOSE} = true ]]
104     then
105     echo -e "${COLBLUE}*** ${COLGREEN} EMUL_LINUX_32${COLDEFAULT}='${EMUL_LINUX_32}'"
106     fi
107 niro 1665 uname(){ linux32 uname $@; } && export -f uname
108 niro 3573 local orig_chost="${CHOST}" && export CHOST="i686-pc-linux-gnu"
109 niro 1665 fi
110 niro 3573 if [[ ${MULTILIB_VERBOSE} = true ]]
111     then
112     echo -e "${COLBLUE}*** ${COLGREEN} CHOST${COLDEFAULT}='${CHOST}'"
113     fi
114 niro 1665
115     # run any given command
116     eval $@ || die
117    
118 niro 3573 unset ABI CC CXX ABI_LIBDIR
119 niro 1665 # keep pkgconfig clean
120     export PKG_CONFIG_PATH="${orig_pkg_config_path}"
121 niro 3573 export LDFLAGS="${saved_ldflags}"
122 niro 1665
123     # restore original settings
124     if [[ ${EMUL_LINUX_32} = true ]]
125     then
126     unset uname
127 niro 3573 export CHOST="${orig_chost}" && unset orig_chost
128 niro 1665 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 niro 3573 local saved_ldflags="${LDFLAGS}"
140 niro 1665 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 niro 3573 if [[ ${MULTILIB_VERBOSE} = true ]]
147 niro 1665 then
148 niro 3573 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 niro 1665 fi
163    
164     # run any given command
165     eval $@ || die
166    
167 niro 3573 unset ABI CC CXX ABI_LIBDIR
168 niro 1665 # keep pkgconfig clean
169     export PKG_CONFIG_PATH="${orig_pkg_config_path}"
170 niro 3573 export LDFLAGS="${saved_ldflags}"
171 niro 1665 }
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 niro 3573 cd ${SRCDIR}-${abi}/${SRCSUBDIR}
186 niro 1665 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 niro 3573 cd ${SRCDIR}-${abi}/${SRCSUBDIR}
207 niro 1665 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 niro 3573 cd ${SRCDIR}-${abi}/${SRCSUBDIR}
221 niro 1665 abi-${abi} $@ || die
222     done
223     }
224    
225     mabi()
226     {
227     echo \${ABI}
228     }
229    
230 niro 3573 mabi-cc()
231     {
232 niro 5461 echo "gcc -\${ABI}"
233 niro 3573 }
234    
235     mabi-cxx()
236     {
237 niro 5461 echo "g++ -\${ABI}"
238 niro 3573 }
239    
240     mabi-cflags()
241     {
242 niro 5461 echo "\${CFLAGS}"
243 niro 3573 }
244    
245     mabi-cxxflags()
246     {
247 niro 5461 echo "\${CXXFLAGS}"
248 niro 3573 }
249    
250     mabi-ldflags()
251     {
252 niro 5461 echo "\${LDFLAGS}"
253 niro 3573 }
254    
255 niro 1665 ##
256     # multilib compile functions
257     ##
258    
259     if [[ ! -z $(typeset -f mconfigure) ]]
260     then
261     # rename the old one
262     old_mconfigure=old$(typeset -f mconfigure)
263     eval "${old_mconfigure}"
264 niro 5461
265 niro 1665 mconfigure()
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 niro 3573 cd ${SRCDIR}-${abi}/${SRCSUBDIR}
276 niro 1665 abi-${abi} oldmconfigure $@ || die
277     done
278     }
279 niro 5461 fi
280 niro 1665
281     if [[ ! -z $(typeset -f cmake_configure) ]]
282     then
283     # rename the old one
284     old_cmake_configure=old$(typeset -f cmake_configure)
285     eval "${old_cmake_configure}"
286 niro 5461
287 niro 1665 cmake_configure()
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     local saved_SRCDIR="${SRCDIR}"
296     for abi in ${abis_to_run}
297     do
298 niro 5461 cd ${BUILDDIR}/build-${abi}
299 niro 1665 SRCDIR="${saved_SRCDIR}-${abi}"
300     abi-${abi} oldcmake_configure $@ || die
301     done
302 niro 3573 # restore SRCDIR
303     SRCDIR="${saved_SRCDIR}"
304 niro 1665 }
305 niro 5461 fi
306 niro 1665
307 niro 5461 if [[ ! -z $(typeset -f cmake_src_compile) ]]
308     then
309     # rename the old one
310     old_cmake_src_compile=old$(typeset -f cmake_src_compile)
311     eval "${old_cmake_src_compile}"
312    
313     cmake_src_compile()
314     {
315     local abi
316     local abis_to_run="${MULTILIB_ABIS}"
317    
318     # respect MULTILIB_ONLY_ABI variable
319     [[ ! -z ${MULTILIB_ONLY_ABI} ]] && abis_to_run="${MULTILIB_ONLY_ABI}"
320    
321     for abi in ${abis_to_run}
322     do
323     # remove build dir if exist
324     [[ -d ${BUILDDIR}/build-${abi} ]] && rm -rf ${BUILDDIR}/build-${abi}
325    
326     # build outside of the source dir
327     install -d ${BUILDDIR}/build-${abi} || die
328     cd ${BUILDDIR}/build-${abi}
329     done
330    
331     cmake_configure || die
332    
333     for abi in ${abis_to_run}
334     do
335     cd ${BUILDDIR}/build-${abi}
336     abi-${abi} oldmmake $@ || die
337     done
338     }
339     fi
340    
341     if [[ ! -z $(typeset -f cmake_src_check) ]]
342     then
343     # rename the old one
344     old_cmake_src_check=old$(typeset -f cmake_src_check)
345     eval "${old_cmake_check}"
346    
347     cmake_src_check()
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     cd ${BUILDDIR}/build-${abi}
358     mmake -j1 -k check || die
359     done
360     }
361     fi
362    
363     if [[ ! -z $(typeset -f cmake_src_install) ]]
364     then
365     # rename the old one
366     old_cmake_src_install=old$(typeset -f cmake_src_install)
367     eval "${old_cmake_install}"
368    
369     cmake_src_install()
370     {
371     local abi
372     local abis_to_run="${MULTILIB_ABIS}"
373    
374     # respect MULTILIB_ONLY_ABI variable
375     [[ ! -z ${MULTILIB_ONLY_ABI} ]] && abis_to_run="${MULTILIB_ONLY_ABI}"
376    
377     for abi in ${abis_to_run}
378     do
379     # install build outside of the source dir
380     cd ${BUILDDIR}/build-${abi}
381     abi-${abi} oldmmake DESTDIR=${BINDIR} $@ install || die
382     done
383     }
384     fi
385    
386 niro 1665 if [[ ! -z $(typeset -f munpack) ]]
387     then
388     # rename the old one
389     old_munpack=old$(typeset -f munpack)
390     eval "${old_munpack}"
391 niro 5461
392 niro 1665 munpack()
393     {
394     local abi
395     local abis_to_run="${MULTILIB_ABIS}"
396    
397     # respect MULTILIB_ONLY_ABI variable
398     [[ ! -z ${MULTILIB_ONLY_ABI} ]] && abis_to_run="${MULTILIB_ONLY_ABI}"
399    
400     for abi in ${abis_to_run}
401     do
402     echo -e "${COLBLUE}*** ${COLGREEN}unpacking for ABI -${abi}${COLDEFAULT}"
403 niro 4031 oldmunpack $@ || die
404 niro 1665 mv ${SRCDIR} ${SRCDIR}-${abi} || die
405     done
406     }
407 niro 5461 fi
408 niro 1665
409     if [[ ! -z $(typeset -f mmake) ]]
410     then
411     # rename the old one
412     old_mmake=old$(typeset -f mmake)
413     eval "${old_mmake}"
414 niro 5461
415 niro 1665 mmake()
416     {
417     local abi
418     local abis_to_run="${MULTILIB_ABIS}"
419    
420     # respect MULTILIB_ONLY_ABI variable
421     [[ ! -z ${MULTILIB_ONLY_ABI} ]] && abis_to_run="${MULTILIB_ONLY_ABI}"
422    
423     for abi in ${abis_to_run}
424     do
425     echo -e "${COLBLUE}*** ${COLGREEN}compiling for ABI -${abi}${COLDEFAULT}"
426 niro 3573 cd ${SRCDIR}-${abi}/${SRCSUBDIR}
427 niro 1665 abi-${abi} oldmmake $@ || die
428     done
429     }
430 niro 5461 fi
431 niro 1665
432     if [[ ! -z $(typeset -f minstall) ]]
433     then
434     # rename the old one
435     old_minstall=old$(typeset -f minstall)
436     eval "${old_minstall}"
437 niro 5461
438 niro 1665 minstall()
439     {
440     local abi
441     local abis_to_run="${MULTILIB_ABIS}"
442    
443     # respect MULTILIB_ONLY_ABI variable
444     [[ ! -z ${MULTILIB_ONLY_ABI} ]] && abis_to_run="${MULTILIB_ONLY_ABI}"
445    
446     for abi in ${abis_to_run}
447     do
448     echo -e "${COLBLUE}*** ${COLGREEN}installing for ABI -${abi}${COLDEFAULT}"
449 niro 3573 cd ${SRCDIR}-${abi}/${SRCSUBDIR}
450 niro 1665 abi-${abi} oldminstall $@ || die
451     done
452     }
453 niro 5461 fi
454 niro 1665
455     minstall_destdir()
456     {
457     local abi
458     local abis_to_run="${MULTILIB_ABIS}"
459    
460     # respect MULTILIB_ONLY_ABI variable
461     [[ ! -z ${MULTILIB_ONLY_ABI} ]] && abis_to_run="${MULTILIB_ONLY_ABI}"
462    
463     for abi in ${abis_to_run}
464     do
465     echo -e "${COLBLUE}*** ${COLGREEN}installing for ABI -${abi}${COLDEFAULT}"
466 niro 3573 cd ${SRCDIR}-${abi}/${SRCSUBDIR}
467 niro 1665 make DESTDIR=${BINDIR} $@ install || die
468     done
469     }
470    
471     if [[ ! -z $(typeset -f mpatch) ]]
472     then
473     # rename the old one
474     old_mpatch=old$(typeset -f mpatch)
475     eval "${old_mpatch}"
476 niro 5461
477 niro 1665 mpatch()
478     {
479     local abi
480     local abis_to_run="${MULTILIB_ABIS}"
481    
482     # respect MULTILIB_ONLY_ABI variable
483     [[ ! -z ${MULTILIB_ONLY_ABI} ]] && abis_to_run="${MULTILIB_ONLY_ABI}"
484    
485     for abi in ${abis_to_run}
486     do
487     echo -e "${COLBLUE}*** ${COLGREEN}appling patch for ABI -${abi}${COLDEFAULT}"
488 niro 3573 cd ${SRCDIR}-${abi}/${SRCSUBDIR}
489 niro 1665 oldmpatch $@ || die
490     done
491     }
492 niro 5461 fi
493 niro 1665
494     if [[ ! -z $(typeset -f mlibtoolize) ]]
495     then
496     # rename the old one
497     old_mlibtoolize=old$(typeset -f mlibtoolize)
498     eval "${old_mlibtoolize}"
499 niro 5461
500 niro 1665 mlibtoolize()
501     {
502     local abi
503     local abis_to_run="${MULTILIB_ABIS}"
504    
505     # respect MULTILIB_ONLY_ABI variable
506     [[ ! -z ${MULTILIB_ONLY_ABI} ]] && abis_to_run="${MULTILIB_ONLY_ABI}"
507    
508     for abi in ${abis_to_run}
509     do
510     echo -e "${COLBLUE}*** ${COLGREEN}running mlibtoolize for ABI -${abi}${COLDEFAULT}"
511 niro 3573 cd ${SRCDIR}-${abi}/${SRCSUBDIR}
512 niro 1665 oldmlibtoolize $@ || die
513     done
514     }
515 niro 5461 fi
516 niro 1665
517 niro 3573 if [[ ! -z $(typeset -f mautoreconf) ]]
518     then
519     # rename the old one
520     old_mautoreconf=old$(typeset -f mautoreconf)
521     eval "${old_mautoreconf}"
522 niro 5461
523 niro 3573 mautoreconf()
524     {
525     local abi
526     local abis_to_run="${MULTILIB_ABIS}"
527    
528     # respect MULTILIB_ONLY_ABI variable
529     [[ ! -z ${MULTILIB_ONLY_ABI} ]] && abis_to_run="${MULTILIB_ONLY_ABI}"
530    
531     for abi in ${abis_to_run}
532     do
533     echo -e "${COLBLUE}*** ${COLGREEN}running mautoreconf for ABI -${abi}${COLDEFAULT}"
534     cd ${SRCDIR}-${abi}/${SRCSUBDIR}
535     oldmautoreconf $@ || die
536     done
537     }
538 niro 5461 fi
539 niro 3573
540     if [[ ! -z $(typeset -f minstalldocs) ]]
541     then
542     # rename the old one
543     old_minstalldocs=old$(typeset -f minstalldocs)
544     eval "${old_minstalldocs}"
545 niro 5461
546 niro 1665 minstalldocs()
547     {
548     local abi
549     local docfiles
550    
551     local abis_to_run="${MULTILIB_ABIS}"
552    
553     # respect MULTILIB_ONLY_ABI variable
554     [[ ! -z ${MULTILIB_ONLY_ABI} ]] && abis_to_run="${MULTILIB_ONLY_ABI}"
555    
556     for abi in ${abis_to_run}
557     do
558 niro 3573 cd ${SRCDIR}-${abi}/${SRCSUBDIR}
559     oldminstalldocs $@ || die
560 niro 1665 done
561     }
562 niro 5461 fi
563 niro 1665
564     ##
565     # multilib mbuild wrappers
566     ##
567     multilib_src_prepare()
568     {
569 niro 5217 munpack ${SRCFILE} || die
570 niro 1665 }
571    
572     multilib_src_compile()
573     {
574 niro 5461 if [[ ! -z $(typeset -f cmake_src_compile) ]]
575     then
576     cmake_src_compile || die
577     else
578     mconfigure || die
579     mmake || die
580     fi
581 niro 1665 }
582    
583 niro 3573 multilib_src_check()
584     {
585 niro 5461 if [[ ! -z $(typeset -f cmake_src_check) ]]
586     then
587     cmake_src_check || die
588     else
589     mmake -j1 -k check || die
590     fi
591 niro 3573 }
592    
593 niro 1665 multilib_src_install()
594     {
595 niro 5461 if [[ ! -z $(typeset -f cmake_src_install) ]]
596     then
597     cmake_src_install || die
598     else
599     mmake DESTDIR=${BINDIR} install || die
600     fi
601 niro 1665
602     local i
603     for abi in ${MULTILIB_ABIS}
604     do
605 niro 3573 cd ${SRCDIR}-${abi}/${SRCSUBDIR}
606 niro 1665 for i in ABOUT-NLS AUTHORS BUGS CHANGES ChangeLog COPYING \
607     FAQ LICENSE NEWS README TODO
608     do
609     if [ -f ${SRCDIR}-${abi}/${i} ]
610     then
611     minstalldocs ${i} || die
612     fi
613     done
614     done
615     }
616    
617 niro 3573 export_inherits multilib src_prepare src_compile src_check src_install