cachepc-linux

Fork of AMDESE/linux with modifications for CachePC side-channel attack
git clone https://git.sinitax.com/sinitax/cachepc-linux
Log | Files | Refs | README | LICENSE | sfeed.txt

Makefile.host (4743B)


      1# SPDX-License-Identifier: GPL-2.0
      2
      3# LEX
      4# ---------------------------------------------------------------------------
      5quiet_cmd_flex = LEX     $@
      6      cmd_flex = $(LEX) -o$@ -L $<
      7
      8$(obj)/%.lex.c: $(src)/%.l FORCE
      9	$(call if_changed,flex)
     10
     11# YACC
     12# ---------------------------------------------------------------------------
     13quiet_cmd_bison = YACC    $(basename $@).[ch]
     14      cmd_bison = $(YACC) -o $(basename $@).c --defines=$(basename $@).h -t -l $<
     15
     16$(obj)/%.tab.c $(obj)/%.tab.h: $(src)/%.y FORCE
     17	$(call if_changed,bison)
     18
     19# ==========================================================================
     20# Building binaries on the host system
     21# Binaries are used during the compilation of the kernel, for example
     22# to preprocess a data file.
     23#
     24# Both C and C++ are supported, but preferred language is C for such utilities.
     25#
     26# Sample syntax (see Documentation/kbuild/makefiles.rst for reference)
     27# hostprogs := bin2hex
     28# Will compile bin2hex.c and create an executable named bin2hex
     29#
     30# hostprogs     := lxdialog
     31# lxdialog-objs := checklist.o lxdialog.o
     32# Will compile lxdialog.c and checklist.c, and then link the executable
     33# lxdialog, based on checklist.o and lxdialog.o
     34#
     35# hostprogs       := qconf
     36# qconf-cxxobjs   := qconf.o
     37# qconf-objs      := menu.o
     38# Will compile qconf as a C++ program, and menu as a C program.
     39# They are linked as C++ code to the executable qconf
     40
     41# C code
     42# Executables compiled from a single .c file
     43host-csingle	:= $(foreach m,$(hostprogs), \
     44			$(if $($(m)-objs)$($(m)-cxxobjs),,$(m)))
     45
     46# C executables linked based on several .o files
     47host-cmulti	:= $(foreach m,$(hostprogs),\
     48		   $(if $($(m)-cxxobjs),,$(if $($(m)-objs),$(m))))
     49
     50# Object (.o) files compiled from .c files
     51host-cobjs	:= $(sort $(foreach m,$(hostprogs),$($(m)-objs)))
     52
     53# C++ code
     54# C++ executables compiled from at least one .cc file
     55# and zero or more .c files
     56host-cxxmulti	:= $(foreach m,$(hostprogs),$(if $($(m)-cxxobjs),$(m)))
     57
     58# C++ Object (.o) files compiled from .cc files
     59host-cxxobjs	:= $(sort $(foreach m,$(host-cxxmulti),$($(m)-cxxobjs)))
     60
     61host-csingle	:= $(addprefix $(obj)/,$(host-csingle))
     62host-cmulti	:= $(addprefix $(obj)/,$(host-cmulti))
     63host-cobjs	:= $(addprefix $(obj)/,$(host-cobjs))
     64host-cxxmulti	:= $(addprefix $(obj)/,$(host-cxxmulti))
     65host-cxxobjs	:= $(addprefix $(obj)/,$(host-cxxobjs))
     66
     67#####
     68# Handle options to gcc. Support building with separate output directory
     69
     70_hostc_flags   = $(KBUILD_HOSTCFLAGS)   $(HOST_EXTRACFLAGS)   \
     71                 $(HOSTCFLAGS_$(target-stem).o)
     72_hostcxx_flags = $(KBUILD_HOSTCXXFLAGS) $(HOST_EXTRACXXFLAGS) \
     73                 $(HOSTCXXFLAGS_$(target-stem).o)
     74
     75# $(objtree)/$(obj) for including generated headers from checkin source files
     76ifeq ($(KBUILD_EXTMOD),)
     77ifdef building_out_of_srctree
     78_hostc_flags   += -I $(objtree)/$(obj)
     79_hostcxx_flags += -I $(objtree)/$(obj)
     80endif
     81endif
     82
     83hostc_flags    = -Wp,-MMD,$(depfile) $(_hostc_flags)
     84hostcxx_flags  = -Wp,-MMD,$(depfile) $(_hostcxx_flags)
     85
     86#####
     87# Compile programs on the host
     88
     89# Create executable from a single .c file
     90# host-csingle -> Executable
     91quiet_cmd_host-csingle 	= HOSTCC  $@
     92      cmd_host-csingle	= $(HOSTCC) $(hostc_flags) $(KBUILD_HOSTLDFLAGS) -o $@ $< \
     93		$(KBUILD_HOSTLDLIBS) $(HOSTLDLIBS_$(target-stem))
     94$(host-csingle): $(obj)/%: $(src)/%.c FORCE
     95	$(call if_changed_dep,host-csingle)
     96
     97# Link an executable based on list of .o files, all plain c
     98# host-cmulti -> executable
     99quiet_cmd_host-cmulti	= HOSTLD  $@
    100      cmd_host-cmulti	= $(HOSTCC) $(KBUILD_HOSTLDFLAGS) -o $@ \
    101			  $(addprefix $(obj)/, $($(target-stem)-objs)) \
    102			  $(KBUILD_HOSTLDLIBS) $(HOSTLDLIBS_$(target-stem))
    103$(host-cmulti): FORCE
    104	$(call if_changed,host-cmulti)
    105$(call multi_depend, $(host-cmulti), , -objs)
    106
    107# Create .o file from a single .c file
    108# host-cobjs -> .o
    109quiet_cmd_host-cobjs	= HOSTCC  $@
    110      cmd_host-cobjs	= $(HOSTCC) $(hostc_flags) -c -o $@ $<
    111$(host-cobjs): $(obj)/%.o: $(src)/%.c FORCE
    112	$(call if_changed_dep,host-cobjs)
    113
    114# Link an executable based on list of .o files, a mixture of .c and .cc
    115# host-cxxmulti -> executable
    116quiet_cmd_host-cxxmulti	= HOSTLD  $@
    117      cmd_host-cxxmulti	= $(HOSTCXX) $(KBUILD_HOSTLDFLAGS) -o $@ \
    118			  $(foreach o,objs cxxobjs,\
    119			  $(addprefix $(obj)/, $($(target-stem)-$(o)))) \
    120			  $(KBUILD_HOSTLDLIBS) $(HOSTLDLIBS_$(target-stem))
    121$(host-cxxmulti): FORCE
    122	$(call if_changed,host-cxxmulti)
    123$(call multi_depend, $(host-cxxmulti), , -objs -cxxobjs)
    124
    125# Create .o file from a single .cc (C++) file
    126quiet_cmd_host-cxxobjs	= HOSTCXX $@
    127      cmd_host-cxxobjs	= $(HOSTCXX) $(hostcxx_flags) -c -o $@ $<
    128$(host-cxxobjs): $(obj)/%.o: $(src)/%.cc FORCE
    129	$(call if_changed_dep,host-cxxobjs)
    130
    131targets += $(host-csingle) $(host-cmulti) $(host-cobjs) \
    132	   $(host-cxxmulti) $(host-cxxobjs)