aboutsummaryrefslogtreecommitdiff
path: root/autosetup/cc.tcl
diff options
context:
space:
mode:
authorSteve Bennett <steveb@workware.net.au>2011-11-08 17:38:37 +1000
committerSteve Bennett <steveb@workware.net.au>2011-11-08 17:42:58 +1000
commitf02ea986bd70ecbb8486950893d61b4e0bd8cc60 (patch)
treec7b1a449fe56e04e470a2c1b36bff8e7481ba1bd /autosetup/cc.tcl
parent05e51ed5447b83badfd8ed550c7386b68eb94919 (diff)
downloadjimtcl-f02ea986bd70ecbb8486950893d61b4e0bd8cc60.zip
jimtcl-f02ea986bd70ecbb8486950893d61b4e0bd8cc60.tar.gz
jimtcl-f02ea986bd70ecbb8486950893d61b4e0bd8cc60.tar.bz2
Update autosetup, especially for include deps
Correctly detect sys/socket.h and netinet/in.h on OpenBSD Signed-off-by: Steve Bennett <steveb@workware.net.au>
Diffstat (limited to 'autosetup/cc.tcl')
-rw-r--r--autosetup/cc.tcl29
1 files changed, 27 insertions, 2 deletions
diff --git a/autosetup/cc.tcl b/autosetup/cc.tcl
index 707e69c..a046184 100644
--- a/autosetup/cc.tcl
+++ b/autosetup/cc.tcl
@@ -113,10 +113,34 @@ proc cc-check-some-feature {list script} {
# Checks that the given include files can be used
proc cc-check-includes {args} {
cc-check-some-feature $args {
- cctest -includes $each
+ set with {}
+ if {[dict exists $::autosetup(cc-include-deps) $each]} {
+ set deps [dict keys [dict get $::autosetup(cc-include-deps) $each]]
+ msg-quiet cc-check-includes $deps
+ foreach i $deps {
+ if {[have-feature $i]} {
+ lappend with $i
+ }
+ }
+ }
+ if {[llength $with]} {
+ cc-with [list -includes $with] {
+ cctest -includes $each
+ }
+ } else {
+ cctest -includes $each
+ }
}
}
+# @cc-include-needs include required
+#
+# Ensures that when checking for 'include', a check is first
+# made for 'required', and if found, it is #included
+proc cc-include-needs {file depfile} {
+ dict set ::autosetup(cc-include-deps) $file $depfile 1
+}
+
# @cc-check-types type ...
#
# Checks that the types exist.
@@ -374,7 +398,7 @@ proc cc-with {settings args} {
set rc [catch {uplevel 1 [lindex $args 0]} result info]
cc-store-settings $save
if {$rc != 0} {
- return $result -code [dict get $info -code]
+ return -code [dict get $info -code] $result
}
return $result
}
@@ -648,6 +672,7 @@ define CCACHE [find-an-executable [get-env CCACHE ccache]]
# Initial cctest settings
cc-store-settings {-cflags {} -includes {} -declare {} -link 0 -lang c -libs {} -code {}}
+set autosetup(cc-include-deps) {}
msg-result "C compiler...[get-define CCACHE] [get-define CC] [get-define CFLAGS]"
if {[get-define CXX] ne "false"} {