Magellan Linux

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

Parent Directory Parent Directory | Revision Log Revision Log


Revision 5711 - (hide annotations) (download)
Thu Jul 3 13:54:17 2014 UTC (9 years, 10 months ago) by niro
File size: 13415 byte(s)
-upstream sync
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     SRCDIR="${saved_SRCDIR}-${abi}"
299 niro 5711 # honor inside and outside build-dir builds
300     if [ -d ${BUILDDIR}/build-${abi} ]
301     then
302     cd ${BUILDDIR}/build-${abi}
303     else
304     cd ${SRCDIR}
305     fi
306 niro 1665 abi-${abi} oldcmake_configure $@ || die
307     done
308 niro 3573 # restore SRCDIR
309     SRCDIR="${saved_SRCDIR}"
310 niro 1665 }
311 niro 5461 fi
312 niro 1665
313 niro 5461 if [[ ! -z $(typeset -f cmake_src_compile) ]]
314     then
315     # rename the old one
316     old_cmake_src_compile=old$(typeset -f cmake_src_compile)
317     eval "${old_cmake_src_compile}"
318    
319     cmake_src_compile()
320     {
321     local abi
322     local abis_to_run="${MULTILIB_ABIS}"
323    
324     # respect MULTILIB_ONLY_ABI variable
325     [[ ! -z ${MULTILIB_ONLY_ABI} ]] && abis_to_run="${MULTILIB_ONLY_ABI}"
326    
327     for abi in ${abis_to_run}
328     do
329     # remove build dir if exist
330     [[ -d ${BUILDDIR}/build-${abi} ]] && rm -rf ${BUILDDIR}/build-${abi}
331    
332     # build outside of the source dir
333     install -d ${BUILDDIR}/build-${abi} || die
334     cd ${BUILDDIR}/build-${abi}
335     done
336    
337     cmake_configure || die
338    
339     for abi in ${abis_to_run}
340     do
341     cd ${BUILDDIR}/build-${abi}
342     abi-${abi} oldmmake $@ || die
343     done
344     }
345     fi
346    
347     if [[ ! -z $(typeset -f cmake_src_check) ]]
348     then
349     # rename the old one
350     old_cmake_src_check=old$(typeset -f cmake_src_check)
351     eval "${old_cmake_check}"
352    
353     cmake_src_check()
354     {
355     local abi
356     local abis_to_run="${MULTILIB_ABIS}"
357    
358     # respect MULTILIB_ONLY_ABI variable
359     [[ ! -z ${MULTILIB_ONLY_ABI} ]] && abis_to_run="${MULTILIB_ONLY_ABI}"
360    
361     for abi in ${abis_to_run}
362     do
363     cd ${BUILDDIR}/build-${abi}
364     mmake -j1 -k check || die
365     done
366     }
367     fi
368    
369     if [[ ! -z $(typeset -f cmake_src_install) ]]
370     then
371     # rename the old one
372     old_cmake_src_install=old$(typeset -f cmake_src_install)
373     eval "${old_cmake_install}"
374    
375     cmake_src_install()
376     {
377     local abi
378     local abis_to_run="${MULTILIB_ABIS}"
379    
380     # respect MULTILIB_ONLY_ABI variable
381     [[ ! -z ${MULTILIB_ONLY_ABI} ]] && abis_to_run="${MULTILIB_ONLY_ABI}"
382    
383     for abi in ${abis_to_run}
384     do
385     # install build outside of the source dir
386     cd ${BUILDDIR}/build-${abi}
387     abi-${abi} oldmmake DESTDIR=${BINDIR} $@ install || die
388     done
389     }
390     fi
391    
392 niro 1665 if [[ ! -z $(typeset -f munpack) ]]
393     then
394     # rename the old one
395     old_munpack=old$(typeset -f munpack)
396     eval "${old_munpack}"
397 niro 5461
398 niro 1665 munpack()
399     {
400     local abi
401     local abis_to_run="${MULTILIB_ABIS}"
402    
403     # respect MULTILIB_ONLY_ABI variable
404     [[ ! -z ${MULTILIB_ONLY_ABI} ]] && abis_to_run="${MULTILIB_ONLY_ABI}"
405    
406     for abi in ${abis_to_run}
407     do
408     echo -e "${COLBLUE}*** ${COLGREEN}unpacking for ABI -${abi}${COLDEFAULT}"
409 niro 4031 oldmunpack $@ || die
410 niro 1665 mv ${SRCDIR} ${SRCDIR}-${abi} || die
411     done
412     }
413 niro 5461 fi
414 niro 1665
415     if [[ ! -z $(typeset -f mmake) ]]
416     then
417     # rename the old one
418     old_mmake=old$(typeset -f mmake)
419     eval "${old_mmake}"
420 niro 5461
421 niro 1665 mmake()
422     {
423     local abi
424     local abis_to_run="${MULTILIB_ABIS}"
425    
426     # respect MULTILIB_ONLY_ABI variable
427     [[ ! -z ${MULTILIB_ONLY_ABI} ]] && abis_to_run="${MULTILIB_ONLY_ABI}"
428    
429     for abi in ${abis_to_run}
430     do
431     echo -e "${COLBLUE}*** ${COLGREEN}compiling for ABI -${abi}${COLDEFAULT}"
432 niro 3573 cd ${SRCDIR}-${abi}/${SRCSUBDIR}
433 niro 1665 abi-${abi} oldmmake $@ || die
434     done
435     }
436 niro 5461 fi
437 niro 1665
438     if [[ ! -z $(typeset -f minstall) ]]
439     then
440     # rename the old one
441     old_minstall=old$(typeset -f minstall)
442     eval "${old_minstall}"
443 niro 5461
444 niro 1665 minstall()
445     {
446     local abi
447     local abis_to_run="${MULTILIB_ABIS}"
448    
449     # respect MULTILIB_ONLY_ABI variable
450     [[ ! -z ${MULTILIB_ONLY_ABI} ]] && abis_to_run="${MULTILIB_ONLY_ABI}"
451    
452     for abi in ${abis_to_run}
453     do
454     echo -e "${COLBLUE}*** ${COLGREEN}installing for ABI -${abi}${COLDEFAULT}"
455 niro 3573 cd ${SRCDIR}-${abi}/${SRCSUBDIR}
456 niro 1665 abi-${abi} oldminstall $@ || die
457     done
458     }
459 niro 5461 fi
460 niro 1665
461     minstall_destdir()
462     {
463     local abi
464     local abis_to_run="${MULTILIB_ABIS}"
465    
466     # respect MULTILIB_ONLY_ABI variable
467     [[ ! -z ${MULTILIB_ONLY_ABI} ]] && abis_to_run="${MULTILIB_ONLY_ABI}"
468    
469     for abi in ${abis_to_run}
470     do
471     echo -e "${COLBLUE}*** ${COLGREEN}installing for ABI -${abi}${COLDEFAULT}"
472 niro 3573 cd ${SRCDIR}-${abi}/${SRCSUBDIR}
473 niro 1665 make DESTDIR=${BINDIR} $@ install || die
474     done
475     }
476    
477     if [[ ! -z $(typeset -f mpatch) ]]
478     then
479     # rename the old one
480     old_mpatch=old$(typeset -f mpatch)
481     eval "${old_mpatch}"
482 niro 5461
483 niro 1665 mpatch()
484     {
485     local abi
486     local abis_to_run="${MULTILIB_ABIS}"
487    
488     # respect MULTILIB_ONLY_ABI variable
489     [[ ! -z ${MULTILIB_ONLY_ABI} ]] && abis_to_run="${MULTILIB_ONLY_ABI}"
490    
491     for abi in ${abis_to_run}
492     do
493     echo -e "${COLBLUE}*** ${COLGREEN}appling patch for ABI -${abi}${COLDEFAULT}"
494 niro 3573 cd ${SRCDIR}-${abi}/${SRCSUBDIR}
495 niro 1665 oldmpatch $@ || die
496     done
497     }
498 niro 5461 fi
499 niro 1665
500     if [[ ! -z $(typeset -f mlibtoolize) ]]
501     then
502     # rename the old one
503     old_mlibtoolize=old$(typeset -f mlibtoolize)
504     eval "${old_mlibtoolize}"
505 niro 5461
506 niro 1665 mlibtoolize()
507     {
508     local abi
509     local abis_to_run="${MULTILIB_ABIS}"
510    
511     # respect MULTILIB_ONLY_ABI variable
512     [[ ! -z ${MULTILIB_ONLY_ABI} ]] && abis_to_run="${MULTILIB_ONLY_ABI}"
513    
514     for abi in ${abis_to_run}
515     do
516     echo -e "${COLBLUE}*** ${COLGREEN}running mlibtoolize for ABI -${abi}${COLDEFAULT}"
517 niro 3573 cd ${SRCDIR}-${abi}/${SRCSUBDIR}
518 niro 1665 oldmlibtoolize $@ || die
519     done
520     }
521 niro 5461 fi
522 niro 1665
523 niro 3573 if [[ ! -z $(typeset -f mautoreconf) ]]
524     then
525     # rename the old one
526     old_mautoreconf=old$(typeset -f mautoreconf)
527     eval "${old_mautoreconf}"
528 niro 5461
529 niro 3573 mautoreconf()
530     {
531     local abi
532     local abis_to_run="${MULTILIB_ABIS}"
533    
534     # respect MULTILIB_ONLY_ABI variable
535     [[ ! -z ${MULTILIB_ONLY_ABI} ]] && abis_to_run="${MULTILIB_ONLY_ABI}"
536    
537     for abi in ${abis_to_run}
538     do
539     echo -e "${COLBLUE}*** ${COLGREEN}running mautoreconf for ABI -${abi}${COLDEFAULT}"
540     cd ${SRCDIR}-${abi}/${SRCSUBDIR}
541     oldmautoreconf $@ || die
542     done
543     }
544 niro 5461 fi
545 niro 3573
546     if [[ ! -z $(typeset -f minstalldocs) ]]
547     then
548     # rename the old one
549     old_minstalldocs=old$(typeset -f minstalldocs)
550     eval "${old_minstalldocs}"
551 niro 5461
552 niro 1665 minstalldocs()
553     {
554     local abi
555     local docfiles
556    
557     local abis_to_run="${MULTILIB_ABIS}"
558    
559     # respect MULTILIB_ONLY_ABI variable
560     [[ ! -z ${MULTILIB_ONLY_ABI} ]] && abis_to_run="${MULTILIB_ONLY_ABI}"
561    
562     for abi in ${abis_to_run}
563     do
564 niro 3573 cd ${SRCDIR}-${abi}/${SRCSUBDIR}
565     oldminstalldocs $@ || die
566 niro 1665 done
567     }
568 niro 5461 fi
569 niro 1665
570     ##
571     # multilib mbuild wrappers
572     ##
573     multilib_src_prepare()
574     {
575 niro 5217 munpack ${SRCFILE} || die
576 niro 1665 }
577    
578     multilib_src_compile()
579     {
580 niro 5461 if [[ ! -z $(typeset -f cmake_src_compile) ]]
581     then
582     cmake_src_compile || die
583     else
584     mconfigure || die
585     mmake || die
586     fi
587 niro 1665 }
588    
589 niro 3573 multilib_src_check()
590     {
591 niro 5461 if [[ ! -z $(typeset -f cmake_src_check) ]]
592     then
593     cmake_src_check || die
594     else
595     mmake -j1 -k check || die
596     fi
597 niro 3573 }
598    
599 niro 1665 multilib_src_install()
600     {
601 niro 5461 if [[ ! -z $(typeset -f cmake_src_install) ]]
602     then
603     cmake_src_install || die
604     else
605     mmake DESTDIR=${BINDIR} install || die
606     fi
607 niro 1665
608     local i
609     for abi in ${MULTILIB_ABIS}
610     do
611 niro 3573 cd ${SRCDIR}-${abi}/${SRCSUBDIR}
612 niro 1665 for i in ABOUT-NLS AUTHORS BUGS CHANGES ChangeLog COPYING \
613     FAQ LICENSE NEWS README TODO
614     do
615     if [ -f ${SRCDIR}-${abi}/${i} ]
616     then
617     minstalldocs ${i} || die
618     fi
619     done
620     done
621     }
622    
623 niro 3573 export_inherits multilib src_prepare src_compile src_check src_install