Formerly unix/Makefile.~35~
authorroland <roland>
Tue, 18 Aug 1992 21:58:49 +0000 (21:58 +0000)
committerroland <roland>
Tue, 18 Aug 1992 21:58:49 +0000 (21:58 +0000)
sysdeps/unix/Makefile

index c6b6c68..381f289 100644 (file)
@@ -136,16 +136,28 @@ $(objpfx)make_errlist: $(sysdep_dir)/unix/make_errlist.c
 
 endif
 \f
-ifeq ($(wildcard $(sysincludedir)/syscall.h),)
-
-# Some systems have <syscall.h>, some <sys/syscall.h>.
-
-syscall.h := $(wildcard $(sysincludedir)/sys/syscall.h)
-
-ifdef  syscall.h
+# The syscall code assumes a file <syscall.h> that defines macros
+# `SYS_call' for syscall `call'.  Variations on this I have seen include:
+# it's in <sys/syscall.h>;
+# it's in <sys.s>;
+# it defines `CALL' instead of `SYS_call'.
+
+# Find a file that might have these.
+syscall.h := $(firstword $(wildcard $(addprefix $(sysincludedir)/,
+                                               syscall.h sys/syscall.h \
+                                               sys.s sys/sys.s \
+                                               sys.S sys/sys.S)))
+ifdef syscall.h
+
+# Transmogrify any of several formats of the file into the one we want.
 $(common-objpfx)syscall.h: $(syscall.h)
-       echo '#include <$(syscall.h:$(sysincludedir)/%=%)>' > $@
+       tr '[A-Z]' '[a-z]' < $< | \
+       sed -e 's/\<sys_//' \
+           -e 's/^#define[     ]*\([a-z0-9_]*\)[       ]*/#define SYS_\1 /' \
+           -e '/^#define/!d'
+       > $@-tmp
+       mv $@-tmp $@
+
 before-compile := $(before-compile) $(common-objpfx)syscall.h
-endif
 
 endif