From owner-freebsd-ports@freebsd.org Sun Jul 5 21:11:59 2015 Return-Path: Delivered-To: freebsd-ports@mailman.ysv.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:1900:2254:206a::19:1]) by mailman.ysv.freebsd.org (Postfix) with ESMTP id A7B6598E54E for ; Sun, 5 Jul 2015 21:11:59 +0000 (UTC) (envelope-from saper@saper.info) Received: from mailman.ysv.freebsd.org (mailman.ysv.freebsd.org [IPv6:2001:1900:2254:206a::50:5]) by mx1.freebsd.org (Postfix) with ESMTP id 8C6091616 for ; Sun, 5 Jul 2015 21:11:59 +0000 (UTC) (envelope-from saper@saper.info) Received: by mailman.ysv.freebsd.org (Postfix) id 8B9F098E54B; Sun, 5 Jul 2015 21:11:59 +0000 (UTC) Delivered-To: ports@mailman.ysv.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:1900:2254:206a::19:1]) by mailman.ysv.freebsd.org (Postfix) with ESMTP id 8B1F598E54A for ; Sun, 5 Jul 2015 21:11:59 +0000 (UTC) (envelope-from saper@saper.info) Received: from m.saper.info (m.saper.info [IPv6:2a01:4f8:a0:7383::]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (Client CN "m.saper.info", Issuer "Marcin Cieslak 2011" (not verified)) by mx1.freebsd.org (Postfix) with ESMTPS id 059861612; Sun, 5 Jul 2015 21:11:58 +0000 (UTC) (envelope-from saper@saper.info) Received: from m.saper.info (saper@m.saper.info [IPv6:2a01:4f8:a0:7383::]) by m.saper.info (8.14.9/8.14.9) with ESMTP id t65LBti4005810 (version=TLSv1/SSLv3 cipher=DHE-RSA-AES256-GCM-SHA384 bits=256 verify=NO); Sun, 5 Jul 2015 21:11:55 GMT (envelope-from saper@saper.info) Received: from localhost (saper@localhost) by m.saper.info (8.14.9/8.14.9/Submit) with ESMTP id t65LBt5w005807; Sun, 5 Jul 2015 21:11:55 GMT (envelope-from saper@saper.info) X-Authentication-Warning: m.saper.info: saper owned process doing -bs Date: Sun, 5 Jul 2015 21:11:55 +0000 From: Marcin Cieslak Reply-To: ports@FreeBSD.org To: ports@FreeBSD.org, tijl@FreeBSD.org, bug-gnulib@gnu.org Subject: Proper way to get base with autoconf? Message-ID: MIME-Version: 1.0 Content-Type: TEXT/PLAIN; charset=US-ASCII X-BeenThere: freebsd-ports@freebsd.org X-Mailman-Version: 2.1.20 Precedence: list List-Id: Porting software to FreeBSD List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Sun, 05 Jul 2015 21:11:59 -0000 [X-posted, replies set to ports@FreeBSD.org] 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 | #include | | 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 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 and not require a library? ~Marcin