diff -r 666f914201fb -r 2fe1408b6811 epoc32/include/non_foundation_paths.hrh --- /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 +* +* ************************************************************* +* * 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 + + + + +