Magellan Linux

Annotation of /branches/R11-unstable/include/multilib.sminc

Parent Directory Parent Directory | Revision Log Revision Log


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