File: mkc_test.mk

package info (click to toggle)
mk-configure 0.37.0-2
  • links: PTS, VCS
  • area: main
  • in suites: bookworm, forky, sid, trixie
  • size: 4,112 kB
  • sloc: ansic: 5,441; makefile: 1,412; sh: 1,086; cpp: 200; perl: 101; yacc: 85; lex: 21
file content (185 lines) | stat: -rw-r--r-- 6,683 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
MKC_COMMON_DEFINES.NetBSD=	-DSYSTEM_NetBSD
MKC_COMMON_DEFINES.FreeBSD=	-DSYSTEM_FreeBSD
MKC_COMMON_DEFINES.OpenBSD=	-DSYSTEM_OpenBSD
MKC_COMMON_DEFINES.DragonFly=	-DSYSTEM_DragonFly
MKC_COMMON_DEFINES.MirBSD=	-DSYSTEM_MirBSD
MKC_COMMON_DEFINES.SunOS=	-DSYSTEM_SunOS
MKC_COMMON_DEFINES.Linux=	-DSYSTEM_Linux
MKC_COMMON_DEFINES.Darwin=	-DSYSTEM_Darwin
MKC_COMMON_DEFINES.Interix=	-DSYSTEM_Interix
MKC_COMMON_DEFINES.QNX=		-DSYSTEM_QNX
MKC_COMMON_DEFINES.HP-UX=	-DSYSTEM_HPUX
MKC_COMMON_DEFINES.OSF1=	-DSYSTEM_OSF1
MKC_COMMON_DEFINES.Cygwin=	-DSYSTEM_CYGWIN
MKC_COMMON_DEFINES.Haiku=	-DSYSTEM_Haiku
MKC_COMMON_DEFINES.IRIX64=	-DSYSTEM_IRIX64

MKC_COMMON_DEFINES=		-DMKC_COMMON_DEFINES_WORKS_FINE
MKC_COMMON_DEFINES+=		-D__JUSTATEST

MKC_COMMON_HEADERS+=		string.h

MKC_SOURCE_FUNCLIBS+=	superfunc1
MKC_SOURCE_FUNCLIBS+=	superfunc2:superlib2

MKC_CHECK_HEADERS+=	sys/time.h string.h stdlib.h,unistd.h
MKC_CHECK_HEADERS+=	bad_dir/bad_header.h bad_header.h
MKC_CHECK_HEADERS+=	include/mkc_test.h

MKC_CHECK_HEADER_FILES+=	sys/time.h string.h stdlib.h,unistd.h
MKC_CHECK_HEADER_FILES+=	bad_dir/bad_header.h bad_header.h
MKC_CHECK_HEADER_FILES+=	include/mkc_test.h

MKC_REQUIRE_HEADERS+=		stdio.h
MKC_REQUIRE_HEADER_FILES+=	stdio.h

MKC_CHECK_FUNCLIBS+=	strcpy sqrt:m
MKC_CHECK_FUNCLIBS+=	bad_func:bad_lib bad_func

MKC_NOAUTO_FUNCLIBS+=	sqrt:m

MKC_CHECK_DEFINES+=	__BAD_DEFINE__
MKC_CHECK_DEFINES+=	MKC_TEST_DEFINE:include/mkc_test.h
MKC_CHECK_DEFINES+=	EINVAL:stdio.h,errno.h

MKC_REQUIRE_DEFINES+=	__JUSTATEST

MKC_CHECK_VARS+=	errno:errno.h
MKC_CHECK_VARS+=	bad_var:bar_header
MKC_CHECK_VARS+=	mkc_test_var:string.h,include/mkc_test.h

MKC_REQUIRE_VARS+=	mkc_test_var2:include/mkc_test.h

MKC_CHECK_FUNCS2+=	strcmp:stdlib.h,string.h
MKC_CHECK_FUNCS3+=	strcpy
MKC_CHECK_FUNCS1+=	bad_func bad_func:stdlib.h,bad_header
MKC_CHECK_FUNCS5+=	mkc_test_func:stdlib.h,include/mkc_test.h

MKC_CHECK_FUNCS1+=	bad_func1:string.h
MKC_FUNC_OR_DEFINE.bad_func1 = yes

MKC_CHECK_FUNCS2+=	strtok:string.h
MKC_FUNC_OR_DEFINE.strtok = yes

MKC_REQUIRE_FUNCS0+=	mkc_test_func2:include/mkc_test.h

MKC_CHECK_SIZEOF+=	int long-long void* size_t:stdlib.h,unistd.h,string.h
MKC_CHECK_SIZEOF+=	bad_type bad-type:bad_header.h

MKC_CHECK_TYPES+=	size_t:string.h
MKC_CHECK_TYPES+=	bad_type bad-type:bad_header.h
MKC_CHECK_TYPES+=	time_t:stddef.h,time.h

MKC_REQUIRE_TYPES+=	size_t:stdlib.h

MKC_CHECK_MEMBERS+=	struct-tm.tm_isdst:string.h,time.h
MKC_CHECK_MEMBERS+=	struct-sockaddr_in.sin_addr.s_addr:arpa/inet.h:netinet/in.h
MKC_CHECK_MEMBERS+=	bad.member
MKC_CHECK_MEMBERS+=	bad.member:string.h
MKC_CHECK_MEMBERS+=	struct-mkc_test_t.a:include/mkc_test.h
MKC_CHECK_MEMBERS+=	struct-mkc_test_t.b.c:include/mkc_test.h

MKC_REQUIRE_MEMBERS+=	struct-mkc_test_t.d:include/mkc_test.h

MKC_CHECK_PROGS+=	awk sh megaprog-x34

MKC_CUSTOM_DIR=		${.CURDIR}/custom

MKC_CHECK_CUSTOM+=	custom_check1 custom_check2 custom_check2_link \
   custom_check5 custom_check5_link custom_check5_noauto

MKC_CUSTOM_FN.custom_check2        =	my_check2.c
MKC_CUSTOM_FN.custom_check2_link   =	my_check2.c
MKC_CUSTOM_LINK.custom_check2_link =	YES

MKC_CUSTOM_FN.custom_check5        =	my_check5.c
MKC_CUSTOM_FN.custom_check5_link   =	my_check5.c
MKC_CUSTOM_LINK.custom_check5_link =	YES

MKC_CUSTOM_FN.custom_check5_noauto     =	my_check5.c
MKC_CUSTOM_NOAUTO.custom_check5_noauto =	yes
MKC_CUSTOM_CACHE.custom_check5_noauto  =	cache2

MKC_REQUIRE_CUSTOM+=	custom_check3

MKC_CHECK_PROTOTYPES =	strstr_ok strstr_bad function_absent
MKC_PROTOTYPE_FUNC.strstr_ok  = char* strstr   (const  char*,  const char* )
MKC_PROTOTYPE_FUNC.strstr_bad = char* strstr(const char*, const char*, int lalala)
MKC_PROTOTYPE_FUNC.function_absent = int absent_function(int lalala)
MKC_PROTOTYPE_HEADERS.strstr_ok  = string.h
MKC_PROTOTYPE_HEADERS.strstr_bad = string.h
MKC_PROTOTYPE_HEADERS.function_absent = string.h

MKC_CHECK_CC_OPTS =	-DMACRO=zzz --zzz
MKC_CHECK_CCLD_OPTS =	-DMACRO=zzz --zzz
MKC_CHECK_CXX_OPTS =	-DMACRO=zzz --zzz
MKC_CHECK_CXXLD_OPTS =	-DMACRO=zzz --zzz

vars+=	HAVE_HEADER.sys_time_h HAVE_HEADER.string_h HAVE_HEADER.unistd_h \
	HAVE_HEADER_FILE.sys_time_h HAVE_HEADER_FILE.string_h \
	HAVE_HEADER_FILE.unistd_h \
	HAVE_FUNCLIB.strcpy HAVE_FUNCLIB.sqrt \
	HAVE_FUNC2.strcmp.string_h HAVE_FUNC3.strcpy \
	SIZEOF.int SIZEOF.long_long SIZEOF.voidP SIZEOF.size_t.string_h \
	HAVE_TYPE.size_t.string_h \
	HAVE_TYPE.bad_type HAVE_TYPE.time_t.time_h \
	HAVE_HEADER.bad_header_h HAVE_HEADER.bad_dir_bad_header_h \
	HAVE_HEADER_FILE.bad_header_h HAVE_HEADER_FILE.bad_dir_bad_header_h \
	HAVE_FUNCLIB.bad_func HAVE_FUNCLIB.bad_func.bad_lib \
	HAVE_DEFINE.__BAD_DEFINE__ \
	HAVE_FUNC1.bad_func HAVE_FUNC1.bad_func.bad_header \
	HAVE_FUNC1.bad_func1.string_h \
	HAVE_FUNC2.strtok.string_h \
	SIZEOF.bad_type SIZEOF.bad_type.bad_header_h \
	HAVE_FUNCLIB.superfunc1 HAVE_FUNCLIB.superfunc2.superlib2 \
	HAVE_MEMBER.struct_tm_tm_isdst.time_h \
	HAVE_MEMBER.struct_sockaddr_in_sin_addr_s_addr.netinet_in_h \
	HAVE_MEMBER.bad_member \
	HAVE_MEMBER.bad_member.string_h \
	HAVE_HEADER.include_mkc_test_h \
	HAVE_HEADER_FILE.include_mkc_test_h \
	HAVE_DEFINE.MKC_TEST_DEFINE.include_mkc_test_h \
	HAVE_DEFINE.EINVAL.errno_h \
	HAVE_FUNC5.mkc_test_func.include_mkc_test_h \
	HAVE_VAR.mkc_test_var.include_mkc_test_h \
	HAVE_MEMBER.struct_mkc_test_t_a.include_mkc_test_h \
	HAVE_MEMBER.struct_mkc_test_t_b_c.include_mkc_test_h \
	HAVE_PROTOTYPE.strstr_ok HAVE_PROTOTYPE.strstr_bad HAVE_PROTOTYPE.function_absent \
	HAVE_CC_OPT.-DMACRO_zzz HAVE_CXX_OPT.-DMACRO_zzz \
	HAVE_CCLD_OPT.-DMACRO_zzz HAVE_CXXLD_OPT.-DMACRO_zzz \
	HAVE_CC_OPT.--zzz HAVE_CXX_OPT.--zzz \
	HAVE_CCLD_OPT.--zzz HAVE_CXXLD_OPT.--zzz \
	\
	CUSTOM.custom_check1 CUSTOM.custom_check2 CUSTOM.custom_check2_link \
	CUSTOM.custom_check5 CUSTOM.custom_check5_link CUSTOM.custom_check5_noauto \
	\
	HAVE_PROG.sh           PROG.sh \
	HAVE_PROG.awk          PROG.awk \
	HAVE_PROG.megaprog-x34 PROG.megaprog-x34 \
	\
	MKC_AUTO_CPPFLAGS MKC_AUTO_SRCS MKC_AUTO_LDADD

.include <mkc.configure.mk>

HAVE_MEMBER.struct_sockaddr_in_sin_addr_s_addr.netinet_in_h  ?=  \
   ${HAVE_MEMBER.struct_sockaddr_in_sin_addr_s_addr.arpa_inet_h.netinet_in_h}

.if HAVE_FUNCLIB.sqrt || HAVE_FUNCLIB.sqrt.m
HAVE_FUNCLIB.sqrt=	ok
.endif

all:
.for i in ${vars}
	@echo ${i}=${${i}} | \
	sed -e 's|\([^ ]*SIZEOF[^ =]*\)=[0-9][0-9]*|\1=n|g' \
	    -e 's|\([^ ]*PROG[^ =]*\)=[^ =]*bin/|\1=/somewhere/bin/|g' \
	    -e '/^MKC_AUTO_SRCS=/ s|/[^ ]*/||g'
.endfor
	@echo ''
	@printf "%s\n" "${CPPFLAGS}" | \
		sed "s/^.*-DSYSTEM_.*$$/KNOWN_SYSTEM/"
	@printf "%s\n" "${CPPFLAGS}" | \
		sed 's/^.*\(MKC_COMMON_DEFINES_WORKS_FINE\).*$$/\1/'
	@ls -1 _mkc_* | grep -E 'cache2|cc_opt|cxx_opt|ccld_opt|cxxld_opt' | sort

.include <mkc.mk>