diff options
author | Vadim Bendebury <vbendeb@chromium.org> | 2020-02-24 17:20:57 -0800 |
---|---|---|
committer | Commit Bot <commit-bot@chromium.org> | 2020-03-31 23:24:37 +0000 |
commit | 804d65e5fd86057e78c0d0b5f6139172d20b8207 (patch) | |
tree | 186908de441fd55d8a056a226188e63187b327fd /Makefile.rules | |
parent | 3ab80b560a9b434fe9a3fa82c546009fca56cfd1 (diff) | |
download | chrome-ec-804d65e5fd86057e78c0d0b5f6139172d20b8207.tar.gz |
make: add preprocessor stage
For the upcoming introduction of transitioning Cr50 console
communications to packet mode, there is a need to be able to replace
all print function invocations in the code with calls to packet
sending function.
This replacement is easiest to make in C preprocessor outputs, as
there all macros are replaced with actual function invocations.
This patch adds a configuration option CONFIG_EXTRACT_PRINTF_STRINGS,
when enabled, building of the image object files starts happening in
three steps instead of one, instead of .c => .o transition, the steps
are .c => .E => .Ep => .o, where .E is the C preprocessor output, and
.Ep is result of post processing by ./util/util_precompile.py.
BUG=b:149964350
TEST=image layout does not change if CONFIG_EXTRACT_PRINTF_STRINGS is
not defined. With the rest of the patches applied defining the
above config option allows to build a Cr50 image supporting
packet console communications mode.
Signed-off-by: Vadim Bendebury <vbendeb@chromium.org>
Change-Id: I20b8ba7c5d13cb54ac6adbdbce856d92023ce997
Reviewed-on: https://chromium-review.googlesource.com/c/chromiumos/platform/ec/+/2113122
Reviewed-by: Randall Spangler <rspangler@chromium.org>
Diffstat (limited to 'Makefile.rules')
-rw-r--r-- | Makefile.rules | 14 |
1 files changed, 13 insertions, 1 deletions
diff --git a/Makefile.rules b/Makefile.rules index 1f9b05b1af..ecbccceb80 100644 --- a/Makefile.rules +++ b/Makefile.rules @@ -83,6 +83,9 @@ cmd_run_fuzz = build/host/$*/$*.exe -seed=1 -runs=1 $(silent) \ cmd_exe = $(CC) $(ro-objs) $(HOST_TEST_LDFLAGS) $(LDFLAGS_EXTRA) -o $@ cmd_c_to_o = $(CC) $(C_WARN) $(CFLAGS) -MMD -MP -MF $@.d -c $< \ -MT $(@D)/$(@F) -o $(@D)/$(@F) +cmd_c_to_e = $(CC) $(C_WARN) $(CFLAGS) -MMD -MP -MF $@.d -E $< \ + -MT $(@D)/$(@F) -o $(@D)/$(@F) +cmd_ep_to_o = $(CC) $(C_WARN) $(CFLAGS) -x c -c $< -o $(@D)/$(@F) cmd_cxx_to_o = $(CXX) -std=c++11 $(CFLAGS) $(CXXFLAGS) -MMD -MP -MF $@.d -c $< \ -MT $(@D)/$(@F) -o $(@D)/$(@F) cmd_c_to_build = $(BUILDCC) $(BUILD_CFLAGS) \ @@ -482,9 +485,19 @@ $(out)/RO/%.o.cmd:%.c $(file > $@,$(subst .o.cmd,.o,$(cmd_c_to_o))) $(out)/RO/%.o:%.c $(call quiet,c_to_o,CC ) +ifeq ($(CONFIG_EXTRACT_PRINTF_STRINGS),) $(out)/RW/%.o:%.c $(call quiet,c_to_o,CC ) +$(rw-objs): | $(out)/ec_version.h +else +$(out)/RW/%.o:$(out)/RW/%.Ep + $(call quiet,ep_to_o,EO ) +$(out)/RW/%.E:%.c + $(call quiet,c_to_e,CE ) + +$(rw-es): | $(out)/ec_version.h +endif $(out)/RO/%.o:%.cc $(call quiet,cxx_to_o,CXX ) $(out)/RW/%.o:%.cc @@ -537,7 +550,6 @@ endif # that truly depend on ec_version.h will have that information encoded in their # .d file. $(ro-objs): | $(out)/ec_version.h -$(rw-objs): | $(out)/ec_version.h $(sharedlib-objs): | $(out)/ec_version.h $(out)/ec_version.h: |