• Some users have recently had their accounts hijacked. It seems that the now defunct EVGA forums might have compromised your password there and seems many are using the same PW here. We would suggest you UPDATE YOUR PASSWORD and TURN ON 2FA for your account here to further secure it. None of the compromised accounts had 2FA turned on.
    Once you have enabled 2FA, your account will be updated soon to show a badge, letting other members know that you use 2FA to protect your account. This should be beneficial for everyone that uses FSFT.

New MinGW Distro

STL

Supreme [H]ardness
Joined
Oct 20, 2001
Messages
4,313
I am pleased to announce that I have completed a new version of my MinGW distribution.

http://nuwen.net/files/mingw.zip (15.6 MB)

MinGW is a port of GCC to Windows. My distribution includes GCC, as well as a large number of libraries and utilities, all set up so that you can immediately begin using them.

To install:

* Extract to C:\MinGW (NOT C:\MinGW\MinGW).
* Add C:\MinGW\bin to the Path.
* Set the environment variable RM to: del

That's it! To uninstall, simply delete C:\MinGW and put your environment variables back to the way they were.

It should be noted that it is very important that you not modify anything in the directory unless you know exactly what you are doing. In particular, do not do your development in this directory, or you will be very unhappy if you ever upgrade your distro and lose all of your work.

This Distribution Includes:

[ESSENTIALS]
* binutils 2.15.90 20040222
* gcc 3.3.3 [bootstrapped in MSYS]
* mingw-runtime 3.2
* w32api 2.5

[LIBRARIES]
* Boost 1.31.0 [with libboost_filesystem and libboost_regex]
* glpng 1.45
* libbzip2 1.0.2
* libpng 1.2.5
* SDL 1.2.7
* SDL_image 1.2.3 [without LOAD_JPG and LOAD_TIF]
* zlib 1.2.1 [with TOO_FAR set to 32767]

[UTILITIES]
* bison 1.875 20030210
* (boost-jam 3.1.9)
* bzip2 1.0.2
* (cat 2.1)
* (cvs 1.11.12)
* (diff 2.7)
* (expand 2.1)
* (factor 1.13)
* flex 2.5.4a
* gdb 6.0 20031011
* grep 2.5.1 [hacked to work with MinGW and to make color highlighting work]
* gzip 1.2.4a
* make 3.80.0-3
* patch 2.5.9 [hacked to work with MinGW]
* (sha1sum 2.1)
* (sort 2.1)
* (split 2.1)
* (tar 1.12)
* (uniq 2.1)
* (upx 1.24w)
* (wc 2.1)
* (wget 1.8.2)

Parentheses around a component indicate that I did not compile that component myself.

I'll be more fully documenting the use of the distro, as well as my process for building it, in the future. I don't know of any bugs in the distro, other than the fact that it can't build boost-jam (and that failure totally mystifies me). I figured the [H] would want to be on the bleeding edge, so there you go.

This distro supersedes my old distro, which had gcc 3.3, boost 1.30.0 or Boost CVS, older libraries, and fewer utilities.
 
I assume binaries produced by your distro cannot be run by SSEless processors. Correct?

Shit happened and I'm using a PII system for a tad, and if that's so, I'll try out your distro soon enough.

Thanks
 
> I assume binaries produced by your distro cannot be run by SSEless
> processors. Correct?

Incorrect. I removed that a long time ago. Any i386 or higher should be able to run my distro. (Modulo the programs I didn't compile myself, but they should be okay.)
 
Oh, I should mention that there's something neat you can do with this distro - you can add 48x48 full alpha icons to your executables (or any other size, etc.).

If you have a source file named hello.cc and an icon named test.ico, then executing the following will add the icon to the resulting executable:

(echo ProgramIcon ICON test.ico | windres -o icon.o) && gpp -Wall -W -s -O3 hello.cc icon.o -o hello.exe && del icon.o
 
You included all sorts of goodies and I really dig that. Perhaps you could have included and "rm" executable too? I know that it's part of the UnixUtils package on SourceForge (in other words, it's already ported). This is just a suggestion since it would save having to set an environment variable. While you're at it, you could also include other utilities like "cp", "ls", "mv".
 
[ZeroX]
> You included all sorts of goodies and I really dig that.

Woot.

> Perhaps you could have included and "rm" executable too?
> While you're at it, you could also include other utilities
> like "cp", "ls", "mv".

I haven't found myself accidentally typing those too much in cmd.exe yet, but I guess I might in my next distro.

> This is just a suggestion since it would save having to set an
> environment variable.

I use the environment variable in my Makefiles to detect the presence of a Windows system.

I suppose there are better ways to do that though. Just more work. ;-)
 
Oh, I forgot to mention. The grep in this distro has been hacked to properly highlight colors when -i (case insensitivity) has been used with a search term that contains uppercase characters. My hack is dirty, but it works. The old grep worked fine in this situation, but the color highlighting failed.
 
I was able to add an icon to my exe's using the method you described, but I'm not sure why I cant just make a 48x48 bmp in mspaint and rename it *.ico - I get the message "windres: icon file `test.ico' does not contain icon data".
Whats the difference between a normal icon file and icons made by my previously indicated method?
 
The ICO format is not the same as the BMP format, that's all there is. Would you expect a player which can only play WAVs to play MP3s too?

In order to, say, make a 48x48 image with a true alpha drop shadow and get that into an icon, here's what you should do:

1. Create image in Photoshop.
2. Save as PNG, as that format supports 32-bit color with full alpha.
3. Use IconXP to convert PNG to ICO.

If you need help obtaining and using IconXP, come to my IRC channel and I can help you figure out how to use it. It's pretty easy.
 
Downloaded your distro.

No problems with installing.

However I use gcj to test java programs. Since gcj needs the files in C:\MinGW\lib\gcc-lib\i686-pc-mingw32 to be in C:\MinGW\lib\gcc-lib\mingw32 I made a copy of the i686-pc-mingw32 folder, renamed it to mingw32 and put it it C:\MinGW\lib\gcc-lib . I did that before I installed gcj so that when I copied the gcj folders/files into c:\minGW , it would just add to C:\MinGW\lib\gcc-lib\mingw32 .

I initially just renamed i686-pc-mingw32 to mingw32 until I found out that g++ had a fit and needed the files to be in the i686 folder.

That was not a problem to copy the folder and rename it, but just letting you know. (Your distro's about c++ anyway)

Also just an observation from gcc 3.3.1 to 3.3.3.

Code:
#include <cstdio>

using namespace std;

int main() {
    printf("\nHello world!\n");
}

In 3.3.3, that produces a 394KB binary and strip takes it down to 5.50.

In 3.3.1 that produces a 13.9KB binary and strip takes it down to 5KB.

(Was just trying to produce a small file by only using cstdio for kicks)
 
[Shadow2531]
> Downloaded your distro.
> No problems with installing.

Cool.

> However I use gcj to test java programs.

I don't compile gcj with my MinGW distro as I don't use Java myself, and didn't want to consume the extra space.

When I release my build scripts, you can compile gcj yourself, if you like.

> Since gcj needs the files in C:\MinGW\lib\gcc-lib\i686-pc-mingw32
> to be in C:\MinGW\lib\gcc-lib\mingw32

I guess that's because mingw.org's gcj is compiled with a build/host/target of mingw32. I use autodetection, which uses i686-pc-mingw32.

If you built gcj yourself, you could use a consistent build/host/target.

> Also just an observation from gcc 3.3.1 to 3.3.3.

I suppose that's my 3.3.3 versus their 3.3.1, since I never released a 3.3.1 distro.

Well, since they both go down to the same stripped size, that's okay.

For a while during my bootstraps I was producing a HUGE (10x normal size) libstdc++.a, until I figured out the right incantations to build an optimized libstdc++.a.
 
[STL]
> I suppose that's my 3.3.3 versus their 3.3.1, since I never released a 3.3.1 distro.

Yes, I was referring to your 3.3.3 versus the 3.3.1 on the mingw page.

> When I release my build scripts, you can compile gcj yourself, if you like.

Yes, I will attempt to build gcj then. Thanks

As you can see I'm giving the quote style you use a try.

I use SquirrelMail for email and do about the same thing with email anyway. It really helps with mailing lists and lets others know what the heck is going on. Off topic so....
 
Back
Top