From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from simark.ca by simark.ca with LMTP id dffgGFFJk2VzezAAWB0awg (envelope-from ) for ; Mon, 01 Jan 2024 18:22:57 -0500 Received: by simark.ca (Postfix, from userid 112) id 573D81E0C3; Mon, 1 Jan 2024 18:22:57 -0500 (EST) Received: from server2.sourceware.org (server2.sourceware.org [8.43.85.97]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature ECDSA (prime256v1) server-digest SHA256) (No client certificate requested) by simark.ca (Postfix) with ESMTPS id 4490C1E092 for ; Mon, 1 Jan 2024 18:22:55 -0500 (EST) Received: from server2.sourceware.org (localhost [IPv6:::1]) by sourceware.org (Postfix) with ESMTP id 7E9213858427 for ; Mon, 1 Jan 2024 23:22:54 +0000 (GMT) Received: from smtp.gentoo.org (woodpecker.gentoo.org [140.211.166.183]) by sourceware.org (Postfix) with ESMTP id 5D6203858D1E for ; Mon, 1 Jan 2024 23:22:24 +0000 (GMT) DMARC-Filter: OpenDMARC Filter v1.4.2 sourceware.org 5D6203858D1E Authentication-Results: sourceware.org; dmarc=pass (p=none dis=none) header.from=gentoo.org Authentication-Results: sourceware.org; spf=pass smtp.mailfrom=gentoo.org ARC-Filter: OpenARC Filter v1.0.0 sourceware.org 5D6203858D1E Authentication-Results: server2.sourceware.org; arc=none smtp.remote-ip=140.211.166.183 ARC-Seal: i=1; a=rsa-sha256; d=sourceware.org; s=key; t=1704151347; cv=none; b=Lc27ecjJ+WG43Jkxv9Am5GdxrV2bY093sGecMBQ2R25+sepGli0N8F+YVhrrSTpClzd58Vo54UtluraP2BiMtiaND0gpeA8vBygg2JGxdTvzgkEa6VRCjCvwJlEkFzldjTF0wXjBS6fmsfZpjAgObVtm8YnhOmxesMgFz55S79k= ARC-Message-Signature: i=1; a=rsa-sha256; d=sourceware.org; s=key; t=1704151347; c=relaxed/simple; bh=vsxF1oY1I6OiOE3amtAP7j9tC4Zq2JZ734Hr/Jy9J5Q=; h=From:To:Subject:Date:Message-ID:MIME-Version; b=SkkCO8INrXwflCgg+dWqEucHKo3BhexZQz+BeUOzmnClPJiAVN/a3yghLmoRIIiOg4aiHwTnUu8A75dWfxIsgkWAWF/xQwTsOd4EjL+eG1u9vHjGaG100+WeRdxhE+3+0+PnRKq8+jZB96cM81JYiK7D3Gdg5feA+i8sw3+C2H4= ARC-Authentication-Results: i=1; server2.sourceware.org Received: by smtp.gentoo.org (Postfix, from userid 559) id 954583406C2; Mon, 1 Jan 2024 23:22:23 +0000 (UTC) From: Mike Frysinger To: gdb-patches@sourceware.org Subject: [PATCH/committed 1/8] sim: ppc: hoist igen compilation into top-level Date: Mon, 1 Jan 2024 18:22:12 -0500 Message-ID: <20240101232219.3003-1-vapier@gentoo.org> X-Mailer: git-send-email 2.43.0 MIME-Version: 1.0 Content-Transfer-Encoding: 8bit X-Spam-Status: No, score=-11.3 required=5.0 tests=BAYES_00, GIT_PATCH_0, JMQ_SPF_NEUTRAL, KAM_DMARC_STATUS, RCVD_IN_MSPIKE_H3, RCVD_IN_MSPIKE_WL, SPF_HELO_PASS, SPF_PASS, TXREP, T_SCC_BODY_TEXT_LINE autolearn=ham autolearn_force=no version=3.4.6 X-Spam-Checker-Version: SpamAssassin 3.4.6 (2021-04-09) on server2.sourceware.org X-BeenThere: gdb-patches@sourceware.org X-Mailman-Version: 2.1.30 Precedence: list List-Id: Gdb-patches mailing list List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: gdb-patches-bounces+public-inbox=simark.ca@sourceware.org This simplifies the build a bit (especially for deps in port subdirs), and avoids recursive make. This in turn speeds up the build, and lets us reuse existing build-time vs host-time logic from Makefile.am. --- sim/Makefile.in | 354 ++++++++++++++++++++++++++++++++------------ sim/ppc/Makefile.in | 60 +------- sim/ppc/local.mk | 64 +++++++- 3 files changed, 325 insertions(+), 153 deletions(-) diff --git a/sim/ppc/Makefile.in b/sim/ppc/Makefile.in index ee8fb0462eb5..f7c37cc68f79 100644 --- a/sim/ppc/Makefile.in +++ b/sim/ppc/Makefile.in @@ -88,7 +88,6 @@ BUILD_CFLAGS = $(CFLAGS_FOR_BUILD) $(INCLUDES) $(WARN_CFLAGS) LIBS = $(COMMON_LIBS) @LIBS@ $(LIBGNU) $(LIBGNU_EXTRA_LIBS) -COMPILE_FOR_BUILD = $(CC_FOR_BUILD) $(BUILD_CFLAGS) LINK_FOR_BUILD = $(CC_FOR_BUILD) $(BUILD_CFLAGS) $(LDFLAGS_FOR_BUILD) -o $@ IGEN_OPCODE_RULES = @sim_opcode@ @@ -616,63 +615,6 @@ tmp-igen: igen $(srcdir)/powerpc.igen $(srcdir)/altivec.igen $(srcdir)/e500.igen $(TARGETLIB): tmp-igen itable.h itable.c icache.h icache.c idecode.h idecode.c semantics.h semantics.c model.h model.c support.h support.c: tmp-igen -igen: igen.o table.o lf.o misc.o filter_host.o ld-decode.o ld-cache.o filter.o ld-insn.o gen-model.o gen-itable.o gen-icache.o gen-semantics.o gen-idecode.o gen-support.o - $(ECHO_CCLD) $(LINK_FOR_BUILD) igen.o table.o lf.o misc.o filter_host.o ld-decode.o ld-cache.o filter.o ld-insn.o gen-model.o gen-itable.o gen-icache.o gen-semantics.o gen-idecode.o gen-support.o - -filter_host.o: filter_host.c $(CONFIG_H) $(FILTER_FILENAME_H) - $(ECHO_CC) $(COMPILE_FOR_BUILD) -c $(srcdir)/filter_host.c - -table.o: table.c $(CONFIG_H) $(MISC_H) $(LF_H) $(TABLE_H) - $(ECHO_CC) $(COMPILE_FOR_BUILD) -c $(srcdir)/table.c - -lf.o: lf.c $(CONFIG_H) $(MISC_H) $(LF_H) - $(ECHO_CC) $(COMPILE_FOR_BUILD) -c $(srcdir)/lf.c - -filter.o: filter.c $(CONFIG_H) $(MISC_H) $(FILTER_H) - $(ECHO_CC) $(COMPILE_FOR_BUILD) -c $(srcdir)/filter.c -tmp-filter: filter.c $(MISC_H) misc.o - $(ECHO_CCLD) $(LINK_FOR_BUILD) -DMAIN $(srcdir)/filter.c misc.o - -ld-decode.o: ld-decode.c $(MISC_H) $(LF_H) $(TABLE_H) $(LD_DECODE_H) - $(ECHO_CC) $(COMPILE_FOR_BUILD) -c $(srcdir)/ld-decode.c -tmp-ld-decode: ld-decode.c misc.o lf.o table.o filter_host.o - $(ECHO_CCLD) $(LINK_FOR_BUILD) -DMAIN $(srcdir)/ld-decode.c misc.o lf.o table.o filter_host.o - -ld-cache.o: ld-cache.c $(MISC_H) $(LF_H) $(TABLE_H) $(LD_CACHE_H) - $(ECHO_CC) $(COMPILE_FOR_BUILD) -c $(srcdir)/ld-cache.c -tmp-ld-cache: ld-cache.c misc.o lf.o table.o filter_host.o - $(ECHO_CCLD) $(LINK_FOR_BUILD) -DMAIN $(srcdir)/ld-cache.c misc.o lf.o table.o filter_host.o - -ld-insn.o: ld-insn.c $(MISC_H) $(LF_H) $(TABLE_H) $(FILTER_H) $(LD_DECODE_H) $(LD_CACHE_H) $(LD_INSN_H) $(IGEN_H) - $(ECHO_CC) $(COMPILE_FOR_BUILD) -c $(srcdir)/ld-insn.c -tmp-ld-insn: ld-insn.c ld-cache.o misc.o lf.o table.o ld-decode.o filter_host.o filter.o - $(ECHO_CCLD) $(LINK_FOR_BUILD) -DMAIN $(srcdir)/ld-insn.c ld-cache.o misc.o lf.o table.o ld-decode.o filter_host.o filter.o - -gen-model.o: gen-model.c $(MISC_H) $(LF_H) $(TABLE_H) $(FILTER_H) $(LD_CACHE_H) $(LD_DECODE_H) $(LD_INSN_H) $(GEN_MODEL_H) - $(ECHO_CC) $(COMPILE_FOR_BUILD) -c $(srcdir)/gen-model.c - -gen-itable.o: gen-itable.c $(MISC_H) $(LF_H) $(TABLE_H) $(FILTER_H) $(LD_CACHE_H) $(LD_DECODE_H) $(LD_INSN_H) $(IGEN_H) $(GEN_ITABLE_H) - $(ECHO_CC) $(COMPILE_FOR_BUILD) -c $(srcdir)/gen-itable.c - -gen-icache.o: gen-icache.c $(MISC_H) $(LF_H) $(TABLE_H) $(FILTER_H) $(LD_DECODE_H) $(LD_CACHE_H) $(LD_INSN_H) $(IGEN_H) $(GEN_SEMANTICS_H) $(GEN_IDECODE_H) $(GEN_ICACHE_H) - $(ECHO_CC) $(COMPILE_FOR_BUILD) -c $(srcdir)/gen-icache.c - -gen-semantics.o: gen-semantics.c $(MISC_H) $(LF_H) $(TABLE_H) $(FILTER_H) $(LD_DECODE_H) $(LD_CACHE_H) $(LD_INSN_H) $(IGEN_H) $(GEN_SEMANTICS_H) $(GEN_ICACHE_H) $(GEN_IDECODE_H) - $(ECHO_CC) $(COMPILE_FOR_BUILD) -c $(srcdir)/gen-semantics.c - -gen-idecode.o: gen-idecode.c $(MISC_H) $(LF_H) $(TABLE_H) $(FILTER_H) $(LD_DECODE_H) $(LD_CACHE_H) $(LD_INSN_H) $(IGEN_H) $(GEN_IDECODE_H) $(GEN_ICACHE_H) $(GEN_SEMANTICS_H) - $(ECHO_CC) $(COMPILE_FOR_BUILD) -c $(srcdir)/gen-idecode.c - -gen-support.o: gen-support.c $(MISC_H) $(LF_H) $(TABLE_H) $(FILTER_H) $(LD_DECODE_H) $(LD_CACHE_H) $(LD_INSN_H) $(IGEN_H) $(GEN_SEMANTICS_H) $(GEN_SUPPORT_H) - $(ECHO_CC) $(COMPILE_FOR_BUILD) -c $(srcdir)/gen-support.c - -igen.o: igen.c $(MISC_H) $(LF_H) $(TABLE_H) $(CONFIG_H) $(FILTER_H) $(LD_CACHE_H) $(LD_DECODE_H) $(LD_INSN_H) $(IGEN_H) $(GEN_MODEL_H) $(GEN_ICACHE_H) $(GEN_ITABLE_H) $(GEN_IDECODE_H) $(GEN_SEMANTICS_H) $(GEN_SUPPORT_H) - $(ECHO_CC) $(COMPILE_FOR_BUILD) -c $(srcdir)/igen.c - -misc.o: misc.c $(CONFIG_H) $(MISC_H) - $(ECHO_CC) $(COMPILE_FOR_BUILD) -c $(srcdir)/misc.c - - # real hardware hw.c hw.h: tmp-hw; @true @@ -762,7 +704,7 @@ TAGS: $(BUILT_SRC) etags $(srcdir)/*.h $(srcdir)/*.c $(BUILT_SRC) clean mostlyclean: - rm -f tmp-* *.[oasi] core igen $(BUILT_SRC_WO_CONFIG) + rm -f tmp-* *.[oasi] core $(BUILT_SRC_WO_CONFIG) distclean realclean: clean rm -f TAGS Makefile config.cache config.status config.h defines.h stamp-h config.log diff --git a/sim/ppc/local.mk b/sim/ppc/local.mk index 9f55629dfe16..915642293542 100644 --- a/sim/ppc/local.mk +++ b/sim/ppc/local.mk @@ -28,7 +28,7 @@ SIM_ALL_RECURSIVE_DEPS += common/libcommon.a $(AM_V_at)$(MAKE) $(AM_MAKEFLAGS) -C $(@D) $(@F) ## Helper targets for running make from the top-level due to run's sis.o. -%D%/%.o: %D%/%.c | %D%/libsim.a $(SIM_ALL_RECURSIVE_DEPS) +%D%/main.o: %D%/%.o: %D%/%.c | %D%/libsim.a $(SIM_ALL_RECURSIVE_DEPS) $(MAKE) $(AM_MAKEFLAGS) -C $(@D) $(@F) noinst_PROGRAMS += %D%/run @@ -43,5 +43,67 @@ noinst_PROGRAMS += %D%/run $(AM_V_at)$(SHELL) $(srcroot)/move-if-change $@.tmp $(srcdir)/%D%/spreg.h $(AM_V_at)touch $(srcdir)/%D%/spreg.h +EXTRA_LIBRARIES += %D%/libigen.a +%C%_libigen_a_SOURCES = \ + %D%/table.c \ + %D%/lf.c \ + %D%/misc.c \ + %D%/filter_host.c \ + %D%/ld-decode.c \ + %D%/ld-cache.c \ + %D%/filter.c \ + %D%/ld-insn.c \ + %D%/gen-model.c \ + %D%/gen-itable.c \ + %D%/gen-icache.c \ + %D%/gen-semantics.c \ + %D%/gen-idecode.c \ + %D%/gen-support.c + +%C%_igen_SOURCES = %D%/igen.c +%C%_igen_LDADD = %D%/libigen.a + +PPC_IGEN = %D%/igen$(EXEEXT) + +SIM_ALL_RECURSIVE_DEPS += $(PPC_IGEN) + +## These rules are copied from automake, but tweaked to use FOR_BUILD variables. +%D%/libigen.a: $(%C%_libigen_a_OBJECTS) $(%C%_libigen_a_DEPENDENCIES) $(EXTRA_%C%_libigen_a_DEPENDENCIES) %D%/$(am__dirstamp) + $(AM_V_at)-rm -f $@ + $(AM_V_AR)$(AR_FOR_BUILD) $(ARFLAGS) $@ $(%C%_libigen_a_OBJECTS) $(%C%_libigen_a_LIBADD) + $(AM_V_at)$(RANLIB_FOR_BUILD) $@ + +## igen is a build-time only tool. Override the default rules for it. +%D%/igen$(EXEEXT): $(%C%_igen_OBJECTS) $(%C%_igen_DEPENDENCIES) %D%/$(am__dirstamp) + $(AM_V_CCLD)$(LINK_FOR_BUILD) $(%C%_igen_OBJECTS) $(%C%_igen_LDADD) + +$(%C%_libigen_a_OBJECTS) $(%C%_igen_OBJECTS): %D%/%.o: %D%/%.c + $(AM_V_CC)$(COMPILE_FOR_BUILD) -c $< -o $@ + +## Build some of the files in standalone mode for developers of igen itself. +%D%/%-main.o: %D%/%.c + $(AM_V_CC)$(COMPILE_FOR_BUILD) -DMAIN -c $< -o $@ + +%C%_filter_SOURCES = +%C%_filter_LDADD = %D%/filter-main.o %D%/libigen.a + +%C%_ld_cache_SOURCES = +%C%_ld_cache_LDADD = %D%/ld-cache-main.o %D%/libigen.a + +%C%_ld_decode_SOURCES = +%C%_ld_decode_LDADD = %D%/ld-decode-main.o %D%/libigen.a + +%C%_ld_insn_SOURCES = +%C%_ld_insn_LDADD = %D%/ld-insn-main.o %D%/libigen.a + +%C%_IGEN_TOOLS = \ + $(PPC_IGEN) \ + %D%/filter \ + %D%/ld-cache \ + %D%/ld-decode \ + %D%/ld-insn +EXTRA_PROGRAMS += $(%C%_IGEN_TOOLS) +MOSTLYCLEANFILES += $(%C%_IGEN_TOOLS) %D%/libigen.a + %C%docdir = $(docdir)/%C% %C%doc_DATA = %D%/BUGS %D%/INSTALL %D%/README %D%/RUN -- 2.43.0