blob: 91fd3d3398deedd4408150818720e868a2aee750 [file] [log] [blame]
Joey Armstrong3f575f72023-01-15 23:49:19 -05001# -*- makefile -*-
2# -----------------------------------------------------------------------
Joey Armstrong518f3572024-02-11 07:56:25 -05003# Copyright 2017-2024 Open Networking Foundation (ONF) and the ONF Contributors
Joey Armstrong068d6452023-02-01 11:09:18 -05004#
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 Armstrong3f575f72023-01-15 23:49:19 -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
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## -----------------------------------------------------------------------
Joey Armstrong068d6452023-02-01 11:09:18 -050047## Intent: Perform a lint check on makefile sources
Joey Armstrong3f575f72023-01-15 23:49:19 -050048## -----------------------------------------------------------------------
Joey Armstrong980e37f2023-02-28 18:57:41 -050049lint-make-ignore += JSON_FILES=
50lint-make-ignore += YAML_FILES=
Joey Armstrong3f575f72023-01-15 23:49:19 -050051lint-make:
Joey Armstrong980e37f2023-02-28 18:57:41 -050052 @echo
53 @echo "** -----------------------------------------------------------------------"
54 @echo "** Makefile syntax checking"
55 @echo "** -----------------------------------------------------------------------"
Joey Armstrong3f575f72023-01-15 23:49:19 -050056 $(HIDE)$(env-clean) $(make-check-find) \
Joey Armstrong980e37f2023-02-28 18:57:41 -050057 | $(xargs-n1-local) $(make-check) $(make-check-args) $(lint-make-ignore)
Joey Armstrong3f575f72023-01-15 23:49:19 -050058
59## -----------------------------------------------------------------------
Joey Armstrong068d6452023-02-01 11:09:18 -050060## Intent: Display command help
Joey Armstrong3f575f72023-01-15 23:49:19 -050061## -----------------------------------------------------------------------
Joey Armstrong068d6452023-02-01 11:09:18 -050062help-summary ::
63 @echo ' lint-make Syntax check [Mm]akefile and *.mk'
Joey Armstrong3f575f72023-01-15 23:49:19 -050064
65# [EOF]