Building on command line works fine for me on osx 10.9 with the following exports:
export CXX="/Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/clang++ -std=c++11 -stdlib=libc++" export CC=/Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/clang export CPP="/Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/clang -E" export LINK="/Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/clang++ -std=c++11 -stdlib=libc++" export CXX_host=/Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/clang++ export CC_host=/Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/clang export CPP_host="/Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/clang -E" export LINK_host=/Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/clang++ export GYP_DEFINES="clang=1 mac_deployment_target=10.8" (Eventually adjust the path to your clang++ adn deployment target) On Sunday, 19 October 2014 22:45:00 UTC+2, Alberto Gonzalez wrote: > > So I think I found the solution. Since I'm using Xcode this works for me > but I think there might be an alternative solution for command line. Here > it is... > > In the previous post, I mentioned that I noticed -std=gnu++0x when using V=1 > while executing the make native command. (As suggested by Ben) I began to > search for gnu++0x in all the files in the project. Within my search I > found several files on the out folder with the following pattern "*. > native.mk". I changed them and than ran the build native, and I noticed > they would be replaced by gnu++0x. So this was not working. > > I then checked other files and noticed there was one in particular in the > build folder "build/standalone.gypi". While going through the file I > noticed there was a section called 'clang==1'. It was the same parameter I > was setting GYP_DEFINES!! Inside there was CLANG_CXX_LANGUAGE_STANDARD > which was set to gnu++0x. I changed the value to gnu++11. I also added a > new parameter called CLANG_CXX_LIBRARY and set it with the value libc++. > > When I ran the make native I noticed the flags -std=gnu++11 and > -stdlib=libc++ which was nice. But this alone did not help with the make > native to work. I went ahead and also ran > > build/gyp_v8 -Dtarget_arch=x64 > > This actually changed the tools/gyp/v8.xcodeproj/project.pbxproj file to > use those configs when adding the v8 project to my solution. When I hit > build, I stopped getting the linking errors!!!! :D > > Now, while searching other errors I was getting while running the sample > code I found this: > https://code.google.com/p/v8/issues/detail?id=3627 > > Here I noticed that the poster was actually using > > /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/clang++ > > instead of using the 'which clang++' command which outputs > /usr/bin/clang++. > > It makes sense because you could say that these are two different > compilers. I think that instead if I use: > > export > CXX="/Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/clang++ > > -std=c++11 -stdlib=libc++" > export > LINK="`/Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/clang++ > > -std=c++11 -stdlib=libc++" > export GYP_DEFINES="clang=1 mac_deployment_target=10.9" > make native > > I should not be getting the LINK errors!!! > > So to summarize: > > If you want the v8 xcode project to work: > > - Change the value *CLANG_CXX_LANGUAGE_STANDARD* to *gnu++11* in the b > *uild/standalone.gypi*. (Or to the dialect used by your xcode project > found in the *Build Settings*) > - Add *CLANG_CXX_LIBRARY *with value *libc++ *right under > *CLANG_CXX_LANGUAGE_STANDARD.* > - Remember to modify it where it says *'clang==1'* > - Then run *build/gyp_v8 -Dtarget_arch=x64* (Or to the target arch of > your preference) > > If you want to build using the terminal using make: > > - export the following variables and run make native: > > > > > > > *export > CXX="/Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/clang++ > > -std=c++11 -stdlib=libc++"export > LINK="`/Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/clang++ > > -std=c++11 -stdlib=libc++"export GYP_DEFINES="clang=1 > mac_deployment_target=10.9"make native* > > - Note I haven't tested this method, but if I get a chance I will, or > if someone could do this that would be great. > > Well I hope this helps anyone in the future and have them compiling like a > happy programmer! I know this will help my future self, since I tend to > forget about these things :P > > 2014-10-19 8:27 GMT-07:00 Alberto Gonzalez <[email protected] <javascript:> > >: > >> I'm attaching the output of the build. I did notice something: >> >> >> /usr/bin/clang++ -std=gnu++11 -stdlib=libc++ '-DU_USING_ICU_NAMESPACE=0' >> '-DHAVE_DLOPEN=0' '-DU_STATIC_IMPLEMENTATION' '-DV8_TARGET_ARCH_X64' >> '-DU_I18N_IMPLEMENTATION' '-DU_ENABLE_DYLOAD=0' >> -I../third_party/icu/source/common -I../third_party/icu/source/i18n -O3 >> -gdwarf-2 -fstrict-aliasing -fvisibility=hidden -mmacosx-version-min=10.9 >> -arch x86_64 -Wall -Wendif-labels -W -Wno-unused-parameter >> -Wno-missing-field-initializers -Wno-deprecated-declarations >> -Wno-logical-op-parentheses -Wno-tautological-compare >> -Wno-return-type-c-linkage -std=gnu++0x -fno-exceptions >> -fvisibility-inlines-hidden -fno-threadsafe-statics -fno-strict-aliasing >> -MMD -MF >> /Users/kunashu/Development/libs/v8/out/native/.deps//Users/kunashu/Development/libs/v8/out/native/obj.target/icui18n/third_party/icu/source/i18n/numfmt.o.d.raw >> >> -c -o >> /Users/kunashu/Development/libs/v8/out/native/obj.target/icui18n/third_party/icu/source/i18n/numfmt.o >> >> ../third_party/icu/source/i18n/numfmt.cpp >> >> It looks like even do I specify -std=gnu++11 inside it also specifies >> another -std=gnu++0x >> >> 2014-10-19 4:23 GMT-07:00 Ben Noordhuis <[email protected] >> <javascript:>>: >> >> On Sun, Oct 19, 2014 at 5:43 AM, Alberto Gonzalez <[email protected] >>> <javascript:>> wrote: >>> > Hello, >>> > >>> > I have been trying to compile the v8 with libc++ but I have not been >>> > successful. I'm currently working with the latest verison of Xcode and >>> my >>> > project is using some c++11 stuff. I have tried using the following: >>> > >>> > export CXX="`which clang++` -std=c++11 -stdlib=libc++" >>> > export LINK="`which clang++` -std=c++11 -stdlib=libc++" >>> > export GYP_DEFINES="clang=1 mac_deployment_target=10.9" >>> > make native >>> > >>> > But when I try to use the library files are generated with my xcode >>> project >>> > I'm getting linking errors such as: >>> > >>> > Undefined symbols for architecture x86_64: >>> > "std::string::end() const", referenced from: >>> > v8::internal::compiler::operator<<(std::ostream&, >>> > v8::internal::compiler::Escaped const&) in >>> libv8_base.a(graph-visualizer.o) >>> > "std::string::begin() const", referenced from: >>> > v8::internal::compiler::operator<<(std::ostream&, >>> > v8::internal::compiler::Escaped const&) in >>> libv8_base.a(graph-visualizer.o) >>> > "std::string::c_str() const", referenced from: >>> > v8::internal::Object::ShortPrint(v8::internal::StringStream*) in >>> > libv8_base.a(objects.o) >>> > v8::internal::FlagList::argv() in libv8_base.a(flags.o) >>> > v8::internal::Logger::SharedLibraryEvent(std::string const&, >>> unsigned >>> > long, unsigned long) in libv8_base.a(log.o) >>> > v8::internal::Logger::SetUp(v8::internal::Isolate*) in >>> > libv8_base.a(log.o) >>> > v8::internal::JavaScriptFrame::Print(v8::internal::StringStream*, >>> > v8::internal::StackFrame::PrintMode, int) const in >>> libv8_base.a(frames.o) >>> > >>> > Am I doing something wrong? or is there a different way to have the v8 >>> > project build on libc++? >>> > >>> > Best Regards >>> > >>> > Alberto Gonzalez Pacheco >>> >>> It looks like it's not actually linking against libc++. Can you run >>> `make native V=1` and post the output of the link phase? >>> >>> -- >>> -- >>> v8-users mailing list >>> [email protected] <javascript:> >>> http://groups.google.com/group/v8-users >>> --- >>> You received this message because you are subscribed to a topic in the >>> Google Groups "v8-users" group. >>> To unsubscribe from this topic, visit >>> https://groups.google.com/d/topic/v8-users/_epMtwP9NDI/unsubscribe. >>> To unsubscribe from this group and all its topics, send an email to >>> [email protected] <javascript:>. >>> For more options, visit https://groups.google.com/d/optout. >>> >> >> >> >> -- >> Saludos, >> >> Alberto Gonzalez >> > > > > -- > Saludos, > > Alberto Gonzalez > -- -- v8-users mailing list [email protected] http://groups.google.com/group/v8-users --- You received this message because you are subscribed to the Google Groups "v8-users" group. To unsubscribe from this group and stop receiving emails from it, send an email to [email protected]. For more options, visit https://groups.google.com/d/optout.
