Roman Stratiienko | cef5c77 | 2021-12-22 16:22:24 +0200 | [diff] [blame] | 1 | |
| 2 | INCLUDE_DIRS := . ../libdrm/include/drm include ./.ci/android_headers ./tests/test_include |
| 3 | SYSTEM_INCLUDE_DIRS := /usr/include/libdrm |
| 4 | |
| 5 | CLANG := clang++-12 |
| 6 | CLANG_TIDY := clang-tidy-12 |
| 7 | OUT_DIR := /tmp/drm_hwcomposer/build/ |
| 8 | SRC_DIR := . |
| 9 | |
| 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 |
| 13 | |
| 14 | BUILD_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 \ |
Roman Stratiienko | fc014f5 | 2021-12-23 19:04:29 +0200 | [diff] [blame^] | 44 | utils/hwcutils.cpp \ |
Roman Stratiienko | cef5c77 | 2021-12-22 16:22:24 +0200 | [diff] [blame] | 45 | |
| 46 | #bufferinfo/BufferInfoMapperMetadata.cpp |
Roman Stratiienko | cef5c77 | 2021-12-22 16:22:24 +0200 | [diff] [blame] | 47 | |
Roman Stratiienko | 24a7fc4 | 2021-12-23 16:25:20 +0200 | [diff] [blame] | 48 | TIDY_CHECKS_NORMAL := * \ |
Roman Stratiienko | cef5c77 | 2021-12-22 16:22:24 +0200 | [diff] [blame] | 49 | -hicpp-* -llvmlibc-* -fuchsia-* -altera-* \ |
Roman Stratiienko | 24a7fc4 | 2021-12-23 16:25:20 +0200 | [diff] [blame] | 50 | -cppcoreguidelines-special-member-functions \ |
Roman Stratiienko | fc014f5 | 2021-12-23 19:04:29 +0200 | [diff] [blame^] | 51 | -llvm-header-guard \ |
Roman Stratiienko | 24a7fc4 | 2021-12-23 16:25:20 +0200 | [diff] [blame] | 52 | -cppcoreguidelines-avoid-c-arrays \ |
Roman Stratiienko | fc014f5 | 2021-12-23 19:04:29 +0200 | [diff] [blame^] | 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 \ |
Roman Stratiienko | 24a7fc4 | 2021-12-23 16:25:20 +0200 | [diff] [blame] | 57 | -google-readability-braces-around-statements \ |
| 58 | -google-readability-casting \ |
| 59 | -misc-non-private-member-variables-in-classes \ |
| 60 | -modernize-avoid-c-arrays \ |
Roman Stratiienko | fc014f5 | 2021-12-23 19:04:29 +0200 | [diff] [blame^] | 61 | -modernize-use-nodiscard \ |
Roman Stratiienko | 24a7fc4 | 2021-12-23 16:25:20 +0200 | [diff] [blame] | 62 | -modernize-use-trailing-return-type \ |
| 63 | -readability-braces-around-statements \ |
Roman Stratiienko | 24a7fc4 | 2021-12-23 16:25:20 +0200 | [diff] [blame] | 64 | |
| 65 | TIDY_CHECKS_COARSE := \ |
| 66 | $(TIDY_CHECKS_NORMAL) \ |
Roman Stratiienko | e78235c | 2021-12-23 17:36:12 +0200 | [diff] [blame] | 67 | -cppcoreguidelines-non-private-member-variables-in-classes \ |
Roman Stratiienko | cef5c77 | 2021-12-22 16:22:24 +0200 | [diff] [blame] | 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 \ |
Roman Stratiienko | e78235c | 2021-12-23 17:36:12 +0200 | [diff] [blame] | 72 | -cppcoreguidelines-pro-type-reinterpret-cast \ |
| 73 | -cppcoreguidelines-pro-type-static-cast-downcast \ |
Roman Stratiienko | cef5c77 | 2021-12-22 16:22:24 +0200 | [diff] [blame] | 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 \ |
Roman Stratiienko | e78235c | 2021-12-23 17:36:12 +0200 | [diff] [blame] | 84 | -modernize-use-nodiscard \ |
Roman Stratiienko | cef5c77 | 2021-12-22 16:22:24 +0200 | [diff] [blame] | 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 \ |
| 91 | |
Roman Stratiienko | 24a7fc4 | 2021-12-23 16:25:20 +0200 | [diff] [blame] | 92 | TIDY_FILES := \ |
Roman Stratiienko | fc014f5 | 2021-12-23 19:04:29 +0200 | [diff] [blame^] | 93 | drm/UEventListener.h:NORMAL \ |
Roman Stratiienko | 24a7fc4 | 2021-12-23 16:25:20 +0200 | [diff] [blame] | 94 | drm/DrmFbImporter.h:FINE \ |
Roman Stratiienko | fc014f5 | 2021-12-23 19:04:29 +0200 | [diff] [blame^] | 95 | drm/ResourceManager.h:NORMAL \ |
Roman Stratiienko | e78235c | 2021-12-23 17:36:12 +0200 | [diff] [blame] | 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 \ |
Roman Stratiienko | fc014f5 | 2021-12-23 19:04:29 +0200 | [diff] [blame^] | 101 | drm/VSyncWorker.h:NORMAL \ |
| 102 | drm/DrmPlane.h:NORMAL \ |
Roman Stratiienko | 24a7fc4 | 2021-12-23 16:25:20 +0200 | [diff] [blame] | 103 | drm/DrmUnique.h:FINE \ |
Roman Stratiienko | e78235c | 2021-12-23 17:36:12 +0200 | [diff] [blame] | 104 | drm/DrmEncoder.h:COARSE \ |
Roman Stratiienko | fc014f5 | 2021-12-23 19:04:29 +0200 | [diff] [blame^] | 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 \ |
Roman Stratiienko | e78235c | 2021-12-23 17:36:12 +0200 | [diff] [blame] | 115 | utils/Worker.h:COARSE \ |
Roman Stratiienko | 24a7fc4 | 2021-12-23 16:25:20 +0200 | [diff] [blame] | 116 | utils/UniqueFd.h:FINE \ |
Roman Stratiienko | fc014f5 | 2021-12-23 19:04:29 +0200 | [diff] [blame^] | 117 | utils/autolock.h:NORMAL \ |
Roman Stratiienko | 24a7fc4 | 2021-12-23 16:25:20 +0200 | [diff] [blame] | 118 | utils/log.h:FINE \ |
| 119 | utils/properties.h:FINE \ |
Roman Stratiienko | e78235c | 2021-12-23 17:36:12 +0200 | [diff] [blame] | 120 | compositor/DrmDisplayCompositor.h:COARSE \ |
Roman Stratiienko | fc014f5 | 2021-12-23 19:04:29 +0200 | [diff] [blame^] | 121 | compositor/Planner.h:NORMAL \ |
Roman Stratiienko | e78235c | 2021-12-23 17:36:12 +0200 | [diff] [blame] | 122 | compositor/DrmDisplayComposition.h:COARSE \ |
| 123 | backend/BackendManager.h:COARSE \ |
Roman Stratiienko | fc014f5 | 2021-12-23 19:04:29 +0200 | [diff] [blame^] | 124 | backend/BackendClient.h:NORMAL \ |
| 125 | backend/Backend.h:NORMAL \ |
| 126 | backend/BackendRCarDu.h:NORMAL \ |
Roman Stratiienko | e78235c | 2021-12-23 17:36:12 +0200 | [diff] [blame] | 127 | DrmHwcTwo.h:COARSE \ |
Roman Stratiienko | 24a7fc4 | 2021-12-23 16:25:20 +0200 | [diff] [blame] | 128 | |
| 129 | TIDY_FILES += \ |
Roman Stratiienko | fc014f5 | 2021-12-23 19:04:29 +0200 | [diff] [blame^] | 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 \ |
Roman Stratiienko | 24a7fc4 | 2021-12-23 16:25:20 +0200 | [diff] [blame] | 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 \ |
Roman Stratiienko | fc014f5 | 2021-12-23 19:04:29 +0200 | [diff] [blame^] | 143 | compositor/Planner.cpp:NORMAL \ |
Roman Stratiienko | 24a7fc4 | 2021-12-23 16:25:20 +0200 | [diff] [blame] | 144 | drm/DrmConnector.cpp:COARSE \ |
Roman Stratiienko | fc014f5 | 2021-12-23 19:04:29 +0200 | [diff] [blame^] | 145 | drm/DrmCrtc.cpp:NORMAL \ |
Roman Stratiienko | 24a7fc4 | 2021-12-23 16:25:20 +0200 | [diff] [blame] | 146 | drm/DrmDevice.cpp:COARSE \ |
Roman Stratiienko | fc014f5 | 2021-12-23 19:04:29 +0200 | [diff] [blame^] | 147 | drm/DrmEncoder.cpp:NORMAL \ |
| 148 | drm/DrmFbImporter.cpp:NORMAL \ |
| 149 | drm/DrmMode.cpp:NORMAL \ |
Roman Stratiienko | 24a7fc4 | 2021-12-23 16:25:20 +0200 | [diff] [blame] | 150 | drm/DrmPlane.cpp:COARSE \ |
| 151 | drm/DrmProperty.cpp:COARSE \ |
| 152 | DrmHwcTwo.cpp:COARSE \ |
Roman Stratiienko | fc014f5 | 2021-12-23 19:04:29 +0200 | [diff] [blame^] | 153 | drm/ResourceManager.cpp:NORMAL \ |
Roman Stratiienko | 24a7fc4 | 2021-12-23 16:25:20 +0200 | [diff] [blame] | 154 | drm/UEventListener.cpp:COARSE \ |
| 155 | drm/VSyncWorker.cpp:COARSE \ |
| 156 | tests/worker_test.cpp:COARSE \ |
Roman Stratiienko | fc014f5 | 2021-12-23 19:04:29 +0200 | [diff] [blame^] | 157 | utils/autolock.cpp:NORMAL \ |
| 158 | utils/Worker.cpp:NORMAL \ |
| 159 | utils/hwcutils.cpp:NORMAL \ |
Roman Stratiienko | 24a7fc4 | 2021-12-23 16:25:20 +0200 | [diff] [blame] | 160 | |
| 161 | |
Roman Stratiienko | cef5c77 | 2021-12-22 16:22:24 +0200 | [diff] [blame] | 162 | .PHONY: all build tidy tidy-fine clean |
| 163 | |
| 164 | all: build tidy tidy-fine |
| 165 | |
| 166 | clean: |
| 167 | rm -rf $(OUT_DIR)/ |
| 168 | |
| 169 | _OBJ := $(BUILD_FILES:.cpp=.o) |
| 170 | OBJ := $(patsubst %,$(OUT_DIR)/%,$(_OBJ)) |
| 171 | |
Roman Stratiienko | cef5c77 | 2021-12-22 16:22:24 +0200 | [diff] [blame] | 172 | DEPS := $(patsubst %.cpp,$(OUT_DIR)/%.d,$(BUILD_FILES)) |
| 173 | |
| 174 | build: $(OBJ) |
| 175 | |
Roman Stratiienko | cef5c77 | 2021-12-22 16:22:24 +0200 | [diff] [blame] | 176 | CXXARGS := $(foreach dir,$(INCLUDE_DIRS),-I$(SRC_DIR)/$(dir)) $(foreach dir,$(SYSTEM_INCLUDE_DIRS),-I$(dir)) $(CXXFLAGS) |
| 177 | |
| 178 | $(OUT_DIR)/%.o: $(SRC_DIR)/%.cpp |
| 179 | mkdir -p $(dir $@) |
| 180 | $(CLANG) $< $(CXXARGS) -c -o $@ |
| 181 | |
| 182 | $(OUT_DIR)/%.d: $(SRC_DIR)/%.cpp |
| 183 | mkdir -p $(dir $@) |
Roman Stratiienko | 3511273 | 2021-12-23 13:41:13 +0200 | [diff] [blame] | 184 | $(CLANG) $(CXXARGS) $< -MM -MT $(OUT_DIR)/$(patsubst %.cpp,%.o,$<) -o $@ |
Roman Stratiienko | cef5c77 | 2021-12-22 16:22:24 +0200 | [diff] [blame] | 185 | |
Roman Stratiienko | 24a7fc4 | 2021-12-23 16:25:20 +0200 | [diff] [blame] | 186 | # TIDY |
Roman Stratiienko | cef5c77 | 2021-12-22 16:22:24 +0200 | [diff] [blame] | 187 | space := $(subst ,, ) |
| 188 | comma := , |
| 189 | |
Roman Stratiienko | 24a7fc4 | 2021-12-23 16:25:20 +0200 | [diff] [blame] | 190 | TIDY_ARGS_FINE := |
| 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)))" |
| 195 | |
| 196 | define process-tidy |
| 197 | |
| 198 | _TARG := $(OUT_DIR)/$1.tidy.ts |
| 199 | _DEP := $(SRC_DIR)/$1 |
| 200 | |
| 201 | TIDY_DEPS += $(_TARG) |
| 202 | |
| 203 | TIDY_ARGS:=$(TIDY_ARGS_$2) |
| 204 | |
| 205 | $(_TARG): $(_DEP) |
| 206 | mkdir -p $(dir $(_TARG)) |
| 207 | $(CLANG_TIDY) $(_DEP) $(TIDY_ARGS) -- -x c++ $(CXXARGS) |
| 208 | touch $(_TARG) |
| 209 | |
Roman Stratiienko | cef5c77 | 2021-12-22 16:22:24 +0200 | [diff] [blame] | 210 | endef |
| 211 | |
Roman Stratiienko | 24a7fc4 | 2021-12-23 16:25:20 +0200 | [diff] [blame] | 212 | $(foreach pair,$(TIDY_FILES),$(eval $(call process-tidy,$(word 1, $(subst :, ,$(pair))),$(word 2, $(subst :, ,$(pair)))))) |
Roman Stratiienko | cef5c77 | 2021-12-22 16:22:24 +0200 | [diff] [blame] | 213 | |
Roman Stratiienko | 24a7fc4 | 2021-12-23 16:25:20 +0200 | [diff] [blame] | 214 | #$(warning $(TIDY_DEPS)) |
Roman Stratiienko | cef5c77 | 2021-12-22 16:22:24 +0200 | [diff] [blame] | 215 | |
Roman Stratiienko | 24a7fc4 | 2021-12-23 16:25:20 +0200 | [diff] [blame] | 216 | tidy: $(TIDY_DEPS) |
Roman Stratiienko | cef5c77 | 2021-12-22 16:22:24 +0200 | [diff] [blame] | 217 | |
| 218 | ifneq ($(MAKECMDGOALS), clean) |
| 219 | -include $(DEPS) |
| 220 | endif |