1# $NetBSD: cond-token-number.mk,v 1.9 2023/06/01 20:56:35 rillig Exp $ 2# 3# Tests for number tokens in .if conditions. 4# 5# TODO: Add introduction. 6 7.if 0 8. error 9.endif 10 11# Even though -0 is a number and would be accepted by strtod, it is not 12# accepted by the condition parser. 13# 14# See the ch_isdigit call in CondParser_String. 15# expect+1: Malformed conditional (-0) 16.if -0 17. error 18.else 19. error 20.endif 21 22# Even though +0 is a number and would be accepted by strtod, it is not 23# accepted by the condition parser. 24# 25# See the ch_isdigit call in CondParser_String. 26# expect+1: Malformed conditional (+0) 27.if +0 28. error 29.else 30. error 31.endif 32 33# Even though -1 is a number and would be accepted by strtod, it is not 34# accepted by the condition parser. 35# 36# See the ch_isdigit call in CondParser_String. 37# expect+1: Malformed conditional (!-1) 38.if !-1 39. error 40.else 41. error 42.endif 43 44# Even though +1 is a number and would be accepted by strtod, it is not 45# accepted by the condition parser. 46# 47# See the ch_isdigit call in CondParser_String. 48# expect+1: Malformed conditional (!+1) 49.if !+1 50. error 51.else 52. error 53.endif 54 55# When the number comes from a variable expression though, it may be signed. 56# XXX: This is inconsistent. 57.if ${:U+0} 58. error 59.endif 60 61# When the number comes from a variable expression though, it may be signed. 62# XXX: This is inconsistent. 63.if !${:U+1} 64. error 65.endif 66 67# Hexadecimal numbers are accepted. 68.if 0x0 69. error 70.endif 71.if 0x1 72.else 73. error 74.endif 75 76# This is not a hexadecimal number, even though it has an x. It is 77# interpreted as a string instead. In a plain '.if', such a token evaluates 78# to true if it is non-empty. In other '.if' directives, such a token is 79# evaluated by either FuncDefined or FuncMake. 80.if 3x4 81.else 82. error 83.endif 84 85# Make can do radix conversion from hex. 86HEX= dead 87.if 0x${HEX} == 57005 88.else 89. error 90.endif 91 92# Very small numbers round to 0. 93.if 12345e-400 94. error 95.endif 96.if 12345e-200 97.else 98. error 99.endif 100 101# Very large numbers round up to infinity on IEEE 754 implementations, or to 102# the largest representable number (VAX); in particular, make does not fall 103# back to checking whether a variable of that name is defined. 104.if 12345e400 105.else 106. error 107.endif 108 109all: 110