-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathMakefile.common
57 lines (43 loc) · 1.08 KB
/
Makefile.common
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
# c90-compiler/Makefile.common
ifndef TOP_DIR
$(error TOP_DIR must be defined)
endif
ifndef SRC_DIR
SRC_DIR := $(TOP_DIR)/src
endif
.SUFFIXES: .out .o .c .cc .cpp .d
C_SRCS := $(wildcard *.c)
CC_SRCS := $(wildcard *.cc)
CXX_SRCS := $(wildcard *.cpp)
C_OBJS := $(C_SRCS:.c=.o)
CC_OBJS := $(CC_SRCS:.cc=.o)
CXX_OBJS := $(CXX_SRCS:.cpp=.o)
OBJS := $(C_OBJS) $(CC_OBJS) $(CXX_OBJS)
DEPENDS = $(OBJS:.o=.d)
CLEAN_OBJS :=
DISTCLEAN_TARGETS :=
CC ?= gcc
CXX ?= g++
COMMON_FLAGS := -Wall -Wextra -O2 -DDEBUG
DEPEND_FLAGS := -MMD -MP
C90_RESTRICT_FLAGS := -ansi -pedantic -Wno-long-long
CXX11_FLAGS := -std=c++11
INCLUDE := -I$(SRC_DIR)
CFLAGS ?= $(COMMON_FLAGS) $(C90_RESTRICT_FLAGS)
CXXFLAGS ?= $(COMMON_FLAGS) $(CXX11_FLAGS)
CFLAGS += $(DEPEND_FLAGS) $(INCLUDE)
CXXFLAGS += $(DEPEND_FLAGS) $(INCLUDE)
RM := rm -f
AR := ar rcs
%.o: %.c
$(CC) $(CFLAGS) -c $< -o $@
%.o: %.cc
$(CXX) $(CXXFLAGS) -c $< -o $@
%.o: %.cpp
$(CXX) $(CXXFLAGS) -c $< -o $@
-include $(DEPENDS)
clean:
$(RM) $(OBJS) $(DEPENDS) $(CLEAN_OBJS)
distclean: clean
$(RM) $(TARGET) $(DISTCLEAN_TARGETS)
.PHONY: clean distclean