Dear all,

In order to compile in a conda environment (where iconv is installed
through conda, not in the system), I'm trying to add a path to icon into
./configure(.in). The issue is that although GRASS happens to configure
properly, the compilation fails because libiconv.* is not found.

I have added code which is used for other libraries, although I'm not sure
what exactly should I do for a mandatory dependency. The part which seems
to be failing is AC_CHECK_FUNC.

ac_save_ldflags="$LDFLAGS"
LDFLAGS="$LDFLAGS $ICONVLIBPATH"
# LDFLAGS now contains the path set using --with-iconv-libs
AC_CHECK_FUNC(iconv, ICONVLIB=, [
AC_CHECK_LIB(iconv, iconv, ICONVLIB=-liconv, [
AC_CHECK_LIB(giconv, iconv, ICONVLIB=-lgiconv, [
AC_CHECK_FUNC(libiconv, ICONVLIB=, [
AC_CHECK_LIB(iconv, libiconv, ICONVLIB=-liconv, [
AC_CHECK_LIB(giconv, libiconv, ICONVLIB=-lgiconv, [
    AC_MSG_WARN([*** Unable to locate iconv() function.])
    ICONVLIB=
])])])])])])
AC_SUBST(ICONVLIB)
LDFLAGS="${ac_save_ldflags}"
# The AC_CHECK_FUNC step above seems to succeed
# The output is "checking for iconv... yes"
# The step below fails because $ICONVLIB is empty
# With "checking for iconv in -l... no"
LOC_CHECK_LIBS($ICONVLIB,iconv,iconv,$ICONVLIBPATH,ICONV,,,)

I'm including a full diff too. Note that the iconv library is different
from the others because our ./configure allows for different names of the
library.

Alternative would be to use LDFLAGS. That would be actually ideal, because
all libraries are just at one common prefix. However, providing it as a
parameter to ./configure (which seems to be the recommended way even over
the above) results in "unknown platform" and providing it as an
environmental variable does not have any effect.

Please, let me know if you have any advice,
Vaclav
diff --git a/configure.in b/configure.in
index e71b7ae44..63d841f5b 100644
--- a/configure.in
+++ b/configure.in
@@ -333,6 +333,9 @@ LOC_ARG_WITH_LIB(bzlib, BZIP2)
 LOC_ARG_WITH_INC(zstd, ZSTD)
 LOC_ARG_WITH_LIB(zstd, ZSTD)
 
+LOC_ARG_WITH_INC(iconv, ICONV)
+LOC_ARG_WITH_LIB(iconv, ICONV)
+
 LOC_ARG_WITH_INC(readline, Readline)
 LOC_ARG_WITH_LIB(readline, Readline)
 
@@ -473,7 +476,6 @@ AC_HEADER_STDC
 AC_CHECK_HEADERS(limits.h termio.h termios.h unistd.h values.h f2c.h g2c.h)
 AC_CHECK_HEADERS(sys/ioctl.h sys/mtio.h sys/resource.h sys/time.h)
 AC_CHECK_HEADERS(sys/timeb.h sys/types.h sys/utsname.h)
-AC_CHECK_HEADERS(libintl.h iconv.h)
 AC_CHECK_HEADERS(langinfo.h)
 AC_HEADER_TIME
 AC_TYPE_OFF_T
@@ -568,6 +570,26 @@ AC_CHECK_LIB(dl, dlsym, DLLIB=-ldl, [
 ])])
 AC_SUBST(DLLIB)
 
+# Mandatory iconv dependency
+
+ICONVLIBPATH=
+ICONVINCPATH=
+ICONV=
+
+# With iconv includes directory
+
+LOC_CHECK_INC_PATH(iconv,iconv,ICONVINCPATH)
+
+LOC_CHECK_INCLUDES(libintl.h iconv.h,iconv,$ICONVBINCPATH)
+
+# With iconv library directory
+
+LOC_CHECK_LIB_PATH(iconv,iconv,ICONVLIBPATH)
+
+ac_save_ldflags="$LDFLAGS"
+LDFLAGS="$LDFLAGS $ICONVLIBPATH"
 AC_CHECK_FUNC(iconv, ICONVLIB=, [
 AC_CHECK_LIB(iconv, iconv, ICONVLIB=-liconv, [
 AC_CHECK_LIB(giconv, iconv, ICONVLIB=-lgiconv, [
@@ -577,7 +599,20 @@ AC_CHECK_LIB(giconv, libiconv, ICONVLIB=-lgiconv, [
     AC_MSG_WARN([*** Unable to locate iconv() function.])
     ICONVLIB=
 ])])])])])])
 AC_SUBST(ICONVLIB)
+LDFLAGS="${ac_save_ldflags}"
+
+LOC_CHECK_LIBS($ICONVLIB,iconv,iconv,$ICONVLIBPATH,ICONV,,,)
+
+#
+
+AC_SUBST(ICONVINCPATH)
+AC_SUBST(ICONVLIBPATH)
+AC_SUBST(ICONV)
+
+# Done checking iconv
 
 have_socket=1
 AC_CHECK_FUNC(socket, SOCKLIB=, [
_______________________________________________
grass-dev mailing list
grass-dev@lists.osgeo.org
https://lists.osgeo.org/mailman/listinfo/grass-dev

Reply via email to