浏览代码

Done a major overhaul of the way target include files are installed and
how platform libraries are built. The ARCH pm variable has now been
renamed PLATFORM (which is more accurate) and a different ARCH
variable added, which represents the CPU family rather than the
hardware platform.

dtrg 17 年之前
父节点
当前提交
2c98eae913
共有 46 个文件被更改,包括 322 次插入170 次删除
  1. 1 1
      first/ack.pm
  2. 0 79
      include/_tail_mon/sys/types.h
  3. 3 2
      lang/basic/lib/pmfile
  4. 23 23
      lang/cem/libcc.ansi/pmfile
  5. 14 4
      lang/cem/libcc/gen/pmfile
  6. 0 0
      lang/cem/libcc/headers/.distr
  7. 0 0
      lang/cem/libcc/headers/assert.h
  8. 0 0
      lang/cem/libcc/headers/ctype.h
  9. 0 0
      lang/cem/libcc/headers/errno.h
  10. 0 0
      lang/cem/libcc/headers/fcntl.h
  11. 0 0
      lang/cem/libcc/headers/grp.h
  12. 0 0
      lang/cem/libcc/headers/math.h
  13. 0 0
      lang/cem/libcc/headers/pwd.h
  14. 0 0
      lang/cem/libcc/headers/setjmp.h
  15. 1 1
      lang/cem/libcc/headers/sgtty.h
  16. 0 0
      lang/cem/libcc/headers/signal.h
  17. 0 0
      lang/cem/libcc/headers/stdio.h
  18. 0 0
      lang/cem/libcc/headers/sys/.distr
  19. 0 0
      lang/cem/libcc/headers/sys/dir.h
  20. 0 0
      lang/cem/libcc/headers/sys/errno.h
  21. 0 0
      lang/cem/libcc/headers/sys/stat.h
  22. 0 0
      lang/cem/libcc/headers/sys/stdtypes.h
  23. 0 0
      lang/cem/libcc/headers/sys/types.h
  24. 0 0
      lang/cem/libcc/headers/time.h
  25. 0 0
      lang/cem/libcc/headers/varargs.h
  26. 2 2
      lang/cem/libcc/math/pmfile
  27. 2 3
      lang/cem/libcc/mon/pmfile
  28. 24 0
      lang/cem/libcc/pmfile
  29. 2 2
      lang/cem/libcc/stdio/pmfile
  30. 45 3
      lang/m2/libm2/pmfile
  31. 0 0
      lang/occam/headers/.distr
  32. 0 0
      lang/occam/headers/dec.ocm
  33. 0 0
      lang/occam/headers/printd.ocm
  34. 0 0
      lang/occam/headers/prints.ocm
  35. 3 3
      lang/occam/lib/pmfile
  36. 13 0
      lang/occam/pmfile
  37. 15 3
      lang/pc/libpc/pmfile
  38. 11 8
      lib/descr/fe
  39. 71 0
      mach/i86/libem/pmfile
  40. 16 0
      mach/i86/libend/pmfile
  41. 10 12
      mach/i86/pmfile
  42. 12 4
      mach/proto/as/pmfile
  43. 14 7
      mach/proto/cg/pmfile
  44. 3 3
      mach/proto/ncg/pmfile
  45. 12 5
      mach/proto/top/pmfile
  46. 25 5
      pmfile

+ 1 - 1
first/ack.pm

@@ -3,7 +3,7 @@
 
 -- Provides rules for building things with the half-built ACK itself.
 
-ACKBUILDFLAGS = {"-m%ARCH%", "%OPTIMISATION%"}
+ACKBUILDFLAGS = {"-m%PLATFORM%", "%OPTIMISATION%"}
 ACKDEFINES = EMPTY
 ACKINCLUDES = EMPTY
 

+ 0 - 79
include/_tail_mon/sys/types.h

@@ -1,79 +0,0 @@
-/* $Id$ */
-/*
- * (c) copyright 1987 by the Vrije Universiteit, Amsterdam, The Netherlands.
- * See the copyright notice in the ACK home directory, in the file "Copyright".
- */
-
-/*
- * Basic system types and major/minor device constructing/busting macros.
- */
-
-#if     !defined(_SYS_TYPES_H)
-#define _SYS_TYPES_H
-
-#ifdef __STDC__
-#if     !defined(_SIZE_T)
-#define _SIZE_T
-typedef unsigned int    size_t;         /* type returned by sizeof */
-#endif  /* _SIZE_T */
-
-#if     !defined(_TIME_T)
-#define _TIME_T
-typedef unsigned long   time_t;
-#endif  /* TIME_T */
-#endif
-
-#if !defined(_POSIX_SOURCE)
-
-/* major part of a device */
-#define	major(x)	((int)(((unsigned)(x)>>8)&0377))
-
-/* minor part of a device */
-#define	minor(x)	((int)((x)&0377))
-
-/* make a device number */
-#define	makedev(x,y)	((dev_t)(((x)<<8) | (y)))
-
-typedef	unsigned char	u_char;
-typedef	unsigned short	u_short;
-typedef	unsigned int	u_int;
-typedef	unsigned long	u_long;
-
-typedef	struct	_physadr { int r[1]; } *physadr;
-typedef	long	daddr_t;
-typedef	char *	caddr_t;
-#if defined(__BSD4_2)
-typedef	u_long ino_t;
-#else
-typedef	u_short ino_t;
-#endif
-typedef	long	swblk_t;
-
-#include <sys/stdtypes.h>
-
-typedef	long	label_t[14];
-typedef	short	dev_t;
-typedef	long	off_t;
-
-/* system V compatibility: */
-typedef unsigned int	uint;
-typedef unsigned short	ushort;
-typedef unsigned char	uchar_t;
-typedef short		cnt_t;
-typedef long		paddr_t;
-typedef long		key_t;
-
-#else	/* _POSIX_SOURCE */
-#if     defined(_MINIX)
-typedef unsigned short  dev_t;  /* hold (major|minor) device pair */
-typedef unsigned char   gid_t;  /* group id */
-typedef unsigned short  ino_t;  /* i-node number */
-typedef unsigned short  mode_t; /* mode number within an i-node */
-typedef unsigned char   nlink_t; /* number-of-links field within an i-node */
-typedef long            off_t;  /* offsets within a file */
-typedef int             pid_t;  /* type for pids (must be signed) */
-typedef unsigned short  uid_t;  /* user id */
-#endif  /* _MINIX */
-#endif  /* _POSIX_SOURCE */
-
-#endif /* _SYS_TYPES_H */

+ 3 - 2
lang/basic/lib/pmfile

@@ -1,10 +1,11 @@
 -- $Source$
 -- $State$
+-- $Revision$
 
 local d = ROOTDIR.."lang/basic/lib/"
 
 lang_basic_runtime = acklibrary {
-	ACKINCLUDES = {PARENT, "%ROOTDIR%h", "%ROOTDIR%include/_tail_cc"},
+	ACKINCLUDES = {PARENT, "%ROOTDIR%h"},
 	
 	ackfile (d.."fif.e"),
 	ackfile (d.."fef.e"),
@@ -40,5 +41,5 @@ lang_basic_runtime = acklibrary {
 	ackfile (d.."trap.c"),
 	ackfile (d.."write.c"),
 	
-	install = pm.install("%BINDIR%%PLATIND%/%ARCH%/tail_bc")
+	install = pm.install("%BINDIR%%PLATIND%/%PLATFORM%/tail_bc")
 }

+ 23 - 23
lang/cem/libcc.ansi/pmfile

@@ -6,12 +6,12 @@ local d = ROOTDIR.."lang/cem/libcc.ansi/"
 local crt = ackfile {
 	ACKINCLUDES = {PARENT, "%ROOTDIR%h"},
 	file (d.."head_ac.e"),
-	install = pm.install("%BINDIR%%PLATIND%/%ARCH%/head_ac")
+	install = pm.install("%BINDIR%%PLATIND%/%PLATFORM%/head_ac")
 }
 	
 local libc = acklibrary {
 	ACKBUILDFLAGS = {PARENT, "-ansi"},
-	ACKINCLUDES = {PARENT, "%ROOTDIR%h", d.."headers", "%ROOTDIR%include/_tail_cc"},
+	ACKINCLUDES = {PARENT, "%ROOTDIR%h", d.."headers"},
 	outputs = {"%U%/tail_ac.a"},
 	
 	-- assert
@@ -260,32 +260,32 @@ local libc = acklibrary {
 	ackfile (d.."time/misc.c"),
 
 	install = {
-		pm.install("%BINDIR%%PLATIND%/%ARCH%/tail_ac")
+		pm.install("%BINDIR%%PLATIND%/%PLATFORM%/tail_ac")
 	}
 }
 
 local headers = group {
 	install = {
-		pm.install(d.."headers/assert.h", "%BINDIR%include/assert.h"),
-		pm.install(d.."headers/ctype.h", "%BINDIR%include/ctype.h"),
-		pm.install(d.."headers/dirent.h", "%BINDIR%include/dirent.h"),
-		pm.install(d.."headers/errno.h", "%BINDIR%include/errno.h"),
-		pm.install(d.."headers/float.h", "%BINDIR%include/float.h"),
-		pm.install(d.."headers/grp.h", "%BINDIR%include/grp.h"),
-		pm.install(d.."headers/limits.h", "%BINDIR%include/limits.h"),
-		pm.install(d.."headers/locale.h", "%BINDIR%include/locale.h"),
-		pm.install(d.."headers/math.h", "%BINDIR%include/math.h"),
-		pm.install(d.."headers/mathconst.h", "%BINDIR%include/mathconst.h"),
-		pm.install(d.."headers/setjmp.h", "%BINDIR%include/setjmp.h"),
-		pm.install(d.."headers/signal.h", "%BINDIR%include/signal.h"),
-		pm.install(d.."headers/stdarg.h", "%BINDIR%include/stdarg.h"),
-		pm.install(d.."headers/stddef.h", "%BINDIR%include/stddef.h"),
-		pm.install(d.."headers/stdio.h", "%BINDIR%include/stdio.h"),
-		pm.install(d.."headers/stdlib.h", "%BINDIR%include/stdlib.h"),
-		pm.install(d.."headers/string.h", "%BINDIR%include/string.h"),
-		pm.install(d.."headers/time.h", "%BINDIR%include/time.h"),
-		pm.install(d.."headers/sys/dirent.h", "%BINDIR%include/sys/dirent.h"),
-		pm.install(d.."headers/sys/errno.h", "%BINDIR%include/sys/errno.h"),
+		pm.install(d.."headers/assert.h", "%BINDIR%include/ansi/assert.h"),
+		pm.install(d.."headers/ctype.h", "%BINDIR%include/ansi/ctype.h"),
+		pm.install(d.."headers/dirent.h", "%BINDIR%include/ansi/dirent.h"),
+		pm.install(d.."headers/errno.h", "%BINDIR%include/ansi/errno.h"),
+		pm.install(d.."headers/float.h", "%BINDIR%include/ansi/float.h"),
+		pm.install(d.."headers/grp.h", "%BINDIR%include/ansi/grp.h"),
+		pm.install(d.."headers/limits.h", "%BINDIR%include/ansi/limits.h"),
+		pm.install(d.."headers/locale.h", "%BINDIR%include/ansi/locale.h"),
+		pm.install(d.."headers/math.h", "%BINDIR%include/ansi/math.h"),
+		pm.install(d.."headers/mathconst.h", "%BINDIR%include/ansi/mathconst.h"),
+		pm.install(d.."headers/setjmp.h", "%BINDIR%include/ansi/setjmp.h"),
+		pm.install(d.."headers/signal.h", "%BINDIR%include/ansi/signal.h"),
+		pm.install(d.."headers/stdarg.h", "%BINDIR%include/ansi/stdarg.h"),
+		pm.install(d.."headers/stddef.h", "%BINDIR%include/ansi/stddef.h"),
+		pm.install(d.."headers/stdio.h", "%BINDIR%include/ansi/stdio.h"),
+		pm.install(d.."headers/stdlib.h", "%BINDIR%include/ansi/stdlib.h"),
+		pm.install(d.."headers/string.h", "%BINDIR%include/ansi/string.h"),
+		pm.install(d.."headers/time.h", "%BINDIR%include/ansi/time.h"),
+		pm.install(d.."headers/sys/dirent.h", "%BINDIR%include/ansi/sys/dirent.h"),
+		pm.install(d.."headers/sys/errno.h", "%BINDIR%include/ansi/sys/errno.h"),
 	}
 }
 

+ 14 - 4
lang/cem/libcc/gen/pmfile

@@ -3,9 +3,12 @@
 
 local d = ROOTDIR.."lang/cem/libcc/gen/"
 
-lang_cem_gen_runtime = acklibrary {
-	ACKINCLUDES = {PARENT, "%ROOTDIR%h", "%ROOTDIR%include/_tail_cc"},
-	
+local head = acklibrary {
+	ackfile (d.."head_cc.e"),
+	install = pm.install("%BINDIR%%PLATIND%/%PLATFORM%/head_cc")
+}
+
+local tail = acklibrary {
 	ackfile (d.."abs.c"),
 	ackfile (d.."atof.c"),
 	ackfile (d.."strtod.c"),
@@ -80,5 +83,12 @@ lang_cem_gen_runtime = acklibrary {
 	ackfile (d.."modf.e"),
 	ackfile (d.."setjmp.e"),
 
-	install = pm.install("%BINDIR%%PLATIND%/%ARCH%/tail_cc.2g")
+	install = pm.install("%BINDIR%%PLATIND%/%PLATFORM%/tail_cc.2g")
+}
+
+lang_cem_gen_runtime = group {
+	ACKINCLUDES = {PARENT, "%ROOTDIR%h"},
+	
+	head,
+	tail
 }

+ 0 - 0
include/_tail_cc/.distr → lang/cem/libcc/headers/.distr


+ 0 - 0
include/_tail_cc/assert.h → lang/cem/libcc/headers/assert.h


+ 0 - 0
include/_tail_cc/ctype.h → lang/cem/libcc/headers/ctype.h


+ 0 - 0
include/_tail_cc/errno.h → lang/cem/libcc/headers/errno.h


+ 0 - 0
include/_tail_cc/fcntl.h → lang/cem/libcc/headers/fcntl.h


+ 0 - 0
include/_tail_cc/grp.h → lang/cem/libcc/headers/grp.h


+ 0 - 0
include/_tail_cc/math.h → lang/cem/libcc/headers/math.h


+ 0 - 0
include/_tail_cc/pwd.h → lang/cem/libcc/headers/pwd.h


+ 0 - 0
include/_tail_cc/setjmp.h → lang/cem/libcc/headers/setjmp.h


+ 1 - 1
include/_tail_cc/sgtty.h → lang/cem/libcc/headers/sgtty.h

@@ -77,7 +77,7 @@ struct tchars {
 #else
 #define HUPCL	     0000001    /* unused ??? */
 #endif
-/*#define COOKED     0000000	/* neither CBREAK nor RAW */
+/*#define COOKED     0000000 */	/* neither CBREAK nor RAW */
 
 #ifdef __BDS4_2
 #define TIOCGETP (('t'<<8) | 8 | (6 << 16) | 0x40000000)

+ 0 - 0
include/_tail_cc/signal.h → lang/cem/libcc/headers/signal.h


+ 0 - 0
include/_tail_cc/stdio.h → lang/cem/libcc/headers/stdio.h


+ 0 - 0
include/_tail_cc/sys/.distr → lang/cem/libcc/headers/sys/.distr


+ 0 - 0
include/_tail_cc/sys/dir.h → lang/cem/libcc/headers/sys/dir.h


+ 0 - 0
include/_tail_cc/sys/errno.h → lang/cem/libcc/headers/sys/errno.h


+ 0 - 0
include/_tail_cc/sys/stat.h → lang/cem/libcc/headers/sys/stat.h


+ 0 - 0
include/_tail_cc/sys/stdtypes.h → lang/cem/libcc/headers/sys/stdtypes.h


+ 0 - 0
include/_tail_cc/sys/types.h → lang/cem/libcc/headers/sys/types.h


+ 0 - 0
include/_tail_cc/time.h → lang/cem/libcc/headers/time.h


+ 0 - 0
include/_tail_cc/varargs.h → lang/cem/libcc/headers/varargs.h


+ 2 - 2
lang/cem/libcc/math/pmfile

@@ -4,7 +4,7 @@
 local d = ROOTDIR.."lang/cem/libcc/math/"
 
 lang_cem_math_runtime = acklibrary {
-	ACKINCLUDES = {PARENT, "%ROOTDIR%h", "%ROOTDIR%include/_tail_cc"},
+	ACKINCLUDES = {PARENT, "%ROOTDIR%h"},
 	
 	ackfile (d.."asin.c"),
 	ackfile (d.."atan2.c"),
@@ -27,5 +27,5 @@ lang_cem_math_runtime = acklibrary {
 	ackfile (d.."exp.c"),
 	ackfile (d.."floor.c"),
 
-	install = pm.install("%BINDIR%%PLATIND%/%ARCH%/tail_m")
+	install = pm.install("%BINDIR%%PLATIND%/%PLATFORM%/tail_m")
 }

+ 2 - 3
lang/cem/libcc/mon/pmfile

@@ -4,8 +4,7 @@
 local d = ROOTDIR.."lang/cem/libcc/mon/"
 
 lang_cem_mon_runtime = acklibrary {
-	ACKINCLUDES = {PARENT, "%ROOTDIR%h", "%ROOTDIR%include/_tail_cc",
-		"%ROOTDIR%include/_tail_mon"},
+	ACKINCLUDES = {PARENT, "%ROOTDIR%h", "%ROOTDIR%include/_tail_mon"},
 	
 	ackfile (d.."exit.c"),
 	ackfile (d.."gtty.c"),
@@ -98,5 +97,5 @@ lang_cem_mon_runtime = acklibrary {
 	ackfile (d.."_wait.e"),
 	ackfile (d.."_write.e"),
 
-	install = pm.install("%BINDIR%%PLATIND%/%ARCH%/tail_mon")
+	install = pm.install("%BINDIR%%PLATIND%/%PLATFORM%/tail_mon")
 }

+ 24 - 0
lang/cem/libcc/pmfile

@@ -8,7 +8,31 @@ include (d.."math/pmfile")
 include (d.."mon/pmfile")
 include (d.."stdio/pmfile")
 
+local headers = group {
+	install = {
+		pm.install(d.."headers/assert.h", "%BINDIR%include/knr/assert.h"),
+		pm.install(d.."headers/ctype.h", "%BINDIR%include/knr/ctype.h"),
+		pm.install(d.."headers/errno.h", "%BINDIR%include/knr/errno.h"),
+		pm.install(d.."headers/fcntl.h", "%BINDIR%include/knr/fcntl.h"),
+		pm.install(d.."headers/grp.h", "%BINDIR%include/knr/grp.h"),
+		pm.install(d.."headers/math.h", "%BINDIR%include/knr/math.h"),
+		pm.install(d.."headers/pwd.h", "%BINDIR%include/knr/pwd.h"),
+		pm.install(d.."headers/setjmp.h", "%BINDIR%include/knr/setjmp.h"),
+		pm.install(d.."headers/sgtty.h", "%BINDIR%include/knr/sgtty.h"),
+		pm.install(d.."headers/signal.h", "%BINDIR%include/knr/signal.h"),
+		pm.install(d.."headers/stdio.h", "%BINDIR%include/knr/stdio.h"),
+		pm.install(d.."headers/time.h", "%BINDIR%include/knr/time.h"),
+		pm.install(d.."headers/varargs.h", "%BINDIR%include/knr/varargs.h"),
+		pm.install(d.."headers/sys/dir.h", "%BINDIR%include/knr/sys/dir.h"),
+		pm.install(d.."headers/sys/errno.h", "%BINDIR%include/knr/sys/errno.h"),
+		pm.install(d.."headers/sys/stat.h", "%BINDIR%include/knr/sys/stat.h"),
+		pm.install(d.."headers/sys/stdtypes.h", "%BINDIR%include/knr/sys/stdtypes.h"),
+		pm.install(d.."headers/sys/types.h", "%BINDIR%include/knr/sys/types.h"),
+	}
+}
+
 lang_cem_runtime = group {
+	headers,
 	lang_cem_gen_runtime,
 	lang_cem_math_runtime,
 	lang_cem_mon_runtime,

+ 2 - 2
lang/cem/libcc/stdio/pmfile

@@ -4,7 +4,7 @@
 local d = ROOTDIR.."lang/cem/libcc/stdio/"
 
 lang_cem_stdio_runtime = acklibrary {
-	ACKINCLUDES = {PARENT, "%ROOTDIR%h", "%ROOTDIR%include/_tail_cc"},
+	ACKINCLUDES = {PARENT, "%ROOTDIR%h"},
 	
 	ackfile (d.."vsprintf.c"),
 	ackfile (d.."vfprintf.c"),
@@ -54,5 +54,5 @@ lang_cem_stdio_runtime = acklibrary {
 	ackfile (d.."timezone.c"),
 	ackfile (d.."ungetc.c"),
 
-	install = pm.install("%BINDIR%%PLATIND%/%ARCH%/tail_cc.1s")
+	install = pm.install("%BINDIR%%PLATIND%/%PLATFORM%/tail_cc.1s")
 }

+ 45 - 3
lang/m2/libm2/pmfile

@@ -3,9 +3,43 @@
 
 local d = ROOTDIR.."lang/m2/libm2/"
 
-lang_m2_runtime = acklibrary {
-	ACKINCLUDES = {PARENT, "%ROOTDIR%h", "%ROOTDIR%include/_tail_cc"},
+local headers = group {
+	install = {
+		pm.install(d.."Arguments.def", "%BINDIR%include/m2/Arguments.def"),
+		pm.install(d.."ArraySort.def", "%BINDIR%include/m2/ArraySort.def"),
+		pm.install(d.."ASCII.def", "%BINDIR%include/m2/ASCII.def"),
+		pm.install(d.."Conversion.def", "%BINDIR%include/m2/Conversion.def"),
+		pm.install(d.."CSP.def", "%BINDIR%include/m2/CSP.def"),
+		pm.install(d.."EM.def", "%BINDIR%include/m2/EM.def"),
+		pm.install(d.."Epilogue.def", "%BINDIR%include/m2/Epilogue.def"),
+		pm.install(d.."InOut.def", "%BINDIR%include/m2/InOut.def"),
+		pm.install(d.."MathLib0.def", "%BINDIR%include/m2/MathLib0.def"),
+		pm.install(d.."Mathlib.def", "%BINDIR%include/m2/Mathlib.def"),
+		pm.install(d.."PascalIO.def", "%BINDIR%include/m2/PascalIO.def"),
+		pm.install(d.."Processes.def", "%BINDIR%include/m2/Processes.def"),
+		pm.install(d.."random.def", "%BINDIR%include/m2/random.def"),
+		pm.install(d.."RealConver.def", "%BINDIR%include/m2/RealConver.def"),
+		pm.install(d.."RealInOut.def", "%BINDIR%include/m2/RealInOut.def"),
+		pm.install(d.."Semaphores.def", "%BINDIR%include/m2/Semaphores.def"),
+		pm.install(d.."Storage.def", "%BINDIR%include/m2/Storage.def"),
+		pm.install(d.."Streams.def", "%BINDIR%include/m2/Streams.def"),
+		pm.install(d.."Strings.def", "%BINDIR%include/m2/Strings.def"),
+		pm.install(d.."StripUnix.def", "%BINDIR%include/m2/StripUnix.def"),
+		pm.install(d.."Termcap.def", "%BINDIR%include/m2/Termcap.def"),
+		pm.install(d.."Terminal.def", "%BINDIR%include/m2/Terminal.def"),
+		pm.install(d.."Traps.def", "%BINDIR%include/m2/Traps.def"),
+		pm.install(d.."Unix.def", "%BINDIR%include/m2/Unix.def"),
+		pm.install(d.."XXTermcap.def", "%BINDIR%include/m2/XXTermcap.def"),
+	}
+}
+
+local head = ackfile {
+	file (d.."head_m2.e"),
 	
+	install = pm.install("%BINDIR%%PLATIND%/%PLATFORM%/head_m2")
+}
+
+local tail = acklibrary {
 	ackfile (d.."Termcap.mod"),
 	ackfile (d.."CSP.mod"),
 	ackfile (d.."PascalIO.mod"),
@@ -53,5 +87,13 @@ lang_m2_runtime = acklibrary {
 	ackfile (d.."rckil.c"),
 	ackfile (d.."EM.e"),
 	
-	install = pm.install("%BINDIR%%PLATIND%/%ARCH%/tail_m2")
+	install = pm.install("%BINDIR%%PLATIND%/%PLATFORM%/tail_m2")
+}
+
+lang_m2_runtime = acklibrary {
+	ACKINCLUDES = {PARENT, "%ROOTDIR%h"},
+	
+	headers,
+	head,
+	tail
 }

+ 0 - 0
include/occam/.distr → lang/occam/headers/.distr


+ 0 - 0
include/occam/dec.ocm → lang/occam/headers/dec.ocm


+ 0 - 0
include/occam/printd.ocm → lang/occam/headers/printd.ocm


+ 0 - 0
include/occam/prints.ocm → lang/occam/headers/prints.ocm


+ 3 - 3
lang/occam/lib/pmfile

@@ -3,8 +3,8 @@
 
 local d = ROOTDIR.."lang/occam/lib/"
 
-lang_occam_runtime = acklibrary {
-	ACKINCLUDES = {PARENT, "%ROOTDIR%h", "%ROOTDIR%include/_tail_cc"},
+lang_occam_lib_runtime = acklibrary {
+	ACKINCLUDES = {PARENT, "%ROOTDIR%h"},
 	
 	ackfile (d.."builtin.c"),
 	ackfile (d.."chan_strct.c"),
@@ -17,5 +17,5 @@ lang_occam_runtime = acklibrary {
 	ackfile (d.."par_misc.e"),
 	ackfile (d.."parco.c"),
 	
-	install = pm.install("%BINDIR%%PLATIND%/%ARCH%/tail_ocm")
+	install = pm.install("%BINDIR%%PLATIND%/%PLATFORM%/tail_ocm")
 }

+ 13 - 0
lang/occam/pmfile

@@ -5,3 +5,16 @@ local d = ROOTDIR.."lang/occam/"
 
 include (d.."comp/pmfile")
 include (d.."lib/pmfile")
+
+local headers = group {
+	install = {
+		pm.install(d.."headers/dec.ocm", "%BINDIR%include/occam/dec.ocm"),
+		pm.install(d.."headers/printd.ocm", "%BINDIR%include/occam/printd.ocm"),
+		pm.install(d.."headers/prints.ocm", "%BINDIR%include/occam/prints.ocm"),
+	}
+}
+
+lang_occam_runtime = group {
+	headers,
+	lang_occam_lib_runtime
+}

+ 15 - 3
lang/pc/libpc/pmfile

@@ -3,9 +3,13 @@
 
 local d = ROOTDIR.."lang/pc/libpc/"
 
-lang_pc_runtime = acklibrary {
-	ACKINCLUDES = {PARENT, "%ROOTDIR%h", "%ROOTDIR%include/_tail_cc"},
+head = ackfile {
+	file (d.."head_pc.e"),
 	
+	install = pm.install("%BINDIR%%PLATIND%/%PLATFORM%/head_pc")
+}
+
+tail = acklibrary {
 	ackfile (d.."abi.c"),
 	ackfile (d.."abl.c"),
 	ackfile (d.."abr.c"),
@@ -79,5 +83,13 @@ lang_pc_runtime = acklibrary {
 	ackfile (d.."rcka.c"),
 	ackfile (d.."trp.e"),
 	
-	install = pm.install("%BINDIR%%PLATIND%/%ARCH%/tail_pc")
+	install = pm.install("%BINDIR%%PLATIND%/%PLATFORM%/tail_pc")
+}
+
+lang_pc_runtime = group {
+	ACKINCLUDES = {PARENT, "%ROOTDIR%h"},
+	
+	head,
+	tail
 }
+	

+ 11 - 8
lib/descr/fe

@@ -4,8 +4,10 @@
 # Don't generate line updating code by default (i.e.: -L flag provided to cem).
 # To put it on again: use -NL
 var LFLAG=-L
-var C_INCLUDES=-I{EM}/include/_tail_cc
-var ANSI_C_INCLUDES=-I{EM}/include/tail_ac
+var MODULA2_INCLUDES=-I{EM}/include/m2
+var OCCAM_INCLUDES=-I{EM}/include/occam
+var C_INCLUDES=-I{EM}/include/knr
+var ANSI_C_INCLUDES=-I{EM}/include/ansi
 
 callname ack
 name cpp
@@ -19,14 +21,15 @@ name cpp
 	mapflag -C CPP_F={CPP_F?} -C
 	mapflag -wo CPP_F={CPP_F?} -o
 	mapflag -ansi ANSI_C=.ansi
-	args {CPP_F?} ({SUFFIX?}:.ocm=-I{EM}/include/occam) \
-		-D__{NAME} \
+	args {CPP_F?} \
+		({SUFFIX?}:.ocm={OCCAM_INCLUDES}) \
+		-D__{ARCH} -D__{PLATFORM} \
 		-D__ACK \
 		{SYSINCLUDES?} \
 		({ANSI_C?}:.ansi={ANSI_C_INCLUDES}) \
 		{C_INCLUDES} \
 		{INCLUDES?} \
-		({ANSI_C?.xx}:.xx=-D{NAME} \
+		({ANSI_C?.xx}:.xx=-D{ARCH} \
 		-DEM_WSIZE={w} -DEM_PSIZE={p} \
 		-DEM_SSIZE={s} -DEM_LSIZE={l} -DEM_FSIZE={f} -DEM_DSIZE={d}) \
 		-D_EM_WSIZE={w} -D_EM_PSIZE={p} \
@@ -75,13 +78,13 @@ name cem
 	need .c
 	args \
 		{CPP_F?} \
-		-D__{NAME} \
+		-D__{ARCH} -D__{PLATFORM} \
 		-D__ACK \
 		{SYSINCLUDES?} \
 		({ANSI_C?}:.ansi={ANSI_C_INCLUDES}) \
 		{C_INCLUDES} \
 		{INCLUDES?} \
-		({ANSI_C?.xx}:.xx=-D{NAME} \
+		({ANSI_C?.xx}:.xx=-D{ARCH} \
 		-DEM_WSIZE={w} -DEM_PSIZE={p} \
 		-DEM_SSIZE={s} -DEM_LSIZE={l} -DEM_FSIZE={f} -DEM_DSIZE={d}) \
 		-D_EM_WSIZE={w} -D_EM_PSIZE={p} \
@@ -133,7 +136,7 @@ name m2
 	mapflag -V* M2_F={M2_F?} -V*
 	mapflag --* M2_F={M2_F?} -*
 	args \
-		{M2_INCL?} -I{EM}/lib/m2 {M2SYSLIB?} \
+		{M2_INCL?} {MODULA2_INCLUDES} {M2SYSLIB?} \
 		-Vw{w}.{w}i{w}.{w}p{p}.{w}l{l}.{w}f{f}.{w}d{d}.{w} \
 		{M2_ALIGN?} {M2_F?} < >
 	prep cond

+ 71 - 0
mach/i86/libem/pmfile

@@ -0,0 +1,71 @@
+-- $Source$
+-- $State$
+-- $Revision$
+
+local d = ROOTDIR.."mach/i86/libem/"
+
+libem_i86 = acklibrary {
+	outputs = {"%U%/libem-%PLATFORM%.a"},
+
+	ackfile (d.."adi.s"),
+	ackfile (d.."and.s"),
+	ackfile (d.."cii.s"),
+	ackfile (d.."cms.s"),
+	ackfile (d.."cmi4.s"),
+	ackfile (d.."cmu4.s"),
+	ackfile (d.."com.s"),
+	ackfile (d.."csa2.s"),
+	ackfile (d.."csb2.s"),
+	ackfile (d.."csa4.s"),
+	ackfile (d.."csb4.s"),
+	ackfile (d.."cuu.s"),
+	ackfile (d.."dup.s"),
+	ackfile (d.."dvi.s"),
+	ackfile (d.."dvi4.s"),
+	ackfile (d.."dvu.s"),
+	ackfile (d.."dvu4.s"),
+	ackfile (d.."exg.s"),
+	ackfile (d.."fp8087.s"),
+	ackfile (d.."gto.s"),
+	ackfile (d.."iaar.s"),
+	ackfile (d.."ilar.s"),
+	ackfile (d.."inn.s"),
+	ackfile (d.."ior.s"),
+	ackfile (d.."isar.s"),
+	ackfile (d.."lar2.s"),
+	ackfile (d.."loi.s"),
+	ackfile (d.."mli.s"),
+	ackfile (d.."mli4.s"),
+	ackfile (d.."mon.s"),
+	ackfile (d.."ngi.s"),
+	ackfile (d.."nop.s"),
+	ackfile (d.."rck.s"),
+	ackfile (d.."rmi.s"),
+	ackfile (d.."rmi4.s"),
+	ackfile (d.."rmu.s"),
+	ackfile (d.."rmu4.s"),
+	ackfile (d.."rol.s"),
+	ackfile (d.."ror.s"),
+	ackfile (d.."sar2.s"),
+	ackfile (d.."sbi.s"),
+	ackfile (d.."set.s"),
+	ackfile (d.."sli.s"),
+	ackfile (d.."sri.s"),
+	ackfile (d.."sti.s"),
+	ackfile (d.."strhp.s"),
+	ackfile (d.."xor.s"),
+	ackfile (d.."error.s"),
+	ackfile (d.."unknown.s"),
+	ackfile (d.."fat.s"),
+	ackfile (d.."trp.s"),
+	ackfile (d.."print.s"),
+	ackfile (d.."ret6.s"),
+	ackfile (d.."ret8.s"),
+	ackfile (d.."lfr6.s"),
+	ackfile (d.."lfr8.s"),
+	ackfile (d.."retarea.s"),
+	ackfile (d.."blm.s"),
+	ackfile (d.."return.s"),
+
+	install = pm.install("%BINDIR%lib/%PLATFORM%/libem.a"),
+}

+ 16 - 0
mach/i86/libend/pmfile

@@ -0,0 +1,16 @@
+-- $Source$
+-- $State$
+-- $Revision$
+
+local d = ROOTDIR.."mach/i86/libend/"
+
+libend_i86 = acklibrary {
+	outputs = {"%U%/libend-%PLATFORM%.a"},
+
+	ackfile (d.."edata.s"),
+	ackfile (d.."em_end.s"),
+	ackfile (d.."end.s"),
+	ackfile (d.."etext.s"),
+
+	install = pm.install("%BINDIR%lib/%PLATFORM%/libend.a"),
+}

+ 10 - 12
mach/i86/pmfile

@@ -3,21 +3,19 @@
 
 local d = ROOTDIR.."mach/i86/"
 
+include (d.."libem/pmfile")
+include (d.."libend/pmfile")
+
 mach_i86 = group {
-	ARCH = "i86",
-	
 	proto_as,
 	proto_ncg { ARCHDIR = "i86" },
 	ego_descr,
-	
-	install = pm.install("%ROOTDIR%/lib/%ARCH%/descr", "%BINDIR%%PLATIND%/%ARCH%/descr")
 }
 
--- Revision history
--- $Log$
--- Revision 1.2  2006-07-22 00:52:01  dtrg
--- Added support for the ego global optimisation suite.
---
--- Revision 1.1  2006/07/20 23:18:18  dtrg
--- First version in CVS.
---
+support_i86 = group {
+	OPTIMISATION = "-O",
+
+	libem_i86,
+	libend_i86,
+}
+

+ 12 - 4
mach/proto/as/pmfile

@@ -17,9 +17,10 @@ local parser = yacc {
 
 local cfile_with_tables = cfile {
 	class = "cfile_with_tables",
+	CINCLUDES = {PARENT, "%ROOTDIR%mach/%ARCH%/as"},
+	
 	dynamicheaders = {
 		parser,
-		file (ROOTDIR.."mach/%ARCH%/as/")
 	}
 }
 
@@ -39,13 +40,20 @@ proto_as = cprogram {
 	
 	lib_object,
 	
-	outputs = {"%U%/%ARCH%-as"},
-	install = pm.install(BINDIR.."%PLATDEP%/%ARCH%/as")
+	outputs = {"%U%/%PLATFORM%-as"},
+	install = pm.install(BINDIR.."%PLATDEP%/%PLATFORM%/as")
 }
 
 -- Revision history
 -- $Log$
--- Revision 1.3  2006-10-15 00:28:12  dtrg
+-- Revision 1.4  2007-02-20 00:45:19  dtrg
+-- Done a major overhaul of the way target include files are installed and
+-- how platform libraries are built. The ARCH pm variable has now been
+-- renamed PLATFORM (which is more accurate) and a different ARCH
+-- variable added, which represents the CPU family rather than the
+-- hardware platform.
+--
+-- Revision 1.3  2006/10/15 00:28:12  dtrg
 -- Updated to the version 0.1 of Prime Mover (which involves some syntax changes).
 --
 -- Revision 1.2  2006/07/30 23:41:16  dtrg

+ 14 - 7
mach/proto/cg/pmfile

@@ -4,15 +4,15 @@
 local d = ROOTDIR.."mach/proto/cg/"
 
 local make_tables = cgg {
-	CGGINCLUDEDIR = (ROOTDIR.."mach/%ARCH%/cg/"),
-	file (ROOTDIR.."mach/%ARCH%/cg/table")
+	CGGINCLUDEDIR = (ROOTDIR.."mach/%PLATFORM%/cg/"),
+	file (ROOTDIR.."mach/%PLATFORM%/cg/table")
 }
 
 local cfile_with_tables = cfile {
 	class = "cfile_with_tables",
 	dynamicheaders = {
 		make_tables,
-		file (ROOTDIR.."mach/%ARCH%/cg/"),
+		file (ROOTDIR.."mach/%PLATFORM%/cg/"),
 		file (ROOTDIR.."mach/")
 	}
 }
@@ -39,7 +39,7 @@ proto_cg = cprogram {
 	cfile {
 		ith { make_tables, i = 1 },
 		dynamicheaders = {
-			file (ROOTDIR.."mach/%ARCH%/cg/"),
+			file (ROOTDIR.."mach/%PLATFORM%/cg/"),
 			file (d)
 		}
 	},
@@ -47,13 +47,20 @@ proto_cg = cprogram {
 	lib_em_data,
 	lib_flt_arith,
 	
-	outputs = {"%U%/%ARCH%-cg"},
-	install = pm.install("%BINDIR%%PLATDEP%/%ARCH%/cg")
+	outputs = {"%U%/%PLATFORM%-cg"},
+	install = pm.install("%BINDIR%%PLATDEP%/%PLATFORM%/cg")
 }
 
 -- Revision history
 -- $Log$
--- Revision 1.2  2006-10-15 00:28:12  dtrg
+-- Revision 1.3  2007-02-20 00:45:19  dtrg
+-- Done a major overhaul of the way target include files are installed and
+-- how platform libraries are built. The ARCH pm variable has now been
+-- renamed PLATFORM (which is more accurate) and a different ARCH
+-- variable added, which represents the CPU family rather than the
+-- hardware platform.
+--
+-- Revision 1.2  2006/10/15 00:28:12  dtrg
 -- Updated to the version 0.1 of Prime Mover (which involves some syntax changes).
 --
 -- Revision 1.1  2006/07/20 23:18:19  dtrg

+ 3 - 3
mach/proto/ncg/pmfile

@@ -20,7 +20,7 @@ proto_ncg = cprogram {
 	
 	CINCLUDES = {
 		PARENT,
-		"mach/%ARCH%/ncg",
+		"mach/%PLATFORM%/ncg",
 		"mach/%ARCHDIR%/ncg",
 		"mach"
 	},
@@ -50,6 +50,6 @@ proto_ncg = cprogram {
 	lib_em_data,
 	lib_flt_arith,
 	
-	outputs = {"%U%/%ARCH%-ncg"},
-	install = pm.install("%BINDIR%%PLATDEP%/%ARCH%/ncg")
+	outputs = {"%U%/%PLATFORM%-ncg"},
+	install = pm.install("%BINDIR%%PLATDEP%/%PLATFORM%/ncg")
 }

+ 12 - 5
mach/proto/top/pmfile

@@ -4,7 +4,7 @@
 local d = ROOTDIR.."mach/proto/top/"
 
 local make_tables = topgen {
-	file (ROOTDIR.."mach/%ARCH%/top/table")
+	file (ROOTDIR.."mach/%PLATFORM%/top/table")
 }
 
 local cfile_with_tables = cfile {
@@ -17,7 +17,7 @@ local cfile_with_tables = cfile {
 proto_top = cprogram {
 	CINCLUDES = {
 		PARENT,
-		"mach/%ARCH%/ncg",
+		"mach/%PLATFORM%/ncg",
 		"mach",
 		d
 	},
@@ -27,13 +27,20 @@ proto_top = cprogram {
 	
 	lib_string,
 	
-	outputs = {"%U%/%ARCH%-top"},
-	install = pm.install("%BINDIR%%PLATDEP%/%ARCH%/top")
+	outputs = {"%U%/%PLATFORM%-top"},
+	install = pm.install("%BINDIR%%PLATDEP%/%PLATFORM%/top")
 }
 
 -- Revision history
 -- $Log$
--- Revision 1.2  2006-10-15 00:28:12  dtrg
+-- Revision 1.3  2007-02-20 00:45:19  dtrg
+-- Done a major overhaul of the way target include files are installed and
+-- how platform libraries are built. The ARCH pm variable has now been
+-- renamed PLATFORM (which is more accurate) and a different ARCH
+-- variable added, which represents the CPU family rather than the
+-- hardware platform.
+--
+-- Revision 1.2  2006/10/15 00:28:12  dtrg
 -- Updated to the version 0.1 of Prime Mover (which involves some syntax changes).
 --
 -- Revision 1.1  2006/07/22 12:31:19  dtrg

+ 25 - 5
pmfile

@@ -7,6 +7,7 @@ include "first/yacc.pm"
 include "first/llgen.pm"
 include "config.pm"
 include "first/ack.pm"
+include "first/ack-custom.pm"
 
 CINCLUDES = {
 	ROOTDIR.."h",
@@ -18,6 +19,8 @@ CINCLUDES = {
 
 include "util/data/pmfile"
 
+include "util/LLgen/pmfile-ack"
+
 include "modules/src/alloc/pmfile"
 include "modules/src/assert/pmfile"
 include "modules/src/system/pmfile"
@@ -55,14 +58,15 @@ include "lang/occam/pmfile"
 include "lang/basic/pmfile"
 
 include "mach/proto/pmfile"
+
+include "mach/i386/pmfile"
+--[[
 include "mach/6500/pmfile"
 include "mach/6800/pmfile"
 include "mach/6805/pmfile"
 include "mach/6809/pmfile"
 include "mach/arm/pmfile"
-include "mach/i386/pmfile"
 include "mach/i80/pmfile"
-include "mach/i86/pmfile"
 include "mach/m68020/pmfile"
 include "mach/m68k2/pmfile"
 include "mach/m68k4/pmfile"
@@ -72,6 +76,7 @@ include "mach/s2650/pmfile"
 include "mach/vax4/pmfile"
 include "mach/z80/pmfile"
 include "mach/z8000/pmfile"
+--]]
 
 -- This is the list of language runtimes that is built for each architecture.
 
@@ -84,7 +89,16 @@ lang_runtimes = group {
 	lang_basic_runtime,
 }
 
+-- Include the platform descriptions.
+
+include "mach/i86/pmfile"              -- generic i86
+include "plat/pc86/pmfile"             -- PC standalone
+
 default = group {
+	-- Lots of things use LLgen, so we need to build it first.
+	
+	tool_LLgen,
+	
 	-- Some of the dependency management across modules isn't entirely
 	-- complete, for simplicity; as a result, the order here is important.
 	-- In particular, referencing a library does not cause the library to
@@ -134,6 +148,10 @@ default = group {
 	lang_occam_compiler,
 	lang_basic_compiler,
 
+	-- Build the code generators and the architecture-independent
+	-- libraries.
+	
+--[[
 	mach_6500,
 	lang_runtimes { ARCH="6500", OPTIMISATION="-O" },
 
@@ -144,9 +162,6 @@ default = group {
 	mach_i386,     lang_runtimes { ARCH="i386", OPTIMISATION="-O" },
 	mach_i80,      lang_runtimes { ARCH="i80", OPTIMISATION="-O" },
 
-	mach_i86,      support_i86,
-	lang_runtimes { ARCH="i86", OPTIMISATION="-O" },
-
 	mach_m68020,   lang_runtimes { ARCH="m68020", OPTIMISATION="-O" },
 --	mach_m68k2,    lang_runtimes { ARCH="m68k2", OPTIMISATION="-O" },
 --	mach_m68k4,    lang_runtimes { ARCH="m68k4", OPTIMISATION="-O" },
@@ -156,6 +171,11 @@ default = group {
 --	mach_vax4,     lang_runtimes { ARCH="vax4", OPTIMISATION="-O" },
 	mach_z80,      lang_runtimes { ARCH="z80", OPTIMISATION="-O" },
 	mach_z8000,    lang_runtimes { ARCH="z8000", OPTIMISATION="-O" },
+--]]
+
+	-- Build the platform-specific libraries.
+	
+	platform_pc86
 }
 
 -- Ensure that the work directories exist.