On 2002-06-16 02:39 -0700, Kris Kennaway <[EMAIL PROTECTED]> wrote:
> On Sat, Jun 08, 2002 at 11:29:26AM +0200, Stefan Esser wrote:
>
> > I got around this problem by (indirectly) fixing the ".c.o" rule
> > in the Imakefile. This patch was part of my previous mail to you
> > regarding the XFree86 library build process (new version of patch-z32).
>
> Thanks for looking into this; I'd appreciate it if someone could
> commit a fix, but the patch below is suboptimal because it affects all
> versions of FreeBSD. Can you modify it so it only disables
> optimization on (recent) 5.0?
>
> > File: /usr/ports/x11/XFree86-4-libraries/files/patch-z32
> >
> > --- lib/GL/mesa/src/OSmesa/Imakefile.orig Tue Apr 3 11:29:33 2001
> > +++ lib/GL/mesa/src/OSmesa/Imakefile Wed Jun 5 12:28:26 2002
Ok, here is an improved patch:
1) I've made the redefinition of the compiler command
dependent on __GCC__ >= 3.
2) The actual rule that is generated for GCC-3.x is now of the form
cc -O ... || cc -O0 ...
That way, only those files that could not be compiled with
optimization enabled are tried again without optimization:
#if defined(__GNUC__) && __GNUC__ >= 3
#define ObjectCompile(options) RemoveFile($@) @@\
ClearmakeOSName \
$(CC) -c $(CFLAGS) options $*.c -o $@ || \
$(CC) -c $(CFLAGS) options -O0 $*.c -o $@
#endif
The GCC bug is triggered building XFree86-4-libraries and XFree86-4-Server.
I include uni-diffs for patch "patch-z32" to fix the former, and a new
"patch-OSmesa-Imake" for the latter (both to be applied from /usr/ports/).
I'm currently rebuilding both the libraries and server ports with
those patches, but it will take some time on my ancient system at
home (still a Celeron 300A ...).
Regards, STefan
RCS file: /usr/cvs/ports/x11/XFree86-4-libraries/files/patch-z32,v
retrieving revision 1.3
diff -u -3 -r1.3 patch-z32
--- x11/XFree86-4-libraries/files/patch-z32 12 Jun 2001 14:59:51 -0000 1.3
+++ x11/XFree86-4-libraries/files/patch-z32 21 Jun 2002 12:04:17 -0000
@@ -1,5 +1,24 @@
--- lib/GL/mesa/src/OSmesa/Imakefile.orig Tue Apr 3 11:29:33 2001
-+++ lib/GL/mesa/src/OSmesa/Imakefile Thu Jun 7 02:58:09 2001
++++ lib/GL/mesa/src/OSmesa/Imakefile Fri Jun 21 13:55:44 2002
+@@ -8,6 +8,18 @@
+ #define DoDebugLib DebugLibGlx
+ #define DoProfileLib ProfileLibGlx
+
++#define LibObjCompile(dir,options) RemoveFiles($@ $(@:C!([^/]+)$!dir/\1!)) @@\
++ ClearmakeOSName \
++ $(CC) -c $(CCOPTIONS) $(THREADS_CFLAGS) $(ALLDEFINES) \
++ options $*.c -o $(@:C!([^/]+)$!dir/\1!)
++
++#if defined(__GNUC__) && __GNUC__ >= 3
++#define ObjectCompile(options) RemoveFile($@) @@\
++ ClearmakeOSName \
++ $(CC) -c $(CFLAGS) options $*.c -o $@ || \
++ $(CC) -c $(CFLAGS) options -O0 $*.c -o $@
++#endif
++
+ #include "../Imakefile.inc"
+ #ifdef i386Architecture
+ #include "../X86/Imakefile.inc"
@@ -58,7 +58,7 @@
LIBNAME = OSMesa
SOREV = 3.3
--- /dev/null Fri Jun 21 14:14:52 2002
+++ x11-servers/XFree86-4-Server/files/patch-OSmesa-Imakefile Fri Jun 21 13:59:36
+2002
@@ -0,0 +1,16 @@
+--- lib/GL/mesa/src/OSmesa/Imakefile.orig Fri Jun 21 11:23:42 2002
++++ lib/GL/mesa/src/OSmesa/Imakefile Fri Jun 21 13:55:44 2002
+@@ -8,6 +8,13 @@
+ #define DoDebugLib DebugLibGlx
+ #define DoProfileLib ProfileLibGlx
+
++#if defined(__GNUC__) && __GNUC__ >= 3
++#define ObjectCompile(options) RemoveFile($@) @@\
++ ClearmakeOSName \
++ $(CC) -c $(CFLAGS) options $*.c -o $@ || \
++ $(CC) -c $(CFLAGS) options -O0 $*.c -o $@
++#endif
++
+ #include "../Imakefile.inc"
+ #ifdef i386Architecture
+ #include "../X86/Imakefile.inc"