Formerly ../mach/Makefile.~24~
[kopensolaris-gnu/glibc.git] / mach / Makefile
index 9d8656c..8d5ec41 100644 (file)
 
 subdir := mach
 
-distribute = Machrules interface.awk mach-syscalls.awk # $(interfaces:%=%.defs)
+distribute = Machrules interface.awk syscalls.awk shortcut.awk
 
-interface-header-prefix = mach/
-headers = mach.h mach_init.h \
+headers = mach_init.h mach.h \
          $(addprefix mach/,$(mach-headers)) \
          $(interface-headers)
 
-ifneq (,)
 mach-headers := host_info.h kern_return.h \
                mach_param.h mach_types.h \
                memory_object.h \
@@ -36,21 +34,25 @@ mach-headers := host_info.h kern_return.h \
                thread_status.h thread_switch.h time_value.h \
                vm_attributes.h vm_inherit.h vm_prot.h \
                vm_statistics.h
-endif
-
-user-interfaces := mach_interface mach_port mach_host \
-                  device device_request device_reply \
-                  default_pager_object \
-                  memory_object_user memory_object_default
-server-interfaces := __exc
 
-routines = $(interface-routines) 
-foo =\
-          mach_init mach_init_syms \
-          mig_strncpy mig_support msg \
-          mach_msg_destroy mach_msg_server mach_msg_server_timeout \
-          __mach_msg_destroy __mach_msg_server \
-          devstream
+user-interfaces := $(addprefix mach/,mach_interface mach_port mach_host        \
+                                    default_pager_object               \
+                                    memory_object_user                 \
+                                    memory_object_default              \
+                                    kernel_boot                        \
+                   )\
+                  $(addprefix device/,device device_request)
+# device_reply is giving me headaches because of userprefix
+server-interfaces := # mach/__exc mach/exc
+
+routines = $(interface-routines) \
+          $(filter-out syscall_%,$(mach-syscalls)) \
+          $(addprefix __,$(mach-syscalls)) \
+          mach_init vm_page_size \
+          mig_strncpy mig_support __bcopy msg \
+          msg_destroy msg_server msg_server_t \
+          __msg_destroy __msg_server \
+          devstream bootprivport privports
 
 tests := hello
 
@@ -59,47 +61,63 @@ all:
 
 
 # Define mach-syscalls and sysno-*.
-include mach-syscalls.mk
-mach-syscalls.mk: syscall_sw.h mach-syscalls.awk
-       sed -n -e '/STANDALONE/,$$d' \
+include $(objpfx)mach-syscalls.mk
+$(objpfx)mach-syscalls.mk: mach/syscall_sw.h syscalls.awk
+# Go kludges!!!
+       sed -n -e '/Unix server implement them/,$$d' \
               -e 's/^kernel_trap(\(.*\),\([-0-9]*\),[0-9]*)$$/\1 \2/p' \
        < $< | awk -f $(word 2,$^) > $@-new                   
        mv $@-new $@
+clean-extras := $(clean-extras) $(objpfx)mach-syscalls.mk
 
 ifdef mach-syscalls
-$(mach-syscalls:%=__%.S): __%.S: mach-syscalls.mk
+$(mach-syscalls:%=$(objpfx)__%.S): $(objpfx)__%.S: mach-syscalls.mk
        (echo '#include <sysdep.h>'; \
-        echo 'SYSCALL_TRAP (__$*, $(sysno-$*))') > $@
+        echo 'SYSCALL_TRAP (__$*, $(sysno-$*))') > $@-new
+        mv $@-new $@
+$(mach-syscalls:%=$(objpfx)%.c): $(objpfx)%.c:
+       (echo '#include <gnu-stabs.h>'; \
+        echo 'symbol_alias (__$*, $*)') > $@-new
+       mv $@-new $@
+clean-extras := $(clean-extras) \
+               $(mach-syscalls:%=$(objpfx)__%.S) \
+               $(mach-syscalls:%=$(objpfx)%.c)
 endif
 
 mach-shortcuts := $(patsubst syscall_%,%,$(filter syscall_%,$(mach-syscalls)))
 
+ifndef mach-shortcuts
+# Forget about mach_interface.defs for this run.  On the next run,
+# $(mach-shortcuts) will be set, and that will change how
+# mach_interface.defs is processed: it will get the -D flags below.
+user-interfaces := $(filter-out mach/mach_interface
+                               mach/mach_port mach/mach_host,\
+                               $(user-interfaces))
+endif
+
 # Make the MiG stubs for $(mach-shortcuts) be CALL_rpc.
 migdefines := $(migdefines) \
              $(foreach call,$(mach-shortcuts),-D$(call)=$(call)_rpc)
+mach/mach_interface.uh mach/mach_port.uh: mach-syscalls.mk
 
-# This rule needs to come before the implicit rules in Machrules.
-__%.c: shortcut.awk __%_rpc.c
+ifdef mach-shortcuts
+$(mach-shortcuts:%=__%.c): __%.c: shortcut.awk __%_rpc.c
        gawk -v call=__$* -v rpc=__$*_rpc -v syscall=__syscall_$* \
             -f $^ > $@-new
        mv $@-new $@
+endif
 
 include Machrules
-
-interface-routines := $(filter-out %_rpc,$(interface-routines)) \
-                     $(foreach call,$(mach-shortcuts),\
-                               __$(call) $(call) __syscall_$(call))
-
 include ../Rules
 
 
 # There is already a mach.h, so mach.defs generates mach_interface.h.
-mach_interface.defs: mach.defs
-       ln -s $< $@ || cp $< $@
+mach/mach_interface.defs: mach/mach.defs
+       ln $< $@ || cp $< $@
 # There is already a memory_object.h,
 # so memory_object.defs generates memory_object_user.h.
-memory_object_user.defs: memory_object.defs
-       ln -s $< $@ || cp $< $@
+mach/memory_object_user.defs: mach/memory_object.defs
+       ln $< $@ || cp $< $@
 
 # Be sure not to make these with implicit rules from foo.defs.
-#$(mach-headers): ;
+$(filter-out $(interface-headers),$(headers)) : ;