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