Magellan Linux

Annotation of /trunk/include/multilib.sminc

Parent Directory Parent Directory | Revision Log Revision Log


Revision 33626 - (hide annotations) (download)
Thu Aug 10 15:06:32 2023 UTC (9 months, 2 weeks ago) by niro
File size: 11910 byte(s)
-mlibdir(): support MABI=m32/m64
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 niro 33339 local libdir="${ABI_DEFAULT_LIBDIR}"
61     [[ ${ARCH} = i686 ]] && libdir="${ABI_X86_LIBDIR}"
62     [[ ${ARCH} = x86_64 ]] && libdir="${ABI_X86_64_LIBDIR}"
63 niro 33626 [[ ${MABI} = m32 ]] && libdir="${ABI_X86_LIBDIR}"
64     [[ ${MABI} = m64 ]] && libdir="${ABI_X86_64_LIBDIR}"
65 niro 2 [[ -n ${ABI_LIBDIR} ]] && libdir="${ABI_LIBDIR}"
66    
67     echo "${libdir}"
68     }
69    
70     ##
71     # multilib abi changers
72     ##
73     abi-m32()
74     {
75     export ABI="m32"
76     export CC="gcc -${ABI}"
77     export CXX="g++ -${ABI}"
78 niro 33339 export ABI_LIBDIR="${ABI_X86_LIBDIR}"
79 niro 307 if [[ ${EXPORT_ABI_LDFLAGS} != false ]]
80     then
81 niro 11300 local saved_ldflags="${LDFLAGS}"
82     export LDFLAGS="${LDFLAGS} -L/${ABI_LIBDIR} -L/usr/${ABI_LIBDIR}"
83 niro 307 fi
84 niro 5371 # keep pkgconfig clean
85     local orig_pkg_config_path="${PKG_CONFIG_PATH}"
86     export PKG_CONFIG_PATH="/usr/${ABI_LIBDIR}/pkgconfig:${PKG_CONFIG_PATH}"
87 niro 2
88 niro 31852 # honor rust
89     case ${ARCH} in
90     # use native abi as RUST_TARGET
91     i686) export RUST_TARGET="${ARCH}-unknown-linux-gnu" ;;
92     # use i686 as RUST_TARGET for i{3,4,5}86 targets and on multilib-x86_64 target too
93     i*86|x86_64) export RUST_TARGET="i686-unknown-linux-gnu" ;;
94     *) die "unknown RUST_TARGET '${ARCH}'" ;;
95     esac
96    
97 niro 8334 if [[ ${MULTILIB_VERBOSE} = true ]]
98 niro 307 then
99 niro 8334 echo -e "${COLBLUE}*** ${COLGREEN}running with -${ABI} ABI${COLDEFAULT}"
100     echo -e "${COLBLUE}*** ${COLGREEN} ABI${COLDEFAULT}='${ABI}'"
101     echo -e "${COLBLUE}*** ${COLGREEN} CC${COLDEFAULT}='${CC}'"
102     echo -e "${COLBLUE}*** ${COLGREEN} CXX${COLDEFAULT}='${CXX}'"
103     echo -e "${COLBLUE}*** ${COLGREEN} ABI_LIBDIR${COLDEFAULT}='${ABI_LIBDIR}'"
104     if [[ ${EXPORT_ABI_LDFLAGS} != false ]]
105     then
106     echo -e "${COLBLUE}*** ${COLGREEN} LDFLAGS${COLDEFAULT}='${LDFLAGS}'"
107     else
108     echo -e "${COLBLUE}*** ${COLGREEN} LDFLAGS${COLDEFAULT}='${COLYELLOW}not exported${COLDEFAULT}'"
109     fi
110 niro 11525 echo -e "${COLBLUE}*** ${COLGREEN} CHOST${COLDEFAULT}='${CHOST}'"
111 niro 31854 echo -e "${COLBLUE}*** ${COLGREEN} RUST_TARGET${COLDEFAULT}='${RUST_TARGET}'"
112 niro 11525 echo -e "${COLBLUE}*** ${COLGREEN} SRCDIR${COLDEFAULT}='${SRCDIR}/${SRCSUBDIR}'"
113 niro 8334 echo -e "${COLBLUE}*** ${COLGREEN} PKG_CONFIG_PATH${COLDEFAULT}='${PKG_CONFIG_PATH}'"
114 niro 307 fi
115 niro 2
116     # configure a linux32 emulated build
117     if [[ ${EMUL_LINUX_32} = true ]]
118     then
119 niro 8334 if [[ ${MULTILIB_VERBOSE} = true ]]
120     then
121     echo -e "${COLBLUE}*** ${COLGREEN} EMUL_LINUX_32${COLDEFAULT}='${EMUL_LINUX_32}'"
122     fi
123 niro 2 uname(){ linux32 uname $@; } && export -f uname
124 niro 33339 local orig_chost="${CHOST}" && export CHOST="${ABI_X86_CHOST}"
125 niro 2 fi
126 niro 8334 if [[ ${MULTILIB_VERBOSE} = true ]]
127     then
128     echo -e "${COLBLUE}*** ${COLGREEN} CHOST${COLDEFAULT}='${CHOST}'"
129     fi
130 niro 2
131     # run any given command
132 niro 29795 if [[ ${MULTILIB_VERBOSE} = true ]]
133     then
134     echo -e "${COLGREEN}Executing:${COLDEFAULT} '$@'"
135     fi
136 niro 13974 eval $@ || die
137 niro 2
138 niro 31852 unset ABI CC CXX ABI_LIBDIR RUST_TARGET
139 niro 5371 # keep pkgconfig clean
140     export PKG_CONFIG_PATH="${orig_pkg_config_path}"
141 niro 11300 export LDFLAGS="${saved_ldflags}"
142 niro 2
143     # restore original settings
144     if [[ ${EMUL_LINUX_32} = true ]]
145     then
146     unset uname
147 niro 11830 export CHOST="${orig_chost}" && unset orig_chost
148 niro 2 fi
149     }
150    
151     abi-m64()
152     {
153     export ABI="m64"
154     export CC="gcc -${ABI}"
155     export CXX="g++ -${ABI}"
156 niro 33339 export ABI_LIBDIR="${ABI_X86_64_LIBDIR}"
157 niro 307 if [[ ${EXPORT_ABI_LDFLAGS} != false ]]
158     then
159 niro 11300 local saved_ldflags="${LDFLAGS}"
160 niro 307 export LDFLAGS="-L/${ABI_LIBDIR} -L/usr/${ABI_LIBDIR}"
161     fi
162 niro 5371 # keep pkgconfig clean
163     local orig_pkg_config_path="${PKG_CONFIG_PATH}"
164     export PKG_CONFIG_PATH="/usr/${ABI_LIBDIR}/pkgconfig:${PKG_CONFIG_PATH}"
165 niro 2
166 niro 31852 # honor rust
167     case ${ARCH} in
168     # use native abi as RUST_TARGET
169     x86_64) export RUST_TARGET="${ARCH}-unknown-linux-gnu" ;;
170     *) die "unknown RUST_TARGET '${ARCH}'" ;;
171     esac
172    
173 niro 8334 if [[ ${MULTILIB_VERBOSE} = true ]]
174 niro 307 then
175 niro 8334 echo -e "${COLBLUE}*** ${COLGREEN}running with -${ABI} ABI${COLDEFAULT}"
176     echo -e "${COLBLUE}*** ${COLGREEN} ABI${COLDEFAULT}='${ABI}'"
177     echo -e "${COLBLUE}*** ${COLGREEN} CC${COLDEFAULT}='${CC}'"
178     echo -e "${COLBLUE}*** ${COLGREEN} CXX${COLDEFAULT}='${CXX}'"
179     echo -e "${COLBLUE}*** ${COLGREEN} ABI_LIBDIR${COLDEFAULT}='${ABI_LIBDIR}'"
180     if [[ ${EXPORT_ABI_LDFLAGS} != false ]]
181     then
182     echo -e "${COLBLUE}*** ${COLGREEN} LDFLAGS${COLDEFAULT}='${LDFLAGS}'"
183     else
184     echo -e "${COLBLUE}*** ${COLGREEN} LDFLAGS${COLDEFAULT}='${COLYELLOW}not exported${COLDEFAULT}'"
185     fi
186     echo -e "${COLBLUE}*** ${COLGREEN} CHOST${COLDEFAULT}='${CHOST}'"
187 niro 31854 echo -e "${COLBLUE}*** ${COLGREEN} RUST_TARGET${COLDEFAULT}='${RUST_TARGET}'"
188 niro 11525 echo -e "${COLBLUE}*** ${COLGREEN} SRCDIR${COLDEFAULT}='${SRCDIR}/${SRCSUBDIR}'"
189 niro 8334 echo -e "${COLBLUE}*** ${COLGREEN} PKG_CONFIG_PATH${COLDEFAULT}='${PKG_CONFIG_PATH}'"
190 niro 307 fi
191 niro 2
192     # run any given command
193 niro 29795 if [[ ${MULTILIB_VERBOSE} = true ]]
194     then
195     echo -e "${COLGREEN}Executing:${COLDEFAULT} '$@'"
196     fi
197 niro 2 eval $@ || die
198    
199 niro 31852 unset ABI CC CXX ABI_LIBDIR RUST_TARGET
200 niro 5371 # keep pkgconfig clean
201     export PKG_CONFIG_PATH="${orig_pkg_config_path}"
202 niro 11300 export LDFLAGS="${saved_ldflags}"
203 niro 2 }
204    
205     only-m32()
206     {
207     local abi=m32
208     local i
209    
210     for i in ${MULTILIB_ABIS}
211     do
212     if [[ ${i} = ${abi} ]]
213     then
214     # export this for mpatch etc (to repect only-${abi})
215     export MULTILIB_ONLY_ABI=${abi}
216    
217 niro 31848 if [[ ${MULTILIB_ENTER_SRCDIR} = true ]]
218     then
219     cd ${SRCDIR}-${abi}/${SRCSUBDIR}
220     fi
221 niro 2 abi-${abi} $@ || die
222    
223     # unset this is very important
224     unset MULTILIB_ONLY_ABI
225     fi
226     done
227     }
228    
229     only-m64()
230     {
231     local abi=m64
232     local i
233    
234     for i in ${MULTILIB_ABIS}
235     do
236     if [[ ${i} = ${abi} ]]
237     then
238     # export this for mpatch etc (to repect only-${abi})
239     export MULTILIB_ONLY_ABI=${abi}
240    
241 niro 31848 if [[ ${MULTILIB_ENTER_SRCDIR} = true ]]
242     then
243     cd ${SRCDIR}-${abi}/${SRCSUBDIR}
244     fi
245 niro 2 abi-${abi} $@ || die
246    
247     # unset this is very important
248     unset MULTILIB_ONLY_ABI
249     fi
250     done
251     }
252    
253     all-abis()
254     {
255     local abi
256     for abi in ${MULTILIB_ABIS}
257     do
258 niro 31848 if [[ ${MULTILIB_ENTER_SRCDIR} = true ]]
259     then
260     cd ${SRCDIR}-${abi}/${SRCSUBDIR}
261     fi
262 niro 2 abi-${abi} $@ || die
263     done
264     }
265    
266 niro 6346 mabi()
267     {
268     echo \${ABI}
269     }
270    
271 niro 11825 mabi-cc()
272     {
273 niro 20903 echo "gcc -\${ABI}"
274 niro 11825 }
275    
276     mabi-cxx()
277     {
278 niro 20903 echo "g++ -\${ABI}"
279 niro 11825 }
280    
281 niro 11828 mabi-cflags()
282     {
283 niro 20903 echo "\${CFLAGS}"
284 niro 11828 }
285    
286     mabi-cxxflags()
287     {
288 niro 20903 echo "\${CXXFLAGS}"
289 niro 11828 }
290    
291     mabi-ldflags()
292     {
293 niro 20903 echo "\${LDFLAGS}"
294 niro 11828 }
295    
296 niro 2 ##
297     # multilib compile functions
298     ##
299    
300 niro 3671 if [[ ! -z $(typeset -f mconfigure) ]]
301     then
302     # rename the old one
303     old_mconfigure=old$(typeset -f mconfigure)
304 niro 4783 eval "${old_mconfigure}"
305 niro 20987
306 niro 2 mconfigure()
307     {
308     local abi
309     local abis_to_run="${MULTILIB_ABIS}"
310    
311     # respect MULTILIB_ONLY_ABI variable
312     [[ ! -z ${MULTILIB_ONLY_ABI} ]] && abis_to_run="${MULTILIB_ONLY_ABI}"
313    
314     for abi in ${abis_to_run}
315     do
316 niro 31848 if [[ ${MULTILIB_ENTER_SRCDIR} = true ]]
317     then
318     cd ${SRCDIR}-${abi}/${SRCSUBDIR}
319     fi
320 niro 2 abi-${abi} oldmconfigure $@ || die
321     done
322     }
323 niro 20987 fi
324 niro 2
325 niro 3671 if [[ ! -z $(typeset -f munpack) ]]
326     then
327     # rename the old one
328     old_munpack=old$(typeset -f munpack)
329     eval "${old_munpack}"
330 niro 20987
331 niro 2 munpack()
332     {
333     local abi
334     local abis_to_run="${MULTILIB_ABIS}"
335    
336     # respect MULTILIB_ONLY_ABI variable
337     [[ ! -z ${MULTILIB_ONLY_ABI} ]] && abis_to_run="${MULTILIB_ONLY_ABI}"
338    
339     for abi in ${abis_to_run}
340     do
341     echo -e "${COLBLUE}*** ${COLGREEN}unpacking for ABI -${abi}${COLDEFAULT}"
342 niro 13488 oldmunpack $@ || die
343 niro 2 mv ${SRCDIR} ${SRCDIR}-${abi} || die
344     done
345     }
346 niro 20987 fi
347 niro 2
348 niro 3671 if [[ ! -z $(typeset -f mmake) ]]
349     then
350     # rename the old one
351     old_mmake=old$(typeset -f mmake)
352     eval "${old_mmake}"
353 niro 20987
354 niro 2 mmake()
355     {
356     local abi
357     local abis_to_run="${MULTILIB_ABIS}"
358    
359     # respect MULTILIB_ONLY_ABI variable
360     [[ ! -z ${MULTILIB_ONLY_ABI} ]] && abis_to_run="${MULTILIB_ONLY_ABI}"
361    
362     for abi in ${abis_to_run}
363     do
364     echo -e "${COLBLUE}*** ${COLGREEN}compiling for ABI -${abi}${COLDEFAULT}"
365 niro 31848 if [[ ${MULTILIB_ENTER_SRCDIR} = true ]]
366     then
367     cd ${SRCDIR}-${abi}/${SRCSUBDIR}
368     fi
369 niro 2 abi-${abi} oldmmake $@ || die
370     done
371     }
372 niro 20987 fi
373 niro 2
374 niro 3671 if [[ ! -z $(typeset -f minstall) ]]
375     then
376     # rename the old one
377     old_minstall=old$(typeset -f minstall)
378     eval "${old_minstall}"
379 niro 20987
380 niro 2 minstall()
381     {
382     local abi
383     local abis_to_run="${MULTILIB_ABIS}"
384    
385     # respect MULTILIB_ONLY_ABI variable
386     [[ ! -z ${MULTILIB_ONLY_ABI} ]] && abis_to_run="${MULTILIB_ONLY_ABI}"
387    
388     for abi in ${abis_to_run}
389     do
390     echo -e "${COLBLUE}*** ${COLGREEN}installing for ABI -${abi}${COLDEFAULT}"
391 niro 31848 if [[ ${MULTILIB_ENTER_SRCDIR} = true ]]
392     then
393     cd ${SRCDIR}-${abi}/${SRCSUBDIR}
394     fi
395 niro 2 abi-${abi} oldminstall $@ || die
396     done
397     }
398 niro 20987 fi
399 niro 2
400     minstall_destdir()
401     {
402     local abi
403     local abis_to_run="${MULTILIB_ABIS}"
404    
405     # respect MULTILIB_ONLY_ABI variable
406     [[ ! -z ${MULTILIB_ONLY_ABI} ]] && abis_to_run="${MULTILIB_ONLY_ABI}"
407    
408     for abi in ${abis_to_run}
409     do
410     echo -e "${COLBLUE}*** ${COLGREEN}installing for ABI -${abi}${COLDEFAULT}"
411 niro 31848 if [[ ${MULTILIB_ENTER_SRCDIR} = true ]]
412     then
413     cd ${SRCDIR}-${abi}/${SRCSUBDIR}
414     fi
415 niro 2 make DESTDIR=${BINDIR} $@ install || die
416     done
417     }
418    
419 niro 3671 if [[ ! -z $(typeset -f mpatch) ]]
420     then
421     # rename the old one
422     old_mpatch=old$(typeset -f mpatch)
423     eval "${old_mpatch}"
424 niro 20987
425 niro 2 mpatch()
426     {
427     local abi
428     local abis_to_run="${MULTILIB_ABIS}"
429    
430     # respect MULTILIB_ONLY_ABI variable
431     [[ ! -z ${MULTILIB_ONLY_ABI} ]] && abis_to_run="${MULTILIB_ONLY_ABI}"
432    
433     for abi in ${abis_to_run}
434     do
435     echo -e "${COLBLUE}*** ${COLGREEN}appling patch for ABI -${abi}${COLDEFAULT}"
436 niro 31848 if [[ ${MULTILIB_ENTER_SRCDIR} = true ]]
437     then
438     cd ${SRCDIR}-${abi}/${SRCSUBDIR}
439     fi
440 niro 2 oldmpatch $@ || die
441     done
442     }
443 niro 20987 fi
444 niro 2
445 niro 3671 if [[ ! -z $(typeset -f mlibtoolize) ]]
446     then
447     # rename the old one
448     old_mlibtoolize=old$(typeset -f mlibtoolize)
449     eval "${old_mlibtoolize}"
450 niro 20987
451 niro 2 mlibtoolize()
452     {
453     local abi
454     local abis_to_run="${MULTILIB_ABIS}"
455    
456     # respect MULTILIB_ONLY_ABI variable
457     [[ ! -z ${MULTILIB_ONLY_ABI} ]] && abis_to_run="${MULTILIB_ONLY_ABI}"
458    
459     for abi in ${abis_to_run}
460     do
461     echo -e "${COLBLUE}*** ${COLGREEN}running mlibtoolize for ABI -${abi}${COLDEFAULT}"
462 niro 31848 if [[ ${MULTILIB_ENTER_SRCDIR} = true ]]
463     then
464     cd ${SRCDIR}-${abi}/${SRCSUBDIR}
465     fi
466 niro 2 oldmlibtoolize $@ || die
467     done
468     }
469 niro 20987 fi
470 niro 2
471 niro 9334 if [[ ! -z $(typeset -f mautoreconf) ]]
472     then
473     # rename the old one
474     old_mautoreconf=old$(typeset -f mautoreconf)
475     eval "${old_mautoreconf}"
476 niro 20987
477 niro 9334 mautoreconf()
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}running mautoreconf for ABI -${abi}${COLDEFAULT}"
488 niro 31848 if [[ ${MULTILIB_ENTER_SRCDIR} = true ]]
489     then
490     cd ${SRCDIR}-${abi}/${SRCSUBDIR}
491     fi
492 niro 9334 oldmautoreconf $@ || die
493     done
494     }
495 niro 20987 fi
496 niro 9334
497 niro 9333 if [[ ! -z $(typeset -f minstalldocs) ]]
498     then
499     # rename the old one
500     old_minstalldocs=old$(typeset -f minstalldocs)
501     eval "${old_minstalldocs}"
502 niro 20987
503 niro 2 minstalldocs()
504     {
505     local abi
506     local docfiles
507    
508     local abis_to_run="${MULTILIB_ABIS}"
509    
510     # respect MULTILIB_ONLY_ABI variable
511     [[ ! -z ${MULTILIB_ONLY_ABI} ]] && abis_to_run="${MULTILIB_ONLY_ABI}"
512    
513     for abi in ${abis_to_run}
514     do
515 niro 31848 if [[ ${MULTILIB_ENTER_SRCDIR} = true ]]
516     then
517     cd ${SRCDIR}-${abi}/${SRCSUBDIR}
518     fi
519 niro 9756 oldminstalldocs $@ || die
520 niro 2 done
521     }
522 niro 20987 fi