Roman Stratiienko | cef5c77 | 2021-12-22 16:22:24 +0200 | [diff] [blame] | 1 | |
Roman Stratiienko | 0fea188 | 2024-10-17 00:02:10 +0300 | [diff] [blame] | 2 | BASE_DIR:=../aospless |
Roman Stratiienko | 2a93e4c | 2022-12-19 18:24:47 +0200 | [diff] [blame] | 3 | |
Roman Stratiienko | cef5c77 | 2021-12-22 16:22:24 +0200 | [diff] [blame] | 4 | SYSTEM_INCLUDE_DIRS := /usr/include/libdrm |
| 5 | |
Roman Stratiienko | 57ba08a | 2024-10-17 01:48:10 +0300 | [diff] [blame] | 6 | CLANG := clang++-19 |
| 7 | CLANG_TIDY := clang-tidy-19 |
Roman Stratiienko | 5741bbd | 2021-12-30 18:12:26 +0200 | [diff] [blame] | 8 | OUT_DIR := /tmp/drm_hwcomposer/build |
Roman Stratiienko | cef5c77 | 2021-12-22 16:22:24 +0200 | [diff] [blame] | 9 | SRC_DIR := . |
| 10 | |
Roman Stratiienko | 57ba08a | 2024-10-17 01:48:10 +0300 | [diff] [blame] | 11 | CXXFLAGS := -Wall -Wextra -Werror -Wno-missing-designated-field-initializers |
Roman Stratiienko | cef5c77 | 2021-12-22 16:22:24 +0200 | [diff] [blame] | 12 | CXXFLAGS += -D_LIBCPP_ENABLE_THREAD_SAFETY_ANNOTATIONS |
| 13 | CXXFLAGS += -fvisibility-inlines-hidden -std=gnu++17 -DHWC2_USE_CPP11 -DHWC2_INCLUDE_STRINGIFICATION -fno-rtti |
| 14 | |
Roman Stratiienko | 6e5c82e | 2024-10-16 23:05:25 +0300 | [diff] [blame] | 15 | CXXARGS := $(shell cat $(BASE_DIR)/toolchain_wrapper/sharedlib.cppflags) |
Roman Stratiienko | 2a93e4c | 2022-12-19 18:24:47 +0200 | [diff] [blame] | 16 | CXXARGS := $(subst [BASE_DIR],$(BASE_DIR),$(CXXARGS)) |
| 17 | # clang-tidy doesn't like -mcpu=xxx flag |
| 18 | CXXARGS := $(patsubst -mcpu=%,,$(CXXARGS)) |
| 19 | # TODO: build aospless with gtest enabled and remove line below |
| 20 | CXXARGS := $(subst -nostdlibinc,,$(CXXARGS)) |
| 21 | CXXARGS += -I. -I./tests/test_include $(CXXFLAGS) |
Roman Stratiienko | cef5c77 | 2021-12-22 16:22:24 +0200 | [diff] [blame] | 22 | |
Roman Stratiienko | 5741bbd | 2021-12-30 18:12:26 +0200 | [diff] [blame] | 23 | TIDY_FILES_OVERRIDE := \ |
Roman Stratiienko | 5741bbd | 2021-12-30 18:12:26 +0200 | [diff] [blame] | 24 | bufferinfo/legacy/BufferInfoImagination.cpp:COARSE \ |
| 25 | bufferinfo/legacy/BufferInfoLibdrm.cpp:COARSE \ |
| 26 | bufferinfo/legacy/BufferInfoMaliHisi.cpp:COARSE \ |
| 27 | bufferinfo/legacy/BufferInfoMaliMediatek.cpp:COARSE \ |
| 28 | bufferinfo/legacy/BufferInfoMaliMeson.cpp:COARSE \ |
| 29 | bufferinfo/legacy/BufferInfoMinigbm.cpp:COARSE \ |
Roman Stratiienko | 5741bbd | 2021-12-30 18:12:26 +0200 | [diff] [blame] | 30 | drm/DrmFbImporter.h:FINE \ |
Roman Stratiienko | 5741bbd | 2021-12-30 18:12:26 +0200 | [diff] [blame] | 31 | drm/DrmUnique.h:FINE \ |
Roman Stratiienko | 3e16890 | 2022-01-04 16:13:12 +0200 | [diff] [blame] | 32 | hwc2_device/DrmHwcTwo.cpp:COARSE \ |
| 33 | hwc2_device/DrmHwcTwo.h:COARSE \ |
Roman Stratiienko | 3627beb | 2022-01-04 16:02:55 +0200 | [diff] [blame] | 34 | hwc2_device/HwcDisplay.cpp:COARSE \ |
| 35 | hwc2_device/HwcDisplay.h:COARSE \ |
Roman Stratiienko | 5741bbd | 2021-12-30 18:12:26 +0200 | [diff] [blame] | 36 | utils/log.h:FINE \ |
| 37 | utils/properties.h:FINE \ |
Roman Stratiienko | cef5c77 | 2021-12-22 16:22:24 +0200 | [diff] [blame] | 38 | |
Roman Stratiienko | c46896d | 2022-01-04 11:10:22 +0200 | [diff] [blame] | 39 | TIDY_CHECKS_FINE := * \ |
| 40 | -llvmlibc* -fuchsia-* -altera-* \ |
| 41 | -llvm-header-guard \ |
| 42 | -cppcoreguidelines-pro-type-vararg \ |
Drew Davenport | 6abf819 | 2024-08-30 15:29:15 -0600 | [diff] [blame] | 43 | -google-readability-todo \ |
Roman Stratiienko | c46896d | 2022-01-04 11:10:22 +0200 | [diff] [blame] | 44 | -hicpp-vararg \ |
| 45 | -hicpp-signed-bitwise \ |
Drew Davenport | 8ac53ef | 2024-09-05 13:31:14 -0600 | [diff] [blame] | 46 | -misc-const-correctness \ |
Roman Stratiienko | cf80b9b | 2022-04-28 15:42:36 +0300 | [diff] [blame] | 47 | -readability-identifier-length \ |
Roman Stratiienko | 57ba08a | 2024-10-17 01:48:10 +0300 | [diff] [blame] | 48 | -misc-include-cleaner \ |
| 49 | -performance-enum-size \ |
| 50 | -misc-use-anonymous-namespace \ |
| 51 | -boost-use-ranges \ |
| 52 | -cppcoreguidelines-avoid-do-while \ |
| 53 | -modernize-min-max-use-initializer-list \ |
| 54 | -cppcoreguidelines-owning-memory \ |
| 55 | -readability-redundant-member-init \ |
| 56 | -cppcoreguidelines-avoid-const-or-ref-data-members \ |
| 57 | -cert-err33-c \ |
| 58 | -readability-math-missing-parentheses \ |
| 59 | -readability-avoid-unconditional-preprocessor-if \ |
| 60 | -modernize-type-traits \ |
| 61 | -clang-analyzer-optin.core.EnumCastOutOfRange \ |
| 62 | -performance-inefficient-vector-operation \ |
| 63 | -readability-static-accessed-through-instance \ |
| 64 | -misc-use-internal-linkage \ |
| 65 | -performance-avoid-endl \ |
Roman Stratiienko | c46896d | 2022-01-04 11:10:22 +0200 | [diff] [blame] | 66 | |
| 67 | TIDY_CHECKS_NORMAL := \ |
| 68 | $(TIDY_CHECKS_FINE) \ |
| 69 | -hicpp* \ |
Roman Stratiienko | 780f7da | 2022-01-10 16:04:15 +0200 | [diff] [blame] | 70 | -bugprone-easily-swappable-parameters \ |
Roman Stratiienko | 24a7fc4 | 2021-12-23 16:25:20 +0200 | [diff] [blame] | 71 | -cppcoreguidelines-special-member-functions \ |
Roman Stratiienko | 24a7fc4 | 2021-12-23 16:25:20 +0200 | [diff] [blame] | 72 | -cppcoreguidelines-avoid-c-arrays \ |
Roman Stratiienko | fc014f5 | 2021-12-23 19:04:29 +0200 | [diff] [blame] | 73 | -cppcoreguidelines-pro-bounds-array-to-pointer-decay \ |
| 74 | -cppcoreguidelines-pro-bounds-constant-array-index \ |
| 75 | -cppcoreguidelines-avoid-magic-numbers \ |
Roman Stratiienko | 24a7fc4 | 2021-12-23 16:25:20 +0200 | [diff] [blame] | 76 | -google-readability-braces-around-statements \ |
| 77 | -google-readability-casting \ |
| 78 | -misc-non-private-member-variables-in-classes \ |
| 79 | -modernize-avoid-c-arrays \ |
Roman Stratiienko | fc014f5 | 2021-12-23 19:04:29 +0200 | [diff] [blame] | 80 | -modernize-use-nodiscard \ |
Roman Stratiienko | 24a7fc4 | 2021-12-23 16:25:20 +0200 | [diff] [blame] | 81 | -modernize-use-trailing-return-type \ |
| 82 | -readability-braces-around-statements \ |
Roman Stratiienko | 24a7fc4 | 2021-12-23 16:25:20 +0200 | [diff] [blame] | 83 | |
| 84 | TIDY_CHECKS_COARSE := \ |
| 85 | $(TIDY_CHECKS_NORMAL) \ |
Roman Stratiienko | e78235c | 2021-12-23 17:36:12 +0200 | [diff] [blame] | 86 | -cppcoreguidelines-non-private-member-variables-in-classes \ |
Roman Stratiienko | cef5c77 | 2021-12-22 16:22:24 +0200 | [diff] [blame] | 87 | -cppcoreguidelines-pro-bounds-pointer-arithmetic \ |
| 88 | -cppcoreguidelines-pro-type-cstyle-cast \ |
Roman Stratiienko | e78235c | 2021-12-23 17:36:12 +0200 | [diff] [blame] | 89 | -cppcoreguidelines-pro-type-reinterpret-cast \ |
| 90 | -cppcoreguidelines-pro-type-static-cast-downcast \ |
Roman Stratiienko | cef5c77 | 2021-12-22 16:22:24 +0200 | [diff] [blame] | 91 | -cppcoreguidelines-pro-type-union-access \ |
Roman Stratiienko | cef5c77 | 2021-12-22 16:22:24 +0200 | [diff] [blame] | 92 | -cppcoreguidelines-macro-usage \ |
Roman Stratiienko | cef5c77 | 2021-12-22 16:22:24 +0200 | [diff] [blame] | 93 | -readability-convert-member-functions-to-static \ |
| 94 | -readability-implicit-bool-conversion \ |
| 95 | -readability-identifier-naming \ |
| 96 | -readability-magic-numbers \ |
Roman Stratiienko | cef5c77 | 2021-12-22 16:22:24 +0200 | [diff] [blame] | 97 | |
Roman Stratiienko | 5741bbd | 2021-12-30 18:12:26 +0200 | [diff] [blame] | 98 | .PHONY: all build tidy clean |
Roman Stratiienko | 24a7fc4 | 2021-12-23 16:25:20 +0200 | [diff] [blame] | 99 | |
Roman Stratiienko | 5741bbd | 2021-12-30 18:12:26 +0200 | [diff] [blame] | 100 | all: build tidy |
Roman Stratiienko | cef5c77 | 2021-12-22 16:22:24 +0200 | [diff] [blame] | 101 | |
| 102 | clean: |
| 103 | rm -rf $(OUT_DIR)/ |
| 104 | |
Roman Stratiienko | 5741bbd | 2021-12-30 18:12:26 +0200 | [diff] [blame] | 105 | # Build |
| 106 | |
Roman Stratiienko | bd97317 | 2022-02-18 16:51:53 +0200 | [diff] [blame] | 107 | BUILD_FILES_AUTO := $(shell find -L $(SRC_DIR) -not -path '*/\.*' -not -path '*/tests/test_include/*' -path '*.cpp') |
Roman Stratiienko | 5741bbd | 2021-12-30 18:12:26 +0200 | [diff] [blame] | 108 | SKIP_FILES_path := $(foreach file,$(SKIP_FILES),$(SRC_DIR)/$(file)) |
| 109 | |
| 110 | BUILD_FILES := $(subst ./,,$(filter-out $(SKIP_FILES_path),$(BUILD_FILES_AUTO))) |
| 111 | |
Roman Stratiienko | cef5c77 | 2021-12-22 16:22:24 +0200 | [diff] [blame] | 112 | _OBJ := $(BUILD_FILES:.cpp=.o) |
| 113 | OBJ := $(patsubst %,$(OUT_DIR)/%,$(_OBJ)) |
| 114 | |
Roman Stratiienko | cef5c77 | 2021-12-22 16:22:24 +0200 | [diff] [blame] | 115 | DEPS := $(patsubst %.cpp,$(OUT_DIR)/%.d,$(BUILD_FILES)) |
| 116 | |
| 117 | build: $(OBJ) |
| 118 | |
Roman Stratiienko | cef5c77 | 2021-12-22 16:22:24 +0200 | [diff] [blame] | 119 | $(OUT_DIR)/%.o: $(SRC_DIR)/%.cpp |
Roman Stratiienko | 2a93e4c | 2022-12-19 18:24:47 +0200 | [diff] [blame] | 120 | @mkdir -p $(dir $@) |
| 121 | @echo "CC $<" |
| 122 | @$(CLANG) $< $(CXXARGS) -c -o $@ |
Roman Stratiienko | cef5c77 | 2021-12-22 16:22:24 +0200 | [diff] [blame] | 123 | |
| 124 | $(OUT_DIR)/%.d: $(SRC_DIR)/%.cpp |
Roman Stratiienko | 2a93e4c | 2022-12-19 18:24:47 +0200 | [diff] [blame] | 125 | @mkdir -p $(dir $@) |
| 126 | @$(CLANG) $(CXXARGS) $< -MM -MT $(OUT_DIR)/$(patsubst %.cpp,%.o,$<) -o $@ |
Roman Stratiienko | cef5c77 | 2021-12-22 16:22:24 +0200 | [diff] [blame] | 127 | |
Roman Stratiienko | 24a7fc4 | 2021-12-23 16:25:20 +0200 | [diff] [blame] | 128 | # TIDY |
Roman Stratiienko | bd97317 | 2022-02-18 16:51:53 +0200 | [diff] [blame] | 129 | TIDY_FILES_AUTO := $(shell find -L $(SRC_DIR) -not -path '*/\.*' -not -path '*/tests/test_include/*' \( -path '*.cpp' -o -path '*.h' \)) |
Roman Stratiienko | 5741bbd | 2021-12-30 18:12:26 +0200 | [diff] [blame] | 130 | |
| 131 | TIDY_FILES_AUTO_filtered := $(filter-out $(SKIP_FILES_path),$(TIDY_FILES_AUTO)) |
| 132 | |
| 133 | TIDY_FILES_OVERRIDE_path := $(foreach pair,$(TIDY_FILES_OVERRIDE),$(SRC_DIR)/$(pair)) |
| 134 | |
| 135 | TIDY_FILES_OVERRIDE_name_only := $(foreach pair,$(TIDY_FILES_OVERRIDE_path),$(word 1, $(subst :, ,$(pair)))) |
| 136 | |
| 137 | TIDY_FILES := $(sort $(TIDY_FILES_AUTO_filtered) $(TIDY_FILES_OVERRIDE_name_only)) |
| 138 | |
Roman Stratiienko | cef5c77 | 2021-12-22 16:22:24 +0200 | [diff] [blame] | 139 | space := $(subst ,, ) |
| 140 | comma := , |
| 141 | |
Roman Stratiienko | 24a7fc4 | 2021-12-23 16:25:20 +0200 | [diff] [blame] | 142 | TIDY_ARGS_NONE := --checks="-*,llvm-include-order" |
| 143 | TIDY_ARGS_ := --checks="-*,llvm-include-order" |
Roman Stratiienko | c46896d | 2022-01-04 11:10:22 +0200 | [diff] [blame] | 144 | TIDY_ARGS_FINE := --checks="$(subst $(space),$(comma),$(strip $(TIDY_CHECKS_FINE)))" |
Roman Stratiienko | 24a7fc4 | 2021-12-23 16:25:20 +0200 | [diff] [blame] | 145 | TIDY_ARGS_NORMAL := --checks="$(subst $(space),$(comma),$(strip $(TIDY_CHECKS_NORMAL)))" |
| 146 | TIDY_ARGS_COARSE := --checks="$(subst $(space),$(comma),$(strip $(TIDY_CHECKS_COARSE)))" |
| 147 | |
| 148 | define process-tidy |
| 149 | |
| 150 | _TARG := $(OUT_DIR)/$1.tidy.ts |
Roman Stratiienko | 2a93e4c | 2022-12-19 18:24:47 +0200 | [diff] [blame] | 151 | _DEP := $1 |
Roman Stratiienko | 24a7fc4 | 2021-12-23 16:25:20 +0200 | [diff] [blame] | 152 | |
| 153 | TIDY_DEPS += $(_TARG) |
| 154 | |
Roman Stratiienko | 5741bbd | 2021-12-30 18:12:26 +0200 | [diff] [blame] | 155 | TIDY_LEVEL_1 := $$(strip $$(foreach pair,$$(TIDY_FILES_OVERRIDE_path),$$(if $$(filter $$(word 1, $$(subst :, ,$$(pair))),$1),$$(word 2, $$(subst :, ,$$(pair))),))) |
Roman Stratiienko | 24a7fc4 | 2021-12-23 16:25:20 +0200 | [diff] [blame] | 156 | |
Roman Stratiienko | 5741bbd | 2021-12-30 18:12:26 +0200 | [diff] [blame] | 157 | TIDY_LEVEL_2 := $$(if $$(TIDY_LEVEL_1),$$(TIDY_LEVEL_1),NORMAL) |
| 158 | |
| 159 | TIDY_ARGS := $$(TIDY_ARGS_$$(TIDY_LEVEL_2)) |
| 160 | |
| 161 | $$(_TARG): _DEP := $$(_DEP) |
| 162 | $$(_TARG): _TARG := $$(_TARG) |
| 163 | $$(_TARG): TIDY_ARGS := $$(TIDY_ARGS) |
| 164 | $$(_TARG): $$(_DEP) |
Roman Stratiienko | 2a93e4c | 2022-12-19 18:24:47 +0200 | [diff] [blame] | 165 | @mkdir -p $$(dir $$(_TARG)) |
| 166 | @echo "TIDY $$<" |
| 167 | @$$(CLANG_TIDY) $$(_DEP) $$(TIDY_ARGS) --quiet -- -x c++ $$(CXXARGS) -Wno-pragma-once-outside-header |
| 168 | @touch $$(_TARG) |
Roman Stratiienko | 24a7fc4 | 2021-12-23 16:25:20 +0200 | [diff] [blame] | 169 | |
Roman Stratiienko | cef5c77 | 2021-12-22 16:22:24 +0200 | [diff] [blame] | 170 | endef |
| 171 | |
Roman Stratiienko | 5741bbd | 2021-12-30 18:12:26 +0200 | [diff] [blame] | 172 | $(foreach file,$(TIDY_FILES),$(eval $(call process-tidy,$(file)))) |
Roman Stratiienko | cef5c77 | 2021-12-22 16:22:24 +0200 | [diff] [blame] | 173 | |
Roman Stratiienko | 24a7fc4 | 2021-12-23 16:25:20 +0200 | [diff] [blame] | 174 | tidy: $(TIDY_DEPS) |
Roman Stratiienko | cef5c77 | 2021-12-22 16:22:24 +0200 | [diff] [blame] | 175 | |
| 176 | ifneq ($(MAKECMDGOALS), clean) |
| 177 | -include $(DEPS) |
| 178 | endif |