diff --git a/Makefile b/Makefile
index 2ccea60cc1d021076dac48dbddf718971b82f8ab..f75e5b8eee1172ad4807b998ed8abfcd654b7042 100644
--- a/Makefile
+++ b/Makefile
@@ -577,12 +577,12 @@ OPT_LIBS+= zarith.cmxa
 INCLUDES+= -I $(ZARITH_PATH)
 src/libraries/stdlib/integer.ml: \
 		src/libraries/stdlib/integer.zarith.ml share/Makefile.config
-	$(REPLACE) $< $@
+	$(CP_IF_DIFF) $< $@
 	$(CHMOD_RO) $@
 else
 src/libraries/stdlib/integer.ml: \
 		src/libraries/stdlib/integer.bigint.ml share/Makefile.config
-	$(REPLACE) $< $@
+	$(CP_IF_DIFF) $< $@
 	$(CHMOD_RO) $@
 endif
 GENERATED += src/libraries/stdlib/integer.ml
@@ -600,7 +600,7 @@ ifeq ($(USABLE_NATIVE_DYNLINK),yes) # native dynlink works
 
 src/libraries/stdlib/FCDynlink.ml: \
 		src/libraries/stdlib/dynlink_native_ok.ml share/Makefile.config
-	$(REPLACE) $< $@
+	$(CP_IF_DIFF) $< $@
 	$(CHMOD_RO) $@
 
 else # native dynlink doesn't work
@@ -608,7 +608,7 @@ else # native dynlink doesn't work
 ifeq ($(NATIVE_DYNLINK),yes) # native dynlink does exist but doesn't work
 src/libraries/stdlib/lib/FCDynlink.ml: \
 		src/libraries/stdlib/dynlink_native_ko.ml share/Makefile.config
-	$(REPLACE) $< $@
+	$(CP_IF_DIFF) $< $@
 	$(CHMOD_RO) $@
 
 else # no dynlink at all (for instance no native compiler)
@@ -616,7 +616,7 @@ else # no dynlink at all (for instance no native compiler)
 # Just for ocamldep
 src/libraries/stdlib/FCDynlink.ml: \
 		src/libraries/stdlib/dynlink_native_ok.ml share/Makefile.config
-	$(REPLACE) $< $@
+	$(CP_IF_DIFF) $< $@
 	$(CHMOD_RO) $@
 
 # Add two different rules for bytecode and native since
@@ -624,14 +624,14 @@ src/libraries/stdlib/FCDynlink.ml: \
 
 src/libraries/stdlib/FCDynlink.cmo: \
 		src/libraries/stdlib/dynlink_native_ok.ml share/Makefile.config
-	$(REPLACE) $< src/libraries/stdlib/FCDynlink.ml
+	$(CP_IF_DIFF) $< src/libraries/stdlib/FCDynlink.ml
 	$(CHMOD_RO) src/libraries/stdlib/FCDynlink.ml
 	$(PRINT_OCAMLC) $@
 	$(OCAMLC) -c $(BFLAGS) src/libraries/stdlib/FCDynlink.ml
 
 src/libraries/stdlib/FCDynlink.cmx: \
 		src/libraries/stdlib/dynlink_no_native.ml share/Makefile.config
-	$(REPLACE) $< src/libraries/stdlib/FCDynlink.ml
+	$(CP_IF_DIFF) $< src/libraries/stdlib/FCDynlink.ml
 	$(CHMOD_RO) src/libraries/stdlib/FCDynlink.ml
 	$(PRINT_OCAMLOPT) $@
 	$(OCAMLOPT) -c $(OFLAGS) src/libraries/stdlib/FCDynlink.ml
@@ -1030,8 +1030,7 @@ PLUGIN_OFLAGS:= $(shell ocamlfind query -i-format -r apron.octMPQ apron.boxMPQ a
 # PLUGIN_EXTRA_OPT := $(shell ocamlfind query -a-format apron.apron apron.octMPQ gmp -predicates native)
 src/plugins/value/domains/apron/apron_domain.ml: \
 		src/plugins/value/domains/apron/apron_domain.ok.ml share/Makefile.config
-	$(PRINT_CP) $@
-	$(REPLACE) $< $@
+	$(CP_IF_DIFF) $< $@
 	$(CHMOD_RO) $@
 else
 PLUGIN_REQUIRES:=
@@ -1039,8 +1038,7 @@ PLUGIN_BFLAGS:=
 PLUGIN_OFLAGS:=
 src/plugins/value/domains/apron/apron_domain.ml: \
 		src/plugins/value/domains/apron/apron_domain.ko.ml share/Makefile.config
-	$(PRINT_CP) $@
-	$(REPLACE) $< $@
+	$(CP_IF_DIFF) $< $@
 	$(CHMOD_RO) $@
 endif
 GENERATED += src/plugins/value/domains/apron/apron_domain.ml
diff --git a/Makefile.generating b/Makefile.generating
index 53454d1fa4bae88ab04cb02a090cde253df8d03e..43c527fa7d12f82f3d3f06e1d3d868f463b93ab0 100644
--- a/Makefile.generating
+++ b/Makefile.generating
@@ -91,7 +91,7 @@ $(CONFIG_FILE): $(CONFIG_FILE).in VERSION share/Makefile.config Makefile.generat
           -e "s|@EXE@|$(EXE)|" \
           $< > $@.tmp
 	@touch -r $@.tmp $<
-	$(REPLACE) $@.tmp $@
+	$(CP_IF_DIFF) $@.tmp $@
 	$(RM) $@.tmp
 	$(CHMOD_RO) $@
 
diff --git a/share/Makefile.common b/share/Makefile.common
index 72064a88209e1cbd6df61f8bb219dc287bc8ef66..b3e4382ad66a627afee0e3b9cca5427c44f34272 100644
--- a/share/Makefile.common
+++ b/share/Makefile.common
@@ -157,10 +157,10 @@ CHMOD_RW= sh -c \
   if test -e $$f; then chmod u+w $$f; fi \
 done' chmod_rw
 CP      = install
-REPLACE      = sh -c \
+CP_IF_DIFF = sh -c \
   'if cmp -s $$1 $$2; \
    then touch -r $$2 $$1; \
-   else echo "Generating  $$2"; install $$1 $$2; fi' replace
+   else echo "Generating  $$2"; install $$1 $$2; fi' cpifdiff
 #follow symbolic link
 CP_L    = cp -fL
 ECHO	= echo