File: gr_pwin32.m4

package info (click to toggle)
hamlib 4.0-7
  • links: PTS, VCS
  • area: main
  • in suites: bullseye
  • size: 14,348 kB
  • sloc: ansic: 182,577; sh: 5,087; cpp: 1,481; perl: 875; makefile: 653; python: 145; awk: 58
file content (127 lines) | stat: -rw-r--r-- 3,183 bytes parent folder | download
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
# Check for (mingw)win32 POSIX replacements.             -*- Autoconf -*-

# Copyright 2003 Free Software Foundation, Inc.
#
# This file is part of GNU Radio
#
# GNU Radio is free software; you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
# the Free Software Foundation; either version 2, or (at your option)
# any later version.
#
# GNU Radio is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
# GNU General Public License for more details.
#
# You should have received a copy of the GNU General Public License
# along with GNU Radio; see the file COPYING.  If not, write to
# the Free Software Foundation, Inc., 59 Temple Place - Suite 330,
# Boston, MA 02111-1307, USA.


AC_DEFUN([GR_PWIN32],
[
AC_REQUIRE([AC_HEADER_TIME])
AC_SEARCH_LIBS([nanosleep], [pthread], [], [AC_MSG_ERROR([unable to find nanosleep])])
AC_CHECK_HEADERS([pthread.h])
AC_CHECK_HEADERS([sys/types.h])
AC_CHECK_HEADERS([windows.h])
AC_CHECK_HEADERS([winioctl.h winbase.h], [], [], [
	#if HAVE_WINDOWS_H
	#include <windows.h>
	#endif
])

AC_CHECK_FUNCS([getopt getopt_long usleep sleep nanosleep gettimeofday])
AC_CHECK_TYPES([struct timezone, ssize_t],[],[],[
     #if HAVE_PTHREAD_H
     #include <pthread.h>
     #endif
     #if HAVE_SYS_TYPES_H
     # include <sys/types.h>
     #endif
     #if TIME_WITH_SYS_TIME
     # include <sys/time.h>
     # include <time.h>
     #else
     # if HAVE_SYS_TIME_H
     #  include <sys/time.h>
     # else
     #  include <time.h>
     # endif
     #endif
])

dnl Checks for replacements
AC_REPLACE_FUNCS([getopt getopt_long usleep gettimeofday])

AC_MSG_CHECKING(for Sleep)
AC_LINK_IFELSE([AC_LANG_PROGRAM([
		#include <windows.h>
		#include <winbase.h>
		], [ Sleep(0); ])],
		[AC_DEFINE(HAVE_SSLEEP,1,[Define to 1 if you have Windows Sleep])
		AC_MSG_RESULT(yes)],
		AC_MSG_RESULT(no)
		)

AH_BOTTOM(
[
/* Define missing prototypes, implemented in replacement lib */
#ifdef  __cplusplus
extern "C" {
#endif

#ifndef HAVE_GETOPT
int getopt (int argc, char * const argv[], const char * optstring);
extern char * optarg;
extern int optind, opterr, optopt;
#endif

#ifndef HAVE_GETOPT_LONG
struct option;
int getopt_long (int argc, char * const argv[], const char * optstring,
			const struct option * longopts, int * longindex);
#endif

#ifndef HAVE_USLEEP
int usleep(unsigned long usec);	/* SUSv2 */
#endif

#ifndef HAVE_GETTIMEOFDAY
#ifdef HAVE_SYS_TIME_H
#include <sys/time.h>
#endif
#ifndef HAVE_STRUCT_TIMEZONE
struct timezone {
        int  tz_minuteswest;
	int  tz_dsttime;
};
#endif
int gettimeofday(struct timeval *tv, struct timezone *tz);
#endif

#ifndef timersub
# define timersub(a, b, result) \
    do { \
        (result)->tv_sec = (a)->tv_sec - (b)->tv_sec; \
        (result)->tv_usec = (a)->tv_usec - (b)->tv_usec; \
        if ((result)->tv_usec < 0) { \
            --(result)->tv_sec; \
            (result)->tv_usec += 1000000; \
        } \
    } while (0)
#endif

#ifndef HAVE_SSIZE_T
typedef size_t ssize_t;
#endif

#ifdef  __cplusplus
}
#endif
])


])