From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1753752AbbIWKeL (ORCPT ); Wed, 23 Sep 2015 06:34:11 -0400 Received: from mx1.redhat.com ([209.132.183.28]:48983 "EHLO mx1.redhat.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1752854AbbIWKeJ (ORCPT ); Wed, 23 Sep 2015 06:34:09 -0400 From: Jiri Olsa To: Arnaldo Carvalho de Melo Cc: Kai Germaschewski , lkml , David Ahern , Ingo Molnar , Namhyung Kim , Peter Zijlstra Subject: [PATCH 0/7] tools build: Fix header removal build issue Date: Wed, 23 Sep 2015 12:33:55 +0200 Message-Id: <1443004442-32660-1-git-send-email-jolsa@kernel.org> Sender: linux-kernel-owner@vger.kernel.org List-ID: X-Mailing-List: linux-kernel@vger.kernel.org hi, for dependency tracking we currently use targets that fall out of the gcc -MD command. We store this info in the .cmd file and include as makefile during the build. This format put object as target and all the c and header files as dependencies, like: util/abspath.o: util/abspath.c /usr/include/stdc-predef.h util/cache.h \ /usr/include/bits/wordsize.h /usr/include/gnu/stubs.h \ ... If any of those dependency header files (krava.h below) is removed the build fails on: make[1]: *** No rule to make target 'krava.h', needed by 'inc.o'. Stop. This patch adds fixdep helper, that is used by kbuild to alter the shape of the object dependencies like: source_util/abspath.o := util/abspath.c deps_util/abspath.o := \ /usr/include/stdc-predef.h \ util/cache.h \ ... util/abspath.o: $(deps_util/abspath.o) $(deps_util/abspath.o): With this format the header removal won't make the build fail, because it'll be picked up by the last empty target defined for each header. thanks, jirka Cc: Kai Germaschewski --- Jiri Olsa (7): tools build: Add Makefile.include tools build: Add test for missing include tools build: Add fixdep dependency helper tools build: Move dependency copy into function tools build: Make fixdep helper part of the build process perf tools: Rename single_dep target to prepare tools build: Build fixdep helper from perf and basic libs tools/build/Build | 1 + tools/build/Build.include | 17 +++++++++--- tools/build/Documentation/Build.txt | 52 +++++++++++++++++++++++++++--------- tools/build/Makefile | 43 ++++++++++++++++++++++++++++++ tools/build/Makefile.build | 7 +++++ tools/build/Makefile.include | 6 +++++ tools/build/fixdep.c | 168 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ tools/build/tests/ex/Build | 1 + tools/build/tests/ex/Makefile | 13 +++++---- tools/build/tests/ex/ex.c | 2 ++ tools/build/tests/ex/inc.c | 8 ++++++ tools/build/tests/run.sh | 27 +++++++++++++++++++ tools/lib/api/Makefile | 6 +++-- tools/lib/bpf/Makefile | 6 +++-- tools/lib/lockdep/Makefile | 6 +++-- tools/perf/Makefile.perf | 32 +++++++++++----------- 16 files changed, 352 insertions(+), 43 deletions(-) create mode 100644 tools/build/Build create mode 100644 tools/build/Makefile create mode 100644 tools/build/Makefile.include create mode 100644 tools/build/fixdep.c create mode 100644 tools/build/tests/ex/inc.c