diff --git a/Makefile.rules b/Makefile.rules index 6360edcf3b..7c0af672d0 100644 --- a/Makefile.rules +++ b/Makefile.rules @@ -10,6 +10,8 @@ objs := $(all-y) deps := $(objs:%.o=%.o.d) build-utils := $(foreach u,$(build-util-bin),$(out)/util/$(u)) host-utils := $(foreach u,$(host-util-bin),$(out)/util/$(u)) +build-srcs := $(foreach u,$(build-util-bin),$(sort $($(u)-objs:%.o=util/%.c) util/$(u).c)) +host-srcs := $(foreach u,$(host-util-bin),$(sort $($(u)-objs:%.o=util/%.c) util/$(u).c)) # Create output directories if necessary _dir_create := $(foreach d,$(dirs),$(shell [ -d $(out)/$(d) ] || \ @@ -37,8 +39,10 @@ cmd_elf = $(LD) $(LDFLAGS) $(objs) -o $@ -T $< -Map $(out)/$*.map cmd_exe = $(CC) $(HOST_TEST_LDFLAGS) $(objs) -o $@ cmd_c_to_o = $(CC) $(CFLAGS) -MMD -MF $@.d -c $< -o $@ cmd_c_to_build = $(BUILDCC) $(BUILD_CFLAGS) $(BUILD_LDFLAGS) \ - -MMD -MF $@.d $< -o $@ -cmd_c_to_host = $(HOSTCC) $(HOST_CFLAGS) -MMD -MF $@.d $(filter %.c, $^) -o $@ + $(sort $(foreach c,$($(*F)-objs),util/$(c:%.o=%.c)) $*.c) \ + -MMD -MF $@.d -o $@ +cmd_c_to_host = $(HOSTCC) $(HOST_CFLAGS) -MMD -MF $@.d -o $@ \ + $(sort $(foreach c,$($(*F)-objs),util/$(c:%.o=%.c)) $*.c) cmd_host_test = ./util/run_host_test $* $(silent) cmd_version = ./util/getversion.sh > $@ cmd_mv_from_tmp = mv $(out)/$*.bin.tmp $(out)/$*.bin @@ -153,11 +157,10 @@ $(out)/common/version.o: $(out)/ec_version.h $(out)/ec_version.h: $(filter-out $(out)/common/version.o,$(objs)) $(call quiet,version,VERSION) -$(build-utils): $(out)/%:%.c +$(build-utils): $(out)/%:$(build-srcs) $(call quiet,c_to_build,BUILDCC) -$(host-utils): $(out)/%:%.c $(foreach u,$(host-util-common),util/$(u).c) \ - $(foreach u,$(util-lock-objs),util/lock/$(u).c) +$(host-utils): $(out)/%:$(host-srcs) $(call quiet,c_to_host,HOSTCC ) $(out)/util/burn_my_ec: $(out)/$(PROJECT).bin diff --git a/util/build.mk b/util/build.mk index e9922b4f24..29beb3ef75 100644 --- a/util/build.mk +++ b/util/build.mk @@ -7,10 +7,15 @@ # host-util-bin=ectool lbplay burn_my_ec -host-util-common=ectool_keyscan comm-host comm-dev misc_util ec_flash + +comm-objs=$(util-lock-objs:%=lock/%) comm-host.o comm-dev.o ifeq ($(CONFIG_LPC),y) -host-util-common+=comm-lpc +comm-objs+=comm-lpc.o else -host-util-common+=comm-i2c +comm-objs+=comm-i2c.o endif +ectool-objs=ectool.o ectool_keyscan.o misc_util.o ec_flash.o $(comm-objs) +lbplay-objs=lbplay.o $(comm-objs) +burn_my_ec-objs=ec_flash.o $(comm-objs) misc_util.o + build-util-bin=ec_uartd stm32mon iteflash diff --git a/util/lock/build.mk b/util/lock/build.mk index 1b74bc4cea..91987d4d43 100644 --- a/util/lock/build.mk +++ b/util/lock/build.mk @@ -6,4 +6,4 @@ # Lock library # -util-lock-objs=csem ipc_lock gec_lock +util-lock-objs=csem.o ipc_lock.o gec_lock.o