-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathMakefile
More file actions
50 lines (38 loc) · 1.08 KB
/
Makefile
File metadata and controls
50 lines (38 loc) · 1.08 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
CC := gcc
override CFLAGS += -g -Wall -Wshadow -Wcast-align -Wpointer-arith \
-Wwrite-strings -Wundef -Wredundant-decls -Wextra -Wno-sign-compare \
-Wformat-security -Wno-pointer-sign -Werror-implicit-function-declaration \
-Wno-unused-parameter
ifeq ($(D),1)
override CFLAGS += -DDEBUG_ON
endif
OBJDIR = obj/
PREFIX ?= /usr/local/bin
TARGET = shell
SRC = $(wildcard *.c)
HDR = $(wildcard *.h)
OBJ = $(SRC:%.c=$(OBJDIR)%.o)
ifneq ($(DESTDIR),)
INSTALLDIR = $(subst //,/,$(DESTDIR)/$(PREFIX))
else
INSTALLDIR = $(PREFIX)
endif
.PHONY: clean install all new
%::
@echo $(MAKE)" default, no rule, exiting..."
all : $(TARGET)
install : all
@mv shell $(INSTALLDIR)
@echo installed in $(INSTALLDIR)
# $(OBJDIR)%.o : %.c %.h
$(OBJDIR)%.o : %.c $(HDR)
@[[ -d $(OBJDIR) ]] || mkdir $(OBJDIR)
$(CC) $(CFLAGS) -c $< -o $@
$(TARGET) : $(OBJ)
$(CC) $(CFLAGS) $^ -o $@
new : clean all
@echo "Done"
clean :
@echo -n "Removing [" && ls $(OBJDIR) | xargs echo -n && echo " $(TARGET)]"
@read -p "Really ? " inp; \
[[ $$inp = "y" ]] && rm $(OBJDIR)* $(TARGET) || echo "Exiting..."