Sfoglia il codice sorgente

new cmake files

Former-commit-id: 0f9cae95af7deeef95ecdedf8c495ef278aa4334
Romain Prévost 9 anni fa
parent
commit
2ef67dab06
62 ha cambiato i file con 1224 aggiunte e 805 eliminazioni
  1. 351 0
      cmake/CMakeLists.txt
  2. 94 0
      cmake/FindCGAL.cmake
  3. 52 0
      cmake/FindCORK.cmake
  4. 60 0
      cmake/FindLIBCOMISOH.cmake
  5. 216 0
      cmake/FindMATLAB.cmake
  6. 30 0
      cmake/FindMOSEK.cmake
  7. 20 5
      include/igl/opengl/OpenGL_convenience.h
  8. 1 10
      include/igl/png/render_to_png.cpp
  9. 1 11
      include/igl/png/render_to_png_async.cpp
  10. 0 15
      include/igl/viewer/OpenGL_shader.cpp
  11. 4 3
      include/igl/viewer/OpenGL_shader.h
  12. 9 6
      include/igl/viewer/Viewer.cpp
  13. 5 8
      tutorial/101_FileIO/CMakeLists.txt
  14. 5 8
      tutorial/102_DrawMesh/CMakeLists.txt
  15. 5 8
      tutorial/103_Events/CMakeLists.txt
  16. 5 8
      tutorial/104_Colors/CMakeLists.txt
  17. 5 8
      tutorial/105_Overlays/CMakeLists.txt
  18. 5 8
      tutorial/106_ViewerMenu/CMakeLists.txt
  19. 5 8
      tutorial/201_Normals/CMakeLists.txt
  20. 5 8
      tutorial/202_GaussianCurvature/CMakeLists.txt
  21. 5 8
      tutorial/203_CurvatureDirections/CMakeLists.txt
  22. 5 8
      tutorial/204_Gradient/CMakeLists.txt
  23. 5 8
      tutorial/205_Laplacian/CMakeLists.txt
  24. 5 8
      tutorial/301_Slice/CMakeLists.txt
  25. 5 8
      tutorial/302_Sort/CMakeLists.txt
  26. 5 8
      tutorial/303_LaplaceEquation/CMakeLists.txt
  27. 5 8
      tutorial/304_LinearEqualityConstraints/CMakeLists.txt
  28. 5 8
      tutorial/305_QuadraticProgramming/CMakeLists.txt
  29. 5 8
      tutorial/306_EigenDecomposition/CMakeLists.txt
  30. 5 8
      tutorial/401_BiharmonicDeformation/CMakeLists.txt
  31. 5 8
      tutorial/402_PolyharmonicDeformation/CMakeLists.txt
  32. 6 19
      tutorial/403_BoundedBiharmonicWeights/CMakeLists.txt
  33. 5 8
      tutorial/404_DualQuaternionSkinning/CMakeLists.txt
  34. 5 8
      tutorial/405_AsRigidAsPossible/CMakeLists.txt
  35. 5 8
      tutorial/406_FastAutomaticSkinningTransformations/CMakeLists.txt
  36. 5 8
      tutorial/407_BiharmonicCoordinates/CMakeLists.txt
  37. 5 8
      tutorial/501_HarmonicParam/CMakeLists.txt
  38. 5 8
      tutorial/502_LSCMParam/CMakeLists.txt
  39. 5 8
      tutorial/503_ARAPParam/CMakeLists.txt
  40. 5 8
      tutorial/504_NRosyDesign/CMakeLists.txt
  41. 5 8
      tutorial/505_MIQ/CMakeLists.txt
  42. 5 8
      tutorial/506_FrameField/CMakeLists.txt
  43. 5 8
      tutorial/507_PolyVectorField/CMakeLists.txt
  44. 5 8
      tutorial/508_ConjugateField/CMakeLists.txt
  45. 5 8
      tutorial/509_Planarization/CMakeLists.txt
  46. 5 8
      tutorial/510_Integrable/CMakeLists.txt
  47. 5 11
      tutorial/601_Serialization/CMakeLists.txt
  48. 5 17
      tutorial/602_Matlab/CMakeLists.txt
  49. 5 11
      tutorial/604_Triangle/CMakeLists.txt
  50. 5 11
      tutorial/605_Tetgen/CMakeLists.txt
  51. 5 8
      tutorial/606_AmbientOcclusion/CMakeLists.txt
  52. 5 8
      tutorial/607_Picking/CMakeLists.txt
  53. 12 11
      tutorial/608_LIM/CMakeLists.txt
  54. 8 29
      tutorial/609_Boolean/CMakeLists.txt
  55. 7 22
      tutorial/610_CSGTree/CMakeLists.txt
  56. 5 8
      tutorial/701_Statistics/CMakeLists.txt
  57. 5 8
      tutorial/702_WindingNumber/CMakeLists.txt
  58. 5 8
      tutorial/703_Decimation/CMakeLists.txt
  59. 5 8
      tutorial/704_SignedDistance/CMakeLists.txt
  60. 5 8
      tutorial/705_MarchingCubes/CMakeLists.txt
  61. 0 112
      tutorial/CMakeLists.shared
  62. 133 192
      tutorial/CMakeLists.txt

+ 351 - 0
cmake/CMakeLists.txt

@@ -0,0 +1,351 @@
+cmake_minimum_required(VERSION 2.6)
+project(libigl)
+
+### Available options ###
+option(LIBIGL_USE_STATIC_LIBRARY "Use libIGL as static library" 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)
+
+### Compilation configuration ###
+set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -std=c++11")
+set(CMAKE_MODULE_PATH "${PROJECT_SOURCE_DIR}")
+
+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()
+
+
+### Compiling libraries based on chosen options ###
+set(LIBIGL_INCLUDE_DIRS "")
+set(LIBIGL_LIBRARIES "")
+set(LIBIGL_EXTRA_LIBRARIES "")
+set(LIBIGL_EXTRA_SOURCES "")
+set(LIBIGL_DEFINITIONS "")
+
+if(LIBIGL_USE_STATIC_LIBRARY)
+  add_definitions(-DIGL_STATIC_LIBRARY)
+endif()
+
+#if(APPLE)
+#  set(CMAKE_CXX_LINK_FLAGS "-framework OpenGL -framework Cocoa -framework IOKit -framework CoreVideo")
+#  set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -msse4.2")
+#endif()
+
+#if(UNIX AND NOT APPLE)
+#  set(CMAKE_CXX_LINK_EXECUTABLE "${CMAKE_CXX_LINK_EXECUTABLE} -lGL -lGLU -lrt -lX11 -lXxf86vm -lXrandr -lpthread -lXi  -lXcursor -lXinerama ")
+#  set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -mavx")
+#endif()
+
+### macro definition ###
+set(LIBIGL_ROOT "${PROJECT_SOURCE_DIR}/..")
+set(LIBIGL_SOURCE_DIR "${LIBIGL_ROOT}/include")
+set(LIBIGL_EXTERNAL "${LIBIGL_ROOT}/external")
+
+macro(CompileIGL_Module module)
+  file(GLOB SOURCES_${module}
+  "${LIBIGL_SOURCE_DIR}/igl/${module}/*.cpp")
+  add_library(igl${module} STATIC ${SOURCES_${module}})
+  list(APPEND LIBIGL_LIBRARIES "igl${module}")
+endmacro()
+
+
+### Eigen ###
+set(EIGEN_INCLUDE_DIR "${LIBIGL_EXTERNAL}/nanogui/ext/eigen")
+include_directories(${EIGEN_INCLUDE_DIR})
+list(APPEND LIBIGL_INCLUDE_DIRS "${EIGEN_INCLUDE_DIR}")
+set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -Wno-deprecated-declarations") # remove some annoying warning for Eigen (at least with gcc)
+
+### OpenMP ###
+find_package(OpenMP)
+if(OPENMP_FOUND AND NOT WIN32)
+  set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} ${OpenMP_C_FLAGS}")
+  set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} ${OpenMP_CXX_FLAGS}")
+endif()
+
+### IGL Common ###
+list(APPEND LIBIGL_INCLUDE_DIRS "${LIBIGL_SOURCE_DIR}")
+if(LIBIGL_USE_STATIC_LIBRARY)
+  include_directories("${LIBIGL_SOURCE_DIR}")
+  file(GLOB SOURCES_IGL "${LIBIGL_SOURCE_DIR}/igl/*.cpp")
+  add_library(igl STATIC ${SOURCES_IGL})
+  list(APPEND LIBIGL_LIBRARIES "igl")
+endif()
+
+
+### Compile the mosek part ###
+if(LIBIGL_WITH_MOSEK)
+  find_package(MOSEK REQUIRED)
+  if(NOT MOSEK_FOUND)
+    message(SEND_ERROR "Could NOT find MOSEK")
+  endif()
+  list(APPEND LIBIGL_INCLUDE_DIRS ${MOSEK_INCLUDE_DIR})
+  list(APPEND LIBIGL_EXTRA_LIBRARIES ${MOSEK_LIBRARIES})
+
+  if(LIBIGL_USE_STATIC_LIBRARY)
+    include_directories(${MOSEK_INCLUDE_DIR})
+    CompileIGL_Module("mosek")
+  endif()
+else()
+  add_definitions(-DIGL_NO_MOSEK)
+  list(APPEND LIBIGL_DEFINITIONS "-DIGL_NO_MOSEK")
+endif()
+
+### Compile the BBW part ###
+if(LIBIGL_WITH_BBW)
+  if(LIBIGL_USE_STATIC_LIBRARY)
+    CompileIGL_Module("bbw")
+  endif()
+endif()
+
+### Compile the comiso part ###
+if(LIBIGL_WITH_COMISO)
+  find_package(LIBCOMISOH REQUIRED)
+  if(NOT LIBCOMISOH_FOUND)
+    message(SEND_ERROR "Could NOT find COMISO")
+  endif()
+  #include_directories( ${LIBCOMISO_INCLUDE_DIRS})
+  list(GET LIBCOMISO_INCLUDE_DIRS 0 COMISO_ROOT)
+
+  add_subdirectory("${COMISO_ROOT}/CoMISo/" "CoMISo")
+
+  set(COMISO_INCLUDE_DIRS
+    "${COMISO_ROOT}/CoMISo/ext/gmm-4.2/include"
+    "${COMISO_ROOT}/")
+
+  list(APPEND LIBIGL_INCLUDE_DIRS ${COMISO_INCLUDE_DIRS})
+
+  if(APPLE)
+    find_library(accelerate_library Accelerate)
+    list(APPEND LIBIGL_EXTRA_LIBRARIES "CoMISo" ${accelerate_library})
+  else()
+    list(APPEND LIBIGL_EXTRA_LIBRARIES "CoMISo")
+  endif()
+
+  if(LIBIGL_USE_STATIC_LIBRARY)
+    include_directories(${COMISO_INCLUDE_DIRS})
+    CompileIGL_Module("comiso")
+  endif()
+endif()
+
+### Compile the embree part ###
+if(LIBIGL_WITH_EMBREE)
+  set(EMBREE_DIR "${LIBIGL_EXTERNAL}/embree")
+
+  option(ENABLE_ISPC_SUPPORT OFF)
+  option(RTCORE_TASKING_SYSTEM "INTERNAL")
+  option(ENABLE_TUTORIALS OFF)
+  option(ENABLE_STATIC_LIB ON)
+
+  if(MSVC)
+    option(USE_STATIC_RUNTIME " " OFF)
+  endif()
+
+  add_subdirectory("${EMBREE_DIR}" "embree")
+  list(APPEND LIBIGL_INCLUDE_DIRS "${EMBREE_DIR}/include")
+  list(APPEND LIBIGL_EXTRA_LIBRARIES "embree")
+
+  if(LIBIGL_USE_STATIC_LIBRARY)
+    include_directories(${EMBREE_DIR}/include)
+    CompileIGL_Module("embree")
+  endif()
+endif()
+
+### Compile the lim part ###
+if(LIBIGL_WITH_LIM)
+  set(LIM_DIR "${LIBIGL_EXTERNAL}/lim")
+  add_subdirectory("${LIM_DIR}" "lim")
+  list(APPEND LIBIGL_INCLUDE_DIRS ${LIM_DIR})
+  list(APPEND LIBIGL_LIBRARIES "lim") # it depends on ligigl, so placing it here solve linking problems
+
+  if(LIBIGL_USE_STATIC_LIBRARY)
+    include_directories(${LIM_DIR})
+    CompileIGL_Module("lim")
+  endif()
+endif()
+
+### Compile the matlab part ###
+if(LIBIGL_WITH_MATLAB)
+  find_package(MATLAB REQUIRED)
+  if(NOT MATLAB_FOUND)
+    message(SEND_ERROR "Could NOT find MATLAB")
+  endif()
+  list(APPEND LIBIGL_INCLUDE_DIRS ${MATLAB_INCLUDE_DIR})
+  list(APPEND LIBIGL_EXTRA_LIBRARIES ${MATLAB_LIBRARIES})
+
+  if(LIBIGL_USE_STATIC_LIBRARY)
+    include_directories(${MATLAB_INCLUDE_DIR})
+    CompileIGL_Module("matlab")
+  endif()
+endif()
+
+
+### Compile the opengl and png parts ###
+if(LIBIGL_WITH_OPENGL)
+  if(LIBIGL_USE_STATIC_LIBRARY)
+    CompileIGL_Module("opengl")
+    CompileIGL_Module("opengl2")
+  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)
+      include_directories(${STB_IMAGE_DIR})
+      CompileIGL_Module("png")
+    endif()
+  endif()
+endif()
+
+### Compile the tetgen part ###
+if(LIBIGL_WITH_TETGEN)
+  set(TETGEN_DIR "${LIBIGL_EXTERNAL}/tetgen")
+  add_subdirectory("${TETGEN_DIR}" "tetgen")
+  list(APPEND LIBIGL_INCLUDE_DIRS ${TETGEN_DIR})
+  list(APPEND LIBIGL_EXTRA_LIBRARIES "tetgen")
+
+  if(LIBIGL_USE_STATIC_LIBRARY)
+    include_directories(${TETGEN_DIR})
+    CompileIGL_Module("tetgen")
+  endif()
+endif()
+
+### Compile the triangle part ###
+if(LIBIGL_WITH_TRIANGLE)
+  set(TRIANGLE_DIR "${LIBIGL_EXTERNAL}/triangle")
+  add_subdirectory("${TRIANGLE_DIR}" "triangle")
+  list(APPEND LIBIGL_INCLUDE_DIRS ${TRIANGLE_DIR})
+  list(APPEND LIBIGL_EXTRA_LIBRARIES "triangle")
+
+  if(LIBIGL_USE_STATIC_LIBRARY)
+    include_directories(${TRIANGLE_DIR})
+    CompileIGL_Module("triangle")
+  endif()
+endif()
+
+### Compile the viewer ###
+if(LIBIGL_WITH_VIEWER) # to finish cleaning
+  set(NANOGUI_DIR "${LIBIGL_EXTERNAL}/nanogui")
+  set(NANOGUI_INCLUDE_DIRS
+    "${NANOGUI_DIR}/include"
+    "${NANOGUI_DIR}/ext/nanovg/src"
+    "${NANOGUI_DIR}/ext/glfw/include")
+
+  option(GLFW_INSTALL OFF)
+  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" "glfw" ${GLFW_LIBRARIES} pthread)
+
+  # GLEW: this should be cleaned and tested
+  if(WIN32 OR UNIX)
+    include_directories("${NANOGUI_DIR}/ext/glew/include")
+    list(APPEND LIBIGL_INCLUDE_DIRS "${NANOGUI_DIR}/ext/glew/include")
+    list(APPEND LIBIGL_EXTRA_SOURCES "${NANOGUI_DIR}/ext/glew/src/glew.c")
+  endif()
+
+  if(LIBIGL_USE_STATIC_LIBRARY)
+    include_directories(${NANOGUI_INCLUDE_DIRS})
+    CompileIGL_Module("viewer")
+  endif()
+endif()
+
+### Compile the xml part ###
+if(LIBIGL_WITH_XML)
+  set(TINYXML2_DIR "${LIBIGL_EXTERNAL}/tinyxml2")
+
+  add_library(tinyxml2 STATIC ${TINYXML2_DIR}/tinyxml2.cpp ${TINYXML2_DIR}/tinyxml2.h)
+  set_target_properties(tinyxml2 PROPERTIES
+          COMPILE_DEFINITONS "TINYXML2_EXPORT"
+          VERSION "3.0.0"
+          SOVERSION "3")
+  list(APPEND LIBIGL_INCLUDE_DIRS ${TINYXML2_DIR})
+  list(APPEND LIBIGL_EXTRA_LIBRARIES "tinyxml2")
+
+  if(LIBIGL_USE_STATIC_LIBRARY)
+    include_directories(${TINYXML2_DIR})
+    CompileIGL_Module("xml")
+  endif()
+endif()
+
+
+### Compile the boolean and cgal parts ###
+if(LIBIGL_WITH_CGAL) # to be cleaned
+  set(CGAL_DIR "${LIBIGL_EXTERNAL}/cgal/build")
+  #option(CGAL_BRANCH_BUILD ON)
+  #option(BUILD_SHARED_LIBS OFF)
+  #option(WITH_CGAL_ImageIO OFF)
+  #option(WITH_CGAL_QT3 OFF)
+  #option(WITH_CGAL_QT5 OFF)
+  set(CMAKELISTS_SHARED_INCLUDED FALSE)
+  find_package(CGAL REQUIRED)
+  message(${CGAL_USE_FILE})
+  include(${CGAL_USE_FILE})
+  #add_subdirectory("${LIBIGL_EXTERNAL}/cgal" "cgal")
+
+#  find_package(CGAL REQUIRED)
+#  if(NOT CGAL_FOUND)
+#    message(SEND_ERROR "Could NOT find CGAL")
+#  endif()
+
+  if(LIBIGL_WITH_CORK)
+#    find_package(CORK REQUIRED)
+#    if(NOT MOSEK_FOUND)
+#      message(SEND_ERROR "Could NOT find CORK")
+#    endif()
+
+#    if(LIBIGL_USE_STATIC_LIBRARY)
+#      include_directories(${CORK_INCLUDE_DIR})
+#      CompileIGL_Module("boolean")
+#    endif()
+  else()
+    add_definitions(-DIGL_NO_CORK)
+    list(APPEND LIBIGL_DEFINITIONS "-DIGL_NO_CORK")
+  endif()
+
+  if(LIBIGL_USE_STATIC_LIBRARY)
+    CompileIGL_Module("cgal")
+  endif()
+endif()
+
+
+### Compile the AntTweakBar part (deprecated) ###
+# if(LIBIGL_WITH_ANTTWEAKBAR) # to be cleaned
+#   find_package(ANTTWEAKBAR REQUIRED)
+#   include_directories(${ANT_TWEAK_BAR_INCLUDE_DIR})
+#
+#   if(LIBIGL_USE_STATIC_LIBRARY)
+#     CompileIGL_Module("anttweakbar")
+#   endif()
+# endif()
+
+# Pass the list of compiled libraries to the parent if there is one
+if(NOT ${CMAKE_PROJECT_NAME} STREQUAL ${PROJECT_NAME})
+  list(REVERSE LIBIGL_LIBRARIES)
+
+  set(LIBIGL_INCLUDE_DIRS ${LIBIGL_INCLUDE_DIRS} PARENT_SCOPE)
+  set(LIBIGL_LIBRARIES ${LIBIGL_LIBRARIES} PARENT_SCOPE)
+  set(LIBIGL_EXTRA_LIBRARIES ${LIBIGL_EXTRA_LIBRARIES} PARENT_SCOPE)
+  set(LIBIGL_EXTRA_SOURCES ${LIBIGL_EXTRA_SOURCES} PARENT_SCOPE)
+  set(LIBIGL_DEFINITIONS ${LIBIGL_DEFINITIONS} PARENT_SCOPE)
+endif()

+ 94 - 0
cmake/FindCGAL.cmake

@@ -0,0 +1,94 @@
+#
+# The following module is based on FindVTK.cmake
+#
+
+# - Find a CGAL installation or binary tree.
+# The following variables are set if CGAL is found.  If CGAL is not
+# found, CGAL_FOUND is set to false.
+#
+#  CGAL_FOUND         - Set to true when CGAL is found.
+#  CGAL_USE_FILE      - CMake file to use CGAL.
+#
+
+# Construct consitent error messages for use below.
+set(CGAL_DIR_DESCRIPTION "directory containing CGALConfig.cmake. This is either the binary directory where CGAL was configured or PREFIX/lib/CGAL for an installation.")
+set(CGAL_DIR_MESSAGE     "CGAL not found.  Set the CGAL_DIR cmake variable or environment variable to the ${CGAL_DIR_DESCRIPTION}")
+ 
+set(CMAKE_ALLOW_LOOSE_LOOP_CONSTRUCTS true)
+ 
+if ( NOT CGAL_DIR )
+  
+  # Get the system search path as a list.
+  if(UNIX)
+    string(REGEX MATCHALL "[^:]+" CGAL_DIR_SEARCH1 "$ENV{PATH}")
+  else()
+    string(REGEX REPLACE "\\\\" "/" CGAL_DIR_SEARCH1 "$ENV{PATH}")
+  endif()
+  
+  string(REGEX REPLACE "/;" ";" CGAL_DIR_SEARCH2 "${CGAL_DIR_SEARCH1}")
+
+  # Construct a set of paths relative to the system search path.
+  set(CGAL_DIR_SEARCH "")
+  
+  foreach(dir ${CGAL_DIR_SEARCH2})
+  
+    set(CGAL_DIR_SEARCH ${CGAL_DIR_SEARCH} ${dir}/../lib/CGAL )
+      
+  endforeach()
+
+
+  #
+  # Look for an installation or build tree.
+  #
+  find_path(CGAL_DIR CGALConfig.cmake
+
+    # Look for an environment variable CGAL_DIR.
+    $ENV{CGAL_DIR}
+
+    # Look in places relative to the system executable search path.
+    ${CGAL_DIR_SEARCH}
+
+    # Look in standard UNIX install locations.
+    /opt/local/share/CGAL/cmake
+    /usr/local/lib/CGAL
+    /usr/lib/CGAL
+
+    # Read from the CMakeSetup registry entries.  It is likely that
+    # CGAL will have been recently built.
+    [HKEY_CURRENT_USER\\Software\\Kitware\\CMakeSetup\\Settings\\StartPath;WhereBuild1]
+    [HKEY_CURRENT_USER\\Software\\Kitware\\CMakeSetup\\Settings\\StartPath;WhereBuild2]
+    [HKEY_CURRENT_USER\\Software\\Kitware\\CMakeSetup\\Settings\\StartPath;WhereBuild3]
+    [HKEY_CURRENT_USER\\Software\\Kitware\\CMakeSetup\\Settings\\StartPath;WhereBuild4]
+    [HKEY_CURRENT_USER\\Software\\Kitware\\CMakeSetup\\Settings\\StartPath;WhereBuild5]
+    [HKEY_CURRENT_USER\\Software\\Kitware\\CMakeSetup\\Settings\\StartPath;WhereBuild6]
+    [HKEY_CURRENT_USER\\Software\\Kitware\\CMakeSetup\\Settings\\StartPath;WhereBuild7]
+    [HKEY_CURRENT_USER\\Software\\Kitware\\CMakeSetup\\Settings\\StartPath;WhereBuild8]
+    [HKEY_CURRENT_USER\\Software\\Kitware\\CMakeSetup\\Settings\\StartPath;WhereBuild9]
+    [HKEY_CURRENT_USER\\Software\\Kitware\\CMakeSetup\\Settings\\StartPath;WhereBuild10]
+
+    # Help the user find it if we cannot.
+    DOC "The ${CGAL_DIR_DESCRIPTION}"
+  )
+  
+endif()
+
+if ( CGAL_DIR )
+  
+  if ( EXISTS "${CGAL_DIR}/CGALConfig.cmake" )
+    include( "${CGAL_DIR}/CGALConfig.cmake" )
+    set( CGAL_FOUND TRUE )
+  endif()
+
+endif()
+
+if(CGAL_FOUND)
+  MESSAGE(STATUS "Found CGAL: ${CGAL_DIR}")
+else()
+  if(CGAL_FIND_REQUIRED)
+    MESSAGE(FATAL_ERROR ${CGAL_DIR_MESSAGE})
+  else()
+    if(NOT CGAL_FIND_QUIETLY)
+      MESSAGE(STATUS ${CGAL_DIR_MESSAGE})
+    endif()
+  endif()
+endif()

+ 52 - 0
cmake/FindCORK.cmake

@@ -0,0 +1,52 @@
+#
+# Try to find CORK library and include path.
+# Once done this will define
+#
+# CORK_FOUND
+# CORK_INCLUDE_DIR
+# CORK_LIBRARIES
+#
+
+if(NOT CORK_FOUND)
+
+FIND_PATH(CORK_INCLUDE_DIR cork.h
+  PATHS
+    ${PROJECT_SOURCE_DIR}/../../external/cork/include
+    ${PROJECT_SOURCE_DIR}/../external/cork/include
+    ${PROJECT_SOURCE_DIR}/external/cork/include
+    /usr/local/include
+    /usr/X11/include
+    /usr/include
+    /opt/local/include
+    NO_DEFAULT_PATH
+    )
+
+FIND_LIBRARY( CORK_LIBRARIES NAMES cork
+  PATHS
+    ${PROJECT_SOURCE_DIR}/../../external/cork/lib/
+    ${PROJECT_SOURCE_DIR}/../external/cork/lib/
+    ${PROJECT_SOURCE_DIR}/external/cork/lib/
+    /usr/local
+    /usr/X11
+    /usr
+    PATH_SUFFIXES
+    a
+    lib64
+    lib
+    NO_DEFAULT_PATH
+)
+
+SET(CORK_FOUND "NO")
+IF (CORK_INCLUDE_DIR AND CORK_LIBRARIES)
+	SET(CORK_FOUND "YES")
+ENDIF (CORK_INCLUDE_DIR AND CORK_LIBRARIES)
+
+if(CORK_FOUND)
+  message(STATUS "Found CORK: ${CORK_INCLUDE_DIR}")
+else(CORK_FOUND)
+  if (NOT CORK_FIND_QUIETLY)
+    message(FATAL_ERROR "could NOT find CORK")
+  endif (NOT CORK_FIND_QUIETLY)
+endif(CORK_FOUND)
+
+endif(NOT CORK_FOUND)

+ 60 - 0
cmake/FindLIBCOMISOH.cmake

@@ -0,0 +1,60 @@
+# - Try to find the LIBCOMISO library
+# Once done this will define
+#
+#  LIBCOMISO_FOUND - system has LIBCOMISO
+#  LIBCOMISO_INCLUDE_DIR - the LIBCOMISO include directory
+#  LIBCOMISO_LIBRARY - the LIBCOMISO binary lib
+
+FIND_PATH(LIBCOMISO_INCLUDE_DIR CoMISo/Solver/ConstrainedSolver.hh
+   /usr/include
+   /usr/local/include
+   $ENV{LIBCOMISOROOT}/include
+   $ENV{LIBCOMISO_ROOT}/include
+   $ENV{LIBCOMISO_DIR}/include
+   $ENV{LIBCOMISO_DIR}/inc
+   ${PROJECT_SOURCE_DIR}/../
+   ${PROJECT_SOURCE_DIR}/../../
+   ${PROJECT_SOURCE_DIR}/../../../
+   ${PROJECT_SOURCE_DIR}/../CoMISo/
+   ${PROJECT_SOURCE_DIR}/../CoMISo/include
+   ${PROJECT_SOURCE_DIR}/../../CoMISo/
+   ${PROJECT_SOURCE_DIR}/../../CoMISo/include
+   /Users/daniele/Dropbox/igl/MIQ/src
+   /Users/olkido/Documents/igl/MIQ/src
+)
+
+SET(LIBCOMISO_FOUND "NO")
+IF (COMISO_INCLUDE_DIR)
+	SET(LIBCOMISO_FOUND "YES")
+ENDIF (COMISO_INCLUDE_DIR)
+
+
+
+if(LIBCOMISO_INCLUDE_DIR)
+
+   #message("${LIBCOMISO_INCLUDE_DIR}")
+
+   set(LIBCOMISO_INCLUDE_DIRS
+      ${LIBCOMISO_INCLUDE_DIR}
+      ${LIBCOMISO_INCLUDE_DIR}/CoMISo
+      ${LIBCOMISO_INCLUDE_DIR}/CoMISo/Solver
+      ${LIBCOMISO_INCLUDE_DIR}/CoMISo/EigenSolver
+      ${LIBCOMISO_INCLUDE_DIR}/CoMISo/NSolver
+      ${LIBCOMISO_INCLUDE_DIR}/CoMISo/Config
+      ${LIBCOMISO_INCLUDE_DIR}/CoMISo/Utils
+      ${LIBCOMISO_INCLUDE_DIR}/CoMISo/QtWidgets
+      ${LIBCOMISO_INCLUDE_DIR}/CoMISo/ext/gmm-4.2/include
+      )
+
+   #message("${LIBCOMISO_INCLUDE_DIRS}")
+
+   set(LIBCOMISO_INCLUDE_DIR ${LIBCOMISO_INCLUDE_DIR})
+
+   add_definitions(-DINCLUDE_TEMPLATES)
+   message(STATUS "Found LIBCOMISO: ${LIBCOMISO_INCLUDE_DIR}")
+   set(LIBCOMISO_FOUND TRUE)
+else(LIBCOMISO_INCLUDE_DIR)
+  if(NOT LIBCOMISOH_FIND_QUIETLY)
+   message(FATAL_ERROR "could NOT find LIBCOMISO")
+ endif (NOT LIBCOMISOH_FIND_QUIETLY)
+endif(LIBCOMISO_INCLUDE_DIR)

+ 216 - 0
cmake/FindMATLAB.cmake

@@ -0,0 +1,216 @@
+# - this module looks for Matlab
+# Defines:
+#  MATLAB_INCLUDE_DIR: include path for mex.h, engine.h
+#  MATLAB_LIBRARIES:   required libraries: libmex, etc
+#  MATLAB_MEX_LIBRARY: path to libmex.lib
+#  MATLAB_MX_LIBRARY:  path to libmx.lib
+#  MATLAB_MAT_LIBRARY:  path to libmat.lib # added
+#  MATLAB_ENG_LIBRARY: path to libeng.lib
+#  MATLAB_ROOT: path to Matlab's root directory
+
+# This file is part of Gerardus
+#
+# This is a derivative work of file FindMatlab.cmake released with
+# CMake v2.8, because the original seems to be a bit outdated and
+# doesn't work with my Windows XP and Visual Studio 10 install
+#
+# (Note that the original file does work for Ubuntu Natty)
+#
+# Author: Ramon Casero <rcasero@gmail.com>, Tom Doel
+# Version: 0.2.3
+# $Rev$
+# $Date$
+#
+# The original file was copied from an Ubuntu Linux install
+# /usr/share/cmake-2.8/Modules/FindMatlab.cmake
+
+#=============================================================================
+# Copyright 2005-2009 Kitware, Inc.
+#
+# Distributed under the OSI-approved BSD License (the "License");
+# see accompanying file Copyright.txt for details.
+#
+# This software is distributed WITHOUT ANY WARRANTY; without even the
+# implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+# See the License for more information.
+#=============================================================================
+# (To distribute this file outside of CMake, substitute the full
+#  License text for the above reference.)
+
+SET(MATLAB_FOUND 0)
+IF(WIN32)
+  # Search for a version of Matlab available, starting from the most modern one to older versions
+  FOREACH(MATVER "7.14" "7.11" "7.17" "7.10" "7.9" "7.8" "7.7" "7.6" "7.5" "7.4" "8.0" "8.1" "8.2" "8.3" "8.4" "8.5")
+    IF((NOT DEFINED MATLAB_ROOT)
+        OR ("${MATLAB_ROOT}" STREQUAL "")
+        OR ("${MATLAB_ROOT}" STREQUAL "/registry"))
+      GET_FILENAME_COMPONENT(MATLAB_ROOT
+        "[HKEY_LOCAL_MACHINE\\SOFTWARE\\MathWorks\\MATLAB\\${MATVER};MATLABROOT]"
+        ABSOLUTE)
+      SET(MATLAB_VERSION ${MATVER})
+    ENDIF((NOT DEFINED MATLAB_ROOT)
+      OR ("${MATLAB_ROOT}" STREQUAL "")
+      OR ("${MATLAB_ROOT}" STREQUAL "/registry"))
+  ENDFOREACH(MATVER)
+
+  # Directory name depending on whether the Windows architecture is 32
+  # bit or 64 bit
+  set(CMAKE_SIZEOF_VOID_P 8) # Note: For some weird reason this variable is undefined in my system...
+  IF(CMAKE_SIZEOF_VOID_P MATCHES "4")
+    SET(WINDIR "win32")
+  ELSEIF(CMAKE_SIZEOF_VOID_P MATCHES "8")
+    SET(WINDIR "win64")
+  ELSE(CMAKE_SIZEOF_VOID_P MATCHES "4")
+    MESSAGE(FATAL_ERROR
+      "CMAKE_SIZEOF_VOID_P (${CMAKE_SIZEOF_VOID_P}) doesn't indicate a valid platform")
+  ENDIF(CMAKE_SIZEOF_VOID_P MATCHES "4")
+
+  # Folder where the MEX libraries are, depending of the Windows compiler
+  IF(${CMAKE_GENERATOR} MATCHES "Visual Studio 6")
+    SET(MATLAB_LIBRARIES_DIR "${MATLAB_ROOT}/extern/lib/${WINDIR}/microsoft/msvc60")
+  ELSEIF(${CMAKE_GENERATOR} MATCHES "Visual Studio 7")
+    # Assume people are generally using Visual Studio 7.1,
+    # if using 7.0 need to link to: ../extern/lib/${WINDIR}/microsoft/msvc70
+    SET(MATLAB_LIBRARIES_DIR "${MATLAB_ROOT}/extern/lib/${WINDIR}/microsoft/msvc71")
+    # SET(MATLAB_LIBRARIES_DIR "${MATLAB_ROOT}/extern/lib/${WINDIR}/microsoft/msvc70")
+  ELSEIF(${CMAKE_GENERATOR} MATCHES "Borland")
+    # Assume people are generally using Borland 5.4,
+    # if using 7.0 need to link to: ../extern/lib/${WINDIR}/microsoft/msvc70
+    SET(MATLAB_LIBRARIES_DIR "${MATLAB_ROOT}/extern/lib/${WINDIR}/microsoft/bcc54")
+    # SET(MATLAB_LIBRARIES_DIR "${MATLAB_ROOT}/extern/lib/${WINDIR}/microsoft/bcc50")
+    # SET(MATLAB_LIBRARIES_DIR "${MATLAB_ROOT}/extern/lib/${WINDIR}/microsoft/bcc51")
+  ELSEIF(${CMAKE_GENERATOR} MATCHES "Visual Studio*")
+    # If the compiler is Visual Studio, but not any of the specific
+    # versions above, we try our luck with the microsoft directory
+    SET(MATLAB_LIBRARIES_DIR "${MATLAB_ROOT}/extern/lib/${WINDIR}/microsoft/")
+  ELSE(${CMAKE_GENERATOR} MATCHES "Visual Studio 6")
+    MESSAGE(FATAL_ERROR "Generator not compatible: ${CMAKE_GENERATOR}")
+  ENDIF(${CMAKE_GENERATOR} MATCHES "Visual Studio 6")
+
+  # Get paths to the Matlab MEX libraries
+  FIND_LIBRARY(MATLAB_MEX_LIBRARY
+    libmex
+    ${MATLAB_LIBRARIES_DIR}
+    )
+  FIND_LIBRARY(MATLAB_MX_LIBRARY
+    libmx
+    ${MATLAB_LIBRARIES_DIR}
+    )
+  FIND_LIBRARY(MATLAB_MAT_LIBRARY
+    libmat
+    ${MATLAB_LIBRARIES_DIR}
+    )
+  FIND_LIBRARY(MATLAB_ENG_LIBRARY
+    libeng
+    ${MATLAB_LIBRARIES_DIR}
+    )
+
+  # Get path to the include directory
+  FIND_PATH(MATLAB_INCLUDE_DIR
+    "mex.h"
+    "${MATLAB_ROOT}/extern/include"
+    )
+
+ELSE(WIN32)
+
+  IF((NOT DEFINED MATLAB_ROOT)
+      OR ("${MATLAB_ROOT}" STREQUAL ""))
+    # get path to the Matlab root directory
+    EXECUTE_PROCESS(
+      COMMAND which matlab
+      COMMAND xargs readlink
+      COMMAND xargs dirname
+      COMMAND xargs dirname
+      COMMAND xargs echo -n
+      OUTPUT_VARIABLE MATLAB_ROOT
+      )
+  ENDIF((NOT DEFINED MATLAB_ROOT)
+    OR ("${MATLAB_ROOT}" STREQUAL ""))
+
+  # Check if this is a Mac
+  IF(${CMAKE_SYSTEM_NAME} MATCHES "Darwin")
+
+    SET(LIBRARY_EXTENSION .dylib)
+
+    # If this is a Mac and the attempts to find MATLAB_ROOT have so far failed,
+    # we look in the applications folder
+    IF((NOT DEFINED MATLAB_ROOT) OR ("${MATLAB_ROOT}" STREQUAL ""))
+
+    # Search for a version of Matlab available, starting from the most modern one to older versions
+      FOREACH(MATVER "R2015b" "R2015a" "R2014b" "R2014a" "R2014a" "R2013b" "R2013a" "R2012b" "R2012a" "R2011b" "R2011a" "R2010b" "R2010a" "R2009b" "R2009a" "R2008b")
+        IF((NOT DEFINED MATLAB_ROOT) OR ("${MATLAB_ROOT}" STREQUAL ""))
+          IF(EXISTS /Applications/MATLAB_${MATVER}.app)
+            SET(MATLAB_ROOT /Applications/MATLAB_${MATVER}.app)
+
+          ENDIF(EXISTS /Applications/MATLAB_${MATVER}.app)
+        ENDIF((NOT DEFINED MATLAB_ROOT) OR ("${MATLAB_ROOT}" STREQUAL ""))
+      ENDFOREACH(MATVER)
+
+    ENDIF((NOT DEFINED MATLAB_ROOT) OR ("${MATLAB_ROOT}" STREQUAL ""))
+
+  ELSE(${CMAKE_SYSTEM_NAME} MATCHES "Darwin")
+    SET(LIBRARY_EXTENSION .so)
+
+  ENDIF(${CMAKE_SYSTEM_NAME} MATCHES "Darwin")
+
+  # Get path to the MEX libraries
+  EXECUTE_PROCESS(
+    #COMMAND find "${MATLAB_ROOT}/extern/lib" -name libmex${LIBRARY_EXTENSION} # Peter
+	COMMAND find "${MATLAB_ROOT}/bin" -name libmex${LIBRARY_EXTENSION} # Standard
+    COMMAND xargs echo -n
+    OUTPUT_VARIABLE MATLAB_MEX_LIBRARY
+    )
+  EXECUTE_PROCESS(
+    #COMMAND find "${MATLAB_ROOT}/extern/lib" -name libmx${LIBRARY_EXTENSION} # Peter
+	COMMAND find "${MATLAB_ROOT}/bin" -name libmx${LIBRARY_EXTENSION} # Standard
+    COMMAND xargs echo -n
+    OUTPUT_VARIABLE MATLAB_MX_LIBRARY
+    )
+  EXECUTE_PROCESS(
+    #COMMAND find "${MATLAB_ROOT}/extern/lib" -name libmat${LIBRARY_EXTENSION} # Peter
+	COMMAND find "${MATLAB_ROOT}/bin" -name libmat${LIBRARY_EXTENSION} # Standard
+    COMMAND xargs echo -n
+    OUTPUT_VARIABLE MATLAB_MAT_LIBRARY
+    )
+  EXECUTE_PROCESS(
+    #COMMAND find "${MATLAB_ROOT}/extern/lib" -name libeng${LIBRARY_EXTENSION} # Peter
+	COMMAND find "${MATLAB_ROOT}/bin" -name libeng${LIBRARY_EXTENSION} # Standard
+    COMMAND xargs echo -n
+    OUTPUT_VARIABLE MATLAB_ENG_LIBRARY
+    )
+
+  # Get path to the include directory
+  FIND_PATH(MATLAB_INCLUDE_DIR
+    "mex.h"
+    PATHS "${MATLAB_ROOT}/extern/include"
+    )
+
+ENDIF(WIN32)
+
+if (${CMAKE_CXX_COMPILER_ID} STREQUAL "GNU")
+  set(MATLAB_LIBSTDCPP "-lstdc++")
+endif ()
+
+
+# This is common to UNIX and Win32:
+SET(MATLAB_LIBRARIES
+  ${MATLAB_LIBSTDCPP}
+  ${MATLAB_MAT_LIBRARY}
+  ${MATLAB_MEX_LIBRARY}
+  ${MATLAB_MX_LIBRARY}
+  ${MATLAB_ENG_LIBRARY}
+)
+
+IF(MATLAB_INCLUDE_DIR AND MATLAB_LIBRARIES)
+  SET(MATLAB_FOUND 1)
+ENDIF(MATLAB_INCLUDE_DIR AND MATLAB_LIBRARIES)
+
+MARK_AS_ADVANCED(
+  MATLAB_LIBRARIES
+  MATLAB_MEX_LIBRARY
+  MATLAB_MX_LIBRARY
+  MATLAB_ENG_LIBRARY
+  MATLAB_INCLUDE_DIR
+  MATLAB_FOUND
+  MATLAB_ROOT
+)

+ 30 - 0
cmake/FindMOSEK.cmake

@@ -0,0 +1,30 @@
+#
+# Try to find MOSEK
+# Once done this will define
+#
+# MOSEK_FOUND           - system has MOSEK
+# MOSEK_INCLUDE_DIRS    - the MOSEK include directories
+# MOSEK_LIBRARIES       - Link these to use MOSEK
+#
+
+FIND_PATH(MOSEK_INCLUDE_DIR mosek.h
+  PATHS /usr/local/mosek/7/tools/platform/osx64x86/h/
+    )
+
+SET(SEARCH_PATHS "${MOSEK_INCLUDE_DIR}" "${MOSEK_INCLUDE_DIR}/../bin" "${MOSEK_INCLUDE_DIR}/lib")
+
+set(MOSEK_LIBRARIES)
+FIND_LIBRARY(MOSEK_LIBRARIES  NAMES mosek64 PATHS ${SEARCH_PATHS} NO_DEFAULT_PATH DPATH_SUFFIXES a lib dylib)
+
+if(MOSEK_LIBRARIES AND MOSEK_INCLUDE_DIR)
+message(STATUS "Found mosek: ${MOSEK_LIBRARIES}")
+set(MOSEK_FOUND TRUE)
+endif(MOSEK_LIBRARIES AND MOSEK_INCLUDE_DIR)
+
+IF (MOSEK_FOUND)
+   message(STATUS "Found MOSEK: ${MOSEK_INCLUDE_DIR}")
+   SET(MOSEK_INCLUDE_DIRS ${MOSEK_INCLUDE_DIR} )
+ELSE (MOSEK_FOUND)
+    #add_definitions(-DIGL_NO_MOSEK)
+    #message(WARNING "could NOT find MOSEK")
+ENDIF (MOSEK_FOUND)

+ 20 - 5
include/igl/opengl/OpenGL_convenience.h

@@ -1,9 +1,9 @@
 // This file is part of libigl, a simple c++ geometry processing library.
-// 
+//
 // Copyright (C) 2013 Alec Jacobson <alecjacobson@gmail.com>
-// 
-// This Source Code Form is subject to the terms of the Mozilla Public License 
-// v. 2.0. If a copy of the MPL was not distributed with this file, You can 
+//
+// This Source Code Form is subject to the terms of the Mozilla Public License
+// v. 2.0. If a copy of the MPL was not distributed with this file, You can
 // obtain one at http://mozilla.org/MPL/2.0/.
 #ifndef IGL_OPENGL_OPENGL_CONVENIENCE_H
 #define IGL_OPENGL_OPENGL_CONVENIENCE_H
@@ -14,7 +14,7 @@
 
 // For now this includes glu, glew and glext (perhaps these should be
 // separated)
-#if __APPLE__
+/*#if __APPLE__
 #  include <OpenGL/gl.h>
 #  include <OpenGL/glu.h>
 #  include <OpenGL/glext.h>
@@ -29,6 +29,21 @@
 #  include <GL/gl.h>
 #  include <GL/glext.h>
 #  include <GL/glu.h>
+#endif*/
+
+// From Nanogui
+#if defined(__APPLE__)
+    #define GLFW_INCLUDE_GLCOREARB
+#elif defined(WIN32)
+    #define GLEW_STATIC
+    #include <GL/glew.h>
+#else
+    #define GLEW_STATIC
+    #include <GL/glew.h>
+    #define GL_GLEXT_PROTOTYPES
 #endif
 
+//#define GLFW_INCLUDE_GLU
+#include <GLFW/glfw3.h>
+
 #endif

+ 1 - 10
include/igl/png/render_to_png.cpp

@@ -8,16 +8,7 @@
 #include "render_to_png.h"
 #include <stb_image_write.h>
 
-#ifdef __APPLE__
-#  include <OpenGL/gl.h>
-#else
-#  ifdef _WIN32
-#    define NOMINMAX
-#    include <Windows.h>
-#    undef NOMINMAX
-#  endif
-#  include <GL/gl.h>
-#endif
+#include "../opengl/OpenGL_convenience.h"
 
 IGL_INLINE bool igl::png::render_to_png(
   const std::string png_file,

+ 1 - 11
include/igl/png/render_to_png_async.cpp

@@ -8,17 +8,7 @@
 #include "render_to_png_async.h"
 #include <stb_image_write.h>
 
-#ifdef __APPLE__
-#  include <OpenGL/gl.h>
-#else
-#  ifdef _WIN32
-#    define NOMINMAX
-#    include <Windows.h>
-#    undef NOMINMAX
-#  endif
-#  include <GL/gl.h>
-#endif
-
+#include "../opengl/OpenGL_convenience.h"
 
 static IGL_INLINE bool render_to_png_async_helper(
   unsigned char * img, int width, int height,

+ 0 - 15
include/igl/viewer/OpenGL_shader.cpp

@@ -8,21 +8,6 @@
 
 #include "OpenGL_shader.h"
 
-#ifndef __APPLE__
-#  define GLEW_STATIC
-#  include <GL/glew.h>
-#endif
-
-#ifdef __APPLE__
-#   include <OpenGL/gl3.h>
-#   define __gl_h_ /* Prevent inclusion of the old gl.h */
-#else
-#   ifdef _WIN32
-#       include <windows.h>
-#   endif
-#   include <GL/gl.h>
-#endif
-
 #include <iostream>
 #include <fstream>
 

+ 4 - 3
include/igl/viewer/OpenGL_shader.h

@@ -20,20 +20,21 @@
 #  undef DrawText
 #endif
 
-#ifndef __APPLE__
+/*#ifndef __APPLE__
 #  define GLEW_STATIC
 #  include <GL/glew.h>
 #endif
 
 #ifdef __APPLE__
 #   include <OpenGL/gl3.h>
-#   define __gl_h_ /* Prevent inclusion of the old gl.h */
+#   define __gl_h_ // Prevent inclusion of the old gl.h
 #else
 #   ifdef _WIN32
 #       include <windows.h>
 #   endif
 #   include <GL/gl.h>
-#endif
+#endif*/
+#include "../opengl/OpenGL_convenience.h"
 
 namespace igl
 {

+ 9 - 6
include/igl/viewer/Viewer.cpp

@@ -17,25 +17,28 @@
 #include <chrono>
 #include <thread>
 
-#ifndef __APPLE__
+/*#ifndef __APPLE__
 #  define GLEW_STATIC
 #  include <GL/glew.h>
 #endif
 
 #ifdef __APPLE__
 #   include <OpenGL/gl3.h>
-#   define __gl_h_ /* Prevent inclusion of the old gl.h */
+#   define __gl_h_ // Prevent inclusion of the old gl.h
 #else
 #   include <GL/gl.h>
-#endif
+#endif*/
 
-#include <Eigen/LU>
+#include "../opengl/OpenGL_convenience.h"
 
-#define GLFW_INCLUDE_GLU
+/*#define GLFW_INCLUDE_GLU
 #ifndef _WIN32
   #define GLFW_INCLUDE_GLCOREARB
 #endif
-#include <GLFW/glfw3.h>
+#include <GLFW/glfw3.h>*/
+
+#include <Eigen/LU>
+
 
 #include <cmath>
 #include <cstdio>

+ 5 - 8
tutorial/101_FileIO/CMakeLists.txt

@@ -1,11 +1,8 @@
 cmake_minimum_required(VERSION 2.6)
 project(101_FileIO)
 
-include("../CMakeLists.shared")
-
-set(SOURCES
-${PROJECT_SOURCE_DIR}/main.cpp
-)
-
-add_executable(${PROJECT_NAME}_bin ${SOURCES} ${SHARED_SOURCES})
-target_link_libraries(${PROJECT_NAME}_bin ${SHARED_LIBRARIES})
+include_directories(${LIBIGL_INCLUDE_DIRS})
+add_executable(${PROJECT_NAME}_bin
+  main.cpp
+${LIBIGL_EXTRA_SOURCES})
+target_link_libraries(${PROJECT_NAME}_bin ${LIBIGL_LIBRARIES} ${LIBIGL_EXTRA_LIBRARIES})

+ 5 - 8
tutorial/102_DrawMesh/CMakeLists.txt

@@ -1,11 +1,8 @@
 cmake_minimum_required(VERSION 2.6)
 project(102_DrawMesh)
 
-include("../CMakeLists.shared")
-
-set(SOURCES
-${PROJECT_SOURCE_DIR}/main.cpp
-)
-
-add_executable(${PROJECT_NAME}_bin ${SOURCES} ${SHARED_SOURCES})
-target_link_libraries(${PROJECT_NAME}_bin ${SHARED_LIBRARIES})
+include_directories(${LIBIGL_INCLUDE_DIRS})
+add_executable(${PROJECT_NAME}_bin
+  main.cpp
+${LIBIGL_EXTRA_SOURCES})
+target_link_libraries(${PROJECT_NAME}_bin ${LIBIGL_LIBRARIES} ${LIBIGL_EXTRA_LIBRARIES})

+ 5 - 8
tutorial/103_Events/CMakeLists.txt

@@ -1,11 +1,8 @@
 cmake_minimum_required(VERSION 2.6)
 project(103_Events)
 
-include("../CMakeLists.shared")
-
-set(SOURCES
-${PROJECT_SOURCE_DIR}/main.cpp
-)
-
-add_executable(${PROJECT_NAME}_bin ${SOURCES} ${SHARED_SOURCES})
-target_link_libraries(${PROJECT_NAME}_bin ${SHARED_LIBRARIES})
+include_directories(${LIBIGL_INCLUDE_DIRS})
+add_executable(${PROJECT_NAME}_bin
+  main.cpp
+${LIBIGL_EXTRA_SOURCES})
+target_link_libraries(${PROJECT_NAME}_bin ${LIBIGL_LIBRARIES} ${LIBIGL_EXTRA_LIBRARIES})

+ 5 - 8
tutorial/104_Colors/CMakeLists.txt

@@ -1,11 +1,8 @@
 cmake_minimum_required(VERSION 2.6)
 project(104_Colors)
 
-include("../CMakeLists.shared")
-
-set(SOURCES
-${PROJECT_SOURCE_DIR}/main.cpp
-)
-
-add_executable(${PROJECT_NAME}_bin ${SOURCES} ${SHARED_SOURCES})
-target_link_libraries(${PROJECT_NAME}_bin ${SHARED_LIBRARIES})
+include_directories(${LIBIGL_INCLUDE_DIRS})
+add_executable(${PROJECT_NAME}_bin
+  main.cpp
+${LIBIGL_EXTRA_SOURCES})
+target_link_libraries(${PROJECT_NAME}_bin ${LIBIGL_LIBRARIES} ${LIBIGL_EXTRA_LIBRARIES})

+ 5 - 8
tutorial/105_Overlays/CMakeLists.txt

@@ -1,11 +1,8 @@
 cmake_minimum_required(VERSION 2.6)
 project(105_Overlays)
 
-include("../CMakeLists.shared")
-
-set(SOURCES
-${PROJECT_SOURCE_DIR}/main.cpp
-)
-
-add_executable(${PROJECT_NAME}_bin ${SOURCES} ${SHARED_SOURCES})
-target_link_libraries(${PROJECT_NAME}_bin ${SHARED_LIBRARIES})
+include_directories(${LIBIGL_INCLUDE_DIRS})
+add_executable(${PROJECT_NAME}_bin
+  main.cpp
+${LIBIGL_EXTRA_SOURCES})
+target_link_libraries(${PROJECT_NAME}_bin ${LIBIGL_LIBRARIES} ${LIBIGL_EXTRA_LIBRARIES})

+ 5 - 8
tutorial/106_ViewerMenu/CMakeLists.txt

@@ -1,11 +1,8 @@
 cmake_minimum_required(VERSION 2.6)
 project(106_ViewerMenu)
 
-include("../CMakeLists.shared")
-
-set(SOURCES
-${PROJECT_SOURCE_DIR}/main.cpp
-)
-
-add_executable(${PROJECT_NAME}_bin ${SOURCES} ${SHARED_SOURCES})
-target_link_libraries(${PROJECT_NAME}_bin ${SHARED_LIBRARIES})
+include_directories(${LIBIGL_INCLUDE_DIRS})
+add_executable(${PROJECT_NAME}_bin
+  main.cpp
+${LIBIGL_EXTRA_SOURCES})
+target_link_libraries(${PROJECT_NAME}_bin ${LIBIGL_LIBRARIES} ${LIBIGL_EXTRA_LIBRARIES})

+ 5 - 8
tutorial/201_Normals/CMakeLists.txt

@@ -1,11 +1,8 @@
 cmake_minimum_required(VERSION 2.6)
 project(201_Normals)
 
-include("../CMakeLists.shared")
-
-set(SOURCES
-${PROJECT_SOURCE_DIR}/main.cpp
-)
-
-add_executable(${PROJECT_NAME}_bin ${SOURCES} ${SHARED_SOURCES})
-target_link_libraries(${PROJECT_NAME}_bin ${SHARED_LIBRARIES})
+include_directories(${LIBIGL_INCLUDE_DIRS})
+add_executable(${PROJECT_NAME}_bin
+  main.cpp
+${LIBIGL_EXTRA_SOURCES})
+target_link_libraries(${PROJECT_NAME}_bin ${LIBIGL_LIBRARIES} ${LIBIGL_EXTRA_LIBRARIES})

+ 5 - 8
tutorial/202_GaussianCurvature/CMakeLists.txt

@@ -1,11 +1,8 @@
 cmake_minimum_required(VERSION 2.6)
 project(202_GaussianCurvature)
 
-include("../CMakeLists.shared")
-
-set(SOURCES
-${PROJECT_SOURCE_DIR}/main.cpp
-)
-
-add_executable(${PROJECT_NAME}_bin ${SOURCES} ${SHARED_SOURCES})
-target_link_libraries(${PROJECT_NAME}_bin ${SHARED_LIBRARIES})
+include_directories(${LIBIGL_INCLUDE_DIRS})
+add_executable(${PROJECT_NAME}_bin
+  main.cpp
+${LIBIGL_EXTRA_SOURCES})
+target_link_libraries(${PROJECT_NAME}_bin ${LIBIGL_LIBRARIES} ${LIBIGL_EXTRA_LIBRARIES})

+ 5 - 8
tutorial/203_CurvatureDirections/CMakeLists.txt

@@ -1,11 +1,8 @@
 cmake_minimum_required(VERSION 2.6)
 project(203_CurvatureDirections)
 
-include("../CMakeLists.shared")
-
-set(SOURCES
-${PROJECT_SOURCE_DIR}/main.cpp
-)
-
-add_executable(${PROJECT_NAME}_bin ${SOURCES} ${SHARED_SOURCES})
-target_link_libraries(${PROJECT_NAME}_bin ${SHARED_LIBRARIES})
+include_directories(${LIBIGL_INCLUDE_DIRS})
+add_executable(${PROJECT_NAME}_bin
+  main.cpp
+${LIBIGL_EXTRA_SOURCES})
+target_link_libraries(${PROJECT_NAME}_bin ${LIBIGL_LIBRARIES} ${LIBIGL_EXTRA_LIBRARIES})

+ 5 - 8
tutorial/204_Gradient/CMakeLists.txt

@@ -1,11 +1,8 @@
 cmake_minimum_required(VERSION 2.6)
 project(204_Gradient)
 
-include("../CMakeLists.shared")
-
-set(SOURCES
-${PROJECT_SOURCE_DIR}/main.cpp
-)
-
-add_executable(${PROJECT_NAME}_bin ${SOURCES} ${SHARED_SOURCES})
-target_link_libraries(${PROJECT_NAME}_bin ${SHARED_LIBRARIES})
+include_directories(${LIBIGL_INCLUDE_DIRS})
+add_executable(${PROJECT_NAME}_bin
+  main.cpp
+${LIBIGL_EXTRA_SOURCES})
+target_link_libraries(${PROJECT_NAME}_bin ${LIBIGL_LIBRARIES} ${LIBIGL_EXTRA_LIBRARIES})

+ 5 - 8
tutorial/205_Laplacian/CMakeLists.txt

@@ -1,11 +1,8 @@
 cmake_minimum_required(VERSION 2.6)
 project(205_Laplacian)
 
-include("../CMakeLists.shared")
-
-set(SOURCES
-${PROJECT_SOURCE_DIR}/main.cpp
-)
-
-add_executable(${PROJECT_NAME}_bin ${SOURCES} ${SHARED_SOURCES})
-target_link_libraries(${PROJECT_NAME}_bin ${SHARED_LIBRARIES})
+include_directories(${LIBIGL_INCLUDE_DIRS})
+add_executable(${PROJECT_NAME}_bin
+  main.cpp
+${LIBIGL_EXTRA_SOURCES})
+target_link_libraries(${PROJECT_NAME}_bin ${LIBIGL_LIBRARIES} ${LIBIGL_EXTRA_LIBRARIES})

+ 5 - 8
tutorial/301_Slice/CMakeLists.txt

@@ -1,11 +1,8 @@
 cmake_minimum_required(VERSION 2.6)
 project(301_Slice)
 
-include("../CMakeLists.shared")
-
-set(SOURCES
-${PROJECT_SOURCE_DIR}/main.cpp
-)
-
-add_executable(${PROJECT_NAME}_bin ${SOURCES} ${SHARED_SOURCES})
-target_link_libraries(${PROJECT_NAME}_bin ${SHARED_LIBRARIES})
+include_directories(${LIBIGL_INCLUDE_DIRS})
+add_executable(${PROJECT_NAME}_bin
+  main.cpp
+${LIBIGL_EXTRA_SOURCES})
+target_link_libraries(${PROJECT_NAME}_bin ${LIBIGL_LIBRARIES} ${LIBIGL_EXTRA_LIBRARIES})

+ 5 - 8
tutorial/302_Sort/CMakeLists.txt

@@ -1,11 +1,8 @@
 cmake_minimum_required(VERSION 2.6)
 project(302_Sort)
 
-include("../CMakeLists.shared")
-
-set(SOURCES
-${PROJECT_SOURCE_DIR}/main.cpp
-)
-
-add_executable(${PROJECT_NAME}_bin ${SOURCES} ${SHARED_SOURCES})
-target_link_libraries(${PROJECT_NAME}_bin ${SHARED_LIBRARIES})
+include_directories(${LIBIGL_INCLUDE_DIRS})
+add_executable(${PROJECT_NAME}_bin
+  main.cpp
+${LIBIGL_EXTRA_SOURCES})
+target_link_libraries(${PROJECT_NAME}_bin ${LIBIGL_LIBRARIES} ${LIBIGL_EXTRA_LIBRARIES})

+ 5 - 8
tutorial/303_LaplaceEquation/CMakeLists.txt

@@ -1,11 +1,8 @@
 cmake_minimum_required(VERSION 2.6)
 project(303_LaplaceEquation)
 
-include("../CMakeLists.shared")
-
-set(SOURCES
-${PROJECT_SOURCE_DIR}/main.cpp
-)
-
-add_executable(${PROJECT_NAME}_bin ${SOURCES} ${SHARED_SOURCES})
-target_link_libraries(${PROJECT_NAME}_bin ${SHARED_LIBRARIES})
+include_directories(${LIBIGL_INCLUDE_DIRS})
+add_executable(${PROJECT_NAME}_bin
+  main.cpp
+${LIBIGL_EXTRA_SOURCES})
+target_link_libraries(${PROJECT_NAME}_bin ${LIBIGL_LIBRARIES} ${LIBIGL_EXTRA_LIBRARIES})

+ 5 - 8
tutorial/304_LinearEqualityConstraints/CMakeLists.txt

@@ -1,11 +1,8 @@
 cmake_minimum_required(VERSION 2.6)
 project(304_LinearEqualityConstraints)
 
-include("../CMakeLists.shared")
-
-set(SOURCES
-${PROJECT_SOURCE_DIR}/main.cpp
-)
-
-add_executable(${PROJECT_NAME}_bin ${SOURCES} ${SHARED_SOURCES})
-target_link_libraries(${PROJECT_NAME}_bin ${SHARED_LIBRARIES})
+include_directories(${LIBIGL_INCLUDE_DIRS})
+add_executable(${PROJECT_NAME}_bin
+  main.cpp
+${LIBIGL_EXTRA_SOURCES})
+target_link_libraries(${PROJECT_NAME}_bin ${LIBIGL_LIBRARIES} ${LIBIGL_EXTRA_LIBRARIES})

+ 5 - 8
tutorial/305_QuadraticProgramming/CMakeLists.txt

@@ -1,11 +1,8 @@
 cmake_minimum_required(VERSION 2.6)
 project(305_QuadraticProgramming)
 
-include("../CMakeLists.shared")
-
-set(SOURCES
-${PROJECT_SOURCE_DIR}/main.cpp
-)
-
-add_executable(${PROJECT_NAME}_bin ${SOURCES} ${SHARED_SOURCES})
-target_link_libraries(${PROJECT_NAME}_bin ${SHARED_LIBRARIES})
+include_directories(${LIBIGL_INCLUDE_DIRS})
+add_executable(${PROJECT_NAME}_bin
+  main.cpp
+${LIBIGL_EXTRA_SOURCES})
+target_link_libraries(${PROJECT_NAME}_bin ${LIBIGL_LIBRARIES} ${LIBIGL_EXTRA_LIBRARIES})

+ 5 - 8
tutorial/306_EigenDecomposition/CMakeLists.txt

@@ -1,11 +1,8 @@
 cmake_minimum_required(VERSION 2.6)
 project(306_EigenDecomposition)
 
-include("../CMakeLists.shared")
-
-set(SOURCES
-${PROJECT_SOURCE_DIR}/main.cpp
-)
-
-add_executable(${PROJECT_NAME}_bin ${SOURCES} ${SHARED_SOURCES})
-target_link_libraries(${PROJECT_NAME}_bin ${SHARED_LIBRARIES})
+include_directories(${LIBIGL_INCLUDE_DIRS})
+add_executable(${PROJECT_NAME}_bin
+  main.cpp
+${LIBIGL_EXTRA_SOURCES})
+target_link_libraries(${PROJECT_NAME}_bin ${LIBIGL_LIBRARIES} ${LIBIGL_EXTRA_LIBRARIES})

+ 5 - 8
tutorial/401_BiharmonicDeformation/CMakeLists.txt

@@ -1,11 +1,8 @@
 cmake_minimum_required(VERSION 2.6)
 project(401_BiharmonicDeformation)
 
-include("../CMakeLists.shared")
-
-set(SOURCES
-${PROJECT_SOURCE_DIR}/main.cpp
-)
-
-add_executable(${PROJECT_NAME}_bin ${SOURCES} ${SHARED_SOURCES})
-target_link_libraries(${PROJECT_NAME}_bin ${SHARED_LIBRARIES})
+include_directories(${LIBIGL_INCLUDE_DIRS})
+add_executable(${PROJECT_NAME}_bin
+  main.cpp
+${LIBIGL_EXTRA_SOURCES})
+target_link_libraries(${PROJECT_NAME}_bin ${LIBIGL_LIBRARIES} ${LIBIGL_EXTRA_LIBRARIES})

+ 5 - 8
tutorial/402_PolyharmonicDeformation/CMakeLists.txt

@@ -1,11 +1,8 @@
 cmake_minimum_required(VERSION 2.6)
 project(402_PolyharmonicDeformation)
 
-include("../CMakeLists.shared")
-
-set(SOURCES
-${PROJECT_SOURCE_DIR}/main.cpp
-)
-
-add_executable(${PROJECT_NAME}_bin ${SOURCES} ${SHARED_SOURCES})
-target_link_libraries(${PROJECT_NAME}_bin ${SHARED_LIBRARIES})
+include_directories(${LIBIGL_INCLUDE_DIRS})
+add_executable(${PROJECT_NAME}_bin
+  main.cpp
+${LIBIGL_EXTRA_SOURCES})
+target_link_libraries(${PROJECT_NAME}_bin ${LIBIGL_LIBRARIES} ${LIBIGL_EXTRA_LIBRARIES})

+ 6 - 19
tutorial/403_BoundedBiharmonicWeights/CMakeLists.txt

@@ -1,22 +1,9 @@
 cmake_minimum_required(VERSION 2.6)
 project(403_BoundedBiharmonicWeights)
 
-include("../CMakeLists.shared")
-
-find_package(MOSEK QUIET)
-if(MOSEK_FOUND)
-  include_directories( ${MOSEK_INCLUDE_DIR} )
-else(MOSEK_FOUND)
-  add_definitions(-DIGL_NO_MOSEK)
-  if(LIBIGL_USE_STATIC_LIBRARY)
-    set(LIBIGLMOSEK_LIBRARY "")
-  endif(LIBIGL_USE_STATIC_LIBRARY)
-  set(MOSEK_LIBRARIES "")
-endif(MOSEK_FOUND)
-
-set(SOURCES
-${PROJECT_SOURCE_DIR}/main.cpp
-)
-
-add_executable(${PROJECT_NAME}_bin ${SOURCES} ${SHARED_SOURCES})
-target_link_libraries(${PROJECT_NAME}_bin ${SHARED_LIBRARIES} ${MOSEK_LIBRARIES})
+include_directories(${LIBIGL_INCLUDE_DIRS})
+add_definitions(${LIBIGL_DEFINITIONS})
+add_executable(${PROJECT_NAME}_bin
+  main.cpp
+${LIBIGL_EXTRA_SOURCES})
+target_link_libraries(${PROJECT_NAME}_bin ${LIBIGL_LIBRARIES} ${LIBIGL_EXTRA_LIBRARIES})

+ 5 - 8
tutorial/404_DualQuaternionSkinning/CMakeLists.txt

@@ -1,11 +1,8 @@
 cmake_minimum_required(VERSION 2.6)
 project(404_DualQuaternionSkinning)
 
-include("../CMakeLists.shared")
-
-set(SOURCES
-${PROJECT_SOURCE_DIR}/main.cpp
-)
-
-add_executable(${PROJECT_NAME}_bin ${SOURCES} ${SHARED_SOURCES})
-target_link_libraries(${PROJECT_NAME}_bin ${SHARED_LIBRARIES})
+include_directories(${LIBIGL_INCLUDE_DIRS})
+add_executable(${PROJECT_NAME}_bin
+  main.cpp
+${LIBIGL_EXTRA_SOURCES})
+target_link_libraries(${PROJECT_NAME}_bin ${LIBIGL_LIBRARIES} ${LIBIGL_EXTRA_LIBRARIES})

+ 5 - 8
tutorial/405_AsRigidAsPossible/CMakeLists.txt

@@ -1,11 +1,8 @@
 cmake_minimum_required(VERSION 2.6)
 project(405_AsRigidAsPossible)
 
-include("../CMakeLists.shared")
-
-set(SOURCES
-${PROJECT_SOURCE_DIR}/main.cpp
-)
-
-add_executable(${PROJECT_NAME}_bin ${SOURCES} ${SHARED_SOURCES})
-target_link_libraries(${PROJECT_NAME}_bin ${SHARED_LIBRARIES})
+include_directories(${LIBIGL_INCLUDE_DIRS})
+add_executable(${PROJECT_NAME}_bin
+  main.cpp
+${LIBIGL_EXTRA_SOURCES})
+target_link_libraries(${PROJECT_NAME}_bin ${LIBIGL_LIBRARIES} ${LIBIGL_EXTRA_LIBRARIES})

+ 5 - 8
tutorial/406_FastAutomaticSkinningTransformations/CMakeLists.txt

@@ -1,11 +1,8 @@
 cmake_minimum_required(VERSION 2.6)
 project(406_FastAutomaticSkinningTransformations)
 
-include("../CMakeLists.shared")
-
-set(SOURCES
-${PROJECT_SOURCE_DIR}/main.cpp
-)
-
-add_executable(${PROJECT_NAME}_bin ${SOURCES} ${SHARED_SOURCES})
-target_link_libraries(${PROJECT_NAME}_bin ${SHARED_LIBRARIES})
+include_directories(${LIBIGL_INCLUDE_DIRS})
+add_executable(${PROJECT_NAME}_bin
+  main.cpp
+${LIBIGL_EXTRA_SOURCES})
+target_link_libraries(${PROJECT_NAME}_bin ${LIBIGL_LIBRARIES} ${LIBIGL_EXTRA_LIBRARIES})

+ 5 - 8
tutorial/407_BiharmonicCoordinates/CMakeLists.txt

@@ -1,11 +1,8 @@
 cmake_minimum_required(VERSION 2.6)
 project(407_BiharmonicCoordinates)
 
-include("../CMakeLists.shared")
-
-set(SOURCES
-${PROJECT_SOURCE_DIR}/main.cpp
-)
-
-add_executable(${PROJECT_NAME}_bin ${SOURCES} ${SHARED_SOURCES})
-target_link_libraries(${PROJECT_NAME}_bin ${SHARED_LIBRARIES})
+include_directories(${LIBIGL_INCLUDE_DIRS})
+add_executable(${PROJECT_NAME}_bin
+  main.cpp
+${LIBIGL_EXTRA_SOURCES})
+target_link_libraries(${PROJECT_NAME}_bin ${LIBIGL_LIBRARIES} ${LIBIGL_EXTRA_LIBRARIES})

+ 5 - 8
tutorial/501_HarmonicParam/CMakeLists.txt

@@ -1,11 +1,8 @@
 cmake_minimum_required(VERSION 2.6)
 project(501_HarmonicParam)
 
-include("../CMakeLists.shared")
-
-set(SOURCES
-${PROJECT_SOURCE_DIR}/main.cpp
-)
-
-add_executable(${PROJECT_NAME}_bin ${SOURCES} ${SHARED_SOURCES})
-target_link_libraries(${PROJECT_NAME}_bin ${SHARED_LIBRARIES})
+include_directories(${LIBIGL_INCLUDE_DIRS})
+add_executable(${PROJECT_NAME}_bin
+  main.cpp
+${LIBIGL_EXTRA_SOURCES})
+target_link_libraries(${PROJECT_NAME}_bin ${LIBIGL_LIBRARIES} ${LIBIGL_EXTRA_LIBRARIES})

+ 5 - 8
tutorial/502_LSCMParam/CMakeLists.txt

@@ -1,11 +1,8 @@
 cmake_minimum_required(VERSION 2.6)
 project(502_LSCMParam)
 
-include("../CMakeLists.shared")
-
-set(SOURCES
-${PROJECT_SOURCE_DIR}/main.cpp
-)
-
-add_executable(${PROJECT_NAME}_bin ${SOURCES} ${SHARED_SOURCES})
-target_link_libraries(${PROJECT_NAME}_bin ${SHARED_LIBRARIES})
+include_directories(${LIBIGL_INCLUDE_DIRS})
+add_executable(${PROJECT_NAME}_bin
+  main.cpp
+${LIBIGL_EXTRA_SOURCES})
+target_link_libraries(${PROJECT_NAME}_bin ${LIBIGL_LIBRARIES} ${LIBIGL_EXTRA_LIBRARIES})

+ 5 - 8
tutorial/503_ARAPParam/CMakeLists.txt

@@ -1,11 +1,8 @@
 cmake_minimum_required(VERSION 2.6)
 project(503_ARAPParam)
 
-include("../CMakeLists.shared")
-
-set(SOURCES
-${PROJECT_SOURCE_DIR}/main.cpp
-)
-
-add_executable(${PROJECT_NAME}_bin ${SOURCES} ${SHARED_SOURCES})
-target_link_libraries(${PROJECT_NAME}_bin ${SHARED_LIBRARIES})
+include_directories(${LIBIGL_INCLUDE_DIRS})
+add_executable(${PROJECT_NAME}_bin
+  main.cpp
+${LIBIGL_EXTRA_SOURCES})
+target_link_libraries(${PROJECT_NAME}_bin ${LIBIGL_LIBRARIES} ${LIBIGL_EXTRA_LIBRARIES})

+ 5 - 8
tutorial/504_NRosyDesign/CMakeLists.txt

@@ -1,11 +1,8 @@
 cmake_minimum_required(VERSION 2.6)
 project(504_NRosyDesign)
 
-include("../CMakeLists.shared")
-
-set(SOURCES
-${PROJECT_SOURCE_DIR}/main.cpp
-)
-
-add_executable(${PROJECT_NAME}_bin ${SOURCES} ${SHARED_SOURCES})
-target_link_libraries(${PROJECT_NAME}_bin ${SHARED_LIBRARIES})
+include_directories(${LIBIGL_INCLUDE_DIRS})
+add_executable(${PROJECT_NAME}_bin
+  main.cpp
+${LIBIGL_EXTRA_SOURCES})
+target_link_libraries(${PROJECT_NAME}_bin ${LIBIGL_LIBRARIES} ${LIBIGL_EXTRA_LIBRARIES})

+ 5 - 8
tutorial/505_MIQ/CMakeLists.txt

@@ -1,11 +1,8 @@
 cmake_minimum_required(VERSION 2.6)
 project(505_MIQ)
 
-include("../CMakeLists.shared")
-
-set(SOURCES
-${PROJECT_SOURCE_DIR}/main.cpp
-)
-
-add_executable(${PROJECT_NAME}_bin ${SOURCES} ${SHARED_SOURCES})
-target_link_libraries(${PROJECT_NAME}_bin ${SHARED_LIBRARIES})
+include_directories(${LIBIGL_INCLUDE_DIRS})
+add_executable(${PROJECT_NAME}_bin
+  main.cpp
+${LIBIGL_EXTRA_SOURCES})
+target_link_libraries(${PROJECT_NAME}_bin ${LIBIGL_LIBRARIES} ${LIBIGL_EXTRA_LIBRARIES})

+ 5 - 8
tutorial/506_FrameField/CMakeLists.txt

@@ -1,11 +1,8 @@
 cmake_minimum_required(VERSION 2.6)
 project(506_FrameField)
 
-include("../CMakeLists.shared")
-
-set(SOURCES
-${PROJECT_SOURCE_DIR}/main.cpp
-)
-
-add_executable(${PROJECT_NAME}_bin ${SOURCES} ${SHARED_SOURCES})
-target_link_libraries(${PROJECT_NAME}_bin ${SHARED_LIBRARIES})
+include_directories(${LIBIGL_INCLUDE_DIRS})
+add_executable(${PROJECT_NAME}_bin
+  main.cpp
+${LIBIGL_EXTRA_SOURCES})
+target_link_libraries(${PROJECT_NAME}_bin ${LIBIGL_LIBRARIES} ${LIBIGL_EXTRA_LIBRARIES})

+ 5 - 8
tutorial/507_PolyVectorField/CMakeLists.txt

@@ -1,11 +1,8 @@
 cmake_minimum_required(VERSION 2.6)
 project(507_PolyVectorField)
 
-include("../CMakeLists.shared")
-
-set(SOURCES
-${PROJECT_SOURCE_DIR}/main.cpp
-)
-
-add_executable(${PROJECT_NAME}_bin ${SOURCES} ${SHARED_SOURCES})
-target_link_libraries(${PROJECT_NAME}_bin ${SHARED_LIBRARIES})
+include_directories(${LIBIGL_INCLUDE_DIRS})
+add_executable(${PROJECT_NAME}_bin
+  main.cpp
+${LIBIGL_EXTRA_SOURCES})
+target_link_libraries(${PROJECT_NAME}_bin ${LIBIGL_LIBRARIES} ${LIBIGL_EXTRA_LIBRARIES})

+ 5 - 8
tutorial/508_ConjugateField/CMakeLists.txt

@@ -1,11 +1,8 @@
 cmake_minimum_required(VERSION 2.6)
 project(508_ConjugateField)
 
-include("../CMakeLists.shared")
-
-set(SOURCES
-${PROJECT_SOURCE_DIR}/main.cpp
-)
-
-add_executable(${PROJECT_NAME}_bin ${SOURCES} ${SHARED_SOURCES})
-target_link_libraries(${PROJECT_NAME}_bin ${SHARED_LIBRARIES})
+include_directories(${LIBIGL_INCLUDE_DIRS})
+add_executable(${PROJECT_NAME}_bin
+  main.cpp
+${LIBIGL_EXTRA_SOURCES})
+target_link_libraries(${PROJECT_NAME}_bin ${LIBIGL_LIBRARIES} ${LIBIGL_EXTRA_LIBRARIES})

+ 5 - 8
tutorial/509_Planarization/CMakeLists.txt

@@ -1,11 +1,8 @@
 cmake_minimum_required(VERSION 2.6)
 project(509_Planarization)
 
-include("../CMakeLists.shared")
-
-set(SOURCES
-${PROJECT_SOURCE_DIR}/main.cpp
-)
-
-add_executable(${PROJECT_NAME}_bin ${SOURCES} ${SHARED_SOURCES})
-target_link_libraries(${PROJECT_NAME}_bin ${SHARED_LIBRARIES})
+include_directories(${LIBIGL_INCLUDE_DIRS})
+add_executable(${PROJECT_NAME}_bin
+  main.cpp
+${LIBIGL_EXTRA_SOURCES})
+target_link_libraries(${PROJECT_NAME}_bin ${LIBIGL_LIBRARIES} ${LIBIGL_EXTRA_LIBRARIES})

+ 5 - 8
tutorial/510_Integrable/CMakeLists.txt

@@ -1,11 +1,8 @@
 cmake_minimum_required(VERSION 2.6)
 project(510_Integrable)
 
-include("../CMakeLists.shared")
-
-set(SOURCES
-${PROJECT_SOURCE_DIR}/main.cpp
-)
-
-add_executable(${PROJECT_NAME}_bin ${SOURCES} ${SHARED_SOURCES})
-target_link_libraries(${PROJECT_NAME}_bin ${SHARED_LIBRARIES})
+include_directories(${LIBIGL_INCLUDE_DIRS})
+add_executable(${PROJECT_NAME}_bin
+  main.cpp
+${LIBIGL_EXTRA_SOURCES})
+target_link_libraries(${PROJECT_NAME}_bin ${LIBIGL_LIBRARIES} ${LIBIGL_EXTRA_LIBRARIES})

+ 5 - 11
tutorial/601_Serialization/CMakeLists.txt

@@ -1,14 +1,8 @@
 cmake_minimum_required(VERSION 2.6)
 project(601_Serialization)
 
-include("../CMakeLists.shared")
-
-find_package(TINYXML2 REQUIRED)
-include_directories( ${TINYXML2_INCLUDE_DIR})
-
-set(SOURCES
-${PROJECT_SOURCE_DIR}/main.cpp
-)
-
-add_executable(${PROJECT_NAME}_bin ${SOURCES} ${SHARED_SOURCES} ${TINYXML2_SOURCES})
-target_link_libraries(${PROJECT_NAME}_bin ${SHARED_LIBRARIES})
+include_directories(${LIBIGL_INCLUDE_DIRS})
+add_executable(${PROJECT_NAME}_bin
+  main.cpp
+${LIBIGL_EXTRA_SOURCES})
+target_link_libraries(${PROJECT_NAME}_bin ${LIBIGL_LIBRARIES} ${LIBIGL_EXTRA_LIBRARIES})

+ 5 - 17
tutorial/602_Matlab/CMakeLists.txt

@@ -1,20 +1,8 @@
 cmake_minimum_required(VERSION 2.6)
 project(602_Matlab)
 
-include("../CMakeLists.shared")
-
-find_package(MATLAB REQUIRED)
-include_directories( ${MATLAB_INCLUDE_DIR} )
-
-set(SOURCES
-${PROJECT_SOURCE_DIR}/main.cpp
-)
-
-# Alec: This seems like a clang specific thing and also seems to have an extra
-# bracket.
-# if(APPLE)
-#   set(CMAKE_EXE_LINKER_FLAGS "-rpath ${MATLAB_INCLUDE_DIR}/../../bin/maci64"})
-# endif (APPLE) #APPLE
-
-add_executable(${PROJECT_NAME}_bin ${SOURCES} ${SHARED_SOURCES})
-target_link_libraries(${PROJECT_NAME}_bin ${SHARED_LIBRARIES} ${MATLAB_LIBRARIES})
+include_directories(${LIBIGL_INCLUDE_DIRS})
+add_executable(${PROJECT_NAME}_bin
+  main.cpp
+${LIBIGL_EXTRA_SOURCES})
+target_link_libraries(${PROJECT_NAME}_bin ${LIBIGL_LIBRARIES} ${LIBIGL_EXTRA_LIBRARIES})

+ 5 - 11
tutorial/604_Triangle/CMakeLists.txt

@@ -1,14 +1,8 @@
 cmake_minimum_required(VERSION 2.6)
 project(604_Triangle)
 
-include("../CMakeLists.shared")
-find_package(TRIANGLE REQUIRED)
-
-include_directories( ${TRIANGLE_INCLUDE_DIR})
-
-set(SOURCES
-${PROJECT_SOURCE_DIR}/main.cpp
-)
-
-add_executable(${PROJECT_NAME}_bin ${SOURCES} ${SHARED_SOURCES} ${TRIANGLE_SOURCES})
-target_link_libraries(${PROJECT_NAME}_bin ${SHARED_LIBRARIES})
+include_directories(${LIBIGL_INCLUDE_DIRS})
+add_executable(${PROJECT_NAME}_bin
+  main.cpp
+${LIBIGL_EXTRA_SOURCES})
+target_link_libraries(${PROJECT_NAME}_bin ${LIBIGL_LIBRARIES} ${LIBIGL_EXTRA_LIBRARIES})

+ 5 - 11
tutorial/605_Tetgen/CMakeLists.txt

@@ -1,14 +1,8 @@
 cmake_minimum_required(VERSION 2.6)
 project(605_Tetgen)
 
-include("../CMakeLists.shared")
-find_package(TETGEN REQUIRED)
-
-include_directories( ${TETGEN_INCLUDE_DIR})
-
-set(SOURCES
-${PROJECT_SOURCE_DIR}/main.cpp
-)
-
-add_executable(${PROJECT_NAME}_bin ${SOURCES} ${SHARED_SOURCES} ${TETGEN_SOURCES})
-target_link_libraries(${PROJECT_NAME}_bin ${SHARED_LIBRARIES})
+include_directories(${LIBIGL_INCLUDE_DIRS})
+add_executable(${PROJECT_NAME}_bin
+  main.cpp
+${LIBIGL_EXTRA_SOURCES})
+target_link_libraries(${PROJECT_NAME}_bin ${LIBIGL_LIBRARIES} ${LIBIGL_EXTRA_LIBRARIES})

+ 5 - 8
tutorial/606_AmbientOcclusion/CMakeLists.txt

@@ -1,11 +1,8 @@
 cmake_minimum_required(VERSION 2.6)
 project(606_AmbientOcclusion)
 
-include("../CMakeLists.shared")
-
-set(SOURCES
-${PROJECT_SOURCE_DIR}/main.cpp
-)
-
-add_executable(${PROJECT_NAME}_bin ${SOURCES} ${SHARED_SOURCES})
-target_link_libraries(${PROJECT_NAME}_bin ${SHARED_LIBRARIES})
+include_directories(${LIBIGL_INCLUDE_DIRS})
+add_executable(${PROJECT_NAME}_bin
+  main.cpp
+${LIBIGL_EXTRA_SOURCES})
+target_link_libraries(${PROJECT_NAME}_bin ${LIBIGL_LIBRARIES} ${LIBIGL_EXTRA_LIBRARIES})

+ 5 - 8
tutorial/607_Picking/CMakeLists.txt

@@ -1,11 +1,8 @@
 cmake_minimum_required(VERSION 2.6)
 project(607_Picking)
 
-include("../CMakeLists.shared")
-
-set(SOURCES
-${PROJECT_SOURCE_DIR}/main.cpp
-)
-
-add_executable(${PROJECT_NAME}_bin ${SOURCES} ${SHARED_SOURCES})
-target_link_libraries(${PROJECT_NAME}_bin ${SHARED_LIBRARIES})
+include_directories(${LIBIGL_INCLUDE_DIRS})
+add_executable(${PROJECT_NAME}_bin
+  main.cpp
+${LIBIGL_EXTRA_SOURCES})
+target_link_libraries(${PROJECT_NAME}_bin ${LIBIGL_LIBRARIES} ${LIBIGL_EXTRA_LIBRARIES})

+ 12 - 11
tutorial/608_LIM/CMakeLists.txt

@@ -1,14 +1,15 @@
 cmake_minimum_required(VERSION 2.6)
 project(608_LIM)
 
-include("../CMakeLists.shared")
-find_package(LIM REQUIRED)
-
-include_directories(${LIM_INCLUDE_DIR})
-
-set(SOURCES
-${PROJECT_SOURCE_DIR}/main.cpp
-)
-
-add_executable(${PROJECT_NAME}_bin ${SOURCES} ${SHARED_SOURCES} ${LIM_SOURCES})
-target_link_libraries(${PROJECT_NAME}_bin ${SHARED_LIBRARIES})
+### OpenMP ###
+find_package(OpenMP)
+if(OPENMP_FOUND AND NOT WIN32)
+  set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} ${OpenMP_C_FLAGS}")
+  set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} ${OpenMP_CXX_FLAGS}")
+endif()
+
+include_directories(${LIBIGL_INCLUDE_DIRS})
+add_executable(${PROJECT_NAME}_bin
+  main.cpp
+${LIBIGL_EXTRA_SOURCES})
+target_link_libraries(${PROJECT_NAME}_bin ${LIBIGL_LIBRARIES} ${LIBIGL_EXTRA_LIBRARIES})

+ 8 - 29
tutorial/609_Boolean/CMakeLists.txt

@@ -1,32 +1,11 @@
 cmake_minimum_required(VERSION 2.6)
 project(609_Boolean)
 
-find_package(CGAL REQUIRED)
-include(${CGAL_USE_FILE})
-# CGAL's monkeying with all of the flags. Rather than change the CGAL_USE_FILE
-# just get ride of this flag.
-if ("${CMAKE_CXX_COMPILER_ID}" STREQUAL "GNU")
-  remove_cxx_flag("-stdlib=libc++")
-endif()
-IF(MSVC)
-  SET(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} /MP") ### Enable parallel compilation for Visual Studio
-  SET(CMAKE_RUNTIME_OUTPUT_DIRECTORY_DEBUG ${CMAKE_BINARY_DIR} )
-  SET(CMAKE_RUNTIME_OUTPUT_DIRECTORY_RELEASE ${CMAKE_BINARY_DIR} )
-ELSE(MSVC)
-  SET(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -std=c++11") #### Libigl requires a modern C++ compiler that supports c++11
-  SET(CMAKE_RUNTIME_OUTPUT_DIRECTORY "../" )
-ENDIF(MSVC)
-
-# This is absolutely necessary for Exact Construction
-
-# for some reason must come after cgal include. I think that it's overwriting
-# come flags like CXX_FLAGS
-#set(CMAKELISTS_SHARED_INCLUDED FALSE)
-include("../CMakeLists.shared")
-
-set(SOURCES
-${PROJECT_SOURCE_DIR}/main.cpp
-)
-
-add_executable(${PROJECT_NAME}_bin ${SOURCES} ${SHARED_SOURCES})
-target_link_libraries(${PROJECT_NAME}_bin ${SHARED_LIBRARIES} ${CGAL_LIBRARIES})
+#find_package(CGAL REQUIRED)
+#include(${CGAL_USE_FILE})
+
+include_directories(${LIBIGL_INCLUDE_DIRS})
+add_executable(${PROJECT_NAME}_bin
+  main.cpp
+${LIBIGL_EXTRA_SOURCES})
+target_link_libraries(${PROJECT_NAME}_bin ${LIBIGL_LIBRARIES} ${LIBIGL_EXTRA_LIBRARIES})

+ 7 - 22
tutorial/610_CSGTree/CMakeLists.txt

@@ -1,32 +1,17 @@
 cmake_minimum_required(VERSION 2.6)
 project(610_CSGTree)
 
-find_package(CGAL REQUIRED)
-include(${CGAL_USE_FILE})
-# CGAL's monkeying with all of the flags. Rather than change the CGAL_USE_FILE
-# just get ride of this flag.
-if ("${CMAKE_CXX_COMPILER_ID}" STREQUAL "GNU")
-  remove_cxx_flag("-stdlib=libc++")
-endif()
-IF(MSVC)
-  SET(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} /MP") ### Enable parallel compilation for Visual Studio
-  SET(CMAKE_RUNTIME_OUTPUT_DIRECTORY_DEBUG ${CMAKE_BINARY_DIR} )
-  SET(CMAKE_RUNTIME_OUTPUT_DIRECTORY_RELEASE ${CMAKE_BINARY_DIR} )
-ELSE(MSVC)
-  SET(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -std=c++11") #### Libigl requires a modern C++ compiler that supports c++11
-  SET(CMAKE_RUNTIME_OUTPUT_DIRECTORY "../" )
-ENDIF(MSVC)
-
+#find_package(CGAL REQUIRED)
+#include(${CGAL_USE_FILE})
 # This is absolutely necessary for Exact Construction
 
 # for some reason must come after cgal include. I think that it's overwriting
 # come flags like CXX_FLAGS
 #set(CMAKELISTS_SHARED_INCLUDED FALSE)
-include("../CMakeLists.shared")
 
-set(SOURCES
-${PROJECT_SOURCE_DIR}/main.cpp
-)
 
-add_executable(${PROJECT_NAME}_bin ${SOURCES} ${SHARED_SOURCES})
-target_link_libraries(${PROJECT_NAME}_bin ${SHARED_LIBRARIES} ${CGAL_LIBRARIES})
+include_directories(${LIBIGL_INCLUDE_DIRS})
+add_executable(${PROJECT_NAME}_bin
+  main.cpp
+${LIBIGL_EXTRA_SOURCES})
+target_link_libraries(${PROJECT_NAME}_bin ${LIBIGL_LIBRARIES} ${LIBIGL_EXTRA_LIBRARIES})

+ 5 - 8
tutorial/701_Statistics/CMakeLists.txt

@@ -1,11 +1,8 @@
 cmake_minimum_required(VERSION 2.6)
 project(701_Statistics)
 
-include("../CMakeLists.shared")
-
-set(SOURCES
-${PROJECT_SOURCE_DIR}/main.cpp
-)
-
-add_executable(${PROJECT_NAME}_bin ${SOURCES} ${SHARED_SOURCES})
-target_link_libraries(${PROJECT_NAME}_bin ${SHARED_LIBRARIES})
+include_directories(${LIBIGL_INCLUDE_DIRS})
+add_executable(${PROJECT_NAME}_bin
+  main.cpp
+${LIBIGL_EXTRA_SOURCES})
+target_link_libraries(${PROJECT_NAME}_bin ${LIBIGL_LIBRARIES} ${LIBIGL_EXTRA_LIBRARIES})

+ 5 - 8
tutorial/702_WindingNumber/CMakeLists.txt

@@ -1,11 +1,8 @@
 cmake_minimum_required(VERSION 2.6)
 project(702_WindingNumber)
 
-include("../CMakeLists.shared")
-
-set(SOURCES
-${PROJECT_SOURCE_DIR}/main.cpp
-)
-
-add_executable(${PROJECT_NAME}_bin ${SOURCES} ${SHARED_SOURCES})
-target_link_libraries(${PROJECT_NAME}_bin ${SHARED_LIBRARIES})
+include_directories(${LIBIGL_INCLUDE_DIRS})
+add_executable(${PROJECT_NAME}_bin
+  main.cpp
+${LIBIGL_EXTRA_SOURCES})
+target_link_libraries(${PROJECT_NAME}_bin ${LIBIGL_LIBRARIES} ${LIBIGL_EXTRA_LIBRARIES})

+ 5 - 8
tutorial/703_Decimation/CMakeLists.txt

@@ -1,11 +1,8 @@
 cmake_minimum_required(VERSION 2.6)
 project(703_Decimation)
 
-include("../CMakeLists.shared")
-
-set(SOURCES
-${PROJECT_SOURCE_DIR}/main.cpp
-)
-
-add_executable(${PROJECT_NAME}_bin ${SOURCES} ${SHARED_SOURCES})
-target_link_libraries(${PROJECT_NAME}_bin ${SHARED_LIBRARIES})
+include_directories(${LIBIGL_INCLUDE_DIRS})
+add_executable(${PROJECT_NAME}_bin
+  main.cpp
+${LIBIGL_EXTRA_SOURCES})
+target_link_libraries(${PROJECT_NAME}_bin ${LIBIGL_LIBRARIES} ${LIBIGL_EXTRA_LIBRARIES})

+ 5 - 8
tutorial/704_SignedDistance/CMakeLists.txt

@@ -1,11 +1,8 @@
 cmake_minimum_required(VERSION 2.6)
 project(704_SignedDistance)
 
-include("../CMakeLists.shared")
-
-set(SOURCES
-${PROJECT_SOURCE_DIR}/main.cpp
-)
-
-add_executable(${PROJECT_NAME}_bin ${SOURCES} ${SHARED_SOURCES})
-target_link_libraries(${PROJECT_NAME}_bin ${SHARED_LIBRARIES})
+include_directories(${LIBIGL_INCLUDE_DIRS})
+add_executable(${PROJECT_NAME}_bin
+  main.cpp
+${LIBIGL_EXTRA_SOURCES})
+target_link_libraries(${PROJECT_NAME}_bin ${LIBIGL_LIBRARIES} ${LIBIGL_EXTRA_LIBRARIES})

+ 5 - 8
tutorial/705_MarchingCubes/CMakeLists.txt

@@ -1,11 +1,8 @@
 cmake_minimum_required(VERSION 2.6)
 project(705_MarchingCubes)
 
-include("../CMakeLists.shared")
-
-set(SOURCES
-${PROJECT_SOURCE_DIR}/main.cpp
-)
-
-add_executable(${PROJECT_NAME}_bin ${SOURCES} ${SHARED_SOURCES})
-target_link_libraries(${PROJECT_NAME}_bin ${SHARED_LIBRARIES})
+include_directories(${LIBIGL_INCLUDE_DIRS})
+add_executable(${PROJECT_NAME}_bin
+  main.cpp
+${LIBIGL_EXTRA_SOURCES})
+target_link_libraries(${PROJECT_NAME}_bin ${LIBIGL_LIBRARIES} ${LIBIGL_EXTRA_LIBRARIES})

+ 0 - 112
tutorial/CMakeLists.shared

@@ -1,112 +0,0 @@
-# http://stackoverflow.com/a/18234926/148668
-# -stdlib=libc++ breaks gcc (for clang, the correct stdlib will be used with
-# -std=c++11 anyway)
-macro(remove_cxx_flag flag)
-  string(REPLACE "${flag}" "" CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS}")
-endmacro()
-remove_cxx_flag("-stdlib=libc++")
-if(NOT CMAKELISTS_SHARED_INCLUDED)
-set(CMAKELISTS_SHARED_INCLUDED TRUE)
-
-IF(MSVC)
-### Enable parallel compilation for Visual Studio
-  SET(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} /MP")
-ELSE(MSVC)
-#### Libigl requires a modern C++ compiler that supports c++11
-  SET(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -std=c++11")
-ENDIF(MSVC)
-
-find_package(OpenMP)
-if (OPENMP_FOUND AND NOT WIN32)
-  set (CMAKE_C_FLAGS "${CMAKE_C_FLAGS} ${OpenMP_C_FLAGS}")
-  set (CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} ${OpenMP_CXX_FLAGS}")
-endif()
-
-SET(CMAKE_VERBOSE_MAKEFILE ON)
-
-set(CMAKE_MODULE_PATH ${PROJECT_SOURCE_DIR}/../cmake ${PROJECT_SOURCE_DIR}/cmake)
-set(CMAKE_COLOR_MAKEFILE ON)
-
-############################
-## SEPARATE BUILD OPTIONS ##
-############################
-
-find_package(OpenGL REQUIRED)
-find_package(EIGEN REQUIRED)
-find_package(GLFWH REQUIRED)
-#find_package(LIBIGL REQUIRED)
-#find_package(NANOGUI REQUIRED)
-
-if(NOT APPLE)
-	find_package(GLEW REQUIRED)
-endif(NOT APPLE)
-
-if(APPLE)
-	set(CMAKE_CXX_LINK_FLAGS "-framework OpenGL -framework Cocoa -framework IOKit -framework CoreVideo")
-         set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -msse4.2")
-endif (APPLE) #APPLE
-
-if(UNIX AND NOT APPLE)
-  set(CMAKE_CXX_LINK_EXECUTABLE "${CMAKE_CXX_LINK_EXECUTABLE} -lGL -lGLU -lrt -lX11 -lXxf86vm -lXrandr -lpthread -lXi  -lXcursor -lXinerama ")
-  set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -mavx")
-endif(UNIX AND NOT APPLE)
-
-#include_directories( ${NANOGUI_INCLUDE_DIRS} )
-
-
-if(NOT APPLE)
-	include_directories( ${GLEW_INCLUDE_DIR} )
-endif(NOT APPLE)
-
-include_directories( ${EIGEN_INCLUDE_DIR})
-#include_directories( ${LIBIGL_INCLUDE_DIRS})
-include_directories( ${GLFW_INCLUDE_DIR})
-include_directories(
-	/usr/local/include
-	/opt/local/include
-    ${PROJECT_SOURCE_DIR}
-    ${OPENGL_INCLUDE_DIR}
-)
-
-link_directories(
-	/usr/local/lib
-	${EIGEN_DIRS}
-)
-
-#set(CMAKE_CXX_FLAGS -Wall -W -pedantic -std=c99)
-
-# Disable deprecated opengl code from libigl
-add_definitions(-DIGL_OPENGL_4)
-
-IF(CMAKE_BUILD_TYPE MATCHES RELEASE)
-    add_definitions(-DNDEBUG)
-ENDIF(CMAKE_BUILD_TYPE MATCHES RELEASE)
-
-#add_definitions(-DENABLE_XML_SERIALIZATION)
-
-
-
-if (${CMAKE_CXX_COMPILER_ID} STREQUAL "Clang" OR ${CMAKE_CXX_COMPILER_ID} STREQUAL "GNU")
-	set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -std=c++11")
-	set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -Wno-deprecated-register")
-endif()
-
-# set(SHARED_SOURCES ${LIBIGL_SOURCES})
-
-if(NOT APPLE)
-	set(SHARED_SOURCES ${SHARED_SOURCES} ${GLEW_SOURCES})
-endif(NOT APPLE)
-
-# message(FATAL_ERROR ${LIBIGL_SOURCES})
-
-
-set(SHARED_LIBRARIES
-#		${LIBIGL_LIBRARIES}
-		${OPENGL_LIBRARIES}
-#		${NANOGUI_LIBRARY}
-		${EIGEN_LIBRARIES}
-		${GLEW_LIBRARIES}
-#		${GLFW_LIBRARIES}
-)
-
-endif(NOT CMAKELISTS_SHARED_INCLUDED)

+ 133 - 192
tutorial/CMakeLists.txt

@@ -1,211 +1,152 @@
 cmake_minimum_required(VERSION 2.6)
 project(libigl_tutorials)
 
-message("Generated with config types: ${CMAKE_CONFIGURATION_TYPES}")
-
-option(LIBIGL_USE_STATIC_LIBRARY "Use static library" OFF)
-
-if(LIBIGL_USE_STATIC_LIBRARY)
-  add_definitions(-DIGL_STATIC_LIBRARY)
-endif(LIBIGL_USE_STATIC_LIBRARY)
-
-SET(CMAKE_MODULE_PATH ${PROJECT_SOURCE_DIR}/cmake)
+### Compilation flags: adapt to your needs ###
+if(MSVC)
+  set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} /MP /bigobj") ### Enable parallel compilation
+  set(CMAKE_RUNTIME_OUTPUT_DIRECTORY_DEBUG ${CMAKE_BINARY_DIR} )
+  set(CMAKE_RUNTIME_OUTPUT_DIRECTORY_RELEASE ${CMAKE_BINARY_DIR} )
+else()
+  set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -std=c++11") #### Libigl requires a modern C++ compiler that supports c++11
+  set(CMAKE_RUNTIME_OUTPUT_DIRECTORY "../" )
+endif()
 
-IF(MSVC)
-  SET(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} /MP /bigobj /w") ### Enable parallel compilation for Visual Studio
-
-  SET(CMAKE_RUNTIME_OUTPUT_DIRECTORY_DEBUG ${CMAKE_BINARY_DIR} )
-  SET(CMAKE_RUNTIME_OUTPUT_DIRECTORY_RELEASE ${CMAKE_BINARY_DIR} )
-
-ELSE(MSVC)
-  SET(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -std=c++11") #### Libigl requires a modern C++ compiler that supports c++11
-  SET(CMAKE_RUNTIME_OUTPUT_DIRECTORY "../" )
-ENDIF(MSVC)
-
-find_package(CORK QUIET)
-find_package(CGAL QUIET)
-find_package(EMBREE QUIET)
-find_package(LIBCOMISOH QUIET)
-find_package(MATLAB QUIET)
-find_package(MOSEK QUIET)
-find_package(TETGEN QUIET)
-find_package(TINYXML2 QUIET)
-find_package(TRIANGLE QUIET)
-
-message(STATUS "CMAKE_CXX_FLAGS: ${CMAKE_CXX_FLAGS}")
-include("CMakeLists.shared")
-
-#Compile libigl
-add_definitions(-DIGL_NO_OPENGL)
-
-if(LIBIGL_USE_STATIC_LIBRARY)
-  add_subdirectory("../optional" "libigl")
-endif(LIBIGL_USE_STATIC_LIBRARY)
-include_directories("../include")
-
-
-#Compile embree
-option(ENABLE_ISPC_SUPPORT " " OFF)
-option(RTCORE_TASKING_SYSTEM " " INTERNAL)
-
-IF(NOT MSVC) # embree static build is broken on visual studio
-	option(ENABLE_STATIC_LIB " " ON)
-	set(ENABLE_STATIC_LIB ON CACHE BOOL "force static build of embree" FORCE)
-ENDIF(NOT MSVC)
-
-IF(MSVC)
-	option(USE_STATIC_RUNTIME " " OFF)
-	set(USE_STATIC_RUNTIME OFF CACHE BOOL "disable changes in the runtime for VS" FORCE)
-ENDIF(MSVC)
-
-option(ENABLE_TUTORIALS " " OFF)
-
-add_subdirectory("../external/embree/" "embree")
-include_directories("../external/embree/include")
-list(APPEND SHARED_LIBRARIES "embree")
-
-# endif(True)
-
-# if(True)
-#Compile nanogui
-set(NANOGUI_BUILD_PYTHON OFF CACHE BOOL " " FORCE)
-set(NANOGUI_BUILD_EXAMPLE OFF CACHE BOOL " " FORCE)
-set(NANOGUI_BUILD_SHARED OFF CACHE BOOL " " FORCE)
-
-add_subdirectory("../external/nanogui/" "nanogui")
-include_directories("../external/nanogui/include")
-include_directories("../external/nanogui/ext/nanovg/src")
-list(APPEND SHARED_LIBRARIES "nanogui")
-
-
-#Compile CoMISo (if found)
-# NOTE: this cmakefile works only with the
-# comiso available here: https://github.com/libigl/CoMISo
-IF(LIBCOMISO_FOUND)
-
-  list(GET LIBCOMISO_INCLUDE_DIRS 0 COMISO_ROOT)
-  # message( FATAL_ERROR "${COMISO_ROOT}" )
-
-  if(APPLE)
-    find_library(accelerate_library Accelerate)
-    list(APPEND SHARED_LIBRARIES "CoMISo" ${accelerate_library})
-  elseif(UNIX)
-    find_package(BLAS REQUIRED)
-    list(APPEND SHARED_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 SHARED_LIBRARIES "CoMISo" "${COMISO_ROOT}/CoMISo/ext/OpenBLAS-v0.2.14-Win64-int64/lib/libopenblas.dll.a.lib")
-  endif(MSVC)
-
-
-  include_directories("${COMISO_ROOT}/CoMISo/ext/gmm-4.2/include")
-  include_directories("${COMISO_ROOT}/")
-  add_subdirectory("${COMISO_ROOT}/CoMISo/" "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_ROOT}/CoMISo/ext/OpenBLAS-v0.2.14-Win64-int64/bin/libopenblas.dll"
-        "${CMAKE_CURRENT_BINARY_DIR}/libopenblas.dll"
-    COMMAND ${CMAKE_COMMAND} -E copy_if_different
-        "${COMISO_ROOT}/CoMISo/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_ROOT}/CoMISo/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_ROOT}/CoMISo/ext/OpenBLAS-v0.2.14-Win64-int64/bin/libquadmath-0.dll"
-        "${CMAKE_CURRENT_BINARY_DIR}/libquadmath-0.dll")
-  endif(MSVC)
-
-ENDIF(LIBCOMISO_FOUND)
-
-message(STATUS "Linking with: ${LIBIGL_LIBRARIES}")
-list(APPEND SHARED_LIBRARIES ${LIBIGL_LIBRARIES})
-
-# This is necessary to work around the static linking order dependencies on linux
-if(UNIX AND NOT APPLE)
-  set(SHARED_LIBRARIES ${SHARED_LIBRARIES} ${SHARED_LIBRARIES})
-endif(UNIX AND NOT APPLE)
-
-#message(FATAL_ERROR ${SHARED_LIBRARIES})
-
-# Store location of tutorial/shared directory 
+set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -Wno-deprecated-declarations")
+
+
+### libIGL options: choose between header only and comiled static library
+option(LIBIGL_USE_STATIC_LIBRARY "Use LibIGL as static library" 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_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"         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_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_VIEWER      "Use Nanogui Viewer" ON)
+#option(LIBIGL_WITH_XML         "Use XML"            OFF)
+
+### Adding libIGL: choose the path to your local copy libIGL ###
+### This is going to compile everything you requested ###
+add_subdirectory("${PROJECT_SOURCE_DIR}/../cmake" "libigl")
+
+### ligIBL information ###
+message("libIGL includes: ${LIBIGL_INCLUDE_DIRS}")
+message("libIGL libraries: ${LIBIGL_LIBRARIES}")
+message("libIGL extra sources: ${LIBIGL_EXTRA_SOURCES}")
+message("libIGL extra libraries: ${LIBIGL_EXTRA_LIBRARIES}")
+message("libIGL definitions: ${LIBIGL_DEFINITIONS}")
+
+### Choose which chapters to compile ###
+option(TUTORIALS_CHAPTER1 "Compile chapter 1" ON)
+option(TUTORIALS_CHAPTER2 "Compile chapter 2" OFF)
+option(TUTORIALS_CHAPTER3 "Compile chapter 3" OFF)
+option(TUTORIALS_CHAPTER4 "Compile chapter 4" OFF)
+option(TUTORIALS_CHAPTER5 "Compile chapter 5" OFF)
+option(TUTORIALS_CHAPTER6 "Compile chapter 6" OFF)
+option(TUTORIALS_CHAPTER7 "Compile chapter 7" OFF)
+
+# Store location of tutorial/shared directory
 set(TUTORIAL_SHARED_PATH ${CMAKE_CURRENT_SOURCE_DIR}/shared CACHE PATH "location of shared tutorial resources")
 add_definitions("-DTUTORIAL_SHARED_PATH=\"${TUTORIAL_SHARED_PATH}\"")
 
+include_directories(${CMAKE_CURRENT_SOURCE_DIR})
+
 # Chapter 1
-add_subdirectory("101_FileIO")
-add_subdirectory("102_DrawMesh")
-add_subdirectory("103_Events")
-add_subdirectory("104_Colors")
-add_subdirectory("105_Overlays")
-add_subdirectory("106_ViewerMenu")
+if(TUTORIALS_CHAPTER1)
+  add_subdirectory("101_FileIO")
+  add_subdirectory("102_DrawMesh")
+  add_subdirectory("103_Events")
+  add_subdirectory("104_Colors")
+  add_subdirectory("105_Overlays")
+  add_subdirectory("106_ViewerMenu")
+endif()
 
 # Chapter 2
-add_subdirectory("201_Normals")
-add_subdirectory("202_GaussianCurvature")
-add_subdirectory("203_CurvatureDirections")
-add_subdirectory("204_Gradient")
-add_subdirectory("205_Laplacian")
+if(TUTORIALS_CHAPTER2)
+  add_subdirectory("201_Normals")
+  add_subdirectory("202_GaussianCurvature")
+  add_subdirectory("203_CurvatureDirections")
+  add_subdirectory("204_Gradient")
+  add_subdirectory("205_Laplacian")
+endif()
 
 # Chapter 3
-add_subdirectory("301_Slice")
-add_subdirectory("302_Sort")
-add_subdirectory("303_LaplaceEquation")
-add_subdirectory("304_LinearEqualityConstraints")
-add_subdirectory("305_QuadraticProgramming")
-add_subdirectory("306_EigenDecomposition")
+if(TUTORIALS_CHAPTER3)
+  add_subdirectory("301_Slice")
+  add_subdirectory("302_Sort")
+  add_subdirectory("303_LaplaceEquation")
+  add_subdirectory("304_LinearEqualityConstraints")
+  add_subdirectory("305_QuadraticProgramming")
+  add_subdirectory("306_EigenDecomposition")
+endif()
 
 # Chapter 4
-add_subdirectory("401_BiharmonicDeformation")
-add_subdirectory("402_PolyharmonicDeformation")
-add_subdirectory("403_BoundedBiharmonicWeights")
-add_subdirectory("404_DualQuaternionSkinning")
-add_subdirectory("405_AsRigidAsPossible")
-add_subdirectory("406_FastAutomaticSkinningTransformations")
-add_subdirectory("407_BiharmonicCoordinates")
+if(TUTORIALS_CHAPTER4)
+  add_subdirectory("401_BiharmonicDeformation")
+  add_subdirectory("402_PolyharmonicDeformation")
+  add_subdirectory("403_BoundedBiharmonicWeights")
+  add_subdirectory("404_DualQuaternionSkinning")
+  add_subdirectory("405_AsRigidAsPossible")
+  add_subdirectory("406_FastAutomaticSkinningTransformations")
+  add_subdirectory("407_BiharmonicCoordinates")
+endif()
 
 # Chapter 5
-add_subdirectory("501_HarmonicParam")
-add_subdirectory("502_LSCMParam")
-add_subdirectory("503_ARAPParam")
-if(LIBCOMISO_FOUND)
-  add_subdirectory("504_NRosyDesign")
-  add_subdirectory("505_MIQ")
-  add_subdirectory("506_FrameField")
-endif(LIBCOMISO_FOUND)
-add_subdirectory("507_PolyVectorField")
-add_subdirectory("508_ConjugateField")
-add_subdirectory("509_Planarization")
-add_subdirectory("510_Integrable")
+if(TUTORIALS_CHAPTER5)
+  add_subdirectory("501_HarmonicParam")
+  add_subdirectory("502_LSCMParam")
+  add_subdirectory("503_ARAPParam")
+  if(LIBIGL_WITH_COMISO)
+    add_subdirectory("504_NRosyDesign")
+    add_subdirectory("505_MIQ")
+    add_subdirectory("506_FrameField")
+  endif()
+  add_subdirectory("507_PolyVectorField")
+  add_subdirectory("508_ConjugateField")
+  add_subdirectory("509_Planarization")
+  add_subdirectory("510_Integrable")
+endif()
 
 # Chapter 6
-if(TINYXML2_FOUND)
-  add_subdirectory("601_Serialization")
-endif(TINYXML2_FOUND)
-if(MATLAB_FOUND)
-  add_subdirectory("602_Matlab")
-endif(MATLAB_FOUND)
-add_subdirectory("604_Triangle")
-add_subdirectory("605_Tetgen")
-
-add_subdirectory("606_AmbientOcclusion")
-add_subdirectory("607_Picking")
-
-if(LIM_FOUND)
-  add_subdirectory("608_LIM")
-endif(LIM_FOUND)
-if(CGAL_FOUND)
-  add_subdirectory("609_Boolean")
-  add_subdirectory("610_CSGTree")
+if(TUTORIALS_CHAPTER6)
+  if(LIBIGL_WITH_XML)
+    add_subdirectory("601_Serialization")
+  endif()
+  if(LIBIGL_WITH_MATLAB)
+    add_subdirectory("602_Matlab")
+  endif()
+  if(LIBIGL_WITH_TRIANGLE)
+    add_subdirectory("604_Triangle")
+  endif()
+  if(LIBIGL_WITH_TETGEN)
+    add_subdirectory("605_Tetgen")
+  endif()
+  if(LIBIGL_WITH_EMBREE)
+    add_subdirectory("606_AmbientOcclusion")
+    add_subdirectory("607_Picking")
+  endif()
+  if(LIBIGL_WITH_LIM)
+    add_subdirectory("608_LIM")
+  endif()
+  if(LIBIGL_WITH_CGAL)
+    add_subdirectory("609_Boolean")
+    add_subdirectory("610_CSGTree")
+  endif()
+endif()
+
+# Chapter 7
+if(TUTORIALS_CHAPTER7)
+  add_subdirectory("701_Statistics")
+  add_subdirectory("702_WindingNumber")
+  add_subdirectory("703_Decimation")
+  add_subdirectory("704_SignedDistance")
+  add_subdirectory("705_MarchingCubes")
 endif()
-add_subdirectory("701_Statistics")
-add_subdirectory("702_WindingNumber")
-add_subdirectory("703_Decimation")
-add_subdirectory("704_SignedDistance")
-add_subdirectory("705_MarchingCubes")