1 /*
2  * Licensed to the Apache Software Foundation (ASF) under one
3  * or more contributor license agreements. See the NOTICE file
4  * distributed with this work for additional information
5  * regarding copyright ownership. The ASF licenses this file
6  * to you under the Apache License, Version 2.0 (the
7  * "License"); you may not use this file except in compliance
8  * with the License. You may obtain a copy of the License at
9  *
10  *   http://www.apache.org/licenses/LICENSE-2.0
11  *
12  * Unless required by applicable law or agreed to in writing,
13  * software distributed under the License is distributed on an
14  * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
15  * KIND, either express or implied. See the License for the
16  * specific language governing permissions and limitations
17  * under the License.
18  */
19 
20 #ifndef _THRIFT_WINDOWS_CONFIG_H_
21 #define _THRIFT_WINDOWS_CONFIG_H_ 1
22 
23 #if defined(_MSC_VER) && (_MSC_VER > 1200)
24 #pragma once
25 #endif // _MSC_VER
26 
27 #ifndef _WIN32
28 #error "This is a Windows header only"
29 #endif
30 
31 // Something that defines PRId64 is required to build
32 #define HAVE_INTTYPES_H 1
33 
34 #ifndef _WIN32_WINNT
35 #define _WIN32_WINNT 0x0601
36 #endif
37 
38 #if defined(_M_IX86) || defined(_M_X64)
39 #define ARITHMETIC_RIGHT_SHIFT 1
40 #define SIGNED_RIGHT_SHIFT_IS 1
41 #endif
42 
43 #ifndef __MINGW32__
44 #pragma warning(disable : 4996) // Deprecated posix name.
45 #endif
46 
47 #define HAVE_GETTIMEOFDAY 1
48 #define HAVE_SYS_STAT_H 1
49 
50 #include <stdint.h>
51 
52 #include <thrift/transport/PlatformSocket.h>
53 #include <thrift/windows/GetTimeOfDay.h>
54 #include <thrift/windows/Operators.h>
55 #include <thrift/windows/TWinsockSingleton.h>
56 #include <thrift/windows/WinFcntl.h>
57 #include <thrift/windows/SocketPair.h>
58 
59 // windows
60 #include <winsock2.h>
61 #include <ws2tcpip.h>
62 
63 #ifndef __MINGW32__
64   #ifdef _WIN32_WCE
65   #pragma comment(lib, "Ws2.lib")
66   #else
67   #pragma comment(lib, "Ws2_32.lib")
68   #pragma comment(lib, "gdi32.lib") // For static OpenSSL
69   #pragma comment(lib, "crypt32.lib") // For static OpenSSL
70   #pragma comment(lib, "user32.lib") // For static OpenSSL
71   #pragma comment(lib, "advapi32.lib") // For security APIs in TPipeServer
72   #pragma comment(lib, "Shlwapi.lib")  // For StrStrIA in TPipeServer
73   #endif
74 #endif // __MINGW32__
75 
76 // Replicate the logic of afunix.h on Windows (the header is only present on
77 // newer Windows SDKs)
78 #ifdef HAVE_AF_UNIX_H
79 #include <afunix.h>
80 #else
81 #ifndef UNIX_PATH_MAX
82 #define UNIX_PATH_MAX 108
83 #endif
84 typedef struct sockaddr_un {
85   ADDRESS_FAMILY sun_family;    // AF_UNIX
86   char sun_path[UNIX_PATH_MAX]; // pathname
87 } SOCKADDR_UN, *PSOCKADDR_UN;
88 #endif // HAVE_AF_UNIX_H
89 
90 #endif // _THRIFT_WINDOWS_CONFIG_H_
91