devicesrv_pub/platform_path_definitions_api/inc/platform_paths.hrh
author Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
Tue, 02 Feb 2010 00:53:00 +0200
changeset 0 4e1aa6a622a0
child 21 ccb4f6b3db21
permissions -rw-r--r--
Revision: 201003

/*
* Copyright (c) 2002-2009 Nokia Corporation and/or its subsidiary(-ies). 
* All rights reserved.
* This component and the accompanying materials are made available
* under the terms of "Eclipse Public License v1.0"
* which accompanies this distribution, and is available
* at the URL "http://www.eclipse.org/legal/epl-v10.html".
*
* Initial Contributors:
* Nokia Corporation - initial contribution.
*
* Contributors:
*
* Description:  Predefined include paths to be used in the mmp-files for the 
*                components in the layered model. There is one definition for
*                each layer. The mmp-file should use the statement that is 
*                intended for the same layer as where the mmp-file resides.
*
*                There is also macros to be used in the bld.inf-files to 
*                export of Public  and Platform headers into 
*                correct locations. 
*
* Usage examples:
*     ---------------------------------------------
*      How to include this file in bld.inf and mmp-files.
*       Reasoning: The build system is such that at the time the 
*                  bld.inf and mmp-files are "compiled" the available
*                  include paths are limited. Only the /epoc32/include
*                  can be guaranteed. Thus to get this file available
*                  you need to make include relative to the mentioned
*                  directory. 
*     ---------------------------------------------
*
*      #include <platform_paths.hrh>
*    
*     *************************************************************
*     * MMP file related macro usages to add the system include paths
*     * 
*     * The include paths has to be related to the layer in which your SW 
*     * resides. Thus as an example: a component residing in middleware
*     * layer should use the MW specific macro.
*     * Keep this as a separate line in the mmp-files. If you need to
*     * add your own SYSTEMINCLUDE paths, please defined them as
*     * separate statement.
*     *************************************************************
*         APP_LAYER_SYSTEMINCLUDE
*         MW_LAYER_SYSTEMINCLUDE
*         OS_LAYER_SYSTEMINCLUDE
**
*     *************************************************************
*     * Macros related to using various parts of stdapis
*     *************************************************************
*       To use STLLIB you need to have this in your mmp-file
*         STLLIB_USAGE_DEFINITIONS
*
*       Depending on what module you are using from stdapis you need to have
*       one or more of the following macros in your mmp-file (every one in 
*       separate line !)
*
*          OS_LAYER_LIBC_SYSTEMINCLUDE
*          OS_LAYER_GLIB_SYSTEMINCLUDE
*          OS_LAYER_SSL_SYSTEMINCLUDE
*          OS_LAYER_STDCPP_SYSTEMINCLUDE
*          OS_LAYER_BOOST_SYSTEMINCLUDE
*          OS_LAYER_DBUS_SYSTEMINCLUDE
*          OS_LAYER_LIBUTILITY_SYSTEMINCLUDE
*
*     *************************************************************
*     * Macros related to exporting Public and Platform APIs into 
*     * correct place in the new system. 
*     *
*     * The macro that you should use depends on 2 things:
*     *  - in which layer your package, which exports the APIs resides
*     *  - what is the visibility of the API (public or platform)
*     *************************************************************
*      // the exporting of public APIs should use one of below macros
*      // depending on which layer the API belogs to
*      APP_LAYER_PUBLIC_EXPORT_PATH
*      MW_LAYER_PUBLIC_EXPORT_PATH
*      OS_LAYER_PUBLIC_EXPORT_PATH
*
*      // the exporting of platform APIs should use one of below macros
*      // depending on which layer the API belogs to
*      APP_LAYER_PLATFORM_EXPORT_PATH
*      MW_LAYER_PLATFORM_EXPORT_PATH
*      OS_LAYER_PLATFORM_EXPORT_PATH
*
*      The hierarchy how APIs should reside in foundation has been specified
*      in developer documentation. See further details from documentation.
*      Below is example case relying on the structure
*        my_own_api/group/bld.inf
*        my_own_api/inc/header1.h
*        my_own_api/inc/subdir/header2.h
*  
*      Assuming that the API is in middleware layer and a public API. 
*      Then the bld.inf should have the following      
*        ../inc/header1.h  APP_LAYER_PUBLIC_EXPORT_PATH(header1.h)
*        ../inc/subdir/header2.h  APP_LAYER_PUBLIC_EXPORT_PATH(subdir/header2.h)
*  
*      In the above case the locations are as follow (with current MACRO settings):
*        header1.h in /epoc32/include/app
*        header2.h in /epoc32/include/app/subdir
*
*
*     *************************************************************
*     * Macros related to IBY file exporting
*     *************************************************************
*			
*	    Component bld.inf files need to include platform_paths.hrh, see
*           beginning of this file on how to do this correctly. Component bld.inf 
*           files need to use these macros in PRJ_EXPORTS to get their IBY files 
*           to ROM image.
*
*     ---------------------------------------------
*     Usage for Core image (ROM+ROFS1):
*     ---------------------------------------------
*	 // Layer specific specific macros. Use the macro, which is specified
*        // for the layer, in which your component resides
*        <somepath>/<file1.iby>  CORE_APP_LAYER_IBY_EXPORT_PATH(<file1.iby>)
*	 <somepath>/<file2.iby>  CORE_MW_LAYER_IBY_EXPORT_PATH(<file2.iby>)
*	 <somepath>/<file3.iby>  CORE_OS_LAYER_IBY_EXPORT_PATH(<file3.iby>)
*
*	 //stub iby files
*	 <somepath>/<file4.iby>  CORE_IBY_EXPORT_PATH(stubs,<file4.iby>)
*	 //tool iby files
*	 <somepath>/<file5.iby>  CORE_IBY_EXPORT_PATH(tools,<file5.iby>)
*		
*     ---------------------------------------------
*     Usage for Variant image, Language part (ROFS2):
*     ---------------------------------------------
*	 // Layer specific specific macros. Use the macro, which is specified
*        // for the layer, in which your component resides
*        <somepath>/<file1.iby>  LANGUAGE_APP_LAYER_IBY_EXPORT_PATH(<file1.iby>)
*	 <somepath>/<file2.iby>  LANGUAGE_MW_LAYER_IBY_EXPORT_PATH(<file2.iby>)
*	 <somepath>/<file3.iby>  LANGUAGE_OS_LAYER_IBY_EXPORT_PATH(<file3.iby>)			
*
*     ---------------------------------------------
*     Usage for Variant image, Language part  (ROFS2):
*     ---------------------------------------------
*	 // Layer specific specific macros. Use the macro, which is specified
*        // for the layer, in which your component resides
*        <somepath>/<file1.iby>  CUSTOMER_APP_LAYER_IBY_EXPORT_PATH(<file1.iby>)
*	 <somepath>/<file2.iby>  CUSTOMER_MW_LAYER_IBY_EXPORT_PATH(<file2.iby>)
*	 <somepath>/<file3.iby>  CUSTOMER_OS_LAYER_IBY_EXPORT_PATH(<file3.iby>)			
*
*     ---------------------------------------------
*     Usage for Customer Variant image, (ROFS3):
*     ---------------------------------------------
*	 // Layer specific specific macros. Use the macro, which is specified
*        // for the layer, in which your component resides
*        <somepath>/<f1.iby> CUSTOMER_VARIANT_APP_LAYER_IBY_EXPORT_PATH(<f1.iby>)
*	 <somepath>/<f2.iby> CUSTOMER_VARIANT_MW_LAYER_IBY_EXPORT_PATH(<f2.iby>)
*	 <somepath>/<f3.iby> CUSTOMER_VARIANT_OS_LAYER_IBY_EXPORT_PATH(<f3.iby>)			
*	
*
*     *************************************************************
*     * Macro related to Exporting localization .loc files into 
*     * correct place in the system. 
*     *************************************************************
*
*     ---------------------------------------------
*     Usage for components:
*     ---------------------------------------------
*	    Component bld.inf files need to include platform_paths.hrh, see
*           beginning of this file on how to do this correctly. Component bld.inf 
*           files need to use these macros in PRJ_EXPORTS to get their loc files 
*           for localization.
*     loc files that should be localized by localisation team should be in 
*     loc-folder in the source tree (see developer guidelines)
*
*	 // Layer specific specific macros. Use the macro, which is specified
*        // for the layer, in which your component resides
*	 <somepath>/loc/<file>.loc  APP_LAYER_LOC_EXPORT_PATH(<file>.loc)
*	 <somepath>/loc/<file>.loc  MW_LAYER_LOC_EXPORT_PATH(<file>.loc)
*	 <somepath>/loc/<file>.loc  OS_LAYER_LOC_EXPORT_PATH(<file>.loc)
*
* 
*
*
*/


#ifndef PLATFORM_PATHS_HRH
#define PLATFORM_PATHS_HRH

/**
**************************************************************************
* General comments about the exporting of headers macros
*  1) The definitions point currently to the old locations. (which makes some 
*     macros to have same values. The idea is that you can already start using
*     them now and those will be later on changed => change affects everybody.
***************************************************************************
*/

/**
* ---------------------------------------
* Location, where the applications layer specific public headers should be exported
* See usage on top of this hrh-file.
* ---------------------------------------
*/

#if __GNUC__ >= 3
#define APP_LAYER_SDK_EXPORT_PATH(exported) do not use intentionally generates error
#define APP_LAYER_PUBLIC_EXPORT_PATH(exported) /epoc32/include/app/exported
#else
#define APP_LAYER_SDK_EXPORT_PATH(exported) do not use intentionally generates error
#define APP_LAYER_PUBLIC_EXPORT_PATH(exported) /epoc32/include/app/##exported
#endif

/**
* ---------------------------------------
* Location, where the applications layer specific platform headers should be exported
* See usage on top of this hrh-file.
* ---------------------------------------
*/
#if __GNUC__ >= 3
#define APP_LAYER_DOMAIN_EXPORT_PATH(exported) do not use intentionally generates error
#define APP_LAYER_PLATFORM_EXPORT_PATH(exported) /epoc32/include/platform/app/exported
#else
#define APP_LAYER_DOMAIN_EXPORT_PATH(exported) do not use intentionally generates error
#define APP_LAYER_PLATFORM_EXPORT_PATH(exported) /epoc32/include/platform/app/##exported
#endif

/**
* ---------------------------------------
* Location, where the middleware layer specific public headers should be exported
* See usage on top of this hrh-file.
* ---------------------------------------
*/
#if __GNUC__ >= 3
#define MW_LAYER_SDK_EXPORT_PATH(exported) do not use intentionally generates error
#define MW_LAYER_PUBLIC_EXPORT_PATH(exported) /epoc32/include/mw/exported
#else
#define MW_LAYER_SDK_EXPORT_PATH(exported) do not use intentionally generates error
#define MW_LAYER_PUBLIC_EXPORT_PATH(exported) /epoc32/include/mw/##exported
#endif

/**
* ---------------------------------------
* Location, where the middleware layer specific platform headers should be exported
* ---------------------------------------
*/
#if __GNUC__ >= 3
#define MW_LAYER_DOMAIN_EXPORT_PATH(exported) do not use intentionally generates error
#define MW_LAYER_PLATFORM_EXPORT_PATH(exported) /epoc32/include/platform/mw/exported
#else
#define MW_LAYER_DOMAIN_EXPORT_PATH(exported) do not use intentionally generates error
#define MW_LAYER_PLATFORM_EXPORT_PATH(exported) /epoc32/include/platform/mw/##exported
#endif

/**
* ---------------------------------------
* Location, where the os layer specific public headers should be exported
* ---------------------------------------
*/
#if __GNUC__ >= 3
#define  OSEXT_LAYER_SDK_EXPORT_PATH(exported) do not use intentionally generates error
#define  OS_LAYER_PUBLIC_EXPORT_PATH(exported) /epoc32/include/exported
#else
#define  OSEXT_LAYER_SDK_EXPORT_PATH(exported) do not use intentionally generates error
#define  OS_LAYER_PUBLIC_EXPORT_PATH(exported) /epoc32/include/##exported
#endif

/**
* ---------------------------------------
* Location, where the os specific platform headers should be exported
* ---------------------------------------
*/
#if __GNUC__ >= 3
#define OSEXT_LAYER_DOMAIN_EXPORT_PATH(exported) do not use intentionally generates error
#define OS_LAYER_PLATFORM_EXPORT_PATH(exported) /epoc32/include/platform/exported
#else
#define OSEXT_LAYER_DOMAIN_EXPORT_PATH(exported) do not use intentionally generates error
#define OS_LAYER_PLATFORM_EXPORT_PATH(exported) /epoc32/include/platform/##exported
#endif

/**
* ---------------------------------------
* Location, where the  cenrep excel sheets should be exported
* Deprecated: should no longer be used. Kept for compability.
* ---------------------------------------
*/
#if __GNUC__ >= 3
#define CENREP_XLS_EXPORT_PATH(exported) /epoc32/tools/cenrep/data/src/exported
#else
#define CENREP_XLS_EXPORT_PATH(exported) /epoc32/tools/cenrep/data/src/##exported
#endif

/**
**************************************************************************
*  General comments about the 3 define statements related to include paths:
*  1) the /epoc32/include/oem is now defined there for backward compability.
*     Once the directory is empty, the directory will be removed. However this 
*     enables us to ensure that if you use these define statements => you do 
*     not have to remove the statements later on, when the directory no longer 
*     exists.
*  2) These statements should be enough in normal cases. For certain specific 
*     cases you migth need to add some specific directory from /epoc32/include
*     (for instance /epoc32/include/ecom).
*     In normal cases the include staments in code should be relative to one of 
*     the system include paths, but in certain cases, the included files requires
*     that the subdirectory is also part of the system include paths.
****************************************************************************
*/

/**
* This define statements defines the SYSTEMINCLUDE-line, which is intended to be 
* used in the mmp-files that are part of the applications-layer. It includes all 
* the needed directories from the /epoc32/include, that are valid ones for the 
* application-layer components. 
*
* Applications layer is the last one in the list, since most likely the most of 
* the headers come from middleware or os-layer  => thus they are first.
*/
#define APP_LAYER_SYSTEMINCLUDE SYSTEMINCLUDE \
 /epoc32/include \
 /epoc32/include/mw \
 /epoc32/include/platform/mw \
 /epoc32/include/platform \
 /epoc32/include/app \
 /epoc32/include/platform/app \
 /epoc32/include/platform/loc \
 /epoc32/include/platform/mw/loc \
 /epoc32/include/platform/app/loc \
 /epoc32/include/platform/loc/sc \
 /epoc32/include/platform/mw/loc/sc \
 /epoc32/include/platform/app/loc/sc
 
/**
* This define statements defines the SYSTEMINCLUDE-line, which is intended to be
* used in the mmp-files that are part of the middleware-layer. It includes all 
* the needed directories from the /epoc32/include, that are valid ones for the 
* middleware-layer components. 
*/
#define MW_LAYER_SYSTEMINCLUDE SYSTEMINCLUDE \
 /epoc32/include \
 /epoc32/include/mw \
 /epoc32/include/platform/mw \
 /epoc32/include/platform \
 /epoc32/include/platform/loc \
 /epoc32/include/platform/mw/loc \
 /epoc32/include/platform/loc/sc \
 /epoc32/include/platform/mw/loc/sc

/**
* This define statements defines the SYSTEMINCLUDE-line, which is intended to be
* used in the mmp-files that are part of the  osextensions-layer. It includes all
* the needed directories from the /epoc32/include, that are valid ones for the
* os-layer components. 
*/
#define OS_LAYER_SYSTEMINCLUDE SYSTEMINCLUDE \
 /epoc32/include \
 /epoc32/include/platform \
 /epoc32/include/platform/loc \
 /epoc32/include/platform/loc/sc

// Below statement is Deprecated and the OS_LAYER_SYSTEMINCLUDE-macro has to be
// used.
// Removed, use teh OS_LAYER_SYSTEMINCLUDE instead.
// #define OSEXT_LAYER_SYSTEMINCLUDE OS_LAYER_SYSTEMINCLUDE

/**
* This define statements defines the SYSTEMINCLUDE-line, which is intended to be
* used in the mmp-files that are part of the os-layer. This is intended 
* to be only used by those components which need to use in their mmp-file either
* kern_ext.mmh or nkern_ext.mmh. Reason is that those
* 2 files already contain the /epoc32/include  as system include path.
* 
*/
#define OS_LAYER_KERNEL_SYSTEMINCLUDE SYSTEMINCLUDE \
 /epoc32/include/platform

// Below statement is Deprecated and the OS_LAYER_KERNEL_SYSTEMINCLUDE-macro 
// has to be used.
// Removed, use the OS_LAYER_KERNER_SYSTEMINCLUDE instead.
// #define OSEXT_LAYER_KERNEL_SYSTEMINCLUDE OS_LAYER_KERNEL_SYSTEMINCLUDE

/**
****************************************************************************
* Definitions that also define the systeminclude paths for various
* part of stdapis. Each statement has to be in its own line in the using
* mmp-file. There are be more than 1 statement in single mmp-file.
****************************************************************************
*/
#define OS_LAYER_LIBC_SYSTEMINCLUDE SYSTEMINCLUDE  OS_LAYER_PUBLIC_EXPORT_PATH(stdapis)

#define OS_LAYER_GLIB_SYSTEMINCLUDE SYSTEMINCLUDE  OS_LAYER_PUBLIC_EXPORT_PATH(stdapis/glib-2.0) \
                                                   OS_LAYER_PUBLIC_EXPORT_PATH(stdapis/glib-2.0/glib) \
                                                   OS_LAYER_PUBLIC_EXPORT_PATH(stdapis/glib-2.0/gobject)


#define OS_LAYER_SSL_SYSTEMINCLUDE SYSTEMINCLUDE   OS_LAYER_PUBLIC_EXPORT_PATH(stdapis/openssl)
                  
#define OS_LAYER_STDCPP_SYSTEMINCLUDE SYSTEMINCLUDE  OS_LAYER_PUBLIC_EXPORT_PATH(stdapis/stlport) 

#define OS_LAYER_BOOST_SYSTEMINCLUDE SYSTEMINCLUDE   OS_LAYER_PUBLIC_EXPORT_PATH(stdapis/boost)

#define OS_LAYER_DBUS_SYSTEMINCLUDE SYSTEMINCLUDE    OS_LAYER_PUBLIC_EXPORT_PATH(stdapis/dbus-1.0) \
                                                     OS_LAYER_PUBLIC_EXPORT_PATH(stdapis/dbus-1.0/dbus)
#define OS_LAYER_LIBUTILITY_SYSTEMINCLUDE SYSTEMINCLUDE OS_LAYER_PLATFORM_EXPORT_PATH(stdapis/utility)

#define OS_LAYER_LIBOIL_SYSTEMINCLUDE SYSTEMINCLUDE OS_LAYER_PLATFORM_EXPORT_PATH(stdapis/liboil)

#define MW_LAYER_GSTREAMER_SYSTEMINCLUDE SYSTEMINCLUDE \
 /epoc32/include/platform/mw/gstreamer/10_18 \
 /epoc32/include/platform/mw/gstreamer/10_18/gst \
 /epoc32/include/platform/mw/gstreamer/10_18/gst/gstcontroller \
 /epoc32/include/stdapis/machine

// You need to add STLLIB_USAGE_DEFINITIONS as a separate line into your mmp-file, if you are using
// the stllib. 
#define STLLIB_USAGE_DEFINITIONS OPTION CW -wchar_t on\
        MACRO _WCHAR_T_DECLARED


/**
****************************************************************************
* Definitions that also define the paths to the layer specific source directories.
****************************************************************************
*/
/**
* The below 3 macros define the paths to the layer-specific source dirs.
* See usage on top of this hrh-file, these are used the same way as 
* for instance the OS_LAYER_DOMAIN_EXPORT_PATH
* Deprecated: is not allowed to be using in Symbian Foundation
*/
#if __GNUC__ >= 3
#define APP_LAYER_SOURCE_PATH(rest)    do not use intentionally generates error in export
#define MW_LAYER_SOURCE_PATH(rest)     do not use intentionally generates error in export
#define OSEXT_LAYER_SOURCE_PATH(rest)  do not use intentionally generates error in export
#else
#define APP_LAYER_SOURCE_PATH(rest)    do not use intentionally generates error in export
#define MW_LAYER_SOURCE_PATH(rest)     do not use intentionally generates error in export
#define OSEXT_LAYER_SOURCE_PATH(rest)  do not use intentionally generates error in export
#endif

/**
****************************************************************************
* Definitions to export IBY files to different folders where they will be taken 
* to ROM image
****************************************************************************
*/

// Following three definitions are used for exporting IBY files to 
// Core image (ROM+ROFS1). IBY files are exported according to their layer.
#if __GNUC__ >= 3
#define CORE_APP_LAYER_IBY_EXPORT_PATH(exported) /epoc32/rom/include/core/app/exported
#define CORE_MW_LAYER_IBY_EXPORT_PATH(exported) /epoc32/rom/include/core/mw/exported
#define CORE_OSEXT_LAYER_IBY_EXPORT_PATH(exported) do not use intentionally generates error
#define CORE_OS_LAYER_IBY_EXPORT_PATH(exported) /epoc32/rom/include/core/os/exported
#define CORE_ADAPT_LAYER_IBY_EXPORT_PATH(exported) /epoc32/rom/include/exported
#else
#define CORE_APP_LAYER_IBY_EXPORT_PATH(exported) /epoc32/rom/include/core/app/##exported
#define CORE_MW_LAYER_IBY_EXPORT_PATH(exported) /epoc32/rom/include/core/mw/##exported
#define CORE_OSEXT_LAYER_IBY_EXPORT_PATH(exported) do not use intentionally generates error
#define CORE_OS_LAYER_IBY_EXPORT_PATH(exported) /epoc32/rom/include/core/os/##exported
#define CORE_ADAPT_LAYER_IBY_EXPORT_PATH(exported) /epoc32/rom/include/##exported
#endif

// Following three definitions are used for exporting IBY files to Variant image, 
// Language part (ROFS2). IBY files are exported according to their layer.
#if __GNUC__ >= 3
#define LANGUAGE_APP_LAYER_IBY_EXPORT_PATH(exported) /epoc32/rom/include/language/app/exported
#define LANGUAGE_MW_LAYER_IBY_EXPORT_PATH(exported) /epoc32/rom/include/language/mw/exported
#define LANGUAGE_OSEXT_LAYER_IBY_EXPORT_PATH(exported) do not use intentionally generates error
#define LANGUAGE_OS_LAYER_IBY_EXPORT_PATH(exported) /epoc32/rom/include/language/os/exported
#else
#define LANGUAGE_APP_LAYER_IBY_EXPORT_PATH(exported) /epoc32/rom/include/language/app/##exported
#define LANGUAGE_MW_LAYER_IBY_EXPORT_PATH(exported) /epoc32/rom/include/language/mw/##exported
#define LANGUAGE_OSEXT_LAYER_IBY_EXPORT_PATH(exported) do not use intentionally generates error
#define LANGUAGE_OS_LAYER_IBY_EXPORT_PATH(exported) /epoc32/rom/include/language/os/##exported
#endif

// Following three definitions are used for exporting IBY files to Variant image, (ROFS2). 
// BY files are exported according to their layer.
#if __GNUC__ >= 3
#define CUSTOMER_APP_LAYER_IBY_EXPORT_PATH(exported) /epoc32/rom/include/customer/app/exported
#define CUSTOMER_MW_LAYER_IBY_EXPORT_PATH(exported) /epoc32/rom/include/customer/mw/exported
#define CUSTOMER_OSEXT_LAYER_IBY_EXPORT_PATH(exported) do not use intentionally generates error
#define CUSTOMER_OS_LAYER_IBY_EXPORT_PATH(exported) /epoc32/rom/include/customer/os/exported
#else
#define CUSTOMER_APP_LAYER_IBY_EXPORT_PATH(exported) /epoc32/rom/include/customer/app/##exported
#define CUSTOMER_MW_LAYER_IBY_EXPORT_PATH(exported) /epoc32/rom/include/customer/mw/##exported
#define CUSTOMER_OSEXT_LAYER_IBY_EXPORT_PATH(exported) do not use intentionally generates error
#define CUSTOMER_OS_LAYER_IBY_EXPORT_PATH(exported) /epoc32/rom/include/customer/os/##exported
#endif

// Following three definitions are used for exporting IBY files to 
// Variant Customer part, (ROFS3). IBY files are exported according to 
// their layer.
#if __GNUC__ >= 3
#define CUSTOMER_VARIANT_APP_LAYER_IBY_EXPORT_PATH(exported) /epoc32/rom/include/customervariant/app/exported
#define CUSTOMER_VARIANT_MW_LAYER_IBY_EXPORT_PATH(exported) /epoc32/rom/include/customervariant/mw/exported
#define CUSTOMER_VARIANT_OSEXT_LAYER_IBY_EXPORT_PATH(exported) do not use intentionally generates error
#define CUSTOMER_VARIANT_OS_LAYER_IBY_EXPORT_PATH(exported) /epoc32/rom/include/customervariant/os/exported
#else
#define CUSTOMER_VARIANT_APP_LAYER_IBY_EXPORT_PATH(exported) /epoc32/rom/include/customervariant/app/##exported
#define CUSTOMER_VARIANT_MW_LAYER_IBY_EXPORT_PATH(exported) /epoc32/rom/include/customervariant/mw/##exported
#define CUSTOMER_VARIANT_OSEXT_LAYER_IBY_EXPORT_PATH(exported) do not use intentionally generates error
#define CUSTOMER_VARIANT_OS_LAYER_IBY_EXPORT_PATH(exported) /epoc32/rom/include/customervariant/os/##exported
#endif


// Following definition is used for exporting tools and stubs IBY files to 
// Core image.
#if __GNUC__ >= 3
#define CORE_IBY_EXPORT_PATH(path,exported)  /epoc32/rom/include/core/path/exported
#else
#define CORE_IBY_EXPORT_PATH(path,exported)  /epoc32/rom/include/core/##path##/##exported
#endif

/**
* ---------------------------------------
* Location, where the localization .loc file should be exported
* ---------------------------------------
*/
// Location, where the os layer localization .loc file should be 
// exported
#if __GNUC__ >= 3
// Deprecated: use the OS_LAYER_LOC_EXPORT_PATH instead
#define OSEXT_LAYER_LOC_EXPORT_PATH(exported) do not use intentionally generates error
#define OS_LAYER_LOC_EXPORT_PATH(exported) /epoc32/include/platform/loc/sc/exported

// Location, where the middleware layer localization .loc file should be 
// exported
#define MW_LAYER_LOC_EXPORT_PATH(exported) /epoc32/include/platform/mw/loc/sc/exported

// Location, where the application layer localization .loc file should be 
// exported
#define APP_LAYER_LOC_EXPORT_PATH(exported) /epoc32/include/platform/app/loc/sc/exported

#else

// Deprecated: use the OS_LAYER_LOC_EXPORT_PATH instead
#define OSEXT_LAYER_LOC_EXPORT_PATH(exported) do not use intentionally generates error
#define OS_LAYER_LOC_EXPORT_PATH(exported) /epoc32/include/platform/loc/sc/##exported

// Location, where the middleware layer localization .loc file should be exported
#define MW_LAYER_LOC_EXPORT_PATH(exported) /epoc32/include/platform/mw/loc/sc/##exported

// Location, where the application layer localization .loc file should be exported
#define APP_LAYER_LOC_EXPORT_PATH(exported) /epoc32/include/platform/app/loc/sc/##exported
#endif

/**
* ---------------------------------------
* Macros for Configuration tool migration. 
* The below macros define the location under epoc32, where the confml 
* (Configuration Markup Language) and crml (Central Repository Markup Language) 
* files should be exported.
* ---------------------------------------
*/
#if __GNUC__ >= 3
#define CONFML_EXPORT_PATH(file,category)           /epoc32/rom/config/confml_data/category/file
#define CRML_EXPORT_PATH(file,category)             /epoc32/rom/config/confml_data/category/file
#define GCFML_EXPORT_PATH(file,category)            /epoc32/rom/config/confml_data/category/file
#define CONFML_CONFIG_EXPORT_PATH(file,category)    /epoc32/rom/config/confml_data/category/config/file
#else
#define CONFML_EXPORT_PATH(file,category)           /epoc32/rom/config/confml_data/##category##/##file
#define CRML_EXPORT_PATH(file,category)             /epoc32/rom/config/confml_data/##category##/##file
#define GCFML_EXPORT_PATH(file,category)            /epoc32/rom/config/confml_data/##category##/##file
#define CONFML_CONFIG_EXPORT_PATH(file,category)    /epoc32/rom/config/confml_data/##category##/config/##file
#endif

#define APP_LAYER_CONFML(exported)                  CONFML_EXPORT_PATH(exported,s60)
#define APP_LAYER_CRML(exported)                    CRML_EXPORT_PATH(exported,s60)
#define APP_LAYER_GCFML(exported)                   GCFML_EXPORT_PATH(exported,s60)
#define APP_LAYER_CONFML_CONFIG(exported)           CONFML_CONFIG_EXPORT_PATH(exported,s60)
                                                    
#define MW_LAYER_CONFML(exported)                   CONFML_EXPORT_PATH(exported,s60)
#define MW_LAYER_CRML(exported)                     CRML_EXPORT_PATH(exported,s60)
#define MW_LAYER_GCFML(exported)                    GCFML_EXPORT_PATH(exported,s60)
#define MW_LAYER_CONFML_CONFIG(exported)            CONFML_CONFIG_EXPORT_PATH(exported,s60)
       
// Deprecate: Use the OS_LAYER_* macros instead of OSEXT_LAYER_*                                             
#define OSEXT_LAYER_CONFML(exported)                do not use intentionally generates error
#define OSEXT_LAYER_CRML(exported)                  do not use intentionally generates error
#define OSEXT_LAYER_GCFML(exported)                 do not use intentionally generates error
#define OSEXT_LAYER_CONFML_CONFIG(exported)         do not use intentionally generates error
#define OS_LAYER_CONFML(exported)                   CONFML_EXPORT_PATH(exported,s60)
#define OS_LAYER_CRML(exported)                     CRML_EXPORT_PATH(exported,s60)
#define OS_LAYER_GCFML(exported)                    GCFML_EXPORT_PATH(exported,s60)
#define OS_LAYER_CONFML_CONFIG(exported)            CONFML_CONFIG_EXPORT_PATH(exported,s60)

#endif  // end of PLATFORM_PATHS_HRH