| 1 | # Copyright 1999-2004 Gentoo Foundation |
1 | # Copyright 1999-2004 Gentoo Foundation |
| 2 | # Distributed under the terms of the GNU General Public License v2 |
2 | # Distributed under the terms of the GNU General Public License v2 |
| 3 | # $Header: /var/cvsroot/gentoo-x86/eclass/linux-mod.eclass,v 1.61 2006/03/25 16:43:09 betelgeuse Exp $ |
3 | # $Header: /var/cvsroot/gentoo-x86/eclass/linux-mod.eclass,v 1.64 2006/05/11 08:23:43 johnm Exp $ |
| 4 | |
4 | |
| 5 | # Description: This eclass is used to interface with linux-info in such a way |
5 | # Description: This eclass is used to interface with linux-info in such a way |
| 6 | # to provide the functionality required and initial functions |
6 | # to provide the functionality required and initial functions |
| 7 | # required to install external modules against a kernel source |
7 | # required to install external modules against a kernel source |
| 8 | # tree. |
8 | # tree. |
| … | |
… | |
| 81 | # The order of these is important as both of linux-info and eutils contain |
81 | # The order of these is important as both of linux-info and eutils contain |
| 82 | # set_arch_to_kernel and set_arch_to_portage functions and the ones in eutils |
82 | # set_arch_to_kernel and set_arch_to_portage functions and the ones in eutils |
| 83 | # are deprecated in favor of the ones in linux-info. |
83 | # are deprecated in favor of the ones in linux-info. |
| 84 | # See http://bugs.gentoo.org/show_bug.cgi?id=127506 |
84 | # See http://bugs.gentoo.org/show_bug.cgi?id=127506 |
| 85 | |
85 | |
| 86 | inherit eutils linux-info |
86 | inherit eutils linux-info multilib |
| 87 | EXPORT_FUNCTIONS pkg_setup pkg_postinst src_install src_compile pkg_postrm |
87 | EXPORT_FUNCTIONS pkg_setup pkg_postinst src_install src_compile pkg_postrm |
| 88 | |
88 | |
| 89 | IUSE="" # don't put pcmcia here, rather in the ebuilds that actually support pcmcia |
89 | IUSE="" # don't put pcmcia here, rather in the ebuilds that actually support pcmcia |
| 90 | SLOT="0" |
90 | SLOT="0" |
| 91 | DESCRIPTION="Based on the $ECLASS eclass" |
91 | DESCRIPTION="Based on the $ECLASS eclass" |
| … | |
… | |
| 462 | # -------------------------------- |
462 | # -------------------------------- |
| 463 | |
463 | |
| 464 | linux-mod_pkg_setup() { |
464 | linux-mod_pkg_setup() { |
| 465 | linux-info_pkg_setup; |
465 | linux-info_pkg_setup; |
| 466 | check_kernel_built; |
466 | check_kernel_built; |
| 467 | check_modules_supported; |
467 | strip_modulenames; |
|
|
468 | [[ -n ${MODULE_NAMES} ]] && check_modules_supported |
| 468 | set_kvobj; |
469 | set_kvobj; |
| 469 | # Commented out with permission from johnm until a fixed version for arches |
470 | # Commented out with permission from johnm until a fixed version for arches |
| 470 | # who intentionally use different kernel and userland compilers can be |
471 | # who intentionally use different kernel and userland compilers can be |
| 471 | # introduced - Jason Wever <weeve@gentoo.org>, 23 Oct 2005 |
472 | # introduced - Jason Wever <weeve@gentoo.org>, 23 Oct 2005 |
| 472 | #check_vermagic; |
473 | #check_vermagic; |
| 473 | } |
474 | } |
| 474 | |
475 | |
| 475 | linux-mod_src_compile() { |
476 | strip_modulenames() { |
| 476 | local modulename libdir srcdir objdir i n myARCH="${ARCH}" |
477 | local i |
| 477 | ARCH="$(tc-arch-kernel)" |
|
|
| 478 | |
|
|
| 479 | BUILD_TARGETS=${BUILD_TARGETS:-clean module} |
|
|
| 480 | |
|
|
| 481 | for i in ${MODULE_IGNORE} |
478 | for i in ${MODULE_IGNORE}; do |
| 482 | do |
|
|
| 483 | MODULE_NAMES=${MODULE_NAMES//${i}(*} |
479 | MODULE_NAMES=${MODULE_NAMES//${i}(*} |
| 484 | done |
480 | done |
|
|
481 | } |
| 485 | |
482 | |
|
|
483 | linux-mod_src_compile() { |
|
|
484 | local modulename libdir srcdir objdir i n myARCH="${ARCH}" myABI="${ABI}" |
|
|
485 | ARCH="$(tc-arch-kernel)" |
|
|
486 | ABI="${KERNEL_ABI}" |
|
|
487 | CC_HOSTCC=$(tc-getBUILD_CC) |
|
|
488 | CC_CC=$(tc-getCC) |
|
|
489 | |
|
|
490 | BUILD_TARGETS=${BUILD_TARGETS:-clean module} |
|
|
491 | strip_modulenames; |
| 486 | for i in ${MODULE_NAMES} |
492 | for i in ${MODULE_NAMES} |
| 487 | do |
493 | do |
| 488 | unset libdir srcdir objdir |
494 | unset libdir srcdir objdir |
| 489 | for n in $(find_module_params ${i}) |
495 | for n in $(find_module_params ${i}) |
| 490 | do |
496 | do |
| … | |
… | |
| 502 | then |
508 | then |
| 503 | econf ${ECONF_PARAMS} || \ |
509 | econf ${ECONF_PARAMS} || \ |
| 504 | die "Unable to run econf ${ECONF_PARAMS}" |
510 | die "Unable to run econf ${ECONF_PARAMS}" |
| 505 | fi |
511 | fi |
| 506 | |
512 | |
|
|
513 | emake HOSTCC=${CC_HOSTCC} CC=${CC_CC}\ |
| 507 | emake ${BUILD_FIXES} ${BUILD_PARAMS} ${BUILD_TARGETS} \ |
514 | ${BUILD_FIXES} ${BUILD_PARAMS} ${BUILD_TARGETS} \ |
| 508 | || die "Unable to make \ |
515 | || die "Unable to make \ |
| 509 | ${BUILD_FIXES} ${BUILD_PARAMS} ${BUILD_TARGETS}." |
516 | ${BUILD_FIXES} ${BUILD_PARAMS} ${BUILD_TARGETS}." |
| 510 | touch ${srcdir}/.built |
517 | touch ${srcdir}/.built |
| 511 | cd ${OLDPWD} |
518 | cd ${OLDPWD} |
| 512 | fi |
519 | fi |
| 513 | done |
520 | done |
| 514 | |
521 | |
| 515 | ARCH="${myARCH}" |
522 | ARCH="${myARCH}" |
|
|
523 | ABI="${myABI}" |
| 516 | } |
524 | } |
| 517 | |
525 | |
| 518 | linux-mod_src_install() { |
526 | linux-mod_src_install() { |
| 519 | local modulename libdir srcdir objdir i n |
527 | local modulename libdir srcdir objdir i n |
| 520 | |
528 | |
| 521 | for i in ${MODULE_IGNORE} |
529 | strip_modulenames; |
| 522 | do |
|
|
| 523 | MODULE_NAMES=${MODULE_NAMES//${i}(*} |
|
|
| 524 | done |
|
|
| 525 | |
|
|
| 526 | for i in ${MODULE_NAMES} |
530 | for i in ${MODULE_NAMES} |
| 527 | do |
531 | do |
| 528 | unset libdir srcdir objdir |
532 | unset libdir srcdir objdir |
| 529 | for n in $(find_module_params ${i}) |
533 | for n in $(find_module_params ${i}) |
| 530 | do |
534 | do |