This repository has been archived by the owner on Feb 24, 2024. It is now read-only.
-
Notifications
You must be signed in to change notification settings - Fork 0
/
Makefile
70 lines (48 loc) · 1.73 KB
/
Makefile
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
OUTDIR ?= ./build
CC ?= clang
CXX ?= clang++
CFLAGS ?= -g -Wall -Wextra -Werror
CXXFLAGS ?= -std=c++17
BUILD ?= debug
ifeq ($(BUILD),release)
CFLAGS := $(CFLAGS) -O3
else
CFLAGS := $(CFLAGS) -fsanitize=undefined
endif
ifeq ($(shell uname),Darwin)
SHARED_LIB_EXT := dylib
SHARED_LIB_FLAGS := -dynamiclib
else
SHARED_LIB_EXT := so
SHARED_LIB_FLAGS := -shared
endif
.PHONY: all dirs bitmatch bitmatch_cpp bitdump clean
all: dirs bitdump bitmatch
dirs:
mkdir -pv $(OUTDIR)/target
clean:
rm -rv $(OUTDIR)
bitdump: src/bitdump_cli.c src/bitmatch.c
@$(CC) $(CFLAGS) -I./include -o $(OUTDIR)/target/$@ $^
bitmatch: bitmatch_cli.o libbitmatch.a
@$(CC) $(CFLAGS) -L$(OUTDIR) -o $(OUTDIR)/target/$@ $(OUTDIR)/$< -lbitmatch
bitmatch_cli.o: src/bitmatch_cli.c
@$(CC) $(CFLAGS) -I./include -c -o $(OUTDIR)/$@ $^
libbitmatch.a: bitmatch.o
@ar -rcs $(OUTDIR)/$@ $(OUTDIR)/$^
bitmatch.o: src/bitmatch.c
@$(CC) $(CFLAGS) -I./include -c -o $(OUTDIR)/$@ $^
bitmatch_cpp: bitmatch_cpp_cli.o libbitmatch_cpp.a
@$(CXX) $(CXXFLAGS) $(CFLAGS) -L$(OUTDIR) -o $(OUTDIR)/target/$@ $(OUTDIR)/$< -lbitmatch_cpp
bitmatch_cpp_cli.o: src/bitmatch_cli.cpp
@$(CXX) $(CXXFLAGS) $(CFLAGS) -I./include -c -o $(OUTDIR)/$@ $^
libbitmatch_cpp.a: bitmatch_cpp.o bitmatch.o
@ar -rcs $(OUTDIR)/$@ $(addprefix $(OUTDIR)/,$^)
bitmatch_cpp.o: src/bitmatch.cpp
@$(CXX) $(CXXFLAGS) $(CFLAGS) -I./include -c -o $(OUTDIR)/$@ $^
bitmatch_dyn: libbitmatch.$(SHARED_LIB_EXT)
@$(CC) $(CFLAGS) -L$(OUTDIR) -o $(OUTDIR)/target/$@ -fPIC -I./include src/bitmatch_cli.c -lbitmatch
libbitmatch.$(SHARED_LIB_EXT): shared_bitmatch.o
@$(CC) $(CFLAGS) -o $(OUTDIR)/$@ $(SHARED_LIB_FLAGS) -fPIC $(OUTDIR)/$^
shared_bitmatch.o: src/bitmatch.c
@$(CC) $(CFLAGS) -I./include -c -o $(OUTDIR)/$@ -fPIC $^