Checking the ccmake settings for libobjc2, it is already setup to use
libsupc++.
Here is the ninja build failure.
/usr/local/bin/clang
-std=gnu99 -fexceptions
Test/CMakeFiles/AllocatePair_optimised.dir/AllocatePair.m.o
-o Test/AllocatePair_optimised
libobjc.so.4.6 -lsupc++ -Wl,-rpath,/home/frank/objc/build-1.7-RC1
libobjc.so.4.6: undefined reference to `vtable for std::type_info'
libobjc.so.4.6: undefined reference to
`std::type_info::__is_function_p() const'
libobjc.so.4.6: undefined reference to `typeinfo for std::type_info'
libobjc.so.4.6: undefined reference to `std::type_info::~type_info()'
libobjc.so.4.6: undefined reference to
`std::type_info::__do_upcast(__cxxabiv1::__class_type_inf
o const*, void**) const'
libobjc.so.4.6: undefined reference to
`std::type_info::__is_pointer_p() const'
clang-3.4: error: linker command failed with exit code 1 (use -v to see
invocation)
ninja: build stopped: subcommand failed.
On Wed, Jun 12, 2013 at 2:19 PM, Maxthon Chan <[email protected]> wrote:
> Oh I missed this out, you can build LLVM libc++ linking against libsupc++
> too.
>
> My building system on Ubuntu is like this:
>
> clang -> LLVM -> libc++ -> libsupc++ (I am using 3.3rc2, not 3.4 head)
> Étoilé -> gnustep-gui -> gnustep-base -> libobjc2 -> libsupc++
> libobjc2 -> libdispatch -> libobjc2 (ln -s libobjc.so libBlocksRuntime.so)
> Étoilé -> libc++
>
> 在 2013-6-13,上午2:14,Frank Rehwinkel <[email protected]> 写道:
>
> In trying to understand your suggestion by searching the web for llvm and
> libcxxrt references, I run into notes saying that clang is normally linked
> with libsupc++. libsupc++ is in both the FreeBSD 9.1 host and the jail.
>
> Is using libsupc++ an option for building libobjc2 and gnustep-base?
>
>
> On Wed, Jun 12, 2013 at 1:57 PM, Maxthon Chan <[email protected]> wrote:
>
>> Download and build it separately using the same SVN head version.
>>
>> If you built that, you should also build libc++ (LLVM's C++ runtime) and
>> (maybe) link it against libc++rt.
>>
>> Also, when building gnustep-base, specify -I/usr/local/include and
>> -L/usr/local/lib appropriately.
>>
>> 在 2013-6-13,上午1:54,Frank Rehwinkel <[email protected]> 写道:
>>
>> gnustep-base configuration fails. See link error at the bottom and the
>> command line from config.log. In trying to rebuild objc2 1.7-RC1, I get
>> similar link errors now. I don't know why I didn't get these before but
>> maybe because now gnustep-make has been installed.
>>
>> Anyway, these errors seem to indicate that the libcxxrt.a is needed but
>> missing. In my FreeBSD 9.1 jail, there isn't even source for this library
>> let alone the library, and no port. On the FreeBSD host, there are the
>> source directories for it but as pointed out earlier, this library is not
>> yet built automatically.
>>
>> On a fresh FreeBSD 9.1 jail, where llvm and clang (trunk head 3.4) have
>> been manually built and installed to /usr/local, the configure step for
>> -base fails to link objc code.
>>
>> If I do need the libcxxrt.a, how do I build on the host? If I can do
>> that, manually copying library and headers to jail is then necessary I
>> guess.
>>
>> I tried to follow instructions from
>> http://lists.gnu.org/archive/html/gnustep-dev/2013-03/msg00127.html (Building
>> libobjc2 on FreeBSD 9.1 with clang 3.2 using cmake fails)
>>
>> which says to add MK_LIBCPLUSPLUS = yes
>> to /etc/make.conf but then make in /usr/src/lib/libcxxrt gives this error
>>
>> "/usr/share/mk/bsd.own.mk", line 478: MK_LIBCPLUSPLUS can't be set by a
>> user.
>>
>> FreeBSD 9.1 seems to ship with clang 3.1 but the ports would bring it to
>> 3.2. If I'm building the library manually, which clang version is
>> sufficient?
>>
>> In case libcxxrt isn't needed, here are the configure calls for -make and
>> -base. gnustep-make is built and installed with gmake and gmake install
>> (run as root).
>>
>> export CC=/usr/local/bin/clang
>> export CXX=${CC}
>> (
>> cd core/make
>> ./configure \
>> --with-layout=gnustep \
>> --with-objc-lib-flag=-l:libobjc.so.4.6 \
>> CC=${CC} CXX=${CXX}
>> gmake
>> gmake install # as root
>> )
>> export GNUSTEP_CONFIG_FILE=/etc/GNUstep.conf
>> . /usr/GNUstep/System/Library/Makefiles/GNUstep.sh
>> (
>> cd core/base
>> ./configure \
>> --with-layout=gnustep \
>> CC=${CC} CXX=${CXX}
>> )
>>
>> configure:13164: checking whether objc really works
>> configure:13194: /usr/local/bin/clang -o conftest -g -O2 \
>> -I/usr/GNUstep/System/Library/Headers
>> -I/usr/GNUstep/Local/Library/Headers \
>> -I/usr/local/include \
>> -fgnu-runtime -x objective-c \
>> -L/usr/GNUstep/System/Library/Libraries
>> -L/usr/GNUstep/Local/Library/Libraries -L/usr/local/lib \
>> conftest.c \
>> -lrt -lpthread -rdynamic -pthread \
>> -fobjc-nonfragile-abi -fgnu-runtime \
>> -L/home/frank/GNUstep/Library/Libraries
>> -L/usr/GNUstep/Local/Library/Libraries \
>> -L/usr/GNUstep/System/Library/Libraries -L/usr/local/lib \
>> -l:libobjc.so.4.6 -lm
>>
>> In file included from conftest.c:99:
>> In file included from ././config/config.objc.m:2:
>> ././config/objc-common.g:53:3: warning: assignment to Objective-C's isa
>> is deprecated in favor of object_setClass() [-Wdeprecated-objc-isa-usage]
>> obj->isa = self;
>> ^ ~~~~~~~
>> object_setClass( , )
>> ././config/objc-common.g:46:5: note: instance variable is declared here
>> id isa;
>> ^
>> 1 warning generated.
>> /usr/local/lib/libobjc.so.4.6: undefined reference to `vtable for
>> std::type_info'
>> /usr/local/lib/libobjc.so.4.6: undefined reference to
>> `std::type_info::__is_function_p() const'
>> /usr/local/lib/libobjc.so.4.6: undefined reference to `typeinfo for
>> std::type_info'
>> /usr/local/lib/libobjc.so.4.6: undefined reference to
>> `std::type_info::~type_info()'
>> /usr/local/lib/libobjc.so.4.6: undefined reference to
>> `std::type_info::__do_upcast(__cxxabiv1::__class_type_info const*, void**)
>> const'
>> /usr/local/lib/libobjc.so.4.6: undefined reference to
>> `std::type_info::__is_pointer_p() const'
>> clang-3.4: error: linker command failed with exit code 1 (use -v to see
>> invocation)
>>
>> _______________________________________________
>> Gnustep-dev mailing list
>> [email protected]
>> https://lists.gnu.org/mailman/listinfo/gnustep-dev
>>
>>
>>
>
>
_______________________________________________
Gnustep-dev mailing list
[email protected]
https://lists.gnu.org/mailman/listinfo/gnustep-dev