cosmopolitan/third_party/make
Justine Tunney ca4cf67eb8
Include more programs in cosmocc
The Cosmopolitan Compiler Collection now includes the following programs

- `ar.ape` is a faster alternative to `ar rcsD` for creating determistic
  static archives. It's ~10x faster than GNU because it isn't quadratic.
  It'll even outperform LLVM ar by 2x, thanks to writev/copy_file_range.

- `sha256sum.ape` is a faster alternative to the `sha256sum` command. It
  goes 2x faster since it leverages vectorized assembly implementations.

- `resymbol` is a brand new program we invented, like objcopy, that lets
  you rename all the global symbols in a .o file to have a new suffix or
  prefix. In the future, this will be used by cosmocc automatically when
  building -O3 math kernels, that need to be vectorized for all hardware

- `gzip.ape` is a faster version of the `gzip` command, that is included
  by most Linux distros. It gains better performance using Chromium Zlib
  which, once again, includes highly optimized assembly, that Mark Adler
  won't merge into the official MS-DOS compatible zlib codebase.

- `cocmd` is the cosmopolitan shell. It can function as a faster `sh -c`
  alternative than bash and dash as the `SHELL = /opt/cosmocc/bin/cocmd`
  at the top of your Makefile. Please note you should be using the cosmo
  fork of GNU make (already included), since normal make won't recognize
  this as a bourne-compatible shell and remove the execve() optimization
  which makes things slower. In some ways that's true. This doesn't have
  a complete POSIX shell implementation. However it's enough for cosmo's
  mono repo. It also implements faster behaviors in some respects.

The following programs are also introduced, which aren't as interesting.
The main reason why they're here is so Cosmopolitan's mono repo shall be
able to remove build/bootstrap/ in future editions. That way we can keep
build utilities better up to date, without bloating the git history much

- `chmod.ape` for hermeticity
- `cp.ape` for hermeticity
- `echo.ape` for hermeticity
- `objbincopy` is an objcopy-like tool that's used to build ape loader
- `package.ape` is used for strict dependency checking of object graph
- `rm.ape` for hermeticity
- `touch.ape` for hermeticity
2024-07-01 02:05:25 -07:00
..
BUILD.mk Implement proper time zone support 2024-05-04 23:06:37 -07:00
commands.c Import GNU Make 4.4.1 2023-11-30 20:54:52 -08:00
commands.h Import GNU Make 4.4.1 2023-11-30 20:54:52 -08:00
concat-filename.c Import GNU Make 4.4.1 2023-11-30 20:54:52 -08:00
concat-filename.h Import GNU Make 4.4.1 2023-11-30 20:54:52 -08:00
config.h Add WIN32 pseudo console APIs 2023-12-10 01:29:25 -08:00
debug.h Import GNU Make 4.4.1 2023-11-30 20:54:52 -08:00
default.c Import GNU Make 4.4.1 2023-11-30 20:54:52 -08:00
dep.h Import GNU Make 4.4.1 2023-11-30 20:54:52 -08:00
dir.c Import GNU Make 4.4.1 2023-11-30 20:54:52 -08:00
expand.c Import GNU Make 4.4.1 2023-11-30 20:54:52 -08:00
file.c Import GNU Make 4.4.1 2023-11-30 20:54:52 -08:00
filedef.h Import GNU Make 4.4.1 2023-11-30 20:54:52 -08:00
filename.h Import GNU Make 4.4.1 2023-11-30 20:54:52 -08:00
findprog-in.c Import GNU Make 4.4.1 2023-11-30 20:54:52 -08:00
findprog.h Import GNU Make 4.4.1 2023-11-30 20:54:52 -08:00
function.c Introduce --timelog=FILE flag to GNU Make 2024-05-25 14:50:20 -07:00
getopt.c Import GNU Make 4.4.1 2023-11-30 20:54:52 -08:00
getopt.h Import GNU Make 4.4.1 2023-11-30 20:54:52 -08:00
getopt1.c Import GNU Make 4.4.1 2023-11-30 20:54:52 -08:00
gettext.h Import GNU Make 4.4.1 2023-11-30 20:54:52 -08:00
glob.c Import GNU Make 4.4.1 2023-11-30 20:54:52 -08:00
glob.h Import GNU Make 4.4.1 2023-11-30 20:54:52 -08:00
gnumake.h Import GNU Make 4.4.1 2023-11-30 20:54:52 -08:00
guile.c Import GNU Make 4.4.1 2023-11-30 20:54:52 -08:00
hash.c Import GNU Make 4.4.1 2023-11-30 20:54:52 -08:00
hash.h Import GNU Make 4.4.1 2023-11-30 20:54:52 -08:00
implicit.c Import GNU Make 4.4.1 2023-11-30 20:54:52 -08:00
job.c Include more programs in cosmocc 2024-07-01 02:05:25 -07:00
job.h Introduce --timelog=FILE flag to GNU Make 2024-05-25 14:50:20 -07:00
load.c Import GNU Make 4.4.1 2023-11-30 20:54:52 -08:00
loadapi.c Import GNU Make 4.4.1 2023-11-30 20:54:52 -08:00
main.c Introduce --timelog=FILE flag to GNU Make 2024-05-25 14:50:20 -07:00
makeint.h Import GNU Make 4.4.1 2023-11-30 20:54:52 -08:00
misc.c Allow MAP_POPULATE under pledge() 2023-12-04 23:15:41 -08:00
mkconfig.h Import GNU Make 4.4.1 2023-11-30 20:54:52 -08:00
mkcustom.h Import GNU Make 4.4.1 2023-11-30 20:54:52 -08:00
os.h Import GNU Make 4.4.1 2023-11-30 20:54:52 -08:00
output.c Import GNU Make 4.4.1 2023-11-30 20:54:52 -08:00
output.h Import GNU Make 4.4.1 2023-11-30 20:54:52 -08:00
posixos.c Import GNU Make 4.4.1 2023-11-30 20:54:52 -08:00
read.c Import GNU Make 4.4.1 2023-11-30 20:54:52 -08:00
README.cosmo Introduce --timelog=FILE flag to GNU Make 2024-05-25 14:50:20 -07:00
remake.c Import GNU Make 4.4.1 2023-11-30 20:54:52 -08:00
remote-stub.c Import GNU Make 4.4.1 2023-11-30 20:54:52 -08:00
rule.c Import GNU Make 4.4.1 2023-11-30 20:54:52 -08:00
rule.h Import GNU Make 4.4.1 2023-11-30 20:54:52 -08:00
shuffle.c Import GNU Make 4.4.1 2023-11-30 20:54:52 -08:00
shuffle.h Import GNU Make 4.4.1 2023-11-30 20:54:52 -08:00
signame.c Give GNU Make limitless stacks 2024-01-04 03:26:26 -08:00
strcache.c Import GNU Make 4.4.1 2023-11-30 20:54:52 -08:00
timelog.c Introduce --timelog=FILE flag to GNU Make 2024-05-25 14:50:20 -07:00
timelog.h Introduce --timelog=FILE flag to GNU Make 2024-05-25 14:50:20 -07:00
variable.c Import GNU Make 4.4.1 2023-11-30 20:54:52 -08:00
variable.h Import GNU Make 4.4.1 2023-11-30 20:54:52 -08:00
version.c Import GNU Make 4.4.1 2023-11-30 20:54:52 -08:00
vpath.c Import GNU Make 4.4.1 2023-11-30 20:54:52 -08:00

DESCRIPTION

  Landlock Make is a fork of GNU Make that adds support for automatic
  sandboxing, resource limits, and network access restrictions.

ORIGIN

  GNU Make 4.4.1
  http://ftp.gnu.org/gnu/make/make-4.4.1.tar.gz

LICENSE

  GNU GPL version 3 or later
  http://gnu.org/licenses/gpl.html

LOCAL CHANGES

  - Introduce -T FILE, --time-log=FILE flag
  - Introduce $(uniq token...) native function
  - Remove code that forces slow path if not using /bin/sh

TODO

  - .PLEDGE variable which restricts system calls
  - .UNVEIL variable which controls Landlock LSM
  - .STRICT variable to disable implicit unveiling
  - .UNSANDBOXED variable to disable pledge / unveil
  - .CPU variable which tunes CPU rlimit in seconds
  - .MEMORY variable for virtual memory limit, e.g. 512m
  - .RSS variable for resident memory limit, e.g. 512m
  - .FSIZE variable which tunes max file size, e.g. 1g
  - .NPROC variable which tunes fork() / clone() limit
  - .NOFILE variable which tunes file descriptor limit
  - .MAXCORE variable to set upper limit on core dumps