diff options
author | Thomas Schwinge <tschwinge@gnu.org> | 2006-01-31 09:21:05 +0000 |
---|---|---|
committer | Thomas Schwinge <tschwinge@gnu.org> | 2009-06-18 00:26:31 +0200 |
commit | 70b84c83f21a5943a291e86520e02f676517e644 (patch) | |
tree | 3532ba64b621bd7cc568a4d7853d57abe7c397ee /Makerules.in | |
parent | 3a52c9edfa90e81f19b208e0c289072dcb2f24c8 (diff) |
2006-01-31 Thomas Schwinge <tschwinge@gnu.org>
Cleanup of GNU Mach's build system. The system dependend parts are now
handeled by the respective Makefile and no longer by the top-level one.
* configure, i386/configure, i386/linux/configure, linux/configure:
Regenerated.
* Makefile.in: Various cleanups.
(mach/machine, mach_machine): Targets removed.
(AWK, CC, CFLAGS, CPPFLAGS, DEFINES, INCLUDES, INSTALL, INSTALL_DATA)
(INSTALL_PROGRAM, LD, MIG, MIGFLAGS, NM): Variables moved into
Makerules.in.
Do not include $(sysdep)/Makefrag anymore.
(all, check, clean, distclean, mostlyclean, maintainer-clean, install)
(install-headers, install-kernel): Recurse into the system dependend
subdirectory.
(check): Add a basic test using mbchk.
(clean, distclean): Be more explicit in what to delete.
($(systype)/%): New target.
(kernel.o): Incorporate the system dependend archive.
(installed-sysdep-headers-names, $(installed-sysdep-headers-names)):
Variable and target moved into the system dependend Makefile.in.
(install-headers, mkheaderdirs): Don't care for the system dependend
header files.
(%.symc, %.symc.o, %.h, %_user.c, %_interface.h, %_server.c): Targets
moved into Makerules.in.
Inclusion of dependency files: Likewise.
(%.migs_d, %.migu_d, %.migsh_d, %.miguh_d, make-deps, %.d): Likewise.
Include Makerules.
* Makerules.in: New file, mainly based on Makefile.in.
* configure.in: Do not substitute cross_compiling and not explicitly
substitute LDFLAGS.
Check for cpp, ranlib, ar and mbchk.
Care for the mach/machine symbolic link.
Add Makerules as a config file.
* i386/Makefile.in: Various cleanups.
Merge i386/Makefrag and the system dependent stuff from Makefile.in
into this file.
(all, check, install, install-headers, install-kernel): Recurse into
the system dependend subdirectory.
(sysdep.o): transformed to the new target sysdep.a.
(linux/linux.o): Target removed.
(clean, distclean): Be more explicit in what to delete.
(linux/%): New target.
(install-headers): Install the system dependend header files.
(mkheaderdirs): New target.
Include the top-level Makerules.
* i386/Makefrag: File removed.
* i386/Makerules.in: New file.
* i386/configure.in: Synchronize AC_INIT to the top-level definition.
Do not check for ld and make.
Add Makerules as a config file.
* i386/linux/Makefile.in: Various cleanups.
Replace linux-objs with objfiles.
(check, install, install-headers, install-kernel): New empty targets.
Don't care about linux-flags if no_deps is true.
Inclusion of dependency files removed and instead...
Include the top-level Makerules.
* i386/linux/Makerules.in: New file.
* i386/linux/configure.ac: Synchronize AC_INIT to the top-level
definition.
Do not check for gcc and ld.
Do not explicitly substitute LDFLAGS.
Add Makerules as a config file.
* linux/configure.in: Synchronize AC_INIT to the top-level definition.
Do not create directories using a dummy file.
* linux/dummy.in: File removed.
* ddb/db_access.h: Include <machine/vm_param.h> instead of
"vm_param.h".
* kern/bootstrap.c: Likewise.
* kern/thread.c: Likewise.
* vm/vm_kern.c: Likewise.
* vm/vm_object.c: Likewise.
* vm/vm_resident.c: Likewise.
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) |