# $Id: testcase-ifcond.kmk 1727 2008-09-05 01:45:52Z bird $ ## @file # kBuild - testcase for the if conditionals. # # # Copyright (c) 2007 knut st. osmundsen # # This file is part of kBuild. # # kBuild is free software; you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by # the Free Software Foundation; either version 2 of the License, or # (at your option) any later version. # # kBuild is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU General Public License for more details. # # You should have received a copy of the GNU General Public License # along with kBuild; if not, write to the Free Software # Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA # # DEPTH = ../.. include $(KBUILD_PATH)/header.kmk ifeq (1,0) # # Some very basic tests. # if 1 $(warning works) else $(error busted) endif if 1 || 1 $(warning works) else $(error ) endif if 0 || 0 $(error ) else $(warning works) endif if 1 || 0 $(warning works) else $(error ) endif if 0 || 1 $(warning works) else $(error ) endif if 0 || 0 || 0 || 0 || 0 || 0 || 0 $(error ) else $(warning works) endif if 0 || 0 || 0 || 1 || 0 || 0 || 0 $(warning works) else $(error ) endif if 0 && 1 $(error ) else $(warning works) endif if 0 || 1 && 1 $(warning works) else $(error ) endif endif # all # # Parenthesis # if (1) $(warning works) else $(error ) endif if ((((1)))) $(warning works) else $(error ) endif # # Equal and Not Equal. # if 1 == 1 $(warning works) else $(error ) endif if 2 == 3 $(error ) else $(warning works) endif if 2 != 3 $(warning works) else $(error ) endif # # XOR # if 1 ^ 1 $(error ) else $(warning works) endif if 2 ^ 1 == 3 $(warning works) else $(error ) endif if 7 == 2 ^ 1 ^ 4 $(warning works) else $(error ) endif # # Logical NOT # if !1 $(error ) else $(warning works) endif if !42 == 0 $(warning works) else $(error ) endif if !0 == 1 $(warning works) else $(error ) endif if !!0 == 0 $(warning works) else $(error ) endif # # Greater than # if 1 > 0 $(warning works) else $(error ) endif if 1024 > 1023 $(warning works) else $(error ) endif if 999 > 1023 $(error ) else $(warning works) endif # # Greater or equal than # if 20 > 0 $(warning works) else $(error ) endif if 20 >= 20 $(warning works) else $(error ) endif if 19 >= 20 $(error ) else $(warning works) endif # # target() # if 0 trg_deps_only: foobar trg_with_cmds: foobar echo $@ if target trg_with_cmds $(warning works) else $(error target) endif if target trg_deps_only $(error target) else $(warning works) endif if target foobar $(error target) else $(warning works) endif endif # # defined() # var_defined := 1 var_not_defined := if defined var_defined $(warning works) else $(error ) endif if defined(var_defined) $(warning works) else $(error ) endif if defined (var_defined) $(warning works) else $(error ) endif if defined (var_not_defined) $(error ) else $(warning works) endif # # Quick check of $(if-expr ) and $(expr ). # ifeq ($(if-expr 0 || 2,42,500),42) $(warning if-expr test 1 succeeded) else $(error ) endif ifeq ($(if-expr 5+3 == 231,42,500),42) $(error ) else $(warning if-expr test 2 succeeded) endif ifeq ($(expr 5+3),8) $(warning expr test 1 succeeded) else $(error expr:$(expr 5+3) expected 8) endif ifeq ($(expr 25*25),625) $(warning expr test 2 succeeded) else $(error expr:$(expr 25*25) expected 625) endif ifeq ($(expr 100/3),3) $(error ) else $(warning expr test 3 succeeded) endif all_recursive: $(ECHO) "if works fine"