aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--README.md56
1 files changed, 46 insertions, 10 deletions
diff --git a/README.md b/README.md
index 0de7c47..66e09b2 100644
--- a/README.md
+++ b/README.md
@@ -3,17 +3,53 @@
This is a C11 compiler using [QBE] as a backend.
There is still much to do and the code is a little rough, but it currently
-implements most of the language and is self-hosting.
+implements most of the language, is self-hosting, and capable of building
+some useful software.
-Still TODO:
+# Requirements
-- Come up with a name so it can be installed alongside the system `cc`.
-- The preprocessor (currently we are just using the system `cpp`).
-- Bit-fields.
-- Variable-length arrays.
-- `volatile`-qualified types (requires support from QBE).
-- `_Thread_local` storage-class specifier (requires support from QBE).
-- `long double` type (requires support from QBE).
-- Inline assembly (requires support from QBE).
+The compiler itself is written in standard [C11] and can be built with
+any conforming C11 compiler.
+
+The POSIX driver depends on POSIX.1-2008 interfaces, and the Makefile
+requires a POSIX-compatible make(1).
+
+The preprocessor is not yet implemented, so an existing one is currently
+required.
+
+# Target configuration
+
+You will need to create a `config.h` appropriate for the target system. If
+missing, a default version will be created from `config.def.h`,
+which should work for most glibc systems, or musl systems with
+`-D 'DYNAMIC_LINKER="/lib/ld-musl-x86_64.so.1"'`.
+
+# What's missing
+
+- Digraph and trigraph sequences ([6.4.6p3] and [5.2.1.1], will not
+ be implemented).
+- Wide string literals and character constants ([#35] and [#36]).
+- Variable-length arrays ([#1]).
+- `volatile`-qualified types ([#7]).
+- `_Thread_local` storage-class specifier ([#5]).
+- `long double` type ([#3]).
+- Inline assembly ([#5]).
+- Preprocessor ([#6]).
+- Generation of position independent code (i.e. shared libraries,
+ modules, PIEs).
+
+# Issue tracker
+
+Please report any issues to https://todo.sr.ht/~mcf/cc-issues.
[QBE]: https://c9x.me/compile/
+[C11]: http://port70.net/~nsz/c/c11/n1570.html
+[5.2.1.1]: http://port70.net/~nsz/c/c11/n1570.html#5.2.1.1
+[6.4.6p3]: http://port70.net/~nsz/c/c11/n1570.html#6.4.6p3
+[#1]: https://todo.sr.ht/~mcf/cc-issues/1
+[#3]: https://todo.sr.ht/~mcf/cc-issues/3
+[#5]: https://todo.sr.ht/~mcf/cc-issues/5
+[#6]: https://todo.sr.ht/~mcf/cc-issues/6
+[#7]: https://todo.sr.ht/~mcf/cc-issues/7
+[#35]: https://todo.sr.ht/~mcf/cc-issues/35
+[#36]: https://todo.sr.ht/~mcf/cc-issues/36