# UCW Library configuration system: OS and C compiler
-# (c) 2005--2008 Martin Mares <mj@ucw.cz>
+# (c) 2005--2010 Martin Mares <mj@ucw.cz>
# (c) 2006 Robert Spalek <robert@ucw.cz>
# (c) 2008 Michal Vaner <vorner@ucw.cz>
# C optimizations
Set("COPT" => '-O2');
if (Get("CPU_ARCH") ne "unknown" && Get("CPU_ARCH") ne "default") {
- Append("COPT", '-march=$(CPU_ARCH)');
+ Append("COPT", '-march=' . Get("CPU_ARCH"));
}
# C optimizations for highly exposed code
Append("COPT" => "-I/sw/include");
# Fill in some constants not found in the system header files
Set("SOL_TCP" => 6); # missing in /usr/include/netinet/tcp.h
- if (IsGiven("CONFIG_DIRECT") && IsSet("CONFIG_DIRECT")) {
+ if (IsGiven("CONFIG_DIRECT_IO") && IsSet("CONFIG_DIRECT_IO")) {
Fail("Direct I/O is not available on darwin");
} else {
- UnSet("CONFIG_DIRECT");
+ UnSet("CONFIG_DIRECT_IO");
}
+ if (!IsSet("CONFIG_POSIX_REGEX") && !IsSet("CONFIG_PCRE")) {
+ Set("CONFIG_POSIX_REGEX" => 1);
+ Warn "BSD regex library on Darwin isn't compatible, using POSIX regex.\n";
+ }
+}
+
+### Compiling test programs ###
+
+sub TestCompile($$) {
+ my ($testname, $source) = @_;
+ my $dir = "conftest-$testname";
+ `rm -rf $dir && mkdir $dir`; $? and Fail "Cannot initialize $dir";
+
+ open SRC, ">$dir/conftest.c";
+ print SRC $source;
+ close SRC;
+
+ my $cmd = join(" ",
+ map { defined($_) ? $_ : "" }
+ "cd $dir &&",
+ Get("CC"), Get("CLANG"), Get("COPT"), Get("CEXTRA"), Get("LIBS"),
+ "conftest.c", "-o", "conftest",
+ ">conftest.log", "2>&1"
+ );
+ `$cmd`;
+ my $result = !$?;
+
+ `rm -rf $dir` unless Get("KEEP_CONFTEST");
+
+ return $result;
}
### Writing C headers with configuration ###