You cannot select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
241 lines
5.4 KiB
C++
241 lines
5.4 KiB
C++
// config.h
|
|
|
|
#pragma once
|
|
#ifndef _CONFIG_H_
|
|
#define _CONFIG_H_
|
|
|
|
|
|
#ifdef __cplusplus
|
|
# ifndef CPLUSPLUS11
|
|
# define CPLUSPLUS11 201103L
|
|
# endif
|
|
# if __cplusplus >= CPLUSPLUS11
|
|
# ifndef EXV_USING_CPP_ELEVEN
|
|
# define EXV_USING_CPP_ELEVEN
|
|
# endif
|
|
# endif
|
|
#endif
|
|
|
|
///// Start of Visual Studio Support /////
|
|
#ifdef _MSC_VER
|
|
|
|
#define _MSC_VER_2015 1900
|
|
#define _MSC_VER_2013 1800
|
|
#define _MSC_VER_2012 1700
|
|
#define _MSC_VER_2010 1600
|
|
#define _MSC_VER_2008 1500
|
|
#define _MSC_VER_2005 1400
|
|
#define _MSC_VER_2003 1300
|
|
|
|
#if _MSC_VER >= _MSC_VER_2015
|
|
#define MSDEV_2015 1
|
|
#elif _MSC_VER >= _MSC_VER_2013
|
|
#define MSDEV_2013 1
|
|
#elif _MSC_VER >= _MSC_VER_2012
|
|
#define MSDEV_2012 1
|
|
#elif _MSC_VER >= _MSC_VER_2010
|
|
#define MSDEV_2010 1
|
|
#elif _MSC_VER >= _MSC_VER_2008
|
|
#define MSDEV_2008 1
|
|
#elif _MSC_VER >= _MSC_VER_2005
|
|
#define MSDEV_2005 1
|
|
#else
|
|
#define MSDEV_2003 1
|
|
#endif
|
|
|
|
// Constants required by Microsoft SDKs to define SHGetFolderPathA and others
|
|
|
|
#ifndef _WIN32_WINNT
|
|
// Visual Studio 2012 and earlier
|
|
# if _MSC_VER < 1800
|
|
# define _WIN32_WINNT 0x0501
|
|
# else
|
|
# define _WIN32_WINNT 0x0600
|
|
# endif
|
|
#endif
|
|
|
|
#if _MSC_VER_ == _MSC_VER_2012
|
|
#define HAVE_NTOHLL 1
|
|
#endif
|
|
|
|
/* Disable warning 4251 from std templates about exporting interfaces */
|
|
#ifdef EXV_HAVE_DLL
|
|
#pragma warning( disable : 4251 )
|
|
#endif
|
|
|
|
/* Disable warnings about 'deprecated' standard functions */
|
|
#if _MSC_VER >= _MSC_VER_2005
|
|
# pragma warning(disable : 4996)
|
|
#endif
|
|
|
|
/* On Microsoft compilers pid_t has to be set to int. */
|
|
#ifndef HAVE_PID_T
|
|
typedef int pid_t;
|
|
#endif
|
|
|
|
/* Help out our buddy curl */
|
|
#if !defined(EXV_HAVE_DLL)
|
|
# define CURL_STATICLIB
|
|
#endif
|
|
|
|
#ifndef WIN32_LEAN_AND_MEAN
|
|
#define WIN32_LEAN_AND_MEAN
|
|
#endif
|
|
|
|
#define NOMINMAX
|
|
#include <windows.h>
|
|
|
|
#endif // _MSC_VER
|
|
///// End of Visual Studio Support /////
|
|
|
|
#include "exv_conf.h"
|
|
////////////////////////////////////////
|
|
|
|
///// End symbol visibility /////////
|
|
#if defined(__CYGWIN32__) && !defined(__CYGWIN__)
|
|
/* For backwards compatibility with Cygwin b19 and
|
|
earlier, we define __CYGWIN__ here, so that
|
|
we can rely on checking just for that macro. */
|
|
# define __CYGWIN__ __CYGWIN32__
|
|
# define EXV_HAVE_GXXCLASSVISIBILITY
|
|
#endif
|
|
#ifdef WIN32
|
|
# define EXV_IMPORT __declspec(dllimport)
|
|
# define EXV_EXPORT __declspec(dllexport)
|
|
# define EXV_DLLLOCAL
|
|
# define EXV_DLLPUBLIC
|
|
#else
|
|
# ifdef EXV_WANT_VISIBILITY_SUPPORT
|
|
# if defined(__GNUC__) && (__GNUC__ >= 4)
|
|
# define EXV_IMPORT __attribute__ ((visibility("default")))
|
|
# define EXV_EXPORT __attribute__ ((visibility("default")))
|
|
# define EXV_DLLLOCAL __attribute__ ((visibility("hidden")))
|
|
# define EXV_DLLPUBLIC __attribute__ ((visibility("default")))
|
|
# elif defined(__SUNPRO_C) && (__SUNPRO_C >= 0x550)
|
|
# define EXV_IMPORT __global
|
|
# define EXV_EXPORT __global
|
|
# define EXV_DLLLOCAL __hidden
|
|
# define EXV_DLLPUBLIC __global
|
|
# else
|
|
# define EXV_IMPORT
|
|
# define EXV_EXPORT
|
|
# define EXV_DLLLOCAL
|
|
# define EXV_DLLPUBLIC
|
|
# endif
|
|
# else /* ! EXV_WANT_VISIBILITY_SUPPORT */
|
|
# define EXV_IMPORT
|
|
# define EXV_EXPORT
|
|
# define EXV_DLLLOCAL
|
|
# define EXV_DLLPUBLIC
|
|
# endif /* ! EXV_WANT_VISIBILITY_SUPPORT */
|
|
#endif /* ! WIN32 */
|
|
|
|
/* Define EXIV2API for DLL builds */
|
|
#ifdef EXV_HAVE_DLL
|
|
# ifdef EXV_BUILDING_LIB
|
|
# define EXIV2API EXV_EXPORT
|
|
# else
|
|
# define EXIV2API EXV_IMPORT
|
|
# endif /* ! EXV_BUILDING_LIB */
|
|
#else
|
|
# define EXIV2API
|
|
#endif /* ! EXV_HAVE_DLL */
|
|
|
|
///// End symbol visibility /////////
|
|
|
|
///// Start of platform marcos /////////
|
|
// Linux GCC 4.8 appears to be confused about strerror_r
|
|
#if !defined(EXV_STRERROR_R_CHAR_P) && defined( __gnu_linux__) && defined(__GLIBC__)
|
|
#define EXV_STRERROR_R_CHAR_P
|
|
#endif
|
|
|
|
#if defined(__MINGW32__) || defined(__MINGW64__)
|
|
# ifndef __MING__
|
|
# define __MING__ 1
|
|
# endif
|
|
# ifndef __MINGW__
|
|
# define __MINGW__ 1
|
|
# endif
|
|
|
|
#ifdef EXV_UNICODE_PATH
|
|
#error EXV_UNICODE_PATH is not supported for MinGW builds
|
|
#endif
|
|
#endif
|
|
|
|
#ifndef __CYGWIN__
|
|
# if defined(__CYGWIN32__) || defined(__CYGWIN64__)
|
|
# define __CYGWIN__ 1
|
|
# endif
|
|
#endif
|
|
|
|
#ifndef __LITTLE_ENDIAN__
|
|
# if defined(__BYTE_ORDER__) && defined(__ORDER_LITTLE_ENDIAN__)
|
|
# if __BYTE_ORDER__ == __ORDER_LITTLE_ENDIAN__
|
|
# define __LITTLE_ENDIAN__ 1
|
|
# endif
|
|
# endif
|
|
#endif
|
|
|
|
#ifndef __LITTLE_ENDIAN__
|
|
# if defined(_MSC_VER) || defined(__CYGWIN__) || defined(__MINGW__)
|
|
# define __LITTLE_ENDIAN__ 1
|
|
# endif
|
|
#endif
|
|
|
|
/*
|
|
If you're using Solaris and the Solaris Studio compiler
|
|
you must -library=stdcxx4 along with these inclusions below
|
|
*/
|
|
#if defined(OS_SOLARIS)
|
|
# include <string.h>
|
|
# include <strings.h>
|
|
# include <math.h>
|
|
# if defined(__cplusplus)
|
|
# include <ios>
|
|
# include <fstream>
|
|
# endif
|
|
#endif
|
|
///// End of platform marcos /////////
|
|
|
|
///// Path separator marcos /////
|
|
#ifndef EXV_SEPARATOR_STR
|
|
# if defined(WIN32) && !defined(__CYGWIN__)
|
|
# define EXV_SEPARATOR_STR "\\"
|
|
# define EXV_SEPARATOR_CHR '\\'
|
|
# else
|
|
# define EXV_SEPARATOR_STR "/"
|
|
# define EXV_SEPARATOR_CHR '/'
|
|
# endif
|
|
#endif
|
|
//////////////////////////////////////
|
|
|
|
# include <stdio.h>
|
|
#ifdef EXV_HAVE_UNISTD_H
|
|
#include <unistd.h>
|
|
#endif
|
|
#ifdef __cplusplus
|
|
#include <string>
|
|
#include <iostream>
|
|
#endif
|
|
|
|
// Define build-env for Adobe XMPsdk
|
|
#ifdef EXV_ADOBE_XMPSDK
|
|
# if defined(__APPLE__)
|
|
# ifndef MAC_ENV
|
|
# define MAC_ENV 1
|
|
# endif
|
|
# elif defined(_MSC_VER) || defined(__CYGWIN__) || defined(__MINGW__)
|
|
# ifndef WIN_ENV
|
|
# define WIN_ENV 1
|
|
# endif
|
|
# else
|
|
# ifndef UNIX_ENV
|
|
# define UNIX_ENV 1
|
|
# endif
|
|
# endif
|
|
#endif
|
|
|
|
//
|
|
// That's all Folks!
|
|
#endif // _CONFIG_H_
|