epoc32/include/non_foundation_paths.hrh
author William Roberts <williamr@symbian.org>
Wed, 31 Mar 2010 12:33:34 +0100
branchSymbian3
changeset 4 837f303aceeb
parent 2 2fe1408b6811
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.

/*
* 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:  This file defines macros to be used by non-foundation code.
*                Main thing is that non_foundation code should NEVER for instance export 
*                headers to same directories in epoc32/include as the foundation code.
*                
*                However to support transition from non-foundation code to foundation code asset
*                we introduce same layers as in foundation.

* Usage examples:
*      #include <non_foundation_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.
*     * In addition to these , the non-foundation code should also use
*     * one of the foundation specific macros. (APP_LAYER_SYSTEMINCLUDE,
*     * MW_LAYER_SYSTEMINCLUDE or OS_LAYER_SYSTEMINCLUDE)
*     *************************************************************
*         NON_FOUNDATION_APP_LAYER_SYSTEMINCLUDE
*         NON_FOUNDATION_MW_LAYER_SYSTEMINCLUDE
*         NON_FOUNDATION_OS_LAYER_SYSTEMINCLUDE
*         NON_FOUNDATION_ADAPT_LAYER_SYSTEMINCLUDE
*
*     *************************************************************
*     * Macros related to exporting non-foundation headers  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
*      NON_FOUNDATION_APP_LAYER_EXPORT_PATH
*      NON_FOUNDATION_MW_LAYER_EXPORT_PATH
*      NON_FOUNDATION_OS_LAYER_EXPORT_PATH
*      NON_FOUNDATION_ADAPT_LAYER_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  NON_FOUNDATION_APP_LAYER_EXPORT_PATH(header1.h)
*        ../inc/subdir/header2.h  NON_FOUNDATION_APP_LAYER_EXPORT_PATH(subdir/header2.h)
*  
*      In the above case the locations are as follow (with current MACRO settings):
*        header1.h in /epoc32/include/ext/app
*        header2.h in /epoc32/include/ext/app/subdir
*
*
*
*/


#ifndef NON_FOUNDATION_PATHS_HRH
#define NON_FOUNDATION_PATHS_HRH

/**
* ---------------------------------------
* Location, where the non-foundation code should export its headers.
* These are specific to layer to which the non-foundation code belongs to.
* See usage on top of this hrh-file.
* ---------------------------------------
*/

#if __GNUC__ >= 3
#define NON_FOUNDATION_APP_LAYER_EXPORT_PATH(exported) /epoc32/include/ext/app/exported
#define NON_FOUNDATION_MW_LAYER_EXPORT_PATH(exported) /epoc32/include/ext/mw/exported
#define NON_FOUNDATION_OS_LAYER_EXPORT_PATH(exported) /epoc32/include/ext/os/exported
// Temporarily commented out to help adaptation side migration
// #define NON_FOUNDATION_ADAPT_LAYER_EXPORT_PATH(exported) /epoc32/include/ext/adapt/exported
#else
#define NON_FOUNDATION_APP_LAYER_EXPORT_PATH(exported) /epoc32/include/ext/app/##exported
#define NON_FOUNDATION_MW_LAYER_EXPORT_PATH(exported) /epoc32/include/ext/mw/##exported
#define NON_FOUNDATION_OS_LAYER_EXPORT_PATH(exported) /epoc32/include/ext/os/##exported
// Temporarily commented out to help adaptation side migration
// #define NON_FOUNDATION_ADAPT_LAYER_EXPORT_PATH(exported) /epoc32/include/ext/adapt/##exported
#endif


/**
**************************************************************************
*  General comments about the 3 define statements related to include paths.
*  It should be enough only to have one of the below macros and one of the include macros
*  from platform_paths.hrh.
*  No other systemincludes to epoc32/include or subdirectories. 
****************************************************************************
*/

/**
* This define statements defines the SYSTEMINCLUDE-line, which is intended to be 
* used in the mmp-files that are part of the applications-layer. 
*
* 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 NON_FOUNDATION_APP_LAYER_SYSTEMINCLUDE SYSTEMINCLUDE \
 /epoc32/include/ext/app \
 /epoc32/include/ext/mw \
 /epoc32/include/ext/os
 
/**
* This define statements defines the SYSTEMINCLUDE-line, which is intended to be
* used in the mmp-files that are part of the middleware-layer. 
*/
#define NON_FOUNDATION_MW_LAYER_SYSTEMINCLUDE SYSTEMINCLUDE \
 /epoc32/include/ext/mw \
 /epoc32/include/ext/os

/**
* This define statements defines the SYSTEMINCLUDE-line, which is intended to be
* used in the mmp-files that are part of the os-layer.
*/
#define NON_FOUNDATION_OS_LAYER_SYSTEMINCLUDE SYSTEMINCLUDE \
 /epoc32/include/ext/os

/**
* This define statements defines the SYSTEMINCLUDE-line, which is intended to be
* used in the mmp-files that are part of the adapt-layer.
*/
// Temporarily commented out to help adaptation side migration
// #define NON_FOUNDATION_ADAPT_LAYER_SYSTEMINCLUDE SYSTEMINCLUDE \
// /epoc32/include/ext/os \
// /epoc32/include/ext/adapt


/**
****************************************************************************
* 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 NON_FOUNDATION_CORE_ADAPT_LAYER_IBY_EXPORT_PATH(exported) /epoc32/rom/include/exported
#else
#define NON_FOUNDATION_CORE_ADAPT_LAYER_IBY_EXPORT_PATH(exported) /epoc32/rom/include/##exported
#endif



#endif  // end of NON_FOUNDATION_PATHS_HRH