From nobody Mon Feb 9 17:37:09 2026 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; dkim=pass; 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=pass(p=quarantine dis=none) header.from=suse.com ARC-Seal: i=1; a=rsa-sha256; t=1653690156; cv=none; d=zohomail.com; s=zohoarc; b=ZtvB4YDK4na3dDyyPvnYfowKwt8RwqQO1kJL67yqZfVx551UVXarQjo72oQhngSDrfcBpB99ga2z9euxOqAjdjHuAUq0USSvgDWsy+B0oYdaw0J5Utqzo//hG/yBvKXk+X4m10f4hjq0TRmp4rm67pF8HAw1j/4JIgjqNUhSQKY= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1653690156; h=Content-Type:Content-Transfer-Encoding:Cc:Date:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:To; bh=JGClF45tEGhZCnJ8RYQx/+Bck2Mtd3EyHLTS+ABjBVg=; b=EGXi6AM99IQwydKJZERZ4qio8IT5z8XQ2ozEewS/ws9e9GNAyPJlfDV/iT6k2t8iqxNDsjf4EW0cdzd5YIBTTG5Sqg1T4h3pnKtRz3cA7lxAnmoVWYOScZh0dujPDnyv+zulPsP/xTAS2KYLpW62dP2dchcjvQBbg2RF+xD8LkI= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass; 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=pass header.from= (p=quarantine dis=none) Return-Path: Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1653690155964394.6992571958351; Fri, 27 May 2022 15:22:35 -0700 (PDT) Received: from localhost ([::1]:34696 helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1nuiLr-0000gw-0F for importer@patchew.org; Fri, 27 May 2022 18:22:35 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]:57648) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1nuiKC-0007PY-15; Fri, 27 May 2022 18:20:52 -0400 Received: from smtp-out1.suse.de ([195.135.220.28]:44544) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1nuiJy-0000Se-Vt; Fri, 27 May 2022 18:20:50 -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 6174C2199A; Fri, 27 May 2022 22:20:37 +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 0863F13A84; Fri, 27 May 2022 22:20:36 +0000 (UTC) Received: from dovecot-director2.suse.de ([192.168.254.65]) by imap2.suse-dmz.suse.de with ESMTPSA id qxAqO7ROkWKwJAAAMHmgww (envelope-from ); Fri, 27 May 2022 22:20:36 +0000 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=suse.com; s=susede1; t=1653690037; h=from:from:reply-to:date:date:message-id:message-id:to:to:cc:cc: mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding: in-reply-to:in-reply-to:references:references; bh=JGClF45tEGhZCnJ8RYQx/+Bck2Mtd3EyHLTS+ABjBVg=; b=hVWQLatlwgDNLN9AwO3xUiox4CdKdUtIMl8BUHJxjbZSJBwHd11BfxysryYr2cSvmVPozi qK7MDgjRa3dCQcOC20UnwJ1HXkUKY5gC/UmEDHeeTnNwWNQCTHR618qk36kV+wUZa0c5Ec BC2itnAUUf0KG3mJE4+jkgHzErh/hT8= Subject: [RESEND PATCH 2/2] modules: generates per-target modinfo From: Dario Faggioli To: qemu-devel@nongnu.org Cc: "Jose R. Ziviani" , Gerd Hoffmann , John Snow , Cleber Rosa , Paolo Bonzini , qemu-s390x@nongnu.org Date: Sat, 28 May 2022 00:20:35 +0200 Message-ID: <165369003038.5857.13084289285185196779.stgit@work> In-Reply-To: <165368982364.5857.13012746434823168062.stgit@work> References: <165368982364.5857.13012746434823168062.stgit@work> User-Agent: StGit/1.5 MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" 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=dfaggioli@suse.com; helo=smtp-out1.suse.de X-Spam_score_int: -20 X-Spam_score: -2.1 X-Spam_bar: -- X-Spam_report: (-2.1 / 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, SPF_HELO_NONE=0.001, T_SCC_BODY_TEXT_LINE=-0.01, T_SPF_TEMPERROR=0.01 autolearn=ham autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: "Qemu-devel" X-ZohoMail-DKIM: pass (identity @suse.com) X-ZM-MESSAGEID: 1653690157377100001 From: Jose R. Ziviani 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 Signed-off-by: Dario Faggioli --- Cc: Gerd Hoffmann Cc: John Snow Cc: Cleber Rosa Cc: Paolo Bonzini Cc: qemu-s390x@nongnu.org --- meson.build | 25 +++++++++++++++++-------- scripts/modinfo-generate.py | 42 +++++++++++++++++++++++++--------------= --- 2 files changed, 42 insertions(+), 25 deletions(-) diff --git a/meson.build b/meson.build index df7c34b076..3744923aa7 100644 --- a/meson.build +++ b/meson.build @@ -3172,14 +3172,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:])