Skip to content
Snippets Groups Projects
Unverified Commit 0223934b authored by Sreekanth Arikatla's avatar Sreekanth Arikatla Committed by Jean-Christophe Fillion-Robin
Browse files

WIP: CMakifying VegaFEMv4.0

parent 82d77cdb
No related branches found
No related tags found
No related merge requests found
Showing
with 451 additions and 0 deletions
project(VegaFEM)
set(VegaFEM_VERSION 4.0)
# Minimum required version of CMake
cmake_minimum_required(VERSION 3.0)
# Add Options
option(VegaFEM_BUILD_UTILITIES "Build utility classes in addition to libraries." ON)
option(VegaFEM_BUILD_MODEL_REDUCTION "Build model-reduction" OFF)
option(VegaFEM_BUILD_RIGID_BODIES "Build Rigid body support" OFF)
option(VegaFEM_ENABLE_OpenGL_SUPPORT "Should modules that require OpenGL be enabled?" ON)
option(VegaFEM_ENABLE_PTHREADS_SUPPORT "Use multithreading (pthread)" ON)
option(VegaFEM_ENABLE_ExpoKit_SUPPORT "Should matrix classes use ExpoKit for exponentiation?" OFF)
# TODO: define USE_EXPOKIT if enabled
option(VegaFEM_ENABLE_OpenGL_SUPPORT "Should modules that require OpenGL be enabled?" ON)
option(VegaFEM_ENABLE_CLOTH_SUPPORT "Should modules that require OpenGL be enabled?" ON)
set(VegaFEM_MODULES
basicAlgorithms
configFile
constrainedDOFs
corotationalLinearFEM
distanceField
elasticForceModel
exactArithmetic
forceModel
getopts
graph
hashTable
imageIO
immersionMesher
integrator
integratorSparse
interpolationCoordinates
isotropicHyperelasticFEM
laplacianMatrix
libiglInterface
listIO
massSpringSystem
matrixIO
mesh
mesher
minivector
objMesh
performanceCounter
polarDecomposition
quaternion
sceneObject
shapeEdit
sparseMatrix
sparseSolver
stencilForceModel
stvk
virtualTets
volumetricMesh
windingNumber
)
if (VegaFEM_BUILD_MODEL_REDUCTION)
set(VegaFEM_Modules
${VegaFEM_Modules}
integratorDense
matrix
modalMatrix
reducedElasticForceModel
reducedForceModel
reducedStvk
)
endif()
if (VegaFEM_ENABLE_OpenGL_SUPPORT)
set(VegaFEM_Modules
${VegaFEM_Modules}
camera
lighting
sceneObject
glslPhong
)
if (VegaFEM_ENABLE_Cg_SUPPORT)
set(VegaFEM_Modules
${VegaFEM_Modules}
objMeshGPUDeformer
)
endif()
if (VegaFEM_BUILD_MODEL_REDUCTION)
set(VegaFEM_Modules
${VegaFEM_Modules}
openGLHelper
sceneObjectReduced
renderVolumetricMesh
)
endif()
endif()
add_subdirectory(libraries)
include(CMakePackageConfigHelpers)
write_basic_package_version_file(
"${CMAKE_CURRENT_BINARY_DIR}/VegaFEMConfigVersion.cmake"
VERSION ${VegaFEM_VERSION}
COMPATIBILITY AnyNewerVersion
)
export(EXPORT VegaFEMTargets
FILE "${CMAKE_CURRENT_BINARY_DIR}/VegaFEMTargets.cmake"
NAMESPACE VegaFEM::
)
configure_file(
CMake/VegaFEMConfig.cmake.in
"${CMAKE_CURRENT_BINARY_DIR}/VegaFEMConfig.cmake"
@ONLY
)
# Install step
set(ConfigPackageLocation lib/cmake/VegaFEM)
install(EXPORT VegaFEMTargets
FILE VegaFEMTargets.cmake
NAMESPACE VegaFEM::
DESTINATION ${ConfigPackageLocation}
)
install(
FILES
"${CMAKE_CURRENT_BINARY_DIR}/VegaFEMConfig.cmake"
"${CMAKE_CURRENT_BINARY_DIR}/VegaFEMConfigVersion.cmake"
DESTINATION
${ConfigPackageLocation}
COMPONENT
Devel
)
if(VegaFEM_BUILD_UTILITIES)
add_subdirectory(utilities)
endif(VegaFEM_BUILD_UTILITIES)
\ No newline at end of file
foreach(mod ${VegaFEM_Modules})
add_subdirectory(${mod})
endforeach()
add_subdirectory(include)
\ No newline at end of file
vega_add_library(animationHelper
SOURCES
handleControl.cpp
handleScript.cpp
simulationRecorder.cpp
PUBLIC_HEADERS
handleControl.h
handleScript.h
simulationRecorder.h
)
target_link_libraries(camera
PUBLIC
${OPENGL_LIBRARIES}
matrixIO
minivector
basicAlgorithms
camera
openGLHelper
listIO
)
file(GLOB_RECURSE basicAlgorithms_sources "*.cpp")
file(GLOB_RECURSE basicAlgorithms_headers "*.h")
vega_add_library(basicAlgorithms
SOURCES
${basicAlgorithms_sources}
PUBLIC_HEADERS
${basicAlgorithms_headers}
)
vega_add_library(camera
SOURCES
camera.cpp
cameraChangeLoad.cpp
PUBLIC_HEADERS
camera.h
cameraChangeLoad.h
)
target_link_libraries(camera
PUBLIC
${OPENGL_LIBRARIES}
)
set(clothbw_sources
clothBW.cpp
clothBWFromObjMesh.cpp
)
set(clothbw_headers
clothBW.h
clothBWFromObjMesh.h
)
if(VegaFEM_ENABLE_PTHREADS_SUPPORT)
list(APPEND clothbw_headers clothBWMT.h)
list(APPEND clothbw_sources clothBWMT.cpp)
endif()
vega_add_library(clothBW
SOURCES
${clothbw_sources}
PUBLIC_HEADERS
${clothbw_headers}
)
target_link_libraries(clothBW
PUBLIC
objMesh
minivector
sparseMatrix
#Threads::Threads
)
\ No newline at end of file
vega_add_library(configFile
SOURCES
configFile.cpp
PUBLIC_HEADERS
configFile.h
)
target_link_libraries(configFile
PUBLIC
minivector
)
vega_add_library(constrainedDOFs
SOURCES
constrainedDOFs.cpp
PUBLIC_HEADERS
constrainedDOFs.h
)
set(corotationallinearfem_sources
corotationalLinearFEM.cpp)
set(corotationallinearfem_headers
corotationalLinearFEM.h)
vega_add_library(corotationalLinearFEM
SOURCES
${corotationallinearfem_sources}
PUBLIC_HEADERS
${corotationallinearfem_headers}
)
target_link_libraries(corotationalLinearFEM
PUBLIC
polarDecomposition
volumetricMesh
sparseMatrix
INTERFACE
minivector
)
animationHelper/DONE
basicAlgorithms/DONE
camera/DONE
clothBW/DONE
configFile/DONE
constrainedDOFs/DONE
corotationalLinearFEM/DONE
distanceField/DONE
elasticForceModel/DONE
exactArithmetic/DONE
forceModel/DONE
getopts/DONE
glslPhong/DONE
glui/
graph/DONE
hashTable/DONE
imageIO/DONE
immersionMesher/DONE
include/DONE
integrator/DONE (spooles)
integratorDense/DONE (blas is a dependency?)
integratorSparse/DONE (INTERFACE)
interpolationCoordinates/DONE
isotropicHyperelasticFEM/DONE (removed RT and thread::thread is a dep)
laplacianMatrix/DONE
libiglInterface/
lighting/
listIO/
massSpringSystem/
matrix/
matrixIO/
mesh/
mesher/
minivector/
modalMatrix/
objMesh/
objMeshGPUDeformer/
openGLHelper/
performanceCounter/
polarDecomposition/
quaternion/
reducedElasticForceModel/
reducedForceModel/
reducedStvk/
renderVolumetricMesh/
rigidBodyDynamics/
sceneObject/
sceneObjectReduced/
shapeEdit/
sparseMatrix/
sparseSolver/
stencilForceModel/
stvk/
virtualTets/
volumetricMesh/
windingNumber/
file(GLOB_RECURSE distanceField_sources "*.cpp")
file(GLOB_RECURSE distanceField_headers "*.h")
vega_add_library(distanceField
SOURCES
${distanceField_sources}
PUBLIC_HEADERS
${distanceField_headers}
)
target_link_libraries(distanceField
PUBLIC
objMesh
mesh
hashTable
minivector
performanceCounter
matrixIO
configFile
)
set(EFM_SRCS
corotationalLinearFEMForceModel.cpp
massSpringSystemForceModel.cpp
StVKForceModel.cpp
isotropicHyperelasticFEMForceModel.cpp
linearFEMForceModel.cpp
)
vega_add_library(elasticForceModel
SOURCES
corotationalLinearFEMForceModel.cpp
massSpringSystemForceModel.cpp
StVKForceModel.cpp
isotropicHyperelasticFEMForceModel.cpp
linearFEMForceModel.cpp
clothBWForceModel.cpp
PUBLIC_HEADERS
corotationalLinearFEMForceModel.h
massSpringSystemForceModel.h
StVKForceModel.h
isotropicHyperelasticFEMForceModel.h
linearFEMForceModel.h
clothBWForceModel.h
)
target_link_libraries(elasticForceModel
PUBLIC
forceModel
corotationalLinearFEM
massSpringSystem
stvk
isotropicHyperelasticFEM
clothBW
INTERFACE
sparseMatrix
minivector
volumetricMesh
)
file(GLOB_RECURSE EA_sources "*.cpp")
file(GLOB_RECURSE EA_headers "*.h")
vega_add_library(exactArithmatic
SOURCES
${EA_sources}
PUBLIC_HEADERS
${EA_headers}
)
vega_add_library(forceModel
SOURCES
forceModel.cpp
finiteDifferenceTester.cpp
PUBLIC_HEADERS
forceModel.h
finiteDifferenceTester.h
)
target_link_libraries(forceModel
PUBLIC
sparseMatrix
)
vega_add_library(getops
SOURCES
getopts.cpp
commandLineParser.cpp
PUBLIC_HEADERS
getopts.h
commandLineParser.h
)
\ No newline at end of file
vega_add_library(glslPhong
SOURCES
glslPhong.cpp
PUBLIC_HEADERS
glslPhong.h
)
target_link_libraries(glslPhong
PUBLIC
${OPENGL_LIBRARIES}
Threads::Threads
)
vega_add_library(graph
SOURCES
graph.cpp
PUBLIC_HEADERS
graph.h
)
target_link_libraries(graph
PUBLIC
sparseMatrix
matrixIO
)
vega_add_library(hashTable
SOURCES
hashTable.cpp
PUBLIC_HEADERS
hashTable.h
)
vega_add_library(imageIO
SOURCES
imageIO.cpp
PUBLIC_HEADERS
imageFormats.h
imageIO.h
)
vega_add_library(immersionMesher
SOURCES
immersionMesher.cpp
immersionGraphNode.cpp
PUBLIC_HEADERS
immersionMesher.h
immersionGraphNode.h
)
target_link_libraries(immersionMesher
PUBLIC
virtualTets
exactArithmetic
mesh
basicAlgorithms
performanceCounter
)
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment