On Sat, Jun 23, 2007 at 05:25:54PM -0700, Ian Lance Taylor wrote:
> 
> At Cygnus, in the early and mid- 90s, we did this routinely, starting
> with the native compilers shipped with various Unix variants.  As Unix
> variants generally no longer come with a free (as in beer) compiler
> other than gcc, this is harder to test today.  Still, not too hard:
> you would just start with some other free compiler.

   Examples welcome. I use a Fedora GNU/Linux x86 6.92 system on which neither
of the following works:

1) lcc
2) vbcc
3) gcc -ansi (!)

   The problem is mostly header files which are not ANSI compliant. Lcc
also creates an executable which segfaults in the gcc/build directory. Vbcc
needs this patch. Without it, the object files end up in the source
directory.

(This is not something I have a clue about, I just copied from the gcc
directory and did s/AM_PROG_CC_C_O/AC_PROG_CC_C_O/.)

Index: fixincludes/Makefile.in
===================================================================
--- fixincludes/Makefile.in     (revision 127373)
+++ fixincludes/Makefile.in     (working copy)
@@ -34,6 +34,10 @@
 INCLUDES = -I. -I$(srcdir) -I../include -I$(srcdir)/../include
 FIXINC_CFLAGS = -DHAVE_CONFIG_H $(INCLUDES)
 
+# Some compilers can't handle cc -c blah.c -o foo/blah.o.  Others, such as
+# vbcc, need it to put the object files in the build directory.
+OUTPUT_OPTION = @OUTPUT_OPTION@
+
 # Directory where sources are, from where we are.
 srcdir = @srcdir@
 VPATH = $(srcdir)
@@ -69,7 +73,7 @@
 # Now figure out from those variables how to compile and link.
 
 .c.o:
-       $(CC) -c $(CFLAGS) $(WARN_CFLAGS) $(CPPFLAGS) $(FIXINC_CFLAGS) $<
+       $(CC) -c $(CFLAGS) $(WARN_CFLAGS) $(CPPFLAGS) $(FIXINC_CFLAGS) $< 
$(OUTPUT_OPTION)
 
 # The only suffixes we want for implicit rules are .c and .o.
 .SUFFIXES:
Index: fixincludes/configure.ac
===================================================================
--- fixincludes/configure.ac    (revision 127373)
+++ fixincludes/configure.ac    (working copy)
@@ -5,6 +5,15 @@
 AC_CONFIG_AUX_DIR(..)
 AC_CANONICAL_SYSTEM
 AC_PROG_CC
+AC_PROG_CC_C_O
+# autoconf is lame and doesn't give us any substitution variable for this.
+if eval "test \"`echo '$ac_cv_prog_cc_'${ac_cc}_c_o`\" = no"; then
+  NO_MINUS_C_MINUS_O=yes
+else
+  OUTPUT_OPTION='-o $@'
+fi
+AC_SUBST(NO_MINUS_C_MINUS_O)
+AC_SUBST(OUTPUT_OPTION)
 
 # Figure out what compiler warnings we can enable.
 # See config/warnings.m4 for details.

-- 
Rask Ingemann Lambertsen

Reply via email to