Subject: bug#14022: libtool-gug

From: Peter Rosin <[email-masked]>
Date: Fri, 22 Mar 2013 09:34:13 +0100

[please stay on-list, quoting in full to preserve the context]

On 2013-03-22 09:03, Andreas Otto wrote:
> Am 22.03.2013 08:14, schrieb Peter Rosin:
>> Hi Andreas!
>>
>> On 2013-03-21 15:41, Andreas Otto wrote:
>>> Hi,
>>>
>>> the following code has an error:
>> I don't think so, see below...
>>
>>> # func_convert_core_msys_to_w32 ARG
>>> # Convert file name or path ARG from MSYS format to w32 format. Return
>>> # result in func_convert_core_msys_to_w32_result.
>>> func_convert_core_msys_to_w32 ()
>>> {
>>>    $opt_debug
>>>    # awkward: cmd appends spaces to result
>>>    func_convert_core_msys_to_w32_result=`( cmd //c echo "$1" ) 2>/dev/null |
>>>      $SED -e 's/[ ]*$//' -e "$lt_sed_naive_backslashify"`
>>> }
>>> #end: func_convert_core_msys_to_w32
>>>
>>> I need "...cmd /c ..." to get my stuff compiled
>> *snip*
>>
>>> $ cygpath -V
>>> cygpath (cygwin) 1.7.17
>> cygpath? If you are reporting the cygpath version and say that
>> you need "...cmd /c..." instead of "...cmd //c...", then it
>> sounds as if you have confused MSYS and Cygwin. The function
>> func_convert_core_msys_to_w32 should only be used when you
>> are using MSYS. It's not for Cygwin.
>>
>> On Cygwin, it is best to use a Cygwin-hosted cross compiler.
>> If you want to run a MinGW-hosted compiler, it's best to
>> use MSYS. But you still can (if you obey the rules) use
>> a MinGW-hosted compiler from Cygwin, but in that case you
>> want to use func_convert_file_cygwin_to_w32.
>>
>> My advise is that you read this chapter carefully:
>> http://www.gnu.org/software/libtool/manual/libtool.html#File-name-conversion
>>
>> Cheers,
>> Peter
>>
> Hi,
> 
> I'm working on cygwin no MSYS
> 
> I've done a freash cygwin installation
> I'm using ONLY tools from cygwin
> I use the compiler
> 
> $ export | grep w64
> declare -x CC="x86_64-w64-mingw32-gcc"
> declare -x CXX="x86_64-w64-mingw32-g++"
> 
> I use the
> --build=x86_64-w64-mingw32
> 
> everything ONLY from cygwin
> 
> compile....
> $ make -j 2
> (CDPATH="${ZSH_VERSION+.}:" && cd /home/dev1usr/Project/NHI1 && /bin/bash /home/dev1usr/Project/NHI1/missing --run autoheader)
> rm -f stamp-h1
> touch /home/dev1usr/Project/NHI1/mqconfig.h.in
> cd . && /bin/bash ./config.status mqconfig.h
> config.status: creating mqconfig.h
> config.status: mqconfig.h is unchanged
> make  all-recursive
> make[1]: Entering directory `/build/dev1usr/Main/thread'
> Making all in theLink
> make[2]: Entering directory `/build/dev1usr/Main/thread/theLink'
> Making all in sqlite
> make[3]: Entering directory `/build/dev1usr/Main/thread/theLink/sqlite'
> /bin/sh ../../libtool  --tag=CC   --mode=compile x86_64-w64-mingw32-gcc -std=gnu99 -DHAVE_CONFIG_H -I. -I/home/dev1usr/Project/NHI1/theLink/sqlite -I../..   -D_DEBUG -D_HAVE_SQLITE_CONFIG_H  -g -Wall -Wcast-align -g -O2 -MT libtmp_la-sqlite3.lo -MD -MP -MF .deps/libtmp_la-sqlite3.Tpo -c -o libtmp_la-sqlite3.lo `test -f 'sqlite3.c' || echo '/home/dev1usr/Project/NHI1/theLink/sqlite/'`sqlite3.c
> /bin/sh ../../libtool  --tag=CC   --mode=compile x86_64-w64-mingw32-gcc -std=gnu99 -DHAVE_CONFIG_H -I. -I/home/dev1usr/Project/NHI1/theLink/sqlite -I../..   -D_DEBUG -D_HAVE_SQLITE_CONFIG_H -static  -g -Wall -Wcast-align -g -O2 -MT libtmps_la-sqlite3.lo -MD -MP -MF .deps/libtmps_la-sqlite3.Tpo -c -o libtmps_la-sqlite3.lo `test -f 'sqlite3.c' || echo '/home/dev1usr/Project/NHI1/theLink/sqlite/'`sqlite3.c
> libtool: compile:  x86_64-w64-mingw32-gcc -std=gnu99 -DHAVE_CONFIG_H -I. -I/home/dev1usr/Project/NHI1/theLink/sqlite -I../.. -D_DEBUG -D_HAVE_SQLITE_CONFIG_H -g -Wall -Wcast-align -g -O2 -MT libtmps_la-sqlite3.lo -MD -MP -MF .deps/libtmps_la-sqlite3.Tpo -c /home/dev1usr/Project/NHI1/theLink/sqlite/sqlite3.c -o libtmps_la-sqlite3.o
> libtool: compile:  x86_64-w64-mingw32-gcc -std=gnu99 -DHAVE_CONFIG_H -I. -I/home/dev1usr/Project/NHI1/theLink/sqlite -I../.. -D_DEBUG -D_HAVE_SQLITE_CONFIG_H -g -Wall -Wcast-align -g -O2 -MT libtmp_la-sqlite3.lo -MD -MP -MF .deps/libtmp_la-sqlite3.Tpo -c /home/dev1usr/Project/NHI1/theLink/sqlite/sqlite3.c  -DDLL_EXPORT -DPIC -o .libs/libtmp_la-sqlite3.o
> /home/dev1usr/Project/NHI1/theLink/sqlite/sqlite3.c: In function 'memTracePrint':
> /home/dev1usr/Project/NHI1/theLink/sqlite/sqlite3.c:63824:5: warning: unknown conversion type character 'l' in format
> /home/dev1usr/Project/NHI1/theLink/sqlite/sqlite3.c:63824:5: warning: too many arguments for format
> /home/dev1usr/Project/NHI1/theLink/sqlite/sqlite3.c:63826:5: warning: unknown conversion type character 'l' in format
> /home/dev1usr/Project/NHI1/theLink/sqlite/sqlite3.c:63826:5: warning: too many arguments for format
> /home/dev1usr/Project/NHI1/theLink/sqlite/sqlite3.c: In function 'memTracePrint':
> /home/dev1usr/Project/NHI1/theLink/sqlite/sqlite3.c:63824:5: warning: unknown conversion type character 'l' in format
> /home/dev1usr/Project/NHI1/theLink/sqlite/sqlite3.c:63824:5: warning: too many arguments for format
> /home/dev1usr/Project/NHI1/theLink/sqlite/sqlite3.c:63826:5: warning: unknown conversion type character 'l' in format
> /home/dev1usr/Project/NHI1/theLink/sqlite/sqlite3.c:63826:5: warning: too many arguments for format
> mv -f .deps/libtmp_la-sqlite3.Tpo .deps/libtmp_la-sqlite3.Plo
> /bin/sh ../../libtool --tag=CC    --mode=link x86_64-w64-mingw32-gcc -std=gnu99 -D_HAVE_SQLITE_CONFIG_H   -g -Wall -Wcast-align -g -O2 -o libtmp.la  libtmp_la-sqlite3.lo
> mv -f .deps/libtmps_la-sqlite3.Tpo .deps/libtmps_la-sqlite3.Plo
> /bin/sh ../../libtool --tag=CC    --mode=link x86_64-w64-mingw32-gcc -std=gnu99 -D_HAVE_SQLITE_CONFIG_H -static   -g -Wall -Wcast-align -g -O2 -static  -o libtmps.la  libtmps_la-sqlite3.lo
> libtool: link: ar cru .libs/libtmps.a  libtmps_la-sqlite3.o
> libtool: link: ranlib .libs/libtmps.a
> libtool: link: ( cd ".libs" && rm -f "libtmps.la" && ln -s "../libtmps.la" "libtmps.la" )
> 
> HANG
> 
> now with a littel bit debugging
> 
>> $ sh -xv ../../libtool --tag=CC    --mode=link x86_64-w64-mingw32-gcc -std=gnu99 -D_HAVE_SQLITE_CONFIG_H   -g -Wall -Wcast-align -g -O2   -o libtmp.la  libtmp_la-sqlite3.lo
> 
> + func_dirname_result=
> + xdir=
> + test .libs/libtmp_la-sqlite3.o '!=' none
> + pic_object=.libs/libtmp_la-sqlite3.o
> + test '' = dlfiles
> + test '' = dlprefiles
> + libobjs+=' .libs/libtmp_la-sqlite3.o'
> + arg=.libs/libtmp_la-sqlite3.o
> + test none '!=' none
> + non_pic_object=.libs/libtmp_la-sqlite3.o
> + non_pic_objects+=' .libs/libtmp_la-sqlite3.o'
> + test -n .libs/libtmp_la-sqlite3.o
> + compile_command+=' .libs/libtmp_la-sqlite3.o'
> + finalize_command+=' .libs/libtmp_la-sqlite3.o'
> + test 0 -gt 0
> + test -n ''
> + test no = yes
> + oldlibs=
> + func_basename libtmp.la
> + func_basename_result=libtmp.la
> + outputname=libtmp.la
> + libobjs_save=' .libs/libtmp_la-sqlite3.o'
> + test -n PATH
> + eval 'shlib_search_path=`$ECHO' '"${PATH}"' '|' '$SED' ''\''s/:/' '/g'\''`'
> shlib_search_path=`$ECHO "${PATH}" | $SED 's/:/ /g'`
> $ECHO "${PATH}" | $SED 's/:/ /g'
> +++ printf '%s\n' '/usr/local/bin:/usr/bin:/cygdrive/c/Program Files/Common Files/Microsoft Shared/Windows Live:/cygdrive/c/Windows/system32:/cygdrive/c/Windows:/cygdrive/c/Windows/System32/Wbem:/cygdrive/c/Windows/System32/WindowsPowerShell/v1.0:/cygdrive/c/Program Files/Broadcom/Broadcom 802.11/Driver:/cygdrive/c/Program Files (x86)/ATI Technologies/ATI.ACE/Core-Static'
> +++ /usr/bin/sed 's/:/ /g'
> ++ shlib_search_path='/usr/local/bin /usr/bin /cygdrive/c/Program Files/Common Files/Microsoft Shared/Windows Live /cygdrive/c/Windows/system32 /cygdrive/c/Windows /cygdrive/c/Windows/System32/Wbem /cygdrive/c/Windows/System32/WindowsPowerShell/v1.0 /cygdrive/c/Program Files/Broadcom/Broadcom 802.11/Driver /cygdrive/c/Program Files (x86)/ATI Technologies/ATI.ACE/Core-Static'
> + eval 'sys_lib_search_path="/usr/x86_64-w64-mingw32/lib64' /usr/x86_64-w64-mingw32/sys-root/mingw/lib '"'
> sys_lib_search_path="/usr/x86_64-w64-mingw32/lib64 /usr/x86_64-w64-mingw32/sys-root/mingw/lib "
> ++ sys_lib_search_path='/usr/x86_64-w64-mingw32/lib64 /usr/x86_64-w64-mingw32/sys-root/mingw/lib '
> + eval 'sys_lib_dlsearch_path="/lib' '/usr/lib"'
> sys_lib_dlsearch_path="/lib /usr/lib"
> ++ sys_lib_dlsearch_path='/lib /usr/lib'
> + func_dirname libtmp.la / ''
> + case ${1} in
> + func_dirname_result=
> + output_objdir=.libs
> + func_to_tool_file .libs/
> + :
> + case ,$2, in
> + func_convert_file_msys_to_w32 .libs/
> + :
> + func_to_host_file_result=.libs/
> + test -n .libs/
> + func_convert_core_msys_to_w32 .libs/
> + :
> ( cmd //c echo "$1" ) 2>/dev/null |
>     $SED -e 's/[ ]*$//' -e "$lt_sed_naive_backslashify"
> ++ /usr/bin/sed -e 's/[ ]*$//' -e 's|\\\\*|\\|g;s|/|\\|g;s|\\|\\\\|g'
> 
> HANG
> 
> => are you convinced?
> 
> 
> mfg AO
> 

No, not convinced.

Your error is that you have specified --build incorrectly.
You are building on Cygwin with a Cygwin-hosted compiler,
which means that --build should be something-cygwin (but
you should leave configure to autodetect the specifics).
What you want to do is to specify --host=x86_64-w64-mingw32
since you are building for a MinGW host.

Cheers, and hope that helps,
Peter