blob: 27206e0c40341a5ff2810de3c0c5232dfd64cff3 [file] [log] [blame]
Joey Armstrong449ce7a2023-07-18 18:32:24 -04001# -*- makefile -*-
2# -----------------------------------------------------------------------
3# Copyright 2017-2023 Open Networking Foundation (ONF) and the ONF Contributors
4#
5# Licensed under the Apache License, Version 2.0 (the "License");
6# you may not use this file except in compliance with the License.
7# You may obtain a copy of the License at
8#
9# http://www.apache.org/licenses/LICENSE-2.0
10#
11# Unless required by applicable law or agreed to in writing, software
12# distributed under the License is distributed on an "AS IS" BASIS,
13# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
14# See the License for the specific language governing permissions and
15# limitations under the License.
16# -----------------------------------------------------------------------
17
18##-------------------##
19##---] GLOBALS [---##
20##-------------------##
21xargs-n1-local := $(subst -t,$(null),$(xargs-n1))# inhibit cmd display
22
23# Gather sources to check
24# TODO: implement deps, only check modified files
25make-check-find := find . -name 'vendor' -prune
26make-check-find += -o \( -iname makefile -o -name '*.mk' \)
27make-check-find += -type f -print0
28
29make-check := $(MAKE)
30
31make-check-args += --dry-run
32make-check-args += --keep-going
33make-check-args += --warn-undefined-variables
34make-check-args += --no-print-directory
35
36# Quiet internal undef vars
37make-check-args += DEBUG=
38
39##-------------------##
40##---] TARGETS [---##
41##-------------------##
42ifndef NO-LINT-MAKEFILE
43 lint : lint-make
44endif
45
46## -----------------------------------------------------------------------
47## Intent: Perform a lint check on makefile sources
48## -----------------------------------------------------------------------
49lint-make-ignore += JSON_FILES=
50lint-make-ignore += YAML_FILES=
51lint-make:
52 @echo
53 @echo "** -----------------------------------------------------------------------"
54 @echo "** Makefile syntax checking"
55 @echo "** -----------------------------------------------------------------------"
56 $(HIDE)$(env-clean) $(make-check-find) \
57 | $(xargs-n1-local) $(make-check) $(make-check-args) $(lint-make-ignore)
58
59## -----------------------------------------------------------------------
60## Intent: Display command help
61## -----------------------------------------------------------------------
62help-summary ::
63 @echo ' lint-make Syntax check [Mm]akefile and *.mk'
64
65# [EOF]