Magellan Linux

Contents of /trunk/include/multilib.sminc

Parent Directory Parent Directory | Revision Log Revision Log


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