linux/scripts/Makefile.userprogs
<<
>>
Prefs
   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
   7user-csingle    := $(foreach m, $(userprogs), $(if $($(m)-objs),,$(m)))
   8
   9# Executables linked based on several .o files
  10user-cmulti     := $(foreach m, $(userprogs), $(if $($(m)-objs),$(m)))
  11
  12# Objects compiled from .c files
  13user-cobjs      := $(sort $(foreach m, $(userprogs), $($(m)-objs)))
  14
  15user-csingle    := $(addprefix $(obj)/, $(user-csingle))
  16user-cmulti     := $(addprefix $(obj)/, $(user-cmulti))
  17user-cobjs      := $(addprefix $(obj)/, $(user-cobjs))
  18
  19user_ccflags    = -Wp,-MMD,$(depfile) $(KBUILD_USERCFLAGS) $(userccflags) \
  20                        $($(target-stem)-userccflags)
  21user_ldflags    = $(KBUILD_USERLDFLAGS) $(userldflags) $($(target-stem)-userldflags)
  22
  23# Create an executable from a single .c file
  24quiet_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
  31quiet_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
  40quiet_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
  45targets += $(user-csingle) $(user-cmulti) $(user-cobjs)
  46