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@gmx.net