File: mkc_check_decl.1

package info (click to toggle)
mk-configure 0.36.0-1
  • links: PTS, VCS
  • area: main
  • in suites: bullseye
  • size: 3,996 kB
  • sloc: ansic: 4,974; makefile: 1,387; sh: 1,087; cpp: 177; perl: 101; yacc: 85; lex: 21
file content (200 lines) | stat: -rw-r--r-- 4,125 bytes parent folder | download | duplicates (2)
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
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
.\"	$NetBSD$
.\"
.\" Copyright (c) 2009-2010 by Aleksey Cheusov (vle@gmx.net)
.\" Absolutely no warranty.
.\"
.\" ------------------------------------------------------------------
.de VS \" Verbatim Start
.ft CW
.nf
.ne \\$1
..
.de VE \" Verbatim End
.ft R
.fi
..
.\" ------------------------------------------------------------------
.TH MKC_CHECK_DECL 1 "Mar 30, 2019" "" ""
.SH NAME
mkc_check_decl \- checks for define, variable, function, type, member or
function prototype.
.SH SYNOPSIS
.BI mkc_check_decl " [OPTIONS] <check_type> <what> [headers...]"
.SH DESCRIPTION
.I check_type
is either
.IR " define" , " variable" , " func[0-9]" , " funcordefine[0-9]" , " type" , " member " or
.IR " prototype" .
Depending on its value
.B mkc_check_decl
checks respectively for define, variable, function with the specified number
of arguments (or equivalent define in case of funcordefine[0-9]),
data type, member of structure or a function prototype
in the specified
.I headers
by compiling a test program.
.I headers
is either a single header file or a list of headers, separated by comma.
As a result
.B mkc_check_decl
prints either 1 (success) or 0 (failure) to stdout.
By default, temporary and cache files
.RI _mkc_ <check_type> _ <what> _ <lheader_h> .{c,err,res}
are created under
.B MKC_CACHEDIR
directory. Here,
.I lheader_h
is the last header from comma-separated list
.IR headers .
.SH OPTIONS
.TP
.B "-h"
display help message
.SH ENVIRONMENT
.TP
.B CC
Compiler. By default
.I cc
is used.
.TP
.B CPPFLAGS, CFLAGS
Options passed to the compiler, for example -I for additional directories
that contain header files.
.TP
.B MKC_VERBOSE
If set to 1, verbose messages are output to stderr.
.TP
.B MKC_SHOW_CACHED
If set to 1 and MKC_VERBOSE is set to 1, cached results
are output to stderr.
.TP
.B MKC_COMMON_HEADERS
List of header files to add to .c test program.
.TP
.B MKC_CACHEDIR
Directory where temporary and cache files are created.
If unset they are created in a current directory.
.TP
.B MKC_NOCACHE
All results are cached unless MKC_NOCACHE variable is set
to 1.
.TP
.B MKC_DELETE_TMPFILES
If set to 1, temporary files are removed.
.SH EXAMPLES
.VS
   mkc_check_decl define __GNUC__
   mkc_check_decl define RTLD_LAZY dlfcn.h
   mkc_check_decl define FTS_W sys/types.h,sys/stat.h,fts.h
   mkc_check_decl variable sys_errlist errno.h
   mkc_check_decl variable __malloc_hook malloc.h
   mkc_check_decl func3 poll poll.h
   mkc_check_decl func2 fgetln stdio.h
   mkc_check_decl type mbstate_t wchar.h
   mkc_check_decl type long-long
   mkc_check_decl member tm.tm_isdst time.h
   mkc_check_decl member ifreq.ifr_addr.sa_len net/if.h
   mkc_check_decl member struct-stat.st_mtimespec sys/stat.h
   mkc_check_decl prototype 'int connect(int,const struct sockaddr*,socklen_t)' sys/socket.h
   mkc_check_decl prototype 'int connect(int,struct sockaddr*,socklen_t)' sys/socket.h
.VE
.SH C FILE CONTENT
.TP
.B define
.VS
#include <header1.h>
 ...
#include <headerN.h>

#if defined(WHAT)
int func(void)
{
   return 0;
}
#else
#error "WHAT is not a define"
#endif
.VE
.TP
.B variable
.VS
#include <header1.h>
 ...
#include <headerN.h>

int func(void)
{
   return sizeof ((WHAT)) && (&WHAT != 0);
}
.VE
.TP
.BR func3 " (example for function with 3 arguments)"
.VS
#include <header1.h>
 ...
#include <headerN.h>

void func (void)
{
   if (WHAT) return;
   WHAT(0,0,0);
}
.VE
.TP
.BR funcordefine3 " (example for function/define with 3 arguments)"
.VS
#include <header1.h>
 ...
#include <headerN.h>

void func (void)
{
   WHAT(0,0,0);
}
.VE
.TP
.B type
.VS
#include <header1.h>
 ...
#include <headerN.h>

int func(void)
{
   return sizeof (WHAT);
}
.VE
.TP
.B member " (example for struct stat.st_mtimespec)"
.VS
#include <sys/stat.h>
int func(void)
{
   struct_stat var;
   return sizeof (var.st_mtimespec);
}
.VE
.TP
.BR prototype " (example for void ttt(int,char**) function)"
.VS
#include <header1.h>
 ...
#include <headerN.h>

void func (void);
void func2 (void);

void func (void)
{
   if (ttt) return;
}

void ttt(int, char**);

void func2 (void)
{
   if (ttt) return;
}
.VE
.SH AUTHOR
Aleksey Cheusov <vle@gmx.net>