bug-gnulib
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Proper way to get base <iconv.h> with autoconf?


From: Marcin Cieslak
Subject: Proper way to get base <iconv.h> with autoconf?
Date: Sun, 5 Jul 2015 21:11:55 +0000

[X-posted, replies set to address@hidden

Hello,

I have managed to upstream few things needed
to make mono work on FreeBSD without local patches.

Now I am stuck with the iconv detection code.

Mono (or it's dumbled-down glib called eglib) need
libiconv for two things - charset conversion:


https://github.com/mono/mono/blob/master/eglib/src/giconv.c

and getting default charset information

https://github.com/mono/mono/blob/master/eglib/src/gunicode.c#L223

The latter can be solved by using "nl_langinfo (CODESET);"
and avoiding the need to link libcharset.so


Mono uses "standard" iconv.m4 autoconf test, version 11
https://github.com/mono/mono/blob/master/eglib/m4/iconv.m4

which is developed in the gettext and gnulib (The GNU portability
library):

http://git.savannah.gnu.org/cgit/gnulib.git/log/m4/iconv.m4

http://git.savannah.gnu.org/cgit/gettext.git/log/gettext-runtime/m4/iconv.m4

Whenever -I/usr/local/include is added to CPPFLAGS for
some reason (some other library, or jest using /usr/local as
default prefix) the configure script fails to use base header
and libc support and needs using GNU iconv as a dependency;
because this simple test fails:


configure:13910: checking for iconv
configure:13934: cc -o conftest -g -O2 -g -D_GNU_SOURCE -I/usr/local/include  
conftest.c  >&5
/tmp/conftest-ee6d62.o: In function `main':
/home/saper/sw/mono/eglib/conftest.c:42: undefined reference to `libiconv_open'
/home/saper/sw/mono/eglib/conftest.c:43: undefined reference to `libiconv'
/home/saper/sw/mono/eglib/conftest.c:44: undefined reference to `libiconv_close'
cc: error: linker command failed with exit code 1 (use -v to see invocation)
configure:13934: $? = 1
configure: failed program was:
| /* confdefs.h */
| #define PACKAGE_NAME "eglib"
| #define PACKAGE_TARNAME "eglib"
| #define PACKAGE_VERSION "0.3"
| #define PACKAGE_STRING "eglib 0.3"
| #define PACKAGE_BUGREPORT 
"http://bugzilla.xamarin.com/enter_bug.cgi?classification=Mono";

--snip--

| /* end confdefs.h.  */
|
| #include <stdlib.h>
| #include <iconv.h>
|
| int
| main ()
| {
| iconv_t cd = iconv_open("","");
|            iconv(cd,NULL,NULL,NULL,NULL);
|            iconv_close(cd);
|   ;
|   return 0;
| }
configure:13958: cc -o conftest -g -O2 -g -D_GNU_SOURCE -I/usr/local/include  
conftest.c  /usr/local/lib/libiconv.so -Wl,-rpath -Wl,/usr/local/lib >&5
configure:13958: $? = 0
configure:13968: result: yes

The <iconv.h> test fails because /usr/local/include/iconv.h
redefines iconv_open (and friends) to libiconv_open 

Any ideas how to fix/improve the iconv.m4 detection code
- to use the FreeBSD's base <iconv.h> and not require a library?

~Marcin






reply via email to

[Prev in Thread] Current Thread [Next in Thread]