diff options
| -rw-r--r-- | Makerules.in | 159 | ||||
| -rw-r--r-- | configure.in | 18 |
2 files changed, 171 insertions, 6 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) diff --git a/configure.in b/configure.in index b6691f5..2f631e2 100644 --- a/configure.in +++ b/configure.in @@ -1,5 +1,5 @@ dnl Configure script for GNU Mach. -dnl Copyright 1997, 1998, 1999, 2004 Free Software Foundation, Inc. +dnl Copyright 1997, 1998, 1999, 2004, 2006 Free Software Foundation, Inc. dnl Permission to use, copy, modify and distribute this software and its dnl documentation is hereby granted, provided that both the copyright @@ -29,7 +29,6 @@ i[[3456]]86) systype=i386 ;; esac AC_SUBST([systype]) -AC_SUBST([cross_compiling]) # Default prefix is / for the kernel. AC_PREFIX_DEFAULT([]) @@ -53,15 +52,22 @@ AS_HELP_STRING([--enable-kmsg], [enable use of kmsg device [[default=yes]]]), AC_PROG_INSTALL AC_PROG_AWK AC_PROG_CC +AC_PROG_CPP +AC_PROG_RANLIB +AC_CHECK_TOOL([AR], [ar]) AC_CHECK_TOOL([LD], [ld]) -AC_SUBST([LDFLAGS]) AC_CHECK_TOOL([NM], [nm]) AC_CHECK_TOOL([MIG], [mig], [mig]) -# Set up `machine' link in build directory for easier header file location. -AC_CONFIG_LINKS([machine:${systype}/${systype}]) +AC_CHECK_PROG([MBCHK], [mbchk], [mbchk], :) + +# Set up `machine' and `mach/machine' links in the build directory for easier +# header file location. +AC_CONFIG_LINKS([machine:${systype}/${systype} + mach/machine:${systype}/include/mach/${systype}]) + AC_CONFIG_SUBDIRS([linux]) @@ -71,5 +77,5 @@ if test "$systype" = i386; then AC_CONFIG_SUBDIRS([i386]) fi -AC_CONFIG_FILES([Makefile version.c doc/Makefile]) +AC_CONFIG_FILES([Makefile Makerules version.c doc/Makefile]) AC_OUTPUT |
