This page, established on February 10, 2008, aims to provide a reliable, readable documentation for building a stable s60webkit.
Most of the content is based on the original wiki site which has been however out-dated for some time. To encourage more Forum Nokia developers to join in and maintain the documents, we decided to move the page into Forum Nokia's wiki so that one need not register another new account to be an editor of the page. In other words, if you have a Nokia Forum account, you already can join in maintaining this wiki!
1. Firstly, you'll need to configure your computer.
2. Then checkout and build the source. You can also browse the latest source through the web. Note: according to the information, 21772 is the latest stable revision.''
3. When you're up and running, check out S60Reindeer Reindeer, a completely open browser that sits on top of S60WebKit
To work with S60WebKit, you'll need to install a couple of tools:
Download and install the S60 3rd Edition SDK from Forum Nokia. Choose "3rd Edition (262 MB)" from the listbox on the right of the page and click on the "Download" button.
Note: The S60 3rd Edition Feature Pack 1 is currently incompatible with the S60WebKit codebase. Please ensure you select "3rd Edition (262 MB)" and not "3rd Edition, FP 1 (355 MB)" from the listbox.
Note: Some users have reported that the installation software hangs on XP service pack 2. This is a known incompatability between the OS version level and the SDK's installation package. A quick workaround is available here.
Note: Run regedit and make sure you have a registry entry in HKEY_LOCAL_MACHINE\SOFTWARE\Symbian\Series 60\3rd Ed. SDK for Symbian OS with a key: TargetDir = drive:\path_to_symbian\S60_3rd_MR_2\
Note: For recent revisions (tested with 23884) you will need the following additional libs and headers:
browserlauncher.h from FP1 beta plugin
e32hashtable.h from UIQ3 epoc32/include dir
aiwdialdata.lib from FP1 beta plugin (referenced in webkit.mmp)
xmlengine.dll is supplied in the source tree at S60Internals\target\RVCT\S60LibsRVCT.zip
Latest Stable Release is 21772 according to the information.--Kennykaiyinyu 11:59, 10 February 2008 (EET)
You'll need a Subversion client to checkout and update the source.
If you prefer a graphical interface, there are quite a few to choose from. One candidate is TortoiseSVN. However, there are a couple of Subversion related tools which assume the Subversion command line interface is in your PATH, so you may wish to install both.
(This cannot be downloaded anymore. Is Carbide 1.2 acceptable? --Kennykaiyinyu 11:59, 10 February 2008 (EET))
Carbide.c++ Express version 1.0 is a free IDE for mobile application development.
We use the compilers and debugger that ships with the IDE to build and work with S60WebKit. For further information about Carbide and IDE's to use with S60WebKit, see the [wiki:S60IDE IDE] page.
Install ActiveState Perl v5.6.1 from here.
Once you've installed these tools, you're ready to [wiki:S60CheckoutAndBuild check out and build] S60WebKit.
Checkout a copy of S60WebKit from the WebKit Subversion repository:
cd <SDK installation path> svn checkout svn://anonsvn.opensource.apple.com/svn/webkit/S60/trunk S60
Please note: By default, the SDK installation path is
C:\Symbian\9.1\S60_3rd
build.bat
$cbdhome = "$ENV{ProgramFiles}\\Nokia\\Carbide.c++ v1.2" unless -d $cbdhome;
delete $ENV{'MWSYM2LIBRARIES'};
my $sdkhome = $Registry->{ "HKEY_LOCAL_MACHINE/SOFTWARE/Symbian/Series 60/3rd Ed. SDK for Symbian OS/TargetDir" };
cd <SDK installation path>\S60 build
Please note that on rare occasions, when compiling for the very first time you may encounter the following error:
No rule to make target \EPOC32\INCLUDE\WebKitIcons_sdk.mbg
This error only occurs once and can safely be ignored: running a target build via build -t (which has an execution time of a couple of seconds) will return no errors. See bug 9289 for further information.
Once you've clean compiled, the next step is to check out Reindeer in the emulator, or you could debug and by following the debugging instructions on the Appendix: IDEs for S60WebKit page.
Here's a quick overview of what build.bat does:
The build script supports a number of options. Here's the full usage statement:
build.bat [OPTS] [COMPONENT] -n Do not include clean in compile -f run freeze phase and exit -g GCCE compiler for hardware build -w Code Warrior compiler for emulator build -t Target build -d Turn on debugging, forces udeb flavour -e Export generated environment and exit -r Remove S60Internal dependencies and exit -s X Map drive to this letter. Defaults to x -h View this message
To compile all components for winscw:
build -w
To compile all components for GCCE:
build -g
To do a 'target', or incremental, build:
build -t
To do build webcore, but don't execute the clean phase:
build -n webcore
To fully rebuild the memory manager:
build memman
Options can be bundled. For example, a GCCE target compile with debugging turned on (this forces udeb) for webkit:
build -gtd webkit
Reindeer is the first and only open source browser for mobile platforms. You will find it in the Installat. folder in the menu grid (click the phone emulator menu button on the left to see the menu grid). It's a fully functioning mobile browser.
You can view the Reindeer source here here.
It's well worth noting that Reindeer is licensed under the liberal BSD license, and contributions that enhance Reindeer are almost always committed into the codebase. So in many ways, the direction Reindeer goes in is entirely community driven. We welcome you to checkout, build and play around with the Reindeer and S60WebKit source.
You may find it convenient to move Reindeer to the top-level menu: in the Installat. menu, select Reindeer, then click Options>Move to folder and select Menu as the destination. Go Back then use Options>Move to place the icon in the middle of the 2nd row, so it will be your default.
This appendix contains information and recommendations about which IDE to use when developing on S60WebKit.
As mentioned in the [wiki:S60ConfigureComputer environment setup instructions], the recommended version of the Carbide.c++ IDE is version 1.0. (This IDE cannot be downloaded anymore. Kenny Yu.)
Carbide.c++ version 1 is the primary recommendation because it's free software (in practice, quite a number of different IDEs are used).
Carbide.c++ version 1.0 does have some limitations, especially with importing a large code base such as S60WebKit into an 'IDE project'. When using version 1.0, people tend to edit the source in their favorite editor and then compile/run the emulator with the [wiki:S60CheckoutAndBuild provided scripts]. Carbide version 1.0 can still be used for debugging (see below).
See Marcus Groeber's comments regarding Carbide.c++ version 1.2 and S60WebKit:
What did actually work for me is build WebKit with Carbide.c++ 1.2 (due to the massively improved ability to import complex bld.inf files into the IDE, and then defer the building to the usual command line tools). // You won't be able to use the build.bat script that comes with WebKit, so you will need to set up a permanent "subst" of X: to the EPOCROOT of your 3rd Edition SDK by hand (note that "3rd Edition MR" will not work, unfortunately!), and create an additional SDK descriptor for devices.exe that refers to your X: drive as the EPOCROOT: // Device: S60_3rd_X:com.nokia.s60 Root is X:\ Tools path is X:\ // It may still be necessary to run the original build script at least once to copy the necessary support files in the right location, but after this, I was able to rebuild and debug Reindeer from inside Carbide.c++ // [Added after original post:] You will also need to overwrite variant.cfg in your 3.0 SDK with the copy included with the browser source (in S60\S60Internals\S60Variant.zip). The reason is that build.bat also replaces variant.cfg in the SDK while building, and then reverts back again after it exits. This temporarily makes available a few specific macros that control the exact build environment that is expected. // So even if you have run build.bat once (which you must), you will also need to extract S60Variant.zip before using the IDE.
Thanks Marcus!
It is recommended that you get acquainted with Carbide.c++ version 1.0 functionality by following the tutorial withing Carbide with a sample Hello World Project before attempting to debug the S60WebKit code.
To set breakpoints in S60WebKit code for debugging with Carbide:
Click Finish.
X:\Epoc32\release\winscw\udeb\epoc.exe
Click Apply and then Debug
This should allow you to set breakpoints and debug the sources that make up the !WebUi.exe binary only. To debug other Dlls/binaries that make up the Browser, do the following:
Note: this example is loading !MemMan.dll but you can also select any other browser based binary file
Select radio button "Existing Project:", click Search and select "Debug !WebUi.exe" ; Uncheck the box "Create a Launch Configuration:" and click Finish
To add addional S60WebKit browser binaries for debugging, just repeat the steps above.
The MemoryManager, S60WebKit and Reindeer components are covered by the Nokia BSD license. The WebCore and JavaScriptCore components are covered by the GNU Lesser General Public License (LGPL). The Netscape Plug-in API is a ported version of the open source plug-in interface from Netscape Communications Corporation, which is covered by the Netscape Public License v1.1.
Want to get in touch? Your ideas, questions and feedback are appreciated!
We use a lot of the same communication channels as the rest of the WebKit project:
We keep a close eye on the WebKit mailing list, webkit-dev@opendarwin.org. You can sign up for the list here
You'll find quite a few of the S60WebKit contributors active in channel #webkit on the FreeNode IRC network (irc.freenode.net)
You can also get in touch with us directly through S60WebKit@nokia.com
Error Case: 1 elf2e32 : Error: E1036: Symbol _ZTV15CSimpleNotifier Missing from ELF File : ..\EPOC32\BUILD\S60\MEMMAN\GCCE\UREL\MemMan_sdk.dll
Solution in file D:\Symbian\9.2\S60_3rd_FP1_3\S60\MemoryManager\EABI\MemMan_sdkU.DEF Change _ZTV15CSimpleNotifier @ 27 NONAME ; DATA To _ZTV15CSimpleNotifier @ 27 ABSENT ; DATA
Error Case: 2
JavaScriptCore//bindings/HashFunctions.h:35: error: `int64_t' does not name a type
Solution in file D:\Symbian\9.2\S60_3rd_FP1_3\Epoc32\include\oem\javascriptcore\stdint.h Add following lines typedef long long int64_t; typedef unsigned long long uint64_t;
typedef unsigned long uintptr_t; typedef unsigned long intptr_t;
Before
Also make the same change in D:\Symbian\9.2\S60_3rd_FP1_3\S60\JavaScriptCore\kjs\stdint.h
Error Case: 3
elf2e32 : Error: E1036: Symbol _ZN3KJS5ValueC1EPNS_8ValueImpE,_ZN3KJS5ValueC1ERKS0_,_ZN3KJS5ValueC2EPNS_8ValueImpE,_ZN3KJS5ValueC
ERKS0_,_ZN3KJS5ValueD1Ev,_ZN3KJS5ValueD2Ev,_ZN3KJS5ValueaSERKS0_ Missing from ELF File : ..\EPOC32\BUILD\S60\JAVASCRIPTCORE\GCCE\
REL\JavaScriptCore_sdk.DLL.
Solution,
Mark them as ABSENT in
D:\Symbian\9.2\S60_3rd_FP1_3\S60\JavaScriptCore\group\EABI\JavaScriptCore_gcceU.def
And
D:\Symbian\9.2\S60_3rd_FP1_3\S60\JavaScriptCore\group\BMARM\JavaScriptCoreU.def
Error Case: 4
elf2e32 : Error: E1036: Symbol _ZTI15CSimpleNotifier,_ZTV15CSimpleNotifier Missing from ELF File : ..\EPOC32\BUILD\S60\MEMMAN\GCCE\UREL\MemMan_sdk.dll.
Solution,
Mark them as ABSENT in
D:\Symbian\9.2\S60_3rd_FP1_3\S60\MemoryManager\EABI\MemMan_gcceU.DEF
And
D:\Symbian\9.2\S60_3rd_FP1_3\S60\MemoryManager\EABI\MemMan_sdkU.DEF
Error Case: 5
make -r -f "\EPOC32\BUILD\S60\GCCE.make" TARGET CFG=UREL VERBOSE=-s
..\EPOC32\RELEASE\ARMV5\UREL\KHTML.lib(kjs_binding.o): In function `KJS::ScriptInterpreter::createLanguageInstanceForValue(KJS::Ex ecState*, KJS::Bindings::Instance::BindingLanguage, KJS::Object const&, KJS::Bindings::RootObject const*, KJS::Bindings::RootObjec t const*)': Kjs_binding.cpp:(.text+0x1884): undefined reference to `KJS::Interpreter::createLanguageInstanceForValue(KJS::ExecState*, KJS::Bin dings::Instance::BindingLanguage, KJS::Object const&, KJS::Bindings::RootObject const*, KJS::Bindings::RootObject const*)' ..\EPOC32\RELEASE\ARMV5\UREL\KHTML.lib(kjs_dom.o): In function `KJS::getRuntimeObject(KJS::ExecState*, DOM::Node const&)': Kjs_dom.cpp:(.text+0xd48c): undefined reference to `KJS::RuntimeObjectImp::RuntimeObjectImp(KJS::Bindings::Instance*, bool)' Kjs_dom.cpp:(.text+0xd530): undefined reference to `KJS::RuntimeObjectImp::RuntimeObjectImp(KJS::Bindings::Instance*, bool)' Kjs_dom.cpp:(.text+0xd5d4): undefined reference to `KJS::RuntimeObjectImp::RuntimeObjectImp(KJS::Bindings::Instance*, bool)' ..\EPOC32\RELEASE\ARMV5\UREL\KHTML.lib(kjs_events.o): In function `KJS::gcUnprotect(KJS::ValueImp*)': Kjs_events.cpp:(.text._ZN3KJS11gcUnprotectEPNS_8ValueImpE[_ZN3KJS11gcUnprotectEPNS_8ValueImpE]+0x18): undefined reference to `KJS:
..\EPOC32\RELEASE\ARMV5\UREL\KHTML.lib(kjs_events.o): In function `KJS::gcProtect(KJS::ValueImp*)': Kjs_events.cpp:(.text._ZN3KJS9gcProtectEPNS_8ValueImpE[_ZN3KJS9gcProtectEPNS_8ValueImpE]+0x18): undefined reference to `KJS::Prote ctedValues::increaseProtectCount(KJS::ValueImp*)' ..\EPOC32\RELEASE\ARMV5\UREL\KWQ.lib(KWQKHTMLPart.o): In function `KWQKHTMLPart::bindingRootObject()': Kwqkhtmlpart.cpp:(.text+0x450c): undefined reference to `KJS::Bindings::RootObject::setInterpreter(KJS::Interpreter*)' ..\EPOC32\RELEASE\ARMV5\UREL\KWQ.lib(KWQKHTMLPart.o): In function `KWQKHTMLPart::cleanupPluginRootObjects()': Kwqkhtmlpart.cpp:(.text+0x7e38): undefined reference to `KJS::Bindings::RootObject::removeAllNativeReferences()' ..\EPOC32\RELEASE\ARMV5\UREL\KWQ.lib(KWQKHTMLPart.o): In function `KWQKHTMLPart::getObjectInstanceForView(MWebCoreWidget*)': Kwqkhtmlpart.cpp:(.text+0xb29c): undefined reference to `KJS::Bindings::Instance::createBindingForLanguageInstance(KJS::Bindings:: Instance::BindingLanguage, void*, KJS::Bindings::RootObject const*)' ..\EPOC32\RELEASE\ARMV5\UREL\KWQ.lib(KWQKHTMLPart.o): In function `KWQKHTMLPart::windowScriptNPObject()': Kwqkhtmlpart.cpp:(.text+0xb314): undefined reference to `_NPN_CreateScriptObject'
Solution I added following lines to D:\Symbian\9.2\S60_3rd_FP1_3\S60\JavaScriptCore\group\EABI\JavaScriptCore_gcceU.def And to D:\Symbian\9.2\S60_3rd_FP1_3\S60\JavaScriptCore\group\BMARM\JavaScriptCoreU.def
_ZN3KJS11Interpreter30createLanguageInstanceForValueEPNS_9ExecStateENS_8Bindings8Instance15BindingLanguageERKNS_6ObjectEPKNS3_10RootObjectESB_ @ 389 NONAME _ZN3KJS16RuntimeObjectImpC1EPNS_8Bindings8InstanceEb @ 390 NONAME _ZN3KJS16RuntimeObjectImpC2EPNS_8Bindings8InstanceEb @ 391 NONAME _ZTIN3KJS16RuntimeObjectImpE @ 392 NONAME ; #<TI># _ZTVN3KJS16RuntimeObjectImpE @ 393 NONAME ; #<VT># _ZN3KJS15ProtectedValues20decreaseProtectCountEPNS_8ValueImpE @ 394 NONAME _ZN3KJS15ProtectedValues20increaseProtectCountEPNS_8ValueImpE @ 395 NONAME _ZN3KJS8Bindings10RootObject14setInterpreterEPNS_11InterpreterE @ 396 NONAME _ZN3KJS8Bindings10RootObject25removeAllNativeReferencesEv @ 397 NONAME _ZN3KJS8Bindings8Instance32createBindingForLanguageInstanceENS1_15BindingLanguageEPvPKNS0_10RootObjectE @ 398 NONAME _NPN_CreateScriptObject @ 399 NONAME
Also Recompile JavascriptCore completely use build -g JavascriptCore
Error Case: 6
make -r -f "\EPOC32\BUILD\S60\GCCE.make" TARGET CFG=UREL VERBOSE=-s
In file included from WEBKIT//BrowserControl//inc/BrCtlInterface.h:51,
from WEBKIT\\BrowserCore\\FormControls\\src\\Fcontrolfileinputskin.cpp:49:
..//EPOC32//include/eikmenup.h: In member function `TBool CEikMenuPaneItem::IsScaleableText(const TDesC&) const': ..//EPOC32//include/eikmenup.h:242: warning: enumeral mismatch in conditional expression: `TFalse' vs `TTrue' In file included from WEBKIT\\BrowserCore\\FormControls\\src\\Fcontrolfileinputskin.cpp:50: ..//EPOC32//include//oem/commoncontentpolicy.h:197:3: warning: "/*" within comment In file included from WEBKIT\\BrowserCore\\FormControls\\src\\Fcontrolfileinputskin.cpp:60: WEBCORE//bridge/WebCoreFormEvent.h:51:32: warning: no newline at end of file In file included from WEBCORE//bridge/WebCoreWidget.h:35,
from WEBCORE//bridge/WebCoreGraphicsContext.h:35,
from WEBKIT//BrowserCore//FormControls//Inc/FControlFileInputSkin.h:53,
from WEBKIT\\BrowserCore\\FormControls\\src\\Fcontrolfileinputskin.cpp:61:
WEBCORE//bridge/WebCorePalette.h:63:23: warning: no newline at end of file In file included from WEBKIT//BrowserCore//FormControls//Inc/FControlFileInputSkin.h:53,
from WEBKIT\\BrowserCore\\FormControls\\src\\Fcontrolfileinputskin.cpp:61:
WEBCORE//bridge/WebCoreGraphicsContext.h:159:7: warning: no newline at end of file In file included from WEBCORE//bridge/WebCoreFormControls.h:38,
from WEBCORE//bridge/WebCoreFormControlFactory.h:34,
from WEBKIT//BrowserCore//FormControls//Inc/FControlFileInputSkin.h:55,
from WEBKIT\\BrowserCore\\FormControls\\src\\Fcontrolfileinputskin.cpp:61:
WEBCORE//bridge/WebCoreFormEvent.h:51:32: warning: no newline at end of file In file included from WEBCORE//bridge/WebCoreBridge.h:36,
from WEBKIT\\BrowserCore\\FormControls\\src\\Fcontrolfileinputskin.cpp:62:
WEBCORE//bridge/WebCoreKeyValuePair.h:61:15: warning: no newline at end of file In file included from WEBCORE//bridge/WebCoreImageCarrier.h:9,
from WEBCORE//bridge/WebCoreBridge.h:37,
from WEBKIT\\BrowserCore\\FormControls\\src\\Fcontrolfileinputskin.cpp:62:
WEBCORE//bridge/WebCoreImageRenderer.h:93:15: warning: no newline at end of file In file included from WEBCORE//bridge/WebCoreBridge.h:37,
from WEBKIT\\BrowserCore\\FormControls\\src\\Fcontrolfileinputskin.cpp:62:
WEBCORE//bridge/WebCoreImageCarrier.h:43:13: warning: no newline at end of file In file included from WEBCORE//bridge/WebCoreBridge.h:38,
from WEBKIT\\BrowserCore\\FormControls\\src\\Fcontrolfileinputskin.cpp:62:
WEBCORE//bridge/WebCoreFormData.h:59:27: warning: no newline at end of file In file included from memorymanager//inc/oomdefs.h:48,
from WEBCORE//bridge/WebCoreBridge.h:40,
from WEBKIT\\BrowserCore\\FormControls\\src\\Fcontrolfileinputskin.cpp:62:
memorymanager//inc/ObjectBase.h:117:7: warning: no newline at end of file In file included from WEBKIT//BrowserCore//Renderers//inc/ImageRendererFactory.h:48,
from WEBKIT//BrowserView//inc/WebKitView.h:60,
from WEBKIT\\BrowserCore\\FormControls\\src\\Fcontrolfileinputskin.cpp:63:
WEBCORE//bridge/WebCoreImageRendererFactory.h:91:15: warning: no newline at end of file In file included from WEBKIT//BrowserView//inc/WebKitLoader.h:52,
from WEBKIT//BrowserView//inc/WebKitBridge.h:50,
from WEBKIT\\BrowserCore\\FormControls\\src\\Fcontrolfileinputskin.cpp:65:
WEBCORE//bridge/WebCoreFormData.h:59:27: warning: no newline at end of file In file included from WEBKIT\\BrowserCore\\FormControls\\src\\Fcontrolfileinputskin.cpp:66: WEBKIT//BrowserView//inc/WidgetExtension.h:48:24: e32hashtab.h: No such file or directory WEBKIT//BrowserView//inc/WidgetExtension.h:50:32: WidgetEngineBridge.h: No such file or directory In file included from WEBKIT\\BrowserCore\\FormControls\\src\\Fcontrolfileinputskin.cpp:66: WEBKIT//BrowserView//inc/WidgetExtension.h: At global scope: WEBKIT//BrowserView//inc/WidgetExtension.h:78: error: expected class-name before ',' token WEBKIT//BrowserView//inc/WidgetExtension.h:259: error: `WidgetEventHandler' has not been declared WEBKIT//BrowserView//inc/WidgetExtension.h:259: error: ISO C++ forbids declaration of `aOnSelectCallback' with no type WEBKIT//BrowserView//inc/WidgetExtension.h:267: error: ISO C++ forbids declaration of `WidgetEventHandler' with no type WEBKIT//BrowserView//inc/WidgetExtension.h:267: error: expected `;' before '*' token WEBKIT//BrowserView//inc/WidgetExtension.h:275: error: `WidgetEventHandler' has not been declared WEBKIT//BrowserView//inc/WidgetExtension.h:275: error: ISO C++ forbids declaration of `aMenuCallback' with no type WEBKIT//BrowserView//inc/WidgetExtension.h:283: error: ISO C++ forbids declaration of `WidgetEventHandler' with no type WEBKIT//BrowserView//inc/WidgetExtension.h:283: error: expected `;' before '*' token WEBKIT//BrowserView//inc/WidgetExtension.h:291: error: `WidgetEventHandler' has not been declared WEBKIT//BrowserView//inc/WidgetExtension.h:291: error: ISO C++ forbids declaration of `aMenuCallback' with no type WEBKIT//BrowserView//inc/WidgetExtension.h:299: error: ISO C++ forbids declaration of `WidgetEventHandler' with no type WEBKIT//BrowserView//inc/WidgetExtension.h:299: error: expected `;' before '*' token WEBKIT//BrowserView//inc/WidgetExtension.h:330: error: `WidgetEventHandler' has not been declared WEBKIT//BrowserView//inc/WidgetExtension.h:330: error: ISO C++ forbids declaration of `aCallback' with no type WEBKIT//BrowserView//inc/WidgetExtension.h:338: error: `WidgetEventHandler' has not been declared WEBKIT//BrowserView//inc/WidgetExtension.h:338: error: ISO C++ forbids declaration of `aCallback' with no type WEBKIT//BrowserView//inc/WidgetExtension.h:346: error: `WidgetEventHandler' has not been declared WEBKIT//BrowserView//inc/WidgetExtension.h:346: error: ISO C++ forbids declaration of `aCallback' with no type WEBKIT//BrowserView//inc/WidgetExtension.h:354: error: `WidgetEventHandler' has not been declared WEBKIT//BrowserView//inc/WidgetExtension.h:354: error: ISO C++ forbids declaration of `aCallback' with no type WEBKIT//BrowserView//inc/WidgetExtension.h:414: error: ISO C++ forbids declaration of `MWidgetEngineBridge' with no type WEBKIT//BrowserView//inc/WidgetExtension.h:414: error: expected `;' before '&' token WEBKIT//BrowserView//inc/WidgetExtension.h:422: error: expected `;' before "MWidgetCallback" WEBKIT//BrowserView//inc/WidgetExtension.h:542: error: ISO C++ forbids declaration of `MWidgetEngineBridge' with no type WEBKIT//BrowserView//inc/WidgetExtension.h:542: error: expected `;' before '*' token WEBKIT//BrowserView//inc/WidgetExtension.h:546: error: ISO C++ forbids declaration of `WidgetEventHandler' with no type WEBKIT//BrowserView//inc/WidgetExtension.h:546: error: expected `;' before '*' token WEBKIT//BrowserView//inc/WidgetExtension.h:547: error: ISO C++ forbids declaration of `WidgetEventHandler' with no type WEBKIT//BrowserView//inc/WidgetExtension.h:547: error: expected `;' before '*' token WEBKIT//BrowserView//inc/WidgetExtension.h:685: error: ISO C++ forbids declaration of `WidgetEventHandler' with no type WEBKIT//BrowserView//inc/WidgetExtension.h:685: error: expected `;' before '*' token WEBKIT//BrowserView//inc/WidgetExtension.h:693: error: expected `;' before "void" WEBKIT//BrowserView//inc/WidgetExtension.h:755: error: `WidgetEventHandler' has not been declared WEBKIT//BrowserView//inc/WidgetExtension.h:755: error: ISO C++ forbids declaration of `aCallback' with no type WEBKIT//BrowserView//inc/WidgetExtension.h:772: error: ISO C++ forbids declaration of `WidgetEventHandler' with no type WEBKIT//BrowserView//inc/WidgetExtension.h:772: error: expected `;' before '*' token WEBKIT//BrowserView//inc/WidgetExtension.h: In member function `void CMenuItem::SetCallback(int*)': WEBKIT//BrowserView//inc/WidgetExtension.h:755: error: `iCallback' undeclared (first use this function) WEBKIT//BrowserView//inc/WidgetExtension.h:755: error: (Each undeclared identifier is reported only once for each function it appe ars in.) make[1]: *** [..\EPOC32\BUILD\S60\BROWSERCORE\GCCE\UREL\FControlFileInputSkin.o] Error 1 make: *** [TARGETBROWSERCORE] Error 2 make -s -r -f "\EPOC32\BUILD\S60\MEMMAN\GCCE\MEMMAN.GCCE" UREL make -s -r -f "\EPOC32\BUILD\S60\HISTORYPROVIDER\GCCE\HISTORYPROVIDER.GCCE" UREL make -s -r -f "\EPOC32\BUILD\S60\PCRE\GCCE\PCRE.GCCE" UREL make -s -r -f "\EPOC32\BUILD\S60\JAVASCRIPTCORE\GCCE\JAVASCRIPTCORE.GCCE" UREL make -s -r -f "\EPOC32\BUILD\S60\KHTML\GCCE\KHTML.GCCE" UREL make -s -r -f "\EPOC32\BUILD\S60\KWQ\GCCE\KWQ.GCCE" UREL make -s -r -f "\EPOC32\BUILD\S60\WEBCORE\GCCE\WEBCORE.GCCE" UREL WARNING: Not attempting to create any import libraries. When exports are frozen in "\S60\WEBCORE\EABI\WebCore_sdkU.DEF", regenerate Makefile. make -s -C \S60\WEBKIT\group -f "ICONS.MK" TO_ROOT=..\..\.. EPOCBLD=..\..\..\EPOC32\BUILD\S60\ICONS\GCCE TO_BLDINF=..\..\..\S60 P LATFORM=GCCE CFG=UREL BLD make -s -C \S60\WEBKIT\group -f "VERSION.MK" TO_ROOT=..\..\.. EPOCBLD=..\..\..\EPOC32\BUILD\S60\VERSION\GCCE TO_BLDINF=..\..\..\S 60 PLATFORM=GCCE CFG=UREL BLD make -s -r -f "\EPOC32\BUILD\S60\RESLOADER\GCCE\RESLOADER.GCCE" UREL make -s -r -f "\EPOC32\BUILD\S60\BROWSERCORE\GCCE\BROWSERCORE.GCCE" UREL Fcontrolfileinputskin.cpp Processing Reindeer.pkg... Signature ignored,this option is deprecated...
Error : Cannot find file : \epoc32\release\gcce\urel\WebUi.exe
Reindeer.pkg(24) : error: file I/O fault. Sign Reindeer.sis... file I/O fault, cannot open Reindeer.sis. Delete intermediate files...
Solution Add ";" to namespace KJS {
class WidgetEventHandler;
}
Error Case: 7
..\..\..\..\EPOC32\RELEASE\ARMV5\UREL\MobiWebCore_sdk.lib(WebCoreBridge.o): In function `CWebCoreBridge::ConstructL()':
Webcorebridge.cpp:(.text+0x3c4): undefined reference to `khtml::Cache::setSize(int)'
Solution:
Add";" to namespace khtml
{ xxx } Error: ..\..\..\..\EPOC32\RELEASE\ARMV5\UREL\MobiWebCore_sdk.lib(WebCoreBridge.o): In function `CWebCoreBridge::URLWithRelativeString(TDesC16 const&)': Webcorebridge.cpp:(.text+0x1378): undefined reference to `DOM::DOMString::DOMString(QString const&)' Solution:
Add ";" to
namespace khtml {
class Length;
}
in dom_string.h file
Error: ..\..\..\..\EPOC32\RELEASE\ARMV5\UREL\MobiWebCore_sdk.lib(WebCoreBridge.o): In function `CWebCoreBridge::LoadFocusedImage(TPoint)': Webcorebridge.cpp:(.text+0x714c): undefined reference to `khtml::Loader::load(khtml::DocLoader*, khtml::CachedObject*, bool)' Solution:
Add ";" to
namespace KIO {
class Job;
class TransferJob;
}
loader.h in khtml/misc
Error Case: 8
WebCore_sdk.dso not found
Solution: freeze exports by build -nfg and rebuild webcore completly as build -g webcore
you may face xxx.dso files not found error many time follow the same steps for individual libs or else follow Error Case: 1 if still compiler complains about missing .dso
Error Case: 9
\aiwdialdata.dso: No such file: No such file or directory
Solution: modify webkit.mmp file as given below #ifndef __BROWSER_SDK LIBRARY aiwdialdata.lib #endif
No related wiki articles found