aboutsummaryrefslogtreecommitdiff
path: root/README.md
blob: 19f6a44811e95bb77fbd6132de08d1328b74dba2 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
# RCC Project

RCC is a compiler collection under active development. The current implementation
focuses on a standalone machine-code backend.

## Repository layout

```text
backend/    Standalone backend project
cmake/      Monorepo orchestration support
docs/       Architecture and implementation records
```

Future frontend, middle-end, and driver projects will be sibling components.

## Build the enabled projects

RCC requires Clang and C++23. Both Ninja and Unix Makefiles are supported.

```bash
cmake -S . -B build -G Ninja \
  -DCMAKE_CXX_COMPILER=clang++ \
  -DRCC_ENABLE_PROJECTS=backend
cmake --build build
ctest --test-dir build --output-on-failure
```

## Build the backend independently

```bash
cmake -S backend -B build-backend -G Ninja \
  -DCMAKE_CXX_COMPILER=clang++
cmake --build build-backend
ctest --test-dir build-backend --output-on-failure
```

Replace `Ninja` with `Unix Makefiles` to build with Make.

Developer checks are exposed as `rcc-backend-format-check`,
`rcc-backend-tidy`, and `rcc-backend-analyze` in a standalone backend build.
The monorepo exposes the aggregate `format-check`, `tidy`, and `analyze`
targets.

## License

RCC is free software distributed under GPL-3.0-or-later. See `LICENSE`.