Commit 6f58ca5a authored by Dmitry Safonov's avatar Dmitry Safonov Committed by Andrei Vagin

Makefile: add .FORCE target

Sorry for introducing that, but we need to force-rebuild implicit
rules on the level of main Makefile. All the sub-makefiles should
decide if the force-rebuilding target really needs a rebuild,
because they know it's dependencies.

Pattern-specific rules are implicit, so something like:
.PHONY: compel/% criu/% #...
will not work.
.FORCE target seems the simplest way to solve this
"going to submake on rebuild" problem.
But maybe there is more elegant proposal?

FWIW, before this patch:
    [criu]$ make compel/compel
    make[1]: Entering directory '~/tools/criu'
      HOSTDEP  compel/handle-elf-32.d
    ...
      HOSTLINK compel/compel
    make[1]: Leaving directory '~/tools/criu'
    [criu]$ touch compel/main.c
    [criu]$ make compel/compel
    make: 'compel/compel' is up to date.
    [criu]$ touch compel/Makefile
    [criu]$ make compel/compel
    make: 'compel/compel' is up to date.
After the patch:
    [criu]$ touch compel/main.c
    [criu]$ make compel/compel
    make[1]: Entering directory '~/tools/criu'
      HOSTDEP  compel/main.d
      HOSTCC   compel/main.o
      HOSTLINK compel/compel
    make[1]: Leaving directory '~/tools/criu'
    [criu]$ touch compel/Makefile
    [criu]$ make compel/compel
    make[1]: Entering directory '~/tools/criu'
      HOSTDEP  compel/handle-elf-32.d
    ...
      HOSTLINK compel/compel
    make[1]: Leaving directory '~/tools/criu'

Cc: Cyrill Gorcunov <gorcunov@openvz.org>
Signed-off-by: 's avatarDmitry Safonov <dsafonov@virtuozzo.com>
Acked-by: 's avatarCyrill Gorcunov <gorcunov@openvz.org>
Signed-off-by: 's avatarPavel Emelyanov <xemul@virtuozzo.com>
Signed-off-by: 's avatarAndrei Vagin <avagin@virtuozzo.com>
parent 80a5f519
...@@ -202,10 +202,10 @@ $(eval $(call gen-built-in,images)) ...@@ -202,10 +202,10 @@ $(eval $(call gen-built-in,images))
.PHONY: .FORCE .PHONY: .FORCE
# Compel get used by CRIU, build it earlier # Compel get used by CRIU, build it earlier
compel/%: compel/%: .FORCE
$(Q) $(MAKE) $(build)=compel $@ $(Q) $(MAKE) $(build)=compel $@
test/compel/%: test/compel/%: .FORCE
$(Q) $(MAKE) $(build)=compel $@ $(Q) $(MAKE) $(build)=compel $@
# #
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment