cosmopolitan/third_party/tr/tr.mk
Justine Tunney 3d2d04b25e
Make cli commands yoinkable into cosmo shell
This lets our system() and popen() commands function sort of like
BusyBox and ToyBox. By default the Cosmopolitan Shell is lightweight.
But if you use STATIC_YOINK then you can pull the individual commands
you want into the linkage, and they'll be included in a single binary.
For example the demo binary embeds `tr` and `sed` and ends up ~140kb.
2022-10-14 16:37:29 -07:00

58 lines
1.8 KiB
Makefile

#-*-mode:makefile-gmake;indent-tabs-mode:t;tab-width:8;coding:utf-8-*-┐
#───vi: set et ft=make ts=8 tw=8 fenc=utf-8 :vi───────────────────────┘
PKGS += THIRD_PARTY_TR
THIRD_PARTY_TR_ARTIFACTS += THIRD_PARTY_TR_A
THIRD_PARTY_TR = $(THIRD_PARTY_TR_DEPS) $(THIRD_PARTY_TR_A)
THIRD_PARTY_TR_A = o/$(MODE)/third_party/tr/tr.a
THIRD_PARTY_TR_FILES := $(wildcard third_party/tr/*)
THIRD_PARTY_TR_HDRS = $(filter %.h,$(THIRD_PARTY_TR_FILES))
THIRD_PARTY_TR_INCS = $(filter %.inc,$(THIRD_PARTY_TR_FILES))
THIRD_PARTY_TR_SRCS = $(filter %.c,$(THIRD_PARTY_TR_FILES))
THIRD_PARTY_TR_OBJS = $(THIRD_PARTY_TR_SRCS:%.c=o/$(MODE)/%.o)
THIRD_PARTY_TR_DIRECTDEPS = \
LIBC_FMT \
LIBC_MEM \
LIBC_NEXGEN32E \
LIBC_RUNTIME \
LIBC_CALLS \
LIBC_STDIO \
LIBC_STR \
LIBC_LOG \
LIBC_STUBS \
THIRD_PARTY_GETOPT
THIRD_PARTY_TR_DEPS := \
$(call uniq,$(foreach x,$(THIRD_PARTY_TR_DIRECTDEPS),$($(x))))
THIRD_PARTY_TR_CHECKS = \
$(THIRD_PARTY_TR_A).pkg \
$(THIRD_PARTY_TR_HDRS:%=o/$(MODE)/%.ok)
$(THIRD_PARTY_TR_A): \
third_party/tr/ \
$(THIRD_PARTY_TR_A).pkg \
$(THIRD_PARTY_TR_OBJS)
$(THIRD_PARTY_TR_A).pkg: \
$(THIRD_PARTY_TR_OBJS) \
$(foreach x,$(THIRD_PARTY_TR_DIRECTDEPS),$($(x)_A).pkg)
o/$(MODE)/third_party/tr/tr.com.dbg: \
$(THIRD_PARTY_TR) \
o/$(MODE)/third_party/tr/tr.o \
$(CRT) \
$(APE_NO_MODIFY_SELF)
@$(APELINK)
THIRD_PARTY_TR_LIBS = $(THIRD_PARTY_TR_A)
THIRD_PARTY_TR_BINS = $(THIRD_PARTY_TR_COMS) $(THIRD_PARTY_TR_COMS:%=%.dbg)
THIRD_PARTY_TR_COMS = o/$(MODE)/third_party/tr/tr.com
$(THIRD_PARTY_TR_OBJS): $(BUILD_FILES) third_party/tr/tr.mk
.PHONY: o/$(MODE)/third_party/tr
o/$(MODE)/third_party/tr: \
$(THIRD_PARTY_TR_BINS) \
$(THIRD_PARTY_TR_CHECKS)