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 http://www.mingw-w64.org http://www.msys2.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 Cygwin can be used too with its mingw cross-compiler installed: ./configure --cross-prefix=i686-w64-mingw32- (the prefix may vary) * 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 an existing 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