diff options
Diffstat (limited to 'gcc/README.md')
| -rw-r--r-- | gcc/README.md | 42 |
1 files changed, 42 insertions, 0 deletions
diff --git a/gcc/README.md b/gcc/README.md new file mode 100644 index 0000000..99d03c3 --- /dev/null +++ b/gcc/README.md @@ -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`. |
