Alex Smith [Mon, 27 Sep 2010 10:51:36 +0000 (11:51 +0100)]
Remove another generated file from the repo
The reason it wasn't caught earlier is, I think, that it's only generated
into release tarballs, with the repo version just sitting there and getting
more and more out of date. It isn't necessary, at least, especially as the
manifest's available directly from git in a more correct manner.
Alex Smith [Mon, 27 Sep 2010 10:28:09 +0000 (11:28 +0100)]
Fix permute.i test failure, and clean up build system and boolean detection
The cause of the bug was that "bool" referred to a different type in libick.a
and in compiled programs, which could be caused by, e.g., different compilers
(entirely plausible in cross-compiling) or a different header environment
(what actually happened was a missing config.h, as that isn't installed). The
fix used here was to change abcess.h from immutable to a generated file,
containing the boolean types actually used to build C-INTERCAL and requiring
their use for the eventually generated programs, preventing the type mismatch.
This fails if C-INTERCAL is built with a compiler that supports booleans, and
run with a $CC that doesn't, but at least it now fails noisly in that case
rather than silently, with nothing but a mysterious regression check failure
in permute.i.
As part of this, config.h was cleaned up; configuration #defines now
consistently use the values 1 or undef, rather than /**/ or undef sometimes,
and 1 or undef other times; this is needed to AC_SUBST the values into
abcess.h correctly, but is useful cleanup in any case.
Alex Smith [Tue, 7 Sep 2010 20:28:07 +0000 (21:28 +0100)]
Fix some bugs and nonportabilities pointed out by clang
The build now works correctly under clang; usefully, it seems to make
the intermittently-working permute test fail more reliably. It's always
nice to get the opinion of a second compiler!
Alex Smith [Tue, 7 Sep 2010 19:54:44 +0000 (20:54 +0100)]
Let configure check for the varargs/_Bool interaction
According to the C standard, passing _Bool via varargs is undefined
behaviour. This lets autoconf check to see whether it actually works,
and casts to int in the relevant location if it doesn't. (Recent gcc
will compile an attempt to access a boolean via varargs into an
illegal instruction.)
Alex Smith [Sun, 5 Sep 2010 08:00:59 +0000 (09:00 +0100)]
Build system working on DOS; add necessary scripts and documentation
Unfortunately, the resulting programs don't actually /run/ correctly
on DOS yet, but rather crash with SIGILL (at _ick_resize plus 3 bytes).
I suspect this is linked to the bool-with-varargs problem somehow.
There's also a problem with clock slew / failure to restore timestamps
when building without yacc/lex, which needs fixing (and unfortunately,
adding a few uses of "touch" doesn't seem to work on DOS for some
reason).
Alex Smith [Sun, 5 Sep 2010 04:37:20 +0000 (05:37 +0100)]
Handle missing lex and/or yacc correctly
This depends on the system in question having sane timestamps. Apparently,
DOS doesn't, and DOSBox even less so; I'm not sure what to do about this,
but this fix doesn't harm anything, and helps on systems like Linux and
OS X that are missing lex/flex and/or yacc/bison.
Alex Smith [Fri, 3 Sep 2010 01:37:31 +0000 (02:37 +0100)]
Document interfunge and its testsuite; use an actual Befunge testsuite rather than a Hello World
This now uses the (BSD-licensed and credited in a .doc file) Mycology test
suite by Matti Niemenmaa in order to test interfunge.i (and indirectly the
C-INTERCAL compiler itself), rather than the Hello World program that was
used as a test beforehand.
Alex Smith [Fri, 3 Sep 2010 01:08:31 +0000 (02:08 +0100)]
Get -F working again, add a regression test for it
-F tends to break particularly often (it was broken by accident due to
changes to autoconf and to perpet.c); hopefully the regression test
(using beer.i) will catch problems with -F in future.
Alex Smith [Thu, 2 Sep 2010 23:31:30 +0000 (00:31 +0100)]
Add chipspec.txt back to the repository
There's no obvious reason why it was removed; it seems to have been
deleted by mistake around C-INTERCAL 0.28. Also add it back to the
distribution tarball.
Alex Smith [Thu, 2 Sep 2010 20:24:47 +0000 (21:24 +0100)]
Fix type mismatch between oil.h, dekludge.c
Wow was this one subtle. "bool" was somehow defined as 8-bit in
dekludge.c, but 32-bit in oil.h, due to include files being included
differently, and this was causing boolean-valued checks to fail
silently.
Alex Smith [Thu, 2 Sep 2010 19:52:26 +0000 (20:52 +0100)]
Fix bugs in file-finding logic
This is both a logic error (an incomplete change from ICKDATADIR to
ICKSYSDIR/ICKCSKELDIR), and a simple typo that was preventing the
skeleton file from being found in an installed setup.
Alex Smith [Thu, 2 Sep 2010 18:39:31 +0000 (19:39 +0100)]
Boolean fixes + autoconfiscation of booleans
Cleaning up ick_bool.h to work even on systems with an insane
stdbool.h; fixing oil.y to use the new booleans throughout;
integrating ick_bool.h into the autoconf system.
Alex Smith [Wed, 1 Sep 2010 20:27:34 +0000 (21:27 +0100)]
Remove generated files from the repository, change build system to match
A new shell script buildaux/regenerate-build-system.sh will regenerate
the build system from scratch, which is needed to run a repository
version. (The contents of distribution tarballs are unchanged.) Many
build system changes are needed to make everything work correctly,
including the integration of the pit and src makefiles (the pit
makefile needs to know where the pit actually /is/); make distcheck
now passes.