-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathMakefile
More file actions
109 lines (86 loc) · 2.82 KB
/
Copy pathMakefile
File metadata and controls
109 lines (86 loc) · 2.82 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
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
ROOT_DIR := $(CURDIR)
BUILD_DIR := $(ROOT_DIR)/build
SRC_DIR := $(ROOT_DIR)/src
INCLUDE_DIR := $(ROOT_DIR)/include
THIRD_PARTY_DIR := $(ROOT_DIR)/third_party
OS_NAME ?= $(shell uname -s 2>/dev/null || echo Windows)
BUILD_TYPE ?= release
CXX ?= c++
CC ?= cc
AR ?= ar
RM ?= rm -rf
MKDIR_P ?= mkdir -p
HOST_SRC := $(SRC_DIR)/host/main.cpp $(SRC_DIR)/host/plugin_loader.cpp $(SRC_DIR)/host/crypto_utils.cpp $(SRC_DIR)/host/integrity_checker.cpp $(SRC_DIR)/host/anti_debug.cpp $(SRC_DIR)/host/http_client.cpp $(SRC_DIR)/host/memory_protection.cpp
PLUGIN_SRC := $(SRC_DIR)/plugin/plugin.cpp
PACKER_SRC := $(SRC_DIR)/tools/packer.cpp $(SRC_DIR)/host/crypto_utils.cpp
HOST_BIN := $(BUILD_DIR)/hostapp
PLUGIN_BIN := $(BUILD_DIR)/plugin
PACKER_BIN := $(BUILD_DIR)/packer
CXXFLAGS_COMMON := -std=c++17 -Wall -Wextra -Wpedantic -I$(INCLUDE_DIR)
LDFLAGS_COMMON :=
HOST_LIBS :=
PLUGIN_LIBS :=
PACKER_LIBS :=
PLUGIN_SHARED_FLAGS := -shared
STRIP_SYMBOLS ?= 0
ifeq ($(BUILD_TYPE),debug)
CXXFLAGS_COMMON += -O0 -g
else
CXXFLAGS_COMMON += -O2 -DNDEBUG
endif
ifeq ($(STRIP_SYMBOLS),1)
LDFLAGS_COMMON += -s
endif
ifeq ($(findstring MINGW,$(OS_NAME)),MINGW)
TARGET_OS := windows
HOST_BIN := $(BUILD_DIR)/hostapp.exe
PLUGIN_BIN := $(BUILD_DIR)/plugin.dll
PACKER_BIN := $(BUILD_DIR)/packer.exe
HOST_LIBS += -lws2_32 -lbcrypt -lcrypt32 -lcurl -lssl -lcrypto
PACKER_LIBS += -lssl -lcrypto
else ifeq ($(OS_NAME),Darwin)
TARGET_OS := macos
HOST_BIN := $(BUILD_DIR)/hostapp
PLUGIN_BIN := $(BUILD_DIR)/plugin.dylib
PACKER_BIN := $(BUILD_DIR)/packer
CXXFLAGS_COMMON += -D_DARWIN_C_SOURCE -fPIC
PLUGIN_SHARED_FLAGS := -dynamiclib
HOST_LIBS += -lcurl -lssl -lcrypto
PACKER_LIBS += -lssl -lcrypto
else
TARGET_OS := linux
HOST_BIN := $(BUILD_DIR)/hostapp
PLUGIN_BIN := $(BUILD_DIR)/plugin.so
PACKER_BIN := $(BUILD_DIR)/packer
CXXFLAGS_COMMON += -fPIC
HOST_LIBS += -ldl -lpthread -lcurl -lssl -lcrypto
PACKER_LIBS += -lssl -lcrypto
endif
ifeq ($(BUILD_TYPE),release)
ifneq ($(TARGET_OS),windows)
CXXFLAGS_COMMON += -flto
LDFLAGS_COMMON += -flto
endif
endif
.PHONY: all debug release clean pack test dirs backend
all: release
debug:
$(MAKE) BUILD_TYPE=debug build
release:
$(MAKE) BUILD_TYPE=release build
build: dirs $(HOST_BIN) $(PLUGIN_BIN) $(PACKER_BIN)
pack: $(PACKER_BIN)
backend:
python3 $(ROOT_DIR)/tools/mock_backend.py 18081
test: build
@echo "No automated tests defined yet."
clean:
$(RM) -r $(BUILD_DIR)
dirs:
$(MKDIR_P) $(BUILD_DIR)
$(HOST_BIN): $(HOST_SRC)
$(CXX) $(CXXFLAGS_COMMON) $(HOST_SRC) -o $@ $(LDFLAGS_COMMON) $(HOST_LIBS)
$(PLUGIN_BIN): $(PLUGIN_SRC)
$(CXX) $(CXXFLAGS_COMMON) $(PLUGIN_SHARED_FLAGS) $(PLUGIN_SRC) -o $@ $(LDFLAGS_COMMON) $(PLUGIN_LIBS)
$(PACKER_BIN): $(PACKER_SRC)
$(CXX) $(CXXFLAGS_COMMON) $(SRC_DIR)/tools/packer.cpp $(SRC_DIR)/host/crypto_utils.cpp -o $@ $(LDFLAGS_COMMON) $(PACKER_LIBS)