# Include Eigen
INCLUDE_DIRECTORIES(${EIGEN_INCLUDE_DIRS})
INCLUDE_DIRECTORIES(${EIGEN_INCLUDE_DIRS}/unsupported)
ADD_DEFINITIONS(-DEIGEN_YES_I_KNOW_SPARSE_MODULE_IS_NOT_STABLE_YET)

# Google sparse/dense hash
IF (SPARSEHASH_FOUND)
    ADD_DEFINITIONS(-DUSE_SPARSEHASH)
    INCLUDE_DIRECTORIES(${SPARSEHASH_INCLUDE_DIRS})
ENDIF (SPARSEHASH_FOUND)

# Enumerate source files
FILE(GLOB_RECURSE SRC_FILES *.cpp *.c)
FILE(GLOB_RECURSE INC_FILES */*.h)

INCLUDE_DIRECTORIES(${CMAKE_CURRENT_SOURCE_DIR})

# Add executable and library
ADD_LIBRARY(Mesh SHARED ${SRC_FILES} ${INC_FILES})

IF(WITHOUT_SWIG)
    RETURN()
ENDIF(WITHOUT_SWIG)

# Add swig interface files
SET(SWG_FILES PyMesh.i)

# Add swig wrapper for the library
INCLUDE(UseSWIG)

# python
INCLUDE_DIRECTORIES(${PYTHON_INCLUDE_DIRS})

# numpy
INCLUDE_DIRECTORIES(${NUMPY_INCLUDE_DIRS})

# Add eigen wrapper
INCLUDE_DIRECTORIES(${EIGEN_WRAPPER_PATH})

# Generate wrapper for python
SET_SOURCE_FILES_PROPERTIES(${SWG_FILES} PROPERTIES CPLUSPLUS ON)
SET_SOURCE_FILES_PROPERTIES(${SWG_FILES} PROPERTIES CMAKE_SWIG_FLAGS "-includeall")
SWIG_ADD_MODULE(PyMesh python ${SWG_FILES})
SWIG_LINK_LIBRARIES(PyMesh ${PYTHON_LIBRARIES} Mesh)

