Merge GCC frontend into the branch
This commit is contained in:
42
gcc/README.md
Normal file
42
gcc/README.md
Normal file
@@ -0,0 +1,42 @@
|
||||
# Elna programming language
|
||||
|
||||
## Current implementation
|
||||
|
||||
This repository contains a GCC frontend for Elna. After finishing the frontend
|
||||
I'm planning to rewrite the compiler in Elna itself with its own backend and
|
||||
a hand-written parser. So GCC gives a way to have a simple bootstrap compiler
|
||||
and a possbility to compile Elna programs for different platforms.
|
||||
|
||||
## Grammar
|
||||
|
||||
Flex and bison grammar specifications, `lexer.ll` and `parser.yy`, can be found
|
||||
in the `boot/` directory.
|
||||
|
||||
## Build
|
||||
|
||||
The frontend requires GCC 15.2.0 (not tested with other versions).
|
||||
|
||||
Download the GCC source. Copy the contents of this repository into `gcc/elna`
|
||||
inside GCC. Finally build GCC enabling the frontend with
|
||||
`--enable-languages=c,c++,elna`. After the installation the compiler can be
|
||||
invoked with `$prefix/bin/gelna`.
|
||||
|
||||
There is also a `Rakefile` that downloads, builds and installs GCC into the
|
||||
`./build/` subdirectory. The `Rakefile` assumes that ruby and rake, as well as
|
||||
all GCC dependencies are already available in the system. It works under Linux
|
||||
and Mac OS. In the latter case GCC is patched with the patches used by Homebrew
|
||||
(official GCC doesn't support Apple silicon targets). Invoke with
|
||||
|
||||
```sh
|
||||
rake boot
|
||||
```
|
||||
|
||||
`gcc` binary is used by default, but a different gcc version can be specified
|
||||
by passing `CC` and `CXX` environment variables to rake, e.g.:
|
||||
|
||||
```sh
|
||||
rake CC=gcc-15 CXX=g++-15 boot
|
||||
```
|
||||
|
||||
See `rake -T` for more tasks. The GCC source is under `build/tools`. The
|
||||
installation path is `build/host/install`.
|
||||
Reference in New Issue
Block a user