build(Makefile): LLD linker, objects/ dir, LTO+linker opts

- Compiler selection: Remove TCC, default to Clang, GCC fallback
- LLD linker: -fuse-ld=lld for all builds (peachwm + peachmsg)
- Object relocation: .o files output to objects/{src,parser,protocols,peachmsg}/
- Clean target: rm -rf objects + transitional stale .o cleanup
- Release: -flto=thin, linker opts (gc-sections, icf=safe, z now, etc.)
- Release: strip both peachwm and peachmsg binaries
- README + CONTRIBUTING: Add LLD dependency, update build docs
- .gitignore: Add objects/ directory
This commit is contained in:
2026-07-05 20:27:47 -04:00
parent 2773724d77
commit 79e7e26a49
4 changed files with 58 additions and 38 deletions
+2 -1
View File
@@ -38,7 +38,8 @@ PeachWM is maintained by [HuntedByTheIRS](https://github.com/HuntedByTheIRS).
- xkbcommon
- wayland-protocols (compile-time only)
- pkg-config (compile-time only)
- a C23 compiler — GCC 14+ or Clang 18+ (clang recommended)
- a C23 compiler — Clang 18+ (default) or GCC 14+
- LLD linker (for linking; part of LLVM)
Install these (and their `-devel` versions if your distro has separate
development packages) and run `make` followed by `doas/sudo make install`,