aboutsummaryrefslogtreecommitdiff
path: root/dist/etc
diff options
context:
space:
mode:
authorBoris Kolpackov <boris@codesynthesis.com>2011-02-10 16:51:17 +0200
committerBoris Kolpackov <boris@codesynthesis.com>2011-02-10 16:51:17 +0200
commit5e16d23aed5fcb9d9553fe471c34655603c62b52 (patch)
tree26fef4730342ca3372d7d42c760795923996fb60 /dist/etc
parent587804df04ba83c1fc18671dcdd9927c41820f0a (diff)
Add sample Symbian configuration
Diffstat (limited to 'dist/etc')
-rw-r--r--dist/etc/symbian/README29
-rw-r--r--dist/etc/symbian/config.make229
-rw-r--r--dist/etc/symbian/new4
3 files changed, 262 insertions, 0 deletions
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 <new> 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 <stddef.h> 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 <iterator> 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 <new> and placement <new> is defined
+// in the <e32std.h> header.
+//
+#include <e32std.h>