comparison third_party/sqlite3/autosetup/cc.tcl @ 167:589bab390fb4

[ThirdParty] Added sqlite3 to the third_party.
author MrJuneJune <me@mrjunejune.com>
date Mon, 19 Jan 2026 16:28:45 -0800
parents
children
comparison
equal deleted inserted replaced
166:78ea8d5ccc87 167:589bab390fb4
1 # Copyright (c) 2010 WorkWare Systems http://www.workware.net.au/
2 # All rights reserved
3
4 # @synopsis:
5 #
6 # The 'cc' module supports checking various 'features' of the C or C++
7 # compiler/linker environment. Common commands are 'cc-check-includes',
8 # 'cc-check-types', 'cc-check-functions', 'cc-with' and 'make-config-header'
9 #
10 # The following environment variables are used if set:
11 #
12 ## CC - C compiler
13 ## CXX - C++ compiler
14 ## CPP - C preprocessor
15 ## CCACHE - Set to "none" to disable automatic use of ccache
16 ## CPPFLAGS - Additional C preprocessor compiler flags (C and C++), before CFLAGS, CXXFLAGS
17 ## CFLAGS - Additional C compiler flags
18 ## CXXFLAGS - Additional C++ compiler flags
19 ## LDFLAGS - Additional compiler flags during linking
20 ## LINKFLAGS - ?How is this different from LDFLAGS?
21 ## LIBS - Additional libraries to use (for all tests)
22 ## CROSS - Tool prefix for cross compilation
23 #
24 # The following variables are defined from the corresponding
25 # environment variables if set.
26 #
27 ## CC_FOR_BUILD
28 ## LD
29
30 use system
31
32 options {}
33
34 # Checks for the existence of the given function by linking
35 #
36 proc cctest_function {function} {
37 cctest -link 1 -declare "extern void $function\(void);" -code "$function\();"
38 }
39
40 # Checks for the existence of the given type by compiling
41 proc cctest_type {type} {
42 cctest -code "$type _x;"
43 }
44
45 # Checks for the existence of the given type/structure member.
46 # e.g. "struct stat.st_mtime"
47 proc cctest_member {struct_member} {
48 # split at the first dot
49 regexp {^([^.]+)[.](.*)$} $struct_member -> struct member
50 cctest -code "static $struct _s; return sizeof(_s.$member);"
51 }
52
53 # Checks for the existence of the given define by compiling
54 #
55 proc cctest_define {name} {
56 cctest -code "#ifndef $name\n#error not defined\n#endif"
57 }
58
59 # Checks for the existence of the given name either as
60 # a macro (#define) or an rvalue (such as an enum)
61 #
62 proc cctest_decl {name} {
63 cctest -code "#ifndef $name\n(void)$name;\n#endif"
64 }
65
66 # @cc-check-sizeof type ...
67 #
68 # Checks the size of the given types (between 1 and 32, inclusive).
69 # Defines a variable with the size determined, or 'unknown' otherwise.
70 # e.g. for type 'long long', defines 'SIZEOF_LONG_LONG'.
71 # Returns the size of the last type.
72 #
73 proc cc-check-sizeof {args} {
74 foreach type $args {
75 msg-checking "Checking for sizeof $type..."
76 set size unknown
77 # Try the most common sizes first
78 foreach i {4 8 1 2 16 32} {
79 if {[cctest -code "static int _x\[sizeof($type) == $i ? 1 : -1\] = { 1 };"]} {
80 set size $i
81 break
82 }
83 }
84 msg-result $size
85 set define [feature-define-name $type SIZEOF_]
86 define $define $size
87 }
88 # Return the last result
89 get-define $define
90 }
91
92 # Checks for each feature in $list by using the given script.
93 #
94 # When the script is evaluated, $each is set to the feature
95 # being checked, and $extra is set to any additional cctest args.
96 #
97 # Returns 1 if all features were found, or 0 otherwise.
98 proc cc-check-some-feature {list script} {
99 set ret 1
100 foreach each $list {
101 if {![check-feature $each $script]} {
102 set ret 0
103 }
104 }
105 return $ret
106 }
107
108 # @cc-check-includes includes ...
109 #
110 # Checks that the given include files can be used.
111 proc cc-check-includes {args} {
112 cc-check-some-feature $args {
113 set with {}
114 if {[dict exists $::autosetup(cc-include-deps) $each]} {
115 set deps [dict keys [dict get $::autosetup(cc-include-deps) $each]]
116 msg-quiet cc-check-includes {*}$deps
117 foreach i $deps {
118 if {[have-feature $i]} {
119 lappend with $i
120 }
121 }
122 }
123 if {[llength $with]} {
124 cc-with [list -includes $with] {
125 cctest -includes $each
126 }
127 } else {
128 cctest -includes $each
129 }
130 }
131 }
132
133 # @cc-include-needs include required ...
134 #
135 # Ensures that when checking for '$include', a check is first
136 # made for each '$required' file, and if found, it is included with '#include'.
137 proc cc-include-needs {file args} {
138 foreach depfile $args {
139 dict set ::autosetup(cc-include-deps) $file $depfile 1
140 }
141 }
142
143 # @cc-check-types type ...
144 #
145 # Checks that the types exist.
146 proc cc-check-types {args} {
147 cc-check-some-feature $args {
148 cctest_type $each
149 }
150 }
151
152 # @cc-check-defines define ...
153 #
154 # Checks that the given preprocessor symbols are defined.
155 proc cc-check-defines {args} {
156 cc-check-some-feature $args {
157 cctest_define $each
158 }
159 }
160
161 # @cc-check-decls name ...
162 #
163 # Checks that each given name is either a preprocessor symbol or rvalue
164 # such as an enum. Note that the define used is 'HAVE_DECL_xxx'
165 # rather than 'HAVE_xxx'.
166 proc cc-check-decls {args} {
167 set ret 1
168 foreach name $args {
169 msg-checking "Checking for $name..."
170 set r [cctest_decl $name]
171 define-feature "decl $name" $r
172 if {$r} {
173 msg-result "ok"
174 } else {
175 msg-result "not found"
176 set ret 0
177 }
178 }
179 return $ret
180 }
181
182 # @cc-check-functions function ...
183 #
184 # Checks that the given functions exist (can be linked).
185 proc cc-check-functions {args} {
186 cc-check-some-feature $args {
187 cctest_function $each
188 }
189 }
190
191 # @cc-check-members type.member ...
192 #
193 # Checks that the given type/structure members exist.
194 # A structure member is of the form 'struct stat.st_mtime'.
195 proc cc-check-members {args} {
196 cc-check-some-feature $args {
197 cctest_member $each
198 }
199 }
200
201 # @cc-check-function-in-lib function libs ?otherlibs?
202 #
203 # Checks that the given function can be found in one of the libs.
204 #
205 # First checks for no library required, then checks each of the libraries
206 # in turn.
207 #
208 # If the function is found, the feature is defined and 'lib_$function' is defined
209 # to '-l$lib' where the function was found, or "" if no library required.
210 # In addition, '-l$lib' is prepended to the 'LIBS' define.
211 #
212 # If additional libraries may be needed for linking, they should be specified
213 # with '$extralibs' as '-lotherlib1 -lotherlib2'.
214 # These libraries are not automatically added to 'LIBS'.
215 #
216 # Returns 1 if found or 0 if not.
217 #
218 proc cc-check-function-in-lib {function libs {otherlibs {}}} {
219 msg-checking "Checking libs for $function..."
220 set found 0
221 cc-with [list -libs $otherlibs] {
222 if {[cctest_function $function]} {
223 msg-result "none needed"
224 define lib_$function ""
225 incr found
226 } else {
227 foreach lib $libs {
228 cc-with [list -libs -l$lib] {
229 if {[cctest_function $function]} {
230 msg-result -l$lib
231 define lib_$function -l$lib
232 # prepend to LIBS
233 define LIBS "-l$lib [get-define LIBS]"
234 incr found
235 break
236 }
237 }
238 }
239 }
240 }
241 define-feature $function $found
242 if {!$found} {
243 msg-result "no"
244 }
245 return $found
246 }
247
248 # @cc-check-tools tool ...
249 #
250 # Checks for existence of the given compiler tools, taking
251 # into account any cross compilation prefix.
252 #
253 # For example, when checking for 'ar', first 'AR' is checked on the command
254 # line and then in the environment. If not found, '${host}-ar' or
255 # simply 'ar' is assumed depending upon whether cross compiling.
256 # The path is searched for this executable, and if found 'AR' is defined
257 # to the executable name.
258 # Note that even when cross compiling, the simple 'ar' is used as a fallback,
259 # but a warning is generated. This is necessary for some toolchains.
260 #
261 # It is an error if the executable is not found.
262 #
263 proc cc-check-tools {args} {
264 foreach tool $args {
265 set TOOL [string toupper $tool]
266 set exe [get-env $TOOL [get-define cross]$tool]
267 if {[find-executable $exe]} {
268 define $TOOL $exe
269 continue
270 }
271 if {[find-executable $tool]} {
272 msg-result "Warning: Failed to find $exe, falling back to $tool which may be incorrect"
273 define $TOOL $tool
274 continue
275 }
276 user-error "Failed to find $exe"
277 }
278 }
279
280 # @cc-check-progs prog ...
281 #
282 # Checks for existence of the given executables on the path.
283 #
284 # For example, when checking for 'grep', the path is searched for
285 # the executable, 'grep', and if found 'GREP' is defined as 'grep'.
286 #
287 # If the executable is not found, the variable is defined as 'false'.
288 # Returns 1 if all programs were found, or 0 otherwise.
289 #
290 proc cc-check-progs {args} {
291 set failed 0
292 foreach prog $args {
293 set PROG [string toupper $prog]
294 msg-checking "Checking for $prog..."
295 if {![find-executable $prog]} {
296 msg-result no
297 define $PROG false
298 incr failed
299 } else {
300 msg-result ok
301 define $PROG $prog
302 }
303 }
304 expr {!$failed}
305 }
306
307 # @cc-path-progs prog ...
308 #
309 # Like cc-check-progs, but sets the define to the full path rather
310 # than just the program name.
311 #
312 proc cc-path-progs {args} {
313 set failed 0
314 foreach prog $args {
315 set PROG [string toupper $prog]
316 msg-checking "Checking for $prog..."
317 set path [find-executable-path $prog]
318 if {$path eq ""} {
319 msg-result no
320 define $PROG false
321 incr failed
322 } else {
323 msg-result $path
324 define $PROG $path
325 }
326 }
327 expr {!$failed}
328 }
329
330 # Adds the given settings to $::autosetup(ccsettings) and
331 # returns the old settings.
332 #
333 proc cc-add-settings {settings} {
334 if {[llength $settings] % 2} {
335 autosetup-error "settings list is missing a value: $settings"
336 }
337
338 set prev [cc-get-settings]
339 # workaround a bug in some versions of jimsh by forcing
340 # conversion of $prev to a list
341 llength $prev
342
343 array set new $prev
344
345 foreach {name value} $settings {
346 switch -exact -- $name {
347 -cflags - -includes {
348 # These are given as lists
349 lappend new($name) {*}[list-non-empty $value]
350 }
351 -declare {
352 lappend new($name) $value
353 }
354 -libs {
355 # Note that new libraries are added before previous libraries
356 set new($name) [list {*}[list-non-empty $value] {*}$new($name)]
357 }
358 -link - -lang - -nooutput {
359 set new($name) $value
360 }
361 -source - -sourcefile - -code {
362 # XXX: These probably are only valid directly from cctest
363 set new($name) $value
364 }
365 default {
366 autosetup-error "unknown cctest setting: $name"
367 }
368 }
369 }
370
371 cc-store-settings [array get new]
372
373 return $prev
374 }
375
376 proc cc-store-settings {new} {
377 set ::autosetup(ccsettings) $new
378 }
379
380 proc cc-get-settings {} {
381 return $::autosetup(ccsettings)
382 }
383
384 # Similar to cc-add-settings, but each given setting
385 # simply replaces the existing value.
386 #
387 # Returns the previous settings
388 proc cc-update-settings {args} {
389 set prev [cc-get-settings]
390 cc-store-settings [dict merge $prev $args]
391 return $prev
392 }
393
394 # @cc-with settings ?{ script }?
395 #
396 # Sets the given 'cctest' settings and then runs the tests in '$script'.
397 # Note that settings such as '-lang' replace the current setting, while
398 # those such as '-includes' are appended to the existing setting.
399 #
400 # If no script is given, the settings become the default for the remainder
401 # of the 'auto.def' file.
402 #
403 ## cc-with {-lang c++} {
404 ## # This will check with the C++ compiler
405 ## cc-check-types bool
406 ## cc-with {-includes signal.h} {
407 ## # This will check with the C++ compiler, signal.h and any existing includes.
408 ## ...
409 ## }
410 ## # back to just the C++ compiler
411 ## }
412 #
413 # The '-libs' setting is special in that newer values are added *before* earlier ones.
414 #
415 ## cc-with {-libs {-lc -lm}} {
416 ## cc-with {-libs -ldl} {
417 ## cctest -libs -lsocket ...
418 ## # libs will be in this order: -lsocket -ldl -lc -lm
419 ## }
420 ## }
421 #
422 # If you wish to invoke something like cc-check-flags but not have -cflags updated,
423 # use the following idiom:
424 #
425 ## cc-with {} {
426 ## cc-check-flags ...
427 ## }
428 proc cc-with {settings args} {
429 if {[llength $args] == 0} {
430 cc-add-settings $settings
431 } elseif {[llength $args] > 1} {
432 autosetup-error "usage: cc-with settings ?script?"
433 } else {
434 set save [cc-add-settings $settings]
435 set rc [catch {uplevel 1 [lindex $args 0]} result info]
436 cc-store-settings $save
437 if {$rc != 0} {
438 return -code [dict get $info -code] $result
439 }
440 return $result
441 }
442 }
443
444 # @cctest ?settings?
445 #
446 # Low level C/C++ compiler checker. Compiles and or links a small C program
447 # according to the arguments and returns 1 if OK, or 0 if not.
448 #
449 # Supported settings are:
450 #
451 ## -cflags cflags A list of flags to pass to the compiler
452 ## -includes list A list of includes, e.g. {stdlib.h stdio.h}
453 ## -declare code Code to declare before main()
454 ## -link 1 Don't just compile, link too
455 ## -lang c|c++ Use the C (default) or C++ compiler
456 ## -libs liblist List of libraries to link, e.g. {-ldl -lm}
457 ## -code code Code to compile in the body of main()
458 ## -source code Compile a complete program. Ignore -includes, -declare and -code
459 ## -sourcefile file Shorthand for -source [readfile [get-define srcdir]/$file]
460 ## -nooutput 1 Treat any compiler output (e.g. a warning) as an error
461 #
462 # Unless '-source' or '-sourcefile' is specified, the C program looks like:
463 #
464 ## #include <firstinclude> /* same for remaining includes in the list */
465 ## declare-code /* any code in -declare, verbatim */
466 ## int main(void) {
467 ## code /* any code in -code, verbatim */
468 ## return 0;
469 ## }
470 #
471 # And the command line looks like:
472 #
473 ## CC -cflags CFLAGS CPPFLAGS conftest.c -o conftest.o
474 ## CXX -cflags CXXFLAGS CPPFLAGS conftest.cpp -o conftest.o
475 #
476 # And if linking:
477 #
478 ## CC LDFLAGS -cflags CFLAGS conftest.c -o conftest -libs LIBS
479 ## CXX LDFLAGS -cflags CXXFLAGS conftest.c -o conftest -libs LIBS
480 #
481 # Any failures are recorded in 'config.log'
482 #
483 proc cctest {args} {
484 set tmp conftest__
485
486 # Easiest way to merge in the settings
487 cc-with $args {
488 array set opts [cc-get-settings]
489 }
490
491 if {[info exists opts(-sourcefile)]} {
492 set opts(-source) [readfile [get-define srcdir]/$opts(-sourcefile) "#error can't find $opts(-sourcefile)"]
493 }
494 if {[info exists opts(-source)]} {
495 set lines $opts(-source)
496 } else {
497 foreach i $opts(-includes) {
498 if {$opts(-code) ne "" && ![feature-checked $i]} {
499 # Compiling real code with an unchecked header file
500 # Quickly (and silently) check for it now
501
502 # Remove all -includes from settings before checking
503 set saveopts [cc-update-settings -includes {}]
504 msg-quiet cc-check-includes $i
505 cc-store-settings $saveopts
506 }
507 if {$opts(-code) eq "" || [have-feature $i]} {
508 lappend source "#include <$i>"
509 }
510 }
511 lappend source {*}$opts(-declare)
512 lappend source "int main(void) {"
513 lappend source $opts(-code)
514 lappend source "return 0;"
515 lappend source "}"
516
517 set lines [join $source \n]
518 }
519
520 # Build the command line
521 set cmdline {}
522 lappend cmdline {*}[get-define CCACHE]
523 switch -exact -- $opts(-lang) {
524 c++ {
525 set src conftest__.cpp
526 lappend cmdline {*}[get-define CXX]
527 set cflags [get-define CXXFLAGS]
528 }
529 c {
530 set src conftest__.c
531 lappend cmdline {*}[get-define CC]
532 set cflags [get-define CFLAGS]
533 }
534 default {
535 autosetup-error "cctest called with unknown language: $opts(-lang)"
536 }
537 }
538
539 if {$opts(-link)} {
540 lappend cmdline {*}[get-define LDFLAGS]
541 } else {
542 lappend cflags {*}[get-define CPPFLAGS]
543 set tmp conftest__.o
544 lappend cmdline -c
545 }
546 lappend cmdline {*}$opts(-cflags) {*}[get-define cc-default-debug ""] {*}$cflags
547 lappend cmdline $src -o $tmp
548 if {$opts(-link)} {
549 lappend cmdline {*}$opts(-libs) {*}[get-define LIBS]
550 }
551
552 # At this point we have the complete command line and the
553 # complete source to be compiled. Get the result from cache if
554 # we can
555 if {[info exists ::cc_cache($cmdline,$lines)]} {
556 msg-checking "(cached) "
557 set ok $::cc_cache($cmdline,$lines)
558 if {$::autosetup(debug)} {
559 configlog "From cache (ok=$ok): [join $cmdline]"
560 configlog "============"
561 configlog $lines
562 configlog "============"
563 }
564 return $ok
565 }
566
567 writefile $src $lines\n
568
569 set ok 1
570 set err [catch {exec-with-stderr {*}$cmdline} result errinfo]
571 if {$err || ($opts(-nooutput) && [string length $result])} {
572 configlog "Failed: [join $cmdline]"
573 configlog $result
574 configlog "============"
575 configlog "The failed code was:"
576 configlog $lines
577 configlog "============"
578 set ok 0
579 } elseif {$::autosetup(debug)} {
580 configlog "Compiled OK: [join $cmdline]"
581 configlog "============"
582 configlog $lines
583 configlog "============"
584 }
585 file delete $src
586 file delete $tmp
587
588 # cache it
589 set ::cc_cache($cmdline,$lines) $ok
590
591 return $ok
592 }
593
594 # @make-autoconf-h outfile ?auto-patterns=HAVE_*? ?bare-patterns=SIZEOF_*?
595 #
596 # Deprecated - see 'make-config-header'
597 proc make-autoconf-h {file {autopatterns {HAVE_*}} {barepatterns {SIZEOF_* HAVE_DECL_*}}} {
598 user-notice "*** make-autoconf-h is deprecated -- use make-config-header instead"
599 make-config-header $file -auto $autopatterns -bare $barepatterns
600 }
601
602 # @make-config-header outfile ?-auto patternlist? ?-bare patternlist? ?-none patternlist? ?-str patternlist? ...
603 #
604 # Examines all defined variables which match the given patterns
605 # and writes an include file, '$file', which defines each of these.
606 # Variables which match '-auto' are output as follows:
607 # - defines which have the value '0' are ignored.
608 # - defines which have integer values are defined as the integer value.
609 # - any other value is defined as a string, e.g. '"value"'
610 # Variables which match '-bare' are defined as-is.
611 # Variables which match '-str' are defined as a string, e.g. '"value"'
612 # Variables which match '-none' are omitted.
613 #
614 # Note that order is important. The first pattern that matches is selected.
615 # Default behaviour is:
616 #
617 ## -bare {SIZEOF_* HAVE_DECL_*} -auto HAVE_* -none *
618 #
619 # If the file would be unchanged, it is not written.
620 proc make-config-header {file args} {
621 set guard _[string toupper [regsub -all {[^a-zA-Z0-9]} [file tail $file] _]]
622 file mkdir [file dirname $file]
623 set lines {}
624 lappend lines "#ifndef $guard"
625 lappend lines "#define $guard"
626
627 # Add some defaults
628 lappend args -bare {SIZEOF_* HAVE_DECL_*} -auto HAVE_*
629
630 foreach n [lsort [dict keys [all-defines]]] {
631 set value [get-define $n]
632 set type [calc-define-output-type $n $args]
633 switch -exact -- $type {
634 -bare {
635 # Just output the value unchanged
636 }
637 -none {
638 continue
639 }
640 -str {
641 set value \"[string map [list \\ \\\\ \" \\\"] $value]\"
642 }
643 -auto {
644 # Automatically determine the type
645 if {$value eq "0"} {
646 lappend lines "/* #undef $n */"
647 continue
648 }
649 if {![string is integer -strict $value]} {
650 set value \"[string map [list \\ \\\\ \" \\\"] $value]\"
651 }
652 }
653 "" {
654 continue
655 }
656 default {
657 autosetup-error "Unknown type in make-config-header: $type"
658 }
659 }
660 lappend lines "#define $n $value"
661 }
662 lappend lines "#endif"
663 set buf [join $lines \n]
664 write-if-changed $file $buf {
665 msg-result "Created $file"
666 }
667 }
668
669 proc calc-define-output-type {name spec} {
670 foreach {type patterns} $spec {
671 foreach pattern $patterns {
672 if {[string match $pattern $name]} {
673 return $type
674 }
675 }
676 }
677 return ""
678 }
679
680 proc cc-init {} {
681 global autosetup
682
683 # Initialise some values from the environment or commandline or default settings
684 foreach i {LDFLAGS LIBS CPPFLAGS LINKFLAGS CFLAGS} {
685 lassign $i var default
686 define $var [get-env $var $default]
687 }
688
689 if {[env-is-set CC]} {
690 # Set by the user, so don't try anything else
691 set try [list [get-env CC ""]]
692 } else {
693 # Try some reasonable options
694 set try [list [get-define cross]cc [get-define cross]gcc]
695 }
696 define CC [find-an-executable {*}$try]
697 if {[get-define CC] eq ""} {
698 user-error "Could not find a C compiler. Tried: [join $try ", "]"
699 }
700
701 define CPP [get-env CPP "[get-define CC] -E"]
702
703 # XXX: Could avoid looking for a C++ compiler until requested
704 # If CXX isn't found, it is set to the empty string.
705 if {[env-is-set CXX]} {
706 define CXX [find-an-executable -required [get-env CXX ""]]
707 } else {
708 define CXX [find-an-executable [get-define cross]c++ [get-define cross]g++]
709 }
710
711 # CXXFLAGS default to CFLAGS if not specified
712 define CXXFLAGS [get-env CXXFLAGS [get-define CFLAGS]]
713
714 # May need a CC_FOR_BUILD, so look for one
715 define CC_FOR_BUILD [find-an-executable [get-env CC_FOR_BUILD ""] cc gcc false]
716
717 # These start empty and never come from the user or environment
718 define AS_CFLAGS ""
719 define AS_CPPFLAGS ""
720 define AS_CXXFLAGS ""
721
722 define CCACHE [find-an-executable [get-env CCACHE ccache]]
723
724 # If any of these are set in the environment, propagate them to the AUTOREMAKE commandline
725 foreach i {CC CXX CCACHE CPP CFLAGS CXXFLAGS CXXFLAGS LDFLAGS LIBS CROSS CPPFLAGS LINKFLAGS CC_FOR_BUILD LD} {
726 if {[env-is-set $i]} {
727 # Note: If the variable is set on the command line, get-env will return that value
728 # so the command line will continue to override the environment
729 define-append-argv AUTOREMAKE $i=[get-env $i ""]
730 }
731 }
732
733 # Initial cctest settings
734 cc-store-settings {-cflags {} -includes {} -declare {} -link 0 -lang c -libs {} -code {} -nooutput 0}
735 set autosetup(cc-include-deps) {}
736
737 msg-result "C compiler...[get-define CCACHE] [get-define CC] [get-define CFLAGS] [get-define CPPFLAGS]"
738 if {[get-define CXX] ne "false"} {
739 msg-result "C++ compiler...[get-define CCACHE] [get-define CXX] [get-define CXXFLAGS] [get-define CPPFLAGS]"
740 }
741 msg-result "Build C compiler...[get-define CC_FOR_BUILD]"
742
743 # On Darwin, we prefer to use -g0 to avoid creating .dSYM directories
744 # but some compilers may not support it, so test here.
745 switch -glob -- [get-define host] {
746 *-*-darwin* {
747 if {[cctest -cflags {-g0}]} {
748 define cc-default-debug -g0
749 }
750 }
751 }
752
753 if {![cc-check-includes stdlib.h]} {
754 user-error "Compiler does not work. See config.log"
755 }
756 }
757
758 cc-init