-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathmakefile
More file actions
45 lines (30 loc) · 914 Bytes
/
Copy pathmakefile
File metadata and controls
45 lines (30 loc) · 914 Bytes
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
CC = gcc
CFLAGS = -Wall -Wextra -std=c11 -Iinclude -Iinclude/drivers -Iinclude/network -Iinclude/sensors
LDFLAGS = -lpthread
SRC_DIR = src
BUILD_DIR = build
BIN_DIR = bin
rwildcard=$(foreach d,$(wildcard $1*),$(call rwildcard,$d/,$2) $(filter $(subst *,%,$2),$d))
SOURCES = $(call rwildcard, $(SRC_DIR), *.c)
OBJECTS = $(patsubst $(SRC_DIR)/%.c,$(BUILD_DIR)/%.o,$(SOURCES))
BUILD_DIRS = $(sort $(dir $(OBJECTS)))
TARGET = $(BIN_DIR)/lab2
all: $(TARGET)
$(TARGET): $(OBJECTS) | $(BIN_DIR)
$(CC) $(OBJECTS) -o $@ $(LDFLAGS)
@echo "Build complete: $@"
$(BUILD_DIR)/%.o: $(SRC_DIR)/%.c
@mkdir -p $(dir $@)
$(CC) $(CFLAGS) -c $< -o $@
$(BIN_DIR):
@mkdir -p $@
clean:
rm -rf $(BUILD_DIR) $(BIN_DIR)
@echo "Clean complete"
rebuild: clean all
IP ?= 127.0.0.1
PORT_RECEIVER ?= 1231
PORT_SENDER ?= 1232
run: $(TARGET)
sudo $(TARGET) $(IP) $(PORT_RECEIVER) $(PORT_SENDER)
.PHONY: all clean rebuild run