Magellan Linux

Annotation of /trunk/include/multilib.sminc

Parent Directory Parent Directory | Revision Log Revision Log


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