Magellan Linux

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

Parent Directory Parent Directory | Revision Log Revision Log


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