-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathmakefile
More file actions
95 lines (78 loc) · 3.71 KB
/
makefile
File metadata and controls
95 lines (78 loc) · 3.71 KB
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
# *************************************************************************************************
# Directory search
# *************************************************************************************************
VPATH = cvector example
# *************************************************************************************************
# Variables
# *************************************************************************************************
CC = gcc
CFLAGS = -Wunreachable-code -pedantic -Wextra -Wall -std=c11
INCLUDES = -I"../cvector/"
OBJS = obj/example/test_static.o \
obj/cvector/svector.o \
obj/cvector/nvector.o
OBJS_DEBUG = obj/example/test_static_debug.o \
obj/cvector/svector_debug.o \
obj/cvector/nvector_debug.o
BINARY_RELEASE = bin/test_static
BINARY_DEBUG = bin/test_static_debug
# *************************************************************************************************
# Setup clean for either Windows or Linux
# *************************************************************************************************
ifeq ($(OS),Windows_NT)
RM = del /Q
OBJ_FILES = $(subst /,\,$(OBJS))
OBJ_FILES_DEBUG = $(subst /,\,$(OBJS_DEBUG))
BIN_RELEASE = $(subst /,\,$(addsuffix .exe,$(BINARY_RELEASE)))
BIN_DEBUG = $(subst /,\,$(addsuffix .exe,$(BINARY_DEBUG)))
else
RM = -rm
OBJ_FILES = $(OBJS)
OBJ_FILES_DEBUG = $(OBJS_DEBUG)
BIN_RELEASE = $(BINARY_RELEASE)
BIN_DEBUG = $(BINARY_DEBUG)
endif
# ifeq ($(OS),Windows_NT)
# RM = del /Q
# fix_path = $(subst /,\,$1)
# BIN_RELEASE = $(addsuffix .exe,$(BINARY_RELEASE))
# BIN_DEBUG = $(addsuffix .exe,$(BINARY_DEBUG))
# else
# RM = -rm
# fix_path = $1
# endif
# *************************************************************************************************
# Targets
# *************************************************************************************************
.PHONY: clean
.DEFAULT_GOAL := test_static
# *************************************************************************************************
# Release build
# *************************************************************************************************
test_static: test_static.o svector.o nvector.o
$(CC) -o $(BINARY_RELEASE) $(OBJS) -s
test_static.o: test_static.c svector.h nvector.h
$(CC) $(CFLAGS) -O2 $(INCLUDES) -c example/test_static.c -o obj/example/test_static.o
svector.o: svector.c svector.h
$(CC) $(CFLAGS) -O2 $(INCLUDES) -c cvector/svector.c -o obj/cvector/svector.o
nvector.o: nvector.c nvector.h
$(CC) $(CFLAGS) -O2 $(INCLUDES) -c cvector/nvector.c -o obj/cvector/nvector.o
# *************************************************************************************************
# Debug build
# *************************************************************************************************
debug: test_static_debug.o svector_debug.o nvector_debug.o
$(CC) -o $(BINARY_DEBUG) $(OBJS_DEBUG)
test_static_debug.o: test_static.c svector.h nvector.h
$(CC) $(CFLAGS) -g $(INCLUDES) -c example/test_static.c -o obj/example/test_static_debug.o
svector_debug.o: svector.c svector.h
$(CC) $(CFLAGS) -g $(INCLUDES) -c cvector/svector.c -o obj/cvector/svector_debug.o
nvector_debug.o: nvector.c nvector.h
$(CC) $(CFLAGS) -g $(INCLUDES) -c cvector/nvector.c -o obj/cvector/nvector_debug.o
# *************************************************************************************************
# Cleanup
# *************************************************************************************************
clean:
$(RM) $(BIN_RELEASE) $(BIN_DEBUG) $(OBJ_FILES) $(OBJ_FILES_DEBUG)
# clean:
# $(RM) $(call fix_path,$(BIN_RELEASE)) $(call fix_path,$(BIN_DEBUG)) \
# $(call fix_path,$(OBJ_FILES)) $(call fix_path,$(OBJ_FILES_DEBUG))