Implement ifeq and ifneq
diff --git a/eval.go b/eval.go
index 4d4c07f..ef4eda0 100644
--- a/eval.go
+++ b/eval.go
@@ -222,20 +222,25 @@
 }
 
 func (ev *Evaluator) evalIf(ast *IfAST) {
-	var stmts []AST
+	var isTrue bool
 	switch ast.op {
 	case "ifdef", "ifndef":
 		value, _ := ev.getVar(ev.evalExpr(ast.lhs))
-		if (value != "") == (ast.op == "ifdef") {
-			stmts = ast.trueStmts
-		} else {
-			stmts = ast.falseStmts
-		}
+		isTrue = (value != "") == (ast.op == "ifdef")
 	case "ifeq", "ifneq":
-		panic("TODO")
+		lhs := ev.evalExpr(ast.lhs)
+		rhs := ev.evalExpr(ast.rhs)
+		isTrue = (lhs == rhs) == (ast.op == "ifeq")
 	default:
 		panic(fmt.Sprintf("unknown if statement: %q", ast.op))
 	}
+
+	var stmts []AST
+	if isTrue {
+		stmts = ast.trueStmts
+	} else {
+		stmts = ast.falseStmts
+	}
 	for _, stmt := range stmts {
 		ev.eval(stmt)
 	}