Mailing-List: contact cygwin-help AT sourceware DOT cygnus DOT com; run by ezmlm List-Subscribe: List-Archive: List-Post: List-Help: , Sender: cygwin-owner AT sourceware DOT cygnus DOT com Delivered-To: mailing list cygwin AT sourceware DOT cygnus DOT com Message-ID: <19991219160908.9077.qmail@web121.yahoomail.com> Date: Sun, 19 Dec 1999 08:09:08 -0800 (PST) From: Earnie Boyd Reply-To: earnie_boyd AT yahoo DOT com Subject: Re: ANNOUNCE selfhosting mingw32 To: jrson AT az DOT freei DOT net, cygwin AT sourceware DOT cygnus DOT com MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii --- Mikey wrote: > Hi all ;-) > Hi Mikey, > I have uploaded the self hosting version of mingw32 > to ftp.franken.de and Michael Hirmke has placed them > into the directory > ftp://ftp.franken.de/pub/win32/develop/gnuwin32/mingw32/porters/Mikey/ > 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 myself. > 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 ;-( > > > 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 utod.exe > > > 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 http://sourceware.cygnus.com, > 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. > NOT A FULL FORK IMPLIMENTATION use with care > 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 command.com/cmd.exe) > 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 mingw32 AT eGroups DOT com where you should also post this. Good Luck, Earnie. ===== Earnie Boyd Cygwin Newbies, please visit __________________________________________________ Do You Yahoo!? Thousands of Stores. Millions of Products. All in one place. Yahoo! Shopping: http://shopping.yahoo.com -- Want to unsubscribe from this list? Send a message to cygwin-unsubscribe AT sourceware DOT cygnus DOT com