blob: 08ca2b1fc8593f624240ecde98ca07e012832329 [file] [log] [blame]
Roman Stratiienkocef5c772021-12-22 16:22:24 +02001
2INCLUDE_DIRS := . ../libdrm/include/drm include ./.ci/android_headers ./tests/test_include
3SYSTEM_INCLUDE_DIRS := /usr/include/libdrm
4
5CLANG := clang++-12
6CLANG_TIDY := clang-tidy-12
7OUT_DIR := /tmp/drm_hwcomposer/build/
8SRC_DIR := .
9
10CXXFLAGS := -fPIC -Wall -Wextra -Werror -DPLATFORM_SDK_VERSION=31 -D__ANDROID_API__=31
11CXXFLAGS += -D_LIBCPP_ENABLE_THREAD_SAFETY_ANNOTATIONS
12CXXFLAGS += -fvisibility-inlines-hidden -std=gnu++17 -DHWC2_USE_CPP11 -DHWC2_INCLUDE_STRINGIFICATION -fno-rtti
13
14BUILD_FILES := \
15 backend/BackendClient.cpp \
16 backend/Backend.cpp \
17 backend/BackendManager.cpp \
18 backend/BackendRCarDu.cpp \
19 bufferinfo/BufferInfoGetter.cpp \
20 bufferinfo/legacy/BufferInfoImagination.cpp \
21 bufferinfo/legacy/BufferInfoLibdrm.cpp \
22 bufferinfo/legacy/BufferInfoMaliHisi.cpp \
23 bufferinfo/legacy/BufferInfoMaliMediatek.cpp \
24 bufferinfo/legacy/BufferInfoMaliMeson.cpp \
25 bufferinfo/legacy/BufferInfoMinigbm.cpp \
26 compositor/DrmDisplayComposition.cpp \
27 compositor/DrmDisplayCompositor.cpp \
28 compositor/Planner.cpp \
29 drm/DrmConnector.cpp \
30 drm/DrmCrtc.cpp \
31 drm/DrmDevice.cpp \
32 drm/DrmEncoder.cpp \
33 drm/DrmFbImporter.cpp \
34 drm/DrmMode.cpp \
35 drm/DrmPlane.cpp \
36 drm/DrmProperty.cpp \
37 DrmHwcTwo.cpp \
38 drm/ResourceManager.cpp \
39 drm/UEventListener.cpp \
40 drm/VSyncWorker.cpp \
41 tests/worker_test.cpp \
42 utils/autolock.cpp \
43 utils/Worker.cpp \
44
45#bufferinfo/BufferInfoMapperMetadata.cpp
46#utils/hwcutils.cpp
47
48TIDY_FILES_H := \
49 drm/DrmFbImporter.h \
50 drm/DrmUnique.h \
51 utils/UniqueFd.h \
52 utils/log.h \
53 utils/properties.h \
54
55TIDY_FILES_CPP := \
56
57TIDY_COARSE_CHECKS := * \
58 -hicpp-* -llvmlibc-* -fuchsia-* -altera-* \
59 -cppcoreguidelines-pro-bounds-array-to-pointer-decay \
60 -cppcoreguidelines-pro-bounds-constant-array-index \
61 -cppcoreguidelines-pro-bounds-pointer-arithmetic \
62 -cppcoreguidelines-pro-type-cstyle-cast \
63 -cppcoreguidelines-pro-type-union-access \
64 -cppcoreguidelines-pro-type-vararg \
65 -cppcoreguidelines-avoid-magic-numbers \
66 -cppcoreguidelines-macro-usage \
67 -cppcoreguidelines-avoid-c-arrays \
68 -google-readability-braces-around-statements \
69 -google-readability-casting \
70 -misc-non-private-member-variables-in-classes \
71 -modernize-avoid-c-arrays \
72 -modernize-use-trailing-return-type \
73 -readability-braces-around-statements \
74 -readability-convert-member-functions-to-static \
75 -readability-implicit-bool-conversion \
76 -readability-identifier-naming \
77 -readability-magic-numbers \
78 -readability-use-anyofallof \
79
80.PHONY: all build tidy tidy-fine clean
81
82all: build tidy tidy-fine
83
84clean:
85 rm -rf $(OUT_DIR)/
86
87_OBJ := $(BUILD_FILES:.cpp=.o)
88OBJ := $(patsubst %,$(OUT_DIR)/%,$(_OBJ))
89
90_TIDY_TS := $(BUILD_FILES:.cpp=.cpp.t_ts)
91TIDY_TS := $(patsubst %,$(OUT_DIR)/%,$(_TIDY_TS))
92
93_FINE_TIDY_TS := $(TIDY_FILES_CPP:.cpp=.cpp,ft_ts)
94_FINE_TIDY_TS += $(TIDY_FILES_H:.h=.h.ft_ts)
95FINE_TIDY_TS := $(patsubst %,$(OUT_DIR)/%,$(_FINE_TIDY_TS))
96
97DEPS := $(patsubst %.cpp,$(OUT_DIR)/%.d,$(BUILD_FILES))
98
99build: $(OBJ)
100
Roman Stratiienko35112732021-12-23 13:41:13 +0200101tidy: $(TIDY_TS) build
Roman Stratiienkocef5c772021-12-22 16:22:24 +0200102
Roman Stratiienko35112732021-12-23 13:41:13 +0200103tidy-fine: $(FINE_TIDY_TS) build
Roman Stratiienkocef5c772021-12-22 16:22:24 +0200104
105CXXARGS := $(foreach dir,$(INCLUDE_DIRS),-I$(SRC_DIR)/$(dir)) $(foreach dir,$(SYSTEM_INCLUDE_DIRS),-I$(dir)) $(CXXFLAGS)
106
107$(OUT_DIR)/%.o: $(SRC_DIR)/%.cpp
108 mkdir -p $(dir $@)
109 $(CLANG) $< $(CXXARGS) -c -o $@
110
111$(OUT_DIR)/%.d: $(SRC_DIR)/%.cpp
112 mkdir -p $(dir $@)
Roman Stratiienko35112732021-12-23 13:41:13 +0200113 $(CLANG) $(CXXARGS) $< -MM -MT $(OUT_DIR)/$(patsubst %.cpp,%.o,$<) -o $@
Roman Stratiienkocef5c772021-12-22 16:22:24 +0200114
115space := $(subst ,, )
116comma := ,
117
118# TIDY
119define exec-tidy
120 mkdir -p $(dir $@)
121 $(CLANG_TIDY) $< --checks="$(subst $(space),$(comma),$(strip $(TIDY_COARSE_CHECKS)))" -- -x c++ $(CXXARGS)
122 touch $@
123endef
124
Roman Stratiienko35112732021-12-23 13:41:13 +0200125$(OUT_DIR)/%.h.t_ts: $(SRC_DIR)/%.h
Roman Stratiienkocef5c772021-12-22 16:22:24 +0200126 $(exec-tidy)
127
Roman Stratiienko35112732021-12-23 13:41:13 +0200128$(OUT_DIR)/%.cpp.t_ts: $(SRC_DIR)/%.cpp $(OUT_DIR)/%.o
Roman Stratiienkocef5c772021-12-22 16:22:24 +0200129 $(exec-tidy)
130
131# TIDY-FINE
132define exec-tidy-fine
133 mkdir -p $(dir $@)
134 $(CLANG_TIDY) $< -- -x c++ $(CXXARGS)
135 touch $@
136endef
137
Roman Stratiienko35112732021-12-23 13:41:13 +0200138$(OUT_DIR)/%.cpp.ft_ts: $(SRC_DIR)/%.cpp $(OUT_DIR)/%.o
Roman Stratiienkocef5c772021-12-22 16:22:24 +0200139 $(exec-tidy-fine)
140
Roman Stratiienko35112732021-12-23 13:41:13 +0200141$(OUT_DIR)/%.h.ft_ts: $(SRC_DIR)/%.h
Roman Stratiienkocef5c772021-12-22 16:22:24 +0200142 $(exec-tidy-fine)
143
144ifneq ($(MAKECMDGOALS), clean)
145-include $(DEPS)
146endif