Home | History | Annotate | Line # | Download | only in unit-tests
      1  1.1  rillig # $NetBSD: posix-varassign.mk,v 1.1 2025/04/13 09:29:33 rillig Exp $
      2  1.1  rillig #
      3  1.1  rillig # https://pubs.opengroup.org/onlinepubs/9799919799/utilities/make.html#tag_20_76_13_05
      4  1.1  rillig #
      5  1.1  rillig # Test that variable assignments work in the same way as in default mode.
      6  1.1  rillig #
      7  1.1  rillig # The assignment operators "::=" and ":::=" are intentionally not supported,
      8  1.1  rillig # as they would introduce the distinction between eagerly and lazily evaluated
      9  1.1  rillig # macros, in addition to the eagerly and lazily evaluated assignments, and
     10  1.1  rillig # this would add too much complexity to the user's mental model, for too
     11  1.1  rillig # little benefit.
     12  1.1  rillig 
     13  1.1  rillig .POSIX:
     14  1.1  rillig 
     15  1.1  rillig 
     16  1.1  rillig VAR=	value
     17  1.1  rillig .if ${VAR} != "value"
     18  1.1  rillig .  error
     19  1.1  rillig .endif
     20  1.1  rillig 
     21  1.1  rillig 
     22  1.1  rillig # Deviation from POSIX: The "::=" assignment operator is not supported,
     23  1.1  rillig # instead, the variable named "VAR:" is defined.
     24  1.1  rillig VAR=	before
     25  1.1  rillig VAR::=	posix-immediate-expansion
     26  1.1  rillig .if ${VAR} != "before"
     27  1.1  rillig .  error
     28  1.1  rillig .elif ${${:UVAR\:}} != "posix-immediate-expansion"
     29  1.1  rillig .  error
     30  1.1  rillig .endif
     31  1.1  rillig 
     32  1.1  rillig 
     33  1.1  rillig # Deviation from POSIX: The ":::=" assignment operator is not supported,
     34  1.1  rillig # instead, the variable named "VAR::" is defined.
     35  1.1  rillig VAR:::=	posix-delayed-expansion
     36  1.1  rillig .if ${VAR} != "before"
     37  1.1  rillig .  error
     38  1.1  rillig .elif ${${:UVAR\:\:}} != "posix-delayed-expansion"
     39  1.1  rillig .  error
     40  1.1  rillig .endif
     41  1.1  rillig 
     42  1.1  rillig 
     43  1.1  rillig VAR!=	echo from shell command
     44  1.1  rillig .if ${VAR} != "from shell command"
     45  1.1  rillig .  error
     46  1.1  rillig .endif
     47  1.1  rillig 
     48  1.1  rillig 
     49  1.1  rillig VAR=	value
     50  1.1  rillig VAR?=	fallback
     51  1.1  rillig .if ${VAR} != "value"
     52  1.1  rillig .  error
     53  1.1  rillig .endif
     54  1.1  rillig .undef VAR
     55  1.1  rillig VAR?=	fallback
     56  1.1  rillig .if ${VAR} != "fallback"
     57  1.1  rillig .  error
     58  1.1  rillig .endif
     59  1.1  rillig 
     60  1.1  rillig 
     61  1.1  rillig VAR=	value
     62  1.1  rillig VAR+=	appended
     63  1.1  rillig .if ${VAR} != "value appended"
     64  1.1  rillig .  error
     65  1.1  rillig .endif
     66  1.1  rillig 
     67  1.1  rillig 
     68  1.1  rillig # In POSIX mode, the ":=" assignment operator is available as well, even
     69  1.1  rillig # though it is not specified by POSIX, due to the differences in existing
     70  1.1  rillig # make implementations.
     71  1.1  rillig REF=	before
     72  1.1  rillig VAR:=	immediate ${REF}
     73  1.1  rillig REF=	after
     74  1.1  rillig .if ${VAR} != "immediate before"
     75  1.1  rillig .  error
     76  1.1  rillig .endif
     77  1.1  rillig 
     78  1.1  rillig 
     79  1.1  rillig all:
     80