summaryrefslogtreecommitdiff
path: root/makefile
blob: ea514c2a0ad1e4a0c22389f593229ac965cbaaa8 (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
BCRYPT_VERSION=2.3-1

BCRYPT_DIR=libbcrypt

BCRYPT_SRC_DIR=$(BCRYPT_DIR)/lua-bcrypt-$(BCRYPT_VERSION)/src
BCRYPT_OBJ_DIR=$(BCRYPT_DIR)/obj
BCRYPT_LIB_DIR=$(BCRYPT_DIR)/lib

BCRYPT_ARCHIVE=$(BCRYPT_DIR)/lua-bcrypt.tar.gz

BCRYPT_SOURCES= \
	$(BCRYPT_SRC_DIR)/bcrypt.c \
	$(BCRYPT_SRC_DIR)/blowfish.c \
	$(BCRYPT_SRC_DIR)/ggentropy.c \
	$(BCRYPT_SRC_DIR)/safebfuns.c

BCRYPT_OBJS=$(BCRYPT_SOURCES:$(BCRYPT_SRC_DIR)/%.c=$(BCRYPT_OBJ_DIR)/%.o)

BCRYPT_LIB=$(BCRYPT_LIB_DIR)/libbcrypt.a

BCRYPT_UNPACKED=$(BCRYPT_DIR)/.unpacked

CFLAGS=-Wall -Werror -pedantic -Wno-pointer-sign -std=c11 -O2 -I$(BCRYPT_SRC_DIR)

all: bin/bcrypt-test

# === App ===

bin/bcrypt-test: obj/bcrypt-test.o $(BCRYPT_LIB) | bin
	cc -o $@ obj/bcrypt-test.o $(BCRYPT_LIB)

obj/%.o: src/%.c $(BCRYPT_UNPACKED) | obj
	cc $(CFLAGS) -c $< -o $@

obj bin:
	mkdir -p $@

# === libbcrypt ===

$(BCRYPT_ARCHIVE): | $(BCRYPT_DIR)
	curl -f -L -o $@ https://github.com/mikejsavage/lua-bcrypt/archive/refs/tags/v$(BCRYPT_VERSION).tar.gz

$(BCRYPT_UNPACKED): $(BCRYPT_ARCHIVE)
	tar -xzf $< -C $(BCRYPT_DIR)
	touch $@

download: $(BCRYPT_UNPACKED)

# The extracted sources are generated as a side effect of unpacking.
$(BCRYPT_SOURCES): $(BCRYPT_UNPACKED)

$(BCRYPT_OBJ_DIR)/%.o: $(BCRYPT_SRC_DIR)/%.c | $(BCRYPT_OBJ_DIR)
	cc $(CFLAGS) -c $< -o $@

$(BCRYPT_LIB): $(BCRYPT_OBJS) | $(BCRYPT_LIB_DIR)
	ar -crs $@ $^

$(BCRYPT_DIR) $(BCRYPT_LIB_DIR) $(BCRYPT_OBJ_DIR):
	mkdir -p $@

# === clean ===

.PHONY: clean
clean:
	rm -rf bin obj $(BCRYPT_DIR)