summaryrefslogtreecommitdiff
path: root/makefile
blob: de3575eecf6c67d1e90615bae5751ba2d30baff0 (plain)
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
SRCDIR 		:= src/
OBJDIR 		:= obj/
BINDIR 		:= bin/

PROGRAM 	:= practice
EXE 			:= $(BINDIR)$(PROGRAM)

C_FILES 	:= $(wildcard *.c) $(wildcard */*.c)
OBJS 			:= $(patsubst src/%.c, obj/%.o, $(C_FILES))
CC 				:= gcc
CFLAGS 		:= -Wall -pedantic
LDFLAGS 	:= 

all: init $(EXE)

$(EXE): .depend $(OBJS)
	$(CC) $(CFLAGS) $(OBJS) $(LDFLAGS) -o $(EXE)

depend: .depend

.depend: cmd = gcc -MM -MF depend $(var); cat depend >> .depend;
.depend:
	@echo "Generating dependencies..."
	@$(foreach var, $(C_FILES), $(cmd))
	@rm -f depend

-include .depend

$(OBJDIR)%.o: $(SRCDIR)%.c
	$(CC) $(CFLAGS) -c $< -o $@

$(SRCDIR)/%: %.c
	$(CC) $(CFLAGS) -o $@ $<

clean:
	@echo 'cleaning...'
	@rm -fr *.o *.out .depend $(BINDIR) $(OBJDIR)

init: clean
	@echo 'initializing...'
	@mkdir bin obj

run: all
	$(EXE)

.PHONY: clean init depend

list:
	@echo $(C_FILES)