summaryrefslogtreecommitdiff
path: root/corebinutils/README.md
blob: e7931f95aefecf5135448c045521f57e295f50b8 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
# bin

Top-level monolithic build entrypoint for Project Tick BSD/Linux `bin` ports.

This directory provides a `./configure && make` workflow that orchestrates all
ported subcommands while keeping each subdirectory's own `GNUmakefile` as the
build source of truth.

## Build

```sh
./configure
make -f GNUmakefile -j"$(nproc)" all
```

Default behavior is musl-first toolchain selection (`musl-gcc`/musl-capable
clang candidates), with generated top-level overrides for common variables
(`CC`, `AR`, `RANLIB`, `CPPFLAGS`, `CFLAGS`, `LDFLAGS`, etc.).

## Test

```sh
make -f GNUmakefile test
```

This runs each subdirectory test target through the top-level orchestrator.
Environment-limited tests may print `SKIP` and continue.

## Outputs

All generated artifacts are centralized under:

```text
build/   # object and generated intermediate files
out/     # final binaries and test helper outputs
```

Subdirectories are prepared to use these shared roots during top-level builds.

## Maintenance Targets

```sh
make -f GNUmakefile clean
make -f GNUmakefile distclean
make -f GNUmakefile reconfigure
```

- `clean`: removes shared `build/` and `out/`
- `distclean`: also removes generated top-level `GNUmakefile` and `config.mk`
- `reconfigure`: regenerates top-level build files

## Notes

- Subdirectory `GNUmakefile` files are not replaced; the top-level file only
  drives and overrides invocation context.
- `GNUmakefile` and `config.mk` are generated artifacts from `./configure`.
- For command-specific behavior, limitations, and port notes, see each
  subdirectory `README.md`.