-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathMakefile
More file actions
52 lines (46 loc) · 1.56 KB
/
Copy pathMakefile
File metadata and controls
52 lines (46 loc) · 1.56 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
BINARY = db
SRC = $(wildcard src/*.c)
OBJ = $(patsubst src/%.c, obj/%.o, $(SRC))
PREFIX = $(shell if [ "$$(uname)" = "Linux" ]; then echo /usr/local/bin; \
elif [ "$$(uname)" = "Darwin" ]; then echo /usr/local/bin; \
elif [ "$$(uname)" = "FreeBSD" ]; then echo /usr/local/bin; \
else echo ~/.local/bin; fi)
INSTALL_DIR = $(PREFIX)
INSTALL = cp
run: clean build
./$(BINARY) -f ./employees.db -n
./$(BINARY) -f ./employees.db -a "Ahmed S,123 Zayo,40"
./$(BINARY) -f ./employees.db -a "Karim R,42 CASA,88"
./$(BINARY) -f ./employees.db -l
build: $(BINARY)
clean:
rm -f obj/*.o
rm -f bin/*
rm -f *.db
install:
@if [ ! -d "$(INSTALL_DIR)" ]; then \
echo "Installation directory $(INSTALL_DIR) does not exist."; \
read -p "Would you like to create it? (y/n): " answer; \
if [ "$$answer" = "y" ]; then \
echo "Creating directory $(INSTALL_DIR)..."; \
sudo mkdir -p $(INSTALL_DIR); \
echo "Setting permissions for $(INSTALL_DIR)..."; \
sudo chown $$USER:$(shell id -g -n $$USER) $(INSTALL_DIR); \
else \
echo "Aborting installation."; \
exit 1; \
fi; \
fi; \
echo "The installation directory is $(INSTALL_DIR)."; \
read -p "Would you like to install $(BINARY) to this directory? (y/n): " answer; \
if [ "$$answer" = "y" ]; then \
sudo $(INSTALL) $(BINARY) $(INSTALL_DIR); \
echo "Installation complete!"; \
else \
echo "Aborting installation."; \
exit 1; \
fi
$(BINARY): $(OBJ)
gcc -o $@ $?
obj/%.o: src/%.c
gcc -c $< -o $@ -Iinclude