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

TOMOYO Linux Cross Reference
Linux/tools/testing/selftests/lib.mk

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/testing/selftests/lib.mk (Version linux-6.12-rc7) and /tools/testing/selftests/lib.mk (Version linux-2.6.0)


  1 # This mimics the top-level Makefile. We do it    
  2 # Makefile can operate with or without the kbu    
  3 ifneq ($(LLVM),)                                  
  4 ifneq ($(filter %/,$(LLVM)),)                     
  5 LLVM_PREFIX := $(LLVM)                            
  6 else ifneq ($(filter -%,$(LLVM)),)                
  7 LLVM_SUFFIX := $(LLVM)                            
  8 endif                                             
  9                                                   
 10 CLANG := $(LLVM_PREFIX)clang$(LLVM_SUFFIX)        
 11                                                   
 12 CLANG_TARGET_FLAGS_arm          := arm-linux-g    
 13 CLANG_TARGET_FLAGS_arm64        := aarch64-lin    
 14 CLANG_TARGET_FLAGS_hexagon      := hexagon-lin    
 15 CLANG_TARGET_FLAGS_i386         := i386-linux-    
 16 CLANG_TARGET_FLAGS_m68k         := m68k-linux-    
 17 CLANG_TARGET_FLAGS_mips         := mipsel-linu    
 18 CLANG_TARGET_FLAGS_powerpc      := powerpc64le    
 19 CLANG_TARGET_FLAGS_riscv        := riscv64-lin    
 20 CLANG_TARGET_FLAGS_s390         := s390x-linux    
 21 CLANG_TARGET_FLAGS_x86          := x86_64-linu    
 22 CLANG_TARGET_FLAGS_x86_64       := x86_64-linu    
 23                                                   
 24 # Default to host architecture if ARCH is not     
 25 ifeq ($(ARCH),)                                   
 26 CLANG_TARGET_FLAGS := $(shell $(CLANG) -print-    
 27 else                                              
 28 CLANG_TARGET_FLAGS := $(CLANG_TARGET_FLAGS_$(A    
 29 endif                                             
 30                                                   
 31 ifeq ($(CROSS_COMPILE),)                          
 32 ifeq ($(CLANG_TARGET_FLAGS),)                     
 33 $(error Specify CROSS_COMPILE or add '--target    
 34 else                                              
 35 CLANG_FLAGS     += --target=$(CLANG_TARGET_FLA    
 36 endif # CLANG_TARGET_FLAGS                        
 37 else                                              
 38 CLANG_FLAGS     += --target=$(notdir $(CROSS_C    
 39 endif # CROSS_COMPILE                             
 40                                                   
 41 # gcc defaults to silence (off) for the follow    
 42 # to the opposite. The warnings are not useful    
 43 # why they have remained disabled in gcc for t    
 44 # only due to including kernel data structures    
 45 # warnings from clang. Therefore, disable the     
 46 CFLAGS += -Wno-address-of-packed-member           
 47 CFLAGS += -Wno-gnu-variable-sized-type-not-at-    
 48                                                   
 49 CC := $(CLANG) $(CLANG_FLAGS) -fintegrated-as     
 50 else                                              
 51 CC := $(CROSS_COMPILE)gcc                         
 52 endif # LLVM                                      
 53                                                   
 54 ifeq (0,$(MAKELEVEL))                             
 55     ifeq ($(OUTPUT),)                             
 56         OUTPUT := $(shell pwd)                    
 57         DEFAULT_INSTALL_HDR_PATH := 1             
 58     endif                                         
 59 endif                                             
 60 selfdir = $(realpath $(dir $(filter %/lib.mk,$    
 61 top_srcdir = $(selfdir)/../../..                  
 62                                                   
 63 # msg: emit succinct information message descr    
 64 # $1 - generic step name (e.g., CC, LINK, etc)    
 65 # $2 - optional "flavor" specifier; if provide    
 66 # $3 - target (assumed to be file); only file     
 67 # $4 - optional extra arg, emitted as-is, if p    
 68 ifeq ($(V),1)                                     
 69 Q =                                               
 70 msg =                                             
 71 else                                              
 72 Q = @                                             
 73 msg = @printf '  %-8s%s %s%s\n' "$(1)" "$(if $    
 74 MAKEFLAGS += --no-print-directory                 
 75 endif                                             
 76                                                   
 77 ifeq ($(KHDR_INCLUDES),)                          
 78 KHDR_INCLUDES := -isystem $(top_srcdir)/usr/in    
 79 endif                                             
 80                                                   
 81 # In order to use newer items that haven't yet    
 82 # header files, add $(TOOLS_INCLUDES) to the c    
 83 # each selftest.                                  
 84 # You may need to add files to that location,     
 85 # order to do that, run "make headers" from $(    
 86 # header file that you want from $(top_srcdir)    
 87 # subdir in $(TOOLS_INCLUDE).                     
 88 TOOLS_INCLUDES := -isystem $(top_srcdir)/tools    
 89                                                   
 90 # The following are built by lib.mk common com    
 91 # TEST_CUSTOM_PROGS should be used by tests th    
 92 # custom build rule and prevent common build r    
 93 # TEST_PROGS are for test shell scripts.          
 94 # TEST_CUSTOM_PROGS and TEST_PROGS will be run    
 95 # and install targets. Common clean doesn't to    
 96 TEST_GEN_PROGS := $(patsubst %,$(OUTPUT)/%,$(T    
 97 TEST_GEN_PROGS_EXTENDED := $(patsubst %,$(OUTP    
 98 TEST_GEN_FILES := $(patsubst %,$(OUTPUT)/%,$(T    
 99                                                   
100 all: $(TEST_GEN_PROGS) $(TEST_GEN_PROGS_EXTEND    
101         $(if $(TEST_GEN_MODS_DIR),gen_mods_dir    
102                                                   
103 define RUN_TESTS                                  
104         BASE_DIR="$(selfdir)";                    
105         . $(selfdir)/kselftest/runner.sh;         
106         if [ "X$(summary)" != "X" ]; then         
107                 per_test_logging=1;               
108         fi;                                       
109         run_many $(1)                             
110 endef                                             
111                                                   
112 define INSTALL_INCLUDES                           
113         $(if $(TEST_INCLUDES), \                  
114                 relative_files=""; \              
115                 for entry in $(TEST_INCLUDES);    
116                         entry_dir=$$(readlink     
117                         entry_name=$$(basename    
118                         relative_dir=$${entry_    
119                         if [ "$$relative_dir"     
120                                 echo "Error: T    
121                                 exit 1; \         
122                         fi; \                     
123                         relative_files="$$rela    
124                 done; \                           
125                 cd $(SRC_PATH) && rsync -aR $$    
126         )                                         
127 endef                                             
128                                                   
129 run_tests: all                                    
130 ifdef building_out_of_srctree                     
131         @if [ "X$(TEST_PROGS)$(TEST_PROGS_EXTE    
132                 rsync -aq --copy-unsafe-links     
133         fi                                        
134         @$(INSTALL_INCLUDES)                      
135         @if [ "X$(TEST_PROGS)" != "X" ]; then     
136                 $(call RUN_TESTS, $(TEST_GEN_P    
137                                   $(addprefix     
138         else \                                    
139                 $(call RUN_TESTS, $(TEST_GEN_P    
140         fi                                        
141 else                                              
142         @$(call RUN_TESTS, $(TEST_GEN_PROGS) $    
143 endif                                             
144                                                   
145 gen_mods_dir:                                     
146         $(Q)$(MAKE) -C $(TEST_GEN_MODS_DIR)       
147                                                   
148 clean_mods_dir:                                   
149         $(Q)$(MAKE) -C $(TEST_GEN_MODS_DIR) cl    
150                                                   
151 define INSTALL_SINGLE_RULE                        
152         $(if $(INSTALL_LIST),@mkdir -p $(INSTA    
153         $(if $(INSTALL_LIST),rsync -a --copy-u    
154 endef                                             
155                                                   
156 define INSTALL_MODS_RULE                          
157         $(if $(INSTALL_LIST),@mkdir -p $(INSTA    
158         $(if $(INSTALL_LIST),rsync -a --copy-u    
159 endef                                             
160                                                   
161 define INSTALL_RULE                               
162         $(eval INSTALL_LIST = $(TEST_PROGS)) $    
163         $(eval INSTALL_LIST = $(TEST_PROGS_EXT    
164         $(eval INSTALL_LIST = $(TEST_FILES)) $    
165         $(eval INSTALL_LIST = $(TEST_GEN_PROGS    
166         $(eval INSTALL_LIST = $(TEST_CUSTOM_PR    
167         $(eval INSTALL_LIST = $(TEST_GEN_PROGS    
168         $(eval INSTALL_LIST = $(TEST_GEN_FILES    
169         $(eval INSTALL_LIST = $(notdir $(TEST_    
170         $(eval INSTALL_LIST = $(wildcard confi    
171 endef                                             
172                                                   
173 install: all                                      
174 ifdef INSTALL_PATH                                
175         $(INSTALL_RULE)                           
176         $(INSTALL_INCLUDES)                       
177 else                                              
178         $(error Error: set INSTALL_PATH to use    
179 endif                                             
180                                                   
181 emit_tests:                                       
182         for TEST in $(TEST_GEN_PROGS) $(TEST_C    
183                 BASENAME_TEST=`basename $$TEST    
184                 echo "$(COLLECTION):$$BASENAME    
185         done                                      
186                                                   
187 # define if isn't already. It is undefined in     
188 ifeq ($(RM),)                                     
189 RM := rm -f                                       
190 endif                                             
191                                                   
192 define CLEAN                                      
193         $(RM) -r $(TEST_GEN_PROGS) $(TEST_GEN_    
194 endef                                             
195                                                   
196 clean: $(if $(TEST_GEN_MODS_DIR),clean_mods_di    
197         $(CLEAN)                                  
198                                                   
199 # Build with _GNU_SOURCE by default               
200 CFLAGS += -D_GNU_SOURCE=                          
201                                                   
202 # Enables to extend CFLAGS and LDFLAGS from co    
203 # make USERCFLAGS=-Werror USERLDFLAGS=-static     
204 CFLAGS += $(USERCFLAGS)                           
205 LDFLAGS += $(USERLDFLAGS)                         
206                                                   
207 # When make O= with kselftest target from main    
208 # the following aren't defined.                   
209 #                                                 
210 ifdef building_out_of_srctree                     
211 LINK.c = $(CC) $(CFLAGS) $(CPPFLAGS) $(LDFLAGS    
212 COMPILE.S = $(CC) $(ASFLAGS) $(CPPFLAGS) $(TAR    
213 LINK.S = $(CC) $(ASFLAGS) $(CPPFLAGS) $(LDFLAG    
214 endif                                             
215                                                   
216 # Selftest makefiles can override those target    
217 # OVERRIDE_TARGETS = 1.                           
218 ifeq ($(OVERRIDE_TARGETS),)                       
219 LOCAL_HDRS += $(selfdir)/kselftest_harness.h $    
220 $(OUTPUT)/%:%.c $(LOCAL_HDRS)                     
221         $(call msg,CC,,$@)                        
222         $(Q)$(LINK.c) $(filter-out $(LOCAL_HDR    
223                                                   
224 $(OUTPUT)/%.o:%.S                                 
225         $(COMPILE.S) $^ -o $@                     
226                                                   
227 $(OUTPUT)/%:%.S                                   
228         $(LINK.S) $^ $(LDLIBS) -o $@              
229 endif                                             
230                                                   
231 .PHONY: run_tests all clean install emit_tests    
                                                      

~ [ 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