Trouble building grep portion of Source Navigator

Mo DeJong
Thu Feb 28 15:55:00 GMT 2002

On Thu, 28 Feb 2002 08:54:34 -0800
Bruce Edson <> wrote:

> First problem encountered:
>   It appeared that a portion of grep compiles.  It then runs into a problem
> with a missing libintl.h file.  When I look into the include directory
> ../intl, sure enough the file is there, but, it is a Windows shortcut file
> to libgettext.h back in the source tree.  I wasn't aware that Make would
> work with shortcut files.  If I replace the shortcut with a real version of
> the file (not libgettext.h), I get past this problem.  Why is this shortcut
> file being created for me?  Also, if I use '--with-included-gettext' for
> configure, the problem still exists, even though this would suggest
> eliminating the need for libintl.h.  Any ideas?

Groan! I looked in grep/ and found this:

dnl FIXME: this overcomes a flaw in using non-Cygwin tools with symlinks.
if test x$ac_cv_prog_CC = xcl ; then
  AC_MSG_RESULT([copying libgettext.h to intl/libintl.h])
  if test -f $nls_cv_header_intl ; then
    rm $nls_cv_header_intl
  cp $srcdir/$nls_cv_header_libgt $nls_cv_header_intl

Looks like you need to use export CC=cl to get around that.

> Second problem encountered: 
>   After copying a real libintl.h file into ../grep/intl, the make compiles
> the c files okay and then tries to work with a file called libintl.a.  I get
> the following output.  Could anyone give me a clue as to what is going
> wrong?  Is there an incompatability with VC++ compiler/linker?  I tried
> adding '--with-included-gettext' to the configure and starting over with a
> clean build directory.  No change. 
>   cl.exe  -Z7 -Od  -o grep.exe  grep.obj dfa.obj kwset.obj obstack.obj
> getopt.obj
>   getopt1.obj search.obj btowc.obj regex.obj ../intl/libintl.a
>   Microsoft (R) 32-bit C/C++ Optimizing Compiler Version 12.00.8804 for
> 80x86
>   Copyright (C) Microsoft Corp 1984-1998. All rights reserved.
>   Command line warning D4024 : unrecognized source file type
> '../intl/libintl.a',

This is just a goofy hack in the old grep build system. It should not
cause problems linking.

>   ../intl/libintl.a
>   regex.obj : error LNK2001: unresolved external symbol _alloca
>   libintl.a(dcgettext.obj) : error LNK2001: unresolved external symbol
> _alloca
>   libintl.a(localealias.obj) : error LNK2001: unresolved external symbol
> _alloca
>   grep.exe : fatal error LNK1120: 1 unresolved externals
>   make[3]: *** [grep.exe] Error 2
>   make[3]: Leaving directory `/cygdrive/c/snkeck/snbuild/grep/src'

This is also caused by the CC=cl thing.


if test x$ac_cv_prog_CC = xcl ; then
  AC_DEFINE(alloca, _alloca)


More information about the Sourcenav mailing list