Welcome to mirror list, hosted at ThFree Co, Russian Federation.

github.com/prusa3d/PrusaSlicer.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
path: root/deps
diff options
context:
space:
mode:
authortamasmeszaros <meszaros.q@gmail.com>2019-06-19 15:52:55 +0300
committertamasmeszaros <meszaros.q@gmail.com>2019-06-19 15:52:55 +0300
commit2ae2672ee92db219ad9210ddd5288f2bd5a62fbc (patch)
tree51a4ac5307f72686fcd8a75f1e7df230fca2ec83 /deps
parent89e39e38955b03500e4e08388200168cb1f5bb0c (diff)
Building igl statically and moving to the dep scripts
Fixing dep build script on Windows and removing some warnings. Use bundled igl by default. Not building with the dependency scripts if not explicitly stated. This way, it will stay in Fix the libigl patch to include C source files in header only mode.
Diffstat (limited to 'deps')
-rw-r--r--deps/CMakeLists.txt2
-rw-r--r--deps/deps-unix-common.cmake30
-rw-r--r--deps/deps-windows.cmake45
-rw-r--r--deps/igl-fixes.patch87
4 files changed, 163 insertions, 1 deletions
diff --git a/deps/CMakeLists.txt b/deps/CMakeLists.txt
index ca4e63fbc..c98941b5a 100644
--- a/deps/CMakeLists.txt
+++ b/deps/CMakeLists.txt
@@ -35,6 +35,7 @@ set(DESTDIR "${CMAKE_CURRENT_BINARY_DIR}/destdir" CACHE PATH "Destination direct
option(DEP_DEBUG "Build debug variants (only applicable on Windows)" ON)
option(DEP_WX_STABLE "Build against wxWidgets stable 3.0 as opposed to default 3.1 (Linux only)" OFF)
+option(DEP_BUILD_IGL_STATIC "Build IGL as a static library. Might cause link errors." OFF)
message(STATUS "PrusaSlicer deps DESTDIR: ${DESTDIR}")
message(STATUS "PrusaSlicer deps debug build: ${DEP_DEBUG}")
@@ -99,6 +100,7 @@ else()
dep_gtest
dep_nlopt
dep_qhull
+ dep_libigl
)
endif()
diff --git a/deps/deps-unix-common.cmake b/deps/deps-unix-common.cmake
index d6a92efcb..c44a6ec20 100644
--- a/deps/deps-unix-common.cmake
+++ b/deps/deps-unix-common.cmake
@@ -32,7 +32,6 @@ ExternalProject_Add(dep_nlopt
-DCMAKE_INSTALL_PREFIX=${DESTDIR}/usr/local
${DEP_CMAKE_OPTS}
)
-
find_package(Git REQUIRED)
ExternalProject_Add(dep_qhull
@@ -45,3 +44,32 @@ ExternalProject_Add(dep_qhull
${DEP_CMAKE_OPTS}
PATCH_COMMAND ${GIT_EXECUTABLE} apply --ignore-space-change --ignore-whitespace ${CMAKE_CURRENT_SOURCE_DIR}/qhull-mods.patch
)
+
+ExternalProject_Add(dep_libigl
+ EXCLUDE_FROM_ALL 1
+ URL "https://github.com/libigl/libigl/archive/v2.0.0.tar.gz"
+ URL_HASH SHA256=42518e6b106c7209c73435fd260ed5d34edeb254852495b4c95dce2d95401328
+ CMAKE_ARGS
+ -DCMAKE_INSTALL_PREFIX=${DESTDIR}/usr/local
+ -DLIBIGL_BUILD_PYTHON=OFF
+ -DLIBIGL_BUILD_TESTS=OFF
+ -DLIBIGL_BUILD_TUTORIALS=OFF
+ -DLIBIGL_USE_STATIC_LIBRARY=${DEP_BUILD_IGL_STATIC}
+ -DLIBIGL_WITHOUT_COPYLEFT=OFF
+ -DLIBIGL_WITH_CGAL=OFF
+ -DLIBIGL_WITH_COMISO=OFF
+ -DLIBIGL_WITH_CORK=OFF
+ -DLIBIGL_WITH_EMBREE=OFF
+ -DLIBIGL_WITH_MATLAB=OFF
+ -DLIBIGL_WITH_MOSEK=OFF
+ -DLIBIGL_WITH_OPENGL=OFF
+ -DLIBIGL_WITH_OPENGL_GLFW=OFF
+ -DLIBIGL_WITH_OPENGL_GLFW_IMGUI=OFF
+ -DLIBIGL_WITH_PNG=OFF
+ -DLIBIGL_WITH_PYTHON=OFF
+ -DLIBIGL_WITH_TETGEN=OFF
+ -DLIBIGL_WITH_TRIANGLE=OFF
+ -DLIBIGL_WITH_XML=OFF
+ PATCH_COMMAND ${GIT_EXECUTABLE} apply --ignore-space-change --ignore-whitespace ${CMAKE_CURRENT_SOURCE_DIR}/igl-fixes.patch
+)
+
diff --git a/deps/deps-windows.cmake b/deps/deps-windows.cmake
index 041160f40..d7daf8425 100644
--- a/deps/deps-windows.cmake
+++ b/deps/deps-windows.cmake
@@ -252,6 +252,51 @@ else ()
set(DEP_WXWIDGETS_LIBDIR "vc_x64_lib")
endif ()
+find_package(Git REQUIRED)
+
+ExternalProject_Add(dep_libigl
+ EXCLUDE_FROM_ALL 1
+ URL "https://github.com/libigl/libigl/archive/v2.0.0.tar.gz"
+ URL_HASH SHA256=42518e6b106c7209c73435fd260ed5d34edeb254852495b4c95dce2d95401328
+ CMAKE_GENERATOR "${DEP_MSVC_GEN}"
+ CMAKE_ARGS
+ -DCMAKE_INSTALL_PREFIX=${DESTDIR}/usr/local
+ -DLIBIGL_BUILD_PYTHON=OFF
+ -DLIBIGL_BUILD_TESTS=OFF
+ -DLIBIGL_BUILD_TUTORIALS=OFF
+ -DLIBIGL_USE_STATIC_LIBRARY=${DEP_BUILD_IGL_STATIC}
+ -DLIBIGL_WITHOUT_COPYLEFT=OFF
+ -DLIBIGL_WITH_CGAL=OFF
+ -DLIBIGL_WITH_COMISO=OFF
+ -DLIBIGL_WITH_CORK=OFF
+ -DLIBIGL_WITH_EMBREE=OFF
+ -DLIBIGL_WITH_MATLAB=OFF
+ -DLIBIGL_WITH_MOSEK=OFF
+ -DLIBIGL_WITH_OPENGL=OFF
+ -DLIBIGL_WITH_OPENGL_GLFW=OFF
+ -DLIBIGL_WITH_OPENGL_GLFW_IMGUI=OFF
+ -DLIBIGL_WITH_PNG=OFF
+ -DLIBIGL_WITH_PYTHON=OFF
+ -DLIBIGL_WITH_TETGEN=OFF
+ -DLIBIGL_WITH_TRIANGLE=OFF
+ -DLIBIGL_WITH_XML=OFF
+ -DCMAKE_POSITION_INDEPENDENT_CODE=ON
+ -DCMAKE_DEBUG_POSTFIX=d
+ PATCH_COMMAND ${GIT_EXECUTABLE} apply --ignore-space-change --ignore-whitespace ${CMAKE_CURRENT_SOURCE_DIR}/igl-fixes.patch
+ BUILD_COMMAND msbuild /m /P:Configuration=Release INSTALL.vcxproj
+ INSTALL_COMMAND ""
+)
+
+if (${DEP_DEBUG})
+ ExternalProject_Get_Property(dep_libigl BINARY_DIR)
+ ExternalProject_Add_Step(dep_libigl build_debug
+ DEPENDEES build
+ DEPENDERS install
+ COMMAND msbuild /m /P:Configuration=Debug INSTALL.vcxproj
+ WORKING_DIRECTORY "${BINARY_DIR}"
+ )
+endif ()
+
ExternalProject_Add(dep_wxwidgets
EXCLUDE_FROM_ALL 1
GIT_REPOSITORY "https://github.com/prusa3d/wxWidgets"
diff --git a/deps/igl-fixes.patch b/deps/igl-fixes.patch
new file mode 100644
index 000000000..2b50e200b
--- /dev/null
+++ b/deps/igl-fixes.patch
@@ -0,0 +1,87 @@
+diff --git a/cmake/libigl-config.cmake.in b/cmake/libigl-config.cmake.in
+index 317c745c..f9808e1e 100644
+--- a/cmake/libigl-config.cmake.in
++++ b/cmake/libigl-config.cmake.in
+@@ -2,28 +2,28 @@
+
+ include(${CMAKE_CURRENT_LIST_DIR}/libigl-export.cmake)
+
+-if (TARGET igl::core)
+- if (NOT TARGET Eigen3::Eigen)
+- find_package(Eigen3 QUIET)
+- if (NOT Eigen3_FOUND)
+- # try with PkgCOnfig
+- find_package(PkgConfig REQUIRED)
+- pkg_check_modules(Eigen3 QUIET IMPORTED_TARGET eigen3)
+- endif()
+-
+- if (NOT Eigen3_FOUND)
+- message(FATAL_ERROR "Could not find required dependency Eigen3")
+- set(libigl_core_FOUND FALSE)
+- else()
+- target_link_libraries(igl::core INTERFACE PkgConfig::Eigen3)
+- set(libigl_core_FOUND TRUE)
+- endif()
+- else()
+- target_link_libraries(igl::core INTERFACE Eigen3::Eigen)
+- set(libigl_core_FOUND TRUE)
+- endif()
+-
+-endif()
++# if (TARGET igl::core)
++# if (NOT TARGET Eigen3::Eigen)
++# find_package(Eigen3 QUIET)
++# if (NOT Eigen3_FOUND)
++# # try with PkgCOnfig
++# find_package(PkgConfig REQUIRED)
++# pkg_check_modules(Eigen3 QUIET IMPORTED_TARGET eigen3)
++# endif()
++#
++# if (NOT Eigen3_FOUND)
++# message(FATAL_ERROR "Could not find required dependency Eigen3")
++# set(libigl_core_FOUND FALSE)
++# else()
++# target_link_libraries(igl::core INTERFACE PkgConfig::Eigen3)
++# set(libigl_core_FOUND TRUE)
++# endif()
++# else()
++# target_link_libraries(igl::core INTERFACE Eigen3::Eigen)
++# set(libigl_core_FOUND TRUE)
++# endif()
++#
++# endif()
+
+ check_required_components(libigl)
+
+diff --git a/cmake/libigl.cmake b/cmake/libigl.cmake
+index 4b11007a..47e6c395 100644
+--- a/cmake/libigl.cmake
++++ b/cmake/libigl.cmake
+@@ -445,6 +445,7 @@ function(install_dir_files dir_name)
+ if(NOT LIBIGL_USE_STATIC_LIBRARY)
+ file(GLOB public_sources
+ ${CMAKE_CURRENT_SOURCE_DIR}/include/igl${subpath}/*.cpp
++ ${CMAKE_CURRENT_SOURCE_DIR}/include/igl${subpath}/*.c
+ )
+ endif()
+ list(APPEND files_to_install ${public_sources})
+diff --git a/include/igl/AABB.cpp b/include/igl/AABB.cpp
+index 09537335..31594314 100644
+--- a/include/igl/AABB.cpp
++++ b/include/igl/AABB.cpp
+@@ -1072,4 +1072,5 @@ template void igl::AABB<Eigen::Matrix<double, -1, -1, 0, -1, -1>, 3>::init<Eigen
+ template void igl::AABB<Eigen::Matrix<double, -1, -1, 0, -1, -1>, 2>::init<Eigen::Matrix<int, -1, -1, 0, -1, -1> >(Eigen::MatrixBase<Eigen::Matrix<double, -1, -1, 0, -1, -1> > const&, Eigen::MatrixBase<Eigen::Matrix<int, -1, -1, 0, -1, -1> > const&);
+ template double igl::AABB<Eigen::Matrix<double, -1, -1, 0, -1, -1>, 3>::squared_distance<Eigen::Matrix<int, -1, -1, 0, -1, -1> >(Eigen::MatrixBase<Eigen::Matrix<double, -1, -1, 0, -1, -1> > const&, Eigen::MatrixBase<Eigen::Matrix<int, -1, -1, 0, -1, -1> > const&, Eigen::Matrix<double, 1, 3, 1, 1, 3> const&, double, int&, Eigen::PlainObjectBase<Eigen::Matrix<double, 1, 3, 1, 1, 3> >&) const;
+ template bool igl::AABB<Eigen::Matrix<double, -1, -1, 0, -1, -1>, 3>::intersect_ray<Eigen::Matrix<int, -1, -1, 0, -1, -1> >(Eigen::MatrixBase<Eigen::Matrix<double, -1, -1, 0, -1, -1> > const&, Eigen::MatrixBase<Eigen::Matrix<int, -1, -1, 0, -1, -1> > const&, Eigen::Matrix<double, 1, 3, 1, 1, 3> const&, Eigen::Matrix<double, 1, 3, 1, 1, 3> const&, igl::Hit&) const;
++template bool igl::AABB<Eigen::Matrix<double, -1, -1, 0, -1, -1>, 3>::intersect_ray<Eigen::Matrix<int, -1, -1, 0, -1, -1> >(Eigen::MatrixBase<Eigen::Matrix<double, -1, -1, 0, -1, -1> > const&, Eigen::MatrixBase<Eigen::Matrix<int, -1, -1, 0, -1, -1> > const&, Eigen::Matrix<double, 1, 3, 1, 1, 3> const&, Eigen::Matrix<double, 1, 3, 1, 1, 3> const&, std::vector<igl::Hit>&) const;
+ #endif
+diff --git a/include/igl/ray_mesh_intersect.cpp b/include/igl/ray_mesh_intersect.cpp
+index 9a70a22b..dda1654b 100644
+--- a/include/igl/ray_mesh_intersect.cpp
++++ b/include/igl/ray_mesh_intersect.cpp
+@@ -83,4 +83,5 @@ IGL_INLINE bool igl::ray_mesh_intersect(
+ template bool igl::ray_mesh_intersect<Eigen::Matrix<float, 3, 1, 0, 3, 1>, Eigen::Matrix<float, 3, 1, 0, 3, 1>, Eigen::Matrix<double, -1, -1, 0, -1, -1>, Eigen::Matrix<int, -1, -1, 0, -1, -1> >(Eigen::MatrixBase<Eigen::Matrix<float, 3, 1, 0, 3, 1> > const&, Eigen::MatrixBase<Eigen::Matrix<float, 3, 1, 0, 3, 1> > const&, Eigen::MatrixBase<Eigen::Matrix<double, -1, -1, 0, -1, -1> > const&, Eigen::MatrixBase<Eigen::Matrix<int, -1, -1, 0, -1, -1> > const&, std::vector<igl::Hit, std::allocator<igl::Hit> >&);
+ template bool igl::ray_mesh_intersect<Eigen::Matrix<float, 3, 1, 0, 3, 1>, Eigen::Matrix<float, 3, 1, 0, 3, 1>, Eigen::Matrix<double, -1, -1, 0, -1, -1>, Eigen::Matrix<int, -1, -1, 0, -1, -1> >(Eigen::MatrixBase<Eigen::Matrix<float, 3, 1, 0, 3, 1> > const&, Eigen::MatrixBase<Eigen::Matrix<float, 3, 1, 0, 3, 1> > const&, Eigen::MatrixBase<Eigen::Matrix<double, -1, -1, 0, -1, -1> > const&, Eigen::MatrixBase<Eigen::Matrix<int, -1, -1, 0, -1, -1> > const&, igl::Hit&);
+ template bool igl::ray_mesh_intersect<Eigen::Matrix<double, 1, 3, 1, 1, 3>, Eigen::Matrix<double, 1, 3, 1, 1, 3>, Eigen::Matrix<double, -1, -1, 0, -1, -1>, Eigen::Block<Eigen::Matrix<int, -1, -1, 0, -1, -1> const, 1, -1, false> >(Eigen::MatrixBase<Eigen::Matrix<double, 1, 3, 1, 1, 3> > const&, Eigen::MatrixBase<Eigen::Matrix<double, 1, 3, 1, 1, 3> > const&, Eigen::MatrixBase<Eigen::Matrix<double, -1, -1, 0, -1, -1> > const&, Eigen::MatrixBase<Eigen::Block<Eigen::Matrix<int, -1, -1, 0, -1, -1> const, 1, -1, false> > const&, igl::Hit&);
++template bool igl::ray_mesh_intersect<Eigen::Matrix<double, 1, 3, 1, 1, 3>, Eigen::Matrix<double, 1, 3, 1, 1, 3>, Eigen::Matrix<double, -1, -1, 0, -1, -1>, Eigen::Block<Eigen::Matrix<int, -1, -1, 0, -1, -1> const, 1, -1, false> >(Eigen::MatrixBase<Eigen::Matrix<double, 1, 3, 1, 1, 3> > const&, Eigen::MatrixBase<Eigen::Matrix<double, 1, 3, 1, 1, 3> > const&, Eigen::MatrixBase<Eigen::Matrix<double, -1, -1, 0, -1, -1> > const&, Eigen::MatrixBase<Eigen::Block<Eigen::Matrix<int, -1, -1, 0, -1, -1> const, 1, -1, false> > const&, std::vector<igl::Hit, std::allocator<igl::Hit> >&);
+ #endif