This document explains the difference between the two Makefiles in this repository and lists the most useful targets and where to run them.
-
Top-level
Makefile(repository root)- Main purpose: compile and run the tests.
- Invokes the Python test runner (
ifcc-test.py) and provides helpers for running suites and renumbering tests. - Targets:
test-all,test-%,test-x86-%,test-arm-%,renumber,clean.
-
compiler/Makefile(insidecompiler/)- Purpose: build the compiler executable
ifcc, generate ANTLR sources, compile and link C++ code. - Targets:
ifcc(built byall),gui,clean.
- Purpose: build the compiler executable
-
make/make test-all- Runs the whole test suite:
python3 ifcc-test.py testfiles.
- Runs the whole test suite:
-
make test-<N>(e.g.make test-01)- If
testfiles/<N>exists, runsifcc-test.py testfiles/<N>; otherwise runsifcc-test.py testfiles/<N>_*.
- If
-
make test-x86-<N>/make test-arm-<N>- Run architecture-specific subsets (passes
--arch x86or--arch armto the test runner).
- Run architecture-specific subsets (passes
-
make renumber- Renumbers
.ctest files insidetestfiles/*directories
- Renumbers
-
make clean(root)- Removes
compiler/build,generated, andcompiler/ifcc(top-level cleanup).
- Removes
-
make/make all/make ifcc- Default build: create the
compiler/ifccexecutable.
- Default build: create the
-
make gui FILE=path/to/file.c- Display the parse tree
-
make clean(insidecompiler/)- Removes
build/,src/generated, andifcc(compiler-local cleanup).
- Removes