summaryrefslogtreecommitdiff
path: root/cmake/configure.pl
diff options
context:
space:
mode:
authorVladislav Vaintroub <vvaintroub@mysql.com>2010-02-22 20:55:27 +0100
committerVladislav Vaintroub <vvaintroub@mysql.com>2010-02-22 20:55:27 +0100
commit71f8615fd66c03af06c8b8547153d35494c1ac2a (patch)
treeba5b9d130ccf6c03bfdd4791bbc55d2db4455327 /cmake/configure.pl
parentc584f3d609698d27f6f70484b96dce7fa5a0ea2d (diff)
downloadmariadb-git-71f8615fd66c03af06c8b8547153d35494c1ac2a.tar.gz
Fix BUILD/compile-pentium64-xxx scripts, when ccache is present.
Fix contains of : - splitting CC/CXX if there are more that 2 space-delimited tokens, add the rest to CFLAGS (in this case CC was set to "ccache gcc --pipe", and this broke recognition of gcc compiler as CMake understands CC consisting of 2 space delimited tokens but not more) - add my_new.cc to mysys fle list if C++ operator new is not found. Always, not only for gcc (the original problem was that missing operator new when compiling with CXX=gcc)
Diffstat (limited to 'cmake/configure.pl')
-rw-r--r--cmake/configure.pl32
1 files changed, 32 insertions, 0 deletions
diff --git a/cmake/configure.pl b/cmake/configure.pl
index 52c57011ce0..5886a554789 100644
--- a/cmake/configure.pl
+++ b/cmake/configure.pl
@@ -38,6 +38,38 @@ sub set_installdir
}
}
+# CMake understands CC and CXX env.variables correctly, if they contain 1 or 2 tokens
+# e.g CXX=gcc and CXX="ccache gcc" are ok. However it could have a problem if there
+# (recognizing gcc) with more tokens ,e.g CXX="ccache gcc --pipe".
+# The problem is simply fixed by splitting compiler and flags, e.g
+# CXX="ccache gcc --pipe" => CXX=ccache gcc CXXFLAGS=--pipe
+
+sub check_compiler
+{
+ my ($varname, $flagsvarname) = @_;
+ my @tokens = split(/ /,$ENV{$varname});
+ if($#tokens >= 2)
+ {
+ $ENV{$varname} = $tokens[0]." ".$tokens[1];
+ my $flags;
+
+ for(my $i=2; $i<=$#tokens; $i++)
+ {
+ $flags= $flags." ".$tokens[$i];
+ }
+ if(defined $ENV{$flagsvarname})
+ {
+ $flags = $flags." ".$ENV{$flagsvarname};
+ }
+ $ENV{$flagsvarname}=$flags;
+ print("$varname=$ENV{$varname}\n");
+ print("$flagsvarname=$ENV{$flagsvarname}\n");
+ }
+}
+
+check_compiler("CC", "CFLAGS");
+check_compiler("CXX", "CXXFLAGS");
+
foreach my $option (@ARGV)
{
if (substr ($option, 0, 2) == "--")