MESA_COMMON_MK := $(MESA_TOP)/Android.common.mk
 MESA_PYTHON2 := python
 MESA_PYTHON3 := python3
+ifeq ($(filter 5 6 7 8 9 10, $(MESA_ANDROID_MAJOR_VERSION)),)
+MESA_LEX     := M4=$(M4) $(LEX)
+else
+MESA_LEX     := $(LEX)
+endif
 
 # Lists to convert driver names to boolean variables
 # in form of <driver name>.<boolean make variable>
 
 define local-l-or-ll-to-c-or-cpp
        @mkdir -p $(dir $@)
        @echo "Mesa Lex: $(PRIVATE_MODULE) <= $<"
-       $(hide) $(LEX) --nounistd -o$@ $<
+       $(hide) $(MESA_LEX) --nounistd -o$@ $<
 endef
 
 define glsl_local-y-to-c-and-h
 
 $(intermediates)/ir3/ir3_lexer.c: $(ir3_lexer_deps)
        @mkdir -p $(dir $@)
        @echo "Gen Header: $(PRIVATE_MODULE) <= $(notdir $(@))"
-       $(hide) flex -o $@ $<
+       $(hide) $(MESA_LEX) -o $@ $<
 
 $(intermediates)/ir3/ir3_nir_imul.c: $(ir3_nir_imul_deps)
        @mkdir -p $(dir $@)
 $(intermediates)/ir3/ir3_parser.c: $(ir3_parser_deps)
        @mkdir -p $(dir $@)
        @echo "Gen Header: $(PRIVATE_MODULE) <= $(notdir $(@))"
-       $(hide) bison $< --name-prefix=ir3_yy --output=$@
+       $(hide) $(BISON) $< --name-prefix=ir3_yy --output=$@
 
 $(intermediates)/ir3/ir3_parser.h: $(ir3_parser_deps)
        @mkdir -p $(dir $@)
        @echo "Gen Header: $(PRIVATE_MODULE) <= $(notdir $(@))"
-       $(hide) bison $< --name-prefix=ir3_yy --defines=$@
+       $(hide) $(BISON) $< --name-prefix=ir3_yy --defines=$@
 
 include $(MESA_COMMON_MK)
 include $(BUILD_STATIC_LIBRARY)