Improve Boost path detection
This commit is contained in:
parent
97bf69ba7f
commit
e7d2be842d
55
xs/Build.PL
55
xs/Build.PL
@ -12,48 +12,65 @@ use Module::Build::WithXSpp;
|
|||||||
# NOGDI : prevents inclusion of wingdi.h which defines functions Polygon() and Polyline() in global namespace
|
# 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);
|
my @cflags = qw(-D_GLIBCXX_USE_C99 -DHAS_BOOL -DNOGDI -DSLIC3RXS);
|
||||||
|
|
||||||
my @INC = qw();
|
my @INC = qw(-Iinclude);
|
||||||
my @LIBS = qw();
|
my @LIBS = qw();
|
||||||
|
|
||||||
|
# search for Boost in a number of places
|
||||||
|
my @boost_include = my @boost_libs = ();
|
||||||
if (defined $ENV{BOOST_DIR}) {
|
if (defined $ENV{BOOST_DIR}) {
|
||||||
if (-d "$ENV{BOOST_DIR}/include") {
|
if (-d "$ENV{BOOST_DIR}/include") {
|
||||||
push @INC, '-I' . $ENV{BOOST_DIR} . '/include';
|
push @boost_include, $ENV{BOOST_DIR} . '/include';
|
||||||
} else {
|
} else {
|
||||||
push @INC, '-I' . $ENV{BOOST_DIR};
|
push @boost_include, $ENV{BOOST_DIR};
|
||||||
}
|
}
|
||||||
push @LIBS, '-L' . $ENV{BOOST_DIR};
|
push @boost_libs, $ENV{BOOST_DIR};
|
||||||
} else {
|
} else {
|
||||||
push @INC, map "-I$_", grep { -d $_ }
|
push @boost_include, grep { -d $_ }
|
||||||
qw(/opt/local/include /usr/local/include /opt/include),
|
qw(/opt/local/include /usr/local/include /opt/include),
|
||||||
qw(/usr/include C:\Boost\include);
|
qw(/usr/include C:\Boost\include);
|
||||||
push @LIBS, map "-L$_", grep { -d $_ }
|
push @boost_libs, grep { -d $_ }
|
||||||
qw(/opt/local/lib /usr/local/lib /opt/lib /usr/lib),
|
qw(/opt/local/lib /usr/local/lib /opt/lib /usr/lib),
|
||||||
qw(C:\Boost\lib /lib);
|
qw(C:\Boost\lib /lib);
|
||||||
|
|
||||||
if ($^O eq 'MSWin32') {
|
if ($^O eq 'MSWin32') {
|
||||||
for my $path (glob 'C:\dev\boost* C:\boost*') {
|
for my $path (glob('C:\dev\boost*'), glob ('C:\boost*')) {
|
||||||
push @INC, "-I" . $path;
|
push @boost_include, $path;
|
||||||
push @INC, "-L" . $path . "/stage/lib";
|
push @boost_libs, $path . "/stage/lib";
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
push @INC, '-Iinclude';
|
# In order to generate the -l switches we need to know how Boost libraries are named
|
||||||
|
|
||||||
my @boost_libs = qw(thread system);
|
|
||||||
my $have_boost = 0;
|
my $have_boost = 0;
|
||||||
for my $pattern ('boost_%s', 'boost_%s-mt', 'boost_%s-mgw47-mt-1_59') {
|
foreach my $path (@boost_libs) {
|
||||||
|
my @files = glob "$path/libboost_system*";
|
||||||
|
next if !@files;
|
||||||
|
|
||||||
|
if ($files[0] =~ /libboost_system([^.]+)/) {
|
||||||
|
my $suffix = $1;
|
||||||
check_lib(
|
check_lib(
|
||||||
lib => sprintf($pattern, 'system'),
|
lib => "boost_system$suffix",
|
||||||
INC => join(' ', @INC),
|
INC => join(' ', map "-I$_", @INC, @boost_include),
|
||||||
LIBS => join(' ', @LIBS),
|
LIBS => "-L$path",
|
||||||
) or next;
|
) or next;
|
||||||
push @LIBS, map sprintf("-l$pattern", $_), @boost_libs;
|
|
||||||
push @cflags, '-DBOOST_LIBS';
|
push @INC, (map " -I$_", @boost_include); # TODO: only use the one related to the chosen lib path
|
||||||
|
push @LIBS, " -L$path", (map " -lboost_$_$suffix", qw(thread system)); # we need these
|
||||||
$have_boost = 1;
|
$have_boost = 1;
|
||||||
last;
|
last;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
die "No Boost!\n" if !$have_boost;
|
die <<'EOF' if !$have_boost;
|
||||||
|
Slic3r requires the Boost libraries. Please make sure they are installed.
|
||||||
|
|
||||||
|
If they are installed, this script should be able to locate them in several
|
||||||
|
standard locations. If this is not the case, you might want to supply their
|
||||||
|
path through the BOOST_DIR environment variable:
|
||||||
|
|
||||||
|
BOOST_DIR=/path/to/boost perl Build.PL
|
||||||
|
|
||||||
|
EOF
|
||||||
|
|
||||||
if ($ENV{SLIC3R_DEBUG}) {
|
if ($ENV{SLIC3R_DEBUG}) {
|
||||||
# only on newer GCCs: -ftemplate-backtrace-limit=0
|
# only on newer GCCs: -ftemplate-backtrace-limit=0
|
||||||
push @cflags, qw(-DSLIC3R_DEBUG -g);
|
push @cflags, qw(-DSLIC3R_DEBUG -g);
|
||||||
|
Loading…
Reference in New Issue
Block a user