This is the mail archive of the cygwin-apps mailing list for the Cygwin project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

Re: ITA: gcc-mingw-* gcc-3 -mno-cygwin support packages; ITP: mingw-binutils/mingw-gcc-* cross compiler


On Tue, 2010-11-23 at 17:28 -0500, Charles Wilson wrote:
> ------------------  1  ---------------
> The first set of packages are revisions (actually, just rearranging the
> contents) of the venerable add-on packages that provide -mno-cygwin
> support for gcc-3.

Why can't we keep things simple and just dump those outright?  Aside
from nostalgia, what reason do we have to continue supporting gcc3 when
AFAIK no other major distro does so?

This would mean making these empty _obsolete packages (with cleanup
postinstall scripts if necessary), and dropping the gcc-mingw-* deps
from gcc-* (3.x).

> ------------------  2  ---------------
> The second group of packages are the libraries associated with the new
> cross compiler. This includes:

This part looks sane, except for the split DLL/-devel packages, but
we've already discussed that at length.

> ------------------  3  ---------------
> The third group of packages is the actual cross compiler toolchain. This
> includes:
> 
> = mingw-binutils-2.20.51-1-src.tar.bz2
> = mingw-binutils-2.20.51-1.tar.bz2
> 
> = mingw-gcc-4.5.1-1-src.tar.bz2
> = mingw-gcc-core-4.5.1-1.tar.bz2
> = mingw-gcc-fortran-4.5.1-1.tar.bz2
> = mingw-gcc-g++-4.5.1-1.tar.bz2
> = mingw-gcc-objc-4.5.1-1.tar.bz2

Of course, by now binutils 2.21 and gcc-4.5.2 are out...

BTW, do these include the shrext=.dll.a patch for config.rpath?  This is
necessary for dynamic linking against libintl in binutils, gcc, and gdb.

> These tools are configure as cross-compilers with sysroot support -- the
> gcc configuration CYGCONF_ARGS are:
>         --disable-multilib
>         --disable-win32-registry
>         --enable-languages=c,c++,fortran,objc,obj-c++
>         --enable-fully-dynamic-strings
>         --enable-libgomp
>         --disable-sjlj-exceptions
>         --enable-libstdcxx-debug
>         --enable-version-specific-runtime-libs
>         --with-dwarf2
>         --disable-werror
>         --enable-lto

I presume that these match the "official" native MinGW options, so that
binaries are compatible?

> Once a native cygwin gcc-4.5.1 (or perhaps 4.5.0) with ada support is
> made official, I'll update mingw-gcc to also include ada (you need a
> native ada compiler of a similar version in order to build an ada cross
> compiler).

Ahem, Dave?????

http://cygwin.com/ml/cygwin/2011-01/msg00049.html

> When MinGW.org offers a 4.5.x compiler with java support, I'll update
> this cross compiler to do so as well.

FYI, I have found an issue building ecjx (which installs as ecj1) as
part of a cross-gcc; ecjx.o is cross-compiled with xgcc instead of
native-compiled with $host-gcc, but linked with the latter.  Preliminary
patch attached.

> With these new packages installed, I was able to build setup.exe from
> current CVS without issue -- by default, the existing bootstrap.sh
> script now uses the cross compiler automatically if
> 	i686-pc-mingw32-g++
> is installed.

I took care of mingw-gcc-4.5 issues when I discovered them as part of
the cygport cross-compiler support development.

> With only the gcc-mingw- "add ons" for gcc-3 installed (plus its
> pre-requisites: mingw-binutils, mingw-w32api, mingw-runtime, AND
> mingw-gcc-core which provides i686-pc-mingw32-gcc but NOT
> i686-pc-mingw32-g++), I was able to build setup.exe using gcc-3
> -mno-cygwin -- but I had to pass
>    CPPFLAGS=-I/usr/i686-pc-mingw32/sys-root/mingw/include
>    LDFLAGS=-L/usr/i686-pc-mingw32/sys-root/mingw/lib
> as commandline arguments to bootstrap.sh.  The attached patch does this
> automatically.

Yuck.  Let's just drop support for gcc -mno-cygwin and be done with it.

> Finally: official rollout.
> 
> I don't know how we can ease the pain of the three step (or, at minimum,
> two step) install process, given the wacky things the EXISTING
> gcc-mingw- packages have already done to the file system tree.  One
> possibility is to ONLY release the updated gcc-mingw- addons (with
> judicious modifications of their requires: lines) and let people install
> those.  Say, for about a month.
> 
> 
> Then, after the month has passed, go ahead and move the other packages
> over to sourceware.  People who "blindly upgrade" after than will bork
> their system (it's fixable, but awkward) -- but MOST people will have
> already upgraded their gcc-mingw (and probably didn't even notice), so
> they'll be fine.

I suppose the alternative is to document the upgrade steps in the
announcement, and deal with the problems from all those that don't read
them.


Yaakov

--- origsrc/gcc-4.5.2/libjava/Makefile.am	2010-07-15 07:05:56.000000000 -0500
+++ src/gcc-4.5.2/libjava/Makefile.am	2011-01-11 16:17:07.828828300 -0600
@@ -1124,10 +1124,17 @@ endif
 else !NATIVE
 
 ecjx_LINK = $(GCJ_FOR_ECJX_LINK) $(ecjx_LDFLAGS)
+if INSTALL_ECJ_JAR
 ecjx_LDFLAGS = $(ECJX_BASE_FLAGS) $(ECJ_BUILD_JAR)
+else
+ecjx_LDFLAGS = $(ECJX_BASE_FLAGS) -Djava.class.path=$(ECJ_JAR)
+endif
 ecjx_LDADD = 
 ecjx_DEPENDENCIES = 
 
+ecjx.$(OBJEXT): ecjx.cc
+	$(GCJ_FOR_ECJX) -c -o $@ $<
+
 endif !NATIVE
 
 ## This is a dummy definition.
--- origsrc/gcc-4.5.2/libjava/Makefile.in	2010-12-16 06:49:03.000000000 -0600
+++ src/gcc-4.5.2/libjava/Makefile.in	2011-01-11 16:18:06.282130200 -0600
@@ -8515,7 +8515,8 @@ ECJX_BASE_FLAGS = -findirect-dispatch \
 @NATIVE_TRUE@ecjx_LINK = $(GCJLINK) $(ecjx_LDFLAGS)
 @ENABLE_SHARED_FALSE@@NATIVE_TRUE@ecjx_LDFLAGS = $(ECJX_BASE_FLAGS) $(ECJ_BUILD_JAR) -fbootclasspath=$(BOOTCLASSPATH)
 @ENABLE_SHARED_TRUE@@NATIVE_TRUE@ecjx_LDFLAGS = $(ECJX_BASE_FLAGS) -Djava.class.path=$(ECJ_JAR)
-@NATIVE_FALSE@ecjx_LDFLAGS = $(ECJX_BASE_FLAGS) $(ECJ_BUILD_JAR)
+@INSTALL_ECJ_JAR_FALSE@@NATIVE_FALSE@ecjx_LDFLAGS = $(ECJX_BASE_FLAGS) -Djava.class.path=$(ECJ_JAR)
+@INSTALL_ECJ_JAR_TRUE@@NATIVE_FALSE@ecjx_LDFLAGS = $(ECJX_BASE_FLAGS) $(ECJ_BUILD_JAR)
 @NATIVE_FALSE@ecjx_LDADD = 
 @NATIVE_TRUE@ecjx_LDADD = -L$(here)/.libs $(extra_ldflags) \
 @NATIVE_TRUE@	$(am__append_31)
@@ -12888,6 +12889,9 @@ write-entries-to-file-check:
 @MAINTAINER_MODE_TRUE@@NATIVE_TRUE@	>> tmp-0212; \
 @MAINTAINER_MODE_TRUE@@NATIVE_TRUE@	mv tmp-0212 $(srcdir)/gnu/gcj/convert/JIS0212.h
 
+@NATIVE_FALSE@ecjx.$(OBJEXT): ecjx.cc
+@NATIVE_FALSE@	$(GCJ_FOR_ECJX) -c -o $@ $<
+
 src.zip:
 	-rm -f src.zip
 	here=`pwd`; \

Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]