Browse Source

cgal/boolean cmake fix
viewer cmake fix


Former-commit-id: 2b6b43eb7b4a6239f8f8fc3ee020b27a40004196

Romain Prévost 9 years ago
parent
commit
e5e4bb0fe0
5 changed files with 195 additions and 226 deletions
  1. 16 14
      optional/CMakeLists.txt
  2. 15 17
      python/CMakeLists.txt
  3. 151 180
      shared/cmake/CMakeLists.txt
  4. 1 1
      tutorial/609_Boolean/main.cpp
  5. 12 14
      tutorial/CMakeLists.txt

+ 16 - 14
optional/CMakeLists.txt

@@ -15,20 +15,22 @@ endif()
 
 
 option(LIBIGL_USE_STATIC_LIBRARY "Use LibIGL as static library" ON)
-option(LIBIGL_WITH_VIEWER      "Use Nanogui Viewer" ON)
-option(LIBIGL_WITH_BBW         "Use BBW"            ON)
-option(LIBIGL_WITH_EMBREE      "Use Embree"         ON)
-option(LIBIGL_WITH_OPENGL      "Use OpenGL"         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_XML         "Use XML"            ON)
-option(LIBIGL_WITH_LIM         "Use LIM"            ON)
-option(LIBIGL_WITH_COMISO      "Use CoMiso"         ON)
-option(LIBIGL_WITH_BOOLEAN     "Use Cork boolean"   OFF)
-option(LIBIGL_WITH_MATLAB      "Use Matlab"         OFF)
-option(LIBIGL_WITH_MOSEK       "Use MOSEK"          OFF)
-option(LIBIGL_WITH_CGAL        "Use CGAL"           OFF)
+
+option(LIBIGL_WITH_VIEWER           "Use OpenGL viewer"  ON)
+option(LIBIGL_WITH_NANOGUI          "Use Nanogui menu"   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_BBW              "Use BBW"            ON)
+option(LIBIGL_WITH_OPENGL_AND_PNG   "Use OpenGL"         ON)
+option(LIBIGL_WITH_TETGEN           "Use Tetgen"         ON)
+option(LIBIGL_WITH_TRIANGLE         "Use Triangle"       ON)
+option(LIBIGL_WITH_XML              "Use XML"            ON)
+
 if(LIBIGL_WITH_CGAL) # Do not remove or move this block, cgal strange build system fails without it
   find_package(CGAL REQUIRED)
   set(CGAL_DONT_OVERRIDE_CMAKE_FLAGS TRUE CACHE BOOL "CGAL's CMAKE Setup is super annoying ")

+ 15 - 17
python/CMakeLists.txt

@@ -52,23 +52,21 @@ include_directories(${PROJECT_SOURCE_DIR}/../external/pybind11/include)
 
 ## include libigl
 option(LIBIGL_USE_STATIC_LIBRARY "Use LibIGL as static library" OFF)
-option(LIBIGL_WITH_GLFW        "Use GLFW"           ON)
-option(LIBIGL_WITH_VIEWER      "Use OpenGL viewer"  ON)
-option(LIBIGL_WITH_NANOGUI     "Use Nanogui menu"   OFF)
-option(LIBIGL_WITH_BBW         "Use BBW"            ON)
-option(LIBIGL_WITH_EMBREE      "Use Embree"         OFF)
-option(LIBIGL_WITH_OPENGL      "Use OpenGL"         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_XML         "Use XML"            ON)
-option(LIBIGL_WITH_LIM         "Use LIM"            ON)
-option(LIBIGL_WITH_COMISO      "Use CoMiso"         ON)
-option(LIBIGL_WITH_BOOLEAN     "Use Cork boolean"   OFF)
-option(LIBIGL_WITH_MATLAB      "Use Matlab"         OFF)
-option(LIBIGL_WITH_MOSEK       "Use MOSEK"          OFF)
-
-option(LIBIGL_WITH_CGAL        "Use CGAL"           OFF)
+option(LIBIGL_WITH_VIEWER           "Use OpenGL viewer"  ON)
+option(LIBIGL_WITH_NANOGUI          "Use Nanogui menu"   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"         OFF)
+option(LIBIGL_WITH_LIM              "Use LIM"            ON)
+option(LIBIGL_WITH_MATLAB           "Use Matlab"         OFF)
+option(LIBIGL_WITH_MOSEK            "Use MOSEK"          OFF)
+option(LIBIGL_WITH_BBW              "Use BBW"            ON)
+option(LIBIGL_WITH_OPENGL_AND_PNG   "Use OpenGL"         ON)
+option(LIBIGL_WITH_TETGEN           "Use Tetgen"         ON)
+option(LIBIGL_WITH_TRIANGLE         "Use Triangle"       ON)
+option(LIBIGL_WITH_XML              "Use XML"            ON)
+
 if(LIBIGL_WITH_CGAL) # Do not remove or move this block, cgal strange build system fails without it
   find_package(CGAL REQUIRED)
   set(CGAL_DONT_OVERRIDE_CMAKE_FLAGS TRUE CACHE BOOL "CGAL's CMAKE Setup is super annoying ")

+ 151 - 180
shared/cmake/CMakeLists.txt

@@ -2,43 +2,28 @@ cmake_minimum_required(VERSION 2.8.12)
 project(libigl)
 
 ### Available options ###
-option(LIBIGL_USE_STATIC_LIBRARY "Use libIGL as static library" OFF)
-option(LIBIGL_WITH_VIEWER      "Use OpenGL viewer"  OFF)
-option(LIBIGL_WITH_NANOGUI     "Use Nanogui menu"   OFF)
-option(LIBIGL_WITH_GLFW        "Use GLFW"           OFF)
-option(LIBIGL_WITH_BBW         "Use BBW"            OFF)
-option(LIBIGL_WITH_BOOLEAN     "Use Cork boolean"   OFF)
-option(LIBIGL_WITH_CGAL        "Use CGAL"           OFF)
-option(LIBIGL_WITH_COMISO      "Use CoMiso"         OFF)
-option(LIBIGL_WITH_EMBREE      "Use Embree"         OFF)
-option(LIBIGL_WITH_LIM         "Use LIM"            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_PNG         "Use PNG"            OFF)
-option(LIBIGL_WITH_TETGEN      "Use Tetgen"         OFF)
-option(LIBIGL_WITH_TRIANGLE    "Use Triangle"       OFF)
-option(LIBIGL_WITH_VIEWER      "Use Nanogui Viewer" OFF)
-option(LIBIGL_WITH_XML         "Use XML"            OFF)
-
-if(UNIX) # GLEW should not be needed on Linux
-  option(LIBIGL_WITH_GLEW        "Use Glew (not needed on Mac)" ON)
-else()
-  option(LIBIGL_WITH_GLEW        "Use Glew (not needed on Mac)" OFF)
-endif()
+option(LIBIGL_USE_STATIC_LIBRARY    "Use libIGL as static library" OFF)
+option(LIBIGL_WITH_VIEWER           "Use OpenGL viewer"  OFF)
+option(LIBIGL_WITH_NANOGUI          "Use Nanogui menu"   OFF)
+option(LIBIGL_WITH_CGAL             "Use CGAL"           OFF)
+option(LIBIGL_WITH_BOOLEAN          "Use Cork boolean"   OFF)
+option(LIBIGL_WITH_COMISO           "Use CoMiso"         OFF)
+option(LIBIGL_WITH_EMBREE           "Use Embree"         OFF)
+option(LIBIGL_WITH_LIM              "Use LIM"            OFF)
+option(LIBIGL_WITH_MATLAB           "Use Matlab"         OFF)
+option(LIBIGL_WITH_MOSEK            "Use MOSEK"          OFF)
+option(LIBIGL_WITH_BBW              "Use BBW"            OFF)
+option(LIBIGL_WITH_OPENGL_AND_PNG   "Use OpenGL"         OFF)
+option(LIBIGL_WITH_TETGEN           "Use Tetgen"         OFF)
+option(LIBIGL_WITH_TRIANGLE         "Use Triangle"       OFF)
+option(LIBIGL_WITH_XML              "Use XML"            OFF)
 
-# we should check the interdepencies between viewer, nanogui, glfw, opengl
-# and maybe instead of four booleans use a single enum
 
 
 ### Compilation configuration ### (do we need these because this pollutes subdirectories build?)
 set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -std=c++11")
 set(CMAKE_MODULE_PATH "${CMAKE_CURRENT_SOURCE_DIR}")
 
-# do we need any of these?
-#set(CMAKE_RUNTIME_OUTPUT_DIRECTORY "${CMAKE_BINARY_DIR}")
-#set(CMAKE_ARCHIVE_OUTPUT_DIRECTORY "${CMAKE_BINARY_DIR}")
-#set(CMAKE_LIBRARY_OUTPUT_DIRECTORY "${CMAKE_BINARY_DIR}")
 #if(MSVC)
 #  set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} /MP /bigobj") ### Enable parallel compilation for Visual Studio
 #endif()
@@ -127,68 +112,12 @@ if(LIBIGL_WITH_BBW)
     CompileIGL_Module("bbw")
     if(LIBIGL_WITH_MOSEK)
       target_include_directories(iglbbw PRIVATE ${MOSEK_INCLUDE_DIR})
-      target_link_libraries(iglbbw PRIVATE ${MOSEK_LIBRARIES})
     else()
       target_compile_definitions(iglbbw PRIVATE -DIGL_NO_MOSEK)
     endif()
   endif()
 endif()
 
-#Compile CoMISo
-# NOTE: this cmakefile works only with the
-# comiso available here: https://github.com/libigl/CoMISo
-if(LIBIGL_WITH_COMISO)
-  set(COMISO_DIR "${LIBIGL_EXTERNAL}/CoMISo")
-
-  set(COMISO_INCLUDE_DIRS
-    "${COMISO_DIR}/ext/gmm-4.2/include"
-    "${COMISO_DIR}/../")
-
-  list(APPEND LIBIGL_INCLUDE_DIRS ${COMISO_INCLUDE_DIRS})
-
-  #add_definitions(-DINCLUDE_TEMPLATES) (what need this?)
-  list(APPEND LIBIGL_DEFINITIONS "-DINCLUDE_TEMPLATES")
-
-  if(APPLE)
-    find_library(accelerate_library Accelerate)
-    list(APPEND LIBIGL_EXTRA_LIBRARIES "CoMISo" ${accelerate_library})
-  elseif(UNIX)
-    find_package(BLAS REQUIRED)
-    list(APPEND LIBIGL_EXTRA_LIBRARIES "CoMISo" ${BLAS_LIBRARIES})
-  endif(APPLE)
-
-  if(MSVC)
-    set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} /D_SCL_SECURE_NO_DEPRECATE")
-    #link_directories("${COMISO_ROOT}/CoMISo/ext/OpenBLAS-v0.2.14-Win64-int64/lib/")
-    list(APPEND LIBIGL_EXTRA_LIBRARIES "CoMISo" "${COMISO_DIR}/ext/OpenBLAS-v0.2.14-Win64-int64/lib/libopenblas.dll.a.lib")
-  endif(MSVC)
-
-  add_subdirectory("${COMISO_DIR}" "CoMISo")
-
-  if(MSVC)
-    # Copy the dll
-    add_custom_target(Copy-CoMISo-DLL        # Adds a post-build event to MyTest
-    COMMAND ${CMAKE_COMMAND} -E copy_if_different
-        "${COMISO_DIR}/ext/OpenBLAS-v0.2.14-Win64-int64/bin/libopenblas.dll"
-        "${CMAKE_CURRENT_BINARY_DIR}/libopenblas.dll"
-    COMMAND ${CMAKE_COMMAND} -E copy_if_different
-        "${COMISO_DIR}/ext/OpenBLAS-v0.2.14-Win64-int64/bin/libgcc_s_seh-1.dll"
-        "${CMAKE_CURRENT_BINARY_DIR}/libgcc_s_seh-1.dll"
-    COMMAND ${CMAKE_COMMAND} -E copy_if_different
-        "${COMISO_DIR}/ext/OpenBLAS-v0.2.14-Win64-int64/bin/libgfortran-3.dll"
-        "${CMAKE_CURRENT_BINARY_DIR}/libgfortran-3.dll"
-    COMMAND ${CMAKE_COMMAND} -E copy_if_different
-        "${COMISO_DIR}/ext/OpenBLAS-v0.2.14-Win64-int64/bin/libquadmath-0.dll"
-        "${CMAKE_CURRENT_BINARY_DIR}/libquadmath-0.dll")
-  endif(MSVC)
-
-  if(LIBIGL_USE_STATIC_LIBRARY)
-    CompileIGL_Module_Copyleft("comiso")
-    target_include_directories(iglcomiso PRIVATE ${COMISO_INCLUDE_DIRS})
-    target_compile_definitions(iglcomiso PRIVATE -DINCLUDE_TEMPLATES)
-  endif()
-endif()
-
 ### Compile the embree part ###
 if(LIBIGL_WITH_EMBREE)
   set(EMBREE_DIR "${LIBIGL_EXTERNAL}/embree")
@@ -239,30 +168,6 @@ if(LIBIGL_WITH_MATLAB)
   endif()
 endif()
 
-
-### Compile the opengl and png parts ###
-if(LIBIGL_WITH_OPENGL)
-  if(LIBIGL_USE_STATIC_LIBRARY)
-    CompileIGL_Module("opengl")
-    CompileIGL_Module("opengl2")
-    if(NOT APPLE)
-      target_include_directories(iglopengl2 PRIVATE "${LIBIGL_EXTERNAL}/nanogui/ext/glew/include")
-    endif()
-  endif()
-
-  if(LIBIGL_WITH_PNG)
-    set(STB_IMAGE_DIR "${LIBIGL_EXTERNAL}/stb_image")
-    add_subdirectory("${STB_IMAGE_DIR}" "stb_image")
-    list(APPEND LIBIGL_INCLUDE_DIRS ${STB_IMAGE_DIR})
-    list(APPEND LIBIGL_EXTRA_LIBRARIES "stb_image")
-
-    if(LIBIGL_USE_STATIC_LIBRARY)
-      CompileIGL_Module("png")
-      target_include_directories(iglpng PRIVATE ${STB_IMAGE_DIR})
-    endif()
-  endif()
-endif()
-
 ### Compile the tetgen part ###
 if(LIBIGL_WITH_TETGEN)
   set(TETGEN_DIR "${LIBIGL_EXTERNAL}/tetgen")
@@ -289,80 +194,128 @@ if(LIBIGL_WITH_TRIANGLE)
   endif()
 endif()
 
-### Compile nanogui and enables bar in the Viewer
-if(LIBIGL_WITH_NANOGUI)
-  list(APPEND LIBIGL_DEFINITIONS "-DIGL_VIEWER_WITH_NANOGUI")
-
+### Compile the viewer ###
+if(LIBIGL_WITH_VIEWER)
   set(NANOGUI_DIR "${LIBIGL_EXTERNAL}/nanogui")
-  set(NANOGUI_INCLUDE_DIRS
-    "${NANOGUI_DIR}/include"
-    "${NANOGUI_DIR}/ext/nanovg/src"
-    "${NANOGUI_DIR}/ext/glfw/include")
-
-  option(NANOGUI_BUILD_PYTHON OFF)
-  option(NANOGUI_BUILD_EXAMPLE OFF)
-  option(NANOGUI_BUILD_SHARED  OFF)
-  add_subdirectory("${NANOGUI_DIR}" "nanogui")
-
-  list(APPEND LIBIGL_INCLUDE_DIRS ${NANOGUI_INCLUDE_DIRS})
-  list(APPEND LIBIGL_EXTRA_LIBRARIES "nanogui" ${NANOGUI_EXTRA_LIBS})
-
-# all this opengl things are already listed with nanogui
-  #if (APPLE)
-  #  list(APPEND LIBIGL_EXTRA_LIBRARIES "-framework OpenGL" "-framework Cocoa" "-framework IOKit" "-framework CoreVideo" "glfw") #${GLFW_LIBRARIES})
-#endif()
-  #if (UNIX AND NOT APPLE)
-  #  list(APPEND LIBIGL_EXTRA_LIBRARIES ${GLFW_LIBRARIES})
-#endif()
-  #find_package(OpenGL REQUIRED)
-  #list(APPEND LIBIGL_EXTRA_LIBRARIES ${OPENGL_LIBRARIES})
-endif()
 
-if((LIBIGL_WITH_GLFW OR LIBIGL_WITH_VIEWER) AND NOT LIBIGL_WITH_NANOGUI)
-  set(GLFW_DIR "${LIBIGL_EXTERNAL}/nanogui/ext/glfw")
-  set(GLFW_BUILD_EXAMPLES OFF CACHE BOOL " " FORCE)
-  set(GLFW_BUILD_TESTS OFF CACHE BOOL " " FORCE)
-  set(GLFW_BUILD_DOCS OFF CACHE BOOL " " FORCE)
-  set(GLFW_BUILD_INSTALL OFF CACHE BOOL " " FORCE)
-  add_subdirectory("${GLFW_DIR}" "glfw")
-
-  list(APPEND LIBIGL_INCLUDE_DIRS "${GLFW_DIR}/include")
-  list(APPEND LIBIGL_EXTRA_LIBRARIES "glfw" ${GLFW_LIBRARIES})
-
-  # opengl libraries are already in glfw
-  #find_package(OpenGL REQUIRED)
-  #list(APPEND LIBIGL_EXTRA_LIBRARIES ${OPENGL_LIBRARIES})
-  #if (APPLE)
-  #  list(APPEND LIBIGL_EXTRA_LIBRARIES "-framework OpenGL" "-framework Cocoa" "-framework IOKit" "-framework CoreVideo" "glfw") #${GLFW_LIBRARIES})
-  #endif()
-  #if (UNIX AND NOT APPLE)
-  #  list(APPEND LIBIGL_EXTRA_LIBRARIES )
-  #endif()
+  if(LIBIGL_WITH_NANOGUI)
+    list(APPEND LIBIGL_DEFINITIONS "-DIGL_VIEWER_WITH_NANOGUI")
 
-endif()
+    option(NANOGUI_BUILD_PYTHON OFF)
+    option(NANOGUI_BUILD_EXAMPLE OFF)
+    option(NANOGUI_BUILD_SHARED  OFF)
+    add_subdirectory("${NANOGUI_DIR}" "nanogui")
+
+    set(VIEWER_INCLUDE_DIRS
+      "${NANOGUI_DIR}/include"
+      "${NANOGUI_DIR}/ext/nanovg/src"
+      "${NANOGUI_DIR}/ext/glfw/include")
+    set(VIEWER_LIBRARIES "nanogui" ${NANOGUI_EXTRA_LIBS})
+  else()
+    set(GLFW_BUILD_EXAMPLES OFF CACHE BOOL " " FORCE)
+    set(GLFW_BUILD_TESTS OFF CACHE BOOL " " FORCE)
+    set(GLFW_BUILD_DOCS OFF CACHE BOOL " " FORCE)
+    set(GLFW_BUILD_INSTALL OFF CACHE BOOL " " FORCE)
+    add_subdirectory("${NANOGUI_DIR}/ext/glfw" "glfw")
+
+    set(VIEWER_INCLUDE_DIRS "${NANOGUI_DIR}/ext/glfw/include")
+    set(VIEWER_LIBRARIES "glfw" ${GLFW_LIBRARIES})
+  endif()
+
+  ### GLEW for linux and windows
+  if(UNIX OR (WIN32 AND NOT LIBIGL_WITH_NANOGUI)) ### Compile glew if needed
+    add_library(glew STATIC "${NANOGUI_DIR}/ext/glew/src/glew.c")
+    target_include_directories(glew PRIVATE "${NANOGUI_DIR}/ext/glew/include")
+  endif()
+  if(UNIX OR WIN32)
+    list(APPEND VIEWER_INCLUDE_DIRS "${NANOGUI_DIR}/ext/glew/include")
+    list(APPEND VIEWER_LIBRARIES "glew")
+  endif()
+
+  list(APPEND LIBIGL_INCLUDE_DIRS ${VIEWER_INCLUDE_DIRS})
+  list(APPEND LIBIGL_EXTRA_LIBRARIES ${VIEWER_LIBRARIES})
 
-### Compile the viewer ###
-if(LIBIGL_WITH_VIEWER)
   if(LIBIGL_USE_STATIC_LIBRARY)
     CompileIGL_Module("viewer")
     if(LIBIGL_WITH_NANOGUI)
-      target_include_directories(iglviewer PRIVATE ${NANOGUI_INCLUDE_DIRS})
       target_compile_definitions(iglviewer PRIVATE -DIGL_VIEWER_WITH_NANOGUI)
-    else()
-      target_include_directories(iglviewer PRIVATE "${GLFW_DIR}/include")
     endif()
+    target_include_directories(iglviewer PRIVATE ${VIEWER_INCLUDE_DIRS})
   endif()
 endif()
 
-### Compile glew if needed
-if(LIBIGL_WITH_GLEW AND NOT WIN32)
-  set(GLEW_DIR "${LIBIGL_EXTERNAL}/nanogui/ext/glew")
-  list(APPEND LIBIGL_INCLUDE_DIRS "${GLEW_DIR}/include")
-  add_library(glew STATIC "${GLEW_DIR}/src/glew.c")
-  target_include_directories(glew PRIVATE "${GLEW_DIR}/include")
-  list(APPEND LIBIGL_EXTRA_LIBRARIES glew)
+### Compile the opengl and png parts ###
+if(LIBIGL_WITH_OPENGL_AND_PNG)
+  set(STB_IMAGE_DIR "${LIBIGL_EXTERNAL}/stb_image")
+  add_subdirectory("${STB_IMAGE_DIR}" "stb_image")
+  list(APPEND LIBIGL_INCLUDE_DIRS ${STB_IMAGE_DIR})
+  list(APPEND LIBIGL_EXTRA_LIBRARIES "stb_image")
+
+  if(LIBIGL_USE_STATIC_LIBRARY)
+    CompileIGL_Module("opengl")
+    CompileIGL_Module("opengl2")
+    if(NOT APPLE)
+      target_include_directories(iglopengl2 PRIVATE "${LIBIGL_EXTERNAL}/nanogui/ext/glew/include")
+    endif()
+    CompileIGL_Module("png")
+    target_include_directories(iglpng PRIVATE ${STB_IMAGE_DIR})
+  endif()
 endif()
 
+#Compile CoMISo
+# NOTE: this cmakefile works only with the
+# comiso available here: https://github.com/libigl/CoMISo
+if(LIBIGL_WITH_COMISO)
+  set(COMISO_DIR "${LIBIGL_EXTERNAL}/CoMISo")
+
+  set(COMISO_INCLUDE_DIRS
+    "${COMISO_DIR}/ext/gmm-4.2/include"
+    "${COMISO_DIR}/../")
+
+  list(APPEND LIBIGL_INCLUDE_DIRS ${COMISO_INCLUDE_DIRS})
+
+  #add_definitions(-DINCLUDE_TEMPLATES) (what need this?)
+  list(APPEND LIBIGL_DEFINITIONS "-DINCLUDE_TEMPLATES")
+
+  if(APPLE)
+    find_library(accelerate_library Accelerate)
+    list(APPEND LIBIGL_EXTRA_LIBRARIES "CoMISo" ${accelerate_library})
+  elseif(UNIX)
+    find_package(BLAS REQUIRED)
+    list(APPEND LIBIGL_EXTRA_LIBRARIES "CoMISo" ${BLAS_LIBRARIES})
+  endif(APPLE)
+
+  if(MSVC)
+    set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} /D_SCL_SECURE_NO_DEPRECATE")
+    #link_directories("${COMISO_ROOT}/CoMISo/ext/OpenBLAS-v0.2.14-Win64-int64/lib/")
+    list(APPEND LIBIGL_EXTRA_LIBRARIES "CoMISo" "${COMISO_DIR}/ext/OpenBLAS-v0.2.14-Win64-int64/lib/libopenblas.dll.a.lib")
+  endif(MSVC)
+
+  add_subdirectory("${COMISO_DIR}" "CoMISo")
+
+  if(MSVC)
+    # Copy the dll
+    add_custom_target(Copy-CoMISo-DLL        # Adds a post-build event to MyTest
+    COMMAND ${CMAKE_COMMAND} -E copy_if_different
+        "${COMISO_DIR}/ext/OpenBLAS-v0.2.14-Win64-int64/bin/libopenblas.dll"
+        "${CMAKE_CURRENT_BINARY_DIR}/libopenblas.dll"
+    COMMAND ${CMAKE_COMMAND} -E copy_if_different
+        "${COMISO_DIR}/ext/OpenBLAS-v0.2.14-Win64-int64/bin/libgcc_s_seh-1.dll"
+        "${CMAKE_CURRENT_BINARY_DIR}/libgcc_s_seh-1.dll"
+    COMMAND ${CMAKE_COMMAND} -E copy_if_different
+        "${COMISO_DIR}/ext/OpenBLAS-v0.2.14-Win64-int64/bin/libgfortran-3.dll"
+        "${CMAKE_CURRENT_BINARY_DIR}/libgfortran-3.dll"
+    COMMAND ${CMAKE_COMMAND} -E copy_if_different
+        "${COMISO_DIR}/ext/OpenBLAS-v0.2.14-Win64-int64/bin/libquadmath-0.dll"
+        "${CMAKE_CURRENT_BINARY_DIR}/libquadmath-0.dll")
+  endif(MSVC)
+
+  if(LIBIGL_USE_STATIC_LIBRARY)
+    CompileIGL_Module_Copyleft("comiso")
+    target_include_directories(iglcomiso PRIVATE ${COMISO_INCLUDE_DIRS})
+    target_compile_definitions(iglcomiso PRIVATE -DINCLUDE_TEMPLATES)
+  endif()
+endif()
 
 ### Compile the xml part ###
 if(LIBIGL_WITH_XML)
@@ -382,7 +335,6 @@ if(LIBIGL_WITH_XML)
   endif()
 endif()
 
-
 ### Compile the boolean and cgal parts ###
 if(LIBIGL_WITH_CGAL) # to be cleaned
   find_package(CGAL REQUIRED)
@@ -391,7 +343,6 @@ if(LIBIGL_WITH_CGAL) # to be cleaned
   #
   # find_package(BOOST REQUIRED)
 
-  message(${CGAL_USE_FILE})
   include(${CGAL_USE_FILE})
 
   list(APPEND LIBIGL_INCLUDE_DIRS ${CGAL_3RD_PARTY_INCLUDE_DIRS})
@@ -399,16 +350,36 @@ if(LIBIGL_WITH_CGAL) # to be cleaned
   list(APPEND LIBIGL_EXTRA_LIBRARIES ${CGAL_3RD_PARTY_LIBRARIES})
   list(APPEND LIBIGL_EXTRA_LIBRARIES ${CGAL_LIBRARIES})
 
-  if(LIBIGL_WITH_CORK)
-  else()
-    list(APPEND LIBIGL_DEFINITIONS "-DIGL_NO_CORK")
-  endif()
-
   if(LIBIGL_USE_STATIC_LIBRARY)
     CompileIGL_Module_Copyleft("cgal")
-    CompileIGL_Module_Copyleft("boolean")
-    if(NOT LIBIGL_WITH_CORK)
-      target_compile_definitions(iglboolean PRIVATE -DIGL_NO_CORK)
+    target_include_directories(iglcgal PRIVATE
+      ${CGAL_3RD_PARTY_INCLUDE_DIRS}
+      ${CGAL_INCLUDE_DIRS})
+  endif()
+
+  if(LIBIGL_WITH_BOOLEAN)
+    find_package(CORK QUIET)
+    if(CORK_FOUND)
+      list(APPEND LIBIGL_INCLUDE_DIRS ${CORK_INCLUDE_DIR})
+      list(APPEND LIBIGL_EXTRA_LIBRARIES ${CORK_LIBRARIES})
+
+      if(LIBIGL_USE_STATIC_LIBRARY)
+        CompileIGL_Module_Copyleft("boolean")
+        target_include_directories(iglboolean PRIVATE
+          ${CGAL_3RD_PARTY_INCLUDE_DIRS}
+          ${CGAL_INCLUDE_DIRS}
+          ${CORK_INCLUDE_DIR})
+      endif()
+    else()
+      list(APPEND LIBIGL_DEFINITIONS "-DIGL_NO_CORK")
+
+      if(LIBIGL_USE_STATIC_LIBRARY)
+        CompileIGL_Module_Copyleft("boolean")
+        target_include_directories(iglboolean PRIVATE
+          ${CGAL_3RD_PARTY_INCLUDE_DIRS}
+          ${CGAL_INCLUDE_DIRS})
+        target_compile_definitions(iglboolean PRIVATE -DIGL_NO_CORK)
+      endif()
     endif()
   endif()
 endif()

+ 1 - 1
tutorial/609_Boolean/main.cpp

@@ -1,5 +1,5 @@
 #include <igl/readOFF.h>
-#define IGL_NO_CORK
+//#define IGL_NO_CORK
 //#undef IGL_STATIC_LIBRARY
 #include <igl/copyleft/boolean/mesh_boolean.h>
 #include <igl/viewer/Viewer.h>

+ 12 - 14
tutorial/CMakeLists.txt

@@ -3,27 +3,25 @@ project(libigl_tutorials)
 
 ### libIGL options: choose between header only and compiled static library
 option(LIBIGL_USE_STATIC_LIBRARY "Use LibIGL as static library" ON)
-option(LIBIGL_WITH_GLFW        "Use GLFW"           ON)
 option(LIBIGL_WITH_VIEWER      "Use OpenGL viewer"  ON)
 option(LIBIGL_WITH_NANOGUI     "Use Nanogui menu"   OFF)
 
 ### libIGL options: choose your dependencies (by default everything is OFF, in this example we need the viewer) ###
-option(LIBIGL_WITH_BBW         "Use BBW"            ON)
-option(LIBIGL_WITH_EMBREE      "Use Embree"         ON)
-option(LIBIGL_WITH_OPENGL      "Use OpenGL"         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_XML         "Use XML"            ON)
-option(LIBIGL_WITH_LIM         "Use LIM"            ON)
-option(LIBIGL_WITH_COMISO      "Use CoMiso"         ON)
-option(LIBIGL_WITH_BOOLEAN     "Use Cork boolean"   OFF) # This option is not supported yet
-option(LIBIGL_WITH_MATLAB      "Use Matlab"         OFF) # This option is not supported yet
-option(LIBIGL_WITH_MOSEK       "Use MOSEK"          OFF) # This option is not supported yet
+option(LIBIGL_WITH_CGAL             "Use CGAL"           OFF) # This option is not supported yet
+option(LIBIGL_WITH_BOOLEAN          "Use Cork boolean"   OFF) # This option is not supported yet
+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) # This option is not supported yet
+option(LIBIGL_WITH_MOSEK            "Use MOSEK"          OFF) # This option is not supported yet
+option(LIBIGL_WITH_BBW              "Use BBW"            ON)
+option(LIBIGL_WITH_OPENGL_AND_PNG   "Use OpenGL"         ON)
+option(LIBIGL_WITH_TETGEN           "Use Tetgen"         ON)
+option(LIBIGL_WITH_TRIANGLE         "Use Triangle"       ON)
+option(LIBIGL_WITH_XML              "Use XML"            ON)
 ### End   to be tested ----
 
 ### libIGL options: decide if you want to use the functionalities that depends on cgal
-option(LIBIGL_WITH_CGAL        "Use CGAL"           OFF)
 if(LIBIGL_WITH_CGAL) # Do not remove or move this block, cgal strange build system fails without it
   find_package(CGAL REQUIRED)
   set(CGAL_DONT_OVERRIDE_CMAKE_FLAGS TRUE CACHE BOOL "CGAL's CMAKE Setup is super annoying ")