Home | History | Annotate | Download | only in source
      1 /*****************************************************************************/
      2 // Copyright 2006-2012 Adobe Systems Incorporated
      3 // All Rights Reserved.
      4 //
      5 // NOTICE:  Adobe permits you to use, modify, and distribute this file in
      6 // accordance with the terms of the Adobe license agreement accompanying it.
      7 /*****************************************************************************/
      8 
      9 /* $Id: //mondo/dng_sdk_1_4/dng_sdk/source/dng_flags.h#5 $ */
     10 /* $DateTime: 2012/07/31 22:04:34 $ */
     11 /* $Change: 840853 $ */
     12 /* $Author: tknoll $ */
     13 
     14 /** \file
     15  * Conditional compilation flags for DNG SDK.
     16  *
     17  * All conditional compilation macros for the DNG SDK begin with a lowercase 'q'.
     18  */
     19 
     20 /*****************************************************************************/
     21 
     22 #ifndef __dng_flags__
     23 #define __dng_flags__
     24 
     25 /*****************************************************************************/
     26 
     27 /// \def qMacOS
     28 /// 1 if compiling for Mac OS X.
     29 
     30 /// \def qWinOS
     31 /// 1 if compiling for Windows.
     32 
     33 // Make sure qMacOS and qWinOS are defined.
     34 
     35 #if !defined(qMacOS) || !defined(qWinOS)
     36 #include "RawEnvironment.h"
     37 #endif
     38 
     39 #if !defined(qMacOS) || !defined(qWinOS)
     40 #error Unable to figure out platform
     41 #endif
     42 
     43 /*****************************************************************************/
     44 
     45 // Platforms.
     46 
     47 #ifndef qImagecore
     48 #define qImagecore 0
     49 #endif
     50 
     51 #ifndef qiPhone
     52 #define qiPhone 0
     53 #endif
     54 
     55 #ifndef qiPhoneSimulator
     56 #define qiPhoneSimulator 0
     57 #endif
     58 
     59 #ifndef qAndroid
     60 #define qAndroid 0
     61 #endif
     62 
     63 #ifndef qAndroidArm7
     64 #define qAndroidArm7 0
     65 #endif
     66 
     67 /*****************************************************************************/
     68 
     69 // Establish WIN32 and WIN64 definitions.
     70 
     71 #if defined(_WIN32) && !defined(WIN32)
     72 #define WIN32 1
     73 #endif
     74 
     75 #if defined(_WIN64) && !defined(WIN64)
     76 #define WIN64 1
     77 #endif
     78 
     79 /*****************************************************************************/
     80 
     81 /// \def qDNGDebug
     82 /// 1 if debug code is compiled in, 0 otherwise. Enables assertions and other debug
     83 /// checks in exchange for slower processing.
     84 
     85 // Figure out if debug build or not.
     86 
     87 #ifndef qDNGDebug
     88 
     89 #if defined(Debug)
     90 #define qDNGDebug Debug
     91 
     92 #elif defined(_DEBUG)
     93 #define qDNGDebug _DEBUG
     94 
     95 #else
     96 #define qDNGDebug 0
     97 
     98 #endif
     99 #endif
    100 
    101 /*****************************************************************************/
    102 
    103 // Figure out byte order.
    104 
    105 /// \def qDNGBigEndian
    106 /// 1 if this target platform is big endian (e.g. PowerPC Macintosh), else 0.
    107 ///
    108 /// \def qDNGLittleEndian
    109 /// 1 if this target platform is little endian (e.g. x86 processors), else 0.
    110 
    111 #ifndef qDNGBigEndian
    112 
    113 #if defined(qDNGLittleEndian)
    114 #define qDNGBigEndian !qDNGLittleEndian
    115 
    116 #elif defined(__POWERPC__)
    117 #define qDNGBigEndian 1
    118 
    119 #elif defined(__INTEL__)
    120 #define qDNGBigEndian 0
    121 
    122 #elif defined(_M_IX86)
    123 #define qDNGBigEndian 0
    124 
    125 #elif defined(_M_X64) || defined(__amd64__)
    126 #define qDNGBigEndian 0
    127 
    128 #elif defined(__LITTLE_ENDIAN__)
    129 #define qDNGBigEndian 0
    130 
    131 #elif defined(__BIG_ENDIAN__)
    132 #define qDNGBigEndian 1
    133 
    134 #elif defined(_ARM_) || defined(__ARM_NEON) || defined(__mips__)
    135 #define qDNGBigEndian 0
    136 
    137 #else
    138 
    139 #ifndef qXCodeRez
    140 #error Unable to figure out byte order.
    141 #endif
    142 
    143 #endif
    144 #endif
    145 
    146 #ifndef qXCodeRez
    147 
    148 #ifndef qDNGLittleEndian
    149 #define qDNGLittleEndian !qDNGBigEndian
    150 #endif
    151 
    152 #endif
    153 
    154 /*****************************************************************************/
    155 
    156 /// \def qDNG64Bit
    157 /// 1 if this target platform uses 64-bit addresses, 0 otherwise.
    158 
    159 #ifndef qDNG64Bit
    160 
    161 #if qMacOS || qLinux
    162 
    163 #ifdef __LP64__
    164 #if    __LP64__
    165 #define qDNG64Bit 1
    166 #endif
    167 #endif
    168 
    169 #elif qWinOS
    170 
    171 #ifdef WIN64
    172 #if    WIN64
    173 #define qDNG64Bit 1
    174 #endif
    175 #endif
    176 
    177 #endif
    178 
    179 #ifndef qDNG64Bit
    180 #define qDNG64Bit 0
    181 #endif
    182 
    183 #endif
    184 
    185 /*****************************************************************************/
    186 
    187 /// \def qDNGThreadSafe
    188 /// 1 if target platform has thread support and threadsafe libraries, 0 otherwise.
    189 
    190 #ifndef qDNGThreadSafe
    191 #define qDNGThreadSafe (qMacOS || qWinOS)
    192 #endif
    193 
    194 /*****************************************************************************/
    195 
    196 /// \def qDNGValidateTarget
    197 /// 1 if dng_validate command line tool is being built, 0 otherwise.
    198 
    199 #ifndef qDNGValidateTarget
    200 #define qDNGValidateTarget 0
    201 #endif
    202 
    203 /*****************************************************************************/
    204 
    205 /// \def qDNGValidate
    206 /// 1 if DNG validation code is enabled, 0 otherwise.
    207 
    208 #ifndef qDNGValidate
    209 #define qDNGValidate qDNGValidateTarget
    210 #endif
    211 
    212 /*****************************************************************************/
    213 
    214 /// \def qDNGPrintMessages
    215 /// 1 if dng_show_message should use fprintf to stderr. 0 if it should use a platform
    216 /// specific interrupt mechanism.
    217 
    218 #ifndef qDNGPrintMessages
    219 #define qDNGPrintMessages qDNGValidate
    220 #endif
    221 
    222 /*****************************************************************************/
    223 
    224 /// \def qDNGCodec
    225 /// 1 to build the Windows Imaging Component Codec (e.g. for Vista).
    226 
    227 #ifndef qDNGCodec
    228 #define qDNGCodec 0
    229 #endif
    230 
    231 /*****************************************************************************/
    232 
    233 // Experimental features -- work in progress for Lightroom 4.0 and Camera Raw 7.0.
    234 // Turn this off for Lightroom 3.x & Camera Raw 6.x dot releases.
    235 
    236 #ifndef qDNGExperimental
    237 #define qDNGExperimental 1
    238 #endif
    239 
    240 /*****************************************************************************/
    241 
    242 /// \def qDNGXMPFiles
    243 /// 1 to use XMPFiles.
    244 
    245 #ifndef qDNGXMPFiles
    246 #define qDNGXMPFiles 1
    247 #endif
    248 
    249 /*****************************************************************************/
    250 
    251 /// \def qDNGXMPDocOps
    252 /// 1 to use XMPDocOps.
    253 
    254 #ifndef qDNGXMPDocOps
    255 #define qDNGXMPDocOps (!qDNGValidateTarget)
    256 #endif
    257 
    258 /*****************************************************************************/
    259 
    260 /// \def qDNGUseLibJPEG
    261 /// 1 to use open-source libjpeg for lossy jpeg processing.
    262 
    263 #ifndef qDNGUseLibJPEG
    264 #define qDNGUseLibJPEG qDNGValidateTarget
    265 #endif
    266 
    267 /*****************************************************************************/
    268 
    269 #endif
    270 
    271 /*****************************************************************************/
    272