"@LIBICU_CFLAGS@: No such file or directory" during libtool command for lib-fts (cross compile)

awl1 awl1 at gmx.net
Thu May 25 13:49:29 EEST 2017


Hello,

I am a complete newbie to dovecot, but do have reasonable experience in 
compiling Unix/Linux software.

I am currently trying to do a cross-compile of dovecot-2.29.1 to be used 
on my home office Thecus NAS (host: Thecus kernel 2.6.33 on 32-bit Intel 
Atom: "i686-nptl-linux-gnu"; my build machine has Ubuntu 16.04.2 LTS) 
"from ground up", i.e. I need to build and provide all dovecot 
dependencies from within my module.

My compiler toolchain (using gcc-5.2.0) has been set up properly using 
ct-ng and works completely fine.

I also have already successfully cross-compiled/built almost all dovecot 
dependencies (zlib, bzip2, xz, lz4, openssl-1.0.2, clucene-git, 
snowball-git, libexttextcat, icu) - i.e. including icu - and installed 
them properly into my cross-compile build root 
(/raid/data/module/Dovecot/sys as defined by Thecus module spec).

My dovecot configure/make command is as follows:

===
export PKG_CONFIG=/usr/bin/pkg-config
export PKG_CONFIG_PATH=/raid/data/module/Dovecot/sys/lib/pkgconfig

export 
CC=$HOME/Thecus/n4200pro-5.2.0-toolchain/i686-nptl-linux-gnu/bin/i686-nptl-linux-gnu-gcc
export CFLAGS=""

export LDFLAGS="-L/raid/data/module/Dovecot/sys/lib 
-Wl,-rpath,/raid/data/module/Dovecot/sys/lib"
export LIBS="" # -llib

export CPPFLAGS=-I/raid/data/module/Dovecot/sys/include
export 
CPP=$HOME/Thecus/n4200pro-5.2.0-toolchain/i686-nptl-linux-gnu/bin/i686-nptl-linux-gnu-cpp

export 
CXX=$HOME/Thecus/n4200pro-5.2.0-toolchain/i686-nptl-linux-gnu/bin/i686-nptl-linux-gnu-g++
export CXXFLAGS=""

export LT_SYS_LIBRARY_PATH=/raid/data/module/Dovecot/sys/lib

export 
CXXCPP=$HOME/Thecus/n4200pro-5.2.0-toolchain/i686-nptl-linux-gnu/bin/i686-nptl-linux-gnu-cpp

./configure --host i686-nptl-linux-gnu \
             --prefix=/raid/data/module/Dovecot/sys \
             --libdir=/raid/data/module/Dovecot/sys/lib \
             --localstatedir=/raid/data/module/Dovecot/com \
             --sharedstatedir=/raid/data/module/Dovecot/var \
             --disable-silent-rules \
             --with-notify=inotify \
             --with-lucene \
             --with-stemmer \
             --with-textcat \
             --with-icu \
             --with-solr \
             --with-zlib \
             --with-bzlib \
             --with-lzma \
             --with-ssl=openssl \
             --with-ssldir=/raid/data/module/Dovecot/sys/etc/ssl \
--with-storages=mdbox,sdbox,maildir,mbox,cydir,imapc,pop3c \
             --with-moduledir=/raid/data/module/Dovecot/sys \
             --with-gnu-ld \
             --with-sysroot=/raid/data/module/Dovecot/sys \
             --with-libiconv-prefix=/raid/data/module/Dovecot/sys \
             --with-libintl-prefix=/raid/data/module/Dovecot/sys

make
===

and completes configuration just fine, but the make step runs into the 
following issue which I am unable to resolve even after several hours of 
investigation, so I am completely stuck at this point... :-(

===
(...)
make[3]: Leaving directory 
'/home/andreas/Thecus/Dovecot/dovecot-2.2.29.1/src/lib-dovecot'
Making all in lib-fts
make[3]: Entering directory 
'/home/andreas/Thecus/Dovecot/dovecot-2.2.29.1/src/lib-fts'
make  all-am
make[4]: Entering directory 
'/home/andreas/Thecus/Dovecot/dovecot-2.2.29.1/src/lib-fts'
/bin/bash ../../libtool  --tag=CC   --mode=compile 
/home/andreas/Thecus/n4200pro-5.2.0-toolchain/i686-nptl-linux-gnu/bin/i686-nptl-linux-gnu-gcc 
-DHAVE_CONFIG_H -I. -I../..  -I../../src/lib -I../../src/lib-test 
-I../../src/lib-mail -I../../src/lib-fts 
-I/raid/data/module/Dovecot/sys/include/libexttextcat/ @LIBICU_CFLAGS@ 
-DUDHRDIR=\""../../src/lib-fts"\" 
-DDATADIR=\"/raid/data/module/Dovecot/sys/share/dovecot\" 
-DTEST_STOPWORDS_DIR=\""../../src/lib-fts/stopwords"\" 
-I/raid/data/module/Dovecot/sys/include  -std=gnu99  -Wall -W 
-Wmissing-prototypes -Wmissing-declarations -Wpointer-arith 
-Wchar-subscripts -Wformat=2 -Wbad-function-cast -fno-builtin-strftime 
-Wstrict-aliasing=2 -I/raid/data/module/Dovecot/sys/include  -MT 
fts-filter.lo -MD -MP -MF .deps/fts-filter.Tpo -c -o fts-filter.lo 
fts-filter.c
libtool: compile: 
/home/andreas/Thecus/n4200pro-5.2.0-toolchain/i686-nptl-linux-gnu/bin/i686-nptl-linux-gnu-gcc 
-DHAVE_CONFIG_H -I. -I../.. -I../../src/lib -I../../src/lib-test 
-I../../src/lib-mail -I../../src/lib-fts 
-I/raid/data/module/Dovecot/sys/include/libexttextcat/ @LIBICU_CFLAGS@ 
-DUDHRDIR=\"../../src/lib-fts\" 
-DDATADIR=\"/raid/data/module/Dovecot/sys/share/dovecot\" 
-DTEST_STOPWORDS_DIR=\"../../src/lib-fts/stopwords\" 
-I/raid/data/module/Dovecot/sys/include -std=gnu99 -Wall -W 
-Wmissing-prototypes -Wmissing-declarations -Wpointer-arith 
-Wchar-subscripts -Wformat=2 -Wbad-function-cast -fno-builtin-strftime 
-Wstrict-aliasing=2 -I/raid/data/module/Dovecot/sys/include -MT 
fts-filter.lo -MD -MP -MF .deps/fts-filter.Tpo -c fts-filter.c  -fPIC 
-DPIC -o .libs/fts-filter.o
i686-nptl-linux-gnu-gcc: error: @LIBICU_CFLAGS@: No such file or directory
Makefile:714: recipe for target 'fts-filter.lo' failed
make[4]: *** [fts-filter.lo] Error 1
make[4]: Leaving directory 
'/home/andreas/Thecus/Dovecot/dovecot-2.2.29.1/src/lib-fts'
Makefile:562: recipe for target 'all' failed
===

As far as I can tell, my pkgconfig file 
(/raid/data/module/Dovecot/sys/lib/pkgconfig/icu-i18n.pc) also seems to 
be fine:

===
# Copyright (C) 2016 and later: Unicode, Inc. and others.
# License & terms of use: http://www.unicode.org/copyright.html
# Copyright (C) 2010-2013, International Business Machines Corporation. 
All Rights Reserved.

# CFLAGS contains only anything end users should set
CFLAGS =
# CXXFLAGS contains only anything end users should set
CXXFLAGS =  -std=c++11
# DEFS only contains those UCONFIG_CPPFLAGS which are not auto-set by 
platform.h
DEFS =
prefix = /raid/data/module/Dovecot/sys
exec_prefix = ${prefix}
#bindir = ${exec_prefix}/bin
libdir = ${exec_prefix}/lib
includedir = ${prefix}/include
baselibs = -lpthread -ldl -lm
#datarootdir = ${prefix}/share
#datadir = ${datarootdir}
#sbindir = ${exec_prefix}/sbin
#mandir = ${datarootdir}/man
#sysconfdir = ${prefix}/etc
UNICODE_VERSION=9.0
ICUPREFIX=icu
ICULIBSUFFIX=
LIBICU=lib${ICUPREFIX}
#SHAREDLIBCFLAGS=-fPIC
pkglibdir=${libdir}/icu${ICULIBSUFFIX}/59.1
#pkgdatadir=${datadir}/icu${ICULIBSUFFIX}/59.1
ICUDATA_NAME = icudt59l
#ICUPKGDATA_DIR=${exec_prefix}/lib
#ICUDATA_DIR=${pkgdatadir}
ICUDESC=International Components for Unicode

Version: 59.1
Cflags: -I${includedir}
# end of icu.pc.in
Description: International Components for Unicode: Internationalization 
library
Name: icu-i18n
Requires: icu-uc
Libs: -licui18n
===

Note that even adding a line stating

LIBICU_CFLAGS=-I/raid/data/module/Dovecot/sys/include

(just in order to set it to any non-null value) to the icu-i18n.pc file 
and/or setting an environment variable

export LIBICU_CFLAGS=-I/raid/data/module/Dovecot/sys/include

before running configure does NOT help to get rid of the above error...

So do you have any idea why variable substitution for LIBICU_CFLAGS does 
not work, and what could be done to work around this?

Many thanks in advance for your kind help with this!
Best regards,

Andreas
awl1 at gmx.net



More information about the dovecot mailing list