1# $NetBSD: opt-debug-file.mk,v 1.4 2020/10/05 19:27:48 rillig Exp $ 2# 3# Tests for the -dF command line option, which redirects the debug log 4# to a file instead of writing it to stderr. 5 6# Enable debug logging for variable assignments and evaluation (-dv) 7# and redirect the debug logging to the given file. 8.MAKEFLAGS: -dvFopt-debug-file.debuglog 9 10# This output goes to the debug log file. 11VAR= value ${:Uexpanded} 12 13# Hide the logging output for the remaining actions. 14# As of 2020-10-03, it is not possible to disable debug logging again. 15.MAKEFLAGS: -dF/dev/null 16 17# Make sure that the debug logging file contains some logging. 18DEBUG_OUTPUT:= ${:!cat opt-debug-file.debuglog!} 19# Grmbl. Because of the := operator in the above line, the variable 20# value contains ${:Uexpanded}. This variable expression is expanded 21# upon further processing. Therefore, don't read from untrusted input. 22#.MAKEFLAGS: -dc -dFstderr 23.if !${DEBUG_OUTPUT:tW:M*VAR = value expanded*} 24. error ${DEBUG_OUTPUT} 25.endif 26 27# To get the unexpanded text that was actually written to the debug log 28# file, the content of that log file must not be stored in a variable. 29# XXX: In the :M modifier, a dollar is escaped as '$$', not '\$'. 30.if !${:!cat opt-debug-file.debuglog!:tW:M*VAR = value $${:Uexpanded}*} 31. error 32.endif 33 34_!= rm opt-debug-file.debuglog 35 36all: 37 @:; 38