blob: 8080fa0defd37da00b0fefa42d790620f60f238a (
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
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
|
BIN = sdar
PREFIX ?= /usr
SYS := $(shell uname -s)
CPU := $(shell uname -m)
ifeq ($(SYS),Linux)
CFLAGS += -D_POSIX_C_SOURCE=200809L -D_DEFAULT_SOURCE
endif
LZ4SRC = sdar/lib/lz4/lz4.c
LZ4OBJ = $(LZ4SRC:sdar/%.c=obj/%.o)
BLAKE3SRC = sdar/lib/blake3/blake3.c \
sdar/lib/blake3/blake3_dispatch.c \
sdar/lib/blake3/blake3_portable.c
BLAKE3FLAGS = -DBLAKE3_NO_SSE2 -DBLAKE3_NO_SSE41 \
-DBLAKE3_NO_AVX2 -DBLAKE3_NO_AVX512
ifeq ($(CPU),x86_64)
BLAKE3SRC += $(wildcard sdar/lib/blake3/*_x86-64_unix.S)
BLAKE3FLAGS := -DBLAKE3_NO_SSE2
endif
ifeq ($(CPU),arm64)
BLAKE3SRC += sdar/lib/blake3/blake3_neon.c
BLAKE3FLAGS += -DBLAKE3_USE_NEON=1
endif
BLAKE3OBJ = $(BLAKE3SRC:sdar/%.c=obj/%.o)
BLAKE3OBJ := $(BLAKE3OBJ:sdar/%.S=obj/%.o)
SCRYPTSRC = $(wildcard sdar/lib/scrypt/*.c)
SCRYPTOBJ = $(SCRYPTSRC:sdar/%.c=obj/%.o)
NACLSRC = $(wildcard sdar/lib/nacl/*.c)
ifeq ($(CPU),x86_64)
NACLSRC += $(wildcard sdar/lib/nacl/x86_64/*.[cS])
else
NACLSRC += $(wildcard sdar/lib/nacl/generic/*.c)
endif
NACLOBJ = $(NACLSRC:sdar/%.c=obj/%.o)
NACLOBJ := $(NACLOBJ:sdar/%.S=obj/%.o)
V = @
SRC = $(wildcard sdar/*.c)
OBJ = $(SRC:sdar/%.c=obj/%.o)
SANFLAGS = -g -fsanitize=address,undefined
LDFLAGS += $(SANFLAGS)
CFLAGS += -fno-omit-frame-pointer -std=c11 -Wall -Wextra -pedantic
CFLAGS += -DMMH_KEYSZ=32 -DMMH_VALSZ=16 -DMMH_HDRSZ=8
LIBFLAGS = -O3 -Isdar $(BLAKE3FLAGS)
obj/$(BIN): $(OBJ) $(NACLOBJ) $(BLAKE3OBJ) $(SCRYPTOBJ) $(LZ4OBJ)
@test -z "$(V)" || echo "ld $@"
$(V)$(CC) $^ -o $@ $(LDFLAGS)
obj/%.o: sdar/%.c
@test -z "$(V)" || echo "cc $<"
$(V)$(CC) $(CFLAGS) \
$(if $(findstring sdar/lib,$<),$(LIBFLAGS),$(SANFLAGS)) \
-c $< -o $@
obj/%.o: sdar/%.S
@test -z "$(V)" || echo "as $<"
$(V)$(CC) $(CFLAGS) \
$(if $(findstring sdar/lib,$<),$(LIBFLAGS),$(SANFLAGS)) \
-c $< -o $@
obj/timestamp:
@mkdir -p obj
@mkdir -p obj/lib/blake3
@mkdir -p obj/lib/scrypt
@mkdir -p obj/lib/lz4
@mkdir -p obj/lib/nacl
@mkdir -p obj/lib/nacl/x86_64
@mkdir -p obj/lib/nacl/generic
@touch $@
$(OBJ) $(SCRYPTOBJ) $(LZ4OBJ) $(NACLOBJ) $(BLAKE3OBJ): obj/timestamp
$(OBJ): sdar/all.h sdar/mmh.h
$(OBJ) $(SCRYPTOBJ): sdar/lib/scrypt/scrypt.h
$(OBJ) $(LZ4OBJ): sdar/lib/lz4/lz4.h
$(OBJ) $(NACLOBJ): sdar/lib/nacl/nacl.h
$(OBJ) $(BLAKE3OBJ): sdar/lib/blake3/blake3.h
$(BLAKE3OBJ): sdar/lib/blake3/blake3_impl.h
clean:
rm -fr obj
install: obj/$(BIN)
cp obj/$(BIN) $(PREFIX)/bin
cd memex && go build \
-ldflags '-X main.SdarPath=$(PREFIX)/bin/$(BIN)' \
-o $(PREFIX)/bin/memex
.PHONY: clean install
|