From: Federico F. <fed...@di...> - 2002-06-18 07:14:29
|
Thank you! You've done such a great job! thanks again On Mon, 2002-06-17 at 20:13, Jos=E9 Fonseca wrote: > On 2002.06.17 18:13 Jos=E9 Fonseca wrote: > > Ok, I'm going to try to build the gcc-3.1 cross-compiler myself. So far= =20 > > I hadn't felt much need for it, but I feel it's my obligation to take m= y=20 > > own medicine ;-) > >=20 > > ... >=20 > Done. I've successfuly built the most recent binutils and gcc versions,=20 > and with them I successfuly compiled hello.c and hello.cxx samples. I=20 > haven't tested with more complicated examples but I suppose that if it go= t=20 > this far then it's because everything is fine (but I could be wrong...) >=20 > I've adapted the xmingw32.mak to do the steps I made. I'm not putting thi= s=20 > on my webpage because it has some kludges and gcc-3.1 is not considered=20 > stable anyway, so I've attached it. The hello.cxx is also attached. To=20 > make the test examples just do "make -f xmingw32.mak test" and them use=20 > WINE or your preferred windows emulators to run the output exectuables. >=20 > I'm still using as target the same 'i386-mingw32msvc' used by Mumit Khan=20 > before, but I noticed that the distributed gcc-3.1 uses just 'mingw32'. I= s=20 > this definite and will just 'mingw32' work with older binutils/gcc=20 > versions, such as gcc-2.95.3 ? >=20 > Jos=E9 Fonseca > ---- >=20 > # xmingw32.mak > # > # A makefile that automates the process of building a MinGW cross compile= r. > # > # Copyright (C) 2002 Jos=E9 Fonseca > # > # This program is free software; you can redistribute it and/or > # modify it under the terms of the GNU General Public License > # as published by the Free Software Foundation; either version 2 > # of the License, or (at your option) any later version. > # > # This program is distributed in the hope that it will be useful, > # but WITHOUT ANY WARRANTY; without even the implied warranty of > # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the > # GNU General Public License, http://www.gnu.org/copyleft/gpl.html > # for more details. > # > # Jos=E9 Fonseca <j_r...@ya...> > # > # Example, > # make -f xmingw32.mak > # >=20 >=20 >=20 > # Variables definition >=20 > #TARGET=3Dmingw32 > TARGET=3Di386-mingw32msvc > #PREFIX=3D/usr/local/xmingw32 > PREFIX=3D$(HOME)/local/xmingw32 >=20 > BINUTILS_VERSION =3D 2_12_90-20020518-1 > #BINUTILS_VERSION =3D 2.11.92-20011113 > GCC_VERSION =3D 3_1-20020516-1 > #GCC_VERSION =3D 2.95.3-20011106 > MINGW_RUNTIME_VERSION =3D 2.0 > W32API_VERSION =3D 1.5 >=20 > BINUTILS_TARBALL =3D binutils-$(BINUTILS_VERSION)-src.tar.gz > GCC_TARBALL =3D gcc-$(GCC_VERSION)-src.tar.gz > MINGW_RUNTIME_TARBALL =3D mingw-runtime-$(MINGW_RUNTIME_VERSION).tar.gz > W32API_TARBALL =3D w32api-$(W32API_VERSION).tar.gz >=20 > # Note that http://prdownloads.sourceforge.net/mingw/ doesn't work so cho= ose one of the mirrors >=20 > BASE_URL =3D ftp://ftp.sf.net/pub/sourceforge/mingw/ > #BASE_URL =3D http://telia.dl.sourceforge.net/sourceforge/mingw/ > #BASE_URL =3D http://unc.dl.sourceforge.net/sourceforge/mingw/ > #BASE_URL =3D http://belnet.dl.sourceforge.net/sourceforge/mingw/ >=20 > ARCH=3Di386 > REDHAT=3D/usr/src/redhat >=20 >=20 >=20 > # Default target >=20 > .PHONY: all > all: download binutils mingw-runtime w32api gcc scripts >=20 >=20 >=20 > # Download the tarballs from web >=20 > $(BINUTILS_TARBALL) $(GCC_TARBALL) $(MINGW_RUNTIME_TARBALL) $(W32API_TARB= ALL): > wget --passive-ftp $(patsubst %,$(BASE_URL)%,$@) >=20 > .PHONY: download > download: $(BINUTILS_TARBALL) $(GCC_TARBALL) $(MINGW_RUNTIME_TARBALL) $(W= 32API_TARBALL) >=20 >=20 >=20 > # Create the installation directories >=20 > $(PREFIX): > mkdir -p $@ >=20 > $(PREFIX)/$(TARGET): > mkdir -p $@ >=20 >=20 >=20 > # Unpack, build and install the binutils >=20 > binutils-$(BINUTILS_VERSION): $(BINUTILS_TARBALL) > tar -xzf $(BINUTILS_TARBALL) > ifeq ($(BINUTILS_VERSION),2_12_90-20020518-1) > # Patch to avoid the use of stricmp in binutils-2_12_90-20020518-1-src.t= gz > cp binutils-2_12_90-20020518-1/ld/pe-dll.c /tmp/pe-dll.c > sed -e 's/stricmp/strcasecmp/g' /tmp/pe-dll.c > mv /tmp/pe-dll.c binutils-2_12_90-20020518-1/ld/pe-dll.c > endif > touch $@ >=20 > binutils-$(BINUTILS_VERSION)/Makefile: binutils-$(BINUTILS_VERSION) > cd binutils-$(BINUTILS_VERSION) && ./configure --target=3D$(TARGET) --pr= efix=3D$(PREFIX) > ../binutils-configure.log 2>&1 >=20 > .PHONY: binutils > binutils: binutils-$(BINUTILS_VERSION)/Makefile $(PREFIX) > cd binutils-$(BINUTILS_VERSION) && make "CFLAGS=3D-s -O2" > ../binutils-= build.log 2>&1 > cd binutils-$(BINUTILS_VERSION) && make install > ../binutils-install.lo= g 2>&1 > =09 >=20 >=20 > # Install the MinGW C runtime headers and libraries >=20 > .PHONY: runtime > mingw-runtime: $(RUNTIME_TARBALL) $(PREFIX)/$(TARGET) > tar -xzf $(MINGW_RUNTIME_TARBALL) -C $(PREFIX)/$(TARGET) > mingw-runtime= -install.log 2>&1 >=20 >=20 >=20 > # Install the MinGW Win32 API headers and libraries >=20 > .PHONY: w32api > w32api: $(W32API_TARBALL) $(PREFIX)/$(TARGET) > tar -xzf $(W32API_TARBALL) -C $(PREFIX)/$(TARGET) > w32api-install.log 2= >&1 >=20 >=20 >=20 > # Unpack, build and install the gcc >=20 > gcc-$(GCC_VERSION): $(GCC_TARBALL) > tar -xzf $(GCC_TARBALL) > ifeq ($(GCC_VERSION),3_1-20020516-1) > # Hack around inconsistent path in gcc-3_1-20020516-1-src.tar.gz > mv gcc-3_1-20020516 gcc-3_1-20020516-1 > endif > touch $@ >=20 > gcc-$(GCC_VERSION)/Makefile: gcc-$(GCC_VERSION) > cd gcc-$(GCC_VERSION) && ./configure --target=3D$(TARGET) --prefix=3D$(P= REFIX) --enable-languages=3Dc,c++,f77 > ../gcc-configure.log 2>&1 >=20 > .PHONY: gcc > gcc: binutils mingw-runtime w32api gcc-$(GCC_VERSION)/Makefile $(PREFIX) > cd gcc-$(GCC_VERSION)/gcc && make installdirs > ../gcc-build.log 2>&1 > export PATH=3D$(PREFIX)/bin:$(PATH) ; cd gcc-$(GCC_VERSION) ; make "CFLA= GS=3D-s -O2" >> ../gcc-build.log 2>&1 > export PATH=3D$(PREFIX)/bin:$(PATH) ; cd gcc-$(GCC_VERSION) && make inst= all > ../gcc-install.log 2>&1 >=20 >=20 >=20 > # Creates scripts to facilitate the use of the cross compiler toolchain >=20 > xmingw32.sh: xmingw32.sh.in > sed -e s%@target@%$(TARGET)%g -e s%@prefix@%$(PREFIX)%g $< > $@ >=20 > xmingw32.bat: xmingw32.bat.in > sed -e s%@target@%$(TARGET)%g -e s%@prefix@%$(PREFIX)%g $< > $@ >=20 > .PHONY: scripts > scripts: xmingw32.sh xmingw32.bat >=20 >=20 >=20 > # A small test case >=20 > .PHONY: test > test: hello.c hello.cxx > export PATH=3D$(PREFIX)/bin:$(PATH) ; $(TARGET)-gcc -o hello.exe hello.c > export PATH=3D$(PREFIX)/bin:$(PATH) ; $(TARGET)-g++ -o hello2.exe hello.= cxx >=20 >=20 >=20 > # Cleans the build trees >=20 > .PHONY: clean > clean: > rm -f *.log > rm -rf binutils-$(BINUTILS_VERSION) gcc-$(GCC_VERSION) > rm -f xmingw32.sh xmingw32.bat > rm -f hello.exe >=20 >=20 >=20 > # Uninstall the cross compiler (Use with care) >=20 > .PHONY: uninstall > uninstall: > rm -rf $(PREFIX) > ---- >=20 > #include <iostream> >=20 > int main(int argc, char **argv) > { > using namespace std; > =09 > cout << "Hello" << endl; > return (0); > } |