-
Notifications
You must be signed in to change notification settings - Fork 0
/
Makefile
52 lines (36 loc) · 1.24 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
NAME_STATIC= build/static/libmem.a
NAME_SHARED= build/shared/libmem.so
SRC= lib_mem.c
OBJ= $(SRC:.c=.o)
CC= gcc
CFLAGS+= -W -Wall -Werror -O2 -fno-optimize-sibling-calls -fno-omit-frame-pointer -I.
TESTING_SRC= testing/testing.c
TESTING_OBJ= $(TESTING_SRC:.c=.o)
TESTING_NAME_SHARED= shared_test
TESTING_NAME_STATIC= static_test
TESTING_LIB= mem
$(NAME_STATIC): $(OBJ)
mkdir -p build/static
ar rc $(NAME_STATIC) $(OBJ)
ranlib $(NAME_STATIC)
$(NAME_SHARED): LDFLAGS+= -shared
$(NAME_SHARED): $(OBJ)
mkdir -p build/shared
$(CC) $(LDFLAGS) -o $(NAME_SHARED) $(OBJ)
all: $(NAME_STATIC) $(NAME_SHARED)
static: $(NAME_STATIC)
shared: $(NAME_SHARED)
testing: CFLAGS += -ggdb
testing: $(NAME_SHARED) $(NAME_STATIC) $(TESTING_OBJ)
$(CC) $(TESTING_OBJ) -o $(TESTING_NAME_STATIC) -Lbuild/static -l$(TESTING_LIB)
@echo "====== STATIC TESTS ======"
./$(TESTING_NAME_STATIC)
$(CC) $(TESTING_OBJ) -o $(TESTING_NAME_SHARED) -Lbuild/shared -l$(TESTING_LIB)
@echo "====== SHARED TESTS ======"
env LD_LIBRARY_PATH=build/shared ./$(TESTING_NAME_SHARED)
clean:
rm -rf $(OBJ) $(TESTING_OBJ)
fclean: clean
rm -rf $(NAME_STATIC) $(NAME_SHARED) $(TESTING_NAME_STATIC) $(TESTING_NAME_SHARED) build
re: fclean all
.PHONY: all install clean fclean re static shared testing