ANNOUNCE selfhosting mingw32

Earnie Boyd
Sun Dec 19 08:09:00 GMT 1999

--- Mikey <> wrote:
> Hi all ;-)

Hi Mikey,

> I have uploaded the self hosting version of mingw32
> to and Michael Hirmke has placed them
> into the directory

This sounds great.

> The following is from the file ming-selfhost-README.doc in the distribution.
> This is kind of an expansion on what Earnie
> did for with mingw32-sup.1.0, except he and I disagree
> on binary/text mode issues in the development tools.

Could you please remind me of what our differences are?  Mainly so I can defend

> This package is targeted for developers who
> wish to use the GNU tools to develop/modify
> win32 programs written for either the VC++ 5/6,
> or GNU development environments with the same
> set of tools/headers/libs.
> Included are wrappers for gcc and ld
> to allow them to act like vc5 cl.exe, link.exe, and lib.exe
> anyone with Visual Stupidio who dosen't want
> to lay out $500 or $1300 for VC6 prof/ent for an
> occasional .c compile should hopefully appreciate this.
> Changes to the standard utils.
>   All programs use binary mode opens by default,
> so piping between programs works correctly.
> in ash
>   this is the main shell runs .exe .com and #! scripts
> including modified Cygwin configure and autoconf configure.
> under NT4 you get session history using the up and down arrow
> keys if you start sh directly!!
>   ps and kill are shell builtins (kill ANY process! DON'T 
> kill kernel32.dll!! :)
>   see the files .../home/.shrc .../home/func/help
> and .../src/fsrc/ash/sh.1 for ash usage.
> in fileutils
> 	install.exe and ln.exe map srcfile to srcfile.exe
> and destfile to destfile.exe if srcfile doesn't exist,
> none of the fileutils will try to overwrite a file with itself.
> in mingw32
>   working fork()/wait()/exec() and kill() when compiling with -ufork
>   cl.exe/link.exe/lib.exe wrappers for gcc/dlltool, bscmake.exe stub,
> dtou.exe/utod.exe
> to convert \r\n <> \n.
> in binutils
>   linking with and producing vc5 compatible lib's/obj's (dlltool only)
>   C_NT_WEAK symbols handled correctly. see .../src/src/mingw/mkweak.shc for
> how.
> in gcc-2.95.2
>   url(s) && small patch for the Platform SDK headers.
>   support for all vc5 features except the c++ abi, 
> c++ name mangeling and [] zero length arrays in structs. (supported in
> PSDK.dif)
> use -console or -windows for the Platform SDK headers/libs.
> (use the Platform SDK headers/libs, and the same libraries for vc5/6 and
> gcc))
> in gdb
>   working readline w/session history, suitable for use
> as JIT system debugger (debug forkees!!-)
> in libiberty
>   access() and stat() map file to file.exe, /dev/con* /dev/tty 
> /dev/null on process command line with -un_x or -ufork,
> many added/wrapped functions for un*x/posix compatibility.
> in autoconf
>   Path seperator is changed to ; to support the normal
> windoze style $path also absolute path/filenames can use drive letters
> in gmake
>   $VPATH and quoted command lines work correctly now.
> in tar
>   fork()ing tar -z and -I work correctly for tar.gz and tar.bz2
> in sed
>   fixes for all known problems passes all tests from sed-3.05
> Packages configured built and uploaded
>   ash derived from debian via ashos2-emx ;-)
>   fileutils-3.16
>   textutils-1.22
>   sh-utils(AKA shellutils)-1.12
>   less-340
>   grep-2.3
>   diff-2.7
>   Autoconf-2.13.1 CVS
>   automake-1.4a CVS
>   binutils-2.9.4 CVS-19990528
>   gzip-1.2.4
>   bison-1.28
>   flex-2.5.4
>   gawk-3.0.4
>   gmake-3.77
>   bzip2-0.9.0c
>   dmake-4.1.1
>   egcs-1.1.2
>   gdb-19990525
>   m4-1.4
>   patch-2.5
>   sed-2.05
>   readline-2.2 "w/Earnie's fixes"
>   termcap-1.3
>   perl-5.005_02
>   pdcurses-2.3b
>   makeinfo-1.68 from texinfo-3.12
> Thanks in no particular order are due to
> Geoff Noer, Mumit Kahn, and Earnie Boyd,
> for inspiring me to finally get off my A*S
> and do something about it.

You're welcome.  This is a welcome package.  I'm assuming that none of this
uses the Cygwin dll, I'm I correct on this.

> All L/GPL binaries have matching sources,
> Sorry to people on 28.8 modems, but
> I see no other way to guarantee compliance
> with the L/GPL ;-(
> <rant /on>
> Please do not use so called "text"
> mode files/pipes when compiling un*x utils,
> anything that always breaks
> lseek etc. in the system libc is fundamentally
> broken, and should be fixed in the OS.
> to convert use dtou.exe or <bleech> utod.exe
> <rant /off>
> Using text mode configuration files
> for your newly written user(s) programs is recommended,
> There are too many people out there
> who will save a .cfg file from notepad
> even when you tell them not to.-)
> These programs are
> linked with binmode.o, _fmode == 0x8000
> stdin/out/err are set to binary mode where
> appropriate in __main when this is done.
> This means you (or your unix makefile :) can do
> for file in *.1;do cat $file|gzip -c9 >/usr/man/man1/$file;done
> and it will work as expected.
> Packages that needed changes to build/run
> correctly, already have the diffs applied.
> The diff to the pristine source
> is in the root of the
> src/$package dir for those who are interested.
> The diffs are in the Public Domain, anyone
> can use them for any purpose.
> Most docs and nls files are missing
> or at least not installed, if you need
> them goto ,
> or your nearest GNU mirror,
> some of the files that would be needed
> to cross compile these utils using these
> sources are also missing.
> To cross compile these
> from say linux apply the diffs to pristine
> sources, don't use the win32 autoconf
> just configure and make normally.
> Gcc switches that you will need
> -Zbin-mode (links with binmode.o see above)
> -un_x (links with binmode.o and this libiberty 
>         many replaced and new
> 	funcs for unix/posix compatibility
> 	allows use of /dev/con* /dev/tty /dev/null
> 	on the command line of the process
>         see src/libiberty)
> -ufork (links with binmode.o libiberty and fork.lib 
>         replaces malloc &co.
> 	most programs that fork() will need at least 
>         some rewriting see src/src/mingw/fork.c)
> -windows (use the Platform SDK headers if installed )
> -console (use the Platform SDK headers if installed -DWIN32_LEAN_AND_MEAN)
> -lLIBNAME         option to ld.exe (small L)
> searches first for LIBNAME then LIBNAME.lib files, then libLIBNAME.a
> (should make for easier use under

Wow, Mikey, you sure have a lot of work here.  I was actually thinking of
actively doing something like this.  It looks like you've beat me to the punch.

Please note:  there is an active Mingw32 list where you
should also post this.

Good Luck,

Earnie Boyd < >
Cygwin Newbies, please visit
< >
Do You Yahoo!?
Thousands of Stores.  Millions of Products.  All in one place.
Yahoo! Shopping:

Want to unsubscribe from this list?
Send a message to

More information about the Cygwin mailing list