gnu make under cygwin

John McLean john@techsol.ca
Fri Jan 24 03:18:00 GMT 2003


Thanks Igor:

Solved my problem.

J.

Igor Pechtchanski wrote:

>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
>>    
>>
>
>  
>



--
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/



More information about the Cygwin mailing list