Commit Graph
424 Commits
Author SHA1 Message Date
lassik 6ffe6bf174 Add truly sinful float hacks for Watcom 2019-08-21 22:11:05 +03:00
lassik 439eeb2b06 Use vsnprintf() instead of vasprintf()
Windows doesn't reliably offer *asprintf() (sprintf functions that
automatically malloc as much memory as they need) so hand-roll the
equivalent on all platforms.
2019-08-21 22:10:13 +03:00
lassik c76379e6f5 Brace try/except in main() for Watcom 2019-08-21 22:08:21 +03:00
lassik 60ff06fb6d Reorganize error functions and includes
These functions are complicated because they need to be marked
"noreturn" for the compiler. There are several fundamentally
incompatible ways of doing that. Since we have only a few "noreturn"
functions, let's just list all of those in one header file of which
there is a completely different version for each compiler.
2019-08-21 22:06:13 +03:00
lassik debbcdf857 Add missing #endif 2019-08-19 09:49:14 +03:00
lassik ddb6116df9 Add bits and endian for Watcom compiler 2019-08-19 01:20:40 +03:00
lassik a6fd653000 Add missing includes for Windows 2019-08-19 01:20:02 +03:00
lassik 69f46bd4c2 Do not use special _fileno for windows 2019-08-19 01:19:03 +03:00
lassik d12fd5cea7 Split _enonfatal() for Windows 2019-08-19 01:18:36 +03:00
lassik 35acc782d9 Remove asm byteswap implementations 2019-08-19 01:17:54 +03:00
lassik e2dffd97fe Remove time.now and parsetime functions 2019-08-19 01:15:28 +03:00
lassik 023937e5ea Use backward compatible variable initializers 2019-08-19 01:14:09 +03:00
lassik 486ec48a76 Remove spurious time includes 2019-08-18 13:44:06 +03:00
lassik d065a0039d Define float_t and double_t for Watcom C 2019-08-18 13:40:25 +03:00
lassik 9571262535 Use backward compatible variable initializers 2019-08-18 13:40:04 +03:00
lassik 7025b8cd32 Split fl_path_exists() into Unix and Windows 2019-08-18 13:39:08 +03:00
lassik 3448e8f150 Include missing <stdarg.h> 2019-08-18 13:36:43 +03:00
lassik 3dc58baa4a Include <sys/types.h> to get off_t
This header is even shipped by Windows compilers. The iostream stuff
uses off_t.
2019-08-18 00:09:43 +03:00
lassik baea23ab29 Switch to portable noreturn attributes 2019-08-18 00:07:46 +03:00
lassik edf7c991f4 Remove unneeded DLLEXPORT and STDCALL macros 2019-08-17 22:55:25 +03:00
lassik 3f0a44ad7e Add aliases.scm into the system image 2019-08-15 23:05:23 +03:00
lassik b60d330df1 Add hacky subprocess spawn procedure 2019-08-14 20:31:39 +03:00
lassik 2d0add09d5 Add color-name->rgb24 procedure 2019-08-14 20:02:48 +03:00
lassik cfdb8f2928 Add get-ID procedures from draft SRFI 170 2019-08-14 17:48:13 +03:00
lassik ca8e23c079 Add builtins.h file missing from last commit 2019-08-14 13:54:50 +03:00
lassik 78a04430ce Add read-ini-file procedure
Reads a .ini file into an association list. No [section] parsing yet.
2019-08-14 13:49:56 +03:00
lassik 50c9fb2448 Sort .c and .o files in build.sh 2019-08-14 13:48:53 +03:00
lassik 7ac23c6f0b Add scanner interface to "struct buf"
Can be used to easily write simple parsers in C.
2019-08-14 13:46:50 +03:00
lassik 44a8208d38 Add buf_put_ios() utility function
Fills a "struct buf" with the entire remainder of a stream.
2019-08-14 13:39:11 +03:00
lassik a6ecac95e1 Rename fs*.c -> os*.c
I planned to put just the file system routines into these files, but
there are starting to be so many of them that I don't want to
duplicate the same set for networking, subprocesses etc.
2019-08-14 01:15:29 +03:00
lassik 1e0a6350b5 Echo unittest command in build.sh 2019-08-14 00:58:52 +03:00
lassik 83cc9b21b1 Add blank lines to ease reading build.sh 2019-08-14 00:56:31 +03:00
lassik 2048ac0d45 Remove duplicate -lm switches from build.sh 2019-08-14 00:55:05 +03:00
lassik 6c8a10155d Remove spurious echo from build.sh 2019-08-14 00:54:22 +03:00
lassik d781c65862 Fix oversight in the bootstrap procedure
Stage 0 is supposed to emit compiled versions of system.scm and
compiler.scm. The compiler.scm bytecode wasn't emitted properly
because the emitter put the two files' bytecode in two separate C
variables instead of concatenating them into the same variable as they
should be.
2019-08-14 00:44:24 +03:00
lassik cccbe54bb5 Finally fix the default cflags for real 2019-08-14 00:05:10 +03:00
lassik bf11066313 Add stubs for Haiku, Minix and Solaris 2019-08-14 00:01:26 +03:00
lassik d69ad59126 Expand here-document
Debian /bin/sh cannot handle it.
2019-08-13 23:47:43 +03:00
lassik c14c723859 Update temp boot image paths 2019-08-13 23:20:47 +03:00
lassik 5ced8d91f6 Store boot image inside main executable
Previously the boot image was kept in the separate file "flisp.boot".
This caused all kinds of problems, as bootstrapping is wont to do. The
biggest problem was finding a portable and convenient pathname for it.

Instead of dealing with all that stuff about how to find the file,
just store the image in a huge C string constant that goes into the
main executable. This necessitates adding a C-string hex dumper into
the Lisp system, and making build.sh slightly more complicated, but
that's a small price to pay for not having to carry a separate file
everywhere we go. Also, flmain.c is a lot simpler now and we don't
have to play around with symlinks.
2019-08-13 23:07:44 +03:00
lassik 2e8153019c Add read-u8 built-in (R7RS)
io.getc gets UTF-8 characters
2019-08-13 22:53:37 +03:00
lassik c2da0753af Fix some more "long double" nonsense 2019-08-13 18:51:43 +03:00
lassik 1f3a4798e1 Expand some cflag definitions in build.sh and add Minix 2019-08-13 18:30:27 +03:00
lassik 71098dd01b Fix some "long double" nonsense
Apparently in addition to "float", "double" and "long double" there
are now standard types in <math.h> called "float_t" and "double_t".
Those types don't need to be equivalent to "float" and "double". Gah!
2019-08-13 18:28:19 +03:00
lassik 4a89521493 Use 'int' instead of 'char' for character variables
MINIX libc headers define the ctype.h toupper() etc. functions as
preprocessor macros that don't cast their argument to int! So a char
argument causes clang to say "warning: array subscript is of type
'char'".
2019-08-13 17:53:17 +03:00
lassik 10eb936836 Start file system support for NetBSD 2019-08-13 15:53:37 +03:00
lassik 9b737144ea Fix portability bugs uncovered by Alpine Linux/musl libc 2019-08-13 14:19:38 +03:00
lassik 277abddaa8 Turn (import ...) into a macro to match Scheme syntax 2019-08-12 18:18:46 +03:00
lassik 5012977d32 Start environment-stack implementation 2019-08-11 23:27:38 +03:00
lassik f2068b5783 Add missing const qualifiers 2019-08-11 23:27:12 +03:00