From nobody Fri May 17 08:24:59 2024 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; dkim=fail; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=fail(p=none dis=none) header.from=suse.de Return-Path: Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1632862209398228.24911594469165; Tue, 28 Sep 2021 13:50:09 -0700 (PDT) Received: from localhost ([::1]:35482 helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1mVK3E-0004aB-Cv for importer@patchew.org; Tue, 28 Sep 2021 16:50:08 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]:33456) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1mVJzt-00082m-Kf for qemu-devel@nongnu.org; Tue, 28 Sep 2021 16:46:42 -0400 Received: from smtp-out2.suse.de ([195.135.220.29]:46564) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1mVJzq-0006fU-Rp for qemu-devel@nongnu.org; Tue, 28 Sep 2021 16:46:40 -0400 Received: from imap2.suse-dmz.suse.de (imap2.suse-dmz.suse.de [192.168.254.74]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature ECDSA (P-521) server-digest SHA512) (No client certificate requested) by smtp-out2.suse.de (Postfix) with ESMTPS id 47EAC202D1; Tue, 28 Sep 2021 20:46:36 +0000 (UTC) Received: from imap2.suse-dmz.suse.de (imap2.suse-dmz.suse.de [192.168.254.74]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature ECDSA (P-521) server-digest SHA512) (No client certificate requested) by imap2.suse-dmz.suse.de (Postfix) with ESMTPS id C809A13E72; Tue, 28 Sep 2021 20:46:34 +0000 (UTC) Received: from dovecot-director2.suse.de ([192.168.254.65]) by imap2.suse-dmz.suse.de with ESMTPSA id cHNyIip/U2HdegAAMHmgww (envelope-from ); Tue, 28 Sep 2021 20:46:34 +0000 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=suse.de; s=susede2_rsa; t=1632861996; h=from:from:reply-to:date:date:message-id:message-id:to:to:cc:cc: mime-version:mime-version: content-transfer-encoding:content-transfer-encoding: in-reply-to:in-reply-to:references:references; bh=OwMMyt9TwL0/VEUc/5gpG8CnJJQ9xpwtjskusEHZUVw=; b=aPpyS7EGHaWf+pj0Qxl3kOsQTpwSnoriAsM4lGWbchpYTXkfrijs8P1XFwxh9iwF5UqwAN 0d/awwgqU2e6MUTKJhDgCwaXaLX/nnuPHwoeB+DRsSJeTLLsZvANIA0aUQvI1k57An5y2G 0mUPq3GX4aEHUUo/XY2JQeEbNsdevXM= DKIM-Signature: v=1; a=ed25519-sha256; c=relaxed/relaxed; d=suse.de; s=susede2_ed25519; t=1632861996; h=from:from:reply-to:date:date:message-id:message-id:to:to:cc:cc: mime-version:mime-version: content-transfer-encoding:content-transfer-encoding: in-reply-to:in-reply-to:references:references; bh=OwMMyt9TwL0/VEUc/5gpG8CnJJQ9xpwtjskusEHZUVw=; b=jeaAEn/uMSIb+XKBaFMaSY0DdM4pHaWXhTNChkToGZhVSdOA2AMsz5GW6K2tn1NLpwppKV Y0n+5CryAJjtm/DA== From: "Jose R. Ziviani" To: qemu-devel@nongnu.org Subject: [PATCH v3 1/2] modules: introduces module_kconfig directive Date: Tue, 28 Sep 2021 17:46:27 -0300 Message-Id: <20210928204628.20001-2-jziviani@suse.de> X-Mailer: git-send-email 2.33.0 In-Reply-To: <20210928204628.20001-1-jziviani@suse.de> References: <20210928204628.20001-1-jziviani@suse.de> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Received-SPF: pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists.gnu.org; Received-SPF: pass client-ip=195.135.220.29; envelope-from=jziviani@suse.de; helo=smtp-out2.suse.de X-Spam_score_int: -43 X-Spam_score: -4.4 X-Spam_bar: ---- X-Spam_report: (-4.4 / 5.0 requ) BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, RCVD_IN_DNSWL_MED=-2.3, SPF_HELO_NONE=0.001, SPF_PASS=-0.001 autolearn=ham autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.23 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Cc: pbonzini@redhat.com, kraxel@redhat.com, "Jose R. Ziviani" Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: "Qemu-devel" X-ZohoMail-DKIM: fail (found 2 invalid signatures) X-ZM-MESSAGEID: 1632862210440100001 Content-Type: text/plain; charset="utf-8" module_kconfig is a new directive that should be used with module_obj whenever that module depends on the Kconfig to be enabled. When the module is enabled in Kconfig we are sure that its dependencies will be enabled as well, thus the module will be loaded without any problem. The correct way to use module_kconfig is by passing the Kconfig option to module_kconfig (or the *config-devices.mak without CONFIG_). Signed-off-by: Jose R. Ziviani Acked-by: Gerd Hoffmann --- hw/display/qxl.c | 1 + hw/display/vhost-user-gpu-pci.c | 1 + hw/display/vhost-user-gpu.c | 1 + hw/display/vhost-user-vga.c | 1 + hw/display/virtio-gpu-base.c | 1 + hw/display/virtio-gpu-gl.c | 1 + hw/display/virtio-gpu-pci-gl.c | 1 + hw/display/virtio-gpu-pci.c | 1 + hw/display/virtio-gpu.c | 1 + hw/display/virtio-vga-gl.c | 1 + hw/display/virtio-vga.c | 1 + hw/s390x/virtio-ccw-gpu.c | 1 + hw/usb/ccid-card-emulated.c | 1 + hw/usb/ccid-card-passthru.c | 1 + hw/usb/host-libusb.c | 1 + hw/usb/redirect.c | 1 + include/qemu/module.h | 10 ++++++++++ scripts/modinfo-generate.py | 2 ++ 18 files changed, 28 insertions(+) diff --git a/hw/display/qxl.c b/hw/display/qxl.c index 29c80b4289..d02d50014b 100644 --- a/hw/display/qxl.c +++ b/hw/display/qxl.c @@ -2494,6 +2494,7 @@ static const TypeInfo qxl_primary_info =3D { .class_init =3D qxl_primary_class_init, }; module_obj("qxl-vga"); +module_kconfig(QXL); =20 static void qxl_secondary_class_init(ObjectClass *klass, void *data) { diff --git a/hw/display/vhost-user-gpu-pci.c b/hw/display/vhost-user-gpu-pc= i.c index daefcf7101..d119bcae45 100644 --- a/hw/display/vhost-user-gpu-pci.c +++ b/hw/display/vhost-user-gpu-pci.c @@ -44,6 +44,7 @@ static const VirtioPCIDeviceTypeInfo vhost_user_gpu_pci_i= nfo =3D { .instance_init =3D vhost_user_gpu_pci_initfn, }; module_obj(TYPE_VHOST_USER_GPU_PCI); +module_kconfig(VHOST_USER_GPU); =20 static void vhost_user_gpu_pci_register_types(void) { diff --git a/hw/display/vhost-user-gpu.c b/hw/display/vhost-user-gpu.c index 49df56cd14..c961d2a2d8 100644 --- a/hw/display/vhost-user-gpu.c +++ b/hw/display/vhost-user-gpu.c @@ -599,6 +599,7 @@ static const TypeInfo vhost_user_gpu_info =3D { .class_init =3D vhost_user_gpu_class_init, }; module_obj(TYPE_VHOST_USER_GPU); +module_kconfig(VHOST_USER_GPU); =20 static void vhost_user_gpu_register_types(void) { diff --git a/hw/display/vhost-user-vga.c b/hw/display/vhost-user-vga.c index 072c9c65bc..0c146080fd 100644 --- a/hw/display/vhost-user-vga.c +++ b/hw/display/vhost-user-vga.c @@ -45,6 +45,7 @@ static const VirtioPCIDeviceTypeInfo vhost_user_vga_info = =3D { .instance_init =3D vhost_user_vga_inst_initfn, }; module_obj(TYPE_VHOST_USER_VGA); +module_kconfig(VHOST_USER_VGA); =20 static void vhost_user_vga_register_types(void) { diff --git a/hw/display/virtio-gpu-base.c b/hw/display/virtio-gpu-base.c index c8da4806e0..cde96325ca 100644 --- a/hw/display/virtio-gpu-base.c +++ b/hw/display/virtio-gpu-base.c @@ -257,6 +257,7 @@ static const TypeInfo virtio_gpu_base_info =3D { .abstract =3D true }; module_obj(TYPE_VIRTIO_GPU_BASE); +module_kconfig(VIRTIO_GPU); =20 static void virtio_register_types(void) diff --git a/hw/display/virtio-gpu-gl.c b/hw/display/virtio-gpu-gl.c index 6cc4313b1a..f7837cc44d 100644 --- a/hw/display/virtio-gpu-gl.c +++ b/hw/display/virtio-gpu-gl.c @@ -160,6 +160,7 @@ static const TypeInfo virtio_gpu_gl_info =3D { .class_init =3D virtio_gpu_gl_class_init, }; module_obj(TYPE_VIRTIO_GPU_GL); +module_kconfig(VIRTIO_GPU); =20 static void virtio_register_types(void) { diff --git a/hw/display/virtio-gpu-pci-gl.c b/hw/display/virtio-gpu-pci-gl.c index 99b14a0718..a2819e1ca9 100644 --- a/hw/display/virtio-gpu-pci-gl.c +++ b/hw/display/virtio-gpu-pci-gl.c @@ -47,6 +47,7 @@ static const VirtioPCIDeviceTypeInfo virtio_gpu_gl_pci_in= fo =3D { .instance_init =3D virtio_gpu_gl_initfn, }; module_obj(TYPE_VIRTIO_GPU_GL_PCI); +module_kconfig(VIRTIO_PCI); =20 static void virtio_gpu_gl_pci_register_types(void) { diff --git a/hw/display/virtio-gpu-pci.c b/hw/display/virtio-gpu-pci.c index e36eee0c40..93f214ff58 100644 --- a/hw/display/virtio-gpu-pci.c +++ b/hw/display/virtio-gpu-pci.c @@ -65,6 +65,7 @@ static const TypeInfo virtio_gpu_pci_base_info =3D { .abstract =3D true }; module_obj(TYPE_VIRTIO_GPU_PCI_BASE); +module_kconfig(VIRTIO_PCI); =20 #define TYPE_VIRTIO_GPU_PCI "virtio-gpu-pci" typedef struct VirtIOGPUPCI VirtIOGPUPCI; diff --git a/hw/display/virtio-gpu.c b/hw/display/virtio-gpu.c index 182e0868b0..6cc6bb1f1f 100644 --- a/hw/display/virtio-gpu.c +++ b/hw/display/virtio-gpu.c @@ -1450,6 +1450,7 @@ static const TypeInfo virtio_gpu_info =3D { .class_init =3D virtio_gpu_class_init, }; module_obj(TYPE_VIRTIO_GPU); +module_kconfig(VIRTIO_GPU); =20 static void virtio_register_types(void) { diff --git a/hw/display/virtio-vga-gl.c b/hw/display/virtio-vga-gl.c index f22549097c..984faa6b39 100644 --- a/hw/display/virtio-vga-gl.c +++ b/hw/display/virtio-vga-gl.c @@ -37,6 +37,7 @@ static VirtioPCIDeviceTypeInfo virtio_vga_gl_info =3D { .instance_init =3D virtio_vga_gl_inst_initfn, }; module_obj(TYPE_VIRTIO_VGA_GL); +module_kconfig(VIRTIO_VGA); =20 static void virtio_vga_register_types(void) { diff --git a/hw/display/virtio-vga.c b/hw/display/virtio-vga.c index 9e57f61e9e..2a55f88837 100644 --- a/hw/display/virtio-vga.c +++ b/hw/display/virtio-vga.c @@ -240,6 +240,7 @@ static TypeInfo virtio_vga_base_info =3D { .abstract =3D true, }; module_obj(TYPE_VIRTIO_VGA_BASE); +module_kconfig(VIRTIO_VGA); =20 #define TYPE_VIRTIO_VGA "virtio-vga" =20 diff --git a/hw/s390x/virtio-ccw-gpu.c b/hw/s390x/virtio-ccw-gpu.c index 5868a2a070..024e8990f4 100644 --- a/hw/s390x/virtio-ccw-gpu.c +++ b/hw/s390x/virtio-ccw-gpu.c @@ -60,6 +60,7 @@ static const TypeInfo virtio_ccw_gpu =3D { .class_init =3D virtio_ccw_gpu_class_init, }; module_obj(TYPE_VIRTIO_GPU_CCW); +module_kconfig(VIRTIO_CCW); =20 static void virtio_ccw_gpu_register(void) { diff --git a/hw/usb/ccid-card-emulated.c b/hw/usb/ccid-card-emulated.c index 6c8c0355e0..1ddf7297f6 100644 --- a/hw/usb/ccid-card-emulated.c +++ b/hw/usb/ccid-card-emulated.c @@ -613,6 +613,7 @@ static const TypeInfo emulated_card_info =3D { .class_init =3D emulated_class_initfn, }; module_obj(TYPE_EMULATED_CCID); +module_kconfig(USB); =20 static void ccid_card_emulated_register_types(void) { diff --git a/hw/usb/ccid-card-passthru.c b/hw/usb/ccid-card-passthru.c index fa3040fb71..748544d170 100644 --- a/hw/usb/ccid-card-passthru.c +++ b/hw/usb/ccid-card-passthru.c @@ -415,6 +415,7 @@ static const TypeInfo passthru_card_info =3D { .class_init =3D passthru_class_initfn, }; module_obj(TYPE_CCID_PASSTHRU); +module_kconfig(USB); =20 static void ccid_card_passthru_register_types(void) { diff --git a/hw/usb/host-libusb.c b/hw/usb/host-libusb.c index d0d46dd0a4..4784b07b8f 100644 --- a/hw/usb/host-libusb.c +++ b/hw/usb/host-libusb.c @@ -1809,6 +1809,7 @@ static TypeInfo usb_host_dev_info =3D { .instance_init =3D usb_host_instance_init, }; module_obj(TYPE_USB_HOST_DEVICE); +module_kconfig(USB); =20 static void usb_host_register_types(void) { diff --git a/hw/usb/redirect.c b/hw/usb/redirect.c index 5f0ef9cb3b..b0e5fb381e 100644 --- a/hw/usb/redirect.c +++ b/hw/usb/redirect.c @@ -2609,6 +2609,7 @@ static const TypeInfo usbredir_dev_info =3D { .instance_init =3D usbredir_instance_init, }; module_obj(TYPE_USB_REDIR); +module_kconfig(USB); =20 static void usbredir_register_types(void) { diff --git a/include/qemu/module.h b/include/qemu/module.h index 3deac0078b..382234859d 100644 --- a/include/qemu/module.h +++ b/include/qemu/module.h @@ -135,6 +135,16 @@ void module_allow_arch(const char *arch); */ #define module_opts(name) modinfo(opts, name) =20 +/** + * module_kconfig + * + * @name: Kconfig requirement necessary to load the module + * + * This module requires a core module that should be implemented and + * enabled in Kconfig. + */ +#define module_kconfig(name) modinfo(kconfig, name) + /* * module info database * diff --git a/scripts/modinfo-generate.py b/scripts/modinfo-generate.py index f559eed007..689f33c0f2 100755 --- a/scripts/modinfo-generate.py +++ b/scripts/modinfo-generate.py @@ -48,6 +48,8 @@ def generate(name, lines): opts.append(data) elif kind =3D=3D 'arch': arch =3D data; + elif kind =3D=3D 'kconfig': + pass # ignore else: print("unknown:", kind) exit(1) --=20 2.33.0 From nobody Fri May 17 08:24:59 2024 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; dkim=fail; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=fail(p=none dis=none) header.from=suse.de Return-Path: Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 163286209781375.54718499907699; Tue, 28 Sep 2021 13:48:17 -0700 (PDT) Received: from localhost ([::1]:58344 helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1mVK1Q-00010m-LJ for importer@patchew.org; Tue, 28 Sep 2021 16:48:16 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]:33460) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1mVJzt-00082n-Mh for qemu-devel@nongnu.org; Tue, 28 Sep 2021 16:46:42 -0400 Received: from smtp-out1.suse.de ([195.135.220.28]:44166) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1mVJzr-0006h2-O1 for qemu-devel@nongnu.org; Tue, 28 Sep 2021 16:46:41 -0400 Received: from imap2.suse-dmz.suse.de (imap2.suse-dmz.suse.de [192.168.254.74]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature ECDSA (P-521) server-digest SHA512) (No client certificate requested) by smtp-out1.suse.de (Postfix) with ESMTPS id 3BF62224D8; Tue, 28 Sep 2021 20:46:38 +0000 (UTC) Received: from imap2.suse-dmz.suse.de (imap2.suse-dmz.suse.de [192.168.254.74]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature ECDSA (P-521) server-digest SHA512) (No client certificate requested) by imap2.suse-dmz.suse.de (Postfix) with ESMTPS id BB8F113E72; Tue, 28 Sep 2021 20:46:36 +0000 (UTC) Received: from dovecot-director2.suse.de ([192.168.254.65]) by imap2.suse-dmz.suse.de with ESMTPSA id aNMTHyx/U2HdegAAMHmgww (envelope-from ); Tue, 28 Sep 2021 20:46:36 +0000 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=suse.de; s=susede2_rsa; t=1632861998; h=from:from:reply-to:date:date:message-id:message-id:to:to:cc:cc: mime-version:mime-version: content-transfer-encoding:content-transfer-encoding: in-reply-to:in-reply-to:references:references; bh=eSOa9+unSoK7j+FcRBA4mg2MRzG8eWKyjtNAXFNEppw=; b=u7hJH5qRleRgp2CbiaNLoXJR/BMY52dvVBfeTp+NgO9BthOCZcd++q3eQfazeXI6gRf/u0 93B5REIMO/Ix8PyNNvwECMbIOSb/tO3FF5clempsCrd313gThPEKs3Q+0vfOcEZZUbOLKI nfL+fluvxycxHct7QhaB/hsc9B9x0Jk= DKIM-Signature: v=1; a=ed25519-sha256; c=relaxed/relaxed; d=suse.de; s=susede2_ed25519; t=1632861998; h=from:from:reply-to:date:date:message-id:message-id:to:to:cc:cc: mime-version:mime-version: content-transfer-encoding:content-transfer-encoding: in-reply-to:in-reply-to:references:references; bh=eSOa9+unSoK7j+FcRBA4mg2MRzG8eWKyjtNAXFNEppw=; b=SqTSWYwLaeA8/qJO//JJ8KyyXPo38YdsXYQKZ0p2ukKi8q9Jag9j0dkoFuYqK4vXWv6Yo1 aIWgWj3L3XLXP3Cw== From: "Jose R. Ziviani" To: qemu-devel@nongnu.org Subject: [PATCH v3 2/2] modules: generates per-target modinfo Date: Tue, 28 Sep 2021 17:46:28 -0300 Message-Id: <20210928204628.20001-3-jziviani@suse.de> X-Mailer: git-send-email 2.33.0 In-Reply-To: <20210928204628.20001-1-jziviani@suse.de> References: <20210928204628.20001-1-jziviani@suse.de> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Received-SPF: pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists.gnu.org; Received-SPF: pass client-ip=195.135.220.28; envelope-from=jziviani@suse.de; helo=smtp-out1.suse.de X-Spam_score_int: -43 X-Spam_score: -4.4 X-Spam_bar: ---- X-Spam_report: (-4.4 / 5.0 requ) BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, RCVD_IN_DNSWL_MED=-2.3, SPF_HELO_NONE=0.001, SPF_PASS=-0.001 autolearn=ham autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.23 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Cc: pbonzini@redhat.com, kraxel@redhat.com, "Jose R. Ziviani" Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: "Qemu-devel" X-ZohoMail-DKIM: fail (found 2 invalid signatures) X-ZM-MESSAGEID: 1632862100398100002 Content-Type: text/plain; charset="utf-8" This patch changes the way modinfo is generated and built. Instead of one modinfo.c it generates one modinfo--softmmu.c per target. It aims a fine-tune control of modules by configuring Kconfig. Signed-off-by: Jose R. Ziviani Acked-by: Gerd Hoffmann --- meson.build | 25 +++++++++++++++------- scripts/modinfo-generate.py | 42 ++++++++++++++++++++++--------------- 2 files changed, 42 insertions(+), 25 deletions(-) diff --git a/meson.build b/meson.build index 15ef4d3c41..a617be73de 100644 --- a/meson.build +++ b/meson.build @@ -2403,14 +2403,23 @@ foreach d, list : target_modules endforeach =20 if enable_modules - modinfo_src =3D custom_target('modinfo.c', - output: 'modinfo.c', - input: modinfo_files, - command: [modinfo_generate, '@INPUT@'], - capture: true) - modinfo_lib =3D static_library('modinfo', modinfo_src) - modinfo_dep =3D declare_dependency(link_whole: modinfo_lib) - softmmu_ss.add(modinfo_dep) + foreach target : target_dirs + if target.endswith('-softmmu') + config_target =3D config_target_mak[target] + config_devices_mak =3D target + '-config-devices.mak' + modinfo_src =3D custom_target('modinfo-' + target + '.c', + output: 'modinfo-' + target + '.c', + input: modinfo_files, + command: [modinfo_generate, '--devices',= config_devices_mak, '@INPUT@'], + capture: true) + + modinfo_lib =3D static_library('modinfo-' + target + '.c', modinfo_s= rc) + modinfo_dep =3D declare_dependency(link_with: modinfo_lib) + + arch =3D config_target['TARGET_NAME'] =3D=3D 'sparc64' ? 'sparc64' := config_target['TARGET_BASE_ARCH'] + hw_arch[arch].add(modinfo_dep) + endif + endforeach endif =20 nm =3D find_program('nm') diff --git a/scripts/modinfo-generate.py b/scripts/modinfo-generate.py index 689f33c0f2..a0c09edae1 100755 --- a/scripts/modinfo-generate.py +++ b/scripts/modinfo-generate.py @@ -32,7 +32,7 @@ def parse_line(line): continue return (kind, data) =20 -def generate(name, lines): +def generate(name, lines, core_modules): arch =3D "" objs =3D [] deps =3D [] @@ -49,7 +49,13 @@ def generate(name, lines): elif kind =3D=3D 'arch': arch =3D data; elif kind =3D=3D 'kconfig': - pass # ignore + # don't add a module which dependency is not enabled + # in kconfig + if data.strip() not in core_modules: + print(" /* module {} isn't enabled in Kconfig. */" + .format(data.strip())) + print("/* },{ */") + return [] else: print("unknown:", kind) exit(1) @@ -60,7 +66,7 @@ def generate(name, lines): print_array("objs", objs) print_array("deps", deps) print_array("opts", opts) - print("},{"); + print("},{") return deps =20 def print_pre(): @@ -74,26 +80,28 @@ def print_post(): print("}};") =20 def main(args): + if len(args) < 3 or args[0] !=3D '--devices': + print('Expected: modinfo-generate.py --devices ' + 'config-device.mak [modinfo files]', file=3Dsys.stderr) + exit(1) + + # get all devices enabled in kconfig, from *-config-device.mak + enabled_core_modules =3D set() + with open(args[1]) as file: + for line in file.readlines(): + config =3D line.split('=3D') + if config[1].rstrip() =3D=3D 'y': + enabled_core_modules.add(config[0][7:]) # remove CONFIG_ + deps =3D {} print_pre() - for modinfo in args: + for modinfo in args[2:]: with open(modinfo) as f: lines =3D f.readlines() print(" /* %s */" % modinfo) - (basename, ext) =3D os.path.splitext(modinfo) - deps[basename] =3D generate(basename, lines) + (basename, _) =3D os.path.splitext(modinfo) + deps[basename] =3D generate(basename, lines, enabled_core_modules) print_post() =20 - flattened_deps =3D {flat.strip('" ') for dep in deps.values() for flat= in dep} - error =3D False - for dep in flattened_deps: - if dep not in deps.keys(): - print("Dependency {} cannot be satisfied".format(dep), - file=3Dsys.stderr) - error =3D True - - if error: - exit(1) - if __name__ =3D=3D "__main__": main(sys.argv[1:]) --=20 2.33.0