Magellan Linux

Annotation of /trunk/include/multilib.sminc

Parent Directory Parent Directory | Revision Log Revision Log


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