Skip to content

c2lang/c2compiler

Repository files navigation

C2Compiler - Native version

This is the C2 compiler written in C2 itself.

C2 is an evolution of C, please see http://c2lang.org for more info.

The first version was written in C++ and can be found in the history of this archive too.

Installation

see the installation document for installation on Linux or OSX.

Libraries

c2c needs 2 environment variables:

  • C2_LIBDIR - where to find the library headers
  • C2_PLUGINDIR - where to find the compiled c2c plugins

The C2_LIBDIR should point to <path_to_c2compiler>/libs The C2_PLUGINDIR may be anywhere and is used by the install_plugins.sh script

Bootstrap

Since c2c is written in C2, a bootstrap is needed. Please run

. ./env.sh
make -C bootstrap
./install_plugins.sh

This will create a boostrap c2c version and use it to build the c2c compiler. The output will be in the folder output/

Now you can run the regular compiler to compiler (other) C2 projects

./output/c2c/c2c

A nicer way would be to create a symlink in ~/bin:

cd ~/bin
ln -s <path_to_c2compiler>/output/c2c/c2c c2c

Also make sure ~/bin is in your PATH variable

Plugins

The C2 compiler has a plugin system, that allows plugins to be loaded during compilation and the AST to be modified by them.

c2c will look for plugins in the environment variable $C2_PLUGINDIR (set by the env.sh script). Also the path can be set in the build-file. To install the plugins initially, run ./install_plugins.sh. This will create ~/c2_plugins/ and copy all plugins there.

To run c2c without plugins, use --noplugins.

Tests

To run the unit tests run

./output/tester/tester test

Releases

No releases published

Packages

No packages published

Languages