-
Notifications
You must be signed in to change notification settings - Fork 0
/
makefile
148 lines (103 loc) · 4.27 KB
/
makefile
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
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
################################################################################
# Path
################################################################################
SOURCES_PATH := ../src
INCLUDES_PATH := ../include
################################################################################
# Toolchain
################################################################################
TOOLCHAIN_PATH := C:/MinGWToolchain/sjlj/mingw64/bin
CC := @$(TOOLCHAIN_PATH)/gcc
LL := @$(TOOLCHAIN_PATH)/g++
################################################################################
# Command(s)
################################################################################
RM := @rm -rf
################################################################################
# Artefacts
################################################################################
BUILD_ARTIFACT_NAME := sym2srec
BUILD_ARTIFACT_EXTENSION := exe
BUILD_ARTIFACT_PREFIX :=
BUILD_ARTIFACT := $(BUILD_ARTIFACT_PREFIX)$(BUILD_ARTIFACT_NAME)$(if $(BUILD_ARTIFACT_EXTENSION),.$(BUILD_ARTIFACT_EXTENSION),)
################################################################################
# Compiler/Linker Options
################################################################################
# Optimization Options
OPTIMIZATION_OPTIONS := -O0
# Options to Request or Suppress Warnings
WARN_OPTIONS := -pedantic -Wall -Wextra -Wconversion -Wcast-align -Wcast-qual -Wdisabled-optimization -Wlogical-op \
-Wmissing-declarations -Wmissing-include-dirs -Wredundant-decls -Wshadow -Wsign-conversion -Wswitch-default -Wundef \
-Wwrite-strings -Wfloat-equal
# Linking Options
LD_OPTIONS := -m32 -s
#h flags
H_FLAGS = "-IC:$(INCLUDES_PATH)"
#C flags
C_FLAGS := $(OPTIMIZATION_OPTIONS) $(WARN_OPTIONS) -fmessage-length=0 -m32
#Linker flags
LD_FLAGS := $(LD_OPTIONS) -o "$(BUILD_ARTIFACT)"
################################################################################
# List
################################################################################
INCLUDE_LIST := $(wildcard $(INCLUDES_PATH)/*.h)
OBJECT_LIST := sym2srec_hash.o sym2srec_main.o sym2srec_srecord.o sym2srec_utils.o
################################################################################
# Clean Target
################################################################################
clean:
# O files
ifneq ($(strip $(wildcard *.o)),)
$(RM) $(OBJECT_LIST)
endif
# Exe files
ifneq ($(strip $(wildcard *.exe)),)
$(RM) $(BUILD_ARTIFACT)
endif
# Text files
ifneq ($(strip $(wildcard *.txt)),)
$(RM) ln.txt
endif
################################################################################
# Init Target
################################################################################
init:
# Create empty file (echo. not working)
@echo. > ln.txt
################################################################################
# Finit Target
################################################################################
finit:
# Clean Working Directory (keep object files)
$(RM) ln.txt
################################################################################
# Linker Target
################################################################################
$(BUILD_ARTIFACT) : $(OBJECT_LIST)
# Link file
@echo Building target: $@
@echo Invoking: MinGW-64 Linker
@echo $(LD_FLAGS) $(OBJECT_LIST)
$(LL) $(LD_FLAGS) $(OBJECT_LIST)
@echo Finished building target: $(BUILD_ARTIFACT)
@cat ln.txt
################################################################################
# C Source Target
################################################################################
%.o: $(SOURCES_PATH)/%.c $(INCLUDE_LIST)
@echo $(INCLUDE_LIST)
@echo Building file: $<
@echo Invoking: MinGW-64 C Compiler
@echo $(C_FLAGS) $(H_FLAGS)
$(CC) $(C_FLAGS) $(H_FLAGS) -o $@ -c $<
@echo Finished building: $<
@cat ln.txt
################################################################################
# All Target
################################################################################
all: init $(BUILD_ARTIFACT) finit
################################################################################
# Others
################################################################################
.PHONY: all clean init finit
.NOTPARALLEL: all