From nobody Sat Nov 8 05:44:48 2025 Delivered-To: importer@patchew.org Received-SPF: temperror (zoho.com: Error in retrieving data from DNS) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists.gnu.org; Authentication-Results: mx.zohomail.com; spf=temperror (zoho.com: Error in retrieving data from DNS) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=fail(p=none dis=none) header.from=redhat.com Return-Path: Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1550051547899129.09732243732697; Wed, 13 Feb 2019 01:52:27 -0800 (PST) Received: from localhost ([127.0.0.1]:54110 helo=lists.gnu.org) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1gtrDM-0001ey-U6 for importer@patchew.org; Wed, 13 Feb 2019 04:52:24 -0500 Received: from eggs.gnu.org ([209.51.188.92]:36925) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1gtrB8-0000SJ-P1 for qemu-devel@nongnu.org; Wed, 13 Feb 2019 04:50:08 -0500 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1gtrB6-0000LP-VA for qemu-devel@nongnu.org; Wed, 13 Feb 2019 04:50:06 -0500 Received: from mx1.redhat.com ([209.132.183.28]:37686) by eggs.gnu.org with esmtps (TLS1.0:DHE_RSA_AES_256_CBC_SHA1:32) (Exim 4.71) (envelope-from ) id 1gtrB5-0000E3-HG for qemu-devel@nongnu.org; Wed, 13 Feb 2019 04:50:04 -0500 Received: from smtp.corp.redhat.com (int-mx05.intmail.prod.int.phx2.redhat.com [10.5.11.15]) (using TLSv1.2 with cipher AECDH-AES256-SHA (256/256 bits)) (No client certificate requested) by mx1.redhat.com (Postfix) with ESMTPS id AA6FDC062C6A for ; Wed, 13 Feb 2019 09:49:57 +0000 (UTC) Received: from blackfin.pond.sub.org (ovpn-116-92.ams2.redhat.com [10.36.116.92]) by smtp.corp.redhat.com (Postfix) with ESMTPS id 64D925D6B3; Wed, 13 Feb 2019 09:49:55 +0000 (UTC) Received: by blackfin.pond.sub.org (Postfix, from userid 1000) id E49FE11386C5; Wed, 13 Feb 2019 10:49:53 +0100 (CET) From: Markus Armbruster To: Paolo Bonzini Date: Wed, 13 Feb 2019 10:49:53 +0100 Message-ID: <871s4chvb2.fsf@dusky.pond.sub.org> User-Agent: Gnus/5.13 (Gnus v5.13) Emacs/26.1 (gnu/linux) MIME-Version: 1.0 X-Scanned-By: MIMEDefang 2.79 on 10.5.11.15 X-Greylist: Sender IP whitelisted, not delayed by milter-greylist-4.5.16 (mx1.redhat.com [10.5.110.32]); Wed, 13 Feb 2019 09:49:57 +0000 (UTC) X-detected-operating-system: by eggs.gnu.org: GNU/Linux 2.2.x-3.x [generic] X-Received-From: 209.132.183.28 Subject: [Qemu-devel] Seeking QEMU makefile advice X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.21 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Cc: qemu-devel@nongnu.org Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: "Qemu-devel" Content-Transfer-Encoding: quoted-printable Content-Type: text/plain; charset="utf-8" Hi Paolo, I'm trying to resolve a FIXME in a patch I recently posted. Here's what I want to do: QAPI_COMMON_MODULES =3D block-core block char common crypto introspect QAPI_COMMON_MODULES +=3D job migration misc net rdma rocker run-state QAPI_COMMON_MODULES +=3D sockets tpm trace transaction ui QAPI_TARGET_MODULES =3D target QAPI_MODULES =3D $(QAPI_COMMON_MODULES) $(QAPI_TARGET_MODULES) util-obj-y +=3D qapi/qapi-builtin-types.o util-obj-y +=3D $(QAPI_COMMON_MODULES:%=3Dqapi/qapi-types-%.o) util-obj-y +=3D qapi/qapi-builtin-visit.o util-obj-y +=3D $(QAPI_COMMON_MODULES:%=3Dqapi/qapi-visit-%.o) util-obj-y +=3D qapi/qapi-emit-events.o util-obj-y +=3D $(QAPI_COMMON_MODULES:%=3Dqapi/qapi-events-%.o) obj-y +=3D $(QAPI_TARGET_MODULES:%=3Dqapi/qapi-types-%.o) obj-y +=3D qapi/qapi-types.o obj-y +=3D $(QAPI_TARGET_MODULES:%=3Dqapi/qapi-visit-%.o) obj-y +=3D qapi/qapi-visit.o obj-y +=3D $(QAPI_TARGET_MODULES:%=3Dqapi/qapi-events-%.o) obj-y +=3D qapi/qapi-events.o obj-y +=3D $(QAPI_TARGET_MODULES:%=3Dqapi/qapi-commands-%.o) obj-y +=3D qapi/qapi-commands.o obj-y +=3D qapi/qapi-introspect.o Simple enough, except which part goes where? First attempt: * Define QAPI_COMMON_MODULES, QAPI_TARGET_MODULES and QAPI_MODULES in Makefile.obj * Add to util-obj-y in Makefile.obj * Add to obj-y in Makefile.target No go, because QAPI_TARGET_MODULES is blank there. To make progress, I duplicated its definition there, marked FIXME. Message-Id: <20190206181725.14337-8-armbru@redhat.com> https://lists.nongnu.org/archive/html/qemu-devel/2019-02/msg01652.html Diff appended for your convenience. I've since realized QAPI_TARGET_MODULES is blank there because it only gets defined further down, via include $(SRC_PATH)/Makefile.objs. This leads me to my problem: * On the one hand, I want to add to obj-y after the include defines QAPI_TARGET_MODULES. * On the other hand, I need to be done with adding to obj-y before the all-obj-y :=3D $(obj-y) line. Can't satisfy both. Any ideas on how to better distribute the work between the makefiles? diff --git a/Makefile.objs b/Makefile.objs index 70ee51742f..5f0a7a8ca5 100644 --- a/Makefile.objs +++ b/Makefile.objs @@ -1,20 +1,19 @@ -QAPI_MODULES =3D block-core block char common crypto introspect job migrat= ion -QAPI_MODULES +=3D misc net rdma rocker run-state sockets tpm trace transac= tion -QAPI_MODULES +=3D ui +QAPI_COMMON_MODULES =3D block-core block char common crypto introspect +QAPI_COMMON_MODULES +=3D job migration misc net rdma rocker run-state +QAPI_COMMON_MODULES +=3D sockets tpm trace transaction ui +QAPI_TARGET_MODULES =3D target +QAPI_MODULES =3D $(QAPI_COMMON_MODULES) $(QAPI_TARGET_MODULES) =20 ####################################################################### # Common libraries for tools and emulators stub-obj-y =3D stubs/ crypto/ util-obj-y =3D util/ qobject/ qapi/ util-obj-y +=3D qapi/qapi-builtin-types.o -util-obj-y +=3D qapi/qapi-types.o -util-obj-y +=3D $(QAPI_MODULES:%=3Dqapi/qapi-types-%.o) +util-obj-y +=3D $(QAPI_COMMON_MODULES:%=3Dqapi/qapi-types-%.o) util-obj-y +=3D qapi/qapi-builtin-visit.o -util-obj-y +=3D qapi/qapi-visit.o -util-obj-y +=3D $(QAPI_MODULES:%=3Dqapi/qapi-visit-%.o) +util-obj-y +=3D $(QAPI_COMMON_MODULES:%=3Dqapi/qapi-visit-%.o) util-obj-y +=3D qapi/qapi-emit-events.o -util-obj-y +=3D qapi/qapi-events.o -util-obj-y +=3D $(QAPI_MODULES:%=3Dqapi/qapi-events-%.o) +util-obj-y +=3D $(QAPI_COMMON_MODULES:%=3Dqapi/qapi-events-%.o) =20 chardev-obj-y =3D chardev/ slirp-obj-$(CONFIG_SLIRP) =3D slirp/ @@ -92,8 +91,7 @@ common-obj-$(CONFIG_FDT) +=3D device_tree.o ###################################################################### # qapi =20 -common-obj-y +=3D qapi/qapi-commands.o -common-obj-y +=3D $(QAPI_MODULES:%=3Dqapi/qapi-commands-%.o) +common-obj-y +=3D $(QAPI_COMMON_MODULES:%=3Dqapi/qapi-commands-%.o) common-obj-y +=3D qmp.o hmp.o endif =20 diff --git a/Makefile.target b/Makefile.target index d8af835890..f908477040 100644 --- a/Makefile.target +++ b/Makefile.target @@ -164,6 +164,16 @@ endif =20 GENERATED_FILES +=3D hmp-commands.h hmp-commands-info.h =20 +# FIXME duplicates Makefile.obj's +QAPI_TARGET_MODULES =3D target +obj-y +=3D $(QAPI_TARGET_MODULES:%=3Dqapi/qapi-types-%.o) +obj-y +=3D qapi/qapi-types.o +obj-y +=3D $(QAPI_TARGET_MODULES:%=3Dqapi/qapi-visit-%.o) +obj-y +=3D qapi/qapi-visit.o +obj-y +=3D $(QAPI_TARGET_MODULES:%=3Dqapi/qapi-events-%.o) +obj-y +=3D qapi/qapi-events.o +obj-y +=3D $(QAPI_TARGET_MODULES:%=3Dqapi/qapi-commands-%.o) +obj-y +=3D qapi/qapi-commands.o obj-y +=3D qapi/qapi-introspect.o =20 endif # CONFIG_SOFTMMU diff --git a/qapi/qapi-schema.json b/qapi/qapi-schema.json index 1845aa78ff..db61bfd688 100644 --- a/qapi/qapi-schema.json +++ b/qapi/qapi-schema.json @@ -97,3 +97,4 @@ { 'include': 'trace.json' } { 'include': 'introspect.json' } { 'include': 'misc.json' } +{ 'include': 'target.json' } diff --git a/qapi/target.json b/qapi/target.json new file mode 100644 index 0000000000..8054926293 --- /dev/null +++ b/qapi/target.json @@ -0,0 +1,13 @@ +# -*- Mode: Python -*- +# + +## +# =3D Target-specific commands & events +## + +## +# @TARGET-TEMPORARY-DUMMY: +# Will go away in the next commit. Needed in this one because empty +# modules don't generate anything, defeating this commit's purpose. +## +{ 'event': 'TARGET-TEMPORARY-DUMMY' }