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.
     1 /*
     2 * Copyright (c) 2002-2009 Nokia Corporation and/or its subsidiary(-ies). 
     3 * All rights reserved.
     4 * This component and the accompanying materials are made available
     5 * under the terms of "Eclipse Public License v1.0"
     6 * which accompanies this distribution, and is available
     7 * at the URL "http://www.eclipse.org/legal/epl-v10.html".
     8 *
     9 * Initial Contributors:
    10 * Nokia Corporation - initial contribution.
    11 *
    12 * Contributors:
    13 *
    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.
    17 *                
    18 *                However to support transition from non-foundation code to foundation code asset
    19 *                we introduce same layers as in foundation.
    20 
    21 * Usage examples:
    22 *      #include <non_foundation_paths.hrh>
    23 *    
    24 *     *************************************************************
    25 *     * MMP file related macro usages to add the system include paths
    26 *     * 
    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
    41 *
    42 *     *************************************************************
    43 *     * Macros related to exporting non-foundation headers  into 
    44 *     * correct place in the new system. 
    45 *     *
    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
    56 *
    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
    63 *  
    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)
    68 *  
    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
    72 *
    73 *
    74 *
    75 */
    76 
    77 
    78 #ifndef NON_FOUNDATION_PATHS_HRH
    79 #define NON_FOUNDATION_PATHS_HRH
    80 
    81 /**
    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 * ---------------------------------------
    87 */
    88 
    89 #if __GNUC__ >= 3
    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 // Temporarily commented out to help adaptation side migration
    94 // #define NON_FOUNDATION_ADAPT_LAYER_EXPORT_PATH(exported) /epoc32/include/ext/adapt/exported
    95 #else
    96 #define NON_FOUNDATION_APP_LAYER_EXPORT_PATH(exported) /epoc32/include/ext/app/##exported
    97 #define NON_FOUNDATION_MW_LAYER_EXPORT_PATH(exported) /epoc32/include/ext/mw/##exported
    98 #define NON_FOUNDATION_OS_LAYER_EXPORT_PATH(exported) /epoc32/include/ext/os/##exported
    99 // Temporarily commented out to help adaptation side migration
   100 // #define NON_FOUNDATION_ADAPT_LAYER_EXPORT_PATH(exported) /epoc32/include/ext/adapt/##exported
   101 #endif
   102 
   103 
   104 /**
   105 **************************************************************************
   106 *  General comments about the 3 define statements related to include paths.
   107 *  It should be enough only to have one of the below macros and one of the include macros
   108 *  from platform_paths.hrh.
   109 *  No other systemincludes to epoc32/include or subdirectories. 
   110 ****************************************************************************
   111 */
   112 
   113 /**
   114 * This define statements defines the SYSTEMINCLUDE-line, which is intended to be 
   115 * used in the mmp-files that are part of the applications-layer. 
   116 *
   117 * Applications layer is the last one in the list, since most likely the most of 
   118 * the headers come from middleware or os-layer  => thus they are first.
   119 */
   120 #define NON_FOUNDATION_APP_LAYER_SYSTEMINCLUDE SYSTEMINCLUDE \
   121  /epoc32/include/ext/app \
   122  /epoc32/include/ext/mw \
   123  /epoc32/include/ext/os
   124  
   125 /**
   126 * This define statements defines the SYSTEMINCLUDE-line, which is intended to be
   127 * used in the mmp-files that are part of the middleware-layer. 
   128 */
   129 #define NON_FOUNDATION_MW_LAYER_SYSTEMINCLUDE SYSTEMINCLUDE \
   130  /epoc32/include/ext/mw \
   131  /epoc32/include/ext/os
   132 
   133 /**
   134 * This define statements defines the SYSTEMINCLUDE-line, which is intended to be
   135 * used in the mmp-files that are part of the os-layer.
   136 */
   137 #define NON_FOUNDATION_OS_LAYER_SYSTEMINCLUDE SYSTEMINCLUDE \
   138  /epoc32/include/ext/os
   139 
   140 /**
   141 * This define statements defines the SYSTEMINCLUDE-line, which is intended to be
   142 * used in the mmp-files that are part of the adapt-layer.
   143 */
   144 // Temporarily commented out to help adaptation side migration
   145 // #define NON_FOUNDATION_ADAPT_LAYER_SYSTEMINCLUDE SYSTEMINCLUDE \
   146 // /epoc32/include/ext/os \
   147 // /epoc32/include/ext/adapt
   148 
   149 
   150 /**
   151 ****************************************************************************
   152 * Definitions to export IBY files to different folders where they will be taken 
   153 * to ROM image
   154 ****************************************************************************
   155 */
   156 
   157 // Following three definitions are used for exporting IBY files to 
   158 // Core image (ROM+ROFS1). IBY files are exported according to their layer.
   159 #if __GNUC__ >= 3
   160 #define NON_FOUNDATION_CORE_ADAPT_LAYER_IBY_EXPORT_PATH(exported) /epoc32/rom/include/exported
   161 #else
   162 #define NON_FOUNDATION_CORE_ADAPT_LAYER_IBY_EXPORT_PATH(exported) /epoc32/rom/include/##exported
   163 #endif
   164 
   165 
   166 
   167 #endif  // end of NON_FOUNDATION_PATHS_HRH
   168 
   169 
   170 
   171 
   172