diff options
Diffstat (limited to 'Makerules.in')
-rw-r--r-- | Makerules.in | 159 |
1 files changed, 159 insertions, 0 deletions
diff --git a/Makerules.in b/Makerules.in new file mode 100644 index 0000000..b556363 --- /dev/null +++ b/Makerules.in @@ -0,0 +1,159 @@ +# Makerules +# Copyright 2006 Free Software Foundation, Inc. +# +# Permission to use, copy, modify and distribute this software and its +# documentation is hereby granted, provided that both the copyright +# notice and this permission notice appear in all copies of the +# software, derivative works or modified versions, and any portions +# thereof, and that both notices appear in supporting documentation. +# +# THE FREE SOFTWARE FOUNDATION ALLOWS FREE USE OF THIS SOFTWARE IN ITS +# "AS IS" CONDITION. THE FREE SOFTWARE FOUNDATION DISCLAIMS ANY +# LIABILITY OF ANY KIND FOR ANY DAMAGES WHATSOEVER RESULTING FROM THE +# USE OF THIS SOFTWARE. + + +# +# configure's findings. +# + +systype = @systype@ +abs_top_builddir = @abs_top_builddir@ +abs_top_srcdir = @abs_top_srcdir@ + +AR = @AR@ +AWK = @AWK@ +CC = @CC@ +CPP = @CPP@ +LD = @LD@ +MBCHK = @MBCHK@ +MIG = @MIG@ +NM = @NM@ +RANLIB = @RANLIB@ + +INSTALL = @INSTALL@ +INSTALL_PROGRAM = @INSTALL_PROGRAM@ +INSTALL_DATA = @INSTALL_DATA@ + +CFLAGS-common = @CFLAGS@ +CPPFLAGS-common = @CPPFLAGS@ +DEFS-common = @DEFS@ +LDFLAGS-common = @LDFLAGS@ + + +# +# System dependent Makerules +# + +include $(abs_top_builddir)/$(systype)/Makerules + + +# +# Compilation flags +# + +DEFS += $(DEFS-common) + +DEFINES += $(DEFS) -DMACH -DCMU -DMACH_KERNEL -DKERNEL + +INCLUDES += -I$(abs_top_builddir) -I$(abs_top_srcdir) \ + -I$(abs_top_srcdir)/include -I$(abs_top_srcdir)/$(systype) \ + -I$(abs_top_srcdir)/$(systype)/include/mach/sa \ + -I$(abs_top_srcdir)/bogus -I$(abs_top_srcdir)/util \ + -I$(abs_top_srcdir)/kern -I$(abs_top_srcdir)/device + +CPPFLAGS += -nostdinc $(DEFINES) $(INCLUDES) $(CPPFLAGS-common) + +MIGFLAGS += $(CPPFLAGS) + +CFLAGS += $(CFLAGS-common) + +LDFLAGS += $(LDFLAGS-common) + +# Assemble .S files correctly +ASFLAGS += -DASSEMBLER + + +# +# How to do some things +# + +# Building foo.h from foo.sym: +%.symc: %.sym $(abs_top_srcdir)/gensym.awk + $(AWK) -f $(word 2,$^) $< > $@ +%.symc.o: %.symc + $(CC) -S $(CPPFLAGS) $(CFLAGS) $(CPPFLAGS-$@) -x c -o $@ $< +%.h: %.symc.o + sed <$< -e 's/^[^*].*$$//' | \ + sed -e 's/^[*]/#define/' -e 's/mAgIc[^-0-9]*//' >$@ + +# Building from foo.cli +%.h %_user.c: %.cli + $(MIG) $(MIGFLAGS) -header $*.h -user $*_user.c -server /dev/null $< + +# Building from foo.srv +%_interface.h %_server.c: %.srv + $(MIG) $(MIGFLAGS) -sheader $*_interface.h -server $*_server.c \ + -header /dev/null -user /dev/null $< + +# +# Dependency generation +# + +# Include dependency files +ifneq ($(no_deps),t) + +# For each file generated by MiG we need a .d file. +-include $(subst _server.o,.migs_d,$(servers)) /dev/null +-include $(subst _server.o,.migsh_d,$(servers)) /dev/null + +# vm_user.o fits the pattern, but is not actually a MiG-related file. +-include $(subst _user.o,.migu_d,$(users)) /dev/null +-include $(subst _user.o,.miguh_d,$(users)) /dev/null + +# For each .o file we need a .d file. +-include $(subst .o,.d,$(filter %.o,$(objfiles))) /dev/null + +endif + +# Here is how to make those dependency files + +%.migs_d: %.srv + (set -e; $(CPP) $(MIGFLAGS) -M -MG -x c $< | \ + sed -e 's/[^:]*:/$(@:.migs_d=_server.c) $@:/' > $@) + +%.migu_d: %.cli + (set -e; $(CPP) $(MIGFLAGS) -M -MG -x c $< | \ + sed -e 's/[^:]*:/$(@:.migu_d=_user.c) $@:/' > $@) + +%.migsh_d: %.migs_d + sed -e 's/_server\.c /_interface.h /' -e 's/migs_d/migsh_d/' < $< > $@ + +%.miguh_d: %.migu_d + sed -e 's/_user\.c /.h /' -e 's/migu_d/miguh_d/' < $< > $@ + +# Generic rule for $(CC) based compilation for making dependencies +define make-deps +set -e; $(CC) $(CFLAGS) $(CPPFLAGS) -M -MG $< | \ + sed > $@.new -e 's/$*\.o:/$*.o $@:/' +mv -f $@.new $@ +endef + +%.d: %.c; $(make-deps) +%.d: %.S; $(make-deps) + +# .s files don't go through the preprocessor, so we do this +# This rule must come *after* the genuine ones above, so that +# make doesn't build a .s file and then make an empty dependency +# list. +%.d: %.s + echo '$*.o: $<' > $@ + + +# +# Autoconf support +# + +$(top_builddir)/Makerules $(abs_top_builddir)/Makerules: \ + $(abs_top_srcdir)/Makerules.in $(abs_top_builddir)/config.status + cd $(abs_top_builddir) && ./config.status $(@F) |