It might be indeed. But unfortunately, I cannot spot what...
I've seen this reported once before; I could not reproduce it. I
did exactly as Greg did, and *everything* built successfully, with
only a few minor, and easily corrected warnings. You should *not*
have needed to remove the `sleep' reference; there may be some
defect in your MSYS or MinGW installation.
The fact is that I would actually like to have replace it, yes.
Yet, I just have one problem, at both the end of the "make" and
"make install" batches. It says:
rm: cannot unlink `make.exe': Permission denied
make: *** [make.exe] Error 1
This happens when you try to replace the `make.exe' which is running
your actual build process. In this particular case, it appears that
you are trying to overwrite the make.exe in your MSYS /bin directory;
you must not do this.
The make-3.81-beta4 you are building is a *native* Win32 app. Unless
you are running the msys-1.0.11 release candidate, then you must never
put native binaries in /bin. Leave the make-3.79 that's there alone,
and install your make-3.81 somewhere else. Ideally, also give it a
different name, say gnumake.exe, to avoid confusion -- this is why we
call our native version mingw32-make.
If you then ensure that wherever you installed gnumake.exe is in your
path, and you use gnumake instead of make, you should be running this
version; (this will also propagate to recursive makes, if you've used
This is what I did initially. Here is a little recap of what I tried so
since I was needing version 3.80 of Make to have the eval function
working, I downloaded and installed mingw32-make-3.80.0-2.exe.
I correctly defined $(MAKE) in all my makefiles and launched my make
project with mingw32-make.
I almost immediately got the following error:
sed: -e expression #2, char 9: Unknown option to 's'
gnumake: Entering directory `C:/msys/home/marichal/af'
g++.exe: no input files
The problem clearly comes from a bad interpretation of a sed command,
which in turn makes that the g++ command has not received the
This sed command occurs in one of my rules to automatically generate
dependencies and store in .d files:
# Creating sub-makefile for dependencies from C++ source files
$(OBJECT_DIR)%$(DBG_USED_SUFFIX)$(DEP_EXT) : $(FILES_PATH)%$(SRC_EXT)
$(VERBOSE_ECHO) $(SHELL) -ec '$(CXX) -MM $(FINAL_CPPFLAGS)
$(CXXINCLDIRS) $< | sed '\''s/\($*\)\.o[
:]*/$(OBJECT_DIR_FOR_SED)\1$(DBG_USED_SUFFIX).o $(subst /,\/,$@) :
/g'\'' > $@'
Yet, this line works perfectly with make 3.79, under both msys and
linux. And with make 3.80 as well under Linux....
Then, I first tried to compile make-3.81beta4 under msys using the
build_w32.bat script for building a native Win app. It resulted in a
gnumake.exe. I assigned $5MAKE) to this command and re-launched my
project using it.
It resulted in exactly the same sed error.
My (may be too naive) conclusion was thus that there might be something
clashing between these external build of Make and the shell and other
commands (mainly sed and ls) that I ask make to use, which should be
the ones defined by msys.
Hence my attempt to re-install a version 3.80 of make as the msys
default make command.
Any better idea is most welcome. Shall I try msys-1.0.11 as you
suggest? Currently I use 1.0.10.