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

Alexandre GOUAILLARD agouaillard at gmail.com
Wed Jul 23 01:49:14 PDT 2014


Hi benjamain, thanks for the answers,

Cmake is not a build system in itself, it is a cross platform build
generator. i.e. you can generate a make file, an VS solution file and a
Xcode file from CMakeLists.txt (cmake -G).

So you mean to say that the committed make files and Xcode files are not
generated from CMake, is that correct? Also, do you have any insight what
the people using cmake end up using for building (is it make/gcc/ld,
make/clang/ld, other flavors of build/compiler/linker) ?

regards,

Alex.




On Wed, Jul 23, 2014 at 4:24 PM, Benjamin Poulain <benjamin at webkit.org>
wrote:

>
> 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> 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
> https://lists.webkit.org/mailman/listinfo/webkit-dev
>
>
>
>
> _______________________________________________
> webkit-dev mailing list
> webkit-dev at lists.webkit.org
> https://lists.webkit.org/mailman/listinfo/webkit-dev
>
>


-- 
Alex. Gouaillard, PhD, PhD, MBA
------------------------------------------------------------------------------------
CTO - Temasys Communications, S'pore / Mountain View
President - CoSMo Software, Cambridge, MA
------------------------------------------------------------------------------------
sg.linkedin.com/agouaillard

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


More information about the webkit-dev mailing list