~ [ source navigation ] ~ [ diff markup ] ~ [ identifier search ] ~

TOMOYO Linux Cross Reference
Linux/tools/build/Makefile.feature

Version: ~ [ linux-6.12-rc7 ] ~ [ linux-6.11.7 ] ~ [ linux-6.10.14 ] ~ [ linux-6.9.12 ] ~ [ linux-6.8.12 ] ~ [ linux-6.7.12 ] ~ [ linux-6.6.60 ] ~ [ linux-6.5.13 ] ~ [ linux-6.4.16 ] ~ [ linux-6.3.13 ] ~ [ linux-6.2.16 ] ~ [ linux-6.1.116 ] ~ [ linux-6.0.19 ] ~ [ linux-5.19.17 ] ~ [ linux-5.18.19 ] ~ [ linux-5.17.15 ] ~ [ linux-5.16.20 ] ~ [ linux-5.15.171 ] ~ [ linux-5.14.21 ] ~ [ linux-5.13.19 ] ~ [ linux-5.12.19 ] ~ [ linux-5.11.22 ] ~ [ linux-5.10.229 ] ~ [ linux-5.9.16 ] ~ [ linux-5.8.18 ] ~ [ linux-5.7.19 ] ~ [ linux-5.6.19 ] ~ [ linux-5.5.19 ] ~ [ linux-5.4.285 ] ~ [ linux-5.3.18 ] ~ [ linux-5.2.21 ] ~ [ linux-5.1.21 ] ~ [ linux-5.0.21 ] ~ [ linux-4.20.17 ] ~ [ linux-4.19.323 ] ~ [ linux-4.18.20 ] ~ [ linux-4.17.19 ] ~ [ linux-4.16.18 ] ~ [ linux-4.15.18 ] ~ [ linux-4.14.336 ] ~ [ linux-4.13.16 ] ~ [ linux-4.12.14 ] ~ [ linux-4.11.12 ] ~ [ linux-4.10.17 ] ~ [ linux-4.9.337 ] ~ [ linux-4.4.302 ] ~ [ linux-3.10.108 ] ~ [ linux-2.6.32.71 ] ~ [ linux-2.6.0 ] ~ [ linux-2.4.37.11 ] ~ [ unix-v6-master ] ~ [ ccs-tools-1.8.12 ] ~ [ policy-sample ] ~
Architecture: ~ [ i386 ] ~ [ alpha ] ~ [ m68k ] ~ [ mips ] ~ [ ppc ] ~ [ sparc ] ~ [ sparc64 ] ~

Diff markup

Differences between /tools/build/Makefile.feature (Version linux-6.12-rc7) and /tools/build/Makefile.feature (Version linux-4.4.302)


  1 # SPDX-License-Identifier: GPL-2.0-only        << 
  2 feature_dir := $(srctree)/tools/build/feature       1 feature_dir := $(srctree)/tools/build/feature
  3                                                     2 
  4 ifneq ($(OUTPUT),)                                  3 ifneq ($(OUTPUT),)
  5   OUTPUT_FEATURES = $(OUTPUT)feature/               4   OUTPUT_FEATURES = $(OUTPUT)feature/
  6   $(shell mkdir -p $(OUTPUT_FEATURES))              5   $(shell mkdir -p $(OUTPUT_FEATURES))
  7 endif                                               6 endif
  8                                                     7 
  9 feature_check = $(eval $(feature_check_code))       8 feature_check = $(eval $(feature_check_code))
 10 define feature_check_code                           9 define feature_check_code
 11   feature-$(1) := $(shell $(MAKE) OUTPUT=$(OUT !!  10   feature-$(1) := $(shell $(MAKE) OUTPUT=$(OUTPUT_FEATURES) CFLAGS="$(EXTRA_CFLAGS) $(FEATURE_CHECK_CFLAGS-$(1))" LDFLAGS="$(LDFLAGS) $(FEATURE_CHECK_LDFLAGS-$(1))" -C $(feature_dir) test-$1.bin >/dev/null 2>/dev/null && echo 1 || echo 0)
 12 endef                                              11 endef
 13                                                    12 
 14 feature_set = $(eval $(feature_set_code))          13 feature_set = $(eval $(feature_set_code))
 15 define feature_set_code                            14 define feature_set_code
 16   feature-$(1) := 1                                15   feature-$(1) := 1
 17 endef                                              16 endef
 18                                                    17 
 19 #                                                  18 #
 20 # Build the feature check binaries in parallel     19 # Build the feature check binaries in parallel, ignore errors, ignore return value and suppress output:
 21 #                                                  20 #
 22                                                    21 
 23 #                                                  22 #
 24 # Note that this is not a complete list of all     23 # Note that this is not a complete list of all feature tests, just
 25 # those that are typically built on a fully co     24 # those that are typically built on a fully configured system.
 26 #                                                  25 #
 27 # [ Feature tests not mentioned here have to b     26 # [ Feature tests not mentioned here have to be built explicitly in
 28 #   the rule that uses them - an example for t     27 #   the rule that uses them - an example for that is the 'bionic'
 29 #   feature check. ]                               28 #   feature check. ]
 30 #                                                  29 #
 31 FEATURE_TESTS_BASIC :=                  \      !!  30 FEATURE_TESTS ?=                        \
 32         backtrace                       \      !!  31         backtrace                       \
 33         dwarf                           \      !!  32         dwarf                           \
 34         dwarf_getlocations              \      !!  33         fortify-source                  \
 35         dwarf_getcfi                    \      !!  34         sync-compare-and-swap           \
 36         eventfd                         \      !!  35         glibc                           \
 37         fortify-source                  \      !!  36         gtk2                            \
 38         get_current_dir_name            \      !!  37         gtk2-infobar                    \
 39         gettid                          \      !!  38         libaudit                        \
 40         glibc                           \      !!  39         libbfd                          \
 41         libbfd                          \      !!  40         libelf                          \
 42         libbfd-buildid                  \      !!  41         libelf-getphdrnum               \
 43         libcap                          \      !!  42         libelf-mmap                     \
 44         libelf                          \      !!  43         libnuma                         \
 45         libelf-getphdrnum               \      !!  44         numa_num_possible_cpus          \
 46         libelf-gelf_getnote             \      !!  45         libperl                         \
 47         libelf-getshdrstrndx            \      !!  46         libpython                       \
 48         libnuma                         \      !!  47         libpython-version               \
 49         numa_num_possible_cpus          \      !!  48         libslang                        \
 50         libperl                         \      !!  49         libunwind                       \
 51         libpython                       \      !!  50         pthread-attr-setaffinity-np     \
 52         libslang                        \      !!  51         stackprotector-all              \
 53         libslang-include-subdir         \      !!  52         timerfd                         \
 54         libtraceevent                   \      !!  53         libdw-dwarf-unwind              \
 55         libtracefs                      \      !!  54         zlib                            \
 56         libcrypto                       \      !!  55         lzma                            \
 57         libunwind                       \      !!  56         get_cpuid                       \
 58         pthread-attr-setaffinity-np     \      !!  57         bpf
 59         pthread-barrier                 \      !!  58 
 60         reallocarray                    \      !!  59 FEATURE_DISPLAY ?=                      \
 61         stackprotector-all              \      !!  60         dwarf                           \
 62         timerfd                         \      !!  61         glibc                           \
 63         libdw-dwarf-unwind              \      !!  62         gtk2                            \
 64         zlib                            \      !!  63         libaudit                        \
 65         lzma                            \      !!  64         libbfd                          \
 66         get_cpuid                       \      !!  65         libelf                          \
 67         bpf                             \      !!  66         libnuma                         \
 68         scandirat                       \      !!  67         numa_num_possible_cpus          \
 69         sched_getcpu                    \      !!  68         libperl                         \
 70         sdt                             \      !!  69         libpython                       \
 71         setns                           \      !!  70         libslang                        \
 72         libaio                          \      !!  71         libunwind                       \
 73         libzstd                         \      !!  72         libdw-dwarf-unwind              \
 74         disassembler-four-args          \      !!  73         zlib                            \
 75         disassembler-init-styled        \      !!  74         lzma                            \
 76         file-handle                            !!  75         get_cpuid                       \
 77                                                !!  76         bpf
 78 # FEATURE_TESTS_BASIC + FEATURE_TESTS_EXTRA is << 
 79 # of all feature tests                         << 
 80 FEATURE_TESTS_EXTRA :=                  \      << 
 81          bionic                         \      << 
 82          compile-32                     \      << 
 83          compile-x32                    \      << 
 84          cplus-demangle                 \      << 
 85          cxa-demangle                   \      << 
 86          gtk2                           \      << 
 87          gtk2-infobar                   \      << 
 88          hello                          \      << 
 89          libbabeltrace                  \      << 
 90          libcapstone                    \      << 
 91          libbfd-liberty                 \      << 
 92          libbfd-liberty-z               \      << 
 93          libopencsd                     \      << 
 94          libunwind-x86                  \      << 
 95          libunwind-x86_64               \      << 
 96          libunwind-arm                  \      << 
 97          libunwind-aarch64              \      << 
 98          libunwind-debug-frame          \      << 
 99          libunwind-debug-frame-arm      \      << 
100          libunwind-debug-frame-aarch64  \      << 
101          cxx                            \      << 
102          llvm                           \      << 
103          clang                          \      << 
104          libbpf                         \      << 
105          libbpf-btf__load_from_kernel_by_id \  << 
106          libbpf-bpf_prog_load           \      << 
107          libbpf-bpf_object__next_program \     << 
108          libbpf-bpf_object__next_map    \      << 
109          libbpf-bpf_program__set_insns  \      << 
110          libbpf-bpf_create_map          \      << 
111          libpfm4                        \      << 
112          libdebuginfod                  \      << 
113          clang-bpf-co-re                       << 
114                                                << 
115                                                << 
116 FEATURE_TESTS ?= $(FEATURE_TESTS_BASIC)        << 
117                                                << 
118 ifeq ($(FEATURE_TESTS),all)                    << 
119   FEATURE_TESTS := $(FEATURE_TESTS_BASIC) $(FE << 
120 endif                                          << 
121                                                << 
122 FEATURE_DISPLAY ?=              \              << 
123          dwarf                  \              << 
124          dwarf_getlocations     \              << 
125          glibc                  \              << 
126          libbfd                 \              << 
127          libbfd-buildid         \              << 
128          libcap                 \              << 
129          libelf                 \              << 
130          libnuma                \              << 
131          numa_num_possible_cpus \              << 
132          libperl                \              << 
133          libpython              \              << 
134          libcrypto              \              << 
135          libunwind              \              << 
136          libdw-dwarf-unwind     \              << 
137          libcapstone            \              << 
138          llvm-perf              \              << 
139          zlib                   \              << 
140          lzma                   \              << 
141          get_cpuid              \              << 
142          bpf                    \              << 
143          libaio                 \              << 
144          libzstd                               << 
145                                                << 
146 #                                              << 
147 # Declare group members of a feature to displa << 
148 # result instead of each member result.        << 
149 #                                              << 
150 FEATURE_GROUP_MEMBERS-libbfd = libbfd-liberty  << 
151                                                << 
152 #                                              << 
153 # Declare list of feature dependency packages  << 
154 #                                              << 
155 FEATURE_PKG_CONFIG ?=           \              << 
156          libtraceevent          \              << 
157          libtracefs                            << 
158                                                << 
159 feature_pkg_config = $(eval $(feature_pkg_conf << 
160 define feature_pkg_config_code                 << 
161   FEATURE_CHECK_CFLAGS-$(1) := $(shell $(PKG_C << 
162   FEATURE_CHECK_LDFLAGS-$(1) := $(shell $(PKG_ << 
163 endef                                          << 
164                                                << 
165 # Set FEATURE_CHECK_(C|LD)FLAGS-$(package) for << 
166 ifneq ($(PKG_CONFIG),)                         << 
167   $(foreach package,$(FEATURE_PKG_CONFIG),$(ca << 
168 endif                                          << 
169                                                    77 
170 # Set FEATURE_CHECK_(C|LD)FLAGS-all for all FE     78 # Set FEATURE_CHECK_(C|LD)FLAGS-all for all FEATURE_TESTS features.
171 # If in the future we need per-feature checks/     79 # If in the future we need per-feature checks/flags for features not
172 # mentioned in this list we need to refactor t     80 # mentioned in this list we need to refactor this ;-).
173 set_test_all_flags = $(eval $(set_test_all_fla     81 set_test_all_flags = $(eval $(set_test_all_flags_code))
174 define set_test_all_flags_code                     82 define set_test_all_flags_code
175   FEATURE_CHECK_CFLAGS-all  += $(FEATURE_CHECK     83   FEATURE_CHECK_CFLAGS-all  += $(FEATURE_CHECK_CFLAGS-$(1))
176   FEATURE_CHECK_LDFLAGS-all += $(FEATURE_CHECK     84   FEATURE_CHECK_LDFLAGS-all += $(FEATURE_CHECK_LDFLAGS-$(1))
177 endef                                              85 endef
178                                                    86 
179 $(foreach feat,$(FEATURE_TESTS),$(call set_tes     87 $(foreach feat,$(FEATURE_TESTS),$(call set_test_all_flags,$(feat)))
180                                                    88 
181 #                                                  89 #
182 # Special fast-path for the 'all features are      90 # Special fast-path for the 'all features are available' case:
183 #                                                  91 #
184 $(call feature_check,all,$(MSG))                   92 $(call feature_check,all,$(MSG))
185                                                    93 
186 #                                                  94 #
187 # Just in case the build freshly failed, make      95 # Just in case the build freshly failed, make sure we print the
188 # feature matrix:                                  96 # feature matrix:
189 #                                                  97 #
190 ifeq ($(feature-all), 1)                           98 ifeq ($(feature-all), 1)
191   #                                                99   #
192   # test-all.c passed - just set all the core     100   # test-all.c passed - just set all the core feature flags to 1:
193   #                                               101   #
194   $(foreach feat,$(FEATURE_TESTS),$(call featu    102   $(foreach feat,$(FEATURE_TESTS),$(call feature_set,$(feat)))
195   #                                            << 
196   # test-all.c does not comprise these tests,  << 
197   # for this case to get features proper value << 
198   #                                            << 
199   $(call feature_check,compile-32)             << 
200   $(call feature_check,compile-x32)            << 
201   $(call feature_check,bionic)                 << 
202   $(call feature_check,libbabeltrace)          << 
203 else                                              103 else
                                                   >> 104   $(shell $(MAKE) OUTPUT=$(OUTPUT_FEATURES) CFLAGS="$(EXTRA_CFLAGS)" LDFLAGS=$(LDFLAGS) -i -j -C $(feature_dir) $(addsuffix .bin,$(FEATURE_TESTS)) >/dev/null 2>&1)
204   $(foreach feat,$(FEATURE_TESTS),$(call featu    105   $(foreach feat,$(FEATURE_TESTS),$(call feature_check,$(feat)))
205 endif                                             106 endif
206                                                   107 
207 #                                                 108 #
208 # Print the result of the feature test:           109 # Print the result of the feature test:
209 #                                                 110 #
210 feature_print_status = $(eval $(feature_print_ !! 111 feature_print_status = $(eval $(feature_print_status_code)) $(info $(MSG))
211                                                << 
212 feature_group = $(eval $(feature_gen_group)) $ << 
213                                                << 
214 define feature_gen_group                       << 
215   GROUP := $(1)                                << 
216   ifneq ($(feature_verbose),1)                 << 
217     GROUP += $(FEATURE_GROUP_MEMBERS-$(1))     << 
218   endif                                        << 
219 endef                                          << 
220                                                   112 
221 define feature_print_status_code                  113 define feature_print_status_code
222   ifneq (,$(filter 1,$(foreach feat,$(call fea !! 114   ifeq ($(feature-$(1)), 1)
223     MSG = $(shell printf '...%40s: [ \033[32mo !! 115     MSG = $(shell printf '...%30s: [ \033[32mon\033[m  ]' $(1))
224   else                                            116   else
225     MSG = $(shell printf '...%40s: [ \033[31mO !! 117     MSG = $(shell printf '...%30s: [ \033[31mOFF\033[m ]' $(1))
226   endif                                           118   endif
227 endef                                             119 endef
228                                                   120 
229 feature_print_text = $(eval $(feature_print_te !! 121 feature_print_text = $(eval $(feature_print_text_code)) $(info $(MSG))
230 define feature_print_text_code                    122 define feature_print_text_code
231     MSG = $(shell printf '...%40s: %s' $(1) $( !! 123     MSG = $(shell printf '...%30s: %s' $(1) $(2))
232 endef                                             124 endef
233                                                   125 
234 #                                              << 
235 # generates feature value assignment for name, << 
236 #   $(call feature_assign,dwarf) == feature-dw << 
237 #                                              << 
238 feature_assign = feature-$(1)=$(feature-$(1))  << 
239                                                << 
240 FEATURE_DUMP_FILENAME = $(OUTPUT)FEATURE-DUMP$    126 FEATURE_DUMP_FILENAME = $(OUTPUT)FEATURE-DUMP$(FEATURE_USER)
241 FEATURE_DUMP := $(shell touch $(FEATURE_DUMP_F !! 127 FEATURE_DUMP := $(foreach feat,$(FEATURE_DISPLAY),feature-$(feat)($(feature-$(feat))))
242                                                !! 128 FEATURE_DUMP_FILE := $(shell touch $(FEATURE_DUMP_FILENAME); cat $(FEATURE_DUMP_FILENAME))
243 feature_dump_check = $(eval $(feature_dump_che << 
244 define feature_dump_check_code                 << 
245   ifeq ($(findstring $(1),$(FEATURE_DUMP)),)   << 
246     $(2) := 1                                  << 
247   endif                                        << 
248 endef                                          << 
249                                                << 
250 #                                              << 
251 # First check if any test from FEATURE_DISPLAY << 
252 # and set feature_display := 1 if it does      << 
253 $(foreach feat,$(FEATURE_DISPLAY),$(call featu << 
254                                                   129 
255 #                                              !! 130 ifeq ($(dwarf-post-unwind),1)
256 # Now also check if any other test changed,    !! 131   FEATURE_DUMP += dwarf-post-unwind($(dwarf-post-unwind-text))
257 # so we force FEATURE-DUMP generation          !! 132 endif
258 $(foreach feat,$(FEATURE_TESTS),$(call feature << 
259                                                   133 
260 # The $(feature_display) controls the default     134 # The $(feature_display) controls the default detection message
261 # output. It's set if:                            135 # output. It's set if:
262 # - detected features differes from stored fea    136 # - detected features differes from stored features from
263 #   last build (in $(FEATURE_DUMP_FILENAME) fi    137 #   last build (in $(FEATURE_DUMP_FILENAME) file)
264 # - one of the $(FEATURE_DISPLAY) is not detec    138 # - one of the $(FEATURE_DISPLAY) is not detected
265 # - VF is enabled                                 139 # - VF is enabled
266                                                   140 
267 ifeq ($(feature_dump_changed),1)               !! 141 ifneq ("$(FEATURE_DUMP)","$(FEATURE_DUMP_FILE)")
268   $(shell rm -f $(FEATURE_DUMP_FILENAME))      !! 142   $(shell echo "$(FEATURE_DUMP)" > $(FEATURE_DUMP_FILENAME))
269   $(foreach feat,$(FEATURE_TESTS),$(shell echo !! 143   feature_display := 1
270 endif                                             144 endif
271                                                   145 
272 feature_display_check = $(eval $(feature_check    146 feature_display_check = $(eval $(feature_check_display_code))
273 define feature_check_display_code              !! 147 define feature_display_check_code
274   ifneq ($(feature-$(1)), 1)                      148   ifneq ($(feature-$(1)), 1)
275     feature_display := 1                          149     feature_display := 1
276   endif                                           150   endif
277 endef                                             151 endef
278                                                   152 
279 $(foreach feat,$(FEATURE_DISPLAY),$(call featu    153 $(foreach feat,$(FEATURE_DISPLAY),$(call feature_display_check,$(feat)))
280                                                   154 
281 ifeq ($(VF),1)                                    155 ifeq ($(VF),1)
282   feature_display := 1                            156   feature_display := 1
283   feature_verbose := 1                            157   feature_verbose := 1
284 endif                                             158 endif
285                                                   159 
286 ifneq ($(feature_verbose),1)                   !! 160 ifeq ($(feature_display),1)
287   #                                            !! 161   $(info )
288   # Determine the features to omit from the di !! 162   $(info Auto-detecting system features:)
289   # logical OR of the detection result will be !! 163   $(foreach feat,$(FEATURE_DISPLAY),$(call feature_print_status,$(feat),))
290   #                                            << 
291   FEATURE_OMIT := $(foreach feat,$(FEATURE_DIS << 
292 endif                                          << 
293                                                   164 
294 feature_display_entries = $(eval $(feature_dis !! 165   ifeq ($(dwarf-post-unwind),1)
295 define feature_display_entries_code            !! 166     $(call feature_print_text,"DWARF post unwind library", $(dwarf-post-unwind-text))
296   ifeq ($(feature_display),1)                  << 
297     $$(info )                                  << 
298     $$(info Auto-detecting system features:)   << 
299     $(foreach feat,$(filter-out $(FEATURE_OMIT << 
300   endif                                           167   endif
301                                                   168 
302   ifeq ($(feature_verbose),1)                  !! 169   ifneq ($(feature_verbose),1)
303     $(eval TMP := $(filter-out $(FEATURE_DISPL !! 170     $(info )
304     $(foreach feat,$(TMP),$(call feature_print << 
305   endif                                           171   endif
306 endef                                          !! 172 endif
307                                                   173 
308 ifeq ($(FEATURE_DISPLAY_DEFERRED),)            !! 174 ifeq ($(feature_verbose),1)
309   $(call feature_display_entries)              !! 175   TMP := $(filter-out $(FEATURE_DISPLAY),$(FEATURE_TESTS))
                                                   >> 176   $(foreach feat,$(TMP),$(call feature_print_status,$(feat),))
310   $(info )                                        177   $(info )
311 endif                                             178 endif
                                                      

~ [ source navigation ] ~ [ diff markup ] ~ [ identifier search ] ~

kernel.org | git.kernel.org | LWN.net | Project Home | SVN repository | Mail admin

Linux® is a registered trademark of Linus Torvalds in the United States and other countries.
TOMOYO® is a registered trademark of NTT DATA CORPORATION.

sflogo.php