17db96d56Sopenharmony_ciUNAME_S := $(shell uname -s) 27db96d56Sopenharmony_ciifeq ($(UNAME_S),Linux) 37db96d56Sopenharmony_ci PYTHON ?= ../../python 47db96d56Sopenharmony_ciendif 57db96d56Sopenharmony_ciifeq ($(UNAME_S),Darwin) 67db96d56Sopenharmony_ci PYTHON ?= ../../python.exe 77db96d56Sopenharmony_ciendif 87db96d56Sopenharmony_ciVENVDIR ?= ./venv 97db96d56Sopenharmony_ciVENVPYTHON ?= $(VENVDIR)/bin/python 107db96d56Sopenharmony_ciCPYTHON ?= ../../Lib 117db96d56Sopenharmony_ciMYPY ?= mypy 127db96d56Sopenharmony_ci 137db96d56Sopenharmony_ciGRAMMAR = ../../Grammar/python.gram 147db96d56Sopenharmony_ciTOKENS = ../../Grammar/Tokens 157db96d56Sopenharmony_ciTESTFILE = data/cprog.py 167db96d56Sopenharmony_ciTIMEFILE = data/xxl.py 177db96d56Sopenharmony_ciTESTDIR = . 187db96d56Sopenharmony_ciTESTFLAGS = --short 197db96d56Sopenharmony_ci 207db96d56Sopenharmony_cidata/xxl.py: 217db96d56Sopenharmony_ci $(PYTHON) -m zipfile -e data/xxl.zip data 227db96d56Sopenharmony_ci 237db96d56Sopenharmony_cibuild: peg_extension/parse.c 247db96d56Sopenharmony_ci 257db96d56Sopenharmony_cipeg_extension/parse.c: $(GRAMMAR) $(TOKENS) pegen/*.py peg_extension/peg_extension.c ../../Parser/pegen.c ../../Parser/pegen_errors.c ../../Parser/string_parser.c ../../Parser/action_helpers.c ../../Parser/*.h pegen/grammar_parser.py 267db96d56Sopenharmony_ci $(PYTHON) -m pegen -q c $(GRAMMAR) $(TOKENS) -o peg_extension/parse.c --compile-extension 277db96d56Sopenharmony_ci 287db96d56Sopenharmony_ciclean: 297db96d56Sopenharmony_ci -rm -f peg_extension/*.o peg_extension/*.so peg_extension/parse.c 307db96d56Sopenharmony_ci -rm -f data/xxl.py 317db96d56Sopenharmony_ci -rm -rf $(VENVDIR) 327db96d56Sopenharmony_ci 337db96d56Sopenharmony_cidump: peg_extension/parse.c 347db96d56Sopenharmony_ci cat -n $(TESTFILE) 357db96d56Sopenharmony_ci $(PYTHON) -c "from peg_extension import parse; import ast; t = parse.parse_file('$(TESTFILE)', mode=1); print(ast.dump(t))" 367db96d56Sopenharmony_ci 377db96d56Sopenharmony_ciregen-metaparser: pegen/metagrammar.gram pegen/*.py 387db96d56Sopenharmony_ci $(PYTHON) -m pegen -q python pegen/metagrammar.gram -o pegen/grammar_parser.py 397db96d56Sopenharmony_ci 407db96d56Sopenharmony_ci# Note: These targets really depend on the generated shared object in peg_extension/parse.*.so but 417db96d56Sopenharmony_ci# this has different names in different systems so we are abusing the implicit dependency on 427db96d56Sopenharmony_ci# parse.c by the use of --compile-extension. 437db96d56Sopenharmony_ci 447db96d56Sopenharmony_ci.PHONY: test 457db96d56Sopenharmony_ci 467db96d56Sopenharmony_civenv: 477db96d56Sopenharmony_ci $(PYTHON) -m venv $(VENVDIR) 487db96d56Sopenharmony_ci $(VENVPYTHON) -m pip install -U pip setuptools 497db96d56Sopenharmony_ci $(VENVPYTHON) -m pip install -r requirements.pip 507db96d56Sopenharmony_ci @echo "The venv has been created in the $(VENVDIR) directory" 517db96d56Sopenharmony_ci 527db96d56Sopenharmony_citest: run 537db96d56Sopenharmony_ci 547db96d56Sopenharmony_cirun: peg_extension/parse.c 557db96d56Sopenharmony_ci $(PYTHON) -c "from peg_extension import parse; t = parse.parse_file('$(TESTFILE)'); exec(t)" 567db96d56Sopenharmony_ci 577db96d56Sopenharmony_cicompile: peg_extension/parse.c 587db96d56Sopenharmony_ci $(PYTHON) -c "from peg_extension import parse; t = parse.parse_file('$(TESTFILE)', mode=2)" 597db96d56Sopenharmony_ci 607db96d56Sopenharmony_ciparse: peg_extension/parse.c 617db96d56Sopenharmony_ci $(PYTHON) -c "from peg_extension import parse; t = parse.parse_file('$(TESTFILE)', mode=1)" 627db96d56Sopenharmony_ci 637db96d56Sopenharmony_cicheck: peg_extension/parse.c 647db96d56Sopenharmony_ci $(PYTHON) -c "from peg_extension import parse; t = parse.parse_file('$(TESTFILE)', mode=0)" 657db96d56Sopenharmony_ci 667db96d56Sopenharmony_cistats: peg_extension/parse.c data/xxl.py 677db96d56Sopenharmony_ci $(PYTHON) -c "from peg_extension import parse; t = parse.parse_file('$(TIMEFILE)', mode=0); parse.dump_memo_stats()" >@data 687db96d56Sopenharmony_ci $(PYTHON) scripts/joinstats.py @data 697db96d56Sopenharmony_ci 707db96d56Sopenharmony_citime: time_compile 717db96d56Sopenharmony_ci 727db96d56Sopenharmony_citime_compile: venv data/xxl.py 737db96d56Sopenharmony_ci $(VENVPYTHON) scripts/benchmark.py --target=xxl compile 747db96d56Sopenharmony_ci 757db96d56Sopenharmony_citime_parse: venv data/xxl.py 767db96d56Sopenharmony_ci $(VENVPYTHON) scripts/benchmark.py --target=xxl parse 777db96d56Sopenharmony_ci 787db96d56Sopenharmony_citime_peg_dir: venv 797db96d56Sopenharmony_ci $(VENVPYTHON) scripts/test_parse_directory.py \ 807db96d56Sopenharmony_ci -d $(TESTDIR) \ 817db96d56Sopenharmony_ci $(TESTFLAGS) \ 827db96d56Sopenharmony_ci --exclude "*/failset/*" \ 837db96d56Sopenharmony_ci --exclude "*/failset/**" \ 847db96d56Sopenharmony_ci --exclude "*/failset/**/*" 857db96d56Sopenharmony_ci 867db96d56Sopenharmony_citime_stdlib: $(CPYTHON) venv 877db96d56Sopenharmony_ci $(VENVPYTHON) scripts/test_parse_directory.py \ 887db96d56Sopenharmony_ci -d $(CPYTHON) \ 897db96d56Sopenharmony_ci $(TESTFLAGS) \ 907db96d56Sopenharmony_ci --exclude "*/bad*" \ 917db96d56Sopenharmony_ci --exclude "*/lib2to3/tests/data/*" 927db96d56Sopenharmony_ci 937db96d56Sopenharmony_cimypy: regen-metaparser 947db96d56Sopenharmony_ci $(MYPY) # For list of files, see mypy.ini 957db96d56Sopenharmony_ci 967db96d56Sopenharmony_ciformat-python: 977db96d56Sopenharmony_ci black pegen scripts 987db96d56Sopenharmony_ci 997db96d56Sopenharmony_ciformat: format-python 1007db96d56Sopenharmony_ci 1017db96d56Sopenharmony_cifind_max_nesting: 1027db96d56Sopenharmony_ci $(PYTHON) scripts/find_max_nesting.py 1037db96d56Sopenharmony_ci 1047db96d56Sopenharmony_citags: TAGS 1057db96d56Sopenharmony_ci 1067db96d56Sopenharmony_ciTAGS: pegen/*.py test/test_pegen.py 1077db96d56Sopenharmony_ci etags pegen/*.py test/test_pegen.py 108