epoc32/include/variant/platform_paths.hrh
author William Roberts <williamr@symbian.org>
Wed, 31 Mar 2010 12:33:34 +0100
branchSymbian3
changeset 4 837f303aceeb
parent 3 e1b950c65cb4
permissions -rw-r--r--
Current Symbian^3 public API header files (from PDK 3.0.h)
This is the epoc32/include tree with the "platform" subtrees removed, and
all but a selected few mbg and rsg files removed.
     1 /*
     2 * Copyright (c) 2002-2009 Nokia Corporation and/or its subsidiary(-ies). 
     3 * All rights reserved.
     4 * This component and the accompanying materials are made available
     5 * under the terms of "Eclipse Public License v1.0"
     6 * which accompanies this distribution, and is available
     7 * at the URL "http://www.eclipse.org/legal/epl-v10.html".
     8 *
     9 * Initial Contributors:
    10 * Nokia Corporation - initial contribution.
    11 *
    12 * Contributors:
    13 *
    14 * Description:  Predefined include paths to be used in the mmp-files for the 
    15 *                components in the layered model. There is one definition for
    16 *                each layer. The mmp-file should use the statement that is 
    17 *                intended for the same layer as where the mmp-file resides.
    18 *
    19 *                There is also macros to be used in the bld.inf-files to 
    20 *                export of Public  and Platform headers into 
    21 *                correct locations. 
    22 *
    23 * Usage examples:
    24 *     ---------------------------------------------
    25 *      How to include this file in bld.inf and mmp-files.
    26 *       Reasoning: The build system is such that at the time the 
    27 *                  bld.inf and mmp-files are "compiled" the available
    28 *                  include paths are limited. Only the /epoc32/include
    29 *                  can be guaranteed. Thus to get this file available
    30 *                  you need to make include relative to the mentioned
    31 *                  directory. 
    32 *     ---------------------------------------------
    33 *
    34 *      #include <platform_paths.hrh>
    35 *    
    36 *     *************************************************************
    37 *     * MMP file related macro usages to add the system include paths
    38 *     * 
    39 *     * The include paths has to be related to the layer in which your SW 
    40 *     * resides. Thus as an example: a component residing in middleware
    41 *     * layer should use the MW specific macro.
    42 *     * Keep this as a separate line in the mmp-files. If you need to
    43 *     * add your own SYSTEMINCLUDE paths, please defined them as
    44 *     * separate statement.
    45 *     *************************************************************
    46 *         APP_LAYER_SYSTEMINCLUDE
    47 *         MW_LAYER_SYSTEMINCLUDE
    48 *         OS_LAYER_SYSTEMINCLUDE
    49 **
    50 *     *************************************************************
    51 *     * Macros related to using various parts of stdapis
    52 *     *************************************************************
    53 *       To use STLLIB you need to have this in your mmp-file
    54 *         STLLIB_USAGE_DEFINITIONS
    55 *
    56 *       Depending on what module you are using from stdapis you need to have
    57 *       one or more of the following macros in your mmp-file (every one in 
    58 *       separate line !)
    59 *
    60 *          OS_LAYER_LIBC_SYSTEMINCLUDE
    61 *          OS_LAYER_GLIB_SYSTEMINCLUDE
    62 *          OS_LAYER_SSL_SYSTEMINCLUDE
    63 *          OS_LAYER_STDCPP_SYSTEMINCLUDE
    64 *          OS_LAYER_BOOST_SYSTEMINCLUDE
    65 *          OS_LAYER_DBUS_SYSTEMINCLUDE
    66 *          OS_LAYER_LIBUTILITY_SYSTEMINCLUDE
    67 *
    68 *     *************************************************************
    69 *     * Macros related to exporting Public and Platform APIs into 
    70 *     * correct place in the new system. 
    71 *     *
    72 *     * The macro that you should use depends on 2 things:
    73 *     *  - in which layer your package, which exports the APIs resides
    74 *     *  - what is the visibility of the API (public or platform)
    75 *     *************************************************************
    76 *      // the exporting of public APIs should use one of below macros
    77 *      // depending on which layer the API belogs to
    78 *      APP_LAYER_PUBLIC_EXPORT_PATH
    79 *      MW_LAYER_PUBLIC_EXPORT_PATH
    80 *      OS_LAYER_PUBLIC_EXPORT_PATH
    81 *
    82 *      // the exporting of platform APIs should use one of below macros
    83 *      // depending on which layer the API belogs to
    84 *      APP_LAYER_PLATFORM_EXPORT_PATH
    85 *      MW_LAYER_PLATFORM_EXPORT_PATH
    86 *      OS_LAYER_PLATFORM_EXPORT_PATH
    87 *
    88 *      The hierarchy how APIs should reside in foundation has been specified
    89 *      in developer documentation. See further details from documentation.
    90 *      Below is example case relying on the structure
    91 *        my_own_api/group/bld.inf
    92 *        my_own_api/inc/header1.h
    93 *        my_own_api/inc/subdir/header2.h
    94 *  
    95 *      Assuming that the API is in middleware layer and a public API. 
    96 *      Then the bld.inf should have the following      
    97 *        ../inc/header1.h  APP_LAYER_PUBLIC_EXPORT_PATH(header1.h)
    98 *        ../inc/subdir/header2.h  APP_LAYER_PUBLIC_EXPORT_PATH(subdir/header2.h)
    99 *  
   100 *      In the above case the locations are as follow (with current MACRO settings):
   101 *        header1.h in /epoc32/include/app
   102 *        header2.h in /epoc32/include/app/subdir
   103 *
   104 *
   105 *     *************************************************************
   106 *     * Macros related to IBY file exporting
   107 *     *************************************************************
   108 *			
   109 *	    Component bld.inf files need to include platform_paths.hrh, see
   110 *           beginning of this file on how to do this correctly. Component bld.inf 
   111 *           files need to use these macros in PRJ_EXPORTS to get their IBY files 
   112 *           to ROM image.
   113 *
   114 *     ---------------------------------------------
   115 *     Usage for Core image (ROM+ROFS1):
   116 *     ---------------------------------------------
   117 *	 // Layer specific specific macros. Use the macro, which is specified
   118 *        // for the layer, in which your component resides
   119 *        <somepath>/<file1.iby>  CORE_APP_LAYER_IBY_EXPORT_PATH(<file1.iby>)
   120 *	 <somepath>/<file2.iby>  CORE_MW_LAYER_IBY_EXPORT_PATH(<file2.iby>)
   121 *	 <somepath>/<file3.iby>  CORE_OS_LAYER_IBY_EXPORT_PATH(<file3.iby>)
   122 *
   123 *	 //stub iby files
   124 *	 <somepath>/<file4.iby>  CORE_IBY_EXPORT_PATH(stubs,<file4.iby>)
   125 *	 //tool iby files
   126 *	 <somepath>/<file5.iby>  CORE_IBY_EXPORT_PATH(tools,<file5.iby>)
   127 *		
   128 *     ---------------------------------------------
   129 *     Usage for Variant image, Language part (ROFS2):
   130 *     ---------------------------------------------
   131 *	 // Layer specific specific macros. Use the macro, which is specified
   132 *        // for the layer, in which your component resides
   133 *        <somepath>/<file1.iby>  LANGUAGE_APP_LAYER_IBY_EXPORT_PATH(<file1.iby>)
   134 *	 <somepath>/<file2.iby>  LANGUAGE_MW_LAYER_IBY_EXPORT_PATH(<file2.iby>)
   135 *	 <somepath>/<file3.iby>  LANGUAGE_OS_LAYER_IBY_EXPORT_PATH(<file3.iby>)			
   136 *
   137 *     ---------------------------------------------
   138 *     Usage for Variant image, Language part  (ROFS2):
   139 *     ---------------------------------------------
   140 *	 // Layer specific specific macros. Use the macro, which is specified
   141 *        // for the layer, in which your component resides
   142 *        <somepath>/<file1.iby>  CUSTOMER_APP_LAYER_IBY_EXPORT_PATH(<file1.iby>)
   143 *	 <somepath>/<file2.iby>  CUSTOMER_MW_LAYER_IBY_EXPORT_PATH(<file2.iby>)
   144 *	 <somepath>/<file3.iby>  CUSTOMER_OS_LAYER_IBY_EXPORT_PATH(<file3.iby>)			
   145 *
   146 *     ---------------------------------------------
   147 *     Usage for Customer Variant image, (ROFS3):
   148 *     ---------------------------------------------
   149 *	 // Layer specific specific macros. Use the macro, which is specified
   150 *        // for the layer, in which your component resides
   151 *        <somepath>/<f1.iby> CUSTOMER_VARIANT_APP_LAYER_IBY_EXPORT_PATH(<f1.iby>)
   152 *	 <somepath>/<f2.iby> CUSTOMER_VARIANT_MW_LAYER_IBY_EXPORT_PATH(<f2.iby>)
   153 *	 <somepath>/<f3.iby> CUSTOMER_VARIANT_OS_LAYER_IBY_EXPORT_PATH(<f3.iby>)			
   154 *	
   155 *
   156 *     *************************************************************
   157 *     * Macro related to Exporting localization .loc files into 
   158 *     * correct place in the system. 
   159 *     *************************************************************
   160 *
   161 *     ---------------------------------------------
   162 *     Usage for components:
   163 *     ---------------------------------------------
   164 *	    Component bld.inf files need to include platform_paths.hrh, see
   165 *           beginning of this file on how to do this correctly. Component bld.inf 
   166 *           files need to use these macros in PRJ_EXPORTS to get their loc files 
   167 *           for localization.
   168 *     loc files that should be localized by localisation team should be in 
   169 *     loc-folder in the source tree (see developer guidelines)
   170 *
   171 *	 // Layer specific specific macros. Use the macro, which is specified
   172 *        // for the layer, in which your component resides
   173 *	 <somepath>/loc/<file>.loc  APP_LAYER_LOC_EXPORT_PATH(<file>.loc)
   174 *	 <somepath>/loc/<file>.loc  MW_LAYER_LOC_EXPORT_PATH(<file>.loc)
   175 *	 <somepath>/loc/<file>.loc  OS_LAYER_LOC_EXPORT_PATH(<file>.loc)
   176 *
   177 * 
   178 *
   179 *
   180 */
   181 
   182 
   183 #ifndef PLATFORM_PATHS_HRH
   184 #define PLATFORM_PATHS_HRH
   185 
   186 /**
   187 **************************************************************************
   188 * General comments about the exporting of headers macros
   189 *  1) The definitions point currently to the old locations. (which makes some 
   190 *     macros to have same values. The idea is that you can already start using
   191 *     them now and those will be later on changed => change affects everybody.
   192 ***************************************************************************
   193 */
   194 
   195 /**
   196 * ---------------------------------------
   197 * Location, where the applications layer specific public headers should be exported
   198 * See usage on top of this hrh-file.
   199 * ---------------------------------------
   200 */
   201 
   202 #if __GNUC__ >= 3
   203 #define APP_LAYER_SDK_EXPORT_PATH(exported) do not use intentionally generates error
   204 #define APP_LAYER_PUBLIC_EXPORT_PATH(exported) /epoc32/include/app/exported
   205 #else
   206 #define APP_LAYER_SDK_EXPORT_PATH(exported) do not use intentionally generates error
   207 #define APP_LAYER_PUBLIC_EXPORT_PATH(exported) /epoc32/include/app/##exported
   208 #endif
   209 
   210 /**
   211 * ---------------------------------------
   212 * Location, where the applications layer specific platform headers should be exported
   213 * See usage on top of this hrh-file.
   214 * ---------------------------------------
   215 */
   216 #if __GNUC__ >= 3
   217 #define APP_LAYER_DOMAIN_EXPORT_PATH(exported) do not use intentionally generates error
   218 #define APP_LAYER_PLATFORM_EXPORT_PATH(exported) /epoc32/include/platform/app/exported
   219 #else
   220 #define APP_LAYER_DOMAIN_EXPORT_PATH(exported) do not use intentionally generates error
   221 #define APP_LAYER_PLATFORM_EXPORT_PATH(exported) /epoc32/include/platform/app/##exported
   222 #endif
   223 
   224 /**
   225 * ---------------------------------------
   226 * Location, where the middleware layer specific public headers should be exported
   227 * See usage on top of this hrh-file.
   228 * ---------------------------------------
   229 */
   230 #if __GNUC__ >= 3
   231 #define MW_LAYER_SDK_EXPORT_PATH(exported) do not use intentionally generates error
   232 #define MW_LAYER_PUBLIC_EXPORT_PATH(exported) /epoc32/include/mw/exported
   233 #else
   234 #define MW_LAYER_SDK_EXPORT_PATH(exported) do not use intentionally generates error
   235 #define MW_LAYER_PUBLIC_EXPORT_PATH(exported) /epoc32/include/mw/##exported
   236 #endif
   237 
   238 /**
   239 * ---------------------------------------
   240 * Location, where the middleware layer specific platform headers should be exported
   241 * ---------------------------------------
   242 */
   243 #if __GNUC__ >= 3
   244 #define MW_LAYER_DOMAIN_EXPORT_PATH(exported) do not use intentionally generates error
   245 #define MW_LAYER_PLATFORM_EXPORT_PATH(exported) /epoc32/include/platform/mw/exported
   246 #else
   247 #define MW_LAYER_DOMAIN_EXPORT_PATH(exported) do not use intentionally generates error
   248 #define MW_LAYER_PLATFORM_EXPORT_PATH(exported) /epoc32/include/platform/mw/##exported
   249 #endif
   250 
   251 /**
   252 * ---------------------------------------
   253 * Location, where the os layer specific public headers should be exported
   254 * ---------------------------------------
   255 */
   256 #if __GNUC__ >= 3
   257 #define  OSEXT_LAYER_SDK_EXPORT_PATH(exported) do not use intentionally generates error
   258 #define  OS_LAYER_PUBLIC_EXPORT_PATH(exported) /epoc32/include/exported
   259 #else
   260 #define  OSEXT_LAYER_SDK_EXPORT_PATH(exported) do not use intentionally generates error
   261 #define  OS_LAYER_PUBLIC_EXPORT_PATH(exported) /epoc32/include/##exported
   262 #endif
   263 
   264 /**
   265 * ---------------------------------------
   266 * Location, where the os specific platform headers should be exported
   267 * ---------------------------------------
   268 */
   269 #if __GNUC__ >= 3
   270 #define OSEXT_LAYER_DOMAIN_EXPORT_PATH(exported) do not use intentionally generates error
   271 #define OS_LAYER_PLATFORM_EXPORT_PATH(exported) /epoc32/include/platform/exported
   272 #else
   273 #define OSEXT_LAYER_DOMAIN_EXPORT_PATH(exported) do not use intentionally generates error
   274 #define OS_LAYER_PLATFORM_EXPORT_PATH(exported) /epoc32/include/platform/##exported
   275 #endif
   276 
   277 /**
   278 * ---------------------------------------
   279 * Location, where the  cenrep excel sheets should be exported
   280 * Deprecated: should no longer be used. Kept for compability.
   281 * ---------------------------------------
   282 */
   283 #if __GNUC__ >= 3
   284 #define CENREP_XLS_EXPORT_PATH(exported) /epoc32/tools/cenrep/data/src/exported
   285 #else
   286 #define CENREP_XLS_EXPORT_PATH(exported) /epoc32/tools/cenrep/data/src/##exported
   287 #endif
   288 
   289 /**
   290 **************************************************************************
   291 *  General comments about the 3 define statements related to include paths:
   292 *  1) the /epoc32/include/oem is now defined there for backward compability.
   293 *     Once the directory is empty, the directory will be removed. However this 
   294 *     enables us to ensure that if you use these define statements => you do 
   295 *     not have to remove the statements later on, when the directory no longer 
   296 *     exists.
   297 *  2) These statements should be enough in normal cases. For certain specific 
   298 *     cases you migth need to add some specific directory from /epoc32/include
   299 *     (for instance /epoc32/include/ecom).
   300 *     In normal cases the include staments in code should be relative to one of 
   301 *     the system include paths, but in certain cases, the included files requires
   302 *     that the subdirectory is also part of the system include paths.
   303 ****************************************************************************
   304 */
   305 
   306 /**
   307 * Delete or comment out this macro definition to turn on header relocation.
   308 */
   309 //#define SYMBIAN_OLD_EXPORT_LOCATION
   310 
   311 
   312 /**
   313 * This define statements defines the SYSTEMINCLUDE-line, which is intended to be 
   314 * used in the mmp-files that are part of the applications-layer. It includes all 
   315 * the needed directories from the /epoc32/include, that are valid ones for the 
   316 * application-layer components. 
   317 *
   318 * Applications layer is the last one in the list, since most likely the most of 
   319 * the headers come from middleware or os-layer  => thus they are first.
   320 */
   321 #define APP_LAYER_SYSTEMINCLUDE SYSTEMINCLUDE \
   322  /epoc32/include \
   323  /epoc32/include/mw \
   324  /epoc32/include/platform/mw \
   325  /epoc32/include/platform \
   326  /epoc32/include/app \
   327  /epoc32/include/platform/app \
   328  /epoc32/include/platform/loc \
   329  /epoc32/include/platform/mw/loc \
   330  /epoc32/include/platform/app/loc \
   331  /epoc32/include/platform/loc/sc \
   332  /epoc32/include/platform/mw/loc/sc \
   333  /epoc32/include/platform/app/loc/sc
   334 
   335 #ifdef SYMBIAN_OLD_EXPORT_LOCATION
   336 #define APP_LAYER_SYSTEMINCLUDE_SYMBIAN SYSTEMINCLUDE \
   337  /epoc32/include \
   338  /epoc32/include/platform 
   339 #else
   340 #define APP_LAYER_SYSTEMINCLUDE_SYMBIAN SYSTEMINCLUDE \
   341  /epoc32/include \
   342  /epoc32/include/mw \
   343  /epoc32/include/platform/mw \
   344  /epoc32/include/platform \
   345  /epoc32/include/app \
   346  /epoc32/include/platform/app
   347 #endif
   348 /*
   349  /epoc32/include/platform/loc \
   350  /epoc32/include/platform/mw/loc \
   351  /epoc32/include/platform/app/loc \
   352  /epoc32/include/platform/loc/sc \
   353  /epoc32/include/platform/mw/loc/sc \
   354  /epoc32/include/platform/app/loc/sc
   355 */
   356  
   357 /**
   358 * This define statements defines the SYSTEMINCLUDE-line, which is intended to be
   359 * used in the mmp-files that are part of the middleware-layer. It includes all 
   360 * the needed directories from the /epoc32/include, that are valid ones for the 
   361 * middleware-layer components. 
   362 */
   363 #define MW_LAYER_SYSTEMINCLUDE SYSTEMINCLUDE \
   364  /epoc32/include \
   365  /epoc32/include/mw \
   366  /epoc32/include/platform/mw \
   367  /epoc32/include/platform \
   368  /epoc32/include/platform/loc \
   369  /epoc32/include/platform/mw/loc \
   370  /epoc32/include/platform/loc/sc \
   371  /epoc32/include/platform/mw/loc/sc
   372 
   373 #ifdef SYMBIAN_OLD_EXPORT_LOCATION
   374 #define MW_LAYER_SYSTEMINCLUDE_SYMBIAN SYSTEMINCLUDE \
   375  /epoc32/include \
   376  /epoc32/include/platform 
   377 #else
   378 #define MW_LAYER_SYSTEMINCLUDE_SYMBIAN SYSTEMINCLUDE \
   379  /epoc32/include \
   380  /epoc32/include/mw \
   381  /epoc32/include/platform/mw \
   382  /epoc32/include/platform 
   383 #endif
   384 /*
   385  /epoc32/include/platform/loc \
   386  /epoc32/include/platform/mw/loc \
   387  /epoc32/include/platform/loc/sc \
   388  /epoc32/include/platform/mw/loc/sc
   389 */
   390 
   391 /**
   392 * This define statements defines the SYSTEMINCLUDE-line, which is intended to be
   393 * used in the mmp-files that are part of the  osextensions-layer. It includes all
   394 * the needed directories from the /epoc32/include, that are valid ones for the
   395 * os-layer components. 
   396 */
   397 #define OS_LAYER_SYSTEMINCLUDE SYSTEMINCLUDE \
   398  /epoc32/include \
   399  /epoc32/include/platform \
   400  /epoc32/include/platform/loc \
   401  /epoc32/include/platform/loc/sc
   402 
   403 #ifdef SYMBIAN_OLD_EXPORT_LOCATION
   404 #define OS_LAYER_SYSTEMINCLUDE_SYMBIAN SYSTEMINCLUDE \
   405  /epoc32/include \
   406  /epoc32/include/platform
   407 #else
   408 #define OS_LAYER_SYSTEMINCLUDE_SYMBIAN SYSTEMINCLUDE \
   409  /epoc32/include \
   410  /epoc32/include/platform 
   411 #endif
   412 /*
   413  /epoc32/include/platform/loc \
   414  /epoc32/include/platform/loc/sc
   415 */
   416 
   417 // Below statement is Deprecated and the OS_LAYER_SYSTEMINCLUDE-macro has to be
   418 // used.
   419 // Removed, use teh OS_LAYER_SYSTEMINCLUDE instead.
   420 // #define OSEXT_LAYER_SYSTEMINCLUDE OS_LAYER_SYSTEMINCLUDE
   421 
   422 /**
   423 * This define statements defines the SYSTEMINCLUDE-line, which is intended to be
   424 * used in the mmp-files that are part of the os-layer. This is intended 
   425 * to be only used by those components which need to use in their mmp-file either
   426 * kern_ext.mmh or nkern_ext.mmh. Reason is that those
   427 * 2 files already contain the /epoc32/include  as system include path.
   428 * 
   429 */
   430 #define OS_LAYER_KERNEL_SYSTEMINCLUDE SYSTEMINCLUDE \
   431  /epoc32/include/platform
   432 
   433 // Below statement is Deprecated and the OS_LAYER_KERNEL_SYSTEMINCLUDE-macro 
   434 // has to be used.
   435 // Removed, use the OS_LAYER_KERNER_SYSTEMINCLUDE instead.
   436 // #define OSEXT_LAYER_KERNEL_SYSTEMINCLUDE OS_LAYER_KERNEL_SYSTEMINCLUDE
   437 
   438 /**
   439 ****************************************************************************
   440 * Definitions that also define the systeminclude paths for various
   441 * part of stdapis. Each statement has to be in its own line in the using
   442 * mmp-file. There are be more than 1 statement in single mmp-file.
   443 ****************************************************************************
   444 */
   445 #define OS_LAYER_LIBC_SYSTEMINCLUDE SYSTEMINCLUDE  OS_LAYER_PUBLIC_EXPORT_PATH(stdapis)
   446 
   447 #define OS_LAYER_GLIB_SYSTEMINCLUDE SYSTEMINCLUDE  OS_LAYER_PUBLIC_EXPORT_PATH(stdapis/glib-2.0) \
   448                                                    OS_LAYER_PUBLIC_EXPORT_PATH(stdapis/glib-2.0/glib) \
   449                                                    OS_LAYER_PUBLIC_EXPORT_PATH(stdapis/glib-2.0/gobject)
   450 
   451 
   452 #define OS_LAYER_SSL_SYSTEMINCLUDE SYSTEMINCLUDE   OS_LAYER_PUBLIC_EXPORT_PATH(stdapis/openssl)
   453                   
   454 #define OS_LAYER_STDCPP_SYSTEMINCLUDE SYSTEMINCLUDE  OS_LAYER_PUBLIC_EXPORT_PATH(stdapis/stlport) 
   455 
   456 #define OS_LAYER_BOOST_SYSTEMINCLUDE SYSTEMINCLUDE   OS_LAYER_PUBLIC_EXPORT_PATH(stdapis/boost)
   457 
   458 #define OS_LAYER_DBUS_SYSTEMINCLUDE SYSTEMINCLUDE    OS_LAYER_PUBLIC_EXPORT_PATH(stdapis/dbus-1.0) \
   459                                                      OS_LAYER_PUBLIC_EXPORT_PATH(stdapis/dbus-1.0/dbus)
   460 #define OS_LAYER_LIBUTILITY_SYSTEMINCLUDE SYSTEMINCLUDE OS_LAYER_PLATFORM_EXPORT_PATH(stdapis/utility)
   461 
   462 #define OS_LAYER_LIBOIL_SYSTEMINCLUDE SYSTEMINCLUDE OS_LAYER_PLATFORM_EXPORT_PATH(stdapis/liboil)
   463 
   464 #define MW_LAYER_GSTREAMER_SYSTEMINCLUDE SYSTEMINCLUDE \
   465  /epoc32/include/platform/mw/gstreamer/10_18 \
   466  /epoc32/include/platform/mw/gstreamer/10_18/gst \
   467  /epoc32/include/platform/mw/gstreamer/10_18/gst/gstcontroller \
   468  /epoc32/include/stdapis/machine
   469 
   470 // You need to add STLLIB_USAGE_DEFINITIONS as a separate line into your mmp-file, if you are using
   471 // the stllib. 
   472 #define STLLIB_USAGE_DEFINITIONS OPTION CW -wchar_t on\
   473         MACRO _WCHAR_T_DECLARED
   474 
   475 
   476 /**
   477  *  Symbian systeminclude macros for standard APIs.
   478 */
   479 #define OS_LAYER_ESTLIB_SYSTEMINCLUDE SYSTEMINCLUDE  OS_LAYER_PUBLIC_EXPORT_PATH(libc)
   480 
   481 #define OS_LAYER_STLPORTV5_SYSTEMINCLUDE SYSTEMINCLUDE    OS_LAYER_PUBLIC_EXPORT_PATH(stdapis/stlportv5)
   482 
   483 #define OS_LAYER_LIBXML2_SYSTEMINCLUDE SYSTEMINCLUDE  OS_LAYER_PUBLIC_EXPORT_PATH(stdapis/libxml2)
   484 
   485 
   486 /**
   487 ****************************************************************************
   488 * Definitions that also define the paths to the layer specific source directories.
   489 ****************************************************************************
   490 */
   491 /**
   492 * The below 3 macros define the paths to the layer-specific source dirs.
   493 * See usage on top of this hrh-file, these are used the same way as 
   494 * for instance the OS_LAYER_DOMAIN_EXPORT_PATH
   495 * Deprecated: is not allowed to be using in Symbian Foundation
   496 */
   497 #if __GNUC__ >= 3
   498 #define APP_LAYER_SOURCE_PATH(rest)    do not use intentionally generates error in export
   499 #define MW_LAYER_SOURCE_PATH(rest)     do not use intentionally generates error in export
   500 #define OSEXT_LAYER_SOURCE_PATH(rest)  do not use intentionally generates error in export
   501 #else
   502 #define APP_LAYER_SOURCE_PATH(rest)    do not use intentionally generates error in export
   503 #define MW_LAYER_SOURCE_PATH(rest)     do not use intentionally generates error in export
   504 #define OSEXT_LAYER_SOURCE_PATH(rest)  do not use intentionally generates error in export
   505 #endif
   506 
   507 /**
   508 ****************************************************************************
   509 * Definitions to export IBY files to different folders where they will be taken 
   510 * to ROM image
   511 ****************************************************************************
   512 */
   513 
   514 // Following three definitions are used for exporting IBY files to 
   515 // Core image (ROM+ROFS1). IBY files are exported according to their layer.
   516 #if __GNUC__ >= 3
   517 #define CORE_APP_LAYER_IBY_EXPORT_PATH(exported) /epoc32/rom/include/core/app/exported
   518 #define CORE_MW_LAYER_IBY_EXPORT_PATH(exported) /epoc32/rom/include/core/mw/exported
   519 #define CORE_OSEXT_LAYER_IBY_EXPORT_PATH(exported) do not use intentionally generates error
   520 #define CORE_OS_LAYER_IBY_EXPORT_PATH(exported) /epoc32/rom/include/core/os/exported
   521 #define CORE_ADAPT_LAYER_IBY_EXPORT_PATH(exported) /epoc32/rom/include/exported
   522 #else
   523 #define CORE_APP_LAYER_IBY_EXPORT_PATH(exported) /epoc32/rom/include/core/app/##exported
   524 #define CORE_MW_LAYER_IBY_EXPORT_PATH(exported) /epoc32/rom/include/core/mw/##exported
   525 #define CORE_OSEXT_LAYER_IBY_EXPORT_PATH(exported) do not use intentionally generates error
   526 #define CORE_OS_LAYER_IBY_EXPORT_PATH(exported) /epoc32/rom/include/core/os/##exported
   527 #define CORE_ADAPT_LAYER_IBY_EXPORT_PATH(exported) /epoc32/rom/include/##exported
   528 #endif
   529 
   530 // Following three definitions are used for exporting IBY files to Variant image, 
   531 // Language part (ROFS2). IBY files are exported according to their layer.
   532 #if __GNUC__ >= 3
   533 #define LANGUAGE_APP_LAYER_IBY_EXPORT_PATH(exported) /epoc32/rom/include/language/app/exported
   534 #define LANGUAGE_MW_LAYER_IBY_EXPORT_PATH(exported) /epoc32/rom/include/language/mw/exported
   535 #define LANGUAGE_OSEXT_LAYER_IBY_EXPORT_PATH(exported) do not use intentionally generates error
   536 #define LANGUAGE_OS_LAYER_IBY_EXPORT_PATH(exported) /epoc32/rom/include/language/os/exported
   537 #else
   538 #define LANGUAGE_APP_LAYER_IBY_EXPORT_PATH(exported) /epoc32/rom/include/language/app/##exported
   539 #define LANGUAGE_MW_LAYER_IBY_EXPORT_PATH(exported) /epoc32/rom/include/language/mw/##exported
   540 #define LANGUAGE_OSEXT_LAYER_IBY_EXPORT_PATH(exported) do not use intentionally generates error
   541 #define LANGUAGE_OS_LAYER_IBY_EXPORT_PATH(exported) /epoc32/rom/include/language/os/##exported
   542 #endif
   543 
   544 // Following three definitions are used for exporting IBY files to Variant image, (ROFS2). 
   545 // BY files are exported according to their layer.
   546 #if __GNUC__ >= 3
   547 #define CUSTOMER_APP_LAYER_IBY_EXPORT_PATH(exported) /epoc32/rom/include/customer/app/exported
   548 #define CUSTOMER_MW_LAYER_IBY_EXPORT_PATH(exported) /epoc32/rom/include/customer/mw/exported
   549 #define CUSTOMER_OSEXT_LAYER_IBY_EXPORT_PATH(exported) do not use intentionally generates error
   550 #define CUSTOMER_OS_LAYER_IBY_EXPORT_PATH(exported) /epoc32/rom/include/customer/os/exported
   551 #else
   552 #define CUSTOMER_APP_LAYER_IBY_EXPORT_PATH(exported) /epoc32/rom/include/customer/app/##exported
   553 #define CUSTOMER_MW_LAYER_IBY_EXPORT_PATH(exported) /epoc32/rom/include/customer/mw/##exported
   554 #define CUSTOMER_OSEXT_LAYER_IBY_EXPORT_PATH(exported) do not use intentionally generates error
   555 #define CUSTOMER_OS_LAYER_IBY_EXPORT_PATH(exported) /epoc32/rom/include/customer/os/##exported
   556 #endif
   557 
   558 // Following three definitions are used for exporting IBY files to 
   559 // Variant Customer part, (ROFS3). IBY files are exported according to 
   560 // their layer.
   561 #if __GNUC__ >= 3
   562 #define CUSTOMER_VARIANT_APP_LAYER_IBY_EXPORT_PATH(exported) /epoc32/rom/include/customervariant/app/exported
   563 #define CUSTOMER_VARIANT_MW_LAYER_IBY_EXPORT_PATH(exported) /epoc32/rom/include/customervariant/mw/exported
   564 #define CUSTOMER_VARIANT_OSEXT_LAYER_IBY_EXPORT_PATH(exported) do not use intentionally generates error
   565 #define CUSTOMER_VARIANT_OS_LAYER_IBY_EXPORT_PATH(exported) /epoc32/rom/include/customervariant/os/exported
   566 #else
   567 #define CUSTOMER_VARIANT_APP_LAYER_IBY_EXPORT_PATH(exported) /epoc32/rom/include/customervariant/app/##exported
   568 #define CUSTOMER_VARIANT_MW_LAYER_IBY_EXPORT_PATH(exported) /epoc32/rom/include/customervariant/mw/##exported
   569 #define CUSTOMER_VARIANT_OSEXT_LAYER_IBY_EXPORT_PATH(exported) do not use intentionally generates error
   570 #define CUSTOMER_VARIANT_OS_LAYER_IBY_EXPORT_PATH(exported) /epoc32/rom/include/customervariant/os/##exported
   571 #endif
   572 
   573 
   574 // Following definition is used for exporting tools and stubs IBY files to 
   575 // Core image.
   576 #if __GNUC__ >= 3
   577 #define CORE_IBY_EXPORT_PATH(path,exported)  /epoc32/rom/include/core/path/exported
   578 #else
   579 #define CORE_IBY_EXPORT_PATH(path,exported)  /epoc32/rom/include/core/##path##/##exported
   580 #endif
   581 
   582 /**
   583 * ---------------------------------------
   584 * Location, where the localization .loc file should be exported
   585 * ---------------------------------------
   586 */
   587 // Location, where the os layer localization .loc file should be 
   588 // exported
   589 #if __GNUC__ >= 3
   590 // Deprecated: use the OS_LAYER_LOC_EXPORT_PATH instead
   591 #define OSEXT_LAYER_LOC_EXPORT_PATH(exported) do not use intentionally generates error
   592 #define OS_LAYER_LOC_EXPORT_PATH(exported) /epoc32/include/platform/loc/sc/exported
   593 
   594 // Location, where the middleware layer localization .loc file should be 
   595 // exported
   596 #define MW_LAYER_LOC_EXPORT_PATH(exported) /epoc32/include/platform/mw/loc/sc/exported
   597 
   598 // Location, where the application layer localization .loc file should be 
   599 // exported
   600 #define APP_LAYER_LOC_EXPORT_PATH(exported) /epoc32/include/platform/app/loc/sc/exported
   601 
   602 #else
   603 
   604 // Deprecated: use the OS_LAYER_LOC_EXPORT_PATH instead
   605 #define OSEXT_LAYER_LOC_EXPORT_PATH(exported) do not use intentionally generates error
   606 #define OS_LAYER_LOC_EXPORT_PATH(exported) /epoc32/include/platform/loc/sc/##exported
   607 
   608 // Location, where the middleware layer localization .loc file should be exported
   609 #define MW_LAYER_LOC_EXPORT_PATH(exported) /epoc32/include/platform/mw/loc/sc/##exported
   610 
   611 // Location, where the application layer localization .loc file should be exported
   612 #define APP_LAYER_LOC_EXPORT_PATH(exported) /epoc32/include/platform/app/loc/sc/##exported
   613 #endif
   614 
   615 /**
   616 * ---------------------------------------
   617 * Macros for Configuration tool migration. 
   618 * The below macros define the location under epoc32, where the confml 
   619 * (Configuration Markup Language) and crml (Central Repository Markup Language) 
   620 * files should be exported.
   621 * ---------------------------------------
   622 */
   623 #if __GNUC__ >= 3
   624 #define CONFML_EXPORT_PATH(file,category)           /epoc32/rom/config/assets/category/confml/file
   625 #define CRML_EXPORT_PATH(file,category)             /epoc32/rom/config/assets/category/implml/file
   626 #define GCFML_EXPORT_PATH(file,category)            /epoc32/rom/config/assets/category/implml/file
   627 #define CONFML_CONFIG_EXPORT_PATH(file,category)    /epoc32/rom/config/assets/category/confml/file
   628 #else
   629 #define CONFML_EXPORT_PATH(file,category)           /epoc32/rom/config/assets/##category##/confml/##file
   630 #define CRML_EXPORT_PATH(file,category)             /epoc32/rom/config/assets/##category##/implml/##file
   631 #define GCFML_EXPORT_PATH(file,category)            /epoc32/rom/config/assets/##category##/implml/##file
   632 #define CONFML_CONFIG_EXPORT_PATH(file,category)    /epoc32/rom/config/assets/##category##/confml/##file
   633 #endif
   634 
   635 #define APP_LAYER_CONFML(exported)                  CONFML_EXPORT_PATH(exported,s60)
   636 #define APP_LAYER_CRML(exported)                    CRML_EXPORT_PATH(exported,s60)
   637 #define APP_LAYER_GCFML(exported)                   GCFML_EXPORT_PATH(exported,s60)
   638 #define APP_LAYER_CONFML_CONFIG(exported)           CONFML_CONFIG_EXPORT_PATH(exported,s60)
   639                                                     
   640 #define MW_LAYER_CONFML(exported)                   CONFML_EXPORT_PATH(exported,s60)
   641 #define MW_LAYER_CRML(exported)                     CRML_EXPORT_PATH(exported,s60)
   642 #define MW_LAYER_GCFML(exported)                    GCFML_EXPORT_PATH(exported,s60)
   643 #define MW_LAYER_CONFML_CONFIG(exported)            CONFML_CONFIG_EXPORT_PATH(exported,s60)
   644        
   645 // Deprecate: Use the OS_LAYER_* macros instead of OSEXT_LAYER_*                                             
   646 #define OSEXT_LAYER_CONFML(exported)                do not use intentionally generates error
   647 #define OSEXT_LAYER_CRML(exported)                  do not use intentionally generates error
   648 #define OSEXT_LAYER_GCFML(exported)                 do not use intentionally generates error
   649 #define OSEXT_LAYER_CONFML_CONFIG(exported)         do not use intentionally generates error
   650 #define OS_LAYER_CONFML(exported)                   CONFML_EXPORT_PATH(exported,s60)
   651 #define OS_LAYER_CRML(exported)                     CRML_EXPORT_PATH(exported,s60)
   652 #define OS_LAYER_GCFML(exported)                    GCFML_EXPORT_PATH(exported,s60)
   653 #define OS_LAYER_CONFML_CONFIG(exported)            CONFML_CONFIG_EXPORT_PATH(exported,s60)
   654 
   655 #define APP_LAYER_EXPORTS_CONFML(exported)           CONFML_EXPORT_PATH(exported,symbianos)
   656 #define APP_LAYER_EXPORTS_CRML(exported)             CRML_EXPORT_PATH(exported,symbianos)
   657 #define APP_LAYER_EXPORTS_GCFML(exported)            GCFML_EXPORT_PATH(exported,symbianos)
   658 
   659 #define MW_LAYER_EXPORTS_CONFML(exported)            CONFML_EXPORT_PATH(exported,symbianos)
   660 #define MW_LAYER_EXPORTS_CRML(exported)              CRML_EXPORT_PATH(exported,symbianos)
   661 #define MW_LAYER_EXPORTS_GCFML(exported)             GCFML_EXPORT_PATH(exported,symbianos)
   662        
   663 // Deprecate: Use the OS_LAYER_* macros instead of OSEXT_LAYER_*                                             
   664 #define OSEXT_LAYER_CONFML(exported)                do not use intentionally generates error
   665 #define OSEXT_LAYER_CRML(exported)                  do not use intentionally generates error
   666 #define OSEXT_LAYER_GCFML(exported)                 do not use intentionally generates error
   667 #define OSEXT_LAYER_CONFML_CONFIG(exported)         do not use intentionally generates error
   668 #define OS_LAYER_EXPORTS_CONFML(exported)            CONFML_EXPORT_PATH(exported,symbianos)
   669 #define OS_LAYER_EXPORTS_CRML(exported)              CRML_EXPORT_PATH(exported,symbianos)
   670 #define OS_LAYER_EXPORTS_GCFML(exported)             GCFML_EXPORT_PATH(exported,symbianos)
   671 
   672 /**
   673  * Macros to be used in kernel and BSP files to specify systeminclude locations. These macros are necessary
   674  * because in some case, the systeminclude location changes based on, e.g., hardware platform.
   675  */
   676 #if __GNUC__ >= 3
   677 #define SYMBIAN_BASE_SYSTEMINCLUDE(included) SYSTEMINCLUDE SYMBIAN_OS_LAYER_PLATFORM_EXPORT_PATH(included)
   678 #define SYMBIAN_NE1_TB_SYSTEMINCLUDE(included) SYSTEMINCLUDE SYMBIAN_OS_LAYER_PLATFORM_EXPORT_PATH(ne1_tb/included)
   679 #define SYMBIAN_TIOMAP3_SYSTEMINCLUDE(included) SYSTEMINCLUDE SYMBIAN_OS_LAYER_PLATFORM_EXPORT_PATH(tiomap3/included)
   680 #define SYMBIAN_H2_SYSTEMINCLUDE(included) SYSTEMINCLUDE SYMBIAN_OS_LAYER_PLATFORM_EXPORT_PATH(h2/included)
   681 #define SYMBIAN_ASSP_SYSTEMINCLUDE(included) SYSTEMINCLUDE SYMBIAN_OS_LAYER_PLATFORM_EXPORT_PATH(assp/included)
   682 #define SYMBIAN_OMAP_HRP_SYSTEMINCLUDE(included) SYSTEMINCLUDE SYMBIAN_OS_LAYER_PLATFORM_EXPORT_PATH(omap_hrp/included)
   683 #define SYMBIAN_WINS_SYSTEMINCLUDE(included) SYSTEMINCLUDE SYMBIAN_OS_LAYER_PLATFORM_EXPORT_PATH(wins/included)
   684 #define SYMBIAN_8500ED_SYSTEMINCLUDE(included) SYSTEMINCLUDE SYMBIAN_OS_LAYER_PLATFORM_EXPORT_PATH(included)
   685 #define SYMBIAN_8500_SYSTEMINCLUDE(included) SYSTEMINCLUDE SYMBIAN_OS_LAYER_PLATFORM_EXPORT_PATH(included)
   686 #define SYMBIAN_INTERNAL_SYSTEMINCLUDE(included) SYSTEMINCLUDE SYMBIAN_OS_LAYER_PLATFORM_EXPORT_PATH(internal/included)
   687 #define SYMBIAN_CONFIG_SYSTEMINCLUDE(included) SYSTEMINCLUDE SYMBIAN_OS_LAYER_PLATFORM_EXPORT_PATH(included)
   688 #define SYMBIAN_NDKX_SYSTEMINCLUDE(included) SYSTEMINCLUDE SYMBIAN_OS_LAYER_PLATFORM_EXPORT_PATH(included)
   689 #else
   690 #define SYMBIAN_BASE_SYSTEMINCLUDE(included) SYSTEMINCLUDE SYMBIAN_OS_LAYER_PLATFORM_EXPORT_PATH(##included)
   691 #define SYMBIAN_NE1_TB_SYSTEMINCLUDE(included) SYSTEMINCLUDE SYMBIAN_OS_LAYER_PLATFORM_EXPORT_PATH(ne1_tb/##included)
   692 #define SYMBIAN_TIOMAP3_SYSTEMINCLUDE(included) SYSTEMINCLUDE SYMBIAN_OS_LAYER_PLATFORM_EXPORT_PATH(tiomap3/##included)
   693 #define SYMBIAN_H2_SYSTEMINCLUDE(included) SYSTEMINCLUDE SYMBIAN_OS_LAYER_PLATFORM_EXPORT_PATH(h2/##included)
   694 #define SYMBIAN_ASSP_SYSTEMINCLUDE(included) SYSTEMINCLUDE SYMBIAN_OS_LAYER_PLATFORM_EXPORT_PATH(assp/##included)
   695 #define SYMBIAN_OMAP_HRP_SYSTEMINCLUDE(included) SYSTEMINCLUDE SYMBIAN_OS_LAYER_PLATFORM_EXPORT_PATH(omap_hrp/##included)
   696 #define SYMBIAN_WINS_SYSTEMINCLUDE(included) SYSTEMINCLUDE SYMBIAN_OS_LAYER_PLATFORM_EXPORT_PATH(wins/##included)
   697 #define SYMBIAN_8500ED_SYSTEMINCLUDE(included) SYSTEMINCLUDE SYMBIAN_OS_LAYER_PLATFORM_EXPORT_PATH(##included)
   698 #define SYMBIAN_8500_SYSTEMINCLUDE(included) SYSTEMINCLUDE SYMBIAN_OS_LAYER_PLATFORM_EXPORT_PATH(##included)
   699 #define SYMBIAN_INTERNAL_SYSTEMINCLUDE(included) SYSTEMINCLUDE SYMBIAN_OS_LAYER_PLATFORM_EXPORT_PATH(internal/##included)
   700 #define SYMBIAN_CONFIG_SYSTEMINCLUDE(included) SYSTEMINCLUDE SYMBIAN_OS_LAYER_PLATFORM_EXPORT_PATH(##included)
   701 #define SYMBIAN_NDKX_SYSTEMINCLUDE(included) SYSTEMINCLUDE SYMBIAN_OS_LAYER_PLATFORM_EXPORT_PATH(##included)
   702 #endif
   703    
   704 
   705 /**
   706 * Temporary macros for Symbian exports.
   707 */
   708 #ifdef SYMBIAN_OLD_EXPORT_LOCATION
   709 #if __GNUC__ >= 3
   710 #define SYMBIAN_OS_LAYER_PUBLIC_EXPORT_PATH(exported) OS_LAYER_PUBLIC_EXPORT_PATH(exported)
   711 #define SYMBIAN_OS_LAYER_PLATFORM_EXPORT_PATH(exported) OS_LAYER_PUBLIC_EXPORT_PATH(exported)
   712 #define SYMBIAN_MW_LAYER_PUBLIC_EXPORT_PATH(exported) OS_LAYER_PUBLIC_EXPORT_PATH(exported)
   713 #define SYMBIAN_MW_LAYER_PLATFORM_EXPORT_PATH(exported) OS_LAYER_PUBLIC_EXPORT_PATH(exported)
   714 #define SYMBIAN_APP_LAYER_PUBLIC_EXPORT_PATH(exported) OS_LAYER_PUBLIC_EXPORT_PATH(exported)
   715 #define SYMBIAN_APP_LAYER_PLATFORM_EXPORT_PATH(exported) OS_LAYER_PUBLIC_EXPORT_PATH(exported)
   716 #else
   717 #define SYMBIAN_OS_LAYER_PUBLIC_EXPORT_PATH(exported) OS_LAYER_PUBLIC_EXPORT_PATH(##exported)
   718 #define SYMBIAN_OS_LAYER_PLATFORM_EXPORT_PATH(exported) OS_LAYER_PUBLIC_EXPORT_PATH(##exported)
   719 #define SYMBIAN_MW_LAYER_PUBLIC_EXPORT_PATH(exported) OS_LAYER_PUBLIC_EXPORT_PATH(##exported)
   720 #define SYMBIAN_MW_LAYER_PLATFORM_EXPORT_PATH(exported) OS_LAYER_PUBLIC_EXPORT_PATH(##exported)
   721 #define SYMBIAN_APP_LAYER_PUBLIC_EXPORT_PATH(exported) OS_LAYER_PUBLIC_EXPORT_PATH(##exported)
   722 #define SYMBIAN_APP_LAYER_PLATFORM_EXPORT_PATH(exported) OS_LAYER_PUBLIC_EXPORT_PATH(##exported)
   723 #endif
   724 #else // not SYMBIAN_OLD_EXPORT_LOCATION
   725 #if __GNUC__ >= 3
   726 #define SYMBIAN_OS_LAYER_PUBLIC_EXPORT_PATH(exported) OS_LAYER_PUBLIC_EXPORT_PATH(exported)
   727 #define SYMBIAN_OS_LAYER_PLATFORM_EXPORT_PATH(exported) OS_LAYER_PLATFORM_EXPORT_PATH(exported)
   728 #define SYMBIAN_MW_LAYER_PUBLIC_EXPORT_PATH(exported) MW_LAYER_PUBLIC_EXPORT_PATH(exported)
   729 #define SYMBIAN_MW_LAYER_PLATFORM_EXPORT_PATH(exported) MW_LAYER_PLATFORM_EXPORT_PATH(exported)
   730 #define SYMBIAN_APP_LAYER_PUBLIC_EXPORT_PATH(exported) APP_LAYER_PUBLIC_EXPORT_PATH(exported)
   731 #define SYMBIAN_APP_LAYER_PLATFORM_EXPORT_PATH(exported) APP_LAYER_PLATFORM_EXPORT_PATH(exported)
   732 #else
   733 #define SYMBIAN_OS_LAYER_PUBLIC_EXPORT_PATH(exported) OS_LAYER_PUBLIC_EXPORT_PATH(##exported)
   734 #define SYMBIAN_OS_LAYER_PLATFORM_EXPORT_PATH(exported) OS_LAYER_PLATFORM_EXPORT_PATH(##exported)
   735 #define SYMBIAN_MW_LAYER_PUBLIC_EXPORT_PATH(exported) MW_LAYER_PUBLIC_EXPORT_PATH(##exported)
   736 #define SYMBIAN_MW_LAYER_PLATFORM_EXPORT_PATH(exported) MW_LAYER_PLATFORM_EXPORT_PATH(##exported)
   737 #define SYMBIAN_APP_LAYER_PUBLIC_EXPORT_PATH(exported) APP_LAYER_PUBLIC_EXPORT_PATH(##exported)
   738 #define SYMBIAN_APP_LAYER_PLATFORM_EXPORT_PATH(exported) APP_LAYER_PLATFORM_EXPORT_PATH(##exported)
   739 #endif
   740 #endif
   741 
   742 #endif  // end of PLATFORM_PATHS_HRH
   743