2 INCLUDE_DIRS := . ../libdrm/include/drm include ./.ci/android_headers ./tests/test_include
3 SYSTEM_INCLUDE_DIRS := /usr/include/libdrm
6 CLANG_TIDY := clang-tidy-12
7 OUT_DIR := /tmp/drm_hwcomposer/build/
10 CXXFLAGS := -fPIC -Wall -Wextra -Werror -DPLATFORM_SDK_VERSION=31 -D__ANDROID_API__=31
11 CXXFLAGS += -D_LIBCPP_ENABLE_THREAD_SAFETY_ANNOTATIONS
12 CXXFLAGS += -fvisibility-inlines-hidden -std=gnu++17 -DHWC2_USE_CPP11 -DHWC2_INCLUDE_STRINGIFICATION -fno-rtti
15 backend/BackendClient.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 \
33 drm/DrmFbImporter.cpp \
38 drm/ResourceManager.cpp \
39 drm/UEventListener.cpp \
41 tests/worker_test.cpp \
46 #bufferinfo/BufferInfoMapperMetadata.cpp
48 TIDY_CHECKS_NORMAL := * \
49 -hicpp-* -llvmlibc-* -fuchsia-* -altera-* \
50 -cppcoreguidelines-special-member-functions \
52 -cppcoreguidelines-avoid-c-arrays \
53 -cppcoreguidelines-pro-type-vararg \
54 -cppcoreguidelines-pro-bounds-array-to-pointer-decay \
55 -cppcoreguidelines-pro-bounds-constant-array-index \
56 -cppcoreguidelines-avoid-magic-numbers \
57 -google-readability-braces-around-statements \
58 -google-readability-casting \
59 -misc-non-private-member-variables-in-classes \
60 -modernize-avoid-c-arrays \
61 -modernize-use-nodiscard \
62 -modernize-use-trailing-return-type \
63 -readability-braces-around-statements \
65 TIDY_CHECKS_COARSE := \
66 $(TIDY_CHECKS_NORMAL) \
67 -cppcoreguidelines-non-private-member-variables-in-classes \
68 -cppcoreguidelines-pro-bounds-array-to-pointer-decay \
69 -cppcoreguidelines-pro-bounds-constant-array-index \
70 -cppcoreguidelines-pro-bounds-pointer-arithmetic \
71 -cppcoreguidelines-pro-type-cstyle-cast \
72 -cppcoreguidelines-pro-type-reinterpret-cast \
73 -cppcoreguidelines-pro-type-static-cast-downcast \
74 -cppcoreguidelines-pro-type-union-access \
75 -cppcoreguidelines-pro-type-vararg \
76 -cppcoreguidelines-avoid-magic-numbers \
77 -cppcoreguidelines-macro-usage \
78 -cppcoreguidelines-avoid-c-arrays \
79 -google-readability-braces-around-statements \
80 -google-readability-casting \
81 -misc-non-private-member-variables-in-classes \
82 -modernize-avoid-c-arrays \
83 -modernize-use-trailing-return-type \
84 -modernize-use-nodiscard \
85 -readability-braces-around-statements \
86 -readability-convert-member-functions-to-static \
87 -readability-implicit-bool-conversion \
88 -readability-identifier-naming \
89 -readability-magic-numbers \
90 -readability-use-anyofallof \
93 drm/UEventListener.h:NORMAL \
94 drm/DrmFbImporter.h:FINE \
95 drm/ResourceManager.h:NORMAL \
96 drm/DrmMode.h:COARSE \
97 drm/DrmDevice.h:COARSE \
98 drm/DrmProperty.h:COARSE \
99 drm/DrmConnector.h:COARSE \
100 drm/DrmCrtc.h:COARSE \
101 drm/VSyncWorker.h:NORMAL \
102 drm/DrmPlane.h:NORMAL \
103 drm/DrmUnique.h:FINE \
104 drm/DrmEncoder.h:COARSE \
105 bufferinfo/legacy/BufferInfoMinigbm.h:NORMAL \
106 bufferinfo/legacy/BufferInfoLibdrm.h:NORMAL \
107 bufferinfo/legacy/BufferInfoMaliMediatek.h:NORMAL \
108 bufferinfo/legacy/BufferInfoMaliHisi.h:NORMAL \
109 bufferinfo/legacy/BufferInfoImagination.h:NORMAL \
110 bufferinfo/legacy/BufferInfoMaliMeson.h:NORMAL \
111 bufferinfo/BufferInfoGetter.h:NORMAL \
112 bufferinfo/BufferInfoMapperMetadata.h:NORMAL \
113 include/drmhwcgralloc.h:NORMAL \
114 include/drmhwcomposer.h:NORMAL \
115 utils/Worker.h:COARSE \
116 utils/UniqueFd.h:FINE \
117 utils/autolock.h:NORMAL \
119 utils/properties.h:FINE \
120 compositor/DrmDisplayCompositor.h:COARSE \
121 compositor/Planner.h:NORMAL \
122 compositor/DrmDisplayComposition.h:COARSE \
123 backend/BackendManager.h:COARSE \
124 backend/BackendClient.h:NORMAL \
125 backend/Backend.h:NORMAL \
126 backend/BackendRCarDu.h:NORMAL \
130 backend/BackendClient.cpp:NORMAL \
131 backend/Backend.cpp:NORMAL \
132 backend/BackendManager.cpp:NORMAL \
133 backend/BackendRCarDu.cpp:NORMAL \
134 bufferinfo/BufferInfoGetter.cpp:NORMAL \
135 bufferinfo/legacy/BufferInfoImagination.cpp:COARSE \
136 bufferinfo/legacy/BufferInfoLibdrm.cpp:COARSE \
137 bufferinfo/legacy/BufferInfoMaliHisi.cpp:COARSE \
138 bufferinfo/legacy/BufferInfoMaliMediatek.cpp:COARSE \
139 bufferinfo/legacy/BufferInfoMaliMeson.cpp:COARSE \
140 bufferinfo/legacy/BufferInfoMinigbm.cpp:COARSE \
141 compositor/DrmDisplayComposition.cpp:COARSE \
142 compositor/DrmDisplayCompositor.cpp:COARSE \
143 compositor/Planner.cpp:NORMAL \
144 drm/DrmConnector.cpp:COARSE \
145 drm/DrmCrtc.cpp:NORMAL \
146 drm/DrmDevice.cpp:COARSE \
147 drm/DrmEncoder.cpp:NORMAL \
148 drm/DrmFbImporter.cpp:NORMAL \
149 drm/DrmMode.cpp:NORMAL \
150 drm/DrmPlane.cpp:COARSE \
151 drm/DrmProperty.cpp:COARSE \
152 DrmHwcTwo.cpp:COARSE \
153 drm/ResourceManager.cpp:NORMAL \
154 drm/UEventListener.cpp:COARSE \
155 drm/VSyncWorker.cpp:COARSE \
156 tests/worker_test.cpp:COARSE \
157 utils/autolock.cpp:NORMAL \
158 utils/Worker.cpp:NORMAL \
159 utils/hwcutils.cpp:NORMAL \
162 .PHONY: all build tidy tidy-fine clean
164 all: build tidy tidy-fine
169 _OBJ := $(BUILD_FILES:.cpp=.o)
170 OBJ := $(patsubst %,$(OUT_DIR)/%,$(_OBJ))
172 DEPS := $(patsubst %.cpp,$(OUT_DIR)/%.d,$(BUILD_FILES))
176 CXXARGS := $(foreach dir,$(INCLUDE_DIRS),-I$(SRC_DIR)/$(dir)) $(foreach dir,$(SYSTEM_INCLUDE_DIRS),-I$(dir)) $(CXXFLAGS)
178 $(OUT_DIR)/%.o: $(SRC_DIR)/%.cpp
180 $(CLANG) $< $(CXXARGS) -c -o $@
182 $(OUT_DIR)/%.d: $(SRC_DIR)/%.cpp
184 $(CLANG) $(CXXARGS) $< -MM -MT $(OUT_DIR)/$(patsubst %.cpp,%.o,$<) -o $@
187 space := $(subst ,, )
191 TIDY_ARGS_NONE := --checks="-*,llvm-include-order"
192 TIDY_ARGS_ := --checks="-*,llvm-include-order"
193 TIDY_ARGS_NORMAL := --checks="$(subst $(space),$(comma),$(strip $(TIDY_CHECKS_NORMAL)))"
194 TIDY_ARGS_COARSE := --checks="$(subst $(space),$(comma),$(strip $(TIDY_CHECKS_COARSE)))"
198 _TARG := $(OUT_DIR)/$1.tidy.ts
199 _DEP := $(SRC_DIR)/$1
201 TIDY_DEPS += $(_TARG)
203 TIDY_ARGS:=$(TIDY_ARGS_$2)
206 mkdir -p $(dir $(_TARG))
207 $(CLANG_TIDY) $(_DEP) $(TIDY_ARGS) -- -x c++ $(CXXARGS)
212 $(foreach pair,$(TIDY_FILES),$(eval $(call process-tidy,$(word 1, $(subst :, ,$(pair))),$(word 2, $(subst :, ,$(pair))))))
214 #$(warning $(TIDY_DEPS))
218 ifneq ($(MAKECMDGOALS), clean)