blob: 27206e0c40341a5ff2810de3c0c5232dfd64cff3 [file] [log] [blame]
Joey Armstrong695ba5c2023-01-20 11:17:49 -05001# -*- makefile -*-
2# -----------------------------------------------------------------------
Joey Armstrong99a72d02023-06-09 10:26:42 -04003# 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.
Joey Armstrong695ba5c2023-01-20 11:17:49 -050016# -----------------------------------------------------------------------
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
Joey Armstrong99a72d02023-06-09 10:26:42 -040029make-check := $(MAKE)
30
Joey Armstrong695ba5c2023-01-20 11:17:49 -050031make-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## -----------------------------------------------------------------------
Joey Armstrong99a72d02023-06-09 10:26:42 -040047## Intent: Perform a lint check on makefile sources
Joey Armstrong695ba5c2023-01-20 11:17:49 -050048## -----------------------------------------------------------------------
Joey Armstrong99a72d02023-06-09 10:26:42 -040049lint-make-ignore += JSON_FILES=
50lint-make-ignore += YAML_FILES=
Joey Armstrong695ba5c2023-01-20 11:17:49 -050051lint-make:
Joey Armstrong99a72d02023-06-09 10:26:42 -040052 @echo
53 @echo "** -----------------------------------------------------------------------"
54 @echo "** Makefile syntax checking"
55 @echo "** -----------------------------------------------------------------------"
Joey Armstrong695ba5c2023-01-20 11:17:49 -050056 $(HIDE)$(env-clean) $(make-check-find) \
Joey Armstrong99a72d02023-06-09 10:26:42 -040057 | $(xargs-n1-local) $(make-check) $(make-check-args) $(lint-make-ignore)
Joey Armstrong695ba5c2023-01-20 11:17:49 -050058
59## -----------------------------------------------------------------------
Joey Armstrong99a72d02023-06-09 10:26:42 -040060## Intent: Display command help
Joey Armstrong695ba5c2023-01-20 11:17:49 -050061## -----------------------------------------------------------------------
Joey Armstrong99a72d02023-06-09 10:26:42 -040062help-summary ::
63 @echo ' lint-make Syntax check [Mm]akefile and *.mk'
Joey Armstrong695ba5c2023-01-20 11:17:49 -050064
65# [EOF]