diff --git a/CMakeLists.txt b/CMakeLists.txt index ea1d2e98921475f8f89f598bb455c3992419f239..1df240df14768fffcb0a007629e87342333da29a 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -12,6 +12,10 @@ set(VegaFEM_VERSION 2.0) cmake_minimum_required(VERSION 2.8) if(COMMAND CMAKE_POLICY) cmake_policy(SET CMP0003 NEW) + if (POLICY CMP0022) + # Use INTERFACE_LINK_LIBRARIES when available. + cmake_policy(SET CMP0022 NEW) + endif() if (POLICY CMP0042) cmake_policy(SET CMP0042 NEW) endif() @@ -27,8 +31,9 @@ include(CMakePackageConfigHelpers) include(VegaFEMMacros) set(CMAKE_INCLUDE_CURRENT_DIR ON) set(CMAKE_INCLUDE_CURRENT_DIR_IN_INTERFACE OFF) +option(VegaFEM_BUILD_UTILITIES "Build utility applications in addition to libraries." ON) option(VegaFEM_BUILD_MODEL_REDUCTION "Should model-reduction techniques be included?" ON) -option(VegaFEM_ENABLE_ExpoKit_SUPPORT "Should matrix classes use ExpoKit for exponentiation?" OFF) +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_PTHREADS_SUPPORT "Use multithreading (pthread)" ON) @@ -66,9 +71,6 @@ set(CMAKE_INSTALL_NAME_DIR "${CMAKE_INSTALL_PREFIX}/lib") # directories outside the build tree to the install RPATH set(CMAKE_INSTALL_RPATH_USE_LINK_PATH TRUE) -# build utilities -option(BUILD_UTILITIES "Build utility applications." ON) - # Set directory variables if(NOT BIN_DIR) set(BIN_DIR bin) @@ -172,16 +174,18 @@ if(VegaFEM_ENABLE_PTHREADS_SUPPORT) endif() if (VegaFEM_BUILD_MODEL_REDUCTION) - find_package(MKL) - if(MKL_FOUND) - set(BLA_VENDOR "Intel mkl") - include_directories(${INTEL_MKL_INCLUDE_DIR}) - # TODO: set option for the paradiso solvers and define PARDISO_SOLVER_IS_AVAILABLE - else() - find_package(LAPACKE REQUIRED) # Also searches for cblas - include_directories(${LAPACKE_INCLUDE_DIR}) - include_directories(${CBLAS_INCLUDE_DIR}) - endif() + if (NOT APPLE) + find_package(MKL) + if(MKL_FOUND) + set(BLA_VENDOR "Intel mkl") + include_directories(${INTEL_MKL_INCLUDE_DIR}) + # TODO: set option for the paradiso solvers and define PARDISO_SOLVER_IS_AVAILABLE + else() + find_package(LAPACKE REQUIRED) # Also searches for cblas + include_directories(${LAPACKE_INCLUDE_DIR}) + include_directories(${CBLAS_INCLUDE_DIR}) + endif() + endif() find_package(LAPACK) # Also searches for blas endif() diff --git a/appveyor.yml b/appveyor.yml new file mode 100644 index 0000000000000000000000000000000000000000..5c78af4c423b1753ff189e6fc73a351eb492debf --- /dev/null +++ b/appveyor.yml @@ -0,0 +1,42 @@ +branches: + only: + - AddWindowsAndLapackFixes + +clone_depth: 16 + +cache: + - cmake-inst + +environment: + matrix: + #- GENERATOR: "Visual Studio 10 2010" + # VS_VERSION: "10.0" + - GENERATOR: "Ninja" + VS_VERSION: "10.0" + +platform: + - x86 + +configuration: + - Release + +install: + - ps: cinst ninja + - ps: cinst cmake + +build_script: + - cmd: set PATH=C:/ProgramData/chocolatey/bin;C:/tools/ninja;%PATH% + - cmd: call "C:/Program Files (x86)/Microsoft Visual Studio %VS_VERSION%/Common7/Tools/vsvars32.bat" + # Get a list of generators and the CMake version + - cmd: cmake --version + - cmd: cmake --help + # Create a build directory inside the source tree + - cmd: mkdir build + - cmd: cd build + # Run CMake on the source and build + - cmd: cmake .. -Wdev --warn-uninitialized -G "%GENERATOR%" -D"VegaFEM_BUILD_MODEL_REDUCTION:BOOL=OFF" -D"VegaFEM_ENABLE_PTHREADS_SUPPORT:BOOL=OFF" -D"VegaFEM_ENABLE_OpenGL_SUPPORT:BOOL=OFF" -D"VegaFEM_BUILD_UTILITIES:BOOL=ON" + - cmd: cmake --build . + +test_script: +# - cmd: ctest -C Debug --output-on-failure + - cmd: cd .. diff --git a/src/libintegratorDense/centralDifferencesDense.cpp b/src/libintegratorDense/centralDifferencesDense.cpp index 9a6392c1a697dee359782dd4e4e180f37960ae2b..15404b1e2e9803be4798143f62eb36fd545e1623 100644 --- a/src/libintegratorDense/centralDifferencesDense.cpp +++ b/src/libintegratorDense/centralDifferencesDense.cpp @@ -38,8 +38,8 @@ #include "IPIVC.h" #ifdef __APPLE__ -// #define DGETRF dgetrf_ -// #define DGETRS dgetrs_ + #define DGETRF dgetrf_ + #define DGETRS dgetrs_ #else // #define DGETRF dgetrf // #define DGETRS dgetrs diff --git a/src/libintegratorDense/implicitBackwardEulerDense.cpp b/src/libintegratorDense/implicitBackwardEulerDense.cpp index 073ed77efcb24005643c7635dc249d089c9aae21..951a166c688ea374152411633f8e1b0051318b81 100644 --- a/src/libintegratorDense/implicitBackwardEulerDense.cpp +++ b/src/libintegratorDense/implicitBackwardEulerDense.cpp @@ -251,11 +251,9 @@ int ImplicitBackwardEulerDense::DoTimestep() INTEGER LDB = r; INTEGER INFO; -// #ifdef __APPLE__ -// #define DGESV dgesv_ -// #else -// #define DGESV dgesv -// #endif + #ifdef __APPLE__ + #define DGESV dgesv_ + #endif DGESV ( &N, &NRHS, A, &LDA, IPIV->GetBuf(), B, &LDB, &INFO ); @@ -270,12 +268,10 @@ int ImplicitBackwardEulerDense::DoTimestep() case symmetricMatrixSolver: { // call dsysv ( uplo, n, nrhs, a, lda, ipiv, b, ldb, work, lwork, info) - -// #ifdef __APPLE__ -// #define DSYSV dsysv_ -// #else -// #define DSYSV dsysv -// #endif + + #ifdef __APPLE__ + #define DSYSV dsysv_ + #endif char uplo = 'U'; INTEGER nrhs = 1; @@ -297,12 +293,10 @@ int ImplicitBackwardEulerDense::DoTimestep() { // call dposv ( uplo, n, nrhs, a, lda, b, ldb, info) -// #ifdef __APPLE__ -// #define DPOSV dposv_ -// #else -// #define DPOSV dposv -// #endif - + #ifdef __APPLE__ + #define DPOSV dposv_ + #endif + char uplo = 'U'; INTEGER nrhs = 1; INTEGER info = 0; diff --git a/src/libintegratorDense/implicitNewmarkDense.cpp b/src/libintegratorDense/implicitNewmarkDense.cpp index 8a294a4081df264500d2d6e7ea2f51371b1fd5d4..703e812f4bafbbb39f8d954c880aae5398ee8e9e 100644 --- a/src/libintegratorDense/implicitNewmarkDense.cpp +++ b/src/libintegratorDense/implicitNewmarkDense.cpp @@ -248,11 +248,9 @@ int ImplicitNewmarkDense::DoTimestep() INTEGER LDB = r; INTEGER INFO; -// #ifdef __APPLE__ -// #define DGESV dgesv_ -// #else -// #define DGESV dgesv -// #endif + #ifdef __APPLE__ + #define DGESV dgesv_ + #endif DGESV ( &N, &NRHS, A, &LDA, IPIV->GetBuf(), B, &LDB, &INFO ); @@ -268,11 +266,9 @@ int ImplicitNewmarkDense::DoTimestep() { // call dsysv ( uplo, n, nrhs, a, lda, ipiv, b, ldb, work, lwork, info) -// #ifdef __APPLE__ -// #define DSYSV dsysv_ -// #else -// #define DSYSV dsysv -// #endif + #ifdef __APPLE__ + #define DSYSV dsysv_ + #endif char uplo = 'U'; INTEGER nrhs = 1; @@ -294,11 +290,9 @@ int ImplicitNewmarkDense::DoTimestep() { // call dposv ( uplo, n, nrhs, a, lda, b, ldb, info) -// #ifdef __APPLE__ -// #define DPOSV dposv_ -// #else -// #define DPOSV dposv -// #endif + #ifdef __APPLE__ + #define DPOSV dposv_ + #endif char uplo = 'U'; INTEGER nrhs = 1; diff --git a/src/libintegratorDense/integratorBaseDense.cpp b/src/libintegratorDense/integratorBaseDense.cpp index 73e940778e3a1b89c0dffb51d9d5357a9a894203..7e472445af0f11d23cde67a262cb0fe58df8b828 100644 --- a/src/libintegratorDense/integratorBaseDense.cpp +++ b/src/libintegratorDense/integratorBaseDense.cpp @@ -139,11 +139,9 @@ int IntegratorBaseDense::SetState(double * q_, double * qvel_) // solve M * x = qaccel // call dposv ( uplo, n, nrhs, a, lda, b, ldb, info) -// #ifdef __APPLE__ -// #define DPOSV dposv_ -// #else -// #define DPOSV dposv -// #endif + #ifdef __APPLE__ + #define DPOSV dposv_ + #endif memcpy(tangentStiffnessMatrix, massMatrix, sizeof(double) * r2); // must copy mass matrix to another buffer since DPOSV overwrites the system matrix char uplo = 'U'; diff --git a/src/libmassSpringSystem/CMakeLists.txt b/src/libmassSpringSystem/CMakeLists.txt index 92f80e6b4e328a14e0ad33b6642c42daf811c037..a1d5f35358d9abb1b1785075fd672cc5f227094b 100644 --- a/src/libmassSpringSystem/CMakeLists.txt +++ b/src/libmassSpringSystem/CMakeLists.txt @@ -3,7 +3,6 @@ set(massspringsystem_srcs massSpringSystemFromObjMesh.cpp massSpringSystemFromTetMeshConfigFile.cpp massSpringSystemFromTetMesh.cpp - massSpringSystemMT.cpp massSpringSystem.cpp massSpringSystemFromCubicMesh.cpp massSpringSystemFromCubicMeshConfigFile.cpp diff --git a/src/libmatrix/matrixLAPACK.cpp b/src/libmatrix/matrixLAPACK.cpp index ec0e367aa2b8824d4a15396065079eb1f466a1de..64cf8f0a111d3f1dfcbcf5ee440ab0cdfb961186 100644 --- a/src/libmatrix/matrixLAPACK.cpp +++ b/src/libmatrix/matrixLAPACK.cpp @@ -31,24 +31,24 @@ #include "matrixBLAS.h" #ifdef __APPLE__ -// #define DGETRF dgetrf_ -// #define DGETRI dgetri_ -// #define SGETRF sgetrf_ -// #define SGETRI sgetri_ -// #define DGESVD dgesvd_ -// #define SGESVD sgesvd_ -// #define DGELSY dgelsy_ -// #define SGELSY sgelsy_ -// #define DGESV dgesv_ -// #define SGESV sgesv_ -// #define DSYEV dsyev_ -// #define SSYEV ssyev_ -// #define DSYGV dsygv_ -// #define SSYGV ssygv_ -// #define SGEEV sgeev_ -// #define DGEEV dgeev_ -// #define DGPADM dgpadm_ -// #define SGPADM sgpadm_ + #define DGETRF dgetrf_ + #define DGETRI dgetri_ + #define SGETRF sgetrf_ + #define SGETRI sgetri_ + #define DGESVD dgesvd_ + #define SGESVD sgesvd_ + #define DGELSY dgelsy_ + #define SGELSY sgelsy_ + #define DGESV dgesv_ + #define SGESV sgesv_ + #define DSYEV dsyev_ + #define SSYEV ssyev_ + #define DSYGV dsygv_ + #define SSYGV ssygv_ + #define SGEEV sgeev_ + #define DGEEV dgeev_ + #define DGPADM dgpadm_ + #define SGPADM sgpadm_ #define INTEGER __CLPK_integer #else // #define DGETRF dgetrf diff --git a/src/libmatrix/matrixPCA.cpp b/src/libmatrix/matrixPCA.cpp index 49956773c761e6cc707b36d9a708a0f616bd0383..efe85021c2c532eb62de25ca9e2dc2d85dae540f 100644 --- a/src/libmatrix/matrixPCA.cpp +++ b/src/libmatrix/matrixPCA.cpp @@ -158,7 +158,7 @@ int MatrixPCA(ThresholdingSpecification * thresholdingSpecification, } #ifdef __APPLE__ -// #define DGESVD dgesvd_ + #define DGESVD dgesvd_ #define INTEGER __CLPK_integer #else // #define DGESVD dgesvd diff --git a/src/libmodalMatrix/CMakeLists.txt b/src/libmodalMatrix/CMakeLists.txt index d12007c024b69f7441edadb6a689d5a9636a33a2..9ae6444c541f0ce9cf6376c3bd95ae231a5388d0 100644 --- a/src/libmodalMatrix/CMakeLists.txt +++ b/src/libmodalMatrix/CMakeLists.txt @@ -7,6 +7,6 @@ vega_add_library(modalMatrix target_link_libraries(modalMatrix PUBLIC matrixIO -# ${LAPACK_LIBRARIES} -# ${BLAS_LIBRARY} + ${LAPACK_LIBRARIES} + ${BLAS_LIBRARY} ) diff --git a/src/util/CMakeLists.txt b/src/util/CMakeLists.txt index e0ecbec4b6595464f0ca1f27672bc26e95db5444..08d85b8362c11b10d3040c85aa253ff883b601d0 100644 --- a/src/util/CMakeLists.txt +++ b/src/util/CMakeLists.txt @@ -1,10 +1,11 @@ - -if(VegaFEM_BUILD_MODEL_REDUCTION) +if (VegaFEM_BUILD_MODEL_REDUCTION) add_subdirectory(largeModalDeformationFactory) - if(VegaFEM_ENABLE_Cg_SUPPORT) + if (VegaFEM_ENABLE_Cg_SUPPORT) add_subdirectory(reducedDynamicSolver-rt) endif() -endif(VegaFEM_BUILD_MODEL_REDUCTION) -add_subdirectory(displayObj) -add_subdirectory(interactiveDeformableSimulator) +endif() +if (VegaFEM_ENABLE_OpenGL_SUPPORT) + add_subdirectory(displayObj) + add_subdirectory(interactiveDeformableSimulator) +endif() add_subdirectory(volumetricMeshUtilities)