From 5e16d23aed5fcb9d9553fe471c34655603c62b52 Mon Sep 17 00:00:00 2001 From: Boris Kolpackov Date: Thu, 10 Feb 2011 16:51:17 +0200 Subject: Add sample Symbian configuration --- dist/INSTALL | 11 ++- dist/etc/symbian/README | 29 ++++++ dist/etc/symbian/config.make | 229 +++++++++++++++++++++++++++++++++++++++++++ dist/etc/symbian/new | 4 + 4 files changed, 271 insertions(+), 2 deletions(-) create mode 100644 dist/etc/symbian/README create mode 100644 dist/etc/symbian/config.make create mode 100644 dist/etc/symbian/new (limited to 'dist') diff --git a/dist/INSTALL b/dist/INSTALL index 434c1a2..9c06901 100644 --- a/dist/INSTALL +++ b/dist/INSTALL @@ -12,8 +12,8 @@ GNU make This section provides general instructions for building the XSD/e runtime and examples with GNU make. For additional information on -building for iPhone/iOS and Android NDK see the corresponding notes -at the end of this document. +building for iPhone/iOS, Android NDK, and Symbian SDK see the +corresponding notes at the end of this document. The first step in building the source code with GNU make is to configure the runtime library by editing the config/config.make @@ -107,6 +107,13 @@ makefiles in the etc/android/ directory. The accompanying README file provides step-by-step instructions on how to use XSD/e with Android. +Notes on Symbian SDK +-------------------- + +You can find sample configuration files for Symbian SDK in the +etc/symbian/ directory. The accompanying README file provides +step-by-step instructions on how to use XSD/e with Symbian. + Notes on eMbedded Visual C++ 4.0 -------------------------------- diff --git a/dist/etc/symbian/README b/dist/etc/symbian/README new file mode 100644 index 0000000..a1edb22 --- /dev/null +++ b/dist/etc/symbian/README @@ -0,0 +1,29 @@ +This file describes how to build and use XSD/e with Symbian. + +The first step is to create the XSD/e configuration for your version +of the Symbian SDK. Copy the config.make file found in this directory +to the config/ subdirectory of the XSD/e distribution. Then build your +Symbian application with the -v abld option to see the actual C++ +compiler command lines being executed. For example: + +abld -v build gcce urel + +Copy the compiler options used to build your application to the +config/config.make. You would normally put -I, -D, and -include options +to the CPPFLAGS variable and all the other options to the CFLAGS and +CXXFLAGS variable (they normally will be identical or near identical). +You will also need to adjust the SDKROOT and GCCEROOT variables. + +Once this is done, in a terminal or command prompt change to the +libxsde directory and run make to build the XSD/e runtime library +(libxsde.a). On Windows, GNU make can be found in the epoc32/tools/ +subdirectory of the Symbian SDK. + +If you get a compile error saying that the header file is not +found, then copy the 'new' file found in this directory to libxsde/ and +run make again. + +Once the XSD/e runtime library is built, compile your schemas to C++ with +the XSD/e compiler (bin/xsde) and add the resulting generated C++ files to +your Symbian project. You will also need to add the libxsde directory to +your project's header search paths (-I option) and link to libxsde.a. diff --git a/dist/etc/symbian/config.make b/dist/etc/symbian/config.make new file mode 100644 index 0000000..4d1e80a --- /dev/null +++ b/dist/etc/symbian/config.make @@ -0,0 +1,229 @@ +# Sample configuration file for Symbian S60 3rd Edition, FP 1 SDK using +# GCCE (csl-gcc) toolchain. For more information, see the accompanying +# README file. +# + +SDKROOT := /home/vm/symbian/sdk/s60_31 +GCCEROOT := /home/vm/symbian/csl-gcc + +# Toolchain. +# +CC := $(GCCEROOT)/bin/arm-none-symbianelf-gcc +CFLAGS := -O2 -fno-unit-at-a-time -Wall -Wno-unknown-pragmas -fexceptions -march=armv5t -mapcs -pipe -msoft-float +CPPFLAGS := -nostdinc -DNDEBUG -D_UNICODE -D__GCCE__ -D__SYMBIAN32__ -D__SERIES60_31__ -D__SERIES60_3X__ -D__GCCE__ -D__EPOC32__ -D__MARM__ -D__EABI__ -D__MARM_ARMV5__ -D__EXE__ -D__SUPPORT_CPP_EXCEPTIONS__ -D__MARM_ARMV5__ -D__PRODUCT_INCLUDE__=\"$(SDKROOT)/epoc32/include/variant/symbian_os_v9.2.hrh\" -include $(SDKROOT)/epoc32/include/gcce/gcce.h -I $(SDKROOT)/epoc32/include/libc -I $(SDKROOT)/epoc32/include -I $(SDKROOT)/epoc32/include/variant -I "$(GCCEROOT)/lib/gcc/arm-none-symbianelf/3.4.3/include" + +CXX := $(GCCEROOT)/bin/arm-none-symbianelf-g++ +CXXFLAGS := -O2 -fno-unit-at-a-time -Wall -Wno-ctor-dtor-privacy -Wno-unknown-pragmas -fexceptions -march=armv5t -mapcs -pipe -msoft-float + +LD := $(CXX) +LDFLAGS := $(CXXFLAGS) +LIBS := + +# Optional post-link command. The first argument to this command is +# the executable name and the rest of the arguments are the object +# files and libraries that were used to link this executable. +# +POSTLD := + +# Set RANLIB to empty if your system does not need ranlib. +# +AR := $(GCCEROOT)/bin/arm-none-symbianelf-ar +ARFLAGS := rc +RANLIB := $(GCCEROOT)/bin/arm-none-symbianelf-ranlib + +# Symbian-specific workarounds. +# +# On Symbian doesn't define NULL. +# +CPPFLAGS += -DNULL=0 + +# Common XSD/e flags. +# +XSDFLAGS := --generate-inline + + +# Platform. Valid values are: +# +# 'wince' - Windows CE +# 'win32' - Windows 2000, XP, etc. +# 'posix' - POSIX OS, including UNIX/Linux, VxWorks, etc. +# +XSDE_PLATFORM := posix + + +# Platform architecture width in bits. +# +XSDE_ARCH_WIDTH := 32 + + +# Platform byte order. Valid values are 'b' for big-endian and 'l' +# for little-endian. +# +XSDE_BYTEORDER := l + + +# Application character encoding. Valid values are 'utf8' for UTF-8 +# and 'iso8859-1' for ISO-8859-1. Note that this encoding is not +# the same as the XML document encoding that is being parsed or +# serialized. Rather, it is the encoding that is used inside the +# application. When an XML document is parsed, the character data +# is automatically converted to the application encoding. Similarly, +# when an XML document is serialized, the data in the application +# encoding is automatically converted to the resulting document +# encoding. Also don't forget to use the --char-encoding option +# when compiling your schemas if using an encoding other than UTF-8. +# +XSDE_ENCODING := utf8 + + +# Set to 'n' if you don't have STL (std::string, etc.). Also don't +# forget to use the --no-stl option when compiling your schemas. +# +XSDE_STL := n + + +# Set to 'n' if you don't want iterators to conform to the STL +# requirements. This feature requires working header +# and allows you to use the standard algorithms such as find_if, +# etc. +# +XSDE_STL_ITERATOR := n + + +# Set to 'n' if you don't have iostream. +# +XSDE_IOSTREAM := n + + +# Set to 'n' if you don't have C++ exceptions. Also don't forget to +# use the --no-exceptions option when compiling your schemas. +# +XSDE_EXCEPTIONS := n + + +# Set to 'n' if your platform doesn't have the "long long int" type or +# the strtoull function. Also don't forget to use the --no-long-long +# option when compiling your schemas. +# +XSDE_LONGLONG := n + + +# Set to 'n' if your platform doesn't have the snprintf function. +# +XSDE_SNPRINTF := n + + +# Set to 'n' if you don't want support for XML Schema validation in +# C++/Parser. Also don't forget to use the --suppress-validation +# option when compiling your schemas. +# +XSDE_PARSER_VALIDATION := y + + +# Set to 'n' if you don't want support for XML Schema validation in +# C++/Serializer. Also don't forget to use the --suppress-validation +# option when compiling your schemas. +# +XSDE_SERIALIZER_VALIDATION := y + + +# Set to 'y' if you would like to have support for regular expressions in +# the XSD/e runtime. If the regexp support is enabled, then the parser and +# serializer validation code will use it to validate the xs:pattern facet. +# If the regexp support is disabled, then this facet will be ignored. The +# regexp support increases the resulting executable size by about 30-50Kb. +# +XSDE_REGEXP := n + + +# Base parser/serializer implementation reuse style. Valid values are: +# +# 'mixin' - virtual inheritance-based reuse (specify --reuse-style-mixin) +# 'tiein' - delegation-based reuse (recommended) +# 'none' - no reuse support (specify --reuse-style-none) +# +XSDE_REUSE_STYLE := tiein + + +# Set to 'y' if you would like the XSD/e runtime and the generated code +# to perform memory management using custom allocator functions provided +# by your application instead of the standard operator new/delete. Also +# don't forget to use the --custom-allocator option when compiling your +# schemas. See the documentation and examples for more information on +# custom allocators. +# +XSDE_CUSTOM_ALLOCATOR := n + + +# Set to 'y' if you would like to include the default implementation of the +# custom allocator into the XSD/e runtime library. This option is primarily +# useful for testing and only makes sense if XSDE_CUSTOM_ALLOCATOR is set +# to 'y'. +# +XSDE_DEFAULT_ALLOCATOR := n + + +# Set to 'y' if you want support for serialization of the C++/Hybrid +# object model to the CDR (Common Data Representation) binary format. +# This functionality requires the ACE library. +# +XSDE_CDR := n + + +# Set to 'y' if you want support for serialization of the C++/Hybrid +# object model to the XDR (eXternal Data Representation) binary format. +# This functionality requires the XDR API which is available out of the +# box on most POSIX systems as part of Sun RPC. On some systems (e.g., +# (Linux, iPhone OS, VxWorks) this API is part of libc in which case +# you don't need to link anything extra. On other platforms, the XDR +# API may require linking to another library (which you can add to the +# LIBS variable above), such as -lrpc (QNX, LynxOS) or -lnsl. On non- +# POSIX platforms you may need to install a third-party library which +# provides the XDR API. Also note that some older versions of the API +# (e.g., those found on LynxOS) may not support serialization of the +# long long type. In this case you will get a compilation error saying +# that xdr_longlong_t and xdr_u_longlong_t are not declared. One way to +# resolve this is to disable the use of the long long type in XSD/e (see +# XSDE_LONGLONG above). +# +XSDE_XDR := n + + +# Set to 'y' if you need to handle XML vocabularies that use XML Schema +# polymorphism (xsi:type or substitution groups). Also don't forget to +# use either --generate-polymorphic (generates polymorphism-aware code) +# or --runtime-polymorphic (generates non-polymorphic code that uses the +# runtime library configured with polymorphism support). Note that support +# for XML Schema polymorphism requires runtime static initialization +# support in the C++ compiler (that is, support for automatic calling +# of constructors for static objects). Furthermore, if the mixin reuse +# style is used (XSDE_REUSE_STYLE) then the generated code requires +# support for dynamic_cast. +# +XSDE_POLYMORPHIC := n + + +# When polymorphism support is enabled (XSDE_POLYMORPHIC), the following +# parameters control the substitution and inheritance hashmaps bucket +# allocation. Because the number of elements in these hashmaps depends +# on the schemas being compiled and thus is fairly static, these hashmaps +# do not perform automatic table resizing. To obtain good performance the +# elements to buckets ratio should be between 0.7 and 0.9. The recommended +# way to ensure this range is to add diagnostics code to your application +# as shown in the documentation and examples. It is also a good idea to +# use prime numbers for bucket counts: 53 97 193 389 769 1543 3079 6151 +# 12289 24593 49157 98317 196613 393241. Inheritance hashmaps are only +# used when validation is enabled. +# +XSDE_PARSER_SMAP_BUCKETS := 53 +XSDE_PARSER_IMAP_BUCKETS := 97 +XSDE_SERIALIZER_SMAP_BUCKETS := 53 +XSDE_SERIALIZER_SMAP_BUCKET_BUCKETS := 53 +XSDE_SERIALIZER_IMAP_BUCKETS := 97 + + +# Options tuning depending on the features selected. +# +ifeq ($(XSDE_EXCEPTIONS),y) +CFLAGS += -fexceptions +endif diff --git a/dist/etc/symbian/new b/dist/etc/symbian/new new file mode 100644 index 0000000..af45c6f --- /dev/null +++ b/dist/etc/symbian/new @@ -0,0 +1,4 @@ +// On Symbian there is no and placement is defined +// in the header. +// +#include -- cgit v1.1