blob: 5b44b164fe8de9a2ed177f6a55671702a9e4871c (
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
|
.DEFAULT_GOAL := all
CC ?= cc
CCACHE_DISABLE ?= 1
CPPFLAGS += -include $(CURDIR)/compat.h -I$(CURDIR) -I$(CURDIR)/../cp
CFLAGS ?= -O2
CFLAGS += -std=c11 -g -Wall -Wextra -Wno-unused-parameter
LDFLAGS ?=
LDLIBS ?=
OBJDIR := $(CURDIR)/build
OUTDIR := $(CURDIR)/out
TARGET := $(OUTDIR)/pax
PAX_SRCS := ar_io.c ar_subs.c buf_subs.c cache.c cpio.c file_subs.c \
ftree.c gen_subs.c getoldopt.c linux_attrs.c options.c pat_rep.c pax.c sel_subs.c \
tables.c tar.c tty_subs.c compat.c
PAX_OBJS := $(addprefix $(OBJDIR)/,$(PAX_SRCS:.c=.o))
FTS_OBJ := $(OBJDIR)/fts.o
OBJS := $(PAX_OBJS) $(FTS_OBJ)
.PHONY: all clean dirs test status
all: $(TARGET)
dirs:
@mkdir -p "$(OBJDIR)" "$(OUTDIR)"
$(TARGET): $(OBJS) | dirs
env CCACHE_DISABLE=$(CCACHE_DISABLE) $(CC) $(LDFLAGS) -o "$@" $(OBJS) $(LDLIBS)
$(OBJDIR)/%.o: $(CURDIR)/%.c | dirs
env CCACHE_DISABLE=$(CCACHE_DISABLE) $(CC) $(CPPFLAGS) $(CFLAGS) -c "$<" -o "$@"
$(FTS_OBJ): $(CURDIR)/../cp/fts.c $(CURDIR)/../cp/fts.h | dirs
env CCACHE_DISABLE=$(CCACHE_DISABLE) $(CC) $(CPPFLAGS) $(CFLAGS) -c "$(CURDIR)/../cp/fts.c" -o "$@"
test: $(TARGET)
PAX_BIN="$(TARGET)" sh "$(CURDIR)/tests/test.sh"
status:
@printf '%s\n' "$(TARGET)"
clean:
@rm -rf "$(CURDIR)/build" "$(CURDIR)/out"
|