Magellan Linux

Contents of /trunk/include/multilib.sminc

Parent Directory Parent Directory | Revision Log Revision Log


Revision 31848 - (show 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 # $Id$
2 # multilib abis
3
4 # 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 # enter the abi srcdir as default setting
11 : ${MULTILIB_ENTER_SRCDIR="true"}
12
13 # multilib should call all dependant includes, which gets overridden
14 sminclude mtools
15
16 # 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 EMUL_LINUX_32_SDEPEND_x86_64=">= sys-apps/util-linux-2.19"
30 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 SDEPEND="$(marchsdepend EMUL_LINUX_32_SDEPEND)"
49 else
50 SDEPEND="${SDEPEND}
51 $(marchsdepend EMUL_LINUX_32_SDEPEND)"
52 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 local saved_ldflags="${LDFLAGS}"
79 export LDFLAGS="${LDFLAGS} -L/${ABI_LIBDIR} -L/usr/${ABI_LIBDIR}"
80 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 if [[ ${MULTILIB_VERBOSE} = true ]]
86 then
87 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 echo -e "${COLBLUE}*** ${COLGREEN} CHOST${COLDEFAULT}='${CHOST}'"
99 echo -e "${COLBLUE}*** ${COLGREEN} SRCDIR${COLDEFAULT}='${SRCDIR}/${SRCSUBDIR}'"
100 echo -e "${COLBLUE}*** ${COLGREEN} PKG_CONFIG_PATH${COLDEFAULT}='${PKG_CONFIG_PATH}'"
101 fi
102
103 # configure a linux32 emulated build
104 if [[ ${EMUL_LINUX_32} = true ]]
105 then
106 if [[ ${MULTILIB_VERBOSE} = true ]]
107 then
108 echo -e "${COLBLUE}*** ${COLGREEN} EMUL_LINUX_32${COLDEFAULT}='${EMUL_LINUX_32}'"
109 fi
110 uname(){ linux32 uname $@; } && export -f uname
111 local orig_chost="${CHOST}" && export CHOST="i686-pc-linux-gnu"
112 fi
113 if [[ ${MULTILIB_VERBOSE} = true ]]
114 then
115 echo -e "${COLBLUE}*** ${COLGREEN} CHOST${COLDEFAULT}='${CHOST}'"
116 fi
117
118 # run any given command
119 if [[ ${MULTILIB_VERBOSE} = true ]]
120 then
121 echo -e "${COLGREEN}Executing:${COLDEFAULT} '$@'"
122 fi
123 eval $@ || die
124
125 unset ABI CC CXX ABI_LIBDIR
126 # keep pkgconfig clean
127 export PKG_CONFIG_PATH="${orig_pkg_config_path}"
128 export LDFLAGS="${saved_ldflags}"
129
130 # restore original settings
131 if [[ ${EMUL_LINUX_32} = true ]]
132 then
133 unset uname
134 export CHOST="${orig_chost}" && unset orig_chost
135 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 if [[ ${EXPORT_ABI_LDFLAGS} != false ]]
145 then
146 local saved_ldflags="${LDFLAGS}"
147 export LDFLAGS="-L/${ABI_LIBDIR} -L/usr/${ABI_LIBDIR}"
148 fi
149 # 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
153 if [[ ${MULTILIB_VERBOSE} = true ]]
154 then
155 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 echo -e "${COLBLUE}*** ${COLGREEN} SRCDIR${COLDEFAULT}='${SRCDIR}/${SRCSUBDIR}'"
168 echo -e "${COLBLUE}*** ${COLGREEN} PKG_CONFIG_PATH${COLDEFAULT}='${PKG_CONFIG_PATH}'"
169 fi
170
171 # run any given command
172 if [[ ${MULTILIB_VERBOSE} = true ]]
173 then
174 echo -e "${COLGREEN}Executing:${COLDEFAULT} '$@'"
175 fi
176 eval $@ || die
177
178 unset ABI CC CXX ABI_LIBDIR
179 # keep pkgconfig clean
180 export PKG_CONFIG_PATH="${orig_pkg_config_path}"
181 export LDFLAGS="${saved_ldflags}"
182 }
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 if [[ ${MULTILIB_ENTER_SRCDIR} = true ]]
197 then
198 cd ${SRCDIR}-${abi}/${SRCSUBDIR}
199 fi
200 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 if [[ ${MULTILIB_ENTER_SRCDIR} = true ]]
221 then
222 cd ${SRCDIR}-${abi}/${SRCSUBDIR}
223 fi
224 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 if [[ ${MULTILIB_ENTER_SRCDIR} = true ]]
238 then
239 cd ${SRCDIR}-${abi}/${SRCSUBDIR}
240 fi
241 abi-${abi} $@ || die
242 done
243 }
244
245 mabi()
246 {
247 echo \${ABI}
248 }
249
250 mabi-cc()
251 {
252 echo "gcc -\${ABI}"
253 }
254
255 mabi-cxx()
256 {
257 echo "g++ -\${ABI}"
258 }
259
260 mabi-cflags()
261 {
262 echo "\${CFLAGS}"
263 }
264
265 mabi-cxxflags()
266 {
267 echo "\${CXXFLAGS}"
268 }
269
270 mabi-ldflags()
271 {
272 echo "\${LDFLAGS}"
273 }
274
275 ##
276 # multilib compile functions
277 ##
278
279 if [[ ! -z $(typeset -f mconfigure) ]]
280 then
281 # rename the old one
282 old_mconfigure=old$(typeset -f mconfigure)
283 eval "${old_mconfigure}"
284
285 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 if [[ ${MULTILIB_ENTER_SRCDIR} = true ]]
296 then
297 cd ${SRCDIR}-${abi}/${SRCSUBDIR}
298 fi
299 abi-${abi} oldmconfigure $@ || die
300 done
301 }
302 fi
303
304 if [[ ! -z $(typeset -f munpack) ]]
305 then
306 # rename the old one
307 old_munpack=old$(typeset -f munpack)
308 eval "${old_munpack}"
309
310 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 oldmunpack $@ || die
322 mv ${SRCDIR} ${SRCDIR}-${abi} || die
323 done
324 }
325 fi
326
327 if [[ ! -z $(typeset -f mmake) ]]
328 then
329 # rename the old one
330 old_mmake=old$(typeset -f mmake)
331 eval "${old_mmake}"
332
333 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 if [[ ${MULTILIB_ENTER_SRCDIR} = true ]]
345 then
346 cd ${SRCDIR}-${abi}/${SRCSUBDIR}
347 fi
348 abi-${abi} oldmmake $@ || die
349 done
350 }
351 fi
352
353 if [[ ! -z $(typeset -f minstall) ]]
354 then
355 # rename the old one
356 old_minstall=old$(typeset -f minstall)
357 eval "${old_minstall}"
358
359 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 if [[ ${MULTILIB_ENTER_SRCDIR} = true ]]
371 then
372 cd ${SRCDIR}-${abi}/${SRCSUBDIR}
373 fi
374 abi-${abi} oldminstall $@ || die
375 done
376 }
377 fi
378
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 if [[ ${MULTILIB_ENTER_SRCDIR} = true ]]
391 then
392 cd ${SRCDIR}-${abi}/${SRCSUBDIR}
393 fi
394 make DESTDIR=${BINDIR} $@ install || die
395 done
396 }
397
398 if [[ ! -z $(typeset -f mpatch) ]]
399 then
400 # rename the old one
401 old_mpatch=old$(typeset -f mpatch)
402 eval "${old_mpatch}"
403
404 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 if [[ ${MULTILIB_ENTER_SRCDIR} = true ]]
416 then
417 cd ${SRCDIR}-${abi}/${SRCSUBDIR}
418 fi
419 oldmpatch $@ || die
420 done
421 }
422 fi
423
424 if [[ ! -z $(typeset -f mlibtoolize) ]]
425 then
426 # rename the old one
427 old_mlibtoolize=old$(typeset -f mlibtoolize)
428 eval "${old_mlibtoolize}"
429
430 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 if [[ ${MULTILIB_ENTER_SRCDIR} = true ]]
442 then
443 cd ${SRCDIR}-${abi}/${SRCSUBDIR}
444 fi
445 oldmlibtoolize $@ || die
446 done
447 }
448 fi
449
450 if [[ ! -z $(typeset -f mautoreconf) ]]
451 then
452 # rename the old one
453 old_mautoreconf=old$(typeset -f mautoreconf)
454 eval "${old_mautoreconf}"
455
456 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 if [[ ${MULTILIB_ENTER_SRCDIR} = true ]]
468 then
469 cd ${SRCDIR}-${abi}/${SRCSUBDIR}
470 fi
471 oldmautoreconf $@ || die
472 done
473 }
474 fi
475
476 if [[ ! -z $(typeset -f minstalldocs) ]]
477 then
478 # rename the old one
479 old_minstalldocs=old$(typeset -f minstalldocs)
480 eval "${old_minstalldocs}"
481
482 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 if [[ ${MULTILIB_ENTER_SRCDIR} = true ]]
495 then
496 cd ${SRCDIR}-${abi}/${SRCSUBDIR}
497 fi
498 oldminstalldocs $@ || die
499 done
500 }
501 fi