Skip to content

shinh/nacltcc

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

See README.tcc for the original document

This is an experimental port of tinycc (https://tinycc.org)

You can run C source code on NaCl, which means, you can run C programs
on your browser without interaction with servers.

The development is not completed at all. You may see weird errors even
for simple programs. Especially, x86-64 support should be terrible.
Also, this cannot generate NaCl ELF yet. It can only preprocess source
code or run the source code directly.

* Demo

https://shinh.skr.jp/nacltcc/tinycc.html

* How to build

- prerequisites

You need at least the followings:

NaCl SDK (my version is pepper_19)
ruby
make, etc.

For web interface, you also need:

naclports (my revision is 575, must be > r573)
Chrome (tested on 15.0.874.5 dev on 64bit linux, 14.0.835.186 on 32bit mac)

You need to set NACL_SDK_ROOT environment variable before the next step:

% export NACL_SDK_ROOT=$HOME/src/nacl_sdk/pepper_19

- build the CLI version

% ./nacl-configure
% make

This will build 32bit binary by default. Please specify
NACL_PACKAGES_BITSIZE if you want 64bit binary:

% NACL_PACKAGES_BITSIZE=64 ./nacl-configure
% make

- run the CLI version

% sel_ldr_x86_32 -B $NACL_SDK_ROOT/tools/irt_x86_32.nexe ./tcc -B. -run hello.c

For now, file output isn't working due to lack of unlink(2)

If you are using 64bit version, please use sel_ldr_x86_64 instead.
Of course, you may want to replace * to your actual toolchain directory.

- build the web version

Again, please note that you need naclports and NACL_SDK_ROOT
environment variable.

% cd demo
% make
% ./pack_data.sh

Then, put data.tar, tinycc.html, tinycc.nmf, and *.nexe in your web server.
Note that NaCl won't run on file:https:/// URLs.

* Known issues

- 32bit version is crashing on my 64bit linux. I don't know why.

* License

TCC's (i.e., GPLv2)

Releases

No releases published

Packages

No packages published

Languages