2 * Copyright (c) 2002-2009 Nokia Corporation and/or its subsidiary(-ies).
4 * This component and the accompanying materials are made available
5 * 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
6 * which accompanies this distribution, and is available
7 * at the URL "http://www.symbianfoundation.org/legal/licencesv10.html".
9 * Initial Contributors:
10 * Nokia Corporation - initial contribution.
14 * Description: This file defines macros to be used by non-foundation code.
15 * Main thing is that non_foundation code should NEVER for instance export
16 * headers to same directories in epoc32/include as the foundation code.
18 * However to support transition from non-foundation code to foundation code asset
19 * we introduce same layers as in foundation.
22 * #include <non_foundation_paths.hrh>
24 * *************************************************************
25 * * MMP file related macro usages to add the system include paths
27 * * The include paths has to be related to the layer in which your SW
28 * * resides. Thus as an example: a component residing in middleware
29 * * layer should use the MW specific macro.
30 * * Keep this as a separate line in the mmp-files. If you need to
31 * * add your own SYSTEMINCLUDE paths, please defined them as
32 * * separate statement.
33 * * In addition to these , the non-foundation code should also use
34 * * one of the foundation specific macros. (APP_LAYER_SYSTEMINCLUDE,
35 * * MW_LAYER_SYSTEMINCLUDE or OS_LAYER_SYSTEMINCLUDE)
36 * *************************************************************
37 * NON_FOUNDATION_APP_LAYER_SYSTEMINCLUDE
38 * NON_FOUNDATION_MW_LAYER_SYSTEMINCLUDE
39 * NON_FOUNDATION_OS_LAYER_SYSTEMINCLUDE
40 * NON_FOUNDATION_ADAPT_LAYER_SYSTEMINCLUDE
42 * *************************************************************
43 * * Macros related to exporting non-foundation headers into
44 * * correct place in the new system.
46 * * The macro that you should use depends on 2 things:
47 * * - in which layer your package, which exports the APIs resides
48 * * - what is the visibility of the API (public or platform)
49 * *************************************************************
50 * // the exporting of public APIs should use one of below macros
51 * // depending on which layer the API belogs to
52 * NON_FOUNDATION_APP_LAYER_EXPORT_PATH
53 * NON_FOUNDATION_MW_LAYER_EXPORT_PATH
54 * NON_FOUNDATION_OS_LAYER_EXPORT_PATH
55 * NON_FOUNDATION_ADAPT_LAYER_EXPORT_PATH
57 * The hierarchy how APIs should reside in foundation has been specified
58 * in developer documentation. See further details from documentation.
59 * Below is example case relying on the structure
60 * my_own_api/group/bld.inf
61 * my_own_api/inc/header1.h
62 * my_own_api/inc/subdir/header2.h
64 * Assuming that the API is in middleware layer and a public API.
65 * Then the bld.inf should have the following
66 * ../inc/header1.h NON_FOUNDATION_APP_LAYER_EXPORT_PATH(header1.h)
67 * ../inc/subdir/header2.h NON_FOUNDATION_APP_LAYER_EXPORT_PATH(subdir/header2.h)
69 * In the above case the locations are as follow (with current MACRO settings):
70 * header1.h in /epoc32/include/ext/app
71 * header2.h in /epoc32/include/ext/app/subdir
78 #ifndef NON_FOUNDATION_PATHS_HRH
79 #define NON_FOUNDATION_PATHS_HRH
82 * ---------------------------------------
83 * Location, where the non-foundation code should export its headers.
84 * These are specific to layer to which the non-foundation code belongs to.
85 * See usage on top of this hrh-file.
86 * ---------------------------------------
90 #define NON_FOUNDATION_APP_LAYER_EXPORT_PATH(exported) /epoc32/include/ext/app/exported
91 #define NON_FOUNDATION_MW_LAYER_EXPORT_PATH(exported) /epoc32/include/ext/mw/exported
92 #define NON_FOUNDATION_OS_LAYER_EXPORT_PATH(exported) /epoc32/include/ext/os/exported
93 #define NON_FOUNDATION_ADAPT_LAYER_EXPORT_PATH(exported) /epoc32/include/ext/adapt/exported
95 #define NON_FOUNDATION_APP_LAYER_EXPORT_PATH(exported) /epoc32/include/ext/app/##exported
96 #define NON_FOUNDATION_MW_LAYER_EXPORT_PATH(exported) /epoc32/include/ext/mw/##exported
97 #define NON_FOUNDATION_OS_LAYER_EXPORT_PATH(exported) /epoc32/include/ext/os/##exported
98 #define NON_FOUNDATION_ADAPT_LAYER_EXPORT_PATH(exported) /epoc32/include/ext/adapt/##exported
103 **************************************************************************
104 * General comments about the 3 define statements related to include paths.
105 * It should be enough only to have one of the below macros and one of the include macros
106 * from platform_paths.hrh.
107 * No other systemincludes to epoc32/include or subdirectories.
108 ****************************************************************************
112 * This define statements defines the SYSTEMINCLUDE-line, which is intended to be
113 * used in the mmp-files that are part of the applications-layer.
115 * Applications layer is the last one in the list, since most likely the most of
116 * the headers come from middleware or os-layer => thus they are first.
118 #define NON_FOUNDATION_APP_LAYER_SYSTEMINCLUDE SYSTEMINCLUDE \
119 /epoc32/include/ext/app \
120 /epoc32/include/ext/mw \
121 /epoc32/include/ext/os
124 * This define statements defines the SYSTEMINCLUDE-line, which is intended to be
125 * used in the mmp-files that are part of the middleware-layer.
127 #define NON_FOUNDATION_MW_LAYER_SYSTEMINCLUDE SYSTEMINCLUDE \
128 /epoc32/include/ext/mw \
129 /epoc32/include/ext/os
132 * This define statements defines the SYSTEMINCLUDE-line, which is intended to be
133 * used in the mmp-files that are part of the os-layer.
135 #define NON_FOUNDATION_OS_LAYER_SYSTEMINCLUDE SYSTEMINCLUDE \
136 /epoc32/include/ext/os
139 * This define statements defines the SYSTEMINCLUDE-line, which is intended to be
140 * used in the mmp-files that are part of the adapt-layer.
142 #define NON_FOUNDATION_ADAPT_LAYER_SYSTEMINCLUDE SYSTEMINCLUDE \
143 /epoc32/include/ext/os \
144 /epoc32/include/ext/adapt
148 ****************************************************************************
149 * Definitions to export IBY files to different folders where they will be taken
151 ****************************************************************************
154 // Following three definitions are used for exporting IBY files to
155 // Core image (ROM+ROFS1). IBY files are exported according to their layer.
157 #define NON_FOUNDATION_CORE_ADAPT_LAYER_IBY_EXPORT_PATH(exported) /epoc32/rom/include/exported
159 #define NON_FOUNDATION_CORE_ADAPT_LAYER_IBY_EXPORT_PATH(exported) /epoc32/rom/include/##exported
164 #endif // end of NON_FOUNDATION_PATHS_HRH