Use -O1 with GCC 4.7.0-4.7.2. #1965
This commit is contained in:
parent
2738a304e8
commit
d4e97d17d5
21
xs/Build.PL
21
xs/Build.PL
@ -3,8 +3,24 @@
|
|||||||
use strict;
|
use strict;
|
||||||
use warnings;
|
use warnings;
|
||||||
|
|
||||||
|
use ExtUtils::CppGuess;
|
||||||
use Module::Build::WithXSpp;
|
use Module::Build::WithXSpp;
|
||||||
|
|
||||||
|
# _GLIBCXX_USE_C99 : to get the long long type for g++
|
||||||
|
# HAS_BOOL : stops Perl/lib/CORE/handy.h from doing "# define bool char" for MSVC
|
||||||
|
# NOGDI : prevents inclusion of wingdi.h which defines functions Polygon() and Polyline() in global namespace
|
||||||
|
my @cflags = qw(-D_GLIBCXX_USE_C99 -DHAS_BOOL -DNOGDI -DSLIC3RXS);
|
||||||
|
if ($ENV{SLIC3R_DEBUG}) {
|
||||||
|
push @cflags, qw(-DSLIC3R_DEBUG -g -ftemplate-backtrace-limit=0);
|
||||||
|
}
|
||||||
|
if (ExtUtils::CppGuess->new->is_gcc) {
|
||||||
|
# check whether we're dealing with a buggy GCC version
|
||||||
|
# see https://github.com/alexrj/Slic3r/issues/1965
|
||||||
|
if (`cc --version` =~ / 4\.7\.[012]/) {
|
||||||
|
push @cflags, qw(-O1 -fcaller-saves -fcrossjumping -fcse-follow-jumps -fdevirtualize -fexpensive-optimizations -fgcse -findirect-inlining -finline-small-functions -fipa-cp -fipa-sra -foptimize-register-move -foptimize-sibling-calls -foptimize-strlen -fpartial-inlining -fpeephole2 -free -fregmove -freorder-blocks -freorder-functions -frerun-cse-after-loop -fschedule-insns2 -fstrict-aliasing -fstrict-overflow -fthread-jumps -ftree-builtin-call-dce -ftree-pre -ftree-switch-conversion -ftree-tail-merge -ftree-vrp);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
my $build = Module::Build::WithXSpp->new(
|
my $build = Module::Build::WithXSpp->new(
|
||||||
module_name => 'Slic3r::XS',
|
module_name => 'Slic3r::XS',
|
||||||
dist_abstract => 'XS code for Slic3r',
|
dist_abstract => 'XS code for Slic3r',
|
||||||
@ -21,10 +37,7 @@ my $build = Module::Build::WithXSpp->new(
|
|||||||
Module::Build 0.38
|
Module::Build 0.38
|
||||||
Module::Build::WithXSpp 0.13
|
Module::Build::WithXSpp 0.13
|
||||||
)},
|
)},
|
||||||
# _GLIBCXX_USE_C99 : to get the long long type for g++
|
extra_compiler_flags => \@cflags,
|
||||||
# HAS_BOOL : stops Perl/lib/CORE/handy.h from doing "# define bool char" for MSVC
|
|
||||||
# NOGDI : prevents inclusion of wingdi.h which defines functions Polygon() and Polyline() in global namespace
|
|
||||||
extra_compiler_flags => [qw(-D_GLIBCXX_USE_C99 -DHAS_BOOL -DNOGDI -DSLIC3RXS), ($ENV{SLIC3R_DEBUG} ? ' -DSLIC3R_DEBUG -g -ftemplate-backtrace-limit=0' : '')],
|
|
||||||
|
|
||||||
# Provides extra C typemaps that are auto-merged
|
# Provides extra C typemaps that are auto-merged
|
||||||
extra_typemap_modules => {
|
extra_typemap_modules => {
|
||||||
|
Loading…
Reference in New Issue
Block a user