You Are Here:

Community: Wiki

This page was last modified on 3 July 2008, at 23:34.

Building S60Webkit

From Forum Nokia Wiki

Contents

Why Establish This Page?

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!

Wiki Maintenance - the TODO List

  • to clarify the latest stable revision
  • to clarify the correct building procedure from the source
  • more later...
  • ...
  • ...
  • ...

Build the Source: The Main Steps

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



Configure Your Computer

To work with S60WebKit, you'll need to install a couple of tools:

The S60 3rd Edition SDK

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

A Subversion client

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.

Carbide C++ Express

(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.

ActiveState Perl v5.6.1

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.


Check out and Build the Source

Getting the Source

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

Setting up the Source

build.bat

  1. For Carbide 1.2, modify the default Carbide path in build.bat to:
    $cbdhome = "$ENV{ProgramFiles}\\Nokia\\Carbide.c++ v1.2" unless -d $cbdhome;
  2. Also comment out the following line otherwise you will get "mwldsym2.exe: Undefined symbol: '___CxxFrameHandler'" when building for the emulator:
    delete $ENV{'MWSYM2LIBRARIES'};
  3. You will see the required regustry key also in build.bat:
    my $sdkhome = $Registry->{ "HKEY_LOCAL_MACHINE/SOFTWARE/Symbian/Series 60/3rd Ed. SDK for Symbian OS/TargetDir"  };

Building the Source

  • Compile S60WebKit by changing directory to the top of the source tree and running the build script, for example:
  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.

So what does the build script do?

Here's a quick overview of what build.bat does:

  • Unless already done so, it will create the subst drive to <SDK path> for you
  • Setups up your environment so that the Carbide and GCCE compiler suites are used by the SDK build system
  • Extracts each of the zipfiles under <working copy>\S60Internals\*. These are mostly extracted to \epoc32
  • Synchronises the layout test (rsync type operation) in your working copy to \epoc32\winscw\c\LayoutTests
  • Does a number of 'abld' commands, depending on what options you passed to the script
  • The output from the 'abld' command is redirected to both STDOUT and <working copy>\build.log. This is scanned for errors and a summary is output to the screen

Build options

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

Build Examples

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

Check Out Reindeer the Web Browser

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.


(Appendix) IDEs for S60WebKit

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.)

Why?

Carbide.c++ version 1 is the primary recommendation because it's free software (in practice, quite a number of different IDEs are used).

Limitations

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).

Carbide.c++ version 1.2

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!

Debugging with Carbide.c++ Version 1.0

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:

  • Build reindeer via the provided build scripts
  • Start Carbide.C++ Express
  • Select Menu Item: File->Import...
  • Highlight "Symbian OS Executable" and click Next
  • In Select Executable: field, enter "X:\Epoc32\release\winscw\udeb\!WebUi.exe" and click Next
    • Confirm "New Project Name:" is "Debug !WebUi.exe" and is selected,
    • Box "Create a Launch Configuration:" is checked and set to "Symbian OS Emulation", and
    • "Name:" is "Debug !WebUi.exe"

Click Finish.

    • In new "Debug" window, enter the following for "Emulator or host application:" field:


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:

  • Return to the non-debug view of Carbide.
  • Under the C/C++ Project tab, highlight and right click on {{{Debug !WebUi.exe}}} and select {{{Import...}}}
  • Highlight {{{Symbian OS Executable}}} and click Next
  • In Select Executable: field, enter {{{X:\Epoc32\release\winscw\udeb\!MemMan.dll}}} and click Next

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

  • You can now start a debug session and set breakpoints in both !WebUi.exe and !MemMan.dll based source files.

To add addional S60WebKit browser binaries for debugging, just repeat the steps above.

Licensing

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.


Contacting Us

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

Solutions to some errors you might face while compiling S60Webkit

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

  1. endif // __GCCE__

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:

ProtectedValues::decreaseProtectCount(KJS::ValueImp*)'

..\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

Related Wiki Articles

No related wiki articles found

Rate This

 
Bookmark this page: DeliciousDiggFacebookGoogleYahooStumbleUponRedditDiigoTechnocratiTwitter  Share this page Share this page Print this Page Print this page Invite a friend Invite a friend
京ICP备05048969号    Email Newsletters Press Terms & Conditions Privacy Policy Sitemap Contact Us © 2009 Nokia 
RDF Facets: qdcZdescriptionQSxEa0E20WikiE20javaE20symbianE5fosE20s60E20maemoE20cE2bE2bE20WikiE20HomeE20WikiE20HelpE20OverviewE20GlossaryE20CreateE20PageE20ProposeE20anE20ArticleE20SpotlightE20TopicE20E2dE20WE52TE20WidgetsE20ProgrammingE20E4canguageE20E2dE20SymbianE20CE2bE2bE20E2dE20OpenE20CE2fCE2bE2bE20E2dE20JavaE20E2dE20FlashE20E4citeE20E2dE20PythonE20WebE20TechnologiesE20E2dE20WE52TE20WidgetsE20E2dE20WidSetsE20ToolsE20andE20SE44KE20CodeE20E45E78amplesE20KnowledgeE20BaseE20TechnologyE20AreasE20SoftwareE20PlatformsE20E44evelopmentE20ProcessE20E3fE3fWikiE20ChineseE20E3fE3fE3fWikiE20JapaneseE20PortugueseE2fBrazilianE20E52ussianE20WhatE20linksE20hereE20UploadE20fileE20SpecialE20pagesE20PrintableE20versionE44ownloadE20asE20PE44FE20GoE20ToE20E2eE2eE2eX qdcZidentifierQSxhttpE3aE2fE2fwikiE2eforumE2enokiaE2ecomE2findeE78E2ephpE2fBuildingE5fS60WebkitX qdcZpublisherQUxhttpE3aE2fE2fswE2enokiaE2ecomE2fidE2fc764fd1cE2d8b06E2d499aE2d9a6aE2d17c3903d5a65E2fforumE5fnokiaE5fcrawlerE5fagentX qdcZtitleQSxBuildingE20S60WebkitE20E2dE20ForumE20NokiaE20WikiX qdcZtypeQUqfnZE45E78cludedFromGeneralE4cistingsQ qdcZtypeQUqfntypeZCommunityContentQ qdcZtypeQUqfntypeZE52esourceQ qdcZtypeQUqfntypeZWebpageQ qdcZtypeQUqfntypeZWikiContentQ qdcZtypeQUqmarsZManagedE52esourceQ qdcZtypeQUqwebZInformationE52esourceQ qdcZtypeQUqwebZPageQ qdcZtypeQUqwebZE52esourceQ qdcZtypeQUqrdfsZE52esourceQ qrssZdescriptionQSxEa0E20WikiE20javaE20symbianE5fosE20s60E20maemoE20cE2bE2bE20WikiE20HomeE20WikiE20HelpE20OverviewE20GlossaryE20CreateE20PageE20ProposeE20anE20ArticleE20SpotlightE20TopicE20E2dE20WE52TE20WidgetsE20ProgrammingE20E4canguageE20E2dE20SymbianE20CE2bE2bE20E2dE20OpenE20CE2fCE2bE2bE20E2dE20JavaE20E2dE20FlashE20E4citeE20E2dE20PythonE20WebE20TechnologiesE20E2dE20WE52TE20WidgetsE20E2dE20WidSetsE20ToolsE20andE20SE44KE20CodeE20E45E78amplesE20KnowledgeE20BaseE20TechnologyE20AreasE20SoftwareE20PlatformsE20E44evelopmentE20ProcessE20E3fE3fWikiE20ChineseE20E3fE3fE3fWikiE20JapaneseE20PortugueseE2fBrazilianE20E52ussianE20WhatE20linksE20hereE20UploadE20fileE20SpecialE20pagesE20PrintableE20versionE44ownloadE20asE20PE44FE20GoE20ToE20E2eE2eE2eX qfnZdistributionQUxhttpE3aE2fE2fwikiE2eforumE2enokiaE2ecomE2fX qfnZtopicQUqfnTopicZbrowsingQRqdcZtypeQUqrdfsZE52esourceQRqmarsZrelevanceQNx100X qfnZtopicQUqfnTopicZseriesE5f60QRqdcZtypeQUqrdfsZE52esourceQRqmarsZrelevanceQNx100X qfnZtopicQUqfnTopicZwebE5ftechnologyQRqmarsZrelevanceQNx100X qfnZtypeQUqfntypeZCommunityContentQ qfnZtypeQUqfntypeZE52esourceQ qfnZtypeQUqfntypeZWebpageQ qfnZtypeQUqfntypeZWikiContentQ qfnZupdatedQDx2008E2d10E2d02X qfnZuserE5ftagQSxbrowsingX qfnZuserE5ftagQSxs60X qfnZuserE5ftagQSxwebE2dtechnologyX qmarsZdescriptionQSxEa0E20WikiE20javaE20symbianE5fosE20s60E20maemoE20cE2bE2bE20WikiE20HomeE20WikiE20HelpE20OverviewE20GlossaryE20CreateE20PageE20ProposeE20anE20ArticleE20SpotlightE20TopicE20E2dE20WE52TE20WidgetsE20ProgrammingE20E4canguageE20E2dE20SymbianE20CE2bE2bE20E2dE20OpenE20CE2fCE2bE2bE20E2dE20JavaE20E2dE20FlashE20E4citeE20E2dE20PythonE20WebE20TechnologiesE20E2dE20WE52TE20WidgetsE20E2dE20WidSetsE20ToolsE20andE20SE44KE20CodeE20E45E78amplesE20KnowledgeE20BaseE20TechnologyE20AreasE20SoftwareE20PlatformsE20E44evelopmentE20ProcessE20E3fE3fWikiE20ChineseE20E3fE3fE3fWikiE20JapaneseE20PortugueseE2fBrazilianE20E52ussianE20WhatE20linksE20hereE20UploadE20fileE20SpecialE20pagesE20PrintableE20versionE44ownloadE20asE20PE44FE20GoE20ToE20E2eE2eE2eX qmarsZlanguageQUxhttpE3aE2fE2fswE2enokiaE2ecomE2flanguageE2d1E2fenX qrdfZtypeQUqfnZE45E78cludedFromGeneralE4cistingsQ qrdfZtypeQUqfntypeZCommunityContentQ qrdfZtypeQUqfntypeZE52esourceQ qrdfZtypeQUqfntypeZWebpageQ qrdfZtypeQUqfntypeZWikiContentQ qrdfZtypeQUqmarsZManagedE52esourceQ qrdfZtypeQUqwebZInformationE52esourceQ qrdfZtypeQUqwebZPageQ qrdfZtypeQUqwebZE52esourceQ qrdfZtypeQUqrdfsZE52esourceQ