TinyCC ====== This file contains specific information for usage of TinyCC under MS-Windows. See tcc-doc.html to have all the features. Installation from the binary ZIP package: ----------------------------------------- Unzip the package to a directory of your choice. Set the system PATH: -------------------- To be able to invoke the compiler from everywhere on your computer by just typing "tcc", please add the directory containing tcc.exe to your system PATH. Include and library search paths -------------------------------- On windows, the standard "include" and "lib" directories are searched relatively from the location of the executables (tcc.exe, libtcc.dll). Examples: --------- Open a console window (DOS box) and 'cd' to the examples directory. For the 'Fibonacci' example type: tcc fib.c For the 'Hello Windows' GUI example type: tcc hello_win.c For the 'Hello DLL' example type tcc -shared dll.c tcc -impdef dll.dll (optional) tcc hello_dll.c dll.def Using libtcc as JIT compiler in your program -------------------------------------------- Check out the 'libtcc_test' example: - Running it from source: tcc -I libtcc libtcc/libtcc.def -run examples/libtcc_test.c - Compiling with TCC: tcc examples/libtcc_test.c -I libtcc libtcc/libtcc.def - Compiling with MinGW: gcc examples/libtcc_test.c -I libtcc libtcc.dll -o libtcc_test.exe - Compiling with MSVC: lib /def:libtcc\libtcc.def /out:libtcc.lib cl /MD examples/libtcc_test.c -I libtcc libtcc.lib Import Definition Files: ------------------------ To link with Windows system DLLs, TCC uses import definition files (.def) instead of libraries. The now built-in 'tiny_impdef' program may be used to make additional .def files for any DLL. For example tcc -impdef [-v] opengl32.dll [-o opengl32.def] Put opengl32.def into the tcc/lib directory. Specify -lopengl32 at the TCC commandline to link a program that uses opengl32.dll. Header Files: ------------- The system header files (except _mingw.h) are from the MinGW distribution: http://www.mingw.org/ From the windows headers, only a minimal set is included. If you need more, get MinGW's "w32api" package. Extract the files from "include" into your "tcc/include/winapi" directory. Resource Files: --------------- TCC can link windows resources in coff format as generated by MinGW's windres.exe. For example: windres -O coff app.rc -o appres.o tcc app.c appres.o -o app.exe Tiny Libmaker: -------------- The now built-in tiny_libmaker tool by Timovj Lahde can be used as 'ar' replacement to make a library from several object files: tcc -ar [rcsv] library objectfiles ... Compilation from source: ------------------------ * You can use the MinGW and MSYS tools available at http://www.mingw.org Untar the TCC archive and type in the MSYS shell: ./configure [--prefix installpath] make make install The default install location is c:\Program Files\tcc * Alternatively you can compile TCC with just GCC from MinGW using > build-tcc.bat (from the win32 directory) Also MSVC can be used with the "VSTools Developer Command Prompt": > build-tcc.bat -c cl or with a tcc (needs to be in a different directory) > build-tcc.bat -c some-tcc-dir\tcc.exe Also you can copy/install everything into another directory: > build-tcc.bat -i * You can also bootstrap a native tcc Windows toolchain with cygwin. https://www.cygwin.com/ Install Base, gcc, make Launch Cygwin Terminal > make or to force 32bit executables (including 64bit backend) > make TARGET=32 or to force 64bit executables (including 32bit backend) > make TARGET=64 Limitations: ------------ - On the object file level, currently TCC supports only the ELF format, not COFF as used by MinGW and MSVC. It is not possible to exchange object files or libraries between TCC and these compilers. However libraries for TCC from objects by TCC can be made using tcc -ar lib.a files.o ,,, - No leading underscore is generated in the ELF symbols. Documentation and License: -------------------------- TCC is distributed under the GNU Lesser General Public License. (See COPYING file or http://www.gnu.org/licenses/lgpl-2.1.html) TinyCC homepage is at: http://fabrice.bellard.free.fr/tcc/ WinAPI Help and 3rd-party tools: -------------------------------- The Windows API documentation (Win95) in a single .hlp file is available on the lcc-win32 site as "win32hlp.exe" or from other locations as "win32hlp_big.zip". A nice RAD tool to create windows resources (dialog boxes etc.) is "ResEd", available at the RadASM website. --- grischka