[webkit-dev] Trying to turn WebRTC's code on - MEDIA_STREAM flags

Benjamin Poulain benjamin at webkit.org
Wed Jul 23 01:24:12 PDT 2014


On 7/22/14, 12:48 AM, Jacques-Olivier wrote:
> HI Benjamin,
>
> Thanks for you answer.
>
> I just deleted the XCodeBuild folder and added a couple of files in 
> the project manually.
> My computer is re-building the project, I will see how it goes.
> A couple of extra questions:
>
> 1) After deleting the XCodeBuild folder, I cannot make my first build 
> using Xcode. I end up with a file not found on
> #include <llvm-c/Analysis.h>
> in JavaScriptCore/llvm/LLVMHeaders.h
> I actually had the same issue on my first build. After a successful 
> build from build-webkit, I can build again using Xcode (not clean and 
> build).
> Any lead regarding why?
No idea, I only use build-webkit and make for building.
A lot of people use Xcode so there must be a way to get it to work.
> 2) The Xcode projects is versioned on the repo. Is there anyway to 
> re-generate it automatically?
> Having the Xcode project shared sounds very unsafe. What is someone 
> introduces a bug in it someday?
The Xcode project files are not generated, they are real project files 
created by Xcode. WebKit contributors maintain 3 build systems in 
parallel: Xcode, CMake, and VS.
> Regards,
> J-O H
>
> --
> Haché Jacques-Olivier
> R&D Engineer at Temasys Communications Pte Ltd
> Fr : 06 45 85 48 80
> Sg : 9086 3673
>
> On 22 Jul 2014, at 15:16, Benjamin Poulain <benjamin at webkit.org 
> <mailto:benjamin at webkit.org>> wrote:
>
>> Quick answers inline:
>>
>> On 7/21/14, 9:22 PM, Jacques-Olivier wrote:
>>> Note: I already sent this email, but I didn’t get any answer, nor 
>>> can I see the thread in the archives. Therefore I think it was 
>>> blocked, maybe because of the attachment that I remove this time.
>>>
>>> I’m new on this mailing so I’ll start by introducing myself:
>>> My name Jacques-Olivier Haché (J-O), I’m working for Temasys 
>>> Communication, and I’m entering the WebKit project to work on the 
>>> implementation of WebRTC inside WebKit.
>>> For those who would be following the WebRTC’s news, I’m also the 
>>> main developer of the WebRTC plugin released by Temasys.
>>>
>>> Back to business:
>>>
>>> I was able to download the project, build it and run it inside 
>>> Safari. I did not try to run it in a different browser yet.
>>>
>>> My configuration:
>>>
>>>   * Macbook Air 2012
>>>   * Mac OS X 10.9.4
>>>   * Revision 171167
>>>   * I’m on master
>>>   * I suppose I’m using the regular Mac port as I didn’t see where
>>>     to change from one port to another yet.
>>>   * building for debug mode
>>>
>>> I am now trying to enable the WebRTC related features to get a 
>>> better understanding of the current state of this part of the project.
>>> I have to say that I faced a lack of documentation on this area. I 
>>> found the features list <https://trac.webkit.org/wiki/FeatureFlags>, 
>>> a document about how to add a new feature 
>>> <https://trac.webkit.org/wiki/AddingFeatures> but nothing about how 
>>> to turn a feature on and off (there is actually a TODO about that in 
>>> the second link).
>>>
>>> I looked into the files that one needs to change to add a new 
>>> feature and found two interesting files:
>>>
>>>   * Source/WTF/wtf/FeatureDefines.h - where the WebRTC related
>>>     contants were set to 0 instead of 1
>>>   * Source/cmake/WebKitFeatures.cmake - where the contants were set
>>>     to OFF
>>>
>>> I listed the following definitions that look related to WebRTC
>>>
>>>   * ENABLE_MEDIA_CAPTURE
>>>   * ENABLE_MEDIA_CONTROLS_SCRIPT
>>>   * ENABLE_MEDIA_SOURCE
>>>   * ENABLE_MEDIA_STATISTICS
>>>   * ENABLE_MEDIA_STREAM
>>>   * ENABLE_VIDEO
>>>   * ENABLE_VIDEO_TRACK
>>>
>>> I turned those definitions to 1 and ON in the respective file and 
>>> tried to build.
>>> The code in the header WebCore/Modules/mediastream/mediastream.h 
>>> could not compile apparently because the observer did not have a 
>>> destructor. I created one:
>>>     class Observer {
>>>     public:
>>>         virtual void didAddOrRemoveTrack() = 0;
>>>       virtual ~Observer() {};
>>>     };
>>>
>>> and tried to build again.
>>>
>>> I now have a linking error when building WebCore with Xcode.
>>>
>>> Ld 
>>> /Users/jacquesolivierhache/Workspace/Temasys/WebKitProject/WebKit/WebKitBuild/Debug/WebCore.framework/Versions/A/WebCore 
>>> normal x86_64
>>> cd 
>>> /Users/jacquesolivierhache/Workspace/Temasys/WebKitProject/WebKit/Source/WebCore
>>> export MACOSX_DEPLOYMENT_TARGET=10.9
>>> /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/clang++ 
>>> -arch x86_64 -dynamiclib -isysroot 
>>> /Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.9.sdk 
>>> -L/Users/jacquesolivierhache/Workspace/Temasys/WebKitProject/WebKit/WebKitBuild/Debug 
>>> -F/Users/jacquesolivierhache/Workspace/Temasys/WebKitProject/WebKit/WebKitBuild/Debug 
>>> -filelist 
>>> /Users/jacquesolivierhache/Workspace/Temasys/WebKitProject/WebKit/WebKitBuild/WebCore.build/Debug/WebCore.build/Objects-normal/x86_64/WebCore.LinkFileList 
>>> -Xlinker --no-demangle -exported_symbols_list 
>>> /Users/jacquesolivierhache/Workspace/Temasys/WebKitProject/WebKit/WebKitBuild/Debug/DerivedSources/WebCore/WebCore.LP64.exp 
>>> -install_name 
>>> /System/Library/Frameworks/WebKit.framework/Versions/A/Frameworks/WebCore.framework/Versions/A/WebCore 
>>> -mmacosx-version-min=10.9 -lsqlite3 -lobjc -lANGLE -sub_library 
>>> libobjc -umbrella WebKit -allowable_client WebCoreTestSupport 
>>> -allowable_client WebKit2 -allowable_client WebKitLegacy -framework 
>>> ApplicationServices -framework AudioUnit -framework Carbon 
>>> -framework Cocoa -framework IOSurface -framework OpenGL 
>>> -stdlib=libc++ -fobjc-link-runtime -framework Accelerate -framework 
>>> AudioToolbox -framework CoreAudio -framework IOKit -framework 
>>> JavaScriptCore -licucore -lobjc -lxml2 -lz -framework QuartzCore 
>>> -framework Security -framework SystemConfiguration -single_module 
>>> -compatibility_version 1 -current_version 600.1 -Xlinker 
>>> -dependency_info -Xlinker 
>>> /Users/jacquesolivierhache/Workspace/Temasys/WebKitProject/WebKit/WebKitBuild/WebCore.build/Debug/WebCore.build/Objects-normal/x86_64/WebCore_dependency_info.dat 
>>> -o 
>>> /Users/jacquesolivierhache/Workspace/Temasys/WebKitProject/WebKit/WebKitBuild/Debug/WebCore.framework/Versions/A/WebCore
>>>
>>> Undefined symbols for architecture x86_64:
>>> "__ZN7WebCore11JSNavigator18webkitGetUserMediaEPN3JSC9ExecStateE", 
>>> referenced from:
>>> __ZN7WebCore46jsNavigatorPrototypeFunctionWebkitGetUserMediaEPN3JSC9ExecStateE 
>>> in JSNavigator.o
>>> "__ZN7WebCore15RTCOfferOptions6createERKNS_10DictionaryERi", 
>>> referenced from:
>>> __ZN7WebCore17RTCPeerConnection11createOfferEN3WTF10PassRefPtrINS_29RTCSessionDescriptionCallbackEEENS2_INS_30RTCPeerConnectionErrorCallbackEEERKNS_10DictionaryERi 
>>> in RTCPeerConnection.o
>>> "__ZN7WebCore20MediaConstraintsMock17verifyConstraintsEN3WTF10PassRefPtrINS_16MediaConstraintsEEE", 
>>> referenced from:
>>> __ZN7WebCore21MockMediaStreamCenter26validateRequestConstraintsEN3WTF10PassRefPtrINS_25MediaStreamCreationClientEEENS2_INS_16MediaConstraintsEEES6_ 
>>> in MockMediaStreamCenter.o
>>> __ZN7WebCore21MockMediaStreamCenter17createMediaStreamEN3WTF10PassRefPtrINS_25MediaStreamCreationClientEEENS2_INS_16MediaConstraintsEEES6_ 
>>> in MockMediaStreamCenter.o
>>> "__ZN7WebCore21RTCOfferAnswerOptions6createERKNS_10DictionaryERi", 
>>> referenced from:
>>> __ZN7WebCore17RTCPeerConnection12createAnswerEN3WTF10PassRefPtrINS_29RTCSessionDescriptionCallbackEEENS2_INS_30RTCPeerConnectionErrorCallbackEEERKNS_10DictionaryERi 
>>> in RTCPeerConnection.o
>>> "__ZN7WebCore4toJSEPN3JSC9ExecStateEPNS_17JSDOMGlobalObjectEPNS_16RTCConfigurationE", 
>>> referenced from:
>>> __ZN7WebCore52jsRTCPeerConnectionPrototypeFunctionGetConfigurationEPN3JSC9ExecStateE 
>>> in JSRTCPeerConnection.o
>>> ld: symbol(s) not found for architecture x86_64
>>> clang: error: linker command failed with exit code 1 (use -v to see 
>>> invocation)
>>>
>>> I found that these strange names actually meant 
>>> WebCore::JSNavigator::webkitGetUserMedia(execState *) - and same for 
>>> the others.
>>> Xcode will not find the definition of these functions, but 
>>> Sublime_Text will. It looks like Xcode projects don’t include the 
>>> files containing these definitions.
>>> Am I supposed to run a script to re-generate the projects once I 
>>> enable new features? If yes, I cannot find such a script.
>>> I tried running cmake, but got this message:
>>> Please choose which WebKit port to build (one of 
>>> Efl;WinCE;GTK;AppleWin;WinCairo)
>>> When what I want is the AppleMac port
>>>
>>> If I build using build-webkit, I get a different stack
>>>
>>>
>>> === BUILD TARGET WebCoreExportFileGenerator OF PROJECT WebCore WITH 
>>> CONFIGURATION Debug ===
>>>
>>> Check dependencies
>>> iOS.xcconfig line 1: Unable to find included file 
>>> "<DEVELOPER_DIR>/AppleInternal/XcodeConfig/AspenFamily.xcconfig"
>>> Base.xcconfig line 24: Unable to find included file 
>>> "../../../../Internal/Configurations/UseInternalSDK.xcconfig"
>>>
>>> CompileC 
>>> /Users/jacquesolivierhache/Workspace/Temasys/WebKitProject/WebKit/WebKitBuild/WebCore.build/Debug/WebCoreExportFileGenerator.build/Objects-normal/x86_64/ExportFileGenerator.o 
>>> /Users/jacquesolivierhache/Workspace/Temasys/WebKitProject/WebKit/WebKitBuild/Debug/DerivedSources/WebCore/ExportFileGenerator.cpp 
>>> normal x86_64 c++ com.apple.compilers.llvm.clang.1_0.compiler
>>>     cd 
>>> /Users/jacquesolivierhache/Workspace/Temasys/WebKitProject/WebKit/Source/WebCore
>>>     export LANG=en_US.US-ASCII
>>> /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/clang 
>>> -x c++ -arch x86_64 -fmessage-length=204 
>>> -fdiagnostics-show-note-include-stack -fmacro-backtrace-limit=0 
>>> -fcolor-diagnostics -std=gnu++11 -stdlib=libc++ -Wno-trigraphs 
>>> -fno-exceptions -fno-rtti -fpascal-strings -O0 -Werror 
>>> -Wno-missing-field-initializers -Wmissing-prototypes 
>>> -Wnon-virtual-dtor -Wno-overloaded-virtual 
>>> -Wno-exit-time-destructors -Wno-missing-braces -Wparentheses 
>>> -Wswitch -Wunused-function -Wno-unused-label -Wno-unused-parameter 
>>> -Wunused-variable -Wunused-value -Wempty-body -Wuninitialized 
>>> -Wno-unknown-pragmas -Wno-shadow -Wno-four-char-constants 
>>> -Wno-conversion -Wconstant-conversion -Wint-conversion 
>>> -Wbool-conversion -Wenum-conversion -Wsign-compare 
>>> -Wno-shorten-64-to-32 -Wnewline-eof -Wno-c++11-extensions 
>>> -DDISABLE_THREAD_CHECK -DENABLE_3D_RENDERING 
>>> -DENABLE_CACHE_PARTITIONING -DENABLE_CANVAS_PATH 
>>> -DENABLE_CHANNEL_MESSAGING -DENABLE_CSS_BOX_DECORATION_BREAK 
>>> -DENABLE_CSS_COMPOSITING -DENABLE_CSS_EXCLUSIONS 
>>> -DENABLE_CSS_FILTERS -DENABLE_CSS_GRID_LAYOUT -DENABLE_CSS_REGIONS 
>>> -DENABLE_CSS_SHAPES -DENABLE_CSS_TRANSFORMS_ANIMATIONS_UNPREFIXED 
>>> -DENABLE_CSS3_CONDITIONAL_RULES -DENABLE_CURSOR_VISIBILITY 
>>> -DENABLE_DASHBOARD_SUPPORT -DENABLE_DETAILS_ELEMENT 
>>> -DENABLE_DOM4_EVENTS_CONSTRUCTOR -DENABLE_ENCRYPTED_MEDIA 
>>> -DENABLE_ENCRYPTED_MEDIA_V2 -DENABLE_FILTERS -DENABLE_FULLSCREEN_API 
>>> -DENABLE_GAMEPAD -DENABLE_GEOLOCATION 
>>> -DENABLE_HIDDEN_PAGE_DOM_TIMER_THROTTLING -DENABLE_ICONDATABASE 
>>> -DENABLE_INDEXED_DATABASE -DENABLE_INDIE_UI 
>>> -DENABLE_INPUT_TYPE_COLOR -DENABLE_INPUT_TYPE_COLOR_POPOVER 
>>> -DENABLE_INSPECTOR -DENABLE_LEGACY_CSS_VENDOR_PREFIXES 
>>> -DENABLE_LEGACY_NOTIFICATIONS -DENABLE_LEGACY_VENDOR_PREFIXES 
>>> -DENABLE_LEGACY_WEB_AUDIO -DENABLE_MATHML 
>>> -DENABLE_MEDIA_CONTROLS_SCRIPT -DENABLE_METER_ELEMENT 
>>> -DENABLE_MOUSE_CURSOR_SCALE -DENABLE_NAVIGATOR_CONTENT_UTILS 
>>> -DENABLE_NAVIGATOR_HWCONCURRENCY -DENABLE_NOTIFICATIONS 
>>> -DENABLE_PDFKIT_PLUGIN -DENABLE_PROMISES -DENABLE_PUBLIC_SUFFIX_LIST 
>>> -DENABLE_REQUEST_ANIMATION_FRAME -DENABLE_SHARED_WORKERS 
>>> -DENABLE_SPEECH_SYNTHESIS -DENABLE_SQL_DATABASE 
>>> -DENABLE_SUBPIXEL_LAYOUT -DENABLE_SUBTLE_CRYPTO -DENABLE_SVG_FONTS 
>>> -DENABLE_TEMPLATE_ELEMENT -DENABLE_USERSELECT_ALL -DENABLE_VIDEO 
>>> -DENABLE_VIDEO_TRACK -DENABLE_DATACUE_VALUE -DENABLE_WEBGL 
>>> -DENABLE_WEB_AUDIO -DENABLE_WEB_REPLAY -DENABLE_WEB_SOCKETS 
>>> -DENABLE_PICTURE_SIZES -DENABLE_WEBVTT_REGIONS -DENABLE_XHR_TIMEOUT 
>>> -DENABLE_XSLT -DENABLE_FTL_JIT 
>>> -DWEBKIT_VERSION_MIN_REQUIRED=WEBKIT_VERSION_LATEST -isysroot 
>>> /Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.9.sdk 
>>> -fasm-blocks -fstrict-aliasing -Wdeprecated-declarations 
>>> -Winvalid-offsetof -mmacosx-version-min=10.9 -g -fvisibility=hidden 
>>> -fvisibility-inlines-hidden -fno-threadsafe-statics 
>>> -Wno-sign-conversion 
>>> -I/Users/jacquesolivierhache/Workspace/Temasys/WebKitProject/WebKit/WebKitBuild/WebCore.build/Debug/WebCoreExportFileGenerator.build/WebCoreExportFileGenerator.hmap 
>>> -I/Users/jacquesolivierhache/Workspace/Temasys/WebKitProject/WebKit/WebKitBuild/Debug/include 
>>> -IForwardingHeaders -Iicu 
>>> -I/Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.9.sdk/usr/include/libxslt 
>>> -I/Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.9.sdk/usr/include/libxml2 
>>> -I/Users/jacquesolivierhache/Workspace/Temasys/WebKitProject/WebKit/WebKitBuild/Debug/DerivedSources/WebCore 
>>> -I/Users/jacquesolivierhache/Workspace/Temasys/WebKitProject/WebKit/WebKitBuild/Debug/usr/local/include 
>>> -I/Users/jacquesolivierhache/Workspace/Temasys/WebKitProject/WebKit/WebKitBuild/Debug/usr/local/include/WebKitAdditions 
>>> -I/Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.9.sdk/usr/local/include/WebKitAdditions 
>>> -I/Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/include 
>>> -I/Users/jacquesolivierhache/Workspace/Temasys/WebKitProject/WebKit/WebKitBuild/WebCore.build/Debug/WebCoreExportFileGenerator.build/DerivedSources/x86_64 
>>> -I/Users/jacquesolivierhache/Workspace/Temasys/WebKitProject/WebKit/WebKitBuild/WebCore.build/Debug/WebCoreExportFileGenerator.build/DerivedSources 
>>> -Wall -Wextra -Wcast-qual -Wchar-subscripts -Wextra-tokens 
>>> -Wformat=2 -Winit-self -Wmissing-format-attribute -Wmissing-noreturn 
>>> -Wpacked -Wpointer-arith -Wredundant-decls -Wundef -Wwrite-strings 
>>> -Wexit-time-destructors -Wglobal-constructors -Wtautological-compare 
>>> -Wimplicit-fallthrough 
>>> -F/Users/jacquesolivierhache/Workspace/Temasys/WebKitProject/WebKit/WebKitBuild/Debug 
>>> -include 
>>> /Users/jacquesolivierhache/Workspace/Temasys/WebKitProject/WebKit/WebKitBuild/PrecompiledHeaders/WebCorePrefix-gcoyowpevvvzkbecqfhdngvxbkag/WebCorePrefix.h 
>>> -MMD -MT dependencies -MF 
>>> /Users/jacquesolivierhache/Workspace/Temasys/WebKitProject/WebKit/WebKitBuild/WebCore.build/Debug/WebCoreExportFileGenerator.build/Objects-normal/x86_64/ExportFileGenerator.d 
>>> --serialize-diagnostics 
>>> /Users/jacquesolivierhache/Workspace/Temasys/WebKitProject/WebKit/WebKitBuild/WebCore.build/Debug/WebCoreExportFileGenerator.build/Objects-normal/x86_64/ExportFileGenerator.dia 
>>> -c 
>>> /Users/jacquesolivierhache/Workspace/Temasys/WebKitProject/WebKit/WebKitBuild/Debug/DerivedSources/WebCore/ExportFileGenerator.cpp 
>>> -o 
>>> /Users/jacquesolivierhache/Workspace/Temasys/WebKitProject/WebKit/WebKitBuild/WebCore.build/Debug/WebCoreExportFileGenerator.build/Objects-normal/x86_64/ExportFileGenerator.o
>>> fatal error: file 
>>> '/Users/jacquesolivierhache/Workspace/Temasys/WebKitProject/WebKit/WebKitBuild/Debug/usr/local/include/wtf/FeatureDefines.h' 
>>> has been modified since the precompiled header
>>> '/Users/jacquesolivierhache/Workspace/Temasys/WebKitProject/WebKit/WebKitBuild/PrecompiledHeaders/WebCorePrefix-gcoyowpevvvzkbecqfhdngvxbkag/WebCorePrefix.h.pch' 
>>> was built
>>> 1 error generated.
>>>
>>> ** BUILD FAILED **
>>>
>>>
>>> The following build commands failed:
>>> CompileC 
>>> /Users/jacquesolivierhache/Workspace/Temasys/WebKitProject/WebKit/WebKitBuild/WebCore.build/Debug/WebCoreExportFileGenerator.build/Objects-normal/x86_64/ExportFileGenerator.o 
>>> /Users/jacquesolivierhache/Workspace/Temasys/WebKitProject/WebKit/WebKitBuild/Debug/DerivedSources/WebCore/ExportFileGenerator.cpp 
>>> normal x86_64 c++ com.apple.compilers.llvm.clang.1_0.compiler
>>> (1 failure)
>>>
>>>
>>>
>>> Is anyone used to turn the WebRTC code on and off?
>> This code has not been updated in a while, you will have to fix some 
>> stuff here and there to get it to do anything.
>>> Did I miss an important step?
>> Probably not.
>>> Do you understand these errors?
>> The first error could simply be because the files defining those 
>> symbols are not included in the XCode project file. Nobody has worked 
>> on WebRTC for a while, it probably only builds for GTK.
>>
>> The second error is likely a problem with the incremental build. I 
>> would just delete WebKitBuild and start a clean build.
>>> Why is the precompiled header not re-built when there are changes in 
>>> the headers?
>> Yep, that's weird. I only run into problems with precompiled headers 
>> when I change my SDK.
>> But after changing feature flags you often have to do a clean build 
>> anyway. There are too many code generators that are not tracking 
>> these kind of dependencies.
>>
>> Good luck!
>> Benjamin
>> _______________________________________________
>> webkit-dev mailing list
>> webkit-dev at lists.webkit.org <mailto:webkit-dev at lists.webkit.org>
>> https://lists.webkit.org/mailman/listinfo/webkit-dev
>

-------------- next part --------------
An HTML attachment was scrubbed...
URL: <https://lists.webkit.org/pipermail/webkit-dev/attachments/20140723/1544c6b5/attachment.html>


More information about the webkit-dev mailing list