diff --git a/main/Makefile b/main/Makefile
index 24481c0c5d65183402553091d120fe92674c40af..9630b635c89efd5fb199e301520219a4682bae44 100644
--- a/main/Makefile
+++ b/main/Makefile
@@ -11,7 +11,7 @@
 # the GNU General Public License
 #
 
--include $(ASTTOPDIR)/menuselect.makeopts $(ASTTOPDIR)/menuselect.makedeps $(ASTTOPDIR)/makeopts.embed_rules
+-include $(ASTTOPDIR)/menuselect.makeopts $(ASTTOPDIR)/menuselect.makedeps $(ASTTOPDIR)/makeopts.embed_rules $(ASTTOPDIR)/makeopts
 
 all: asterisk
 
@@ -101,16 +101,26 @@ editline/libedit.a: CHECK_SUBDIR
 db1-ast/libdb1.a: CHECK_SUBDIR
 	_ASTCFLAGS="$(_ASTCFLAGS)" ASTCFLAGS="$(ASTCFLAGS) -Wno-strict-aliasing" $(MAKE) -C db1-ast libdb1.a
 
+ifneq ($(BISON),)
+ast_expr2.c ast_expr2.h: ast_expr2.y
+else
 ast_expr2.c ast_expr2.h:
-	bison -o $@ -d --name-prefix=ast_yy ast_expr2.y
+endif
+	$(ECHO_PREFIX) echo "   [BISON] $< -> $@"
+	$(CMD_PREFIX) bison -o $@ -d --name-prefix=ast_yy ast_expr2.y
 
+ifneq ($(FLEX),)
+ast_expr2f.c: ast_expr2.fl
+else
 ast_expr2f.c:
-	flex -o $@ ast_expr2.fl
-	sed 's@#if __STDC_VERSION__ >= 199901L@#if !defined __STDC_VERSION__ || __STDC_VERSION__ >= 199901L@' $@ > $@.fix
-	echo "#include \"asterisk.h\"" > $@
-	echo >> $@
-	cat $@.fix >> $@
-	rm $@.fix
+endif
+	$(ECHO_PREFIX) echo "   [FLEX] $< -> $@"
+	$(CMD_PREFIX) flex -o $@ ast_expr2.fl
+	$(CMD_PREFIX) sed 's@#if __STDC_VERSION__ >= 199901L@#if !defined __STDC_VERSION__ || __STDC_VERSION__ >= 199901L@' $@ > $@.fix
+	$(CMD_PREFIX) echo "#include \"asterisk.h\"" > $@
+	$(CMD_PREFIX) echo >> $@
+	$(CMD_PREFIX) cat $@.fix >> $@
+	$(CMD_PREFIX) rm $@.fix
 
 ast_expr2f.o: _ASTCFLAGS+=-Wno-unused