Mike Parsons: >Hi all ... I am trying to create a WebAssembly version of >tinycc using the emscripten tool chain and was wondering if >there exists a single amalgamated source file for tinycc? >For example, like that which is offered by sqlite.org >https://sqlite.org/howtocompile.html.
This is a reply from Bart at comp.lang.c (where I fixed two important typos): I don't remember seeing an amalgamated version. Perhaps there's some confusion because if the ONE_SOURCE macro is defined, then when you compile tcc.c, it will also compile all source code of tcc as a single translation unit. (Otherwise it will be built as two lots, .exe and .dll.) If an actual single file is required, that looks easy, but my investigations reveal this include structure (standard headers and many duplicate tcc.h not shown): 100 tcc.c 201 tcc.h 301 config.h 302 libtcc.h 303 elf.h 304 stab.h 401 stab.def 305 tcctok.h 501 i386-tok.h WIN32 202 libtcc.c 600 (tcc.h) 601 tccpp.c 602 tccgen.c 603 tccelf.c 604 tccrun.c 605 i386-gen.c WIN32 606 i386-lib.c WIN32 607 i386-asm.c WIN32 203 tcctools.c 700 (tcc.h) 701 process.h WIN32 (./win32/include) 801 _mingw.h WIN32 (./win32/include) When I tried to create such a file manually, then I got compile errors. If someone really wants a single C source for Tiny C, for a fixed configuration and with no need to maintain the result, then then using simple pre-processing /might/ work: C:cc7inycc-mob>bcc -e tcc.c Compiling tcc.c to tcc.i C:cc7inycc-mob>bcc tcc.i Compiling tcc.i to tcc.exe C:cc7inycc-mob>tcc -v tcc version 0.9.27 (x86_64 Windows) However, there were problems trying to do the same with gcc -E (I could build tcc.exe from the preprocessed file, but couldn't run it - incompatible exe format or something). So perhaps try a different compiler, although the result may be specific to that compiler. (To build tcc.c here for Windows 64, I defined these macros at the start: #define TCC_TARGET_PE #define TCC_TARGET_X86_64 #define ONE_SOURCE 1 while config.h contained: #define TCC_VERSION "0.9.27" ) Perhaps I should add that this 'one-source' version is for the main tcc executable. However, building a working Tiny C installation also involves using that tcc.exe to build its libraries: compiling a further bunch of .c and .S files into .o then combining into .a. There is also a specific directory structure needed to properly run that version of tcc. I couldn't find trace of an amalgamated version online, so it sounds like this project is not so suitable for that, not if one tcc.c file is expected to take care of everything necessary. _______________________________________________ Tinycc-devel mailing list [email protected] https://lists.nongnu.org/mailman/listinfo/tinycc-devel
