I've had the same failure both with and without the LLVM options enabled in the objc2 cmake options.
Here is how cmake was called in the first place. cd build-1.7-RC1 CC=/usr/local/bin/clang \ CXX=/usr/local/bin/clang \ cmake -G Ninja ../1.7-RC1 This is the output from the last time I tried with the LLVM options enabled. $ cmake . -- Untested version of LLVM (3.4svn) found. -- Disabling LLVM options unless explicitly enabled. -- Found LLVM, enabling LLVM optimisations -- Using /usr/lib/libsupc++.so as the C++ runtime library -- GNUstep install type set to NONE -- Configuring done -- Generating done -- Build files have been written to: /home/frank/objc/build-1.7-RC1 On Wed, Jun 12, 2013 at 6:26 PM, David Chisnall <[email protected] > wrote: > Maxthon: If you can't give helpful advice, please don't give advice. It's > not just unhelpful, it's actually harmful. > > Frank: > If you don't have libcxxrt (which isn't the default in 9.1, but will be in > 9.2), then you'll end up with a separate libobjc and libobjcxx. This is > slightly inconvenient, but isn't a major problem. You will, however, find > that the tests fail. > > You seem to be building with a C++ ABI library though. Please could you > tell me what output CMake produced? > > David > > On 12 Jun 2013, at 22:23, Frank Rehwinkel <[email protected]> > wrote: > > > I don't mind turning Tests back on, but the Test doesn't compile. Looks > like the same problem. > > > > And there may be a problem with your patch submitted back in May. > > > > http://lists.gnu.org/archive/html/gnustep-dev/2013-06/msg00052.html > > > > The patch file extension is .bin. > > > > With Tests on, I get this error from the libobjc build. > > > > Linking C executable Test/AllocatePair > > /usr/local/bin/clang \ > > -std=gnu99 \ > > -fexceptions \ > > Test/CMakeFiles/AllocatePair.dir/AllocatePair.m.o \ > > -o Test/AllocatePair \ > > 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) > > > > > > On Wed, Jun 12, 2013 at 4:43 PM, Maxthon Chan <[email protected]> wrote: > > Actually, buddy, you screwed the library up. Do not turn off Tests! > > > > Sent from my iPhone > > > > On 2013年6月13日, at 4:37, Frank Rehwinkel <[email protected]> > wrote: > > > >> Well I realized the new failure in trying to build libobjc was coming > from the Test directory and I had disabled the Test option the first time I > used cmake. So that explains why this problem didn't surface the first > time. > >> > >> But I'm left with the first problem reported. That -base won't link > with the libobjc.so.4.6. Even when -lsup++ is added to the link options. > >> > >> > >> On Wed, Jun 12, 2013 at 2:31 PM, Maxthon Chan <[email protected]> wrote: > >> Hmm? Maybe the -std=gnu99 is an issue? > >> > >> I never built it using ninja so I am not so sure. Try use make? > >> > >> 在 2013-6-13,上午2:29,Frank Rehwinkel <[email protected]> 写道: > >> > >>> 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 > >
_______________________________________________ Gnustep-dev mailing list [email protected] https://lists.gnu.org/mailman/listinfo/gnustep-dev
