From bf17924d6582b8a7baca5a58e59c604f3288cd19 Mon Sep 17 00:00:00 2001 From: randomtechguy <50642148+Rose-David@users.noreply.github.com> Date: Fri, 12 Jul 2024 17:24:16 -0400 Subject: [PATCH 1/5] Update CMakeLists.txt to fix linux compile error --- src/slic3r/CMakeLists.txt | 3 +++ 1 file changed, 3 insertions(+) diff --git a/src/slic3r/CMakeLists.txt b/src/slic3r/CMakeLists.txt index 82e91bb10b..b20583a5ba 100644 --- a/src/slic3r/CMakeLists.txt +++ b/src/slic3r/CMakeLists.txt @@ -391,6 +391,7 @@ set(SLIC3R_GUI_SOURCES ) find_package(NanoSVG REQUIRED) +find_package(OpenSSL REQUIRED) if (APPLE) list(APPEND SLIC3R_GUI_SOURCES @@ -447,6 +448,8 @@ target_link_libraries( NanoSVG::nanosvgrast stb_dxt fastfloat + OpenSSL::SSL + OpenSSL::Crypto ) if (MSVC) From da3587cea3c9b51f97f41e3eb09e4479d3b0492f Mon Sep 17 00:00:00 2001 From: Jonne Mickelin Date: Wed, 20 Nov 2024 16:05:44 +0100 Subject: [PATCH 2/5] Update cmake/FindEigen3 to the one bundled with version 3.4.0 This solves the build error with the missing `Eigen3::Eigen` build target. Partially fixes #13608 --- cmake/modules/FindEigen3.cmake | 71 ++++++++++++++++++++++------------ 1 file changed, 46 insertions(+), 25 deletions(-) diff --git a/cmake/modules/FindEigen3.cmake b/cmake/modules/FindEigen3.cmake index 1da37619ef..2dbed58384 100644 --- a/cmake/modules/FindEigen3.cmake +++ b/cmake/modules/FindEigen3.cmake @@ -9,6 +9,16 @@ # EIGEN3_FOUND - system has eigen lib with correct version # EIGEN3_INCLUDE_DIR - the eigen include directory # EIGEN3_VERSION - eigen version +# +# and the following imported target: +# +# Eigen3::Eigen - The header-only Eigen library +# +# This module reads hints about search locations from +# the following environment variables: +# +# EIGEN3_ROOT +# EIGEN3_ROOT_DIR # Copyright (c) 2006, 2007 Montel Laurent, # Copyright (c) 2008, 2009 Gael Guennebaud, @@ -18,16 +28,16 @@ if(NOT Eigen3_FIND_VERSION) if(NOT Eigen3_FIND_VERSION_MAJOR) set(Eigen3_FIND_VERSION_MAJOR 2) - endif(NOT Eigen3_FIND_VERSION_MAJOR) + endif() if(NOT Eigen3_FIND_VERSION_MINOR) set(Eigen3_FIND_VERSION_MINOR 91) - endif(NOT Eigen3_FIND_VERSION_MINOR) + endif() if(NOT Eigen3_FIND_VERSION_PATCH) set(Eigen3_FIND_VERSION_PATCH 0) - endif(NOT Eigen3_FIND_VERSION_PATCH) + endif() set(Eigen3_FIND_VERSION "${Eigen3_FIND_VERSION_MAJOR}.${Eigen3_FIND_VERSION_MINOR}.${Eigen3_FIND_VERSION_PATCH}") -endif(NOT Eigen3_FIND_VERSION) +endif() macro(_eigen3_check_version) file(READ "${EIGEN3_INCLUDE_DIR}/Eigen/src/Core/util/Macros.h" _eigen3_version_header) @@ -42,45 +52,56 @@ macro(_eigen3_check_version) set(EIGEN3_VERSION ${EIGEN3_WORLD_VERSION}.${EIGEN3_MAJOR_VERSION}.${EIGEN3_MINOR_VERSION}) if(${EIGEN3_VERSION} VERSION_LESS ${Eigen3_FIND_VERSION}) set(EIGEN3_VERSION_OK FALSE) - else(${EIGEN3_VERSION} VERSION_LESS ${Eigen3_FIND_VERSION}) + else() set(EIGEN3_VERSION_OK TRUE) - endif(${EIGEN3_VERSION} VERSION_LESS ${Eigen3_FIND_VERSION}) + endif() if(NOT EIGEN3_VERSION_OK) message(STATUS "Eigen3 version ${EIGEN3_VERSION} found in ${EIGEN3_INCLUDE_DIR}, " "but at least version ${Eigen3_FIND_VERSION} is required") - endif(NOT EIGEN3_VERSION_OK) -endmacro(_eigen3_check_version) + endif() +endmacro() if (EIGEN3_INCLUDE_DIR) # in cache already _eigen3_check_version() set(EIGEN3_FOUND ${EIGEN3_VERSION_OK}) - -else (EIGEN3_INCLUDE_DIR) - - # specific additional paths for some OS - if (WIN32) - set(EIGEN_ADDITIONAL_SEARCH_PATHS ${EIGEN_ADDITIONAL_SEARCH_PATHS} "C:/Program Files/Eigen/include" "C:/Program Files (x86)/Eigen/include") - endif(WIN32) - - find_path(EIGEN3_INCLUDE_DIR NAMES signature_of_eigen3_matrix_library - PATHS - ${CMAKE_INSTALL_PREFIX}/include - ${EIGEN_ADDITIONAL_SEARCH_PATHS} - ${KDE4_INCLUDE_DIR} - PATH_SUFFIXES eigen3 eigen - ) + set(Eigen3_FOUND ${EIGEN3_VERSION_OK}) + +else () + + # search first if an Eigen3Config.cmake is available in the system, + # if successful this would set EIGEN3_INCLUDE_DIR and the rest of + # the script will work as usual + find_package(Eigen3 ${Eigen3_FIND_VERSION} NO_MODULE QUIET) + + if(NOT EIGEN3_INCLUDE_DIR) + find_path(EIGEN3_INCLUDE_DIR NAMES signature_of_eigen3_matrix_library + HINTS + ENV EIGEN3_ROOT + ENV EIGEN3_ROOT_DIR + PATHS + ${CMAKE_INSTALL_PREFIX}/include + ${KDE4_INCLUDE_DIR} + PATH_SUFFIXES eigen3 eigen + ) + endif() if(EIGEN3_INCLUDE_DIR) _eigen3_check_version() - endif(EIGEN3_INCLUDE_DIR) + endif() include(FindPackageHandleStandardArgs) find_package_handle_standard_args(Eigen3 DEFAULT_MSG EIGEN3_INCLUDE_DIR EIGEN3_VERSION_OK) mark_as_advanced(EIGEN3_INCLUDE_DIR) -endif(EIGEN3_INCLUDE_DIR) +endif() + +if(EIGEN3_FOUND AND NOT TARGET Eigen3::Eigen) + add_library(Eigen3::Eigen INTERFACE IMPORTED) + set_target_properties(Eigen3::Eigen PROPERTIES + INTERFACE_INCLUDE_DIRECTORIES "${EIGEN3_INCLUDE_DIR}") +endif() From 5c1fd3e489da10a6fb828681b2ee777736b45a61 Mon Sep 17 00:00:00 2001 From: Jonne Mickelin Date: Wed, 20 Nov 2024 16:11:11 +0100 Subject: [PATCH 3/5] Replace FindDbus.cmake with the upstream module This solves the build error with missing headers. Partially fixes #13608. --- CMakeLists.txt | 2 +- cmake/modules/FindDBus.cmake | 59 ------------------------------------ src/slic3r/CMakeLists.txt | 2 +- 3 files changed, 2 insertions(+), 61 deletions(-) delete mode 100644 cmake/modules/FindDBus.cmake diff --git a/CMakeLists.txt b/CMakeLists.txt index 31cb4c0ff3..42a9302a0d 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -246,7 +246,7 @@ if (CMAKE_SYSTEM_NAME STREQUAL "Linux") set(THREADS_PREFER_PTHREAD_FLAG ON) find_package(Threads REQUIRED) - find_package(DBus REQUIRED) + find_package(DBus1 REQUIRED) endif() if (CMAKE_COMPILER_IS_GNUCC OR CMAKE_COMPILER_IS_GNUXX) diff --git a/cmake/modules/FindDBus.cmake b/cmake/modules/FindDBus.cmake deleted file mode 100644 index d54d4e516c..0000000000 --- a/cmake/modules/FindDBus.cmake +++ /dev/null @@ -1,59 +0,0 @@ -# - Try to find DBus -# Once done, this will define -# -# DBUS_FOUND - system has DBus -# DBUS_INCLUDE_DIRS - the DBus include directories -# DBUS_LIBRARIES - link these to use DBus -# -# Copyright (C) 2012 Raphael Kubo da Costa -# -# Redistribution and use in source and binary forms, with or without -# modification, are permitted provided that the following conditions -# are met: -# 1. Redistributions of source code must retain the above copyright -# notice, this list of conditions and the following disclaimer. -# 2. Redistributions in binary form must reproduce the above copyright -# notice, this list of conditions and the following disclaimer in the -# documentation and/or other materials provided with the distribution. -# -# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDER AND ITS CONTRIBUTORS ``AS -# IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, -# THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR -# PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR ITS -# CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, -# EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, -# PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; -# OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, -# WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR -# OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF -# ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - -FIND_PACKAGE(PkgConfig) -PKG_CHECK_MODULES(PC_DBUS QUIET dbus-1) - -FIND_LIBRARY(DBUS_LIBRARIES - NAMES dbus-1 - HINTS ${PC_DBUS_LIBDIR} - ${PC_DBUS_LIBRARY_DIRS} -) - -FIND_PATH(DBUS_INCLUDE_DIR - NAMES dbus/dbus.h - HINTS ${PC_DBUS_INCLUDEDIR} - ${PC_DBUS_INCLUDE_DIRS} -) - -GET_FILENAME_COMPONENT(_DBUS_LIBRARY_DIR ${DBUS_LIBRARIES} PATH) -FIND_PATH(DBUS_ARCH_INCLUDE_DIR - NAMES dbus/dbus-arch-deps.h - HINTS ${PC_DBUS_INCLUDEDIR} - ${PC_DBUS_INCLUDE_DIRS} - ${_DBUS_LIBRARY_DIR} - ${DBUS_INCLUDE_DIR} - PATH_SUFFIXES include -) - -SET(DBUS_INCLUDE_DIRS ${DBUS_INCLUDE_DIR} ${DBUS_ARCH_INCLUDE_DIR}) - -INCLUDE(FindPackageHandleStandardArgs) -FIND_PACKAGE_HANDLE_STANDARD_ARGS(DBus REQUIRED_VARS DBUS_INCLUDE_DIRS DBUS_LIBRARIES) \ No newline at end of file diff --git a/src/slic3r/CMakeLists.txt b/src/slic3r/CMakeLists.txt index b20583a5ba..d1ce7b5b08 100644 --- a/src/slic3r/CMakeLists.txt +++ b/src/slic3r/CMakeLists.txt @@ -455,7 +455,7 @@ target_link_libraries( if (MSVC) target_link_libraries(libslic3r_gui PUBLIC Setupapi.lib) elseif (CMAKE_SYSTEM_NAME STREQUAL "Linux") - target_link_libraries(libslic3r_gui PUBLIC ${DBUS_LIBRARIES}) + target_link_libraries(libslic3r_gui PUBLIC ${DBus1_LIBRARIES}) elseif (APPLE) target_link_libraries(libslic3r_gui PUBLIC ${DISKARBITRATION_LIBRARY} ${COREWLAN_LIBRARY}) endif() From f7a25cae1820444f4e999b429598ca477a35ccb8 Mon Sep 17 00:00:00 2001 From: Jonne Mickelin Date: Wed, 20 Nov 2024 16:14:07 +0100 Subject: [PATCH 4/5] Link boost_headeronly in slic3r and libslic3r This solves the linker error about missing `boost::log` symbols. Fixes #13608. --- src/libslic3r/CMakeLists.txt | 3 ++- src/slic3r/CMakeLists.txt | 1 + 2 files changed, 3 insertions(+), 1 deletion(-) diff --git a/src/libslic3r/CMakeLists.txt b/src/libslic3r/CMakeLists.txt index ea669ee30c..d80b17a0bc 100644 --- a/src/libslic3r/CMakeLists.txt +++ b/src/libslic3r/CMakeLists.txt @@ -524,7 +524,7 @@ cmake_policy(SET CMP0011 NEW) find_package(CGAL REQUIRED) cmake_policy(POP) -add_library(libslic3r_cgal STATIC +add_library(libslic3r_cgal STATIC CutSurface.hpp CutSurface.cpp Geometry/VoronoiUtilsCgal.hpp Geometry/VoronoiUtilsCgal.cpp IntersectionPoints.hpp IntersectionPoints.cpp @@ -596,6 +596,7 @@ target_link_libraries(libslic3r PUBLIC libigl agg ankerl + boost_headeronly ) if (APPLE) diff --git a/src/slic3r/CMakeLists.txt b/src/slic3r/CMakeLists.txt index d1ce7b5b08..27c226120d 100644 --- a/src/slic3r/CMakeLists.txt +++ b/src/slic3r/CMakeLists.txt @@ -450,6 +450,7 @@ target_link_libraries( fastfloat OpenSSL::SSL OpenSSL::Crypto + boost_headeronly ) if (MSVC)