This is the mail archive of the cygwin@cygwin.com mailing list for the Cygwin project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

Re: gnu make under cygwin


John,

There are different reasons for the two problems that you describe, but
neither is a bug in GNU make.  The answers to both of your questions are
contained in <http://cygwin.com/ml/cygwin/2003-01/msg01104.html>, though
in reverse order.

The first error is related to your default shell being different on the
two systems (Linux and Cygwin).  Your default shell under Cygwin is bash
(whatever the current version is), with the default options set at compile
time.  It seems that your Linux shell does not repeat the configuration
(even if it also is bash).  The one relevant bit of configuration is
expanding null globs (i.e., when a glob doesn't match anything).  Try
setting 'shopt -s nullglob' in your .bashrc.  That should get rid of the
first error [*].

The second error is the result of a bug in your Makefile.  The result of a
shell substitution
	export LIST=`grep -lr ":gcrt1.o%s}" *`
is not quoted.  Thus, when grep matches *two* files, the shell treats the
second file as another variable to export.  You should change that line to
	export LIST="`grep -lr ":gcrt1.o%s}" *`"
That should get rid of the second error.
	Igor

[*] Provided you don't set SHELL in your Makefile -- you haven't provided
enough of a snippet to ascertain that.  If you set your SHELL to, for
example, ksh, you may need a different way of turning on nullglob
expansion -- see the ksh manpage for details.


On Thu, 23 Jan 2003, John McLean wrote:

> Hi, I'm having some problems with GNU make under cygwin.  Everything
> works fine under linux, but it breaks under cygwin.
>
> Below is the relevant snippit from my Makefile.
>
> <snip>
> #############################################################
> #
> # gcc1: uncompress and patch
> #
> #############################################################
> .gcc1:
>         rm -f .gcc1
>         rm -rf ${GCC_PATH}
>         bzcat ${BASEDIR}/sources/${GCC_SOURCE} | tar ${VERBOSE_TAR} -x
>         # Apply all gcc patches in the source directory, named gcc-*.patch
>         for p in ${BASEDIR}/sources/gcc-*.patch ; do \
>                 cat $$p | patch ${VERBOSE_PATCH} -p1 -d ${GCC_PATH} ; \
>         done
>         (cd ${GCC_PATH}; set -e; export LIST=`grep -lr ":gcrt1.o%s}" *`; \
>                 if [ -n "$$LIST" ] ; then \
>                 perl -i.orig -p -e "s,:gcrt1.o%s},:crt0.o%s},g;" \
>                 $$LIST; fi);
> </snip>
>
> It runs fine under linux, but under cygwin I get
>
> <snip>
> gcc-3.2.1/GNATS
> gcc-3.2.1/.brik
> # Apply all gcc patches in the source directory, named gcc-*.patch
> for p in /home/david/tsi-tools-source/sources/gcc-*.patch ; do \
>         cat $p | patch  -p1 -d
> "/home/david/tsi-tools-source/gcc-"3.2.1"" ; \
> done
> cat: /home/david/tsi-tools-source/sources/gcc-*.patch: No such file or
> directory
>
> (cd "/home/david/tsi-tools-source/gcc-"3.2.1""; set -e; export
> LIST=`grep -lr "
> :gcrt1.o%s}" *`; \
>         if [ -n "$LIST" ] ; then \
>         perl -i.orig -p -e "s,:gcrt1.o%s},:crt0.o%s},g;" \
>         $LIST; fi);
> export: gcc/config/arm/linux-elf.h: bad variable name
> make: *** [.gcc1] Error 2
> </snip>
>
>
> Now the wierd thing is if I copy this output and type it on the command
> line everything works fine.
>
> FYI: gcc/config/arm/linux-elf.h is the second file it finds.  And I'm
> trying to make a cross compiler for an embedded target.
>
> All of the cygwin programs are from downloading them today Jan.23
>
> Make is version 3.79.1

-- 
				http://cs.nyu.edu/~pechtcha/
      |\      _,,,---,,_		pechtcha@cs.nyu.edu
ZZZzz /,`.-'`'    -.  ;-;;,_		igor@watson.ibm.com
     |,4-  ) )-,_. ,\ (  `'-'		Igor Pechtchanski
    '---''(_/--'  `-'\_) fL	a.k.a JaguaR-R-R-r-r-r-.-.-.  Meow!

Oh, boy, virtual memory! Now I'm gonna make myself a really *big* RAMdisk!
  -- /usr/games/fortune


--
Unsubscribe info:      http://cygwin.com/ml/#unsubscribe-simple
Bug reporting:         http://cygwin.com/bugs.html
Documentation:         http://cygwin.com/docs.html
FAQ:                   http://cygwin.com/faq/


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]