Exiv2
config.h
1 // config.h
2 
3 #ifndef _CONFIG_H_
4 #define _CONFIG_H_
5 
7 #ifdef _MSC_VER
8 
9 #define _MSC_VER_2010 1600
10 #define _MSC_VER_2008 1500
11 
12 // Constants required by Microsoft SDKs to define SHGetFolderPathA and others
13 
14 #ifndef _WIN32_WINNT
15 // Visual Studio 2012 and earlier
16 # if _MSC_VER < 1800
17 # define _WIN32_WINNT 0x0501
18 # else
19 # define _WIN32_WINNT 0x0600
20 # endif
21 #endif
22 
23 #if _MSC_VER >= _MSC_VER_2008
24 #pragma warning(disable : 4996) // Disable warnings about 'deprecated' standard functions
25 #pragma warning(disable : 4251) // Disable warnings from std templates about exporting interfaces
26 #endif
27 
28 /* On Microsoft compilers pid_t has to be set to int. */
29 #ifndef HAVE_PID_T
30 typedef int pid_t;
31 #endif
32 
33 #endif // _MSC_VER
35 
36 #include "exv_conf.h"
38 
40 #if defined(__MINGW32__) || defined(__MINGW64__)
41 # ifndef __MING__
42 # define __MING__ 1
43 # endif
44 # ifndef __MINGW__
45 # define __MINGW__ 1
46 # endif
47 #endif
48 
49 #ifndef __CYGWIN__
50 # if defined(__CYGWIN32__) || defined(__CYGWIN64__)
51 # define __CYGWIN__ 1
52 # endif
53 #endif
54 
55 #ifndef __LITTLE_ENDIAN__
56 # if defined(__BYTE_ORDER__) && defined(__ORDER_LITTLE_ENDIAN__)
57 # if __BYTE_ORDER__ == __ORDER_LITTLE_ENDIAN__
58 # define __LITTLE_ENDIAN__ 1
59 # endif
60 # endif
61 #endif
62 
63 #ifndef __LITTLE_ENDIAN__
64 # if defined(_MSC_VER) || defined(__CYGWIN__) || defined(__MINGW__)
65 # define __LITTLE_ENDIAN__ 1
66 # endif
67 #endif
68 
69 /*
70  If you're using Solaris and the Solaris Studio compiler
71  you must -library=stdcxx4 along with these inclusions below
72 */
73 #if defined(OS_SOLARIS)
74 # include <string.h>
75 # include <strings.h>
76 # include <math.h>
77 # if defined(__cplusplus)
78 # include <ios>
79 # include <fstream>
80 # endif
81 #endif
83 
85 #ifndef EXV_SEPARATOR_STR
86 # if defined(WIN32) && !defined(__CYGWIN__)
87 # define EXV_SEPARATOR_STR "\\"
88 # define EXV_SEPARATOR_CHR '\\'
89 # else
90 # define EXV_SEPARATOR_STR "/"
91 # define EXV_SEPARATOR_CHR '/'
92 # endif
93 #endif
95 
96 
97 // https://softwareengineering.stackexchange.com/questions/291141/how-to-handle-design-changes-for-auto-ptr-deprecation-in-c11
98 #if __cplusplus >= 201103L
99  #include <memory>
100  #include <sys/types.h>
101  #ifndef _MSC_VER
102  #include <unistd.h>
103  #endif
104  template <typename T>
105  using auto_ptr = std::unique_ptr<T>;
106 #endif
107 
108 #endif // _CONFIG_H_