From 267712eb32e663873578b589d9383074a25feb3a Mon Sep 17 00:00:00 2001 From: Vojtech Kral Date: Thu, 16 Aug 2018 16:34:59 +0200 Subject: [PATCH 1/3] Build: Plumb perl include path Thanks to @kortschak for contributing to this fix Co-authored-by: Dan Kortschak --- Build.PL | 1 - CMakeLists.txt | 15 +++++++++++---- xs/CMakeLists.txt | 5 +++-- 3 files changed, 14 insertions(+), 7 deletions(-) diff --git a/Build.PL b/Build.PL index 8f882fc4b..16e37986a 100644 --- a/Build.PL +++ b/Build.PL @@ -38,7 +38,6 @@ if ($gui) { %prereqs = qw( Class::Accessor 0 Wx 0.9918 - Socket 2.016 ); %recommends = qw( Wx::GLCanvas 0 diff --git a/CMakeLists.txt b/CMakeLists.txt index 89e6369e0..5d9194d06 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -1,5 +1,4 @@ -# Boost 1.63 requires CMake 3.7 or newer -cmake_minimum_required(VERSION 2.8) +cmake_minimum_required(VERSION 3.2) project(Slic3r) @@ -36,10 +35,18 @@ else() set(ENV_PATH_SEPARATOR ":") endif() set(ENV{PATH} "${PROJECT_SOURCE_DIR}/local-lib/bin${ENV_PATH_SEPARATOR}$ENV{PATH}") -set(ENV{PERL5LIB} "${PROJECT_SOURCE_DIR}/local-lib/lib/perl${ENV_PATH_SEPARATOR}$ENV{PERL5LIB}") +set(PERL_INCLUDE "${PROJECT_SOURCE_DIR}/local-lib/lib/perl5${ENV_PATH_SEPARATOR}$ENV{PERL5LIB}") message("PATH: $ENV{PATH}") -message("PERL5LIB: $ENV{PERL5LIB}") +message("PERL_INCLUDE: ${PERL_INCLUDE}") find_package(Perl REQUIRED) +if (WIN32) + # On Windows passing the PERL5LIB variable causes various problems (such as with MAX_PATH and others), + # basically I've found no good way to do it on Windows. + set(PERL5LIB_ENV_CMD "") +else() + set(PERL5LIB_ENV_CMD ${CMAKE_COMMAND} -E env PERL5LIB=${PERL_INCLUDE}) +endif() + # CMAKE_PREFIX_PATH is used to point CMake to the remaining dependencies (Boost, TBB, ...) # We pick it from environment if it is not defined in another way diff --git a/xs/CMakeLists.txt b/xs/CMakeLists.txt index d41b4c13a..6c2a61685 100644 --- a/xs/CMakeLists.txt +++ b/xs/CMakeLists.txt @@ -367,7 +367,7 @@ set(MyTypemap ${CMAKE_CURRENT_BINARY_DIR}/typemap) add_custom_command( OUTPUT ${MyTypemap} DEPENDS ${CMAKE_CURRENT_LIST_DIR}/xsp/my.map - COMMAND ${PERL_EXECUTABLE} -MExtUtils::Typemaps -MExtUtils::Typemaps::Basic -e "$typemap = ExtUtils::Typemaps->new(file => \"${CMAKE_CURRENT_LIST_DIR}/xsp/my.map\"); $typemap->merge(typemap => ExtUtils::Typemaps::Basic->new); $typemap->write(file => \"${MyTypemap}\")" + COMMAND ${PERL5LIB_ENV_CMD} ${PERL_EXECUTABLE} -MExtUtils::Typemaps -MExtUtils::Typemaps::Basic -e "$typemap = ExtUtils::Typemaps->new(file => \"${CMAKE_CURRENT_LIST_DIR}/xsp/my.map\"); $typemap->merge(typemap => ExtUtils::Typemaps::Basic->new); $typemap->write(file => \"${MyTypemap}\")" VERBATIM ) @@ -432,7 +432,8 @@ set(XS_MAIN_CPP ${CMAKE_CURRENT_BINARY_DIR}/XS.cpp) add_custom_command( OUTPUT ${XS_MAIN_CPP} DEPENDS ${MyTypemap} ${XS_XSP_FILES} ${CMAKE_CURRENT_LIST_DIR}/xsp/typemap.xspt - COMMAND COMMAND xsubpp -typemap typemap -output ${XS_MAIN_CPP} -hiertype ${XS_MAIN_XS} + COMMAND ${PERL5LIB_ENV_CMD} xsubpp -typemap typemap -output ${XS_MAIN_CPP} -hiertype ${XS_MAIN_XS} + VERBATIM ) # Define the Perl XS shared library. From 7be24414f3ad83f7c45c40f244699fd41d487f72 Mon Sep 17 00:00:00 2001 From: Vojtech Kral Date: Fri, 17 Aug 2018 12:38:33 +0200 Subject: [PATCH 2/3] Build: Option to force generation of PDB file on MSVC Release build --- CMakeLists.txt | 1 + xs/CMakeLists.txt | 8 ++++++++ 2 files changed, 9 insertions(+) diff --git a/CMakeLists.txt b/CMakeLists.txt index 5d9194d06..8e3d8ad4d 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -22,6 +22,7 @@ option(SLIC3R_GUI "Compile Slic3r with GUI components (OpenGL, wxWidgets)" option(SLIC3R_PRUSACONTROL "Compile Slic3r with the PrusaControl prject file format (requires wxWidgets base library)" 1) option(SLIC3R_PROFILE "Compile Slic3r with an invasive Shiny profiler" 0) option(SLIC3R_MSVC_COMPILE_PARALLEL "Compile on Visual Studio in parallel" 1) +option(SLIC3R_MSVC_PDB "Generate PDB files on MSVC in Release mode" 1) if (MSVC AND SLIC3R_MSVC_COMPILE_PARALLEL) add_compile_options(/MP) diff --git a/xs/CMakeLists.txt b/xs/CMakeLists.txt index 6c2a61685..d4306c525 100644 --- a/xs/CMakeLists.txt +++ b/xs/CMakeLists.txt @@ -497,6 +497,14 @@ if (WIN32) target_compile_definitions(XS PRIVATE -DNOGDI -DNOMINMAX -DHAS_BOOL) endif () +# SLIC3R_MSVC_PDB +if (MSVC AND SLIC3R_MSVC_PDB AND ${CMAKE_BUILD_TYPE} STREQUAL "Release") + set_target_properties(XS PROPERTIES + COMPILE_FLAGS "/Zi" + LINK_FLAGS "/DEBUG /OPT:REF /OPT:ICF" + ) +endif() + ## Configuration flags if (SLIC3R_GUI) message("Slic3r will be built with GUI support") From 3433e8e3743f8aebea940ae92e3f26fec03c7a22 Mon Sep 17 00:00:00 2001 From: Lukas Matena Date: Fri, 17 Aug 2018 15:42:46 +0200 Subject: [PATCH 3/3] Fixed a few tooltips, changed default value for minimal purge on wipe tower --- xs/src/libslic3r/PrintConfig.cpp | 9 +++------ 1 file changed, 3 insertions(+), 6 deletions(-) diff --git a/xs/src/libslic3r/PrintConfig.cpp b/xs/src/libslic3r/PrintConfig.cpp index d8f2d85a6..a78e73fb5 100644 --- a/xs/src/libslic3r/PrintConfig.cpp +++ b/xs/src/libslic3r/PrintConfig.cpp @@ -518,7 +518,7 @@ PrintConfigDef::PrintConfigDef() def->cli = "filament-minimal-purge-on-wipe-tower=f@"; def->sidetext = L("mm³"); def->min = 0; - def->default_value = new ConfigOptionFloats { 5.f }; + def->default_value = new ConfigOptionFloats { 15.f }; def = this->add("filament_cooling_final_speed", coFloats); def->label = L("Speed of the last cooling move"); @@ -572,10 +572,7 @@ PrintConfigDef::PrintConfigDef() def = this->add("filament_type", coStrings); def->label = L("Filament type"); - def->tooltip = L("If you want to process the output G-code through custom scripts, just list their " - "absolute paths here. Separate multiple scripts with a semicolon. Scripts will be passed " - "the absolute path to the G-code file as the first argument, and they can access " - "the Slic3r config settings by reading environment variables."); + def->tooltip = L("The filament material type for use in custom G-codes."); def->cli = "filament_type=s@"; def->gui_type = "f_enum_open"; def->gui_flags = "show_value"; @@ -921,7 +918,7 @@ PrintConfigDef::PrintConfigDef() def = this->add("remaining_times", coBool); def->label = L("Supports remaining times"); - def->tooltip = L("Emit M73 P[percent printed] R[remaining time in seconds] at 1 minute" + def->tooltip = L("Emit M73 P[percent printed] R[remaining time in minutes] at 1 minute" " intervals into the G-code to let the firmware show accurate remaining time." " As of now only the Prusa i3 MK3 firmware recognizes M73." " Also the i3 MK3 firmware supports M73 Qxx Sxx for the silent mode.");