Hi everyone,

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, a document about how to add a new feature 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?
Did I miss an important step?
Do you understand these errors?
Why do I end up with different errors with Xcode than with the script? Isn’t 
the script using LLVM?
Why is the precompiled header not re-built when there are changes in the 
headers?


Thanks in advance.
J-O H

--
Haché Jacques-Olivier
R&D Engineer at Temasys Communications Pte Ltd
Fr : 06 45 85 48 80
Sg : 9086 3673 

_______________________________________________
webkit-dev mailing list
webkit-dev@lists.webkit.org
https://lists.webkit.org/mailman/listinfo/webkit-dev

Reply via email to