add initial CMake and Visual Studio build support
This moves the compatibility include files from include to include/compat so we can use the awful MS C compiler <../include/> trick to emulate the GNU #include_next extension. This also removes a few old compat files we do not need anymore.
This commit is contained in:
31
include/compat/sys/cdefs.h
Normal file
31
include/compat/sys/cdefs.h
Normal file
@@ -0,0 +1,31 @@
|
||||
/*
|
||||
* Public domain
|
||||
* sys/cdefs.h compatibility shim
|
||||
*/
|
||||
|
||||
#ifndef LIBCRYPTOCOMPAT_SYS_CDEFS_H
|
||||
#define LIBCRYPTOCOMPAT_SYS_CDEFS_H
|
||||
|
||||
#ifdef _WIN32
|
||||
|
||||
#define __warn_references(sym,msg)
|
||||
|
||||
#else
|
||||
|
||||
#include_next <sys/cdefs.h>
|
||||
|
||||
#ifndef __warn_references
|
||||
|
||||
#if defined(__GNUC__) && defined (HAS_GNU_WARNING_LONG)
|
||||
#define __warn_references(sym,msg) \
|
||||
__asm__(".section .gnu.warning." __STRING(sym) \
|
||||
" ; .ascii \"" msg "\" ; .text");
|
||||
#else
|
||||
#define __warn_references(sym,msg)
|
||||
#endif
|
||||
|
||||
#endif /* __warn_references */
|
||||
|
||||
#endif /* _WIN32 */
|
||||
|
||||
#endif /* LIBCRYPTOCOMPAT_SYS_CDEFS_H */
|
11
include/compat/sys/ioctl.h
Normal file
11
include/compat/sys/ioctl.h
Normal file
@@ -0,0 +1,11 @@
|
||||
/*
|
||||
* Public domain
|
||||
* sys/ioctl.h compatibility shim
|
||||
*/
|
||||
|
||||
#ifndef _WIN32
|
||||
#include_next <sys/ioctl.h>
|
||||
#else
|
||||
#include <win32netcompat.h>
|
||||
#define ioctl(fd, type, arg) ioctlsocket(fd, type, arg)
|
||||
#endif
|
19
include/compat/sys/mman.h
Normal file
19
include/compat/sys/mman.h
Normal file
@@ -0,0 +1,19 @@
|
||||
/*
|
||||
* Public domain
|
||||
* sys/mman.h compatibility shim
|
||||
*/
|
||||
|
||||
#include_next <sys/mman.h>
|
||||
|
||||
#ifndef LIBCRYPTOCOMPAT_MMAN_H
|
||||
#define LIBCRYPTOCOMPAT_MMAN_H
|
||||
|
||||
#ifndef MAP_ANON
|
||||
#ifdef MAP_ANONYMOUS
|
||||
#define MAP_ANON MAP_ANONYMOUS
|
||||
#else
|
||||
#error "System does not support mapping anonymous pages?"
|
||||
#endif
|
||||
#endif
|
||||
|
||||
#endif
|
15
include/compat/sys/param.h
Normal file
15
include/compat/sys/param.h
Normal file
@@ -0,0 +1,15 @@
|
||||
/*
|
||||
* Public domain
|
||||
* sys/param.h compatibility shim
|
||||
*/
|
||||
|
||||
#ifndef LIBCRYPTOCOMPAT_SYS_PARAM_H
|
||||
#define LIBCRYPTOCOMPAT_SYS_PARAM_H
|
||||
|
||||
#ifdef _MSC_VER
|
||||
#include <winsock2.h>
|
||||
#else
|
||||
#include_next <sys/param.h>
|
||||
#endif
|
||||
|
||||
#endif
|
10
include/compat/sys/select.h
Normal file
10
include/compat/sys/select.h
Normal file
@@ -0,0 +1,10 @@
|
||||
/*
|
||||
* Public domain
|
||||
* sys/select.h compatibility shim
|
||||
*/
|
||||
|
||||
#ifndef _WIN32
|
||||
#include_next <sys/select.h>
|
||||
#else
|
||||
#include <win32netcompat.h>
|
||||
#endif
|
10
include/compat/sys/socket.h
Normal file
10
include/compat/sys/socket.h
Normal file
@@ -0,0 +1,10 @@
|
||||
/*
|
||||
* Public domain
|
||||
* sys/socket.h compatibility shim
|
||||
*/
|
||||
|
||||
#ifndef _WIN32
|
||||
#include_next <sys/socket.h>
|
||||
#else
|
||||
#include <win32netcompat.h>
|
||||
#endif
|
95
include/compat/sys/stat.h
Normal file
95
include/compat/sys/stat.h
Normal file
@@ -0,0 +1,95 @@
|
||||
/*
|
||||
* Public domain
|
||||
* sys/stat.h compatibility shim
|
||||
*/
|
||||
|
||||
#ifndef LIBCRYPTOCOMPAT_SYS_STAT_H
|
||||
#define LIBCRYPTOCOMPAT_SYS_STAT_H
|
||||
|
||||
#ifdef _MSC_VER
|
||||
#include <windows.h>
|
||||
#include <../include/sys/stat.h>
|
||||
|
||||
/* File type and permission flags for stat() */
|
||||
#if !defined(S_IFMT)
|
||||
# define S_IFMT _S_IFMT /* File type mask */
|
||||
#endif
|
||||
#if !defined(S_IFDIR)
|
||||
# define S_IFDIR _S_IFDIR /* Directory */
|
||||
#endif
|
||||
#if !defined(S_IFCHR)
|
||||
# define S_IFCHR _S_IFCHR /* Character device */
|
||||
#endif
|
||||
#if !defined(S_IFFIFO)
|
||||
# define S_IFFIFO _S_IFFIFO /* Pipe */
|
||||
#endif
|
||||
#if !defined(S_IFREG)
|
||||
# define S_IFREG _S_IFREG /* Regular file */
|
||||
#endif
|
||||
#if !defined(S_IREAD)
|
||||
# define S_IREAD _S_IREAD /* Read permission */
|
||||
#endif
|
||||
#if !defined(S_IWRITE)
|
||||
# define S_IWRITE _S_IWRITE /* Write permission */
|
||||
#endif
|
||||
#if !defined(S_IEXEC)
|
||||
# define S_IEXEC _S_IEXEC /* Execute permission */
|
||||
#endif
|
||||
#if !defined(S_IFIFO)
|
||||
# define S_IFIFO _S_IFIFO /* Pipe */
|
||||
#endif
|
||||
#if !defined(S_IFBLK)
|
||||
# define S_IFBLK 0 /* Block device */
|
||||
#endif
|
||||
#if !defined(S_IFLNK)
|
||||
# define S_IFLNK 0 /* Link */
|
||||
#endif
|
||||
#if !defined(S_IFSOCK)
|
||||
# define S_IFSOCK 0 /* Socket */
|
||||
#endif
|
||||
|
||||
#if defined(_MSC_VER)
|
||||
# define S_IRUSR S_IREAD /* Read user */
|
||||
# define S_IWUSR S_IWRITE /* Write user */
|
||||
# define S_IXUSR 0 /* Execute user */
|
||||
# define S_IRGRP 0 /* Read group */
|
||||
# define S_IWGRP 0 /* Write group */
|
||||
# define S_IXGRP 0 /* Execute group */
|
||||
# define S_IROTH 0 /* Read others */
|
||||
# define S_IWOTH 0 /* Write others */
|
||||
# define S_IXOTH 0 /* Execute others */
|
||||
#endif
|
||||
|
||||
/* File type flags for d_type */
|
||||
#define DT_UNKNOWN 0
|
||||
#define DT_REG S_IFREG
|
||||
#define DT_DIR S_IFDIR
|
||||
#define DT_FIFO S_IFIFO
|
||||
#define DT_SOCK S_IFSOCK
|
||||
#define DT_CHR S_IFCHR
|
||||
#define DT_BLK S_IFBLK
|
||||
#define DT_LNK S_IFLNK
|
||||
|
||||
/* Macros for converting between st_mode and d_type */
|
||||
#define IFTODT(mode) ((mode) & S_IFMT)
|
||||
#define DTTOIF(type) (type)
|
||||
|
||||
/*
|
||||
* File type macros. Note that block devices, sockets and links cannot be
|
||||
* distinguished on Windows and the macros S_ISBLK, S_ISSOCK and S_ISLNK are
|
||||
* only defined for compatibility. These macros should always return false
|
||||
* on Windows.
|
||||
*/
|
||||
#define S_ISFIFO(mode) (((mode) & S_IFMT) == S_IFIFO)
|
||||
#define S_ISDIR(mode) (((mode) & S_IFMT) == S_IFDIR)
|
||||
#define S_ISREG(mode) (((mode) & S_IFMT) == S_IFREG)
|
||||
#define S_ISLNK(mode) (((mode) & S_IFMT) == S_IFLNK)
|
||||
#define S_ISSOCK(mode) (((mode) & S_IFMT) == S_IFSOCK)
|
||||
#define S_ISCHR(mode) (((mode) & S_IFMT) == S_IFCHR)
|
||||
#define S_ISBLK(mode) (((mode) & S_IFMT) == S_IFBLK)
|
||||
|
||||
#else
|
||||
#include_next <sys/stat.h>
|
||||
#endif
|
||||
|
||||
#endif
|
16
include/compat/sys/time.h
Normal file
16
include/compat/sys/time.h
Normal file
@@ -0,0 +1,16 @@
|
||||
/*
|
||||
* Public domain
|
||||
* sys/time.h compatibility shim
|
||||
*/
|
||||
|
||||
#ifndef LIBCRYPTOCOMPAT_SYS_TIME_H
|
||||
#define LIBCRYPTOCOMPAT_SYS_TIME_H
|
||||
|
||||
#ifdef _MSC_VER
|
||||
#include <winsock2.h>
|
||||
int gettimeofday(struct timeval *tp, void *tzp);
|
||||
#else
|
||||
#include_next <sys/time.h>
|
||||
#endif
|
||||
|
||||
#endif
|
43
include/compat/sys/types.h
Normal file
43
include/compat/sys/types.h
Normal file
@@ -0,0 +1,43 @@
|
||||
/*
|
||||
* Public domain
|
||||
* sys/types.h compatibility shim
|
||||
*/
|
||||
|
||||
#ifndef LIBCRYPTOCOMPAT_SYS_TYPES_H
|
||||
#define LIBCRYPTOCOMPAT_SYS_TYPES_H
|
||||
|
||||
#ifdef _MSC_VER
|
||||
#include <../include/sys/types.h>
|
||||
#else
|
||||
#include_next <sys/types.h>
|
||||
#endif
|
||||
|
||||
#include <stdint.h>
|
||||
|
||||
#ifdef __MINGW32__
|
||||
#include <_bsd_types.h>
|
||||
#endif
|
||||
|
||||
#ifdef _MSC_VER
|
||||
typedef unsigned char u_char;
|
||||
typedef unsigned short u_short;
|
||||
typedef unsigned int u_int;
|
||||
|
||||
#include <basetsd.h>
|
||||
typedef SSIZE_T ssize_t;
|
||||
|
||||
#ifndef SSIZE_MAX
|
||||
#ifdef _WIN64
|
||||
#define SSIZE_MAX _I64_MAX
|
||||
#else
|
||||
#define SSIZE_MAX INT_MAX
|
||||
#endif
|
||||
#endif
|
||||
|
||||
#endif
|
||||
|
||||
#if !defined(HAVE_ATTRIBUTE__BOUNDED__) && !defined(__bounded__)
|
||||
# define __bounded__(x, y, z)
|
||||
#endif
|
||||
|
||||
#endif
|
17
include/compat/sys/uio.h
Normal file
17
include/compat/sys/uio.h
Normal file
@@ -0,0 +1,17 @@
|
||||
/*
|
||||
* Public domain
|
||||
* sys/select.h compatibility shim
|
||||
*/
|
||||
|
||||
#ifndef _WIN32
|
||||
#include_next <sys/uio.h>
|
||||
#else
|
||||
|
||||
#include <sys/types.h>
|
||||
|
||||
struct iovec {
|
||||
void *iov_base;
|
||||
size_t iov_len;
|
||||
};
|
||||
|
||||
#endif
|
Reference in New Issue
Block a user