i have ffcall installed but i get the following when trying to emerge gnustep-base: checking ffi.h usability... no checking ffi.h presence... no checking for ffi.h... no checking "for forwarding callback in runtime"... no checking callback.h usability... yes checking callback.h presence... yes checking for callback.h... yes checking "FFI library usage"... none GNUstep requires the ffcall library to do invocations and DO. Make sure this library is installed (see installation instructions). Otherwise DO will not be compatible with other systems, and you will not be able to use gnustep-gui. You most likely do not want to build -base without DO support. Many things, including all applications, won't work at all without DO. If you really want to build -base without DO support, add --disable-do to the configure arguments. For more information, read the GNUstep build guide, ffcall section: http://documents.made-it.com/GNUstep/buildguide.html#FOREIGN.FUNCTION.INTERFACES configure: error: No ffcall interface library found. !!! ERROR: dev-util/gnustep-base-1.7.2 failed. !!! Function egnustepmake, Line 65, Exitcode 1 !!! configure failed (options: --with-xml-prefix=/usr --with-gmp-include=/usr/include --with-gmp-library=/usr/lib) Reproducible: Always Steps to Reproduce: 1. 2. 3. Portage 2.0.49-r18 (default-x86-1.4, gcc-3.3.2, glibc-2.3.2-r9, 2.4.20-acpi-r9) ================================================================= System uname: 2.4.20-acpi-r9 i686 AMD Athlon(tm) Processor Gentoo Base System version 1.4.3.12 ACCEPT_KEYWORDS="x86 ~x86" AUTOCLEAN="yes" CFLAGS="-march=athlon -O3 -fomit-frame-pointer" CHOST="i686-pc-linux-gnu" COMPILER="gcc3" CONFIG_PROTECT="/etc /usr/X11R6/lib/X11/xkb /usr/kde/2/share/config /usr/kde/3.1/share/config /usr/kde/3/share/config /usr/share/config /var/qmail/control" CONFIG_PROTECT_MASK="/etc/gconf /etc/env.d" CXXFLAGS="-march=athlon -O3 -fomit-frame-pointer" DISTDIR="/usr/portage/distfiles" FEATURES="autoaddcvs ccache sandbox userpriv usersandbox" GENTOO_MIRRORS="http://ftp.snt.utwente.nl/pub/os/linux/gentoo http://gentoo.oregonstate.edu http://www.ibiblio.org/pub/Linux/distributions/gentoo" MAKEOPTS="-j2" PKGDIR="/usr/portage/packages" PORTAGE_TMPDIR="/media/tmp" PORTDIR="/usr/portage" PORTDIR_OVERLAY="/usr/local/portage" SYNC="rsync://rsync.gentoo.org/gentoo-portage" USE="3dnow X Xaw3d aalib acpi apm arts avi berkdb bonobo cdr crypt cups dvd encode esd foomaticdb gdbm gif gphoto2 gpm gtk gtk2 guile imlib jpeg libg++ libwww mad mbox mikmod motif mozilla mpeg ncurses nls oggvorbis opengl oss pam pdflib perl png postgres python quicktime readline sdl spell ssl svga tcltk tcpd tetex threads truetype x86 xml2 xmms xv zlib"
oh, the problem is here: checking "for forwarding callback in runtime"... no which is caused by the following bit of configure.ac failing: AC_MSG_CHECKING("for forwarding callback in runtime") AC_EGREP_HEADER(__objc_msg_forward, objc/objc-api.h, AC_MSG_RESULT(yes), AC_MSG_RESULT(no); enable_ffcall=no) i don't know the reason it fails but my objc/objc-api.h DOES have __objc_msg_forward (gcc 3.3.2)
some additional investigation shows that c preprocessor, invoked by the AC_EGREP_HEADER, makes all extern declarations disappear. that results in egrep not finding the function in question.
oh, no, i was wrong, cpp doesn't make ALL extern declarations disappear, but only some... this is the cpp output corresponding to the place where "missing" variable is declared... could it be that variable declarations are removed? ---------------------------------------------------------------- void objc_free (void *mem); # 412 "/usr/local/include/objc/objc-api.h" 3 extern void *(*_objc_malloc) (size_t); extern void *(*_objc_atomic_malloc) (size_t); extern void *(*_objc_valloc) (size_t); extern void *(*_objc_realloc) (void *, size_t); extern void *(*_objc_calloc) (size_t, size_t); extern void (*_objc_free) (void *); Method_t class_get_class_method (MetaClass class, SEL aSel); ----------------------------------------------------------------
dear developers, the problem was with my system [some other software i use have installed /usr/local/inlude/objc/* which wasn't quite correct i figured].