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 | |