Re: [AD] Issues when building MSVC Allegro using Cygwin

[ Thread Index | Date Index | More lists.liballeg.org/allegro-developers Archives ]


Daniel Schlyder wrote:
Andrei Ellman:

Daniel Schlyder wrote:

Your results:

Environment    Make version    UNIX_TOOLS    Result
Cygwin         3.80            0             success
DJGPP          3.79.1          0             success
DJGPP          3.79.1          1             success

Correct? DJGPP's mkdir works with slashes and Cygwin with single backslashes?


The Cygwin line should be
Cygwin         3.80            1             success
All other lines are correct. In Cygwin, it is impossible to access the DOS tools, so UNIX_TOOLS=1 must always be set in Cygwin.


I think that if DJGPP is installled, DJGPP's mkdir might be called in favour of DOS's mkdir (but I'm not sure on this), so that will explain why mkdir works with forward slashes in DJGPP


Ok, that must be it. Does this mean the attached patch fixes the problem?


Unfortunately, it does not :-(

Here are the results of installing Allegro with the patch applied (Under Cygwin, make is 3.80 and under DJGPP, make is 3.79)

Environment/Build    UNIX_TOOLS    Result
Cygwin/Cygwin        1             Success
Cygwin/MSVC6         1             Error
DJGPP/DJGPP          0             Success
DJGPP/DJGPP          1             Success
DJGPP/MSVC           0             Error (*)
DJGPP/MSVC           1             Error

Whenever make failed with an error, the message was always something like:

mkdir  C:/PROGRA~1/MICROS~4/VC98/lib
mkdir: cannot create directory `C:/PROGRA~1/MICROS~4/VC98/lib': File exists
make: *** [create-install-dirs] Error 1

(with the slashes reversed when UNIX_TOOLS was not set, and DJGPP's make added " (EEXIST)" to the end of mkdir's error-message)

(*) I have determined that under DJGPP, even when UNIX_TOOLS is not set, that the UNIX mkdir command of DJGPP is called. I tried removing mkdir from my DJGPP/bin/ directory, and this time, although the installation succeeded, I got two "Directory already exists" errors. So DOS's mkdir does not cause make to stop if the directory already exists, but UNIX's does.

Is it possible to expand shortened DOS-style paths from within a makefile? If not, is there a consistent method accross all DOS/Windows UNIX environments (DJGPP, MinGW, MSYS, Cygwin) for expanding shortened paths?

Another possibility is to call UNIX's mkdir with the -p flag ("no error if existing, make parent directories as needed"), but using this could make certain bugs involving directories harder to spot, and if the path is not set up properly, then several nested directories could be created where we don't want them to be. Plus we would have to not call with -p if we're certain that DOS's mkdir is being called (even having no UNIX_TOOLS does not guarantee which version of mkdir is called)


AE.




Mail converted by MHonArc 2.6.19+ http://listengine.tuxfamily.org/