1 | ###########################################################################
|
2 | # Executables
|
3 | ###########################################################################
|
4 | RM = del
|
5 |
|
6 | ###########################################################################
|
7 | # Configuration
|
8 | ###########################################################################
|
9 |
|
10 | # path to the project (can be relative or absolute)
|
11 | PROJECT_DIR = H:/Projects/C/calculator
|
12 | WORK_DIR = $(PROJECT_DIR)/work
|
13 |
|
14 | # project name
|
15 | PROJECT_NAME = CALCULATOR
|
16 |
|
17 | # output path for compiler and linker (e.g. objects)
|
18 | BUILD_DIR = $(PROJECT_DIR)/build
|
19 | OBJ_DIR = $(BUILD_DIR)/obj
|
20 | OUT_DIR = $(BUILD_DIR)/out
|
21 |
|
22 | # create folders
|
23 | $(BUILD_DIR): ; @mkdir -p $@
|
24 | $(OBJ_DIR): ; @mkdir -p $@
|
25 | $(OUT_DIR): ; @mkdir -p $@
|
26 |
|
27 | ###########################################################################
|
28 | # compiler basic settings
|
29 | ###########################################################################
|
30 | include compiler_settings.mak
|
31 |
|
32 | ###########################################################################
|
33 | # Include paths to header files
|
34 | ###########################################################################
|
35 |
|
36 | # c compiler include directories
|
37 | CC_INCLUDES = -I$(WORK_DIR)/src
|
38 |
|
39 | SRC_DIR = $(WORK_DIR)/src
|
40 | SRCFILES := $(wildcard *.c)
|
41 |
|
42 | ###########################################################################
|
43 | # List of object files to create
|
44 | ###########################################################################
|
45 |
|
46 | OBJFILES := $(patsubst %.c,%.o,$(SRCFILES))
|
47 | DEPFILES := $(patsubst %.c,%.d,$(SRCFILES))
|
48 |
|
49 | ###########################################################################
|
50 | # Path to libraries which should be included
|
51 | ###########################################################################
|
52 |
|
53 | ###########################################################################
|
54 | # Compiler, assembler and linker options
|
55 | ###########################################################################
|
56 |
|
57 | # additional compiler flags (see compiler_settings.mak)
|
58 | CC_FLAGS += -std=c99
|
59 | # additional assembler flags (see compiler_settings.mak)
|
60 | AS_FLAGS +=
|
61 | # additional linker flags (see compiler_settings.mak)
|
62 | LINKER_FLAGS +=
|
63 |
|
64 | ###########################################################################
|
65 | # remove/clean all build products
|
66 | ###########################################################################
|
67 |
|
68 | .PHONY: all install clean info check
|
69 |
|
70 | all1: $(PROJECT_NAME).exe end
|
71 | all2: clean end
|
72 |
|
73 | clean:
|
74 | @$(RM) *.o
|
75 | @$(RM) $(PROJECT_NAME).exe
|
76 |
|
77 | $(PROJECT_NAME).exe: $(OBJFILES)
|
78 | $(LD) $^ -o $@
|
79 |
|
80 | %.o: %.c
|
81 | $(CC) $(CC_FLAGS) $(CC_INCLUDES) -c $< -o $@
|
82 |
|
83 | end:
|
84 | @echo .
|
85 | @echo # finish $(shell time /t)
|