aboutsummaryrefslogtreecommitdiff
path: root/doc/software.md
diff options
context:
space:
mode:
Diffstat (limited to 'doc/software.md')
-rw-r--r--doc/software.md46
1 files changed, 46 insertions, 0 deletions
diff --git a/doc/software.md b/doc/software.md
new file mode 100644
index 0000000..86a9215
--- /dev/null
+++ b/doc/software.md
@@ -0,0 +1,46 @@
+# Software notes
+
+This document lists some software known to build successfully, and any
+special procedures necessary.
+
+## [sbase]
+
+Builds without issue as of [ef9f6f35].
+
+[sbase]: https://core.suckless.org/sbase/
+[ef9f6f35]: https://git.suckless.org/sbase/commit/ef9f6f359a0762b738302ae05822514d72b70450.html
+
+## [binutils]
+
+QBE must be built with `NPred` (in `all.h` at least 297).
+
+On glibc systems, you must make sure to include `crtbegin.o` and
+`crtend.o` from gcc at the end of `startfiles` and beginning of `endfiles`
+respectively.
+
+On musl systems, you must define `long double` to match `double` to
+avoid errors in unused `static inline` functions in musl's `math.h`.
+
+Requires several patches available here:
+https://github.com/michaelforney/binutils-gdb/
+
+- Fix function pointer subtraction in `bfd/doc/chew.c` (applied upstream).
+- Skip unsupported `LDFLAGS`, only tested to work against `CXX` by
+ configure, but applied to `CC` as well.
+- Disable `long double` support in `_bfd_doprnt`.
+- Alter some ifdefs to avoid statement expressions and VLAs.
+- Implement `pex_unix_exec_child` with `posix_spawn` instead of `vfork`
+ and subtle `volatile` usage.
+- Make `regcomp` and `regexec` match the header declaration in usage of
+ `restrict`.
+- Don't declare `vasprintf` unless it was checked for and not
+ found. Several subdirectories in binutils include `libiberty.h`,
+ but don't use `vasprintf`, causing conflicting declarations with libc
+ in usage of `restrict`.
+- Make sure `config.h` is included in `arlex.c` so that the appropriate
+ feature-test macros get defined to expose `strdup`.
+
+Configure with
+
+ ./configure CC=/path/to/cc CFLAGS_FOR_BUILD=-D_GNU_SOURCE \
+ --disable-intl --disable-gdb --disable-plugins --disable-readline