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
[email protected]
https://lists.webkit.org/mailman/listinfo/webkit-dev