1 /* ///////////////////////////////////////////////////////////////////////
7 * Brief: Unix platform configuration
10 * Copyright (c) 2008-2020, Waruqi All rights reserved.
11 * //////////////////////////////////////////////////////////////////// */
13 #ifndef EXTL_PLATFORM_UNIX_CONFIG_H
14 #define EXTL_PLATFORM_UNIX_CONFIG_H
16 #ifndef EXTL_PLATFORM_CONFIG_H
17 # error This file must be included of platform\config.h
20 /* ///////////////////////////////////////////////////////////////////////
23 #ifndef EXTL_CONFIG_COMPILER_H
24 # error This file must be depended on compiler\config.h
27 #ifdef EXTL_UNIX_NO_SUPPORT
28 # undef EXTL_UNIX_NO_SUPPORT
31 #if defined(EXTL_PLATFORM_IS_UNIX)
33 # if defined(EXTL_COMPILER_IS_GCC)
34 # if __GNUC__ < 2 || \
37 # define EXTL_UNIX_NO_SUPPORT
40 # elif defined(EXTL_COMPILER_IS_INTEL)
41 # if (__INTEL_COMPILER < 700)
42 # define EXTL_UNIX_NO_SUPPORT
46 # error Currently only GNU C++, Intel C/C++ compilers are supported by the Unix.
50 # error This file is supported by Unix platform.
53 /* ///////////////////////////////////////////////////////////////////////
56 #ifdef EXTL_UNIX_ARCH_IS_INTEL
57 # undef EXTL_UNIX_ARCH_IS_INTEL
59 #ifdef EXTL_UNIX_ARCH_IS_POWERPC
60 # undef EXTL_UNIX_ARCH_IS_POWERPC
62 #ifdef EXTL_UNIX_ARCH_IS_SPARC
63 # undef EXTL_UNIX_ARCH_IS_SPARC
65 #ifdef EXTL_UNIX_ARCH_IS_UNKNOWN
66 # undef EXTL_UNIX_ARCH_IS_UNKNOWN
69 #if defined(__i386__) || \
72 # define EXTL_UNIX_ARCH_IS_INTEL
73 #elif defined(__ppc__) || \
76 # define EXTL_UNIX_ARCH_IS_POWERPC
77 #elif defined(__sparc__)
78 # define EXTL_UNIX_ARCH_IS_SPARC
80 # define EXTL_UNIX_ARCH_IS_UNKNOWN
83 /* ///////////////////////////////////////////////////////////////////////
84 * operating system aggreement
86 #ifdef EXTL_UNIX_OSFAMILY_IS_BSD
87 # undef EXTL_UNIX_OSFAMILY_IS_BSD
89 #ifdef EXTL_UNIX_OSFAMILY_IS_SVR4
90 # undef EXTL_UNIX_OSFAMILY_IS_SVR4
94 #if defined(__FreeBSD__) || \
95 defined(__NetBSD__) || \
96 defined(__OpenBSD__) || \
97 defined(__bsdi__) || \
99 # define EXTL_UNIX_OSFAMILY_IS_BSD
102 #if defined(__sysv__) || \
104 defined(__svr4__) || \
105 defined(_SYSTYPE_SVR4)
106 # define EXTL_UNIX_OSFAMILY_IS_SVR4
109 /* ///////////////////////////////////////////////////////////////////////
110 * UNIX platform detecting
112 #ifdef EXTL_UNIX_PLATFORM_IS_APPLE
113 # undef EXTL_UNIX_PLATFORM_IS_APPLE
115 #ifdef EXTL_UNIX_PLATFORM_IS_AIX
116 # undef EXTL_UNIX_PLATFORM_IS_AIX
118 #ifdef EXTL_UNIX_PLATFORM_IS_FREEBSD
119 # undef EXTL_UNIX_PLATFORM_IS_FREEBSD
121 #ifdef EXTL_UNIX_PLATFORM_IS_HPUX
122 # undef EXTL_UNIX_PLATFORM_IS_HPUX
124 #ifdef EXTL_UNIX_PLATFORM_IS_LINUX
125 # undef EXTL_UNIX_PLATFORM_IS_LINUX
127 #ifdef EXTL_UNIX_PLATFORM_IS_MACOSX
128 # undef EXTL_UNIX_PLATFORM_IS_MACOSX
130 #ifdef EXTL_UNIX_PLATFORM_IS_NETBSD
131 # undef EXTL_UNIX_PLATFORM_IS_NETBSD
133 #ifdef EXTL_UNIX_PLATFORM_IS_OPENBSD
134 # undef EXTL_UNIX_PLATFORM_IS_OPENBSD
136 #ifdef EXTL_UNIX_PLATFORM_IS_SOLARIS
137 # undef EXTL_UNIX_PLATFORM_IS_SOLARIS
139 #ifdef EXTL_UNIX_PLATFORM_IS_FREEBSD
140 # undef EXTL_UNIX_PLATFORM_IS_FREEBSD
142 #ifdef EXTL_UNIX_PLATFORM_IS_UNKNOWN
143 # undef EXTL_UNIX_PLATFORM_IS_UNKNOWN
146 #if defined(__APPLE__) || \
148 # define EXTL_UNIX_PLATFORM_IS_APPLE
149 define EXTL_UNIX_PLATFORM_IS_MACOSX
151 # define EXTL_UNIX_PLATFORM_IS_AIX
152 #elif defined(__FreeBSD__)
153 # define EXTL_UNIX_PLATFORM_IS_FREEBSD
154 #elif defined(hpux) || \
156 # define EXTL_UNIX_PLATFORM_IS_HPUX
157 #elif defined(__linux__) || \
158 defined(__linux) || \
160 # define EXTL_UNIX_PLATFORM_IS_LINUX
161 #elif defined(__NetBSD__)
162 # define EXTL_UNIX_PLATFORM_IS_NETBSD
163 #elif defined(__OpenBSD__)
164 # define EXTL_UNIX_PLATFORM_IS_OPENBSD
165 #elif defined(sun) || \
167 # if defined(EXTL_UNIX_OSFAMILY_IS_SVR4)
168 # define EXTL_UNIX_PLATFORM_IS_SOLARIS
170 # define EXTL_UNIX_PLATFORM_IS_SUNOS
173 # define EXTL_UNIX_PLATFORM_IS_UNKNOWN
177 /* //////////////////////////////////////////////////////////////////// */
178 #endif /* EXTL_PLATFORM_UNIX_CONFIG_H */
179 /* //////////////////////////////////////////////////////////////////// */