Blame view
scripts/Makefile.host
6.84 KB
1da177e4c Linux-2.6.12-rc2 |
1 2 3 4 5 |
# ========================================================================== # Building binaries on the host system # Binaries are used during the compilation of the kernel, for example # to preprocess a data file. # |
3156fd052 kbuild: fix some ... |
6 |
# Both C and C++ are supported, but preferred language is C for such utilities. |
1da177e4c Linux-2.6.12-rc2 |
7 |
# |
3156fd052 kbuild: fix some ... |
8 |
# Sample syntax (see Documentation/kbuild/makefiles.txt for reference) |
1da177e4c Linux-2.6.12-rc2 |
9 10 11 12 13 14 15 16 17 18 19 20 21 |
# hostprogs-y := bin2hex # Will compile bin2hex.c and create an executable named bin2hex # # hostprogs-y := lxdialog # lxdialog-objs := checklist.o lxdialog.o # Will compile lxdialog.c and checklist.c, and then link the executable # lxdialog, based on checklist.o and lxdialog.o # # hostprogs-y := qconf # qconf-cxxobjs := qconf.o # qconf-objs := menu.o # Will compile qconf as a C++ program, and menu as a C program. # They are linked as C++ code to the executable qconf |
244038743 Shared library su... |
22 23 24 25 26 |
# hostcc-option # Usage: cflags-y += $(call hostcc-option,-march=winchip-c6,-march=i586) hostcc-option = $(call try-run,\ $(HOSTCC) $(HOSTCFLAGS) $(HOST_EXTRACFLAGS) $(1) -c -x c /dev/null -o "$$TMP",$(1),$(2)) |
8f5cbd7e4 [PATCH] Add a mis... |
27 |
__hostprogs := $(sort $(hostprogs-y) $(hostprogs-m)) |
244038743 Shared library su... |
28 29 |
host-cshlib := $(sort $(hostlibs-y) $(hostlibs-m)) host-cxxshlib := $(sort $(hostcxxlibs-y) $(hostcxxlibs-m)) |
1da177e4c Linux-2.6.12-rc2 |
30 |
|
1da177e4c Linux-2.6.12-rc2 |
31 32 |
# C code # Executables compiled from a single .c file |
edb950c17 kbuild: fix a bug... |
33 34 |
host-csingle := $(foreach m,$(__hostprogs), \ $(if $($(m)-objs)$($(m)-cxxobjs),,$(m))) |
1da177e4c Linux-2.6.12-rc2 |
35 36 37 38 39 40 41 42 43 |
# C executables linked based on several .o files host-cmulti := $(foreach m,$(__hostprogs),\ $(if $($(m)-cxxobjs),,$(if $($(m)-objs),$(m)))) # Object (.o) files compiled from .c files host-cobjs := $(sort $(foreach m,$(__hostprogs),$($(m)-objs))) # C++ code |
d8d9efe22 kbuild: fix a typ... |
44 |
# C++ executables compiled from at least one .cc file |
1da177e4c Linux-2.6.12-rc2 |
45 46 47 48 49 |
# and zero or more .c files host-cxxmulti := $(foreach m,$(__hostprogs),$(if $($(m)-cxxobjs),$(m))) # C++ Object (.o) files compiled from .cc files host-cxxobjs := $(sort $(foreach m,$(host-cxxmulti),$($(m)-cxxobjs))) |
244038743 Shared library su... |
50 51 52 |
# Object (.o) files used by the shared libaries host-cshobjs := $(sort $(foreach m,$(host-cshlib),$($(m:.so=-objs)))) host-cxxshobjs := $(sort $(foreach m,$(host-cxxshlib),$($(m:.so=-objs)))) |
7b5b82038 kbuild: create ou... |
53 |
# output directory for programs/.o files |
1791ff717 kbuild: clean-up ... |
54 55 56 |
# hostprogs-y := tools/build may have been specified. # Retrieve also directory of .o files from prog-objs or prog-cxxobjs notation host-objdirs := $(dir $(__hostprogs) $(host-cobjs) $(host-cxxobjs)) |
7b5b82038 kbuild: create ou... |
57 58 |
host-objdirs := $(strip $(sort $(filter-out ./,$(host-objdirs)))) |
1da177e4c Linux-2.6.12-rc2 |
59 60 61 62 63 64 |
__hostprogs := $(addprefix $(obj)/,$(__hostprogs)) host-csingle := $(addprefix $(obj)/,$(host-csingle)) host-cmulti := $(addprefix $(obj)/,$(host-cmulti)) host-cobjs := $(addprefix $(obj)/,$(host-cobjs)) host-cxxmulti := $(addprefix $(obj)/,$(host-cxxmulti)) host-cxxobjs := $(addprefix $(obj)/,$(host-cxxobjs)) |
244038743 Shared library su... |
65 66 67 68 |
host-cshlib := $(addprefix $(obj)/,$(host-cshlib)) host-cxxshlib := $(addprefix $(obj)/,$(host-cxxshlib)) host-cshobjs := $(addprefix $(obj)/,$(host-cshobjs)) host-cxxshobjs := $(addprefix $(obj)/,$(host-cxxshobjs)) |
9870a93d3 kbuild: obj-dirs ... |
69 70 71 |
host-objdirs := $(addprefix $(obj)/,$(host-objdirs)) obj-dirs += $(host-objdirs) |
1da177e4c Linux-2.6.12-rc2 |
72 73 74 |
##### # Handle options to gcc. Support building with separate output directory |
5e8d780d7 kbuild: fix ia64 ... |
75 76 77 78 |
_hostc_flags = $(HOSTCFLAGS) $(HOST_EXTRACFLAGS) \ $(HOSTCFLAGS_$(basetarget).o) _hostcxx_flags = $(HOSTCXXFLAGS) $(HOST_EXTRACXXFLAGS) \ $(HOSTCXXFLAGS_$(basetarget).o) |
1da177e4c Linux-2.6.12-rc2 |
79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 |
ifeq ($(KBUILD_SRC),) __hostc_flags = $(_hostc_flags) __hostcxx_flags = $(_hostcxx_flags) else __hostc_flags = -I$(obj) $(call flags,_hostc_flags) __hostcxx_flags = -I$(obj) $(call flags,_hostcxx_flags) endif hostc_flags = -Wp,-MD,$(depfile) $(__hostc_flags) hostcxx_flags = -Wp,-MD,$(depfile) $(__hostcxx_flags) ##### # Compile programs on the host # Create executable from a single .c file # host-csingle -> Executable quiet_cmd_host-csingle = HOSTCC $@ |
e0af0d85f [PATCH] kbuild: o... |
97 98 |
cmd_host-csingle = $(HOSTCC) $(hostc_flags) -o $@ $< \ $(HOST_LOADLIBES) $(HOSTLOADLIBES_$(@F)) |
767e581d7 kbuild: enable us... |
99 |
$(host-csingle): $(obj)/%: $(src)/%.c FORCE |
1da177e4c Linux-2.6.12-rc2 |
100 101 102 103 104 105 106 107 |
$(call if_changed_dep,host-csingle) # Link an executable based on list of .o files, all plain c # host-cmulti -> executable quiet_cmd_host-cmulti = HOSTLD $@ cmd_host-cmulti = $(HOSTCC) $(HOSTLDFLAGS) -o $@ \ $(addprefix $(obj)/,$($(@F)-objs)) \ $(HOST_LOADLIBES) $(HOSTLOADLIBES_$(@F)) |
97e3226e6 kbuild: handle th... |
108 |
$(host-cmulti): FORCE |
1da177e4c Linux-2.6.12-rc2 |
109 |
$(call if_changed,host-cmulti) |
97e3226e6 kbuild: handle th... |
110 |
$(call multi_depend, $(host-cmulti), , -objs) |
1da177e4c Linux-2.6.12-rc2 |
111 112 113 114 115 |
# Create .o file from a single .c file # host-cobjs -> .o quiet_cmd_host-cobjs = HOSTCC $@ cmd_host-cobjs = $(HOSTCC) $(hostc_flags) -c -o $@ $< |
767e581d7 kbuild: enable us... |
116 |
$(host-cobjs): $(obj)/%.o: $(src)/%.c FORCE |
1da177e4c Linux-2.6.12-rc2 |
117 118 119 120 121 122 123 124 125 |
$(call if_changed_dep,host-cobjs) # Link an executable based on list of .o files, a mixture of .c and .cc # host-cxxmulti -> executable quiet_cmd_host-cxxmulti = HOSTLD $@ cmd_host-cxxmulti = $(HOSTCXX) $(HOSTLDFLAGS) -o $@ \ $(foreach o,objs cxxobjs,\ $(addprefix $(obj)/,$($(@F)-$(o)))) \ $(HOST_LOADLIBES) $(HOSTLOADLIBES_$(@F)) |
97e3226e6 kbuild: handle th... |
126 |
$(host-cxxmulti): FORCE |
1da177e4c Linux-2.6.12-rc2 |
127 |
$(call if_changed,host-cxxmulti) |
97e3226e6 kbuild: handle th... |
128 |
$(call multi_depend, $(host-cxxmulti), , -objs -cxxobjs) |
1da177e4c Linux-2.6.12-rc2 |
129 130 131 132 |
# Create .o file from a single .cc (C++) file quiet_cmd_host-cxxobjs = HOSTCXX $@ cmd_host-cxxobjs = $(HOSTCXX) $(hostcxx_flags) -c -o $@ $< |
767e581d7 kbuild: enable us... |
133 |
$(host-cxxobjs): $(obj)/%.o: $(src)/%.cc FORCE |
1da177e4c Linux-2.6.12-rc2 |
134 |
$(call if_changed_dep,host-cxxobjs) |
244038743 Shared library su... |
135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 |
# Compile .c file, create position independent .o file # host-cshobjs -> .o quiet_cmd_host-cshobjs = HOSTCC -fPIC $@ cmd_host-cshobjs = $(HOSTCC) $(hostc_flags) -fPIC -c -o $@ $< $(host-cshobjs): $(obj)/%.o: $(src)/%.c FORCE $(call if_changed_dep,host-cshobjs) # Compile .c file, create position independent .o file # Note that plugin capable gcc versions can be either C or C++ based # therefore plugin source files have to be compilable in both C and C++ mode. # This is why a C++ compiler is invoked on a .c file. # host-cxxshobjs -> .o quiet_cmd_host-cxxshobjs = HOSTCXX -fPIC $@ cmd_host-cxxshobjs = $(HOSTCXX) $(hostcxx_flags) -fPIC -c -o $@ $< $(host-cxxshobjs): $(obj)/%.o: $(src)/%.c FORCE $(call if_changed_dep,host-cxxshobjs) # Link a shared library, based on position independent .o files # *.o -> .so shared library (host-cshlib) quiet_cmd_host-cshlib = HOSTLLD -shared $@ cmd_host-cshlib = $(HOSTCC) $(HOSTLDFLAGS) -shared -o $@ \ $(addprefix $(obj)/,$($(@F:.so=-objs))) \ $(HOST_LOADLIBES) $(HOSTLOADLIBES_$(@F)) $(host-cshlib): FORCE $(call if_changed,host-cshlib) $(call multi_depend, $(host-cshlib), .so, -objs) # Link a shared library, based on position independent .o files # *.o -> .so shared library (host-cxxshlib) quiet_cmd_host-cxxshlib = HOSTLLD -shared $@ cmd_host-cxxshlib = $(HOSTCXX) $(HOSTLDFLAGS) -shared -o $@ \ $(addprefix $(obj)/,$($(@F:.so=-objs))) \ $(HOST_LOADLIBES) $(HOSTLOADLIBES_$(@F)) $(host-cxxshlib): FORCE $(call if_changed,host-cxxshlib) $(call multi_depend, $(host-cxxshlib), .so, -objs) |
1da177e4c Linux-2.6.12-rc2 |
171 |
targets += $(host-csingle) $(host-cmulti) $(host-cobjs)\ |
244038743 Shared library su... |
172 |
$(host-cxxmulti) $(host-cxxobjs) $(host-cshlib) $(host-cshobjs) $(host-cxxshlib) $(host-cxxshobjs) |