Commit | Line | Data |
---|---|---|
7f3a59db MY |
1 | # SPDX-License-Identifier: GPL-2.0-only |
2 | # | |
3 | # Build userspace programs for the target system | |
4 | # | |
5 | ||
6 | # Executables compiled from a single .c file | |
7 | user-csingle := $(foreach m, $(userprogs), $(if $($(m)-objs),,$(m))) | |
8 | ||
9 | # Executables linked based on several .o files | |
10 | user-cmulti := $(foreach m, $(userprogs), $(if $($(m)-objs),$(m))) | |
11 | ||
12 | # Objects compiled from .c files | |
13 | user-cobjs := $(sort $(foreach m, $(userprogs), $($(m)-objs))) | |
14 | ||
15 | user-csingle := $(addprefix $(obj)/, $(user-csingle)) | |
16 | user-cmulti := $(addprefix $(obj)/, $(user-cmulti)) | |
17 | user-cobjs := $(addprefix $(obj)/, $(user-cobjs)) | |
18 | ||
19 | user_ccflags = -Wp,-MMD,$(depfile) $(KBUILD_USERCFLAGS) $(userccflags) \ | |
20 | $($(target-stem)-userccflags) | |
21 | user_ldflags = $(KBUILD_USERLDFLAGS) $(userldflags) $($(target-stem)-userldflags) | |
22 | ||
23 | # Create an executable from a single .c file | |
24 | quiet_cmd_user_cc_c = CC [U] $@ | |
25 | cmd_user_cc_c = $(CC) $(user_ccflags) $(user_ldflags) -o $@ $< \ | |
26 | $($(target-stem)-userldlibs) | |
27 | $(user-csingle): $(obj)/%: $(src)/%.c FORCE | |
28 | $(call if_changed_dep,user_cc_c) | |
29 | ||
30 | # Link an executable based on list of .o files | |
31 | quiet_cmd_user_ld = LD [U] $@ | |
32 | cmd_user_ld = $(CC) $(user_ldflags) -o $@ \ | |
33 | $(addprefix $(obj)/, $($(target-stem)-objs)) \ | |
34 | $($(target-stem)-userldlibs) | |
35 | $(user-cmulti): FORCE | |
36 | $(call if_changed,user_ld) | |
37 | $(call multi_depend, $(user-cmulti), , -objs) | |
38 | ||
39 | # Create .o file from a .c file | |
40 | quiet_cmd_user_cc_o_c = CC [U] $@ | |
41 | cmd_user_cc_o_c = $(CC) $(user_ccflags) -c -o $@ $< | |
42 | $(user-cobjs): $(obj)/%.o: $(src)/%.c FORCE | |
43 | $(call if_changed_dep,user_cc_o_c) | |
44 | ||
45 | targets += $(user-csingle) $(user-cmulti) $(user-cobjs) |