aboutsummaryrefslogtreecommitdiff
path: root/include/compat/sys
diff options
context:
space:
mode:
authorBrent Cook <busterb@gmail.com>2014-07-10 22:06:10 -0500
committerBrent Cook <bcook@openbsd.org>2015-07-21 12:08:18 -0500
commit5d8a1cf7155130bd8101090d7e1d0c2f90d9b123 (patch)
tree286f7d12e3647f94bd1e6e8e180a4bf6215a0740 /include/compat/sys
parent7a4a37cf596697ae96eeb1c555989e6d1a443187 (diff)
downloadportable-5d8a1cf7155130bd8101090d7e1d0c2f90d9b123.tar.gz
portable-5d8a1cf7155130bd8101090d7e1d0c2f90d9b123.tar.bz2
portable-5d8a1cf7155130bd8101090d7e1d0c2f90d9b123.zip
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.
Diffstat (limited to 'include/compat/sys')
-rw-r--r--include/compat/sys/cdefs.h31
-rw-r--r--include/compat/sys/ioctl.h11
-rw-r--r--include/compat/sys/mman.h19
-rw-r--r--include/compat/sys/param.h15
-rw-r--r--include/compat/sys/select.h10
-rw-r--r--include/compat/sys/socket.h10
-rw-r--r--include/compat/sys/stat.h95
-rw-r--r--include/compat/sys/time.h16
-rw-r--r--include/compat/sys/types.h43
-rw-r--r--include/compat/sys/uio.h17
10 files changed, 267 insertions, 0 deletions
diff --git a/include/compat/sys/cdefs.h b/include/compat/sys/cdefs.h
new file mode 100644
index 0000000..21ef031
--- /dev/null
+++ b/include/compat/sys/cdefs.h
@@ -0,0 +1,31 @@
1/*
2 * Public domain
3 * sys/cdefs.h compatibility shim
4 */
5
6#ifndef LIBCRYPTOCOMPAT_SYS_CDEFS_H
7#define LIBCRYPTOCOMPAT_SYS_CDEFS_H
8
9#ifdef _WIN32
10
11#define __warn_references(sym,msg)
12
13#else
14
15#include_next <sys/cdefs.h>
16
17#ifndef __warn_references
18
19#if defined(__GNUC__) && defined (HAS_GNU_WARNING_LONG)
20#define __warn_references(sym,msg) \
21 __asm__(".section .gnu.warning." __STRING(sym) \
22 " ; .ascii \"" msg "\" ; .text");
23#else
24#define __warn_references(sym,msg)
25#endif
26
27#endif /* __warn_references */
28
29#endif /* _WIN32 */
30
31#endif /* LIBCRYPTOCOMPAT_SYS_CDEFS_H */
diff --git a/include/compat/sys/ioctl.h b/include/compat/sys/ioctl.h
new file mode 100644
index 0000000..a255506
--- /dev/null
+++ b/include/compat/sys/ioctl.h
@@ -0,0 +1,11 @@
1/*
2 * Public domain
3 * sys/ioctl.h compatibility shim
4 */
5
6#ifndef _WIN32
7#include_next <sys/ioctl.h>
8#else
9#include <win32netcompat.h>
10#define ioctl(fd, type, arg) ioctlsocket(fd, type, arg)
11#endif
diff --git a/include/compat/sys/mman.h b/include/compat/sys/mman.h
new file mode 100644
index 0000000..d9eb6a9
--- /dev/null
+++ b/include/compat/sys/mman.h
@@ -0,0 +1,19 @@
1/*
2 * Public domain
3 * sys/mman.h compatibility shim
4 */
5
6#include_next <sys/mman.h>
7
8#ifndef LIBCRYPTOCOMPAT_MMAN_H
9#define LIBCRYPTOCOMPAT_MMAN_H
10
11#ifndef MAP_ANON
12#ifdef MAP_ANONYMOUS
13#define MAP_ANON MAP_ANONYMOUS
14#else
15#error "System does not support mapping anonymous pages?"
16#endif
17#endif
18
19#endif
diff --git a/include/compat/sys/param.h b/include/compat/sys/param.h
new file mode 100644
index 0000000..70488f8
--- /dev/null
+++ b/include/compat/sys/param.h
@@ -0,0 +1,15 @@
1/*
2 * Public domain
3 * sys/param.h compatibility shim
4 */
5
6#ifndef LIBCRYPTOCOMPAT_SYS_PARAM_H
7#define LIBCRYPTOCOMPAT_SYS_PARAM_H
8
9#ifdef _MSC_VER
10#include <winsock2.h>
11#else
12#include_next <sys/param.h>
13#endif
14
15#endif
diff --git a/include/compat/sys/select.h b/include/compat/sys/select.h
new file mode 100644
index 0000000..5ca0ea1
--- /dev/null
+++ b/include/compat/sys/select.h
@@ -0,0 +1,10 @@
1/*
2 * Public domain
3 * sys/select.h compatibility shim
4 */
5
6#ifndef _WIN32
7#include_next <sys/select.h>
8#else
9#include <win32netcompat.h>
10#endif
diff --git a/include/compat/sys/socket.h b/include/compat/sys/socket.h
new file mode 100644
index 0000000..17e84f1
--- /dev/null
+++ b/include/compat/sys/socket.h
@@ -0,0 +1,10 @@
1/*
2 * Public domain
3 * sys/socket.h compatibility shim
4 */
5
6#ifndef _WIN32
7#include_next <sys/socket.h>
8#else
9#include <win32netcompat.h>
10#endif
diff --git a/include/compat/sys/stat.h b/include/compat/sys/stat.h
new file mode 100644
index 0000000..55135d8
--- /dev/null
+++ b/include/compat/sys/stat.h
@@ -0,0 +1,95 @@
1/*
2 * Public domain
3 * sys/stat.h compatibility shim
4 */
5
6#ifndef LIBCRYPTOCOMPAT_SYS_STAT_H
7#define LIBCRYPTOCOMPAT_SYS_STAT_H
8
9#ifdef _MSC_VER
10#include <windows.h>
11#include <../include/sys/stat.h>
12
13/* File type and permission flags for stat() */
14#if !defined(S_IFMT)
15# define S_IFMT _S_IFMT /* File type mask */
16#endif
17#if !defined(S_IFDIR)
18# define S_IFDIR _S_IFDIR /* Directory */
19#endif
20#if !defined(S_IFCHR)
21# define S_IFCHR _S_IFCHR /* Character device */
22#endif
23#if !defined(S_IFFIFO)
24# define S_IFFIFO _S_IFFIFO /* Pipe */
25#endif
26#if !defined(S_IFREG)
27# define S_IFREG _S_IFREG /* Regular file */
28#endif
29#if !defined(S_IREAD)
30# define S_IREAD _S_IREAD /* Read permission */
31#endif
32#if !defined(S_IWRITE)
33# define S_IWRITE _S_IWRITE /* Write permission */
34#endif
35#if !defined(S_IEXEC)
36# define S_IEXEC _S_IEXEC /* Execute permission */
37#endif
38#if !defined(S_IFIFO)
39# define S_IFIFO _S_IFIFO /* Pipe */
40#endif
41#if !defined(S_IFBLK)
42# define S_IFBLK 0 /* Block device */
43#endif
44#if !defined(S_IFLNK)
45# define S_IFLNK 0 /* Link */
46#endif
47#if !defined(S_IFSOCK)
48# define S_IFSOCK 0 /* Socket */
49#endif
50
51#if defined(_MSC_VER)
52# define S_IRUSR S_IREAD /* Read user */
53# define S_IWUSR S_IWRITE /* Write user */
54# define S_IXUSR 0 /* Execute user */
55# define S_IRGRP 0 /* Read group */
56# define S_IWGRP 0 /* Write group */
57# define S_IXGRP 0 /* Execute group */
58# define S_IROTH 0 /* Read others */
59# define S_IWOTH 0 /* Write others */
60# define S_IXOTH 0 /* Execute others */
61#endif
62
63/* File type flags for d_type */
64#define DT_UNKNOWN 0
65#define DT_REG S_IFREG
66#define DT_DIR S_IFDIR
67#define DT_FIFO S_IFIFO
68#define DT_SOCK S_IFSOCK
69#define DT_CHR S_IFCHR
70#define DT_BLK S_IFBLK
71#define DT_LNK S_IFLNK
72
73/* Macros for converting between st_mode and d_type */
74#define IFTODT(mode) ((mode) & S_IFMT)
75#define DTTOIF(type) (type)
76
77/*
78 * File type macros. Note that block devices, sockets and links cannot be
79 * distinguished on Windows and the macros S_ISBLK, S_ISSOCK and S_ISLNK are
80 * only defined for compatibility. These macros should always return false
81 * on Windows.
82 */
83#define S_ISFIFO(mode) (((mode) & S_IFMT) == S_IFIFO)
84#define S_ISDIR(mode) (((mode) & S_IFMT) == S_IFDIR)
85#define S_ISREG(mode) (((mode) & S_IFMT) == S_IFREG)
86#define S_ISLNK(mode) (((mode) & S_IFMT) == S_IFLNK)
87#define S_ISSOCK(mode) (((mode) & S_IFMT) == S_IFSOCK)
88#define S_ISCHR(mode) (((mode) & S_IFMT) == S_IFCHR)
89#define S_ISBLK(mode) (((mode) & S_IFMT) == S_IFBLK)
90
91#else
92#include_next <sys/stat.h>
93#endif
94
95#endif
diff --git a/include/compat/sys/time.h b/include/compat/sys/time.h
new file mode 100644
index 0000000..235bc6e
--- /dev/null
+++ b/include/compat/sys/time.h
@@ -0,0 +1,16 @@
1/*
2 * Public domain
3 * sys/time.h compatibility shim
4 */
5
6#ifndef LIBCRYPTOCOMPAT_SYS_TIME_H
7#define LIBCRYPTOCOMPAT_SYS_TIME_H
8
9#ifdef _MSC_VER
10#include <winsock2.h>
11int gettimeofday(struct timeval *tp, void *tzp);
12#else
13#include_next <sys/time.h>
14#endif
15
16#endif
diff --git a/include/compat/sys/types.h b/include/compat/sys/types.h
new file mode 100644
index 0000000..9929dd5
--- /dev/null
+++ b/include/compat/sys/types.h
@@ -0,0 +1,43 @@
1/*
2 * Public domain
3 * sys/types.h compatibility shim
4 */
5
6#ifndef LIBCRYPTOCOMPAT_SYS_TYPES_H
7#define LIBCRYPTOCOMPAT_SYS_TYPES_H
8
9#ifdef _MSC_VER
10#include <../include/sys/types.h>
11#else
12#include_next <sys/types.h>
13#endif
14
15#include <stdint.h>
16
17#ifdef __MINGW32__
18#include <_bsd_types.h>
19#endif
20
21#ifdef _MSC_VER
22typedef unsigned char u_char;
23typedef unsigned short u_short;
24typedef unsigned int u_int;
25
26#include <basetsd.h>
27typedef SSIZE_T ssize_t;
28
29#ifndef SSIZE_MAX
30#ifdef _WIN64
31#define SSIZE_MAX _I64_MAX
32#else
33#define SSIZE_MAX INT_MAX
34#endif
35#endif
36
37#endif
38
39#if !defined(HAVE_ATTRIBUTE__BOUNDED__) && !defined(__bounded__)
40# define __bounded__(x, y, z)
41#endif
42
43#endif
diff --git a/include/compat/sys/uio.h b/include/compat/sys/uio.h
new file mode 100644
index 0000000..b4aee9e
--- /dev/null
+++ b/include/compat/sys/uio.h
@@ -0,0 +1,17 @@
1/*
2 * Public domain
3 * sys/select.h compatibility shim
4 */
5
6#ifndef _WIN32
7#include_next <sys/uio.h>
8#else
9
10#include <sys/types.h>
11
12struct iovec {
13 void *iov_base;
14 size_t iov_len;
15};
16
17#endif