ea4142daee
First half of the ackbuilder documentation.
David Given2016-09-03 01:04:16 +02:00
ff9bf5b08a
Makefiles are now slightly less inaccurate. Does actually seem to do sensible incremental builds now. I loathe make.
David Given2016-09-03 00:20:11 +02:00
f67c98e239
Distributions are a pain --- let's not bother any more. Instead, we just tag the repository and download a complete snapshot, old and ancient stuff and all.
David Given2016-09-02 23:00:38 +02:00
612e38f1c6
Remove the old make-based build system, plus some big chunks of horribly obsolete protomake build system.
David Given2016-09-02 22:17:51 +02:00
2b6d251dec
Fix a fun bug where, every now again, ego would get its temporary files mangled and generate invalid calls to the optimisers.
David Given2016-08-22 23:53:01 +02:00
08823a172c
filenamesof() an installable now returns all installed files, not just the ones at the top level (necessary to make a lot of the dependency stuff work when using tools which depend on installables).
David Given2016-08-21 21:55:21 +02:00
84ee7c9cc4
Fix linking bug where em_decode would generate binary data instead of text.
David Given2016-08-21 20:27:52 +02:00
03a0b182c4
Push em_ego.c through clang-format before working on it.
David Given2016-08-21 18:45:25 +02:00
1a7b4f8729
Build the examples when doing a normal build; this exercises the compiler as a whole and is one step further towards a proper test suite.
David Given2016-08-20 14:05:24 +02:00
53c9731036
aal doesn't build the ranlib table if you don't set -DAAL.
David Given2016-08-20 14:04:46 +02:00
856eb120b3
Add files which got missed in the initial build pass.
David Given2016-08-20 14:04:17 +02:00
edee22510b
liblinux is no more; its files are now in libsys.
David Given2016-08-20 14:03:49 +02:00
52eaf753b6
rpi has a time() function; don't try to call gettimeofday().
David Given2016-08-20 14:03:19 +02:00
f561b94b49
Print hex numbers actually properly this time.
David Given2016-08-20 14:02:12 +02:00
fb2a42a2db
installables need to depend on their source files...
David Given2016-08-14 11:25:47 +02:00
3df4906d52
Turns out I wasn't building the syscall libraries. Do so.
David Given2016-08-14 11:23:57 +02:00
b549980af2
Wasn't exporting the plat headers; refactor to make this a little cleaner.
David Given2016-08-14 11:01:36 +02:00
f253b6a169
linux386 builds. Also, forgot to turn back on the language runtimes.
David Given2016-08-14 10:37:55 +02:00
262c5fedcf
Biggish refactor to break cycles; my build rules were full of them. cpm builds, which requires top and topgen.
David Given2016-08-14 01:39:40 +02:00
10746f8b97
Add cycle detection, because it was ruining my day. Allow targets to be stored in a file called build-<target>.lua to allow better dividing up of build rules (to break cycles).
David Given2016-08-14 01:38:36 +02:00
00c67fcc0e
Modula-2 runtime library now builds.
David Given2016-08-13 12:43:44 +02:00
dbf8332bf0
Fixed a small bug where two line number directives next to each other wouldn't be parsed properly (the second one would be treated as Modula-2 syntax).
David Given2016-08-13 12:21:16 +02:00
b592c88bdf
replace() gets confused if you give it a singleton list as its parameter.
David Given2016-08-12 00:19:30 +02:00
a200a2fb53
Replaced the funky and hard-to-compile ACK malloc with a much smaller and simpler one stolen from K&R. libc builds now.
David Given2016-08-11 00:30:32 +02:00
3ce4e53aa9
Most of libc builds now (missing malloc).
David Given2016-08-08 23:55:47 +02:00
c213602a02
Target lists can now have keyed items ({["foo"] = "+target"); this is used by both installable and by clibrary{} to allow headers to be installed into subdirectories.
David Given2016-08-08 23:55:23 +02:00
b50dc4214a
Add check for undefined variables. Find undefined variables. Fix undefined variables.
David Given2016-08-05 00:01:55 +02:00
5e84be70fd
Massive ackbuilder refactor --- cleaner and more expressive. Lists are automatically flattened (leading to better build files), and the list and filename functions are vastly more orthogonal.
David Given2016-08-04 23:51:19 +02:00
b2bb4ce3b2
Builds libend (the simplest library). Becoming obvious I need to rework the way ackbuilder deals with lists.
David Given2016-07-30 00:39:22 +02:00
363d13cc2f
C preprocessor; tabgen; now the pc86 boot.s builds using the ack toolchain.
David Given2016-07-29 00:22:49 +02:00
c6292642c6
Fix a nasty dependency bug where filenamesof() on installables wouldn't return any of the installable files (which meant installables were never considered as dependencies).
David Given2016-07-29 00:22:22 +02:00
f9c77fca03
Replace the hacky cflags variable with an equally hacky but vastly more useful magic vars variable.
David Given2016-07-27 00:10:15 +02:00
cdeea836f2
Replaced the fairly complex environment code with a much simpler emitter object.
David Given2016-07-26 23:43:31 +02:00
bff5c4019c
Baby steps towards building a platform --- make the assembler work. Add ackbuilder support for C preprocessor files and yacc.
David Given2016-07-24 00:50:02 +02:00
2770a83837
More programs, more libraries. src/modules build files are now saner.
David Given2016-07-23 00:30:31 +02:00
05e3cf286f
Saner clibrary dependency and header handling.
David Given2016-07-19 23:42:56 +02:00
b7720c298b
Error out if a template expansion returns nil (as it's normally an error).
David Given2016-07-19 23:42:42 +02:00
2d2497c318
ackbuilder rules files now require absolute paths in external variables (otherwise commands which change directory don't work).
David Given2016-07-18 23:16:27 +02:00
523374c36b
Built a make bootstrap that runs either make or ninja depending on which is installed.
David Given2016-07-16 14:58:29 +02:00
bcf3408e36
More stuff builds; almost the C compiler now.
David Given2016-07-14 23:54:13 +02:00
cdbd605803
concat, targetnamesof. deps is now handled more consistently (treated the same as ins but not passed in as inputs).
David Given2016-07-14 23:53:34 +02:00
f70c12fad5
Allow headers which aren't .h files.
David Given2016-06-30 13:27:47 +02:00
1978867fd2
Add ninja support. It works so much better than make.
David Given2016-06-19 08:55:02 +02:00
2af8568cc3
First draft at installables; not very satisfactory. make bugs with multiple output targets and parallelism?
David Given2016-06-16 05:26:44 +02:00
09554cb324
installable works, although it's a bit kludgy. Change the : separator to + because : is special in make and non of the others I could think of would work.
David Given2016-06-14 07:34:14 +02:00