Эх сурвалжийг харах

Merge remote-tracking branch 'origin/dev' into external

Former-commit-id: 9d1dab22c1ee507f21c54c4c6e50dd728c17c8ff
Jérémie Dumas 6 жил өмнө
parent
commit
956c94dfad

+ 8 - 0
.github/issue_template.md

@@ -0,0 +1,8 @@
+[Describe your issue]
+
+#### Check all that apply (change to `[x]`)
+- [ ] Windows
+- [ ] Mac OS X
+- [ ] Linux
+
+See <https://libigl.github.io/CONTRIBUTING/#bugreport> for more tips.

+ 8 - 0
.github/pull_request_template.md

@@ -0,0 +1,8 @@
+[Describe your changes and what you've already done to test it.]
+
+#### Check all that apply (change to `[x]`)
+- [ ] All changes meet [libigl style-guidelines](https://libigl.github.io/style-guidelines/).
+- [ ] Adds new .cpp file.
+- [ ] Adds corresponding unit test.
+- [ ] Adds corresponding python binding.
+- [ ] This is a minor change.

+ 2 - 0
.gitignore

@@ -94,3 +94,5 @@ tutorial/cmake-build-debug
 site/
 *.egg-info/
 .vs/
+tutorial/build
+build

+ 27 - 18
CMakeLists.txt

@@ -7,23 +7,26 @@ option(LIBIGL_BUILD_TUTORIALS  "Build libigl tutorial"         OFF)
 option(LIBIGL_BUILD_PYTHON     "Build libigl python bindings"  OFF)
 
 
-### Available options ###
-option(LIBIGL_USE_STATIC_LIBRARY     "Use libigl as static library" ON)
-option(LIBIGL_WITH_CGAL              "Use CGAL"           ON)
-option(LIBIGL_WITH_COMISO            "Use CoMiso"         ON)
-option(LIBIGL_WITH_CORK              "Use Cork"           OFF)
-option(LIBIGL_WITH_EMBREE            "Use Embree"         OFF)
-option(LIBIGL_WITH_MATLAB            "Use Matlab"         OFF)
-option(LIBIGL_WITH_MOSEK             "Use MOSEK"          OFF)
-option(LIBIGL_WITH_OPENGL            "Use OpenGL"         ${LIBIGL_BUILD_TUTORIALS})
-option(LIBIGL_WITH_OPENGL_GLFW       "Use GLFW"           ${LIBIGL_BUILD_TUTORIALS})
-option(LIBIGL_WITH_OPENGL_GLFW_IMGUI "Use ImGui"          ${LIBIGL_BUILD_TUTORIALS})
-option(LIBIGL_WITH_PNG               "Use PNG"            ON)
-option(LIBIGL_WITH_TETGEN            "Use Tetgen"         ON)
-option(LIBIGL_WITH_TRIANGLE          "Use Triangle"       ON)
-option(LIBIGL_WITH_VIEWER            "Use OpenGL viewer"  ${LIBIGL_BUILD_TUTORIALS})
-option(LIBIGL_WITH_XML               "Use XML"            ON)
-option(LIBIGL_WITH_PYTHON            "Use Python"         ${LIBIGL_BUILD_PYTHON})
+# USE_STATIC_LIBRARY speeds up the generation of multiple binaries, 
+# at the cost of a longer initial compilation time
+# (by default, static build is off since libigl is a header-only library)
+option(LIBIGL_USE_STATIC_LIBRARY "Use LibIGL as static library" ON)
+
+# All dependencies that are downloaded as cmake projects and tested on the auto-builds are ON
+# (by default, all build options are off)
+option(LIBIGL_WITH_CGAL              "Use CGAL"                     ON)
+option(LIBIGL_WITH_COMISO            "Use CoMiso"                   ON)
+option(LIBIGL_WITH_EMBREE            "Use Embree"                   ON)
+option(LIBIGL_WITH_OPENGL            "Use OpenGL"                   ON)
+option(LIBIGL_WITH_OPENGL_GLFW       "Use GLFW"                     ON)
+option(LIBIGL_WITH_OPENGL_GLFW_IMGUI "Use ImGui"                    ON)
+option(LIBIGL_WITH_PNG               "Use PNG"                      ON)
+option(LIBIGL_WITH_TETGEN            "Use Tetgen"                   ON)
+option(LIBIGL_WITH_TRIANGLE          "Use Triangle"                 ON)
+option(LIBIGL_WITH_VIEWER            "Use OpenGL viewer"            ON)
+option(LIBIGL_WITH_XML               "Use XML"                      ON)
+option(LIBIGL_WITH_PYTHON            "Use Python"                   ${LIBIGL_BUILD_PYTHON})
+### End
 
 # These ensure that lib*.a are placed in the directory where `cmake
 # ../optional/` was issued.
@@ -37,8 +40,14 @@ list(APPEND CMAKE_MODULE_PATH ${CMAKE_CURRENT_LIST_DIR}/cmake)
 ### Adding libIGL: choose the path to your local copy libIGL
 include(libigl)
 
-
 if(LIBIGL_BUILD_TUTORIALS)
 	add_subdirectory(tutorial)
 endif()
 
+if(LIBIGL_BUILD_TESTS)
+	add_subdirectory(tests)
+endif()
+
+if(LIBIGL_WITH_PYTHON)
+	add_subdirectory(python)
+endif()

+ 1 - 1
cmake/LibiglDownloadExternal.cmake

@@ -153,7 +153,7 @@ function(igl_download_test_data)
 		DOWNLOAD_DIR ${LIBIGL_EXTERNAL}/.cache/test_data
 		QUIET
 		GIT_REPOSITORY https://github.com/libigl/libigl-tests-data
-		GIT_TAG        bdb158c9695d5932bb6fc1cde078d8210bb13436
+		GIT_TAG        c81bb3b3db4cfd78bac6d359d845c45bc1059c9a
 		${LIBIGL_EXTRA_OPTIONS}
 	)
 endfunction()

+ 23 - 18
cmake/libigl.cmake

@@ -19,22 +19,23 @@ if(APPLE)
 endif()
 
 ### Available options ###
-option(LIBIGL_USE_STATIC_LIBRARY     "Use libigl as static library" ON)
-option(LIBIGL_WITH_CGAL              "Use CGAL"           ON)
-option(LIBIGL_WITH_COMISO            "Use CoMiso"         ON)
-option(LIBIGL_WITH_CORK              "Use Cork"           OFF)
-option(LIBIGL_WITH_EMBREE            "Use Embree"         OFF)
-option(LIBIGL_WITH_MATLAB            "Use Matlab"         OFF)
-option(LIBIGL_WITH_MOSEK             "Use MOSEK"          OFF)
-option(LIBIGL_WITH_OPENGL            "Use OpenGL"         OFF)
-option(LIBIGL_WITH_OPENGL_GLFW       "Use GLFW"           OFF)
-option(LIBIGL_WITH_OPENGL_GLFW_IMGUI "Use ImGui"          OFF)
-option(LIBIGL_WITH_PNG               "Use PNG"            ON)
-option(LIBIGL_WITH_TETGEN            "Use Tetgen"         ON)
-option(LIBIGL_WITH_TRIANGLE          "Use Triangle"       ON)
-option(LIBIGL_WITH_VIEWER            "Use OpenGL viewer"  OFF)
-option(LIBIGL_WITH_XML               "Use XML"            ON)
-option(LIBIGL_WITH_PYTHON            "Use Python"         OFF)
+option(LIBIGL_USE_STATIC_LIBRARY     "Use libigl as static library" OFF)
+option(LIBIGL_WITH_CGAL              "Use CGAL"                     OFF)
+option(LIBIGL_WITH_COMISO            "Use CoMiso"                   OFF)
+option(LIBIGL_WITH_CORK              "Use Cork"                     OFF)
+option(LIBIGL_WITH_EMBREE            "Use Embree"                   OFF)
+option(LIBIGL_WITH_MATLAB            "Use Matlab"                   OFF)
+option(LIBIGL_WITH_MOSEK             "Use MOSEK"                    OFF)
+option(LIBIGL_WITH_OPENGL            "Use OpenGL"                   OFF)
+option(LIBIGL_WITH_OPENGL_GLFW       "Use GLFW"                     OFF)
+option(LIBIGL_WITH_OPENGL_GLFW_IMGUI "Use ImGui"                    OFF)
+option(LIBIGL_WITH_PNG               "Use PNG"                      OFF)
+option(LIBIGL_WITH_TETGEN            "Use Tetgen"                   OFF)
+option(LIBIGL_WITH_TRIANGLE          "Use Triangle"                 OFF)
+option(LIBIGL_WITH_VIEWER            "Use OpenGL viewer"            OFF)
+option(LIBIGL_WITH_XML               "Use XML"                      OFF)
+option(LIBIGL_WITH_PYTHON            "Use Python"                   OFF)
+option(LIBIGL_WITHOUT_COPYLEFT       "Disable Copyleft libraries"   OFF)
 
 if(LIBIGL_WITH_VIEWER AND (NOT LIBIGL_WITH_OPENGL_GLFW OR NOT LIBIGL_WITH_OPENGL) )
   message(FATAL_ERROR "LIBIGL_WITH_VIEWER=ON requires LIBIGL_WITH_OPENGL_GLFW=ON and LIBIGL_WITH_OPENGL=ON")
@@ -136,8 +137,12 @@ function(compile_igl_module module_dir)
   endif()
   if(LIBIGL_USE_STATIC_LIBRARY)
     file(GLOB SOURCES_IGL_${module_name}
-      "${LIBIGL_SOURCE_DIR}/igl/${module_dir}/*.cpp"
-      "${LIBIGL_SOURCE_DIR}/igl/copyleft/${module_dir}/*.cpp")
+      "${LIBIGL_SOURCE_DIR}/igl/${module_dir}/*.cpp")
+    if(NOT LIBIGL_WITHOUT_COPYLEFT)
+      file(GLOB COPYLEFT_SOURCES_IGL_${module_name}
+        "${LIBIGL_SOURCE_DIR}/igl/copyleft/${module_dir}/*.cpp")
+      list(APPEND SOURCES_IGL_${module_name} ${COPYLEFT_SOURCES_IGL_${module_name}})
+    endif()
     add_library(${module_libname} STATIC ${SOURCES_IGL_${module_name}} ${ARGN})
     if(MSVC)
       target_compile_options(${module_libname} PRIVATE /w) # disable all warnings (not ideal but...)

+ 1 - 0
include/igl/setdiff.cpp

@@ -80,4 +80,5 @@ template void igl::setdiff<Eigen::Matrix<int, -1, 2, 0, -1, 2>, Eigen::Matrix<in
 template void igl::setdiff<Eigen::Matrix<int, -1, 1, 0, -1, 1>, Eigen::Matrix<int, -1, 1, 0, -1, 1>, Eigen::Matrix<int, -1, 1, 0, -1, 1>, Eigen::Matrix<int, -1, 1, 0, -1, 1> >(Eigen::DenseBase<Eigen::Matrix<int, -1, 1, 0, -1, 1> > const&, Eigen::DenseBase<Eigen::Matrix<int, -1, 1, 0, -1, 1> > const&, Eigen::PlainObjectBase<Eigen::Matrix<int, -1, 1, 0, -1, 1> >&, Eigen::PlainObjectBase<Eigen::Matrix<int, -1, 1, 0, -1, 1> >&);
 template void igl::setdiff<Eigen::Matrix<int, -1, 1, 0, -1, 1>, Eigen::Matrix<int, -1, -1, 0, -1, -1>, Eigen::Matrix<int, -1, 1, 0, -1, 1>, Eigen::Matrix<int, -1, 1, 0, -1, 1> >(Eigen::DenseBase<Eigen::Matrix<int, -1, 1, 0, -1, 1> > const&, Eigen::DenseBase<Eigen::Matrix<int, -1, -1, 0, -1, -1> > const&, Eigen::PlainObjectBase<Eigen::Matrix<int, -1, 1, 0, -1, 1> >&, Eigen::PlainObjectBase<Eigen::Matrix<int, -1, 1, 0, -1, 1> >&);
 template void igl::setdiff<Eigen::Matrix<int, -1, -1, 0, -1, -1>, Eigen::Matrix<int, -1, -1, 0, -1, -1>, Eigen::Matrix<int, -1, -1, 0, -1, -1>, Eigen::Matrix<int, -1, -1, 0, -1, -1> >(Eigen::DenseBase<Eigen::Matrix<int, -1, -1, 0, -1, -1> > const&, Eigen::DenseBase<Eigen::Matrix<int, -1, -1, 0, -1, -1> > const&, Eigen::PlainObjectBase<Eigen::Matrix<int, -1, -1, 0, -1, -1> >&, Eigen::PlainObjectBase<Eigen::Matrix<int, -1, -1, 0, -1, -1> >&);
+template void igl::setdiff<Eigen::Matrix<int, -1, -1, 0, -1, -1>, Eigen::Matrix<int, -1, -1, 0, -1, -1>, Eigen::Matrix<int, -1, 1, 0, -1, 1>, Eigen::Matrix<int, -1, 1, 0, -1, 1> >(Eigen::DenseBase<Eigen::Matrix<int, -1, -1, 0, -1, -1> > const&, Eigen::DenseBase<Eigen::Matrix<int, -1, -1, 0, -1, -1> > const&, Eigen::PlainObjectBase<Eigen::Matrix<int, -1, 1, 0, -1, 1> >&, Eigen::PlainObjectBase<Eigen::Matrix<int, -1, 1, 0, -1, 1> >&);
 #endif

+ 1 - 0
include/igl/setxor.cpp

@@ -29,4 +29,5 @@ IGL_INLINE void igl::setxor(
 // Explicit template instantiation
 // generated by autoexplicit.sh
 template void igl::setxor<Eigen::Matrix<int, -1, 2, 0, -1, 2>, Eigen::Matrix<int, -1, 2, 0, -1, 2>, Eigen::Matrix<int, -1, 1, 0, -1, 1>, Eigen::Matrix<int, -1, 1, 0, -1, 1>, Eigen::Matrix<int, -1, 1, 0, -1, 1> >(Eigen::DenseBase<Eigen::Matrix<int, -1, 2, 0, -1, 2> > const&, Eigen::DenseBase<Eigen::Matrix<int, -1, 2, 0, -1, 2> > const&, Eigen::PlainObjectBase<Eigen::Matrix<int, -1, 1, 0, -1, 1> >&, Eigen::PlainObjectBase<Eigen::Matrix<int, -1, 1, 0, -1, 1> >&, Eigen::PlainObjectBase<Eigen::Matrix<int, -1, 1, 0, -1, 1> >&);
+template void igl::setxor<Eigen::Matrix<int, -1, -1, 0, -1, -1>, Eigen::Matrix<int, -1, -1, 0, -1, -1>, Eigen::Matrix<int, -1, 1, 0, -1, 1>, Eigen::Matrix<int, -1, 1, 0, -1, 1>, Eigen::Matrix<int, -1, 1, 0, -1, 1> >(Eigen::DenseBase<Eigen::Matrix<int, -1, -1, 0, -1, -1> > const&, Eigen::DenseBase<Eigen::Matrix<int, -1, -1, 0, -1, -1> > const&, Eigen::PlainObjectBase<Eigen::Matrix<int, -1, 1, 0, -1, 1> >&, Eigen::PlainObjectBase<Eigen::Matrix<int, -1, 1, 0, -1, 1> >&, Eigen::PlainObjectBase<Eigen::Matrix<int, -1, 1, 0, -1, 1> >&);
 #endif

+ 1 - 20
python/CMakeLists.txt

@@ -23,25 +23,6 @@ if(UNIX)
   endif()
 endif()
 
-## include libigl
-option(LIBIGL_USE_STATIC_LIBRARY "Use LibIGL as static library" OFF)
-option(LIBIGL_WITH_OPENGL            "Use viewer"         ON)
-option(LIBIGL_WITH_OPENGL_GLFW       "Use GLFW"           ON)
-option(LIBIGL_WITH_OPENGL_GLFW_IMGUI "Use ImGui"          OFF)
-option(LIBIGL_WITH_CGAL              "Use CGAL"           OFF)
-option(LIBIGL_WITH_BOOLEAN           "Use Cork boolean"   OFF)
-option(LIBIGL_WITH_COMISO            "Use CoMiso"         ON)
-option(LIBIGL_WITH_EMBREE            "Use Embree"         ON)
-option(LIBIGL_WITH_LIM               "Use LIM"            ON)
-option(LIBIGL_WITH_MATLAB            "Use Matlab"         OFF)
-option(LIBIGL_WITH_MOSEK             "Use MOSEK"          OFF)
-option(LIBIGL_WITH_PNG               "Use PNG"            ON)
-option(LIBIGL_WITH_TETGEN            "Use Tetgen"         ON)
-option(LIBIGL_WITH_TRIANGLE          "Use Triangle"       ON)
-option(LIBIGL_WITH_XML               "Use XML"            ON)
-option(LIBIGL_WITH_PYTHON            "Use Python"         ON)
-option(LIBIGL_WITH_COPYLEFT          "Use Copyleft"       ON)
-
 ## libigl
 if(NOT TARGET igl::core)
   list(APPEND CMAKE_MODULE_PATH "${PROJECT_SOURCE_DIR}/../cmake")
@@ -100,7 +81,7 @@ if(LIBIGL_WITH_CGAL)
   target_link_libraries(pyigl PUBLIC igl::cgal)
 endif()
 
-if(LIBIGL_WITH_COPYLEFT)
+if(NOT LIBIGL_WITHOUT_COPYLEFT)
   target_sources(pyigl PRIVATE "modules/copyleft/py_igl_copyleft.cpp")
   target_compile_definitions(pyigl PUBLIC -DPY_COPYLEFT)
 endif()

+ 7 - 31
tests/CMakeLists.txt

@@ -1,39 +1,15 @@
 cmake_minimum_required(VERSION 3.1)
-project(libigl_tutorials)
-message(STATUS "CMAKE_C_COMPILER: ${CMAKE_C_COMPILER}")
-message(STATUS "CMAKE_CXX_COMPILER: ${CMAKE_CXX_COMPILER}")
+project(libigl_tests)
 
 ### conditionally compile certain modules depending on libraries found on the system
 list(APPEND CMAKE_MODULE_PATH ${PROJECT_SOURCE_DIR}/../cmake)
-#find_package(CGAL QUIET COMPONENTS Core)
-find_package(MATLAB QUIET)
-find_package(MOSEK)
-
-### libIGL options: choose between header only and compiled static library
-option(LIBIGL_USE_STATIC_LIBRARY "Use LibIGL as static library" ON)
-option(LIBIGL_WITH_EMBREE      "Use Embree"         OFF)
-
-### libIGL options: choose your dependencies (by default everything is OFF, in this example we need the viewer)
-option(LIBIGL_USE_STATIC_LIBRARY     "Use libigl as static library" ON)
-option(LIBIGL_WITH_CGAL              "Use CGAL"           OFF)
-option(LIBIGL_WITH_COMISO            "Use CoMiso"         OFF)
-option(LIBIGL_WITH_CORK              "Use Cork"           OFF)
-option(LIBIGL_WITH_EMBREE            "Use Embree"         OFF)
-option(LIBIGL_WITH_MATLAB            "Use Matlab"         OFF)
-option(LIBIGL_WITH_MOSEK             "Use MOSEK"          OFF)
-option(LIBIGL_WITH_OPENGL            "Use OpenGL"         OFF)
-option(LIBIGL_WITH_OPENGL_GLFW       "Use GLFW"           OFF)
-option(LIBIGL_WITH_OPENGL_GLFW_IMGUI "Use ImGui"          OFF)
-option(LIBIGL_WITH_PNG               "Use PNG"            OFF)
-option(LIBIGL_WITH_TETGEN            "Use Tetgen"         OFF)
-option(LIBIGL_WITH_TRIANGLE          "Use Triangle"       OFF)
-option(LIBIGL_WITH_VIEWER            "Use OpenGL viewer"  OFF)
-option(LIBIGL_WITH_XML               "Use XML"            OFF)
-option(LIBIGL_WITH_PYTHON            "Use Python"         OFF)
-### End
 
 ### Adding libIGL: choose the path to your local copy libIGL
-include(libigl)
+if(NOT TARGET igl_common)
+  include(libigl)
+else()
+  include(LibiglDownloadExternal)
+endif()
 
 ### Download data
 igl_download_test_data()
@@ -42,7 +18,7 @@ set(IGL_TEST_DATA ${LIBIGL_EXTERNAL}/../tests/data)
 ### Download Google unit test framework.
 igl_download_googletest()
 
-SET(TEST_ROOT_DIR ${CMAKE_CURRENT_LIST_DIR}) 
+SET(TEST_ROOT_DIR ${CMAKE_CURRENT_LIST_DIR})
 INCLUDE_DIRECTORIES(${TEST_ROOT_DIR})
 
 # Set TEST_DIR definition

+ 0 - 17
tutorial/CMakeLists.txt

@@ -6,23 +6,6 @@ message(STATUS "CMAKE_CXX_COMPILER: ${CMAKE_CXX_COMPILER}")
 ### conditionally compile certain modules depending on libraries found on the system
 list(APPEND CMAKE_MODULE_PATH ${PROJECT_SOURCE_DIR}/../cmake)
 
-### libIGL options: choose between header only and compiled static library
-option(LIBIGL_USE_STATIC_LIBRARY "Use LibIGL as static library" ON)
-option(LIBIGL_WITH_EMBREE      "Use Embree"         ON)
-
-### libIGL options: choose your dependencies (by default everything is OFF, in this example we need the viewer)
-option(LIBIGL_WITH_CGAL              "Use CGAL"          ON)
-option(LIBIGL_WITH_CORK              "Use CORK"          OFF)
-option(LIBIGL_WITH_MATLAB            "Use Matlab"        OFF)
-option(LIBIGL_WITH_MOSEK             "Use MOSEK"         OFF)
-option(LIBIGL_WITH_OPENGL            "Use OpenGL"        ON)
-option(LIBIGL_WITH_OPENGL_GLFW       "Use GLFW"          ON)
-option(LIBIGL_WITH_OPENGL_GLFW_IMGUI "Use ImGui"         ON)
-option(LIBIGL_WITH_VIEWER            "Use OpenGL viewer" ON)
-### End
-
-
-
 ### Adding libIGL: choose the path to your local copy libIGL
 if(NOT TARGET igl_common)
   include(libigl)