Customize target platform
It’s possible to cross-compile sedona to new target platform and add new kits with even native methods without any changes to upstream platform. It’s possible to overwrite even existing kits by own version.
For example, following directory structure exists:
<some dir>
upstream-sedona
adm
apps
bin
build
...
src
tools
new-target-platform
apps
defaultApp.sax
platforms
db
src
generic
unix
generic-unix.xml
...
scode
defaultKits.xml
src
kits
newKit
newNativeKit
serial
sys
dir.xml
Following commands allows to build sedona for new target platform
$ export SVM_CFLAGS=-DFANCY_FEATURE_EN=1
$ export SVM_LDFLAGS='-lm -pthread'
$ export SVM_CROSS_COMPILE=arm-linux-gnueabihf-
$ upstream-sedona/adm/makedev.py -t none -p new-target-platform/platforms/src/generic/unix/generic-unix.xml -k new-target-platform/src/kits/dir.xml -s new-target-platform/scode/defaultKits.xml -a new-target-platform/apps/defaultApp.sax
There are some things that have to be done to make this directory structure to work. Most of them covers usage of relative paths to source files.
In platform description 'generic-unix.xml' paths to source code for native kits should be given relative to 'upstream-sedona' directory.
<sedonaPlatform...
...
<nativeSource path="/src/kits/inet/native/sha1" />
<nativeSource path="/src/kits/datetimeStd/native/std" />
<nativeSource path="/../new-target-platform/src/kits/serial/native/linux" />
<nativeSource path="/../new-target-platform/src/kits/serial/native" />
...
</sedonaPlatform>
To build external kits new '-k' option of makedev.py is used. It points to XML with description of all additional kits, including platform kit.
All build results are located in ‘upstream-sedona/build’ and ‘upstream-sedona/bin’ directories and with external shell scripts it’s possible to do with results whatever is needed: build release support package, move to place for firmware generation, run built runtime on development machine and so on.