[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: [Xen-devel] CFLAGS are for C compilers and other Unix traditions



Keir Fraser <Keir.Fraser@xxxxxxxxxxxx> writes:

> On 21 May 2006, at 03:58, John D. Ramsdell wrote:
> 
> > If you execute this command, you will note that the rule for
> > assembling .S files is:
> >
> > COMPILE.S = $(CC) $(ASFLAGS) $(CPPFLAGS) $(TARGET_MACH) -c
> >
> > Note that you don't give the assembler CFLAGS.  It's not a C
> > compiler.
> 
> We fixed this for Xen itself some time ago. If there are other places
> in the tree that do this (maybe minios?), please do provide a patch.

The Mini-OS makefile was recently patched so as to include the
following rules:

%.o: %.c $(HDRS) Makefile
        $(CC) $(CFLAGS) $(CPPFLAGS) -c $< -o $@

%.o: %.S $(HDRS) Makefile
        $(CC) $(ASFLAGS) $(CPPFLAGS) -c $< -o $@

Note the rules fail to include $(TARGET_MACH), which is part of the
default rule for COMPILE.S, and $(TARGET_ARCH), which is normally
part of COMPILE.c.  

When the appropriate GCC backends are installed on an i386 32-bit
machine, the $(TARGET_MACH) flags, and the $(TARGET_ARCH) flags can be
used to produce a Mini-OS elf file for both the 32 and 64 i386
architectures.  You don't have to put your cross compilers in separate
locations. 

I decided to test the use of Mini-OS as a library.  My test
application included just one file, app.c, and it resided in a
directory outside the Xen sources.  I wrote the obvious Makefile, and
used the default rule to build app.o from app.c.

This Makefile fails, of course, because $(TARGET_ARCH) is set to
x86_32 by Config.mk, and the default rule is:

COMPILE.c = $(CC) $(CFLAGS) $(CPPFLAGS) $(TARGET_ARCH) -c

I hadn't tracked down the source of my problem before I sent my post
last night.  I somehow thought that COMPILE.c used $(TARGET_MACH),
instead of $(TARGET_ARCH), and therefore thought a fix was plausible.
I now see that modifying Xen to work with the default rules is a big
pain.  On the plus side, tracking down this problem forced me to
look at Config.mk, and see I can select a cross-compiler by setting
CROSS_COMPILER to the bin directory of my cross compiler, rather than
setting my path.

John

_______________________________________________
Xen-devel mailing list
Xen-devel@xxxxxxxxxxxxxxxxxxx
http://lists.xensource.com/xen-devel


 


Rackspace

Lists.xenproject.org is hosted with RackSpace, monitoring our
servers 24x7x365 and backed by RackSpace's Fanatical Support®.