-# Copyright (C) 1991,92,93,94,95,96,97,98,2001,02
-# Free Software Foundation, Inc.
+# Copyright (C) 1991-2015 Free Software Foundation, Inc.
# This file is part of the GNU C Library.
# The GNU C Library is free software; you can redistribute it and/or
# Lesser General Public License for more details.
# You should have received a copy of the GNU Lesser General Public
-# License along with the GNU C Library; if not, write to the Free
-# Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
-# 02111-1307 USA.
+# License along with the GNU C Library; if not, see
+# <http://www.gnu.org/licenses/>.
subdir := mach
-all:
-
-# Some things below (but before including Rules) use configuration variables.
include ../Makeconfig
-
headers = mach_init.h mach.h mach_error.h mach-shortcuts.h mach/mach_traps.h \
$(interface-headers) mach/mach.h mach/mig_support.h mach/error.h \
$(lock-headers) machine-sp.h
-distribute = thread_state.h
lock = spin-solid spin-lock mutex-init mutex-solid
lock-headers = lock-intern.h machine-lock.h spin-lock.h
routines = $(mach-syscalls) $(mach-shortcuts) \
user-interfaces := $(addprefix mach/,$(mach-interface-list) \
mach_port mach_host exc \
- )\
+ )\
$(addprefix device/,device device_request)
server-interfaces := mach/exc
-# It is important that we do not use the wildcard function to expand
-# `err_*.sub'. Leaving the wildcard allows Make-dist to find all matching
-# files in all sysdep directories.
-distribute += Machrules syscalls.awk shortcut.awk \
- errorlib.h err_*.sub errsystems.awk
-
# Clear any environment value.
generated =
\f
+# Translate GNU names for CPUs into the names used in Mach header files.
+mach-machine = $(patsubst powerpc,ppc,$(base-machine))
+
# Define mach-syscalls and sysno-*.
-ifndef no_deps
ifndef inhibit_mach_syscalls
-include $(objpfx)mach-syscalls.mk
endif
-endif
$(objpfx)mach-syscalls.mk: syscalls.awk Makefile
# Go kludges!!!
$(make-target-directory)
# We must use $(CFLAGS) to get -O flags that affect #if's in header files.
echo '#include <mach/syscall_sw.h>' | \
- DEPENDENCIES_OUTPUT='$@-dep $@' \
- $(CC) $(CFLAGS) $(CPPFLAGS) -E -x c-header - \
- -D_MACH_`echo $(base-machine) | tr a-z A-Z`_SYSCALL_SW_H_=1 | \
+ $(CC) $(CFLAGS) $(CPPFLAGS) -E -MD -MP -MF $@-dep -MT $@ \
+ -x c-header - \
+ -D_MACH_`echo $(mach-machine) | tr a-z A-Z`_SYSCALL_SW_H_=1 | \
sed -n -e 's/^kernel_trap(\(.*\),\([-0-9]*\),\([0-9]*\))$$/\1 \2 \3/p'\
| $(AWK) -f $< > $@-new
- cat $@-dep >> $@-new; rm -f $@-dep
+ifneq (,$(objpfx))
+ sed $(sed-remove-objpfx) $@-dep >> $@-new
+else
+ cat $@-dep >> $@-new
+endif
+ rm -f $@-dep
mv -f $@-new $@
generated += mach-syscalls.mk
else
$(mach-syscalls:%=$(objpfx)%.S): $(objpfx)%.S: $(objpfx)mach-syscalls.mk
(echo '#include <sysdep.h>'; \
- echo 'kernel_trap(__$*,$(sysno-$*),$(nargs-$*))'; \
+ echo 'kernel_trap (__$*,$(sysno-$*),$(nargs-$*))'; \
echo 'weak_alias (__$*, $*)') > $@-new
mv -f $@-new $@
generated += $(mach-syscalls:=.S)
endif # mach-syscalls
-# syscall_device_writev_request has no RPC equivalent.
-mach-shortcuts := $(filter-out device_writev_request,\
+# These syscalls that look like RPCs actually have no RPC equivalents.
+mach-shortcuts := $(filter-out device_writev_request \
+ device_read_overwrite_request \
+ device_read_overwrite \
+ vm_read_overwrite \
+ thread_switch \
+ ,\
$(patsubst syscall_%,%,$(filter syscall_%,$(mach-syscalls))))
ifndef mach-shortcuts
$(wildcard $(addsuffix /err_*.sub,$(+sysdep_dirs)))
$(AWK) -v subsys='$(filter-out $<,$^)' -f $^ > $@.n
mv -f $@.n $@
+
+
+# Convenient target to update all the generated source files.
+.PHONY: generated
+generated: $(addprefix $(common-objpfx),$(common-generated)) \
+ $(addprefix $(objpfx),$(generated))
+
+.PHONY: mach-before-compile
+mach-before-compile: $(mach-before-compile)