Linux çekirdeği Kconfig'de “select” ve “depends” arasındaki fark nedir?


11

Kconfig dosyaları arasındaki selectve depends oniçindeki bağımlılıklar arasındaki farklar nelerdir ?

config FB_CIRRUS
tristate "Cirrus Logic support"
depends on FB && (ZORRO || PCI)
select FB_CFB_FILLRECT
select FB_CFB_COPYAREA
select FB_CFB_IMAGEBLIT
---help---
This enables support for Cirrus Logic GD542x/543x based boards on
Amiga: SD64, Piccolo, Picasso II/II+, Picasso IV, or EGS Spectrum.

Yukarıdaki örnekte, nasıl olup FB_CIRRUSdiffrently ilgili FB && (ZORRO || PCI)öyle daha FB_CFB_FILLRECT, FB_CFB_COPYAREAve FB_CFB_IMAGEBLIT?

Güncelleme

Bunun depend onderleme düzeni açısından pek bir şey yapmadığını fark ettim .

Örneğin. Başarılı bir AppB derlemesi, ilk olarak inşa edilecek statik olarak bağlantılı bir LibB'ye bağlıdır. depends on LibBAppB için Kconfig'de ayar yapmak , ilk olarak LibB'yi oluşturmaya zorlamaz. Ayar select LibByapılacaktır.

Yanıtlar:


17

depends on=yBu seçeneğin yapılandırılması için sembol (ler) in zaten pozitif olarak seçilmiş ( ) olduğunu belirtir . Örneğin, depends on FB && (ZORRO || PCI)araçlar FBseçilmiş olmalı ve (&&) ya ZORROda (||) olmalıdır PCI. Bu gibi şeyler için make menuconfigbu, bir seçeneğin sunulup sunulmayacağını belirler.

selectolumlu bir sembol belirler. Örneğin, select FB_CFB_FILLRECTanlamına gelecektir FB_CFB_FILLRECT=y. Bu, diğer bazı yapılandırma seçeneklerinin potansiyel bağımlılığını yerine getirir. Çekirdek belgelerin bunun "görünür" semboller (kullanıcı tarafından seçilebileceği / seçiminin kaldırılabileceği) veya bağımlılıkları olan semboller için kullanımını engellemediğini unutmayın, çünkü bunlar kontrol edilmeyecektir.

Referans: https://www.kernel.org/doc/Documentation/kbuild/kconfig-language.txt


3

depends seçeneğin menüde yalnızca önkoşulları (arkasındaki boolean yapı) karşılandığında görüntülenir.

selectkullanıcı bu seçeneği belirlediğinde, bağımsız değişken olarak verilen seçeneğin selectotomatik olarak seçileceği anlamına gelir.


1

Düşünmeyi seviyorum:

  • selectdependsbir özellik için yalnızca bir olası bağımlılık olduğunda "alt kümesi" dir .

    Sadece bir olası bağımlılık olduğundan, selectbu seçeneği otomatik olarak seçer ve önce bağımlılığı açıkça manuel olarak seçme işini kaydeder.

    Bu otomasyon, tek bir olası bağımlılığa sahip alt küme kısıtlamasından kazandığınız şeydir.

  • depends daha geneldir ve bir özelliğin birden çok uygulaması olan bir arayüze bağlı olduğu durumlarda çalışır.

    Örneğin, 4.15'te 2 BPF uygulaması vardır: Klasik ve Genişletilmiş.

    Bu nedenle, BPF_JITözellik etkinleştirilen uygulamalardan en az birine bağlıdır:

    config BPF_JIT
        depends on HAVE_CBPF_JIT || HAVE_EBPF_JIT
    

    Bunun için iki olası uygulama olduğundan BFP_JIT, Kconfig doğru olanı otomatik olarak hassas bir şekilde seçemedi.

    Bazen keşke şunu söyleyebilseydim: "bağımlılıkların hiçbiri karşılanmadıysa, bunu varsayılan olarak seçin", ancak bu daha fazla otomatikleştirmeye izin verir.

Ayrıca "bir şey menuconfig başka bir seçeneği gizler" etkileri vardır, ama bunlar sadece kabartmak :-)

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.