blob: 6090a17206de83b576f2b64d51eef32c30c1eba9 [file] [log] [blame]
Joey Armstronga6890342023-06-01 17:07:51 -04001# -*- makefile -*-
2# -----------------------------------------------------------------------
Joey Armstronga3f9aca2024-02-11 11:58:11 -05003# Copyright 2022-2024 Open Networking Foundation (ONF) and the ONF Contributors
Joey Armstronga6890342023-06-01 17:07:51 -04004#
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#
Joey Armstrongb2b3b1e2023-06-09 12:24:40 -040017# SPDX-FileCopyrightText: 2022-2023 Open Networking Foundation (ONF) and the ONF Contributors
Joey Armstronga6890342023-06-01 17:07:51 -040018# SPDX-License-Identifier: Apache-2.0
19# -----------------------------------------------------------------------
20
21$(if $(DEBUG),$(warning ENTER))
22
23# usage: $(call if-not,false,5)
24if-not = $(info 1=$(1), 2=$(2), 3=$(3))\
25 $(if $(1),$(null),$(2))
26
Joey Armstronga3f9aca2024-02-11 11:58:11 -050027## -----------------------------------------------------------------------
28## Intent: Derive a filesystem path relative to the active makefile.
29## Primary use is loading adjacent tool config files.
30## Immediate evaluation (:=) needed to preserve path context.
31## Note: We could pass in var=MAKEFILE_LIST
32## -----------------------------------------------------------------------
33## Given:
34## scalar Filename to construct a path for
35## Return:
36## scalar Constructed path for the given filename
37## -----------------------------------------------------------------------
38## Usage:
39## groovy-check-conf := $(call path-by-makefile,.groovylintrc.json)
40## groovy-cmd = npm-groovy-lint --config "$(groovy-check-conf)"
41## -----------------------------------------------------------------------
42path-by-makefile = $(strip \
43 $(foreach filename,$(1),\
44 $(foreach makefile,$(lastword $(MAKEFILE_LIST)),\
45 $(foreach makedir,$(subst /include.mk,$(null),$(makefile)),\
46 $(makedir)/$(filename)\
47 )\
48 ))\
49)
50
Joey Armstronga6890342023-06-01 17:07:51 -040051$(if $(DEBUG),$(warning LEAVE))
52
53# [EOF]