xref: /linux/scripts/Makefile.userprogs (revision 5f56cb030e4bcf14be2233332d5cd83fff62a376)
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