17f3a59dbSMasahiro Yamada# SPDX-License-Identifier: GPL-2.0-only 27f3a59dbSMasahiro Yamada# 37f3a59dbSMasahiro Yamada# Build userspace programs for the target system 47f3a59dbSMasahiro Yamada# 57f3a59dbSMasahiro Yamada 67f3a59dbSMasahiro Yamada# Executables compiled from a single .c file 77f3a59dbSMasahiro Yamadauser-csingle := $(foreach m, $(userprogs), $(if $($(m)-objs),,$(m))) 87f3a59dbSMasahiro Yamada 97f3a59dbSMasahiro Yamada# Executables linked based on several .o files 107f3a59dbSMasahiro Yamadauser-cmulti := $(foreach m, $(userprogs), $(if $($(m)-objs),$(m))) 117f3a59dbSMasahiro Yamada 127f3a59dbSMasahiro Yamada# Objects compiled from .c files 137f3a59dbSMasahiro Yamadauser-cobjs := $(sort $(foreach m, $(userprogs), $($(m)-objs))) 147f3a59dbSMasahiro Yamada 157f3a59dbSMasahiro Yamadauser-csingle := $(addprefix $(obj)/, $(user-csingle)) 167f3a59dbSMasahiro Yamadauser-cmulti := $(addprefix $(obj)/, $(user-cmulti)) 177f3a59dbSMasahiro Yamadauser-cobjs := $(addprefix $(obj)/, $(user-cobjs)) 187f3a59dbSMasahiro Yamada 197f3a59dbSMasahiro Yamadauser_ccflags = -Wp,-MMD,$(depfile) $(KBUILD_USERCFLAGS) $(userccflags) \ 207f3a59dbSMasahiro Yamada $($(target-stem)-userccflags) 217f3a59dbSMasahiro Yamadauser_ldflags = $(KBUILD_USERLDFLAGS) $(userldflags) $($(target-stem)-userldflags) 22*5f56cb03SMasahiro Yamadauser_ldlibs = $(userldlibs) $($(target-stem)-userldlibs) 237f3a59dbSMasahiro Yamada 247f3a59dbSMasahiro Yamada# Create an executable from a single .c file 257f3a59dbSMasahiro Yamadaquiet_cmd_user_cc_c = CC [U] $@ 267f3a59dbSMasahiro Yamada cmd_user_cc_c = $(CC) $(user_ccflags) $(user_ldflags) -o $@ $< \ 27*5f56cb03SMasahiro Yamada $(user_ldlibs) 287f3a59dbSMasahiro Yamada$(user-csingle): $(obj)/%: $(src)/%.c FORCE 297f3a59dbSMasahiro Yamada $(call if_changed_dep,user_cc_c) 307f3a59dbSMasahiro Yamada 317f3a59dbSMasahiro Yamada# Link an executable based on list of .o files 327f3a59dbSMasahiro Yamadaquiet_cmd_user_ld = LD [U] $@ 337f3a59dbSMasahiro Yamada cmd_user_ld = $(CC) $(user_ldflags) -o $@ \ 34*5f56cb03SMasahiro Yamada $(addprefix $(obj)/, $($(target-stem)-objs)) $(user_ldlibs) 357f3a59dbSMasahiro Yamada$(user-cmulti): FORCE 367f3a59dbSMasahiro Yamada $(call if_changed,user_ld) 377f3a59dbSMasahiro Yamada$(call multi_depend, $(user-cmulti), , -objs) 387f3a59dbSMasahiro Yamada 397f3a59dbSMasahiro Yamada# Create .o file from a .c file 407f3a59dbSMasahiro Yamadaquiet_cmd_user_cc_o_c = CC [U] $@ 417f3a59dbSMasahiro Yamada cmd_user_cc_o_c = $(CC) $(user_ccflags) -c -o $@ $< 427f3a59dbSMasahiro Yamada$(user-cobjs): $(obj)/%.o: $(src)/%.c FORCE 437f3a59dbSMasahiro Yamada $(call if_changed_dep,user_cc_o_c) 447f3a59dbSMasahiro Yamada 457f3a59dbSMasahiro Yamadatargets += $(user-csingle) $(user-cmulti) $(user-cobjs) 46