Merge bc6df812a1 ("fixdep: parse Makefile more correctly to handle comments etc.") into android-mainline
Steps on the way to 6.3-rc1 Change-Id: If13e9c1a1549a6129c23f71f75c61e737c43851f Signed-off-by: Greg Kroah-Hartman <gregkh@google.com>
This commit is contained in:
@@ -1907,6 +1907,12 @@ rust-analyzer:
|
||||
# Misc
|
||||
# ---------------------------------------------------------------------------
|
||||
|
||||
PHONY += misc-check
|
||||
misc-check:
|
||||
$(Q)$(srctree)/scripts/misc-check
|
||||
|
||||
all: misc-check
|
||||
|
||||
PHONY += scripts_gdb
|
||||
scripts_gdb: prepare0
|
||||
$(Q)$(MAKE) $(build)=scripts/gdb
|
||||
|
||||
+5
-6
@@ -332,10 +332,9 @@ $(obj)/exports_kernel_generated.h: $(obj)/kernel.o FORCE
|
||||
quiet_cmd_rustc_procmacro = $(RUSTC_OR_CLIPPY_QUIET) P $@
|
||||
cmd_rustc_procmacro = \
|
||||
$(RUSTC_OR_CLIPPY) $(rust_common_flags) \
|
||||
--emit=dep-info,link --extern proc_macro \
|
||||
--crate-type proc-macro --out-dir $(objtree)/$(obj) \
|
||||
--emit=dep-info=$(depfile) --emit=link=$@ --extern proc_macro \
|
||||
--crate-type proc-macro \
|
||||
--crate-name $(patsubst lib%.so,%,$(notdir $@)) $<; \
|
||||
mv $(objtree)/$(obj)/$(patsubst lib%.so,%,$(notdir $@)).d $(depfile); \
|
||||
sed -i '/^\#/d' $(depfile)
|
||||
|
||||
# Procedural macros can only be used with the `rustc` that compiled it.
|
||||
@@ -349,10 +348,10 @@ quiet_cmd_rustc_library = $(if $(skip_clippy),RUSTC,$(RUSTC_OR_CLIPPY_QUIET)) L
|
||||
OBJTREE=$(abspath $(objtree)) \
|
||||
$(if $(skip_clippy),$(RUSTC),$(RUSTC_OR_CLIPPY)) \
|
||||
$(filter-out $(skip_flags),$(rust_flags) $(rustc_target_flags)) \
|
||||
--emit=dep-info,obj,metadata --crate-type rlib \
|
||||
--out-dir $(objtree)/$(obj) -L$(objtree)/$(obj) \
|
||||
--emit=dep-info=$(depfile) --emit=obj=$@ \
|
||||
--emit=metadata=$(dir $@)$(patsubst %.o,lib%.rmeta,$(notdir $@)) \
|
||||
--crate-type rlib -L$(objtree)/$(obj) \
|
||||
--crate-name $(patsubst %.o,%,$(notdir $@)) $<; \
|
||||
mv $(objtree)/$(obj)/$(patsubst %.o,%,$(notdir $@)).d $(depfile); \
|
||||
sed -i '/^\#/d' $(depfile) \
|
||||
$(if $(rustc_objcopy),;$(OBJCOPY) $(rustc_objcopy) $@)
|
||||
|
||||
|
||||
+10
-4
@@ -170,10 +170,14 @@ cmd = @$(if $(cmd_$(1)),set -e; $($(quiet)log_print) $(delete-on-interrupt) $(cm
|
||||
ifneq ($(KBUILD_NOCMDDEP),1)
|
||||
# Check if both commands are the same including their order. Result is empty
|
||||
# string if equal. User may override this check using make KBUILD_NOCMDDEP=1
|
||||
cmd-check = $(filter-out $(subst $(space),$(space_escape),$(strip $(cmd_$@))), \
|
||||
# If the target does not exist, the *.cmd file should not be included so
|
||||
# $(savedcmd_$@) gets empty. Then, target will be built even if $(newer-prereqs)
|
||||
# happens to become empty.
|
||||
cmd-check = $(filter-out $(subst $(space),$(space_escape),$(strip $(savedcmd_$@))), \
|
||||
$(subst $(space),$(space_escape),$(strip $(cmd_$1))))
|
||||
else
|
||||
cmd-check = $(if $(strip $(cmd_$@)),,1)
|
||||
# We still need to detect missing targets.
|
||||
cmd-check = $(if $(strip $(savedcmd_$@)),,1)
|
||||
endif
|
||||
|
||||
# Replace >$< with >$$< to preserve $ when reloading the .cmd file
|
||||
@@ -186,6 +190,8 @@ make-cmd = $(call escsq,$(subst $(pound),$$(pound),$(subst $$,$$$$,$(cmd_$(1))))
|
||||
|
||||
# Find any prerequisites that are newer than target or that do not exist.
|
||||
# PHONY targets skipped in both cases.
|
||||
# If there is no prerequisite other than phony targets, $(newer-prereqs) becomes
|
||||
# empty even if the target does not exist. cmd-check saves this corner case.
|
||||
newer-prereqs = $(filter-out $(PHONY),$?)
|
||||
|
||||
# It is a typical mistake to forget the FORCE prerequisite. Check it here so
|
||||
@@ -199,7 +205,7 @@ if_changed = $(if $(if-changed-cond),$(cmd_and_savecmd),@:)
|
||||
|
||||
cmd_and_savecmd = \
|
||||
$(cmd); \
|
||||
printf '%s\n' 'cmd_$@ := $(make-cmd)' > $(dot-target).cmd
|
||||
printf '%s\n' 'savedcmd_$@ := $(make-cmd)' > $(dot-target).cmd
|
||||
|
||||
# Execute the command and also postprocess generated .d dependencies file.
|
||||
if_changed_dep = $(if $(if-changed-cond),$(cmd_and_fixdep),@:)
|
||||
@@ -239,7 +245,7 @@ _why = \
|
||||
$(if $(wildcard $@), \
|
||||
$(if $(newer-prereqs),- due to: $(newer-prereqs), \
|
||||
$(if $(cmd-check), \
|
||||
$(if $(cmd_$@),- due to command line change, \
|
||||
$(if $(savedcmd_$@),- due to command line change, \
|
||||
$(if $(filter $@, $(targets)), \
|
||||
- due to missing .cmd file, \
|
||||
- due to $(notdir $@) not in $$(targets) \
|
||||
|
||||
@@ -285,11 +285,11 @@ rust_common_cmd = \
|
||||
-Zcrate-attr=no_std \
|
||||
-Zcrate-attr='feature($(rust_allowed_features))' \
|
||||
--extern alloc --extern kernel \
|
||||
--crate-type rlib --out-dir $(obj) -L $(objtree)/rust/ \
|
||||
--crate-name $(basename $(notdir $@))
|
||||
--crate-type rlib -L $(objtree)/rust/ \
|
||||
--crate-name $(basename $(notdir $@)) \
|
||||
--emit=dep-info=$(depfile)
|
||||
|
||||
rust_handle_depfile = \
|
||||
mv $(obj)/$(basename $(notdir $@)).d $(depfile); \
|
||||
sed -i '/^\#/d' $(depfile)
|
||||
|
||||
# `--emit=obj`, `--emit=asm` and `--emit=llvm-ir` imply a single codegen unit
|
||||
@@ -302,7 +302,7 @@ rust_handle_depfile = \
|
||||
|
||||
quiet_cmd_rustc_o_rs = $(RUSTC_OR_CLIPPY_QUIET) $(quiet_modtag) $@
|
||||
cmd_rustc_o_rs = \
|
||||
$(rust_common_cmd) --emit=dep-info,obj $<; \
|
||||
$(rust_common_cmd) --emit=obj=$@ $<; \
|
||||
$(rust_handle_depfile)
|
||||
|
||||
$(obj)/%.o: $(src)/%.rs FORCE
|
||||
@@ -310,7 +310,7 @@ $(obj)/%.o: $(src)/%.rs FORCE
|
||||
|
||||
quiet_cmd_rustc_rsi_rs = $(RUSTC_OR_CLIPPY_QUIET) $(quiet_modtag) $@
|
||||
cmd_rustc_rsi_rs = \
|
||||
$(rust_common_cmd) --emit=dep-info -Zunpretty=expanded $< >$@; \
|
||||
$(rust_common_cmd) -Zunpretty=expanded $< >$@; \
|
||||
command -v $(RUSTFMT) >/dev/null && $(RUSTFMT) $@; \
|
||||
$(rust_handle_depfile)
|
||||
|
||||
@@ -319,7 +319,7 @@ $(obj)/%.rsi: $(src)/%.rs FORCE
|
||||
|
||||
quiet_cmd_rustc_s_rs = $(RUSTC_OR_CLIPPY_QUIET) $(quiet_modtag) $@
|
||||
cmd_rustc_s_rs = \
|
||||
$(rust_common_cmd) --emit=dep-info,asm $<; \
|
||||
$(rust_common_cmd) --emit=asm=$@ $<; \
|
||||
$(rust_handle_depfile)
|
||||
|
||||
$(obj)/%.s: $(src)/%.rs FORCE
|
||||
@@ -327,7 +327,7 @@ $(obj)/%.s: $(src)/%.rs FORCE
|
||||
|
||||
quiet_cmd_rustc_ll_rs = $(RUSTC_OR_CLIPPY_QUIET) $(quiet_modtag) $@
|
||||
cmd_rustc_ll_rs = \
|
||||
$(rust_common_cmd) --emit=dep-info,llvm-ir $<; \
|
||||
$(rust_common_cmd) --emit=llvm-ir=$@ $<; \
|
||||
$(rust_handle_depfile)
|
||||
|
||||
$(obj)/%.ll: $(src)/%.rs FORCE
|
||||
|
||||
+10
-13
@@ -80,25 +80,24 @@ host-rust := $(addprefix $(obj)/,$(host-rust))
|
||||
#####
|
||||
# Handle options to gcc. Support building with separate output directory
|
||||
|
||||
_hostc_flags = $(KBUILD_HOSTCFLAGS) $(HOST_EXTRACFLAGS) \
|
||||
hostc_flags = -Wp,-MMD,$(depfile) \
|
||||
$(KBUILD_HOSTCFLAGS) $(HOST_EXTRACFLAGS) \
|
||||
$(HOSTCFLAGS_$(target-stem).o)
|
||||
_hostcxx_flags = $(KBUILD_HOSTCXXFLAGS) $(HOST_EXTRACXXFLAGS) \
|
||||
hostcxx_flags = -Wp,-MMD,$(depfile) \
|
||||
$(KBUILD_HOSTCXXFLAGS) $(HOST_EXTRACXXFLAGS) \
|
||||
$(HOSTCXXFLAGS_$(target-stem).o)
|
||||
_hostrust_flags = $(KBUILD_HOSTRUSTFLAGS) $(HOST_EXTRARUSTFLAGS) \
|
||||
$(HOSTRUSTFLAGS_$(target-stem))
|
||||
hostrust_flags = --emit=dep-info=$(depfile) \
|
||||
$(KBUILD_HOSTRUSTFLAGS) $(HOST_EXTRARUSTFLAGS) \
|
||||
$(HOSTRUSTFLAGS_$(target-stem))
|
||||
|
||||
# $(objtree)/$(obj) for including generated headers from checkin source files
|
||||
ifeq ($(KBUILD_EXTMOD),)
|
||||
ifdef building_out_of_srctree
|
||||
_hostc_flags += -I $(objtree)/$(obj)
|
||||
_hostcxx_flags += -I $(objtree)/$(obj)
|
||||
hostc_flags += -I $(objtree)/$(obj)
|
||||
hostcxx_flags += -I $(objtree)/$(obj)
|
||||
endif
|
||||
endif
|
||||
|
||||
hostc_flags = -Wp,-MMD,$(depfile) $(_hostc_flags)
|
||||
hostcxx_flags = -Wp,-MMD,$(depfile) $(_hostcxx_flags)
|
||||
hostrust_flags = $(_hostrust_flags)
|
||||
|
||||
#####
|
||||
# Compile programs on the host
|
||||
|
||||
@@ -149,9 +148,7 @@ $(host-cxxobjs): $(obj)/%.o: $(src)/%.cc FORCE
|
||||
# host-rust -> Executable
|
||||
quiet_cmd_host-rust = HOSTRUSTC $@
|
||||
cmd_host-rust = \
|
||||
$(HOSTRUSTC) $(hostrust_flags) --emit=dep-info,link \
|
||||
--out-dir=$(obj)/ $<; \
|
||||
mv $(obj)/$(target-stem).d $(depfile); \
|
||||
$(HOSTRUSTC) $(hostrust_flags) --emit=link=$@ $<; \
|
||||
sed -i '/^\#/d' $(depfile)
|
||||
$(host-rust): $(obj)/%: $(src)/%.rs FORCE
|
||||
$(call if_changed_dep,host-rust)
|
||||
|
||||
+15
-30
@@ -370,40 +370,25 @@ DTC_FLAGS += $(DTC_FLAGS_$(basetarget))
|
||||
DTC_FLAGS += $(if $(filter $(patsubst $(obj)/%,%,$@), $(base-dtb-y)), -@)
|
||||
|
||||
# Generate an assembly file to wrap the output of the device tree compiler
|
||||
quiet_cmd_dt_S_dtb= DTBS $@
|
||||
cmd_dt_S_dtb= \
|
||||
{ \
|
||||
echo '\#include <asm-generic/vmlinux.lds.h>'; \
|
||||
echo '.section .dtb.init.rodata,"a"'; \
|
||||
echo '.balign STRUCT_ALIGNMENT'; \
|
||||
echo '.global __dtb_$(subst -,_,$(*F))_begin'; \
|
||||
echo '__dtb_$(subst -,_,$(*F))_begin:'; \
|
||||
echo '.incbin "$<" '; \
|
||||
echo '__dtb_$(subst -,_,$(*F))_end:'; \
|
||||
echo '.global __dtb_$(subst -,_,$(*F))_end'; \
|
||||
echo '.balign STRUCT_ALIGNMENT'; \
|
||||
} > $@
|
||||
quiet_cmd_wrap_S_dtb = WRAP $@
|
||||
cmd_wrap_S_dtb = { \
|
||||
symbase=__$(patsubst .%,%,$(suffix $<))_$(subst -,_,$(notdir $*)); \
|
||||
echo '\#include <asm-generic/vmlinux.lds.h>'; \
|
||||
echo '.section .dtb.init.rodata,"a"'; \
|
||||
echo '.balign STRUCT_ALIGNMENT'; \
|
||||
echo ".global $${symbase}_begin"; \
|
||||
echo "$${symbase}_begin:"; \
|
||||
echo '.incbin "$<" '; \
|
||||
echo ".global $${symbase}_end"; \
|
||||
echo "$${symbase}_end:"; \
|
||||
echo '.balign STRUCT_ALIGNMENT'; \
|
||||
} > $@
|
||||
|
||||
$(obj)/%.dtb.S: $(obj)/%.dtb FORCE
|
||||
$(call if_changed,dt_S_dtb)
|
||||
|
||||
# Generate an assembly file to wrap the output of the device tree compiler
|
||||
quiet_cmd_dt_S_dtbo= DTBOS $@
|
||||
cmd_dt_S_dtbo= \
|
||||
{ \
|
||||
echo '\#include <asm-generic/vmlinux.lds.h>'; \
|
||||
echo '.section .dtb.init.rodata,"a"'; \
|
||||
echo '.balign STRUCT_ALIGNMENT'; \
|
||||
echo '.global __dtbo_$(subst -,_,$(*F))_begin'; \
|
||||
echo '__dtbo_$(subst -,_,$(*F))_begin:'; \
|
||||
echo '.incbin "$<" '; \
|
||||
echo '__dtbo_$(subst -,_,$(*F))_end:'; \
|
||||
echo '.global __dtbo_$(subst -,_,$(*F))_end'; \
|
||||
echo '.balign STRUCT_ALIGNMENT'; \
|
||||
} > $@
|
||||
$(call if_changed,wrap_S_dtb)
|
||||
|
||||
$(obj)/%.dtbo.S: $(obj)/%.dtbo FORCE
|
||||
$(call if_changed,dt_S_dtbo)
|
||||
$(call if_changed,wrap_S_dtb)
|
||||
|
||||
quiet_cmd_dtc = DTC $@
|
||||
cmd_dtc = $(HOSTCC) -E $(dtc_cpp_flags) -x assembler-with-cpp -o $(dtc-tmp) $< ; \
|
||||
|
||||
@@ -56,7 +56,7 @@ newer_prereqs_except = $(filter-out $(PHONY) $(1),$?)
|
||||
# Same as if_changed, but allows to exclude specified extra dependencies
|
||||
if_changed_except = $(if $(call newer_prereqs_except,$(2))$(cmd-check), \
|
||||
$(cmd); \
|
||||
printf '%s\n' 'cmd_$@ := $(make-cmd)' > $(dot-target).cmd, @:)
|
||||
printf '%s\n' 'savedcmd_$@ := $(make-cmd)' > $(dot-target).cmd, @:)
|
||||
|
||||
# Re-generate module BTFs if either module's .ko or vmlinux changed
|
||||
%.ko: %.o %.mod.o scripts/module.lds $(and $(CONFIG_DEBUG_INFO_BTF_MODULES),$(KBUILD_BUILTIN),$(mixed-build-prefix)vmlinux) FORCE
|
||||
|
||||
+123
-58
@@ -70,7 +70,7 @@
|
||||
*
|
||||
* It first generates a line
|
||||
*
|
||||
* cmd_<target> = <cmdline>
|
||||
* savedcmd_<target> = <cmdline>
|
||||
*
|
||||
* and then basically copies the .<target>.d file to stdout, in the
|
||||
* process filtering out the dependency on autoconf.h and adding
|
||||
@@ -94,6 +94,7 @@
|
||||
#include <unistd.h>
|
||||
#include <fcntl.h>
|
||||
#include <string.h>
|
||||
#include <stdbool.h>
|
||||
#include <stdlib.h>
|
||||
#include <stdio.h>
|
||||
#include <ctype.h>
|
||||
@@ -251,75 +252,139 @@ static int is_ignored_file(const char *s, int len)
|
||||
* assignments are parsed not only by make, but also by the rather simple
|
||||
* parser in scripts/mod/sumversion.c.
|
||||
*/
|
||||
static void parse_dep_file(char *m, const char *target)
|
||||
static void parse_dep_file(char *p, const char *target)
|
||||
{
|
||||
char *p;
|
||||
int is_last, is_target;
|
||||
int saw_any_target = 0;
|
||||
int is_first_dep = 0;
|
||||
void *buf;
|
||||
|
||||
while (1) {
|
||||
/* Skip any "white space" */
|
||||
while (*m == ' ' || *m == '\\' || *m == '\n')
|
||||
m++;
|
||||
|
||||
if (!*m)
|
||||
break;
|
||||
|
||||
/* Find next "white space" */
|
||||
p = m;
|
||||
while (*p && *p != ' ' && *p != '\\' && *p != '\n')
|
||||
p++;
|
||||
is_last = (*p == '\0');
|
||||
/* Is the token we found a target name? */
|
||||
is_target = (*(p-1) == ':');
|
||||
/* Don't write any target names into the dependency file */
|
||||
if (is_target) {
|
||||
/* The /next/ file is the first dependency */
|
||||
is_first_dep = 1;
|
||||
} else if (!is_ignored_file(m, p - m)) {
|
||||
*p = '\0';
|
||||
bool saw_any_target = false;
|
||||
bool is_target = true;
|
||||
bool is_source = false;
|
||||
bool need_parse;
|
||||
char *q, saved_c;
|
||||
|
||||
while (*p) {
|
||||
/* handle some special characters first. */
|
||||
switch (*p) {
|
||||
case '#':
|
||||
/*
|
||||
* Do not list the source file as dependency, so that
|
||||
* kbuild is not confused if a .c file is rewritten
|
||||
* into .S or vice versa. Storing it in source_* is
|
||||
* needed for modpost to compute srcversions.
|
||||
* skip comments.
|
||||
* rustc may emit comments to dep-info.
|
||||
*/
|
||||
if (is_first_dep) {
|
||||
p++;
|
||||
while (*p != '\0' && *p != '\n') {
|
||||
/*
|
||||
* If processing the concatenation of multiple
|
||||
* dependency files, only process the first
|
||||
* target name, which will be the original
|
||||
* source name, and ignore any other target
|
||||
* names, which will be intermediate temporary
|
||||
* files.
|
||||
* escaped newlines continue the comment across
|
||||
* multiple lines.
|
||||
*/
|
||||
if (!saw_any_target) {
|
||||
saw_any_target = 1;
|
||||
printf("source_%s := %s\n\n",
|
||||
target, m);
|
||||
printf("deps_%s := \\\n", target);
|
||||
if (*p == '\\')
|
||||
p++;
|
||||
p++;
|
||||
}
|
||||
continue;
|
||||
case ' ':
|
||||
case '\t':
|
||||
/* skip whitespaces */
|
||||
p++;
|
||||
continue;
|
||||
case '\\':
|
||||
/*
|
||||
* backslash/newline combinations continue the
|
||||
* statement. Skip it just like a whitespace.
|
||||
*/
|
||||
if (*(p + 1) == '\n') {
|
||||
p += 2;
|
||||
continue;
|
||||
}
|
||||
break;
|
||||
case '\n':
|
||||
/*
|
||||
* Makefiles use a line-based syntax, where the newline
|
||||
* is the end of a statement. After seeing a newline,
|
||||
* we expect the next token is a target.
|
||||
*/
|
||||
p++;
|
||||
is_target = true;
|
||||
continue;
|
||||
case ':':
|
||||
/*
|
||||
* assume the first dependency after a colon as the
|
||||
* source file.
|
||||
*/
|
||||
p++;
|
||||
is_target = false;
|
||||
is_source = true;
|
||||
continue;
|
||||
}
|
||||
|
||||
/* find the end of the token */
|
||||
q = p;
|
||||
while (*q != ' ' && *q != '\t' && *q != '\n' && *q != '#' && *q != ':') {
|
||||
if (*q == '\\') {
|
||||
/*
|
||||
* backslash/newline combinations work like as
|
||||
* a whitespace, so this is the end of token.
|
||||
*/
|
||||
if (*(q + 1) == '\n')
|
||||
break;
|
||||
|
||||
/* escaped special characters */
|
||||
if (*(q + 1) == '#' || *(q + 1) == ':') {
|
||||
memmove(p + 1, p, q - p);
|
||||
p++;
|
||||
}
|
||||
is_first_dep = 0;
|
||||
} else {
|
||||
printf(" %s \\\n", m);
|
||||
|
||||
q++;
|
||||
}
|
||||
|
||||
buf = read_file(m);
|
||||
if (*q == '\0')
|
||||
break;
|
||||
q++;
|
||||
}
|
||||
|
||||
/* Just discard the target */
|
||||
if (is_target) {
|
||||
p = q;
|
||||
continue;
|
||||
}
|
||||
|
||||
saved_c = *q;
|
||||
*q = '\0';
|
||||
need_parse = false;
|
||||
|
||||
/*
|
||||
* Do not list the source file as dependency, so that kbuild is
|
||||
* not confused if a .c file is rewritten into .S or vice versa.
|
||||
* Storing it in source_* is needed for modpost to compute
|
||||
* srcversions.
|
||||
*/
|
||||
if (is_source) {
|
||||
/*
|
||||
* The DT build rule concatenates multiple dep files.
|
||||
* When processing them, only process the first source
|
||||
* name, which will be the original one, and ignore any
|
||||
* other source names, which will be intermediate
|
||||
* temporary files.
|
||||
*/
|
||||
if (!saw_any_target) {
|
||||
saw_any_target = true;
|
||||
printf("source_%s := %s\n\n", target, p);
|
||||
printf("deps_%s := \\\n", target);
|
||||
need_parse = true;
|
||||
}
|
||||
} else if (!is_ignored_file(p, q - p)) {
|
||||
printf(" %s \\\n", p);
|
||||
need_parse = true;
|
||||
}
|
||||
|
||||
if (need_parse) {
|
||||
void *buf;
|
||||
|
||||
buf = read_file(p);
|
||||
parse_config_file(buf);
|
||||
free(buf);
|
||||
}
|
||||
|
||||
if (is_last)
|
||||
break;
|
||||
|
||||
/*
|
||||
* Start searching for next token immediately after the first
|
||||
* "whitespace" character that follows this token.
|
||||
*/
|
||||
m = p + 1;
|
||||
is_source = false;
|
||||
*q = saved_c;
|
||||
p = q;
|
||||
}
|
||||
|
||||
if (!saw_any_target) {
|
||||
@@ -343,7 +408,7 @@ int main(int argc, char *argv[])
|
||||
target = argv[2];
|
||||
cmdline = argv[3];
|
||||
|
||||
printf("cmd_%s := %s\n\n", target, cmdline);
|
||||
printf("savedcmd_%s := %s\n\n", target, cmdline);
|
||||
|
||||
buf = read_file(depfile);
|
||||
parse_dep_file(buf, target);
|
||||
|
||||
@@ -19,7 +19,7 @@ _DEFAULT_OUTPUT = 'compile_commands.json'
|
||||
_DEFAULT_LOG_LEVEL = 'WARNING'
|
||||
|
||||
_FILENAME_PATTERN = r'^\..*\.cmd$'
|
||||
_LINE_PATTERN = r'^cmd_[^ ]*\.o := (.* )([^ ]*\.c) *(;|$)'
|
||||
_LINE_PATTERN = r'^savedcmd_[^ ]*\.o := (.* )([^ ]*\.c) *(;|$)'
|
||||
_VALID_LOG_LEVELS = ['DEBUG', 'INFO', 'WARNING', 'ERROR', 'CRITICAL']
|
||||
# The tools/ directory adopts a different build system, and produces .cmd
|
||||
# files in a different format. Do not support it.
|
||||
|
||||
Executable
+19
@@ -0,0 +1,19 @@
|
||||
#!/bin/sh
|
||||
# SPDX-License-Identifier: GPL-2.0-only
|
||||
|
||||
set -e
|
||||
|
||||
# Detect files that are tracked but ignored by git. This is checked only when
|
||||
# ${KBUILD_EXTRA_WARN} contains 1, git is installed, and the source tree is
|
||||
# tracked by git.
|
||||
check_tracked_ignored_files () {
|
||||
case "${KBUILD_EXTRA_WARN}" in
|
||||
*1*) ;;
|
||||
*) return;;
|
||||
esac
|
||||
|
||||
git -C ${srctree:-.} ls-files -i -c --exclude-per-directory=.gitignore 2>/dev/null |
|
||||
sed 's/$/: warning: ignored by one of the .gitignore files/' >&2
|
||||
}
|
||||
|
||||
check_tracked_ignored_files
|
||||
Reference in New Issue
Block a user