-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathMakefile.in
47 lines (39 loc) · 1017 Bytes
/
Makefile.in
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
# Set variables
EXE=cookie
INC_DIR=inc
SRC_DIR=src
OBJ_DIR=obj
BIN_DIR=bin
USR_DIR=/usr/local/bin/
CC=@CC@
CFLAGS = -O3 -Wall -g -std=c99 -pedantic -Iinc
# List source files
SRC=$(wildcard $(SRC_DIR)/*.c) $(wildcard $(SRC_DIR)/*/*.c)
OBJ=$(SRC:$(SRC_DIR)/%.c=$(OBJ_DIR)/%.o)
OUT=$(wildcard $(BIN_DIR)/*)
#Target - Actual Program
all: $(EXE)
@mv $(EXE) $(BIN_DIR)/
@echo [CC] Executable compiled
@echo
$(EXE): $(OBJ)
@$(CC) $^ -o $@
@echo [CC] Compiled all objects
@echo [CC] Linking object files
$(OBJ_DIR)/%.o: $(SRC_DIR)/%.c prep
@mkdir -p $(@D)
@$(CC) -I$(INC_DIR) $(CFLAGS) -c $< -o $@
@echo [CC] Compiling $@
prep:
@if [ -d $(OBJ_DIR) ]; then continue; else mkdir $(OBJ_DIR); fi
@if [ -d $(BIN_DIR) ]; then continue; else mkdir $(BIN_DIR); fi
install:
@echo [Cookie] Installing Program into /usr/bin/local
@sudo mv $(BIN_DIR)/$(EXE) $(USR_DIR)
@echo [Cookie] Installation Completed
# Clean Action
clean:
@rm -r $(OBJ_DIR)
@rm -r $(BIN_DIR)
@echo [CC] Cleaned previous compilation
@echo