2c3632d14f
Lots of code refactoring, simplification and cleanup. Lots of new unit-tests providing much higher code coverage. All courtesy of rillig at netbsd. Other significant changes: o new read-only variable .SHELL which provides the path of the shell used to run scripts (as defined by the .SHELL target). o variable parsing detects more errors. o new debug option -dl: LINT mode, does the equivalent of := for all variable assignments so that file and line number are reported for variable parse errors.
36 lines
1.0 KiB
Makefile
36 lines
1.0 KiB
Makefile
# $NetBSD: varmod-path.mk,v 1.3 2020/08/23 08:10:49 rillig Exp $
|
|
#
|
|
# Tests for the :P variable modifier, which looks up the path for a given
|
|
# target.
|
|
#
|
|
# The phony target does not have a corresponding path, therefore ... oops,
|
|
# as of 2020-08-23 it is nevertheless resolved to a path. This is probably
|
|
# unintended.
|
|
#
|
|
# The real target is located in a subdirectory, and its full path is returned.
|
|
# If it had been in the current directory, the difference between its path and
|
|
# its name would not be visible.
|
|
#
|
|
# The enoent target does not exist, therefore the target name is returned.
|
|
|
|
.MAIN: all
|
|
|
|
_!= rm -rf varmod-path.subdir
|
|
_!= mkdir varmod-path.subdir
|
|
_!= > varmod-path.subdir/varmod-path.phony
|
|
_!= > varmod-path.subdir/varmod-path.real
|
|
|
|
# To have an effect, this .PATH declaration must be after the directory is created.
|
|
.PATH: varmod-path.subdir
|
|
|
|
varmod-path.phony: .PHONY
|
|
varmod-path.real:
|
|
|
|
all: varmod-path.phony varmod-path.real
|
|
@echo ${varmod-path.phony:P}
|
|
@echo ${varmod-path.real:P}
|
|
@echo ${varmod-path.enoent:P}
|
|
|
|
.END:
|
|
@rm -rf varmod-path.subdir
|