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)
This commit is contained in:
parent
e605213c2a
commit
f4284ba6bd
@ -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) == "--")
|
||||
|
@ -42,7 +42,7 @@ IF (WIN32)
|
||||
SET (MYSYS_SOURCES ${MYSYS_SOURCES} my_winthread.c my_wincond.c my_winerr.c my_winfile.c my_windac.c my_conio.c)
|
||||
ENDIF()
|
||||
|
||||
IF(CMAKE_COMPILER_IS_GNUCC AND NOT HAVE_CXX_NEW)
|
||||
IF(NOT HAVE_CXX_NEW)
|
||||
# gcc as C++ compiler does not have new/delete
|
||||
SET(MYSYS_SOURCES ${MYSYS_SOURCES} my_new.cc)
|
||||
ADD_DEFINITIONS( -DUSE_MYSYS_NEW)
|
||||
|
Loading…
x
Reference in New Issue
Block a user