Implement $(MAKECMDGOALS)
diff --git a/main.go b/main.go
index 8c406a7..47d9587 100644
--- a/main.go
+++ b/main.go
@@ -20,7 +20,7 @@
 	flag.Parse()
 }
 
-func getBootstrapMakefile() Makefile {
+func getBootstrapMakefile(targets []string) Makefile {
 	bootstrap := `
 CC:=cc
 CXX:=g++
@@ -38,6 +38,7 @@
 	$(CXX) $(CXXFLAGS) $(CPPFLAGS) $(TARGET_ARCH) -c -o $@ $<
 # TODO: Add more builtin rules.
 `
+	bootstrap = fmt.Sprintf("%s\nMAKECMDGOALS:=%s\n", bootstrap, strings.Join(targets, " "))
 	mk, err := ParseMakefileString(bootstrap, "*bootstrap*", 0)
 	if err != nil {
 		panic(err)
@@ -47,8 +48,9 @@
 
 func main() {
 	parseFlags()
+	targets := flag.Args()
 
-	bmk := getBootstrapMakefile()
+	bmk := getBootstrapMakefile(targets)
 
 	var mk Makefile
 	var err error
@@ -89,7 +91,7 @@
 		vars.Assign(k, v)
 	}
 
-	err = Exec(er, flag.Args(), vars)
+	err = Exec(er, targets, vars)
 	if err != nil {
 		panic(err)
 	}
diff --git a/testcase/flavor.mk b/testcase/flavor.mk
index dc5cdd3..2bbafc9 100644
--- a/testcase/flavor.mk
+++ b/testcase/flavor.mk
@@ -6,4 +6,8 @@
 D?=d
 
 all:
-	echo $(flavor A) $(flavor B) $(flavor C) $(flavor D) $(flavor E) $(flavor PATH)
+	echo $(flavor A) $(flavor B) $(flavor C) $(flavor D) $(flavor E)
+	echo $(flavor PATH)
+
+# For some reason, $(flavor MAKECMDGOALS) should be "undefined"
+# echo $(flavor MAKECMDGOALS)
diff --git a/testcase/makecmdgoals.mk b/testcase/makecmdgoals.mk
new file mode 100644
index 0000000..bd6ceb1
--- /dev/null
+++ b/testcase/makecmdgoals.mk
@@ -0,0 +1,2 @@
+test:
+	echo $(MAKECMDGOALS)