This is the mail archive of the
cygwin
mailing list for the Cygwin project.
Re: cp.exe bug
- From: "Alan" <alanw at cox dot net>
- To: "Cygwin" <cygwin at cygwin dot com>
- Date: Sun, 14 Mar 2004 16:27:59 -0800
- Subject: Re: cp.exe bug
- References: <003601c40a0d$9bbeec90$6400000a@RossLap>
----- Original Message -----
From: "Ross Boulet" <ross@rossb.com>
To: "Cygwin" <cygwin@cygwin.com>
Cc: "'Alan'" <alanw@cox.net>
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/