summaryrefslogtreecommitdiff
path: root/U/alignbytes.U
diff options
context:
space:
mode:
Diffstat (limited to 'U/alignbytes.U')
-rw-r--r--U/alignbytes.U57
1 files changed, 57 insertions, 0 deletions
diff --git a/U/alignbytes.U b/U/alignbytes.U
new file mode 100644
index 0000000000..38526465a0
--- /dev/null
+++ b/U/alignbytes.U
@@ -0,0 +1,57 @@
+?RCS: $Id: alignbytes.U,v 3.0 1993/08/18 12:05:23 ram Exp $
+?RCS:
+?RCS: Copyright (c) 1991-1993, Raphael Manfredi
+?RCS:
+?RCS: You may redistribute only under the terms of the Artistic Licence,
+?RCS: as specified in the README file that comes with the distribution.
+?RCS: You may reuse parts of this distribution only within the terms of
+?RCS: that same Artistic Licence; a copy of which may be found at the root
+?RCS: of the source tree for dist 3.0.
+?RCS:
+?RCS: $Log: alignbytes.U,v $
+?RCS: Revision 3.0 1993/08/18 12:05:23 ram
+?RCS: Baseline for dist 3.0 netwide release.
+?RCS:
+?MAKE:memalignbytes: Myread cat cc ccflags rm
+?MAKE: -pick add $@ %<
+?S:memalignbytes:
+?S: This variable holds the number of bytes required to align a
+?S: double. Usual values are 2, 4 and 8.
+?S:.
+?X: This used to be called ALIGNBYTES, but that conflicts with
+?X: <machines/param.h> in NetBSD.
+?C:MEM_ALIGNBYTES (ALIGNBYTES):
+?C: This symbol contains the number of bytes required to align a
+?C: double. Usual values are 2, 4 and 8.
+?C:.
+?H:#define MEM_ALIGNBYTES $memalignbytes /**/
+?H:.
+: check for alignment requirements
+echo " "
+case "$memalignbytes" in
+'') echo "Checking alignment constraints..." >&4
+ $cat >try.c <<'EOCP'
+struct foobar {
+ char foo;
+ double bar;
+} try;
+main()
+{
+ printf("%d\n", (char *)&try.bar - (char *)&try.foo);
+}
+EOCP
+ if $cc $ccflags try.c -o try >/dev/null 2>&1; then
+ dflt=`./try`
+ else
+ dflt='8'
+ echo"(I can't seem to compile the test program...)"
+ fi
+ ;;
+*) dflt="$memalignbytes"
+ ;;
+esac
+rp="Doubles must be aligned on a how-many-byte boundary?"
+. ./myread
+memalignbytes="$ans"
+$rm -f try.c try
+