Subject: Re: cp.exe bug
From: "Alan" <[email-masked]>
To: "Cygwin" <[email-masked]>
Date: Sun, 14 Mar 2004 16:27:59 -0800

----- Original Message ----- 
From: "Ross Boulet" <[email-masked]>
To: "Cygwin" <[email-masked]>
Cc: "'Alan'" <[email-masked]>
Sent: Sunday, March 14, 2004 1:44 PM
Subject: RE: cp.exe bug

> > > > Problem:
> > > > fileutils version 4.1-2, specifically: cp.exe does not
> > work properly.
> > > >
>
> [ ... Snip ... ]
>
> >
> > I've narrowed it down to running `make' on my linux Makefiles, simple
> > example follows:
> >
> > ####### Simple Makefile Example
> >
> > CC= gcc
> >
> > OBJ= foo.o
> > FILE= foo.c
> > BIN= foo
> >
> > all: $(BIN) install
> >
> > $(BIN): $(OBJ)
> >  $(CC) -o $(BIN) $(OBJ)
> >
> > $(OBJ):
> >  $(CC) -c $(FILE) -o $(OBJ)
> >
> > install:
> >  mkdir -p ./bin/;
> >  cp $(BIN) ./bin/;
> >
> > ####### End Makefile>
> >
> > >From prompt:
> >
> > $ make
> > mkdir -p ./bin/;
> > cp foo ./bin/;
> > cp: `foo' and `./bin/foo' are the same file
> > make: *** [install] Error 1
> >
> >
> > The problem I believe is that `Make' outputs the binary `foo'
> > as `foo.exe'
> > which causes `cp.exe' to fail. This had previously worked
> > fine with the
> > version of `cp.exe' included with `fileutils 4.1-1'
> >
> > Workaround:
> > Modify all existing Makefiles by adding the proper file
> > extension to the
> > binary.
> >
> > Example:
> > BIN= foo
> >
> > Should be changed to:
> > BIN= foo.exe
> >
> >
> >
>
> I cut more from my makefile and just use one symbolic in place of your
BIN,
> OBJ, and FILE as follows:
>
> ####### Even More Simple Makefile Example
>
> CC= gcc
>
> FILE= foo
>
> all: $(FILE).exe install
>
> $(FILE).exe: $(FILE).o
>  $(CC) -o $(FILE).exe $(FILE).o
>
> $(FILE).o:
>  $(CC) -c $(FILE).c -o $(FILE).o
>
> install:
>  mkdir -p ./bin/;
>  cp $(FILE).exe ./bin/;
>
> ####### End Makefile
>
>

That would normally be fine if I was was using Cygwin only, but since my
Makefiles are used in projects built with both RedHat linux and Cygwin, this
new change to `cp.exe' forces me to have to modify all my Makefiles.

Example, I now either need to maintain two makefiles for each project, or
add a conditional expression to all my Makefiles:

BIN= foo

ifeq ($(TERM), cygwin)
    BIN:=$(BIN).exe
endif

It's no big deal, but after updating to the newest Cygwin release and
discovering my projects no longer installed because of the new `cp.exe'
seemed like a bug.

--
Unsubscribe info:      http://cygwin.com/ml/#unsubscribe-simple
Problem reports:       http://cygwin.com/problems.html
Documentation:         http://cygwin.com/docs.html
FAQ:                   http://cygwin.com/faq/