Skip to content

Commit

Permalink
kbuild: check sha1sum just once for each atomic header
Browse files Browse the repository at this point in the history
It is unneeded to check the sha1sum every time.

Create the timestamp files to manage it.

Add '.' to clean-dirs because 'make clean' must visit ./Kbuild to
clean up the timestamp files.

Signed-off-by: Masahiro Yamada <[email protected]>
  • Loading branch information
masahir0y committed Sep 28, 2022
1 parent a3c4d4a commit b10fdee
Show file tree
Hide file tree
Showing 3 changed files with 25 additions and 43 deletions.
33 changes: 24 additions & 9 deletions Kbuild
Original file line number Diff line number Diff line change
Expand Up @@ -43,17 +43,32 @@ PHONY += missing-syscalls
missing-syscalls: scripts/checksyscalls.sh $(offsets-file)
$(call cmd,syscalls)

# Check atomic headers are up-to-date

quiet_cmd_atomics = CALL $<
cmd_atomics = $(CONFIG_SHELL) $<

PHONY += old-atomics
old-atomics: scripts/atomic/check-atomics.sh
$(call cmd,atomics)
# Check the manual modification of atomic headers

quiet_cmd_check_sha1 = CHKSHA1 $<
cmd_check_sha1 = \
if ! command -v sha1sum >/dev/null; then \
echo "warning: cannot check the header due to sha1sum missing"; \
exit 0; \
fi; \
if [ "$$(sed -n '$$s:// ::p' $<)" != \
"$$(sed '$$d' $< | sha1sum | sed 's/ .*//')" ]; then \
echo "error: $< has been modified." >&2; \
exit 1; \
fi; \
touch $@

atomic-checks += $(addprefix $(obj)/.checked-, \
atomic-arch-fallback.h \
atomic-instrumented.h \
atomic-long.h)

targets += $(atomic-checks)
$(atomic-checks): $(obj)/.checked-%: include/linux/atomic/% FORCE
$(call if_changed,check_sha1)

# A phony target that depends on all the preparation targets

PHONY += prepare
prepare: $(offsets-file) missing-syscalls old-atomics
prepare: $(offsets-file) missing-syscalls $(atomic-checks)
@:
2 changes: 1 addition & 1 deletion Makefile
Original file line number Diff line number Diff line change
Expand Up @@ -1110,7 +1110,7 @@ vmlinux-dirs := $(patsubst %/,%,$(filter %/, \
$(libs-y) $(libs-m)))

build-dirs := $(vmlinux-dirs)
clean-dirs := $(sort $(vmlinux-dirs) Documentation \
clean-dirs := $(sort $(vmlinux-dirs) Documentation . \
$(patsubst %/,%,$(filter %/, $(core-) \
$(drivers-) $(libs-))))

Expand Down
33 changes: 0 additions & 33 deletions scripts/atomic/check-atomics.sh

This file was deleted.

0 comments on commit b10fdee

Please sign in to comment.