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"

Reply via email to