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
[email protected]