cvs commit: src/sys/conf files.amd64 files.i386 files.pc98 src/sys/modules/linux Makefile

Bruce Evans brde at optusnet.com.au
Wed May 23 17:54:40 UTC 2007


On Wed, 23 May 2007, Ruslan Ermilov wrote:

> On Wed, May 23, 2007 at 03:45:52PM +0000, Konstantin Belousov wrote:
>> kib         2007-05-23 15:45:52 UTC
>>
>>   FreeBSD src repository
>>
>>   Modified files:
>>     sys/conf             files.amd64 files.i386 files.pc98
>>     sys/modules/linux    Makefile
>>   Log:
>>   Fix the dependency for the linux_support.s, explicitely add linux_assym.h.

Why is this needed?  linux_assym.h is already in BEFORE_DEPEND, and
that should be enough for the kernel although not for modules.  It is
confusing to say that the source file linux_support.s depends on the
generated file linux_assym.h, but config(8) somehow translates that
to the correct dependency of linux_locore.o on linux_assym.h.  .depend
also depends on linux_assym.h and there is nothing except BEFORE_DEPEND
to give this.  Everything worked here without the explicit dependency
at least after running "make depend" first.

Similarly for the old dependency of .depend and linux_locore.o on
linux_assym.

Unsimilarly for the dependency of .depend and locore.o and other objects
on assym.s.  locore.o is handled too specially (but mostly better) for
historical reasons.  There are no special cases for other objects
depending on assym.s -- .depend and objects when .depend doesn't exist
are handled by explicitly putting assym.s in BEFORE_DEPEND, and objects
when .depend does exist are handled by putting assym.s in .depend.

>> ...
>>   Revision  Changes    Path
>>   1.103     +2 -1      src/sys/conf/files.amd64
>>   1.576     +2 -1      src/sys/conf/files.i386
>>   1.354     +2 -1      src/sys/conf/files.pc98
>>   1.72      +1 -1      src/sys/modules/linux/Makefile
>>
> These files would better have an .S extension as they
> contain preprocessor macros.  From gcc.info:
> ...
> Our standard make(1) rules know about this:
> ...
> This doesn't matter much for the kernel build (it provides
> its own rules to build from .[Ss]), but makes a difference
> for a module build, if the latter needs to compile some of
> the assembly.

i386 never got converted from *.s to *.S, so the new file is named
*.s for i386 only for consistency.

Bruce


More information about the cvs-all mailing list