### SPAR <http://www.cpan.org/scripts/>
### 381 644 1172615881 1181421762 Makeppfile
#
# Test the use of conditionals.
#
# This little (non-)rule comes from 2004_12_16_endif.test. Put it first,
# so in error makepp would pick it up as the default:
ifdef FOO
$(phony foo):
perl -e 1
endif
XYZ = abc
ifeq($(XYZ),abc) # comment with )
DEF := de
endif
ifeq('(XYZ)',"("XYZ\))
DEF := $(DEF)f
endif
# Test that it's enough for one of these to be defined.
ifdef GHI DEF UVW
# Test that none of these may be defined.
ifndef ABC XYZ # just a comment
XYZ := Abc
endif
endif
# Test that none of these may be the current system.
ifnsys bathtub shower basin
# Test that it's enough for one of these to the current system.
ifsys sparc power* i[3-6]86 *[a-zA-Z0-9]*
ifneq "$(DEF)" 'dsdffasd' # Another form of ifeq
GHI := ghi
else
GHI := GHI
endif
endif
endif
ifdef ABC PDQ
JKL := JKL
else
JKL := jkl
endif
ifperl $JKL eq 'jkl'
P1 := P1
else
P1 := p1
endif
ifmakeperl '$(JKL)' ne 'jkl'
MP1 := MP1
else
MP1 := mp1
endif
XX1 := $(if ,xx1,XX1)
XX2 := $(if 0,xx2,XX2)
XX3 := $(iftrue 0,xx3,XX3)
XX4 := $(iftrue zero,xx4,XX4)
ifdef FOO
# Check that the "else" in the perl_begin block doesn't match up with ifdef
perl_begin
if(1) {
print "OK\n";
}
else
{
print "NOK\n";
}
perl_end
endif # FOO
$(phony all): testfile testfile2 testfile3 phonytarget testfile5 x ifeq
testfile:
ifeq ($(XYZ),abc) # Here is a comment that should be ignored.
&echo abc -o $@
else
&echo ABC -o $@
endif
ifneq $(JKL) 'jkl'
&echo JKL -o >>$@
else
&echo jkl -o>>$@
endif
&echo $(DEF) -o>>$@
&echo $(GHI) -o>>$@
&echo $(JKL) -o>>$@
&echo $(P1) -o>>$@
&echo $(MP1) -o>>$@
&echo $(XX1) -o>>$@
&echo $(XX2) -o>>$@
&echo $(XX3) -o>>$@
&echo $(XX4) -o>>$@
#
# Test some things relating to whitespace and if statements, which are often
# indented:
#
ifeq (,)
testfile2:
&echo $@ -o $@
&echo "This is another line." -o>>$@
ifeq(,)
testfile3: # Not part of testfile2's action.
&echo $@ -o $@
endif
$(phony phonytarget): testfile4
ifeq(,)
X=5 # This should not be part of phonytarget's action.
endif
testfile4:
&echo $@ $(X) -o $@
endif
# Test else within Perl blocks
ifeq "a"b, 'a'b
testfile5::
&echo before -o>>$@
perl {
if (1)
{ $a = 1 }
else
{ $a = 2 }
}
testfile5::
&echo after -o>>$@
else # this one is for real
testfile5::
&echo no -o >>$@
perl {{
if (1)
{ $a = 1 }
else
{ $a = 2 }
}}
testfile5::
&echo still not -o>>$@
endif
ifneq 'a', a
testfile5::
&echo no -o>>$@
perl_begin
if (1)
{ $a = 1 }
else
{ $a = 2 }
perl_end
testfile5::
&echo still not -o>>$@
else # this one is for real
testfile5::
&echo before -o>>$@
perl_begin
if (1)
{ $a = 1 }
else
{ $a = 2 }
perl_end
testfile5::
&echo after -o>>$@
endif
# This checks that unnecessary tests are not performed, and that we
# get the right combined truthvalue.
TRUE = 1
ifdef FALSE
and ifperl die
or ifdef TRUE
and ifdef FALSE
and ifperl die
perl { die }
else ifdef FALSE
or ifdef TRUE
and ifdef FALSE
perl { die }
else ifdef TRUE
and ifdef TRUE
or ifperl die
and ifperl die
or ifperl die
testfile5::
&echo and or else if -o>>$(output)
else
perl { die }
endif
# Test that an initial success with else ifxxx, doesn't also do else.
ifdef TRUE
perl { 1 }
else ifdef FALSE
perl { die }
else
perl { die }
endif
ifdef FALSE
perl { die }
else ifdef TRUE
perl { 1 }
else ifdef FALSE
perl { die }
else
perl { die }
endif
AAA := .
BBB := 1
ifndef BBB
ifneq($(AAA),.)
endif
perl_begin
die "NOT BBB $BBB";
perl_end
endif
CCC := 1
# NOTE: This works if you insert a blank line after "ifdef A"
ifdef CCC
else
perl { die }
endif
# This comes from former 2004_05_13_ifdef.test:
XX := 0
ifdef XX
Y := OK
endif
x:
&echo $(Y) -o $@
# Now check the new 'iftrue' statement:
ifntrue $(CCC)
or iftrue $(XX)
perl { die }
endif
#
# Former 2003_10_11_ifeq.test
#
# Test of all possible syntaxes of ifeq command (submitted by Anders Johnson).
# Case PAREN := (1) added on 05/07/2006 to test bug for variables having parentheses
# to avoid ambiguity, var with parenthesis should be inside outer ifeq parentheses
# or inside quotes
#
PLAIN := 1
PAREN := (1)
$(phony ifeq):
ifeq ("$(PLAIN)","1")
@&echo ok1
else
@&expr -n
endif
ifeq ($(PLAIN),1)
@&echo ok2
else
@&expr -n
endif
ifeq $(PLAIN) 1
@&echo ok3
else
@&expr -n
endif
ifeq ($(PLAIN), 1)
@&echo ok4
else
@&expr -n
endif
ifeq "$(PLAIN)" "1"
@&echo ok5
else
@&expr -n
endif
ifeq ("$(PLAIN)", "1")
@&echo ok6
else
@&expr -n
endif
ifeq ('$(PLAIN)','1')
@&echo ok7
else
@&expr -n
endif
ifeq ('$(PLAIN)', '1')
@&echo ok8
else
@&expr -n
endif
ifeq '$(PLAIN)' '1'
@&echo ok9
else
@&expr -n
endif
ifeq('$(PLAIN)','1')
@&echo ok10
else
@&expr -n
endif
ifneq ('$(PLAIN)','1')
@&expr -n
else
@&echo ok11
endif
ifneq($(PLAIN),1)
@&expr -n
else
@&echo ok12
endif
ifeq (1,1)
@&echo ok13
else
@&expr -n
endif
ifeq 1 1
@&echo ok14
else
@&expr -n
endif
ifeq (1 , 1)
@&echo ok15
else
@&expr -n
endif
ifeq ("$(PAREN)", "(1)")
@&echo ok16
else
@&expr -n
endif
ifeq ($(PLAIN), 1)
@&echo ok17
else
@&expr -n
endif
ifeq "(1)" , "$(PAREN)"
@&echo ok18
else
@&expr -n
endif
ifeq ($(PAREN) , (1)) # ))
@&echo ok19
else
@&expr -n
endif
ifeq ('$(PAREN)', '(1)')
@&echo ok20
else
@&expr -n
endif
ifeq '$(PAREN)','(1)'
@&echo ok21
else
@&expr -n
endif
ifneq ($(PLAIN),1 )
@&echo ok22
else
@&expr -n
endif
ifnsys MSWin* # Test that ! is executable
! false
endif
### D 755 1172615888 973201896 answers/
### 1 644 1172615881 1190053819 answers/n_files
6 3 0
### 11 644 1172615881 973201862 answers/testfile
abc
jkl
def
ghi
jkl
P1
mp1
XX1
xx2
XX3
xx4
### 2 644 1172615881 973201862 answers/testfile2
testfile2
This is another line.
### 1 644 1172615881 973201862 answers/testfile3
testfile3
### 1 644 1172615881 973201862 answers/testfile4
testfile4 5
### 5 644 1172615881 973201862 answers/testfile5
before
after
before
after
and or else if
### 1 644 1172615881 1084501218 answers/x
OK