• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
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