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

Reply via email to