-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathMakefile
More file actions
57 lines (42 loc) · 1.26 KB
/
Makefile
File metadata and controls
57 lines (42 loc) · 1.26 KB
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
PREFIX ?= /usr
MODE ?= release
CXX := g++
CXXFLAGS := -Wall -Wextra
COMPILE_SWITCHES := -DSYSTEM_INSTALL
BUILD_DIR := build
OBJECT_PATH := ${BUILD_DIR}/objects
BIN_PATH := ${BUILD_DIR}/bin
BINARY := cppneofetch
UTILS_DIR := Utils
INCLUDE_DIR := include
INCLUDE_FLAGS := -I${UTILS_DIR} -I${INCLUDE_DIR}
UTILS_HEADERS := $(wildcard ${UTILS_DIR}/*.hpp)
SRC_DIR := src
SOURCES := $(wildcard ${SRC_DIR}/*.cpp)
OBJECTS := $(patsubst ${SRC_DIR}/%.cpp,${OBJECT_PATH}/%.o,${SOURCES})
ifeq (${MODE}, debug)
CXXFLAGS += -g
else ifeq (${MODE}, release)
CXXFLAGS += -O2
endif
all: build
${OBJECT_PATH}:
mkdir -p $@
${BIN_PATH}:
mkdir -p $@
${OBJECT_PATH}/%.o: ${SRC_DIR}/%.cpp ${INCLUDE_DIR}/%.hpp ${UTILS_HEADERS} | ${OBJECT_PATH}
$(CXX) -c $< ${COMPILE_SWITCHES} ${INCLUDE_FLAGS} ${CXXFLAGS} -o $@
${OBJECT_PATH}/main.o: main.cpp ${UTILS_HEADERS} | ${OBJECT_PATH}
$(CXX) -c $< ${COMPILE_SWITCHES} ${INCLUDE_FLAGS} ${CXXFLAGS} -o $@
${BIN_PATH}/${BINARY}: ${OBJECTS} ${OBJECT_PATH}/main.o | ${BIN_PATH}
$(CXX) $^ ${COMPILE_SWITCHES} ${INCLUDE_FLAGS} ${CXXFLAGS} -o $@
install: build
@mkdir -p $(PREFIX)/bin
install ${BIN_PATH}/${BINARY} ${PREFIX}/bin/${BINARY}
build: ${BIN_PATH}/${BINARY}
@strip $<
run:
@./${BIN_PATH}/${BINARY}
.PHONY: clean
clean:
rm -rf ${BUILD_DIR}