epoc32/include/non_foundation_paths.hrh
branchSymbian2
changeset 2 2fe1408b6811
child 4 837f303aceeb
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/epoc32/include/non_foundation_paths.hrh	Tue Mar 16 16:12:26 2010 +0000
@@ -0,0 +1,169 @@
+/*
+* 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 the License "Symbian Foundation License v1.0" to Symbian Foundation members and "Symbian Foundation End User License Agreement v1.0" to non-members
+* which accompanies this distribution, and is available
+* at the URL "http://www.symbianfoundation.org/legal/licencesv10.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
+#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
+#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.
+*/
+#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
+
+
+
+
+