/*****************************************************************************/ // Copyright 2006-2012 Adobe Systems Incorporated // All Rights Reserved. // // NOTICE: Adobe permits you to use, modify, and distribute this file in // accordance with the terms of the Adobe license agreement accompanying it. /*****************************************************************************/ /* $Id: //mondo/dng_sdk_1_4/dng_sdk/source/dng_flags.h#5 $ */ /* $DateTime: 2012/07/31 22:04:34 $ */ /* $Change: 840853 $ */ /* $Author: tknoll $ */ /** \file * Conditional compilation flags for DNG SDK. * * All conditional compilation macros for the DNG SDK begin with a lowercase 'q'. */ /*****************************************************************************/ #ifndef __dng_flags__ #define __dng_flags__ /*****************************************************************************/ /// \def qMacOS /// 1 if compiling for Mac OS X. /// \def qWinOS /// 1 if compiling for Windows. // Make sure qMacOS and qWinOS are defined. #if !defined(qMacOS) || !defined(qWinOS) #include "RawEnvironment.h" #endif #if !defined(qMacOS) || !defined(qWinOS) #error Unable to figure out platform #endif /*****************************************************************************/ // Platforms. #ifndef qImagecore #define qImagecore 0 #endif #ifndef qiPhone #define qiPhone 0 #endif #ifndef qiPhoneSimulator #define qiPhoneSimulator 0 #endif #ifndef qAndroid #define qAndroid 0 #endif #ifndef qAndroidArm7 #define qAndroidArm7 0 #endif /*****************************************************************************/ // Establish WIN32 and WIN64 definitions. #if defined(_WIN32) && !defined(WIN32) #define WIN32 1 #endif #if defined(_WIN64) && !defined(WIN64) #define WIN64 1 #endif /*****************************************************************************/ /// \def qDNGDebug /// 1 if debug code is compiled in, 0 otherwise. Enables assertions and other debug /// checks in exchange for slower processing. // Figure out if debug build or not. #ifndef qDNGDebug #if defined(Debug) #define qDNGDebug Debug #elif defined(_DEBUG) #define qDNGDebug _DEBUG #else #define qDNGDebug 0 #endif #endif /*****************************************************************************/ // Figure out byte order. /// \def qDNGBigEndian /// 1 if this target platform is big endian (e.g. PowerPC Macintosh), else 0. /// /// \def qDNGLittleEndian /// 1 if this target platform is little endian (e.g. x86 processors), else 0. #ifndef qDNGBigEndian #if defined(qDNGLittleEndian) #define qDNGBigEndian !qDNGLittleEndian #elif defined(__POWERPC__) #define qDNGBigEndian 1 #elif defined(__INTEL__) #define qDNGBigEndian 0 #elif defined(_M_IX86) #define qDNGBigEndian 0 #elif defined(_M_X64) || defined(__amd64__) #define qDNGBigEndian 0 #elif defined(__LITTLE_ENDIAN__) #define qDNGBigEndian 0 #elif defined(__BIG_ENDIAN__) #define qDNGBigEndian 1 #elif defined(_ARM_) || defined(__ARM_NEON) || defined(__mips__) #define qDNGBigEndian 0 #else #ifndef qXCodeRez #error Unable to figure out byte order. #endif #endif #endif #ifndef qXCodeRez #ifndef qDNGLittleEndian #define qDNGLittleEndian !qDNGBigEndian #endif #endif /*****************************************************************************/ /// \def qDNG64Bit /// 1 if this target platform uses 64-bit addresses, 0 otherwise. #ifndef qDNG64Bit #if qMacOS || qLinux #ifdef __LP64__ #if __LP64__ #define qDNG64Bit 1 #endif #endif #elif qWinOS #ifdef WIN64 #if WIN64 #define qDNG64Bit 1 #endif #endif #endif #ifndef qDNG64Bit #define qDNG64Bit 0 #endif #endif /*****************************************************************************/ /// \def qDNGThreadSafe /// 1 if target platform has thread support and threadsafe libraries, 0 otherwise. #ifndef qDNGThreadSafe #define qDNGThreadSafe (qMacOS || qWinOS) #endif /*****************************************************************************/ /// \def qDNGValidateTarget /// 1 if dng_validate command line tool is being built, 0 otherwise. #ifndef qDNGValidateTarget #define qDNGValidateTarget 0 #endif /*****************************************************************************/ /// \def qDNGValidate /// 1 if DNG validation code is enabled, 0 otherwise. #ifndef qDNGValidate #define qDNGValidate qDNGValidateTarget #endif /*****************************************************************************/ /// \def qDNGPrintMessages /// 1 if dng_show_message should use fprintf to stderr. 0 if it should use a platform /// specific interrupt mechanism. #ifndef qDNGPrintMessages #define qDNGPrintMessages qDNGValidate #endif /*****************************************************************************/ /// \def qDNGCodec /// 1 to build the Windows Imaging Component Codec (e.g. for Vista). #ifndef qDNGCodec #define qDNGCodec 0 #endif /*****************************************************************************/ // Experimental features -- work in progress for Lightroom 4.0 and Camera Raw 7.0. // Turn this off for Lightroom 3.x & Camera Raw 6.x dot releases. #ifndef qDNGExperimental #define qDNGExperimental 1 #endif /*****************************************************************************/ /// \def qDNGXMPFiles /// 1 to use XMPFiles. #ifndef qDNGXMPFiles #define qDNGXMPFiles 1 #endif /*****************************************************************************/ /// \def qDNGXMPDocOps /// 1 to use XMPDocOps. #ifndef qDNGXMPDocOps #define qDNGXMPDocOps (!qDNGValidateTarget) #endif /*****************************************************************************/ /// \def qDNGUseLibJPEG /// 1 to use open-source libjpeg for lossy jpeg processing. #ifndef qDNGUseLibJPEG #define qDNGUseLibJPEG qDNGValidateTarget #endif /*****************************************************************************/ #endif /*****************************************************************************/