diff options
author | Christopher Faylor <me@cgf.cx> | 2000-02-17 22:38:33 +0300 |
---|---|---|
committer | Christopher Faylor <me@cgf.cx> | 2000-02-17 22:38:33 +0300 |
commit | 1fd5e000ace55b323124c7e556a7a864b972a5c4 (patch) | |
tree | dc4fcf1e5e22a040716ef92c496b8d94959b2baa /winsup/mingw/readme.txt | |
parent | 369d8a8fd5e887eca547bf34bccfdf755c9e5397 (diff) |
import winsup-2000-02-17 snapshot
Diffstat (limited to 'winsup/mingw/readme.txt')
-rw-r--r-- | winsup/mingw/readme.txt | 685 |
1 files changed, 685 insertions, 0 deletions
diff --git a/winsup/mingw/readme.txt b/winsup/mingw/readme.txt new file mode 100644 index 000000000..4b680df48 --- /dev/null +++ b/winsup/mingw/readme.txt @@ -0,0 +1,685 @@ + Minimalist GNU-Win32 Readme + version 0.1.3 + March 20, 1997 + Colin Peters <colin@bird.fu.is.saga-u.ac.jp> + + +0. Introduction + +Mingw32 is short for the Minimalist GNU-Win32 package, and it is a +package which allows you to use GCC (as supplied by Cygnus in their GNU- +Win32 or Cygwin32 package) the GNU compiler, on Win32 platforms like +Windows 95 or NT, to compile "native" programs. + +In this case "native" means programs which don't require extra DLLs like +the cygwin DLL. Mingw32 programs use CRTDLL.DLL to provide their C run +time library functions, and CRTDLL.DLL is supplied with all current +Win32 platforms. Thus the programs are light weight and easy to +distribute, they also do not automatically fall under the GNU Public +License as programs written with the GPL version of Cygwin32 do. + + +0.1 Archive Contents + +Mingw32 version 0.1.3 is distributed in two files, mingw32_013.tar.gz +and mingsrc013.tar.gz. The first file contains the following components: + + - Import libraries for building programs which use the + CRTDLL.DLL C run time library supplied with Win32 platforms. + + - crt0.o and dllcrt0.o, two "startup code" object files that + perform program or DLL initialization without using + CRTDLL.DLL (instead of CYGWIN.DLL). + + - specs, a configuration file for GCC which defines appropriate + options for creating executables which use the CRTDLL.DLL C + run time library. + + - Include files with appropriate type and macro definitions, + and function prototypes for use with CRTDLL.DLL. + +The source distribution (mingsrc013.tar.gz) contains the .def files and +source files used to create the various import libraries and object +files in the above list. + + +0.2 Usage Notes + +Unlike some previous releases of Mingw32 the current version defaults to +building console applications, the same way that GCC normally does when +installed from the Cygnus distribution. The Mingw32 specs file also +introduces two command line arguments to GCC which can be used to +conveniently specify a console or GUI type build. When building console +programs "-console" can be used on the GCC command line, while GUI +programs can be built by specifying "-windows" (I tried defining -gui, +and it works, but produces an annoying warning about -gui not being +supported (?)). For example: + + gcc -o hellogui.exe hellogui.c -luser32 -windows + +Although using different "crt0" files for GUI and console applications +has been suggested I have left the system more-or-less as it was in +0.1.1: crt0 sets up for and calls main, and if you don't supply a main +there is one in libmingw32.a, which in turn calls WinMain (actually +WinMain@16). This allows either main or WinMain entry points in console +or GUI applications, but if you don't supply main or WinMain, or don't +prototype WinMain as __stdcall__ you will get a linker error about an +"unresolved reference to WinMain@16." This is unfortunately cryptic, but +otherwise the system works quite well. + +An important note if you want to rebuild from the sources of Mingw32 or +otherwise use the special version of Jam made for Mingw32: you need to +have a version of "rm", the UNIX equivalent of del, somewhere in your +path to use the current Jambase (which is built into the Jam +executable). The version that comes with the Cygnus files is perfectly +adequate. + + +0.3 Fixes and Improvements + +Numerous small bug fixes have been made in the header files. + +Floating point initialization, originally added in version 0.1.2, has +been modified to use the _fpreset function from CRTDLL.DLL instead of +cryptic and possibly less portable assembly code. + +A new DLL-building option has been added to the specs file so that the +following link line will appropriately link in dllcrt0.o instead of the +normal crt0.o, and set the entry point correctly: + + gcc -dll -o dll.dll dll.o -Wl,dll.exp + +A bug that would cause the wrong include files to be included in dual +installations of Cygwin32 and Mingw32 has been fixed (I hope) in the +Mingw32 specs file. + +Alongside this release is a new release of Jam specially built for use +with Mingw32. It should be available from the same place you got this +file. This release of Jam includes rules for building DLLs, including +resources in your executables and creating import libraries. I also +intend to distribute a small set of example files showing how to do all +of these things with Mingw32 and Jam. + +In the "coming soon" category I have a version of the GNU Standard C++ +library ported to Mingw32. This means you can use iostreams, complex +numbers and all those neat STL (Standard Template Library) things +without needing the Cygwin DLL. I hope to put this port up for +downloading soon (along with the source of course). + + + +1. Installing + +1.1 Download and Unpack GNU-Win32 Beta 17.1 + +Because of the enormous size of the beta 17.1 release from Cygnus this +process will require about 85 MB or more of free disk space. The first +step, after downloading the Mingw32 package, is to download the GCC +binary distribution, all.tar.gz, from Cygnus (or a mirror), which is +about 10 MB. (Of course, if you just want the Cygwin32 install and are +not actually interested in adding on Mingw32 you don't need the Mingw32 +package at all.) + +Just to be safe, and if you have the 10 MB to spare, you should probably +copy the all.tar.gz file to a reasonably safe place at this point. This +will save you from the pain of downloading it again if something goes +wrong later. + +To complete this step you need a gzip program (or just gunzip) and a tar +program. You can use the ones supplied by Cygnus (although some people +seem to have trouble with them, especially if you try to use pipes) or +one of the other ports available from your favorite freeware/shareware +software site. + +First un-gzip the file with a command line like: + gunzip all.tar.gz +or + gzip -d all.tar.gz + +This will produce a all.tar file and erase the all.tar.gz file (there +are options for gzip if you want to keep the original around). The tar +file is about 40 MB. + +Make a directory for the cygnus stuff, such as C:\cygnus for example. +Move the tar file there (e.g. move \tmp\all.tar \cygnus). Don’t copy it +unless you like waiting and wasting 40 MB of disk space. + +Unpack the tar file into your new directory with a command line like: + tar xvf all.tar + +Run from the new directory (now containing the tar file). This is the +step where disk space usage reaches its peak, since the tar extraction +does not delete the all.tar file, and the amount of space taken by the +extracted files plus the tar file itself is well in excess of 80 MB +(mainly because, on my system at least, the files which are symbolic +links in the tar archive are copied as they are expanded onto the FAT +filesystem, so for example, a symbolic link to cygwin.dll, a 3 MB file, +takes an extra 3 MB, since the file is simply duplicated in the new +location). I could not actually do this on my laptop and had to extract +the tar file from a mounted network drive! + +NOTE: From here on I will refer to files as if you had installed in +C:\cygnus. If you installed somewhere else then just replace C:\cygnus +with the appropriate path wherever it occurs. + + +1.2 Setup Cygwin32 + +This step is not 100% necessary, but it helps at this point to determine +if you’ve gotten this far without any major problems. Also, if you +intend to use both Cygwin32 and Mingw32 you will have to do some of +these steps eventually. + +GCC and the other programs in the compiler suite all require cygwin.dll +to run. There are two copies of this file: one in C:\cygnus\H-i386- +cygwin32\bin (this might be a symbolic link), and one in C:\cygnus\H- +i386-cygwin32\i386-cygwin32\lib (the original). Since this DLL is +required by all Cygwin32 programs it makes sense to put one copy of it +in your C:\Windows\System directory (or equivalent) and remove the extra +copies. This will also save you headaches when the next release comes +along and you have to make sure that everything is using the latest +release of the DLL. + +After doing that run the cygwin32.bat batch file included with this +distribution, or otherwise perform the following settings: + + PATH=%PATH%;C:\cygnus\H-i386-cygwin32\bin + SET GCC_EXEC_PREFIX=C:\cygnus\H-i386-cygwin32\lib\gcc-lib\i386- + cygwin32\cygnus-2.7.2-961023 + SET LIBRARY_PATH=/cygnus/H-i386-cygwin32/lib/gcc-lib/i386- + cygwin32/cygnus-2.7.2-961023:/cygnus/H-i386-cygwin32/i386- + cygwin32/lib:/cygnus/H-i386-cygwin32/lib + SET C_INCLUDE_PATH=/cygnus/H-i386-cygwin32/lib/gcc-lib/i386- + cygwin32/cygnus-2.7.2-961023/include:/cygnus/H-i386- + cygwin32/i386-cygwin32/include:/cygnus/include + SET CPLUS_INCLUDE_PATH=%C_INCLUDE_PATH% + +NOTE: You may need to increase the amount of environment space available +at the command prompt to get these extremely long environment variables +set. You can do this under Windows 95 by modifying the properties of the +command prompt shortcut you use under the "Program" tab, adding a +/e:#### argument to the command line COMMAND.COM, where #### is the +number of bytes to set aside for the environment. + +NOTE: Under Windows 95 changes made in your autoexec.bat file will not +show up in new DOS boxes unless you reboot your machine. + +Now write and compile a small test hello world program like this: + +#include <stdio.h> + +int +main () +{ + printf ("Hello, world!\n"); + return 0; +} + +Then compile it like this (assuming your file is called hello.c): + + gcc -o hello.exe hello.c + +The compile should proceed without problems and you should be able to +run the hello program at the end. It should print "Hello, world!" +(without the quotes) to the console and then return to the command +prompt. + +If you wanted a full Cygwin32 install you now have it. With this setup +(say, by adding those lines above to your autoexec.bat or global +settings) you can port a great deal of UNIX code to run under Win32 +systems. No more steps are necessary. + +If you are a minimalist or otherwise want to save disk space you should +continue from here. Also if you intend to use the Minimalist GNU-Win32 +files to compile programs which don't use the Cygwin32 API you will need +to do some of the things mentioned below. + +If the compile didn't work for some reason check very carefully that you +followed the instructions above correctly and then check whether one or +more of the files in the download got corrupted. If neither of these +seems to be the case then your system is not behaving like my system. +Try looking at the troubleshooting section later in this file, and if +none of that helps then you can email me (colin@bird.fu.is.saga- +u.ac.jp), though I can't promise I'll be a lot of help. + + +1.3 Separating the Win32 API Files + +Mingw32 and Cygwin32 share the same set of Win32 API include files and +import libraries as included in the GCC distribution from Cygnus. In +order to use the Win32 API with a dual setup or with Mingw32 alone you +will have to separate those files from the bulk of the Cygwin32 API +files. + +Make a new directory to serve as the root for the Win32 API files. I put +mine under C:\cygnus and called it win32, but you can put it where you +like and just replace later references to C:\cygnus\win32 with your own +root directory. + +Move the following from C:\cygnus\H-i386-cygwin32\i386-cygwin32\include +to a new C:\cygnus\win32\include directory: + +windows.h, winadvapi.h, winbase.h, wincon.h, windef.h, windowsx.h, +winerror.h, wingdi.h, winkernel.h, winnt.h, wintypes.h, winuser.h, +winversion.h, commdlg.h, ddeml.h and the Windows32 sub-directory and all +its contents. + +Move the following files from C:\cygnus\H-i386-cygwin32\i386- +cygwin32\lib to a new C:\cygnus\win32\lib directory: + +libadvapi32.a, libcomctl32.a, libcomdlg32.a, libctl3d32.a, libgdi32.a, +libglaux.a, libglu32.a, libimm32.a, libkernel32.a, liblz32.a, +libmapi32.a, libmfcuia32.a, libmgmtapi.a, libmpr.a, libmsacm32.a, +libnddeapi.a, libnetapi32.a, libodbc32.a, libodbccp32.a, libole32.a, +liboleaut32.a, liboledlg.a, libolepro32.a, libopengl32.a, libpenwin32.a, +libpkpd32.a, librasapi32.a, librpcdce4.a, librpcndr.a, librpcns4.a, +librpcrt4.a, libscrnsave.a, libshell32.a, libsnmp.a, libsvrapi.a, +libtapi32.a, libth32.a, libthunk32.a, liburl.a libuser32.a, libvdmdbg.a, +libversion.a, libvfw32.a, libwin32spl.a, libwinmm.a, libwinserve.a, +libwinspool.a, libwinstrm.a, libwow32.a, libwsock32.a, libwst.a. + +That list is quite excessive for most basic Windows programming, which +will only require kernel32, user32, gdi32, shell32 and possibly a couple +of others like the common control and dialog libraries or advapi32. You +may not need the ODBC support, or OLE, or Pen Windows, TAPI and on and +on. Still, if you have the space and intend to use the Win32 API you +might as well keep the ones you’re not sure you’ll ever use around. + +The lists above can also act as lists of files you can safely delete if +you are never going to use the Win32 API in your programs except that +libkernel32.a is still required even if you don’t use the Win32 API +yourself. Note that this means that libkernel32.a must be on the library +path as well, even if you don’t use the Win32 API. (Actually this +appears to be an artifact of the specs file supplied with Cygwin32. If +you like, and feel up to it, you can play around with the specs file and +remove the reference to kernel32.) + +Here are the variable settings you need to make to allow GCC to find the +Win32 API files in their new positions: + + SET LIBRARY_PATH=%LIBRARY_PATH%:/cygnus/win32/lib + SET C_INCLUDE_PATH=%C_INCLUDE_PATH%:/cygnus/win32/include + SET CPLUS_INCLUDE_PATH=%CPLUS_INCLUDE_PATH%:/cygnus/win32/include + +The file win32-api.bat performs these settings. Run it after you run +cygwin32.bat (or mingw32.bat below). + +At this point you should be able to compile programs that use the Win32 +API, just as you could before. You might want to do a simple test +compile to find out, for example this code: + +#include <windows.h> + +int STDCALL +WinMain (HINSTANCE hInst, HINSTANCE hPrev, LPSTR lpCmd, int nShow) +{ + MessageBox (NULL, "Test message", "Test", MB_OK); + return 0; +} + +Should compile with the following command line: + gcc -o test.exe test.c -lkernel32 -luser32 -Wl,--subsystem,windows + +It will produce a warning at link time about not finding +_WinMainCRTStartup, but this is harmless. + +If you have trouble check the troubleshooting section later in this +file. + + +1.4 Specs + +The file C:\cygnus\H-i386-cygwin32\lib\gcc-lib\i386-cygwin32\cygnus- +2.7.2-961023\specs includes a set of options and defaults for GCC, +including such things as which libraries are automatically linked into +executables and such. A different specs file is required depending on +whether you use Cygwin32 or Mingw32. + +To avoid GCC accidentally using the wrong specs file move specs to +C:\cygnus\H-i386-cygwin32\i386-cygwin32\lib. + +You can verify what specs file is being used by attempting a compile +with the -v option to gcc. Note that if no specs file is mentioned the +compiler will default to Cygwin32 behavior. + + +1.5 The Mingw32 Files + +Now we can install the Mingw32 files and start making programs which +don’t use cygwin.dll or the Cygwin32 API. I install my copy under a +separate directory called C:\mingw32, but you could put them wherever +you like (e.g. C:\cygnus\mingw32). Again simply replace references to +C:\mingw32 with the directory where you perform your installation. + +After making the install directory copy mingw32_012.tgz to that +directory and run a command like this: + gunzip -d mingw32_012.tgz + +in that directory, followed by: + tar xvf mingw32_012.tar + +This will unpack the required files. Then you can use the following +environment variable settings (as included in mingw32.bat) to setup for +compiles using Mingw32: + + PATH=%PATH%;C:\cygnus\H-i386-cygwin32\bin + SET GCC_EXEC_PREFIX=C:\cygnus\H-i386-cygwin32\lib\gcc-lib\i386- + cygwin32\cygnus-2.7.2-961023\ + SET LIBRARY_PATH=/mingw32/lib + SET C_INCLUDE_PATH=/mingw32/include:/mingw32/include/nonansi + SET CPLUS_INCLUDE_PATH=%C_INCLUDE_PATH% + +The mingw32.bat file can be used the same way as the cygwin32.bat file. +Depending on which one you run you will be able to do Mingw32 compiles +or Cygwin32 compiles. Note that whichever one you use you must follow it +with an invocation of win32-api.bat so that libkernel32.a will be in the +library path. + +Setup is now complete, you have complete working Mingw32 and Cygwin32 +compiles available along with the bash shell, tons of UNIX-like +utilities. + +If you had trouble with any of the steps above then the next section is +for you. + + + +2. Troubleshooting Setup Problems + +If you ran into trouble at any stage in the section 1 here are a few +general guidelines as well as some solutions to common problems. + +2.1 Winzip, gunzip or tar Complains of Errors + +Winzip may complain that it could not create a file with garbage +characters in it's name. Gunzip, gzip or tar may complain about +formatting errors. Usually this means that the downloaded file is +corrupted. As of this writing this problem was most commonly caused when +downloading the files from Geocities using Netscape Navigator for +Windows 95 or NT. A combination of a badly set MIME type at Geocities +and a bug in Netscape will corrupt files saved with "Save Link As" (and +clicking on the links would display the files as garbage text). At this +time the only solutions are to use another browser (IE, or Netscape for +UNIX or Apple systems) or to download from the Japanese mirror +(http://www.fu.is.saga-u.ac.jp/~colin/gcc.html). Hopefully Geocities +will eventually fix their problem. + + +2.2 Compile and Link Time Problems: General Steps + +First, evaluate that your environment variables are what you expect them +to be by running the SET command with no arguments (if you are using the +bash shell then the output of env might also be illuminating). Do this +immediately before you attempt a compile in the same window as the +compile. + +Secondly include the '-v' option on the gcc command line. This will give +you far more information on what happens during the compile, especially +important are which specs file is being used and what include file +directories are being read, as well as the arguments to cpp and ld. + +If you send me email about a problem the output of these two general +steps will be very helpful in making a diagnosis. + + +2.3 Cannot exec 'cpp' + +On compiling you get an error message like this: + + GCC.EXE: installation problem, cannot exec `cpp': No such file + or directory + GCC.EXE: Internal compiler error: program cpp got fatal signal 127 + +This means more or less what it says. The program cpp is the C +preprocessor (it strips comments and interprets all those lines +beginning in '#') and running it is the first step in compiling a C or +C++ program. The problem here is that GCC.EXE cannot find CPP.EXE. +Normally CPP.EXE is in the directory C:\cygnus\H-i386-cygwin32\lib\gcc- +lib\i386-cygwin32\cygnus-2.7.2-961023\. If the file is there then +probably the GCC_EXEC_PREFIX environment variable is not correctly set. + + +2.4 Can't Find Include Files + +You get an error like this: + + hello.c:2: No include path in which to find stdio.h + +This, again, means what it says (more or less). The compiler cannot find +the file stdio.h which is #included in the source file hello.c at line +2. Of course the particular file names may differ in your case. If this +is not simply a case of including a really non-existent file or +misspelling the file name then probably your C_INCLUDE_PATH or +CPLUS_INCLUDE_PATH environment variable is wrong. (If not, see "But the +environment variables are right" below.) + + +2.5 Can't Find Libraries + +At link time you get an error like this: + + ld: cannot open -lkernel32: No such file or directory + +This one is a bit cryptic, mainly because the name of the file that +can't be opened is not "-lkernel32" but "libkernel32.a". "-lname" is the +ld command line syntax for linking the library named "libname.a". So +basically this error is saying it can't find libkernel32.a (or whatever +library matches the error you got). If you weren't trying to manually +link in a library that doesn't exist or was misspelled (by accidentally +including the 'lib' or '.a' on the command line for example) then +probably your LIBRARY_PATH environment variable is wrong. (If not, see +"But the environment variables are right" below.) + + +2.6 But the Environment Variables are Right! + +You had one of the problems with not finding include files or libraries +but the environment variables all seem to be pointing at the right +places and the files are all there. + +If you installed on a drive other than C: drive this may be your +problem. The Cygwin DLL, and thus all the basic compiler tools, +automatically map C: drive to (UNIX-style) '/'. Thus /cygnus is actually +C:\cygnus. There are a few ways to fix this (without reinstalling on C: +drive): + + - Map your actual install directory to /cygnus using mount + (mount.exe is included with the Cygnus distribution). Simply + type "mount D:\mydir /cygnus" (assuming you installed in the + directory \mydir on D: drive). Similar tricks can be used for + other directories which you may have installed on other drives. + + - Change the mount of C: to / to the actual install drive. This is + possible by using the registry editor (regedit) included with + Windows. Start the editor and go to the key (or folder) "My + Computer\HKEY_CURRENT_USER\Software\Cygnus Support\CYGWIN.DLL + setup\b15.0\mounts". Under this key there are several numbered + keys. One of them will have the variables "native" set to "c:" and + "unix" set to "/". Change the value of "native" to whatever drive + you did your install on and everything should be fixed. NOTE: You + should probably do this after a fresh boot with no Cygnus based + programs running. + + +2.7 Unresolved References to _impure_ptr and/or _ctype_ etc. + +At link time your code produces unresolved references to _impure_ptr, +_ctype_ and/or _errno, among others. + +This is the result of using the Cygwin header files but linking against +the Mingw32 libraries. I have hopefully managed to fix the bug that used +to cause this problem on any dual installation, but perhaps I haven't. +To check you can run gcc with the -v option and see if the list of +directories searched for include files contains any include directories +with Cygwin headers in them. If everything is working correctly you +should only see the directories on your C_INCLUDE_PATH in this list. + +If you have this problem then you may have to modify the Mingw32 specs +file, specifically the part that says: + +*cpp: +%{posix:-D_POSIX_SOURCE} -iprefix /mingw32/include/ + +These are options that get passed to the C preprocessor by gcc. Consult +the documentation for cpp and try options other than -iprefix. You may +have to use -nostdinc and/or -nostdinc++ plus -I options to get the +correct behavior. + + +2.8 My Program Doesn't Print Any Output OR My Windows Program Creates + A Console Window + +Your console application runs, but doesn't print any output, or your GUI +application runs fine, but always creates an extra console window when +run from Explorer or by double clicking on an icon. + +These are basically two sides of the same coin. You have created a GUI +(or console) application when you meant to create a console (or GUI) +application. By default gcc creates console applications. If you make a +windows GUI application with a WinMain and all that you will still get a +console application if you don't tell gcc what to do at link time. The +relevant options are "-windows" "-Wl,--subsystem,windows" or "-Wl,-- +subsystem,console". The first two, if used on a gcc link line, will +create a proper GUI application. The last will make sure you are making +a console application. + + + +3. Optimizing and Reducing Disk Space Usage + +There are still vast amounts of disk space used by the Cygwin32 +installation on your hard-drive, and much of it can be removed while +still maintaining a fully functional compiler system. The following +sections point out which files you actually need for certain tasks, so +that you won’t delete them. + + +3.1 Bare Minimum + +For C only, Mingw32 compiles which don’t use the Win32 API, and if you +don’t want to produce DLLs or do debugging with any of the GNU tools the +list of files required is as follows: + +In C:\cygnus\H-i386-cygwin32\bin: + ar.exe, as.exe, gcc.exe, ld.exe + +In C:\cygnus\H-i386-cygwin32\lib\gcc-lib\i386-cygwin32\cygnus-2.7.2- +961023: + cc1.exe, cpp.exe, libgcc.a + +In C:\cygnus\win32\lib: + libkernel32.a + +Plus all the files in C:\mingw32\lib and C:\mingw32\include and their +subdirectories. + + +3.2 C++ Support + +To add C++ Support to the above the following extra files are required: + +In C:\cygnus\H-i386-cygwin32\lib\gcc-lib\i386-cygwin32\cygnus-2.7.2- +961023: + cc1plus.exe + +Note that this does not include support for the standard C++ libraries +(only the C run time libraries) or for iostreams. That support is still +only available with the Cygwin32 API. + + +3.3 Extra Utilities of Extreme Usefulness + +Even if you do not use the bash shell or UNIX utilities in general some +of the utilities in C:\cygnus\H-i386-cygwin32\bin are extremely useful +for debugging and probably shouldn’t be deleted if you intend to do any +actual programming using the system. + +These include: + dlltool.exe, gdb.exe, nm.exe, and strip.exe. + + +3.4 Jam + +Jam is a make replacement program that I use pretty much exclusively, +which is why you don't find any Makefile, makefile, makefile.mk or all +that in the stuff that I do. You do find jamfiles and the occaisional +mk.bat file. The executable of Jam is only 80 KB and the program is +incredibly useful, so I would encourage you do download the special +Mingw32 version and check it out. The Mingw32 version has built in rules +for adding resources, building DLLs and import libraries as well as +normal C and C++ files. The source code is, of course, freely available. + +The actual point of this section though, is to point out that to use Jam +you need not only the Jam executable but also rm.exe from the Cygwin +distribution. You also might want to download rcl.exe and res2coff.exe +as these are the helper programs Jam expects to use for resource script +handling. + + +4. Legalities + +All of the code in the Mingw32 package is available as public domain +source. You may use and modify the code as you like. Of course I +encourage you to write software which is free, either public domain or +under the GNU Public License for example, but that is up to you. Linking +with the libraries included with Mingw32 similarly does not impose any +licensing restrictions on your code or binaries. + +The library libgcc.a, which is linked into all code produced with GCC, +is under a special version of the LGPL (as far as I know, you should +check for yourself) which allows the distribution of programs which are +simply linked with unmodified versions of libgcc.a with no licensing +restrictions. + +Thus, using Mingw32, you should be able to produce code with no +licensing restrictions imposed by use of the compiler or libraries. The +Cygwin32 API, and the GNU libraries are another matter and you should +consult their license agreements. + +Again I must stress that I am not a lawyer and the above statements only +reflect my personal understanding of the situation. You would be well +advised to consult the actual text of the appropriate copyright notices +and license agreements if you have any concerns. + + +5. Support + +First of all, the Mingw32 code is supplied AS IS with NO WARRANTY either +EXPRESS or IMPLIED. + +There is also no support staff standing by to take your calls. There +are, however, a few people, including myself, using Mingw32 who might be +able to help you. If you have problems you can email me at +colin@bird.fu.is.saga-u.ac.jp and I will try to get back to you. No +guarantees, but I will do my best. + + +6. Suggestions and Contributions + +If you find a bug in the Mingw32 files themselves then feel free to +report it, or even better to supply a fix, by emailing me at +colin@bird.fu.is.saga-u.ac.jp. Any fixes I receive will probably go into +the next release, and if they seem high-priority I may put the patched +files on my web page until I can make a complete release. Please note +that if you supply code it must be in the public domain or I cannot +include it in Mingw32. Please attach an appropriate legal message to the +code or otherwise make sure that there are no copyright issues. Of +course if you just suggest a possible method for solving a problem or +point out a bug then there should be no need for all that. + +Note that the Win32 API header files are not actually part of the +Mingw32 package. I know there are many bugs and omissions, and I try to +keep informed about them, so I do appreciate mail pointing them out. +However I can’t fix these problems at the source. You should send email +to Scott Christley (the author of the GPL windows32-api) or possibly to +Cygnus. Sending email to me might get me to mention it on my homepage or +fix it in my personal copy of the header files, but that’s about it +(sorry). + +Aside from bug reports, suggestions for improvements, testing of the +header files and otherwise praise or criticism is all welcome in my +inbox. + +Good luck, +Colin Peters (colin@bird.fu.is.saga-u.ac.jp) + |