From 1dda578d64256176274813ff9b03354e40ac3b83 Mon Sep 17 00:00:00 2001 From: Noah <37805707+Curve@users.noreply.github.com> Date: Thu, 7 Dec 2023 10:56:13 +0100 Subject: [PATCH] Modernize CMake (#99) * refactor(cmake): add `CPM.cmake`, restructure CMakeLists * refactor(cmake): update examples * refactor(cmake): update tests * fix: missing include * refactor(cmake): update python bindings * feat: add sanitizer options * feat(cmake): add install target * refactor(cmake/python): use `CMAKE_LIBRARY_OUTPUT_DIRECTORY` when available * feat(cmake): add sanitizer options for gcc * fix(cmake): static builds * refactor(cmake): add messages * fix(format-project): shellcheck issues * refactor(cmake/sanitizer): more explicit compiler id check * fix: update formatting * fix(workflows): build commands * fix(workflows(windows): long paths * fix(CMakeLists): disable VTK rendering group * docs(readme): update build instructions * docs(readme): fix test command * fix: ctest excludes * refactor: disable sanitizer for msvc and apple clang * chore: apply cmake-format * fix(cmake-format): define CPM functions * fix(vtk): disable libproj support * Should fix Windows workflow * revert: formatting * fix(ci/windows): enable long paths * refactor(cmake): disable wrapping for vtk and disable libproj * refactor(cmake): disable sanitizer by default * fix(windows): only export symbols for viennals * refactor(cmake): exclude dependencies from all target * refactor(cmake): use get-cpm * refactor(cmake): lower required vtk version * This should also fix the windows workflows as we've switched to a commit that includes upstream!10542 * fix: formatting * fix: setup vtk env for targets * fix: formatting * fix: remove debug print * fix(cmakelists): vtk dir on linux * fix: skip vtk environment on non windows platforms * fix: formatting * refactor: more logging, don't use early return in macro * early return behavior in macro may vary in different cmake versions * refactor: adjust target naming --- .cmake-format | 3 + .github/workflows/linux_test.yml | 12 +- .github/workflows/macos_test.yml | 11 +- .github/workflows/windows_test.yml | 22 +- CMakeLists.txt | 446 +++++++----------- Examples/AirGapDeposition/CMakeLists.txt | 12 +- Examples/CMakeLists.txt | 32 +- Examples/Deposition/CMakeLists.txt | 12 +- Examples/GeometricAdvection/CMakeLists.txt | 12 +- Examples/PatternedSubstrate/CMakeLists.txt | 12 +- Examples/PeriodicBoundary/CMakeLists.txt | 12 +- Examples/SharedLib/CMakeLists.txt | 12 +- Examples/SquareEtch/CMakeLists.txt | 12 +- Examples/VoidEtching/CMakeLists.txt | 12 +- Examples/VolumeToLevelSets/CMakeLists.txt | 12 +- Python/CMakeLists.txt | 77 ++- Python/__init__.py.in | 1 + README.md | 33 +- Tests/Advection/CMakeLists.txt | 11 +- Tests/Advection2D/CMakeLists.txt | 11 +- Tests/AdvectionBenchmark/CMakeLists.txt | 13 +- Tests/AdvectionPlane/CMakeLists.txt | 11 +- Tests/BooleanOperation/CMakeLists.txt | 11 +- .../BooleanOperationExactZero/CMakeLists.txt | 11 +- .../BooleanOperationExactZero1/CMakeLists.txt | 11 +- Tests/BoundaryConditions/CMakeLists.txt | 11 +- Tests/CMakeLists.txt | 29 +- Tests/CalculateCurvatures/CMakeLists.txt | 11 +- Tests/CalculateNormalVectors/CMakeLists.txt | 11 +- Tests/ConvexHull/CMakeLists.txt | 10 +- Tests/ConvexHull3D/CMakeLists.txt | 10 +- Tests/DiskMesh/CMakeLists.txt | 11 +- Tests/Expand/CMakeLists.txt | 10 +- Tests/Extrude/CMakeLists.txt | 10 +- Tests/FeatureDetection/CMakeLists.txt | 10 +- Tests/FileWriter/CMakeLists.txt | 11 +- Tests/FromMesh/CMakeLists.txt | 10 +- Tests/GenerateHoleGeometry/CMakeLists.txt | 9 +- Tests/GeometricAdvect/CMakeLists.txt | 10 +- Tests/GeometricAdvectMask/CMakeLists.txt | 10 +- .../GeometricAdvectPerformance/CMakeLists.txt | 13 +- Tests/GeometricAdvectTrench/CMakeLists.txt | 10 +- Tests/HullMesh/CMakeLists.txt | 10 +- Tests/Make3DSphere/CMakeLists.txt | 10 +- Tests/MakeBox/CMakeLists.txt | 11 +- Tests/MakeGeometry/CMakeLists.txt | 10 +- Tests/MakePlane/CMakeLists.txt | 11 +- Tests/MakeSphere/CMakeLists.txt | 10 +- Tests/MarkVoidPoints/CMakeLists.txt | 11 +- Tests/MultiMaterialAdvection/CMakeLists.txt | 10 +- Tests/MultiMaterialEtch/CMakeLists.txt | 10 +- Tests/PeriodicBoundary2D/CMakeLists.txt | 10 +- Tests/ReadFromFile/CMakeLists.txt | 10 +- Tests/ReadVolume/CMakeLists.txt | 10 +- Tests/RemoveStrayPoints/CMakeLists.txt | 11 +- Tests/RotateMesh/CMakeLists.txt | 10 +- Tests/Serialize/CMakeLists.txt | 10 +- Tests/SmartPointer/CMakeLists.txt | 10 +- Tests/VisualizationMesh/CMakeLists.txt | 15 +- Tests/VoidDetection/CMakeLists.txt | 10 +- cmake/.cpm-format | 69 +++ cmake/ViennaLSConfig.cmake.in | 73 --- cmake/cpm.cmake | 23 + cmake/prepare.cmake | 25 - cmake/vtk.cmake | 14 + external/upstream/CMakeLists.txt | 38 -- external/upstream/pybind11/CMakeLists.txt | 66 --- external/upstream/viennahrle/CMakeLists.txt | 58 --- external/upstream/vtk/CMakeLists.txt | 160 ------- format-project.sh | 5 +- include/lsPointData.hpp | 1 + 71 files changed, 603 insertions(+), 1138 deletions(-) create mode 100644 .cmake-format create mode 100644 cmake/.cpm-format delete mode 100644 cmake/ViennaLSConfig.cmake.in create mode 100644 cmake/cpm.cmake delete mode 100644 cmake/prepare.cmake create mode 100644 cmake/vtk.cmake delete mode 100644 external/upstream/CMakeLists.txt delete mode 100644 external/upstream/pybind11/CMakeLists.txt delete mode 100644 external/upstream/viennahrle/CMakeLists.txt delete mode 100644 external/upstream/vtk/CMakeLists.txt diff --git a/.cmake-format b/.cmake-format new file mode 100644 index 00000000..fb1689ad --- /dev/null +++ b/.cmake-format @@ -0,0 +1,3 @@ +include: ["cmake/.cpm-format"] +format: + line_width: 100 diff --git a/.github/workflows/linux_test.yml b/.github/workflows/linux_test.yml index f8716a99..102015ea 100644 --- a/.github/workflows/linux_test.yml +++ b/.github/workflows/linux_test.yml @@ -31,20 +31,17 @@ jobs: - name: Configure run: | - cmake -B ./build \ + cmake -B build \ -D CMAKE_BUILD_TYPE=${{env.BUILD_TYPE}} \ -D VIENNALS_BUILD_TESTS=ON - - name: Build Dependencies - run: cmake --build ./build --target buildDependencies - - name: Build Tests - run: cmake --build ./build --target buildTests + run: cmake --build build - name: Run Tests working-directory: ${{github.workspace}}/build # Run all tests that are not labeled as benchmark - run: ctest -LE '^benchmark$' + run: ctest -E "Benchmark|Performance" - name: Trigger Action on ViennaPS Repository if: ${{ vars.TRIGGER_VIENNAPS == 'true' && github.event_name != 'schedule' && github.event_name != 'pull_request' }} @@ -53,6 +50,7 @@ jobs: token: ${{ secrets.PAT_VIENNAPS }} repository: ${{github.repository_owner}}/ViennaPS event-type: viennals-update-linux + linux-python: runs-on: ubuntu-latest steps: @@ -65,7 +63,7 @@ jobs: with: key: viennals-dependency-cache-${{ runner.os }}-${{env.BUILD_TYPE}}-${{ hashFiles( './external/upstream/**CMakeLists.txt' ) }} path: ${{github.workspace}}/dependencies/Install - + - name: Build and install Python module shell: bash run: pip3 install --user . -v diff --git a/.github/workflows/macos_test.yml b/.github/workflows/macos_test.yml index ab95cfef..4c427b93 100644 --- a/.github/workflows/macos_test.yml +++ b/.github/workflows/macos_test.yml @@ -32,7 +32,7 @@ jobs: - name: Configure run: | - cmake -B ./build \ + cmake -B build \ -D CMAKE_BUILD_TYPE=${{env.BUILD_TYPE}} \ -D VIENNALS_BUILD_TESTS=ON \ -D OpenMP_C_FLAGS="-Xpreprocessor -fopenmp -I$(brew --prefix libomp)/include" \ @@ -41,16 +41,13 @@ jobs: -D OpenMP_CXX_LIB_NAMES="omp" \ -D OpenMP_omp_LIBRARY="$(brew --prefix libomp)/lib/libomp.a" - - name: Build Dependencies - run: cmake --build ./build --target buildDependencies - - - name: Build Tests - run: cmake --build ./build --target buildTests + - name: Build + run: cmake --build build - name: Run Tests working-directory: ${{github.workspace}}/build # Run all tests that are not labeled as benchmark - run: ctest -LE '^benchmark$' + run: ctest -E "Benchmark|Performance" - name: Trigger Action on ViennaPS Repository if: ${{ vars.TRIGGER_VIENNAPS == 'true' && github.event_name != 'schedule' && github.event_name != 'pull_request' }} diff --git a/.github/workflows/windows_test.yml b/.github/workflows/windows_test.yml index d1be4573..2770d1e6 100644 --- a/.github/workflows/windows_test.yml +++ b/.github/workflows/windows_test.yml @@ -30,14 +30,16 @@ jobs: key: viennals-dependency-cache-${{ runner.os }}-${{env.BUILD_TYPE}}-${{ hashFiles( './external/upstream/**CMakeLists.txt' ) }} path: ${{github.workspace}}/dependencies/Install + - name: Configure Git + # Workaround for windows, as the filename is 260 by default, however + # VTK has some files that exceed this limit, thus we need this workaround. + run: git config --system core.longpaths true + - name: Configure run: cmake -B ${{github.workspace}}/build -DCMAKE_BUILD_TYPE=${{env.BUILD_TYPE}} -DVIENNALS_BUILD_TESTS=ON - - name: Build Dependencies - run: cmake --build ${{github.workspace}}/build --target buildDependencies - - - name: Build Tests - run: cmake --build ${{github.workspace}}/build --target buildTests + - name: Build + run: cmake --build ${{github.workspace}}/build - name: Add VTK to PATH run: echo "${{github.workspace}}\dependencies\Install\vtk_external\bin" | Out-File -FilePath $env:GITHUB_PATH -Encoding utf8 -Append @@ -45,7 +47,7 @@ jobs: - name: Run Tests working-directory: ${{github.workspace}}/build # Run all tests except those that are labeled as benchmark - run: ctest -LE "^benchmark$" -j 2 --output-on-failure --timeout 1800 -C ${{env.BUILD_TYPE}} + run: ctest -E "Benchmark|Performance" -j 2 --output-on-failure --timeout 1800 -C ${{env.BUILD_TYPE}} - name: Trigger Action on ViennaPS Repository if: ${{ vars.TRIGGER_VIENNAPS == 'true' && github.event_name != 'schedule' && github.event_name != 'pull_request' }} @@ -54,6 +56,7 @@ jobs: token: ${{ secrets.PAT_VIENNAPS }} repository: ${{github.repository_owner}}/ViennaPS event-type: viennals-update-windows + windows-python: runs-on: windows-latest @@ -68,6 +71,11 @@ jobs: key: viennals-dependency-cache-${{ runner.os }}-${{env.BUILD_TYPE}}-${{ hashFiles( './external/upstream/**CMakeLists.txt' ) }} path: ${{github.workspace}}/dependencies/Install + - name: Configure Git + # Workaround for windows, as the filename is 260 by default, however + # VTK has some files that exceed this limit, thus we need this workaround. + run: git config --system core.longpaths true + - name: Build and install Python module shell: bash - run: pip3 install --user . -v \ No newline at end of file + run: pip3 install --user . -v diff --git a/CMakeLists.txt b/CMakeLists.txt index d814d051..21b55fe5 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -1,328 +1,214 @@ cmake_minimum_required(VERSION 3.14 FATAL_ERROR) +project( + ViennaLS + LANGUAGES CXX + VERSION 2.1.0) -project(ViennaLS VERSION 2.1.0) +# -------------------------------------------------------------------------------------------------------- +# Library options +# -------------------------------------------------------------------------------------------------------- -# Store version in cache -set(VIENNALS_VERSION - ${PROJECT_VERSION} - CACHE STRING "The version of ViennaLS" FORCE) +option(VIENNALS_USE_VTK "Build with VTK file support" ON) -set(CMAKE_EXPORT_COMPILE_COMMANDS ON) -set(CMAKE_CXX_STANDARD "17") +option(VIENNALS_PRECOMPILE_HEADERS "Build template specialisations for shorter compile times" OFF) +option(VIENNALS_STATIC_BUILD "Build dependencies as static libraries" OFF) -add_definitions(-DVIENNALS_VERSION=${PROJECT_VERSION}) +option(VIENNALS_ENABLE_SANITIZER "Enable Sanitizer for debug buidlds" OFF) +option(VIENNALS_USE_SANITIZER "Enable Sanitizer (Requires GCC or Clang)" OFF) -include(GNUInstallDirs) +option(VIENNALS_BUILD_EXAMPLES "Build examples" OFF) +option(VIENNALS_BUILD_TESTS "Build tests" OFF) -# Setup of default build type -set(DEFAULT_BUILD_TYPE "Release") -if(NOT CMAKE_BUILD_TYPE AND NOT CMAKE_CONFIGURATION_TYPES) - message(STATUS "Setting build type to '${DEFAULT_BUILD_TYPE}' as none was specified.") - set(CMAKE_BUILD_TYPE - "${DEFAULT_BUILD_TYPE}" - CACHE STRING "Choose the type of build." FORCE) - # Set the possible values of build type for cmake-gui - set_property(CACHE CMAKE_BUILD_TYPE PROPERTY STRINGS "Debug" "Release" "MinSizeRel" - "RelWithDebInfo") -endif() - -# Tell VS to export all symbols to its dll files -if("${CMAKE_CXX_COMPILER_ID}" STREQUAL "MSVC") - set(CMAKE_WINDOWS_EXPORT_ALL_SYMBOLS - TRUE - CACHE BOOL "Export all symbols" FORCE) - add_compile_definitions(_USE_MATH_DEFINES) -endif() +# -------------------------------------------------------------------------------------------------------- +# Conditional Library options +# -------------------------------------------------------------------------------------------------------- -# ################################################################################################## -# CONFIGURATION OPTIONS -# ################################################################################################## include(CMakeDependentOption) -# Whether to build ViennaLS with VTK support or not -option(VIENNALS_USE_VTK "Build with VTK file support." ON) - -# Build the included examples -option(VIENNALS_BUILD_EXAMPLES "Build examples." OFF) - -# Build the included tests -option(VIENNALS_BUILD_TESTS "Build tests." OFF) - -# Build ViennaLS as a shared library -option(VIENNALS_PRECOMPILE_HEADERS "Build template specialisations for shorter compile times." OFF) - -# Build Python bindings (only available when VIENNALS_USE_VTK is enabled) -cmake_dependent_option(VIENNALS_BUILD_PYTHON "Build for python3.x." OFF "VIENNALS_USE_VTK" OFF) - -# Statically link dependencies, and if VIENNALS_PRECOMPILE_HEADERS is enabled, ViennaLS will also be -# built as a static library -option( - VIENNALS_STATIC_BUILD - "Build dependencies as static libraries. If VIENNALS_PRECOMPILE_HEADERS is enabled those will also be built in a way that allows for static linking." - OFF) - -# ################################################################################################## -# AUTOMATIC DEPENDENCY PREPARATION -# ################################################################################################## - -# With the stampfile mechanism, cmake automatically retriggers the configure step after the -# buildDependencies targed has been executed. Thus all dependencies that were built with -# buildDependencies should then be made available by the find_package calls. -set(STAMPFILE ${CMAKE_BINARY_DIR}/target.stamp) -# When the buildDependencies target is executed, the stamp file is touched -add_custom_target(buildDependencies COMMAND ${CMAKE_COMMAND} -E touch ${STAMPFILE}) - -# Include the external dependencies -include(ExternalProject) -if(NOT DEFINED VIENNALS_DEPENDENCIES_DIR) - set(DEPENDENCIES_DIR ${CMAKE_SOURCE_DIR}/dependencies) -else() - set(DEPENDENCIES_DIR - ${VIENNALS_DEPENDENCIES_DIR} - CACHE PATH "Directory for downloading, building and installing external dependencies") -endif() -add_subdirectory(external/upstream) +cmake_dependent_option(VIENNALS_BUILD_PYTHON "Build for Python (>=3)" OFF "VIENNALS_USE_VTK" OFF) -# Create the initial stamp file -file(TOUCH ${STAMPFILE}) -# Include the stamp file, so that cmake is forced to re-run once the file has been touched -include(${STAMPFILE}) +# -------------------------------------------------------------------------------------------------------- +# Configuration +# -------------------------------------------------------------------------------------------------------- -# Binary store the binary directory for use in subprojects -set(ViennaLS_BINARY_DIR - ${PROJECT_BINARY_DIR} - CACHE PATH "Path to local ViennaLS installation" FORCE) +if(VIENNALS_STATIC_BUILD) + message(STATUS "[ViennaLS] Enabling precompiled headers for static build") + set(VIENNALS_PRECOMPILE_HEADERS ON) + set(BUILD_SHARED_LIBS OFF) +endif() -# ################################################################################################## -# VTK CONFIGURATION VARIABLES SETUP -# ################################################################################################## -if(VIENNALS_USE_VTK) - add_compile_definitions(VIENNALS_USE_VTK) - - # use VTK_USE_FILE for older versions of VTK - if(VTK_VERSION VERSION_LESS "9.0") - message(STATUS "Using old VTK Version: ${VTK_VERSION}") - set(VTK_COMPONENTS - vtkCommonCore;vtkIOCore;vtkIOXML;vtkIOXMLParser;vtkFiltersCore;vtkFiltersGeneral;vtkFiltersGeometry - ) - # find_package is only required for populating the VTK_USE_FILE variable. This case is only - # invoked when an external VTK installation is used since our externalproject build already - # provides a newer version of VTK. Thus the find_package call *SHOULD* not fail. - find_package(VTK CONFIG REQUIRED PATHS ${VTK_DIR} COMPONENTS ${VTK_COMPONENTS} NO_DEFAULT_PATH) - set(VTK_LIBRARIES - vtksys;vtkIOCore;vtkexpat;vtklz4;vtkzlib;vtklzma;vtkdoubleconversion;vtkCommonMisc;vtkCommonSystem;vtkIOXML;vtkFiltersCore;vtkFiltersGeneral;vtkFiltersGeometry;vtkCommonExecutionModel;vtkCommonDataModel;vtkCommonColor;vtkIOXMLParser;vtkIOCore;vtkCommonMisc;vtkCommonComputationalGeometry;vtkCommonTransforms;vtkCommonMath - ) - include(${VTK_USE_FILE}) - else() - # Use the new component names instead of the old vtk* ones - set(VTK_COMPONENTS - CommonCore;IOCore;IOXML;IOXMLParser;FiltersCore;FiltersGeneral;FiltersGeometry) - # For newer versions of VTK, only the target syntax is supported. This also automatically adds - # the vtk include directories. - set(VTK_LIBRARIES - VTK::CommonComputationalGeometry;VTK::CommonCore;VTK::CommonDataModel;VTK::CommonExecutionModel;VTK::CommonMath;VTK::CommonMisc;VTK::CommonSystem;VTK::CommonTransforms;VTK::FiltersCore;VTK::FiltersGeneral;VTK::FiltersGeometry;VTK::IOCore;VTK::IOXML;VTK::IOXMLParser;VTK::WrappingTools - ) +if((VIENNALS_ENABLE_SANITIZER AND CMAKE_BUILD_TYPE STREQUAL "Debug") OR VIENNALS_USE_SANITIZER) + if(CMAKE_CXX_COMPILER_ID STREQUAL "Clang") + add_compile_options(-fno-omit-frame-pointer -fsanitize=address -fsanitize=memory) + add_link_options(-fno-omit-frame-pointer -fsanitize=address -fsanitize=memory) + elseif(CMAKE_CXX_COMPILER_ID STREQUAL "GNU") + add_compile_options(-fno-omit-frame-pointer -fsanitize=address -fsanitize=leak) + add_link_options(-fno-omit-frame-pointer -fsanitize=address -fsanitize=leak) endif() - list(APPEND VIENNALS_LIBRARIES ${VTK_LIBRARIES}) + + message(STATUS "[ViennaLS] Using Sanitizer") endif() -# ################################################################################################## -# DEPENDENCY CHECKS -# ################################################################################################## -set(DEPENDENCIES_FOUND TRUE) +# -------------------------------------------------------------------------------------------------------- +# Setup Library +# -------------------------------------------------------------------------------------------------------- -find_package(OpenMP REQUIRED) -list(APPEND VIENNALS_LIBRARIES OpenMP::OpenMP_CXX) +add_library(${PROJECT_NAME} INTERFACE) +add_library(ViennaTools::${PROJECT_NAME} ALIAS ${PROJECT_NAME}) -list(APPEND VIENNALS_DEPENDENCIES "viennahrle_external") -find_package(ViennaHRLE QUIET CONFIG PATHS ${ViennaHRLE_DIR} NO_DEFAULT_PATH) -if(NOT ViennaHRLE_FOUND) - set(DEPENDENCIES_FOUND FALSE) -endif() +target_compile_features(${PROJECT_NAME} INTERFACE cxx_std_17) +set_target_properties( + ${PROJECT_NAME} + PROPERTIES CXX_STANDARD 17 + CXX_EXTENSIONS OFF + CXX_STANDARD_REQUIRED ON) -if(VIENNALS_USE_VTK) - list(APPEND VIENNALS_DEPENDENCIES "vtk_external") - find_package(VTK QUIET PATHS ${VTK_DIR} COMPONENTS ${VTK_COMPONENTS} NO_DEFAULT_PATH) - if(NOT VTK_FOUND) - set(DEPENDENCIES_FOUND FALSE) - endif() +if(MSVC) + # https://learn.microsoft.com/cpp/c-runtime-library/math-constants TODO: In case C++20 is adpoted + # any time soon: https://cppreference.com/w/cpp/numeric/constants + + target_compile_definitions(${PROJECT_NAME} INTERFACE _USE_MATH_DEFINES=1) endif() -if(VIENNALS_BUILD_PYTHON) - list(APPEND VIENNALS_DEPENDENCIES "pybind11_external") - find_package(pybind11 QUIET PATHS ${pybind11_DIR} NO_DEFAULT_PATH) - if(NOT pybind11_FOUND) - set(DEPENDENCIES_FOUND FALSE) +# -------------------------------------------------------------------------------------------------------- +# Include directories +# -------------------------------------------------------------------------------------------------------- + +target_include_directories(${PROJECT_NAME} INTERFACE "include") + +# -------------------------------------------------------------------------------------------------------- +# Setup Dependencies +# -------------------------------------------------------------------------------------------------------- + +include("cmake/cpm.cmake") + +CPMFindPackage( + NAME ViennaHRLE + GIT_TAG master + GIT_REPOSITORY "https://github.com/ViennaTools/ViennaHRLE" + EXCLUDE_FROM_ALL ON) + +find_package(OpenMP REQUIRED) +target_link_libraries(${PROJECT_NAME} INTERFACE OpenMP::OpenMP_CXX ViennaHRLE) + +if(VIENNALS_USE_VTK) + CPMFindPackage( + NAME VTK + # TODO: Change to 9.3.1 as soon as it's released + # (https://github.com/ViennaTools/ViennaLS/pull/99#issuecomment-1832053715) + GIT_TAG 99bd602bdbe8024c55e8382f7cf1013d42a14601 + VERSION 9.0.0 + GIT_REPOSITORY "https://gitlab.kitware.com/vtk/vtk" + OPTIONS "VTK_LEGACY_REMOVE ON" + "VTK_SMP_IMPLEMENTATION_TYPE \"OpenMP\"" + "VTK_GROUP_ENABLE_Rendering NO" + "VTK_GROUP_ENABLE_Imaging NO" + "VTK_GROUP_ENABLE_Views NO" + "TK_GROUP_ENABLE_Web NO" + "VTK_GROUP_ENABLE_Qt NO" + "VTK_GROUP_ENABLE_MPI NO" + "VTK_ENABLE_WRAPPING NO" + "VTK_MODULE_ENABLE_VTK_libproj NO" + "VTK_MODULE_ENABLE_VTK_CommonExecutionModel YES" + "VTK_MODULE_ENABLE_VTK_CommonMisc YES" + "VTK_MODULE_ENABLE_VTK_CommonSystem YES" + "VTK_MODULE_ENABLE_VTK_CommonMath YES" + "VTK_MODULE_ENABLE_VTK_CommonCore YES" + "VTK_MODULE_ENABLE_VTK_CommonTransforms YES" + "VTK_MODULE_ENABLE_VTK_CommonComputationalGeometry YES" + "VTK_MODULE_ENABLE_VTK_IOCore YES" + "VTK_MODULE_ENABLE_VTK_IOXMLParser YES" + "VTK_MODULE_ENABLE_VTK_IOXML YES" + "VTK_MODULE_ENABLE_VTK_FiltersCore YES" + "VTK_MODULE_ENABLE_VTK_FiltersGeneral YES" + "VTK_MODULE_ENABLE_VTK_FiltersGeometry YES" + EXCLUDE_FROM_ALL ON) + + target_compile_definitions(${PROJECT_NAME} INTERFACE VIENNALS_USE_VTK=1) + + target_link_libraries( + ${PROJECT_NAME} + INTERFACE VTK::CommonExecutionModel + VTK::CommonMisc + VTK::CommonSystem + VTK::CommonMath + VTK::CommonCore + VTK::CommonTransforms + VTK::CommonComputationalGeometry + VTK::IOCore + VTK::IOXMLParser + VTK::IOXML + VTK::FiltersCore + VTK::FiltersGeneral + VTK::FiltersGeometry) + + if(MSVC) + set(VTK_LIBS "${VTK_BINARY_DIR}/bin/$") + else() + set(VTK_LIBS "${VTK_BINARY_DIR}/lib") endif() endif() -if(DEPENDENCIES_FOUND) - # Remove the buildDependencies target from the ALL target to prevent unnecessary re-builds - set_target_properties(buildDependencies PROPERTIES EXCLUDE_FROM_ALL true) -else() - message(WARNING "Not all dependencies were found. Execute buildDependencies target first.") - # Add the buildDependencies target to the ALL target - set_target_properties(buildDependencies PROPERTIES EXCLUDE_FROM_ALL false) -endif() +# -------------------------------------------------------------------------------------------------------- +# Setup Shared/Static Library +# -------------------------------------------------------------------------------------------------------- -# ################################################################################################## -# BUILD PRECOMPILED HEADER LIBRARIES -# ################################################################################################## -if(VIENNALS_PRECOMPILE_HEADERS AND DEPENDENCIES_FOUND) - # Add all specialisation source files - file(GLOB SPECIALISATION_CPPS "lib/*.cpp") +if(VIENNALS_PRECOMPILE_HEADERS) + set(VIENNALS_LINKAGE SHARED) - # Decide wheter to build the precompiled headers as a static or shared library if(VIENNALS_STATIC_BUILD) - add_library(${PROJECT_NAME} STATIC ${SPECIALISATION_CPPS}) - - # Find paths to all static library targets - foreach(_lib ${VIENNALS_LIBRARIES}) - if(TARGET ${_lib}) - get_target_property(_target_type ${_lib} TYPE) - # message(STATUS "${_lib} ${_target_type}") - if(_target_type STREQUAL "STATIC_LIBRARY") - list(APPEND static_lib_files $) - elseif(_target_type STREQUAL "SHARED_LIBRARY") - message( - FATAL_ERROR "Not all required libraries can be statically linked!\n- Caused by ${_lib}") - endif() - endif() - endforeach() - - if(CMAKE_CXX_COMPILER_ID MATCHES "^(Clang|GNU)$") - # Create an archiver (ar) script that bundles all static library dependencies into one bundled - # static library - set(AR_FILE_CONTENT - "CREATE ${CMAKE_BINARY_DIR}/libViennaLS.a\nADDLIB ${CMAKE_BINARY_DIR}/libViennaLS.a") - foreach(_statlib ${static_lib_files}) - set(AR_FILE_CONTENT "${AR_FILE_CONTENT}\nADDLIB ${_statlib}") - endforeach() - set(AR_FILE_CONTENT "${AR_FILE_CONTENT}\nSAVE\nEND\n") - - file( - GENERATE - OUTPUT "${CMAKE_BINARY_DIR}/bundle.ar" - CONTENT "${AR_FILE_CONTENT}") - - # Execute the archiver script after the target has been built - add_custom_command( - TARGET ${PROJECT_NAME} - POST_BUILD - COMMAND ${CMAKE_AR} -M < ${CMAKE_BINARY_DIR}/bundle.ar - COMMENT "Bundling all static libraries into one." - VERBATIM) - elseif(CMAKE_CXX_COMPILER_ID MATCHES "^(AppleClang)$") - find_program(libtool_bin libtool) - - # TODO: check if libtool found - - add_custom_command( - TARGET ${PROJECT_NAME} - POST_BUILD - COMMAND ${libtool_bin} -static -o libViennaLS.a ${CMAKE_BINARY_DIR}/libViennaLS.a - ${static_lib_files} - COMMENT "Bundling all static libraries into one." - VERBATIM) - else() - message( - FATAL_ERROR - "Building a static version of ${PROJECT_NAME} is currently not supported with the selected build tools." - ) - endif() - else() - # Shared library - add_library(${PROJECT_NAME} SHARED ${SPECIALISATION_CPPS}) + set(VIENNALS_LINKAGE STATIC) endif() - target_link_libraries(${PROJECT_NAME} ${VIENNALS_LIBRARIES}) - # Include the project header files and ViennaHRLE - target_include_directories(${PROJECT_NAME} PRIVATE "${PROJECT_SOURCE_DIR}/include/" - ${VIENNAHRLE_INCLUDE_DIRS}) - # Also include VTK if we enabled VTK support (with VTK 9+ this is done automatically when we link - # the vtk targets - the VTK_INCLUDE_DIRS variable is empty in that case) - if(VIENNALS_USE_VTK) - target_include_directories(${PROJECT_NAME} PRIVATE ${VTK_INCLUDE_DIRS}) - endif() - set_target_properties(${PROJECT_NAME} PROPERTIES VERSION ${PROJECT_VERSION}) -else() - # By default, create header only library - add_library(${PROJECT_NAME} INTERFACE) -endif() + add_library(${PROJECT_NAME}_Lib ${VIENNALS_LINKAGE}) + add_library(${PROJECT_NAME}::Lib ALIAS ${PROJECT_NAME}_Lib) -# ################################################################################################## -# DIRECTORY CONFIGURATIONS -# ################################################################################################## -if(CMAKE_INSTALL_PREFIX_INITIALIZED_TO_DEFAULT) - set(CMAKE_INSTALL_PREFIX "${CMAKE_INSTALL_PREFIX}/${PROJECT_NAME}/") + target_link_libraries(${PROJECT_NAME}_Lib PUBLIC ${PROJECT_NAME}) + target_sources(${PROJECT_NAME}_Lib PUBLIC "lib/specialisations.cpp") + set_target_properties(${PROJECT_NAME}_Lib PROPERTIES WINDOWS_EXPORT_ALL_SYMBOLS ON) endif() -set(LOCAL_CONFIG_DIR "lib/cmake/${PROJECT_NAME}") - -# This variable is used by the example, test, python and precompiled library target, since those are -# compiled before the project is installed in its proper install location. -set(VIENNALS_BUILD_INCLUDE_DIRS "${${PROJECT_NAME}_SOURCE_DIR}/include") - -# Adding the install interface generator expression makes sure that the include files are installed -# to the proper location (provided by GNUInstallDirs) -target_include_directories( - ${PROJECT_NAME} INTERFACE $ - $) -target_compile_features(${PROJECT_NAME} INTERFACE cxx_std_11) - -# ################################################################################################## -# CMAKE CONFIG FILE SETUP -# ################################################################################################## -include(CMakePackageConfigHelpers) -write_basic_package_version_file( - "${PROJECT_NAME}ConfigVersion.cmake" - VERSION ${PROJECT_VERSION} - COMPATIBILITY AnyNewerVersion) - -configure_package_config_file( - "${PROJECT_SOURCE_DIR}/cmake/${PROJECT_NAME}Config.cmake.in" - "${PROJECT_BINARY_DIR}/${PROJECT_NAME}Config.cmake" INSTALL_DESTINATION ${LOCAL_CONFIG_DIR}) - -# ################################################################################################## -# BUILD EXAMPLES -# ################################################################################################## -if(VIENNALS_BUILD_EXAMPLES AND DEPENDENCIES_FOUND) + +# -------------------------------------------------------------------------------------------------------- +# Setup Examples +# -------------------------------------------------------------------------------------------------------- + +if(VIENNALS_BUILD_EXAMPLES) + message(STATUS "[ViennaLS] Building Examples") add_subdirectory(Examples) endif() -# ################################################################################################## -# BUILD TESTS (Smaller examples for testing) -# ################################################################################################## -if(VIENNALS_BUILD_TESTS AND DEPENDENCIES_FOUND) +# -------------------------------------------------------------------------------------------------------- +# Setup Tests +# -------------------------------------------------------------------------------------------------------- + +if(VIENNALS_BUILD_TESTS) + message(STATUS "[ViennaLS] Building Tests") + enable_testing() add_subdirectory(Tests) endif() -# ################################################################################################## -# BUILD PYTHON MODULE -# ################################################################################################## -if(VIENNALS_BUILD_PYTHON AND DEPENDENCIES_FOUND) +# -------------------------------------------------------------------------------------------------------- +# Setup Python Bindings +# -------------------------------------------------------------------------------------------------------- + +if(VIENNALS_BUILD_PYTHON) + message(STATUS "[ViennaLS] Building Python Bindings") add_subdirectory(Python) endif() -# ################################################################################################## -# INSTALL -# ################################################################################################## +# -------------------------------------------------------------------------------------------------------- +# Install Target +# -------------------------------------------------------------------------------------------------------- + install( TARGETS ${PROJECT_NAME} EXPORT ${PROJECT_NAME}_Targets - ARCHIVE DESTINATION ${CMAKE_INSTALL_LIBDIR} LIBRARY DESTINATION ${CMAKE_INSTALL_LIBDIR} + ARCHIVE DESTINATION ${CMAKE_INSTALL_LIBDIR} RUNTIME DESTINATION ${CMAKE_INSTALL_BINDIR}) -install( - EXPORT ${PROJECT_NAME}_Targets - FILE ${PROJECT_NAME}Targets.cmake - DESTINATION ${LOCAL_CONFIG_DIR}) - -install(FILES "${PROJECT_BINARY_DIR}/${PROJECT_NAME}Config.cmake" - "${PROJECT_BINARY_DIR}/${PROJECT_NAME}ConfigVersion.cmake" - DESTINATION ${LOCAL_CONFIG_DIR}) +# TOOD: This could be improved if the header files were in a sub-directory -# Install include files -file(GLOB_RECURSE HEADER_FILES "${PROJECT_SOURCE_DIR}/include/*.hpp") -install(FILES ${HEADER_FILES} DESTINATION include) +file(GLOB headers "include/*.hpp") +install(FILES ${headers} DESTINATION include) diff --git a/Examples/AirGapDeposition/CMakeLists.txt b/Examples/AirGapDeposition/CMakeLists.txt index 632ab0b6..9f4720e3 100644 --- a/Examples/AirGapDeposition/CMakeLists.txt +++ b/Examples/AirGapDeposition/CMakeLists.txt @@ -1,11 +1,7 @@ cmake_minimum_required(VERSION 3.14) +project(AirGapDeposition LANGUAGES CXX) -project("AirGapDeposition") +add_executable(${PROJECT_NAME} "${PROJECT_NAME}.cpp") +target_link_libraries(${PROJECT_NAME} PRIVATE ViennaLS) -add_executable(${PROJECT_NAME} ${PROJECT_NAME}.cpp) -target_include_directories(${PROJECT_NAME} PUBLIC ${VIENNALS_INCLUDE_DIRS}) -target_link_libraries(${PROJECT_NAME} PRIVATE ${VIENNALS_LIBRARIES}) - -# Add to example target -add_dependencies(buildExamples ${PROJECT_NAME}) -add_test(NAME ${PROJECT_NAME} COMMAND $) +add_dependencies(ViennaLS_Examples ${PROJECT_NAME}) diff --git a/Examples/CMakeLists.txt b/Examples/CMakeLists.txt index 3f471486..acd4eea5 100644 --- a/Examples/CMakeLists.txt +++ b/Examples/CMakeLists.txt @@ -1,22 +1,20 @@ -cmake_minimum_required(VERSION 3.14) +add_custom_target(ViennaLS_Examples ALL) -project(ViennaLSExamples) +if(NOT VTK_DIR) + include("../cmake/vtk.cmake") + setup_vtk_env(ViennaLS_Examples "examples") +endif() -include("${CMAKE_SOURCE_DIR}/cmake/prepare.cmake") +file( + GLOB entries + LIST_DIRECTORIES true + "*") -# Point find_package to the binary directory instead of the install location -find_package(ViennaLS REQUIRED PATHS ${ViennaLS_BINARY_DIR} NO_DEFAULT_PATH) +foreach(entry ${entries}) + if(NOT IS_DIRECTORY ${entry}) + continue() + endif() -list(PREPEND VIENNALS_INCLUDE_DIRS ${VIENNALS_BUILD_INCLUDE_DIRS}) - -# Exclude the buildExamples target from the `all` target -set_property(DIRECTORY PROPERTY EXCLUDE_FROM_ALL TRUE) - -add_custom_target(buildExamples DEPENDS ${VIENNALS_DEPENDENCIES}) - -subdirlist(EXAMPLE_DIRS ${CMAKE_CURRENT_LIST_DIR}) - -# add all examples -foreach(subdir ${EXAMPLE_DIRS}) - add_subdirectory(${subdir}) + message(STATUS "[ViennaLS] Adding Example ${entry}") + add_subdirectory(${entry}) endforeach() diff --git a/Examples/Deposition/CMakeLists.txt b/Examples/Deposition/CMakeLists.txt index 5ab78479..a435398a 100644 --- a/Examples/Deposition/CMakeLists.txt +++ b/Examples/Deposition/CMakeLists.txt @@ -1,11 +1,7 @@ cmake_minimum_required(VERSION 3.14) +project(Deposition LANGUAGES CXX) -project("Deposition") +add_executable(${PROJECT_NAME} "${PROJECT_NAME}.cpp") +target_link_libraries(${PROJECT_NAME} PRIVATE ViennaLS) -add_executable(${PROJECT_NAME} ${PROJECT_NAME}.cpp) -target_include_directories(${PROJECT_NAME} PUBLIC ${VIENNALS_INCLUDE_DIRS}) -target_link_libraries(${PROJECT_NAME} PRIVATE ${VIENNALS_LIBRARIES}) - -# Add to example target -add_dependencies(buildExamples ${PROJECT_NAME}) -add_test(NAME ${PROJECT_NAME} COMMAND $) +add_dependencies(ViennaLS_Examples ${PROJECT_NAME}) diff --git a/Examples/GeometricAdvection/CMakeLists.txt b/Examples/GeometricAdvection/CMakeLists.txt index 93649e16..8c848896 100644 --- a/Examples/GeometricAdvection/CMakeLists.txt +++ b/Examples/GeometricAdvection/CMakeLists.txt @@ -1,11 +1,7 @@ cmake_minimum_required(VERSION 3.14) +project(GeometricAdvection LANGUAGES CXX) -project("GeometricAdvection") +add_executable(${PROJECT_NAME} "${PROJECT_NAME}.cpp") +target_link_libraries(${PROJECT_NAME} PRIVATE ViennaLS) -add_executable(${PROJECT_NAME} ${PROJECT_NAME}.cpp) -target_include_directories(${PROJECT_NAME} PUBLIC ${VIENNALS_INCLUDE_DIRS}) -target_link_libraries(${PROJECT_NAME} PRIVATE ${VIENNALS_LIBRARIES}) - -# Add to example target -add_dependencies(buildExamples ${PROJECT_NAME}) -add_test(NAME ${PROJECT_NAME} COMMAND $) +add_dependencies(ViennaLS_Examples ${PROJECT_NAME}) diff --git a/Examples/PatternedSubstrate/CMakeLists.txt b/Examples/PatternedSubstrate/CMakeLists.txt index cc4e5bd3..8c82099c 100644 --- a/Examples/PatternedSubstrate/CMakeLists.txt +++ b/Examples/PatternedSubstrate/CMakeLists.txt @@ -1,11 +1,7 @@ cmake_minimum_required(VERSION 3.14) +project(PatternedSubstrate LANGUAGES CXX) -project("PatternedSubstrate") +add_executable(${PROJECT_NAME} "${PROJECT_NAME}.cpp") +target_link_libraries(${PROJECT_NAME} PRIVATE ViennaLS) -add_executable(${PROJECT_NAME} ${PROJECT_NAME}.cpp) -target_include_directories(${PROJECT_NAME} PUBLIC ${VIENNALS_INCLUDE_DIRS}) -target_link_libraries(${PROJECT_NAME} PRIVATE ${VIENNALS_LIBRARIES}) - -# Add to example target -add_dependencies(buildExamples ${PROJECT_NAME}) -add_test(NAME ${PROJECT_NAME} COMMAND $) +add_dependencies(ViennaLS_Examples ${PROJECT_NAME}) diff --git a/Examples/PeriodicBoundary/CMakeLists.txt b/Examples/PeriodicBoundary/CMakeLists.txt index 6674ed34..1c46a336 100644 --- a/Examples/PeriodicBoundary/CMakeLists.txt +++ b/Examples/PeriodicBoundary/CMakeLists.txt @@ -1,11 +1,7 @@ cmake_minimum_required(VERSION 3.14) +project(PeriodicBoundary LANGUAGES CXX) -project("PeriodicBoundary") +add_executable(${PROJECT_NAME} "${PROJECT_NAME}.cpp") +target_link_libraries(${PROJECT_NAME} PRIVATE ViennaLS) -add_executable(${PROJECT_NAME} ${PROJECT_NAME}.cpp) -target_include_directories(${PROJECT_NAME} PUBLIC ${VIENNALS_INCLUDE_DIRS}) -target_link_libraries(${PROJECT_NAME} PRIVATE ${VIENNALS_LIBRARIES}) - -# Add to example target -add_dependencies(buildExamples ${PROJECT_NAME}) -add_test(NAME ${PROJECT_NAME} COMMAND $) +add_dependencies(ViennaLS_Examples ${PROJECT_NAME}) diff --git a/Examples/SharedLib/CMakeLists.txt b/Examples/SharedLib/CMakeLists.txt index f6d0ab62..6a228609 100644 --- a/Examples/SharedLib/CMakeLists.txt +++ b/Examples/SharedLib/CMakeLists.txt @@ -1,11 +1,7 @@ cmake_minimum_required(VERSION 3.14) +project(SharedLib LANGUAGES CXX) -project("SharedLib") +add_executable(${PROJECT_NAME} "${PROJECT_NAME}.cpp") +target_link_libraries(${PROJECT_NAME} PRIVATE ViennaLS) -add_executable(${PROJECT_NAME} ${PROJECT_NAME}.cpp) -target_include_directories(${PROJECT_NAME} PUBLIC ${VIENNALS_INCLUDE_DIRS}) -target_link_libraries(${PROJECT_NAME} PRIVATE ${VIENNALS_LIBRARIES}) - -# Add to example target -add_dependencies(buildExamples ${PROJECT_NAME}) -add_test(NAME ${PROJECT_NAME} COMMAND $) +add_dependencies(ViennaLS_Examples ${PROJECT_NAME}) diff --git a/Examples/SquareEtch/CMakeLists.txt b/Examples/SquareEtch/CMakeLists.txt index 1012c550..f96dc14f 100644 --- a/Examples/SquareEtch/CMakeLists.txt +++ b/Examples/SquareEtch/CMakeLists.txt @@ -1,11 +1,7 @@ cmake_minimum_required(VERSION 3.14) +project(SquareEtch LANGUAGES CXX) -project("SquareEtch") +add_executable(${PROJECT_NAME} "${PROJECT_NAME}.cpp") +target_link_libraries(${PROJECT_NAME} PRIVATE ViennaLS) -add_executable(${PROJECT_NAME} ${PROJECT_NAME}.cpp) -target_include_directories(${PROJECT_NAME} PUBLIC ${VIENNALS_INCLUDE_DIRS}) -target_link_libraries(${PROJECT_NAME} PRIVATE ${VIENNALS_LIBRARIES}) - -# Add to example target -add_dependencies(buildExamples ${PROJECT_NAME}) -add_test(NAME ${PROJECT_NAME} COMMAND $) +add_dependencies(ViennaLS_Examples ${PROJECT_NAME}) diff --git a/Examples/VoidEtching/CMakeLists.txt b/Examples/VoidEtching/CMakeLists.txt index 3865c3b8..c588eef5 100644 --- a/Examples/VoidEtching/CMakeLists.txt +++ b/Examples/VoidEtching/CMakeLists.txt @@ -1,11 +1,7 @@ cmake_minimum_required(VERSION 3.14) +project(VoidEtching LANGUAGES CXX) -project("VoidEtching") +add_executable(${PROJECT_NAME} "${PROJECT_NAME}.cpp") +target_link_libraries(${PROJECT_NAME} PRIVATE ViennaLS) -add_executable(${PROJECT_NAME} ${PROJECT_NAME}.cpp) -target_include_directories(${PROJECT_NAME} PUBLIC ${VIENNALS_INCLUDE_DIRS}) -target_link_libraries(${PROJECT_NAME} PRIVATE ${VIENNALS_LIBRARIES}) - -# Add to example target -add_dependencies(buildExamples ${PROJECT_NAME}) -add_test(NAME ${PROJECT_NAME} COMMAND $) +add_dependencies(ViennaLS_Examples ${PROJECT_NAME}) diff --git a/Examples/VolumeToLevelSets/CMakeLists.txt b/Examples/VolumeToLevelSets/CMakeLists.txt index 969fe192..08b6e135 100644 --- a/Examples/VolumeToLevelSets/CMakeLists.txt +++ b/Examples/VolumeToLevelSets/CMakeLists.txt @@ -1,11 +1,7 @@ cmake_minimum_required(VERSION 3.14) +project(VolumeToLevelSets LANGUAGES CXX) -project("VolumeToLevelSets") +add_executable(${PROJECT_NAME} "${PROJECT_NAME}.cpp") +target_link_libraries(${PROJECT_NAME} PRIVATE ViennaLS) -add_executable(${PROJECT_NAME} ${PROJECT_NAME}.cpp) -target_include_directories(${PROJECT_NAME} PUBLIC ${VIENNALS_INCLUDE_DIRS}) -target_link_libraries(${PROJECT_NAME} PRIVATE ${VIENNALS_LIBRARIES}) - -# Add to example target -add_dependencies(buildExamples ${PROJECT_NAME}) -add_test(NAME ${PROJECT_NAME} COMMAND $) +add_dependencies(ViennaLS_Examples ${PROJECT_NAME}) diff --git a/Python/CMakeLists.txt b/Python/CMakeLists.txt index eb840b95..9dc03ec9 100644 --- a/Python/CMakeLists.txt +++ b/Python/CMakeLists.txt @@ -1,35 +1,60 @@ cmake_minimum_required(VERSION 3.14) +project(ViennaLS_Python LANGUAGES CXX) -project(ViennaLSPython) +add_custom_target(${PROJECT_NAME} ALL) -include("${CMAKE_SOURCE_DIR}/cmake/prepare.cmake") +# -------------------------------------------------------------------------------------------------------- +# Setup Dependencies +# -------------------------------------------------------------------------------------------------------- -# Point find_package to the binary directory instead of the install location -find_package(ViennaLS REQUIRED PATHS ${ViennaLS_BINARY_DIR} NO_DEFAULT_PATH) - -list(PREPEND VIENNALS_INCLUDE_DIRS ${VIENNALS_BUILD_INCLUDE_DIRS}) - -message(STATUS "ViennaLS version: ${VIENNALS_VERSION}") +include("../cmake/cpm.cmake") +set(PYBIND11_FINDPYTHON ON) set(PYBIND11_PYTHON_VERSION 3 CACHE STRING "Python version") -find_package(pybind11 REQUIRED PATHS ${pybind11_DIR} NO_DEFAULT_PATH) +CPMFindPackage( + NAME pybind11 + VERSION 2.11.1 + GIT_REPOSITORY "https://github.com/pybind/pybind11") + +# -------------------------------------------------------------------------------------------------------- +# Constants +# -------------------------------------------------------------------------------------------------------- -set(VIENNALS_PYTHON_SOURCE pyWrap.cpp) set(VIENNALS_PYTHON_MODULE_NAME "viennals") -set(VIENNALS_LIBRARY_OUTPUT_DIR ${CMAKE_LIBRARY_OUTPUT_DIRECTORY}) +set(VIENNALS_LIBRARY_OUTPUT_DIR ${CMAKE_BINARY_DIR}) -# ################################################################################################## -# BUILD 2D PYTHON LIBRARY -# ################################################################################################## -set(VIENNALS_PYTHON_MODULE_NAME_2D "_${VIENNALS_PYTHON_MODULE_NAME}2d") +if(CMAKE_LIBRARY_OUTPUT_DIRECTORY) + set(VIENNALS_LIBRARY_OUTPUT_DIR "${CMAKE_LIBRARY_OUTPUT_DIRECTORY}") + message(STATUS "[ViennaLS] Using Library Output Directory for bindings") +endif() + +# -------------------------------------------------------------------------------------------------------- +# VTK-Setup +# -------------------------------------------------------------------------------------------------------- + +include("../cmake/vtk.cmake") + +if(WIN32 AND NOT VTK_DIR) + setup_vtk_env(${PROJECT_NAME} vtk_env) + set(VTK_DIR "${PROJECT_BINARY_DIR}/vtk_env") +elseif(NOT VTK_DIR) + set(VTK_DIR "${VTK_LIBS}") +endif() + +# -------------------------------------------------------------------------------------------------------- +# Setup 2D-Bindings +# -------------------------------------------------------------------------------------------------------- set(CMAKE_LIBRARY_OUTPUT_DIRECTORY ${VIENNALS_LIBRARY_OUTPUT_DIR}/viennals2d) -pybind11_add_module(${VIENNALS_PYTHON_MODULE_NAME_2D} ${VIENNALS_PYTHON_SOURCE}) -target_include_directories(${VIENNALS_PYTHON_MODULE_NAME_2D} PUBLIC ${VIENNALS_INCLUDE_DIRS}) -target_link_libraries(${VIENNALS_PYTHON_MODULE_NAME_2D} PRIVATE ${VIENNALS_LIBRARIES}) +set(VIENNALS_PYTHON_MODULE_NAME_2D "_${VIENNALS_PYTHON_MODULE_NAME}2d") + +pybind11_add_module("${VIENNALS_PYTHON_MODULE_NAME_2D}" "pyWrap.cpp") +add_dependencies(${PROJECT_NAME} ${VIENNALS_PYTHON_MODULE_NAME_2D}) + +target_link_libraries(${VIENNALS_PYTHON_MODULE_NAME_2D} PUBLIC ViennaLS) target_compile_definitions( ${VIENNALS_PYTHON_MODULE_NAME_2D} PRIVATE -DVIENNALS_PYTHON_DIMENSION=2 -DVIENNALS_MODULE_NAME=${VIENNALS_PYTHON_MODULE_NAME_2D}) @@ -37,15 +62,17 @@ target_compile_definitions( set(MODULE_NAME ${VIENNALS_PYTHON_MODULE_NAME_2D}) configure_file(__init__.py.in ${CMAKE_LIBRARY_OUTPUT_DIRECTORY}/__init__.py) -# ################################################################################################## -# BUILD 3D PYTHON LIBRARY -# ################################################################################################## -set(VIENNALS_PYTHON_MODULE_NAME_3D "_${VIENNALS_PYTHON_MODULE_NAME}3d") +# -------------------------------------------------------------------------------------------------------- +# Setup 3D-Bindings +# -------------------------------------------------------------------------------------------------------- set(CMAKE_LIBRARY_OUTPUT_DIRECTORY ${VIENNALS_LIBRARY_OUTPUT_DIR}/viennals3d) -pybind11_add_module(${VIENNALS_PYTHON_MODULE_NAME_3D} ${VIENNALS_PYTHON_SOURCE}) -target_include_directories(${VIENNALS_PYTHON_MODULE_NAME_3D} PUBLIC ${VIENNALS_INCLUDE_DIRS}) -target_link_libraries(${VIENNALS_PYTHON_MODULE_NAME_3D} PRIVATE ${VIENNALS_LIBRARIES}) +set(VIENNALS_PYTHON_MODULE_NAME_3D "_${VIENNALS_PYTHON_MODULE_NAME}3d") + +pybind11_add_module("${VIENNALS_PYTHON_MODULE_NAME_3D}" "pyWrap.cpp") +add_dependencies(${PROJECT_NAME} ${VIENNALS_PYTHON_MODULE_NAME_3D}) + +target_link_libraries(${VIENNALS_PYTHON_MODULE_NAME_3D} PUBLIC ViennaLS) target_compile_definitions( ${VIENNALS_PYTHON_MODULE_NAME_3D} PRIVATE -DVIENNALS_PYTHON_DIMENSION=3 -DVIENNALS_MODULE_NAME=${VIENNALS_PYTHON_MODULE_NAME_3D}) diff --git a/Python/__init__.py.in b/Python/__init__.py.in index fcd3c2b6..b83dac31 100644 --- a/Python/__init__.py.in +++ b/Python/__init__.py.in @@ -7,6 +7,7 @@ topography simulations. The main design goals are simplicity and efficiency, tailored towards scientific simulations. ViennaLS can also be used for visualisation applications, although this is not the main design target. """ + import os import sys diff --git a/README.md b/README.md index d8078da0..afde9752 100644 --- a/README.md +++ b/README.md @@ -52,10 +52,9 @@ However, we recommend the following procedure in order to set up all dependencie ```bash git clone https://github.com/ViennaTools/ViennaLS.git cd ViennaLS -mkdir build && cd build -cmake .. -DCMAKE_INSTALL_PREFIX=/path/to/your/custom/install/ -make buildDependencies # this will install all dependencies and might take a while -make install + +cmake -B build -DCMAKE_INSTALL_PREFIX=/path/to/your/custom/install/ +cmake --build build ``` This will install the necessary headers and CMake files to the specified path. If DCMAKE_INSTALL_PREFIX is not specified, it will be installed to the standard path for your system, usually /usr/local/ . @@ -66,10 +65,9 @@ In order to install ViennaLS without VTK, run: ```bash git clone https://github.com/ViennaTools/ViennaLS.git cd ViennaLS -mkdir build && cd build -cmake .. -DCMAKE_INSTALL_PREFIX=/path/to/your/custom/install/ -DVIENNALS_USE_VTK=OFF -make buildDependencies -make install + +cmake -B build -DCMAKE_INSTALL_PREFIX=/path/to/your/custom/install/ -DVIENNALS_USE_VTK=OFF +cmake --build build ``` ## Installing with dependencies already installed on the system @@ -79,10 +77,9 @@ The CMake configuration automatically checks if the dependencies are installed. ```bash git clone https://github.com/ViennaTools/ViennaLS.git cd ViennaLS -mkdir build && cd build -cmake .. -DCMAKE_INSTALL_PREFIX=/path/to/your/custom/install/ -make buildDependencies -make install + +cmake -B build -DCMAKE_INSTALL_PREFIX=/path/to/your/custom/install/ +cmake --build build ``` If one wants to use a specific installation of one or more of the dependencies, just pass the corresponding _*_DIR_ variable as a configuration option (e.g. -DVTK_DIR=/path/to/vtk/install -Dpybind11_DIR=/path/to/pybind11 -DViennaHRLE_DIR=/path/to/viennahrle) @@ -136,10 +133,10 @@ In order to check whether ViennaLS runs without issues on your system, you can r ```bash git clone https://github.com/ViennaTools/ViennaLS.git cd ViennaLS -mkdir build && cd build -cmake .. -DVIENNALS_BUILD_TESTS=ON -make buildTests # build all tests -make test # run all tests + +cmake -B build -DVIENNALS_BUILD_TESTS=ON +cmake --build build +ctest -E "Benchmark|Performance" --test-dir build ``` ## Building examples @@ -147,8 +144,8 @@ make test # run all tests The examples can be built using CMake: ```bash -cmake .. -DVIENNALS_BUILD_EXAMPLES=ON -make buildExamples +cmake -B build -DVIENNALS_BUILD_EXAMPLES=ON +cmake --build build ``` ## Integration in CMake projects diff --git a/Tests/Advection/CMakeLists.txt b/Tests/Advection/CMakeLists.txt index a31a6338..ca2709ab 100644 --- a/Tests/Advection/CMakeLists.txt +++ b/Tests/Advection/CMakeLists.txt @@ -1,11 +1,8 @@ cmake_minimum_required(VERSION 3.14) +project(Advection LANGUAGES CXX) -project("Advection") +add_executable(${PROJECT_NAME} "${PROJECT_NAME}.cpp") +target_link_libraries(${PROJECT_NAME} PRIVATE ViennaLS) -add_executable(${PROJECT_NAME} ${PROJECT_NAME}.cpp) -target_include_directories(${PROJECT_NAME} PUBLIC ${VIENNALS_INCLUDE_DIRS}) -target_link_libraries(${PROJECT_NAME} PRIVATE ${VIENNALS_LIBRARIES}) - -# Add to test framework -add_dependencies(buildTests ${PROJECT_NAME}) +add_dependencies(ViennaLS_Tests ${PROJECT_NAME}) add_test(NAME ${PROJECT_NAME} COMMAND $) diff --git a/Tests/Advection2D/CMakeLists.txt b/Tests/Advection2D/CMakeLists.txt index 8d62df85..0340d105 100644 --- a/Tests/Advection2D/CMakeLists.txt +++ b/Tests/Advection2D/CMakeLists.txt @@ -1,11 +1,8 @@ cmake_minimum_required(VERSION 3.14) +project(Advection2D LANGUAGES CXX) -project("Advection2D") +add_executable(${PROJECT_NAME} "${PROJECT_NAME}.cpp") +target_link_libraries(${PROJECT_NAME} PRIVATE ViennaLS) -add_executable(${PROJECT_NAME} ${PROJECT_NAME}.cpp) -target_include_directories(${PROJECT_NAME} PUBLIC ${VIENNALS_INCLUDE_DIRS}) -target_link_libraries(${PROJECT_NAME} PRIVATE ${VIENNALS_LIBRARIES}) - -# Add to test framework -add_dependencies(buildTests ${PROJECT_NAME}) +add_dependencies(ViennaLS_Tests ${PROJECT_NAME}) add_test(NAME ${PROJECT_NAME} COMMAND $) diff --git a/Tests/AdvectionBenchmark/CMakeLists.txt b/Tests/AdvectionBenchmark/CMakeLists.txt index 455aebd6..5bf0a1b6 100644 --- a/Tests/AdvectionBenchmark/CMakeLists.txt +++ b/Tests/AdvectionBenchmark/CMakeLists.txt @@ -1,13 +1,8 @@ cmake_minimum_required(VERSION 3.14) +project(AdvectionBenchmark LANGUAGES CXX) -project("AdvectionBenchmark") +add_executable(${PROJECT_NAME} "${PROJECT_NAME}.cpp") +target_link_libraries(${PROJECT_NAME} PRIVATE ViennaLS) -add_executable(${PROJECT_NAME} ${PROJECT_NAME}.cpp) -target_include_directories(${PROJECT_NAME} PUBLIC ${VIENNALS_INCLUDE_DIRS}) -target_link_libraries(${PROJECT_NAME} PRIVATE ${VIENNALS_LIBRARIES}) - -add_dependencies(buildTests ${PROJECT_NAME}) +add_dependencies(ViennaLS_Tests ${PROJECT_NAME}) add_test(NAME ${PROJECT_NAME} COMMAND $) - -# Label this test as a benchmark -set_tests_properties(${PROJECT_NAME} PROPERTIES LABELS benchmark) diff --git a/Tests/AdvectionPlane/CMakeLists.txt b/Tests/AdvectionPlane/CMakeLists.txt index 42da6b40..41a62971 100644 --- a/Tests/AdvectionPlane/CMakeLists.txt +++ b/Tests/AdvectionPlane/CMakeLists.txt @@ -1,11 +1,8 @@ cmake_minimum_required(VERSION 3.14) +project(AdvectionPlane LANGUAGES CXX) -project("AdvectionPlane") +add_executable(${PROJECT_NAME} "${PROJECT_NAME}.cpp") +target_link_libraries(${PROJECT_NAME} PRIVATE ViennaLS) -add_executable(${PROJECT_NAME} ${PROJECT_NAME}.cpp) -target_include_directories(${PROJECT_NAME} PUBLIC ${VIENNALS_INCLUDE_DIRS}) -target_link_libraries(${PROJECT_NAME} PRIVATE ${VIENNALS_LIBRARIES}) - -# Add to test framework -add_dependencies(buildTests ${PROJECT_NAME}) +add_dependencies(ViennaLS_Tests ${PROJECT_NAME}) add_test(NAME ${PROJECT_NAME} COMMAND $) diff --git a/Tests/BooleanOperation/CMakeLists.txt b/Tests/BooleanOperation/CMakeLists.txt index 96ecafea..8d616e83 100644 --- a/Tests/BooleanOperation/CMakeLists.txt +++ b/Tests/BooleanOperation/CMakeLists.txt @@ -1,11 +1,8 @@ cmake_minimum_required(VERSION 3.14) +project(BooleanOperation LANGUAGES CXX) -project("BooleanOperation") +add_executable(${PROJECT_NAME} "${PROJECT_NAME}.cpp") +target_link_libraries(${PROJECT_NAME} PRIVATE ViennaLS) -add_executable(${PROJECT_NAME} ${PROJECT_NAME}.cpp) -target_include_directories(${PROJECT_NAME} PUBLIC ${VIENNALS_INCLUDE_DIRS}) -target_link_libraries(${PROJECT_NAME} PRIVATE ${VIENNALS_LIBRARIES}) - -# Add to test framework -add_dependencies(buildTests ${PROJECT_NAME}) +add_dependencies(ViennaLS_Tests ${PROJECT_NAME}) add_test(NAME ${PROJECT_NAME} COMMAND $) diff --git a/Tests/BooleanOperationExactZero/CMakeLists.txt b/Tests/BooleanOperationExactZero/CMakeLists.txt index 23d6b9b4..d1d8d3fc 100644 --- a/Tests/BooleanOperationExactZero/CMakeLists.txt +++ b/Tests/BooleanOperationExactZero/CMakeLists.txt @@ -1,11 +1,8 @@ cmake_minimum_required(VERSION 3.14) +project(BooleanOperationExactZero LANGUAGES CXX) -project("BooleanOperationExactZero") +add_executable(${PROJECT_NAME} "${PROJECT_NAME}.cpp") +target_link_libraries(${PROJECT_NAME} PRIVATE ViennaLS) -add_executable(${PROJECT_NAME} ${PROJECT_NAME}.cpp) -target_include_directories(${PROJECT_NAME} PUBLIC ${VIENNALS_INCLUDE_DIRS}) -target_link_libraries(${PROJECT_NAME} PRIVATE ${VIENNALS_LIBRARIES}) - -# Add to test framework -add_dependencies(buildTests ${PROJECT_NAME}) +add_dependencies(ViennaLS_Tests ${PROJECT_NAME}) add_test(NAME ${PROJECT_NAME} COMMAND $) diff --git a/Tests/BooleanOperationExactZero1/CMakeLists.txt b/Tests/BooleanOperationExactZero1/CMakeLists.txt index e8800eaf..977cc7c1 100644 --- a/Tests/BooleanOperationExactZero1/CMakeLists.txt +++ b/Tests/BooleanOperationExactZero1/CMakeLists.txt @@ -1,11 +1,8 @@ cmake_minimum_required(VERSION 3.14) +project(BooleanOperationExactZero1 LANGUAGES CXX) -project("BooleanOperationExactZero1") +add_executable(${PROJECT_NAME} "${PROJECT_NAME}.cpp") +target_link_libraries(${PROJECT_NAME} PRIVATE ViennaLS) -add_executable(${PROJECT_NAME} ${PROJECT_NAME}.cpp) -target_include_directories(${PROJECT_NAME} PUBLIC ${VIENNALS_INCLUDE_DIRS}) -target_link_libraries(${PROJECT_NAME} PRIVATE ${VIENNALS_LIBRARIES}) - -# Add to test framework -add_dependencies(buildTests ${PROJECT_NAME}) +add_dependencies(ViennaLS_Tests ${PROJECT_NAME}) add_test(NAME ${PROJECT_NAME} COMMAND $) diff --git a/Tests/BoundaryConditions/CMakeLists.txt b/Tests/BoundaryConditions/CMakeLists.txt index 572c0350..93102210 100644 --- a/Tests/BoundaryConditions/CMakeLists.txt +++ b/Tests/BoundaryConditions/CMakeLists.txt @@ -1,11 +1,8 @@ cmake_minimum_required(VERSION 3.14) +project(BoundaryConditions LANGUAGES CXX) -project("BoundaryConditions") +add_executable(${PROJECT_NAME} "${PROJECT_NAME}.cpp") +target_link_libraries(${PROJECT_NAME} PRIVATE ViennaLS) -add_executable(${PROJECT_NAME} ${PROJECT_NAME}.cpp) -target_include_directories(${PROJECT_NAME} PUBLIC ${VIENNALS_INCLUDE_DIRS}) -target_link_libraries(${PROJECT_NAME} PRIVATE ${VIENNALS_LIBRARIES}) - -# Add to test framework -add_dependencies(buildTests ${PROJECT_NAME}) +add_dependencies(ViennaLS_Tests ${PROJECT_NAME}) add_test(NAME ${PROJECT_NAME} COMMAND $) diff --git a/Tests/CMakeLists.txt b/Tests/CMakeLists.txt index 910d9ca9..2ecf7b43 100644 --- a/Tests/CMakeLists.txt +++ b/Tests/CMakeLists.txt @@ -1,19 +1,20 @@ -cmake_minimum_required(VERSION 3.14) +add_custom_target(ViennaLS_Tests ALL) -project(ViennaLSTests) +if(NOT VTK_DIR) + include("../cmake/vtk.cmake") + setup_vtk_env(ViennaLS_Tests "tests") +endif() -include("${CMAKE_SOURCE_DIR}/cmake/prepare.cmake") +file( + GLOB entries + LIST_DIRECTORIES true + "*") -# Point find_package to the binary directory instead of the install location -find_package(ViennaLS REQUIRED CONFIG PATHS ${ViennaLS_BINARY_DIR} NO_DEFAULT_PATH) +foreach(entry ${entries}) + if(NOT IS_DIRECTORY ${entry}) + continue() + endif() -list(PREPEND VIENNALS_INCLUDE_DIRS ${VIENNALS_BUILD_INCLUDE_DIRS}) - -add_custom_target(buildTests DEPENDS ${VIENNALS_DEPENDENCIES}) - -subdirlist(TEST_DIRS ${CMAKE_CURRENT_LIST_DIR}) - -# add all tests -foreach(subdir ${TEST_DIRS}) - add_subdirectory(${subdir}) + message(STATUS "[ViennaLS] Adding Test ${entry}") + add_subdirectory(${entry}) endforeach() diff --git a/Tests/CalculateCurvatures/CMakeLists.txt b/Tests/CalculateCurvatures/CMakeLists.txt index 1f74afda..f9c8e290 100644 --- a/Tests/CalculateCurvatures/CMakeLists.txt +++ b/Tests/CalculateCurvatures/CMakeLists.txt @@ -1,11 +1,8 @@ cmake_minimum_required(VERSION 3.14) +project(CalculateCurvatures LANGUAGES CXX) -project("CalculateCurvatures") +add_executable(${PROJECT_NAME} "${PROJECT_NAME}.cpp") +target_link_libraries(${PROJECT_NAME} PRIVATE ViennaLS) -add_executable(${PROJECT_NAME} ${PROJECT_NAME}.cpp) -target_include_directories(${PROJECT_NAME} PUBLIC ${VIENNALS_INCLUDE_DIRS}) -target_link_libraries(${PROJECT_NAME} PRIVATE ${VIENNALS_LIBRARIES}) - -# Add to test framework -add_dependencies(buildTests ${PROJECT_NAME}) +add_dependencies(ViennaLS_Tests ${PROJECT_NAME}) add_test(NAME ${PROJECT_NAME} COMMAND $) diff --git a/Tests/CalculateNormalVectors/CMakeLists.txt b/Tests/CalculateNormalVectors/CMakeLists.txt index 662fb1dc..f9affb97 100644 --- a/Tests/CalculateNormalVectors/CMakeLists.txt +++ b/Tests/CalculateNormalVectors/CMakeLists.txt @@ -1,11 +1,8 @@ cmake_minimum_required(VERSION 3.14) +project(CalculateNormalVectors LANGUAGES CXX) -project("CalculateNormalVectors") +add_executable(${PROJECT_NAME} "${PROJECT_NAME}.cpp") +target_link_libraries(${PROJECT_NAME} PRIVATE ViennaLS) -add_executable(${PROJECT_NAME} ${PROJECT_NAME}.cpp) -target_include_directories(${PROJECT_NAME} PUBLIC ${VIENNALS_INCLUDE_DIRS}) -target_link_libraries(${PROJECT_NAME} PRIVATE ${VIENNALS_LIBRARIES}) - -# Add to test framework -add_dependencies(buildTests ${PROJECT_NAME}) +add_dependencies(ViennaLS_Tests ${PROJECT_NAME}) add_test(NAME ${PROJECT_NAME} COMMAND $) diff --git a/Tests/ConvexHull/CMakeLists.txt b/Tests/ConvexHull/CMakeLists.txt index a82ca3bc..58cd5ebf 100644 --- a/Tests/ConvexHull/CMakeLists.txt +++ b/Tests/ConvexHull/CMakeLists.txt @@ -1,10 +1,8 @@ cmake_minimum_required(VERSION 3.14) +project(ConvexHull LANGUAGES CXX) -project("ConvexHull") +add_executable(${PROJECT_NAME} "${PROJECT_NAME}.cpp") +target_link_libraries(${PROJECT_NAME} PRIVATE ViennaLS) -add_executable(${PROJECT_NAME} ${PROJECT_NAME}.cpp) -target_include_directories(${PROJECT_NAME} PUBLIC ${VIENNALS_INCLUDE_DIRS}) -target_link_libraries(${PROJECT_NAME} PRIVATE ${VIENNALS_LIBRARIES}) - -add_dependencies(buildTests ${PROJECT_NAME}) +add_dependencies(ViennaLS_Tests ${PROJECT_NAME}) add_test(NAME ${PROJECT_NAME} COMMAND $) diff --git a/Tests/ConvexHull3D/CMakeLists.txt b/Tests/ConvexHull3D/CMakeLists.txt index 0e305d39..12c10e8e 100644 --- a/Tests/ConvexHull3D/CMakeLists.txt +++ b/Tests/ConvexHull3D/CMakeLists.txt @@ -1,10 +1,8 @@ cmake_minimum_required(VERSION 3.14) +project(ConvexHull3D LANGUAGES CXX) -project("ConvexHull3D") +add_executable(${PROJECT_NAME} "${PROJECT_NAME}.cpp") +target_link_libraries(${PROJECT_NAME} PRIVATE ViennaLS) -add_executable(${PROJECT_NAME} ${PROJECT_NAME}.cpp) -target_include_directories(${PROJECT_NAME} PUBLIC ${VIENNALS_INCLUDE_DIRS}) -target_link_libraries(${PROJECT_NAME} PRIVATE ${VIENNALS_LIBRARIES}) - -add_dependencies(buildTests ${PROJECT_NAME}) +add_dependencies(ViennaLS_Tests ${PROJECT_NAME}) add_test(NAME ${PROJECT_NAME} COMMAND $) diff --git a/Tests/DiskMesh/CMakeLists.txt b/Tests/DiskMesh/CMakeLists.txt index 195608eb..37fb69b4 100644 --- a/Tests/DiskMesh/CMakeLists.txt +++ b/Tests/DiskMesh/CMakeLists.txt @@ -1,11 +1,8 @@ cmake_minimum_required(VERSION 3.14) +project(DiskMesh LANGUAGES CXX) -project("DiskMesh") +add_executable(${PROJECT_NAME} "${PROJECT_NAME}.cpp") +target_link_libraries(${PROJECT_NAME} PRIVATE ViennaLS) -add_executable(${PROJECT_NAME} ${PROJECT_NAME}.cpp) -target_include_directories(${PROJECT_NAME} PUBLIC ${VIENNALS_INCLUDE_DIRS}) -target_link_libraries(${PROJECT_NAME} PRIVATE ${VIENNALS_LIBRARIES}) - -# Add to test framework -add_dependencies(buildTests ${PROJECT_NAME}) +add_dependencies(ViennaLS_Tests ${PROJECT_NAME}) add_test(NAME ${PROJECT_NAME} COMMAND $) diff --git a/Tests/Expand/CMakeLists.txt b/Tests/Expand/CMakeLists.txt index 6035a636..6d7b1168 100644 --- a/Tests/Expand/CMakeLists.txt +++ b/Tests/Expand/CMakeLists.txt @@ -1,10 +1,8 @@ cmake_minimum_required(VERSION 3.14) +project(Expand LANGUAGES CXX) -project("Expand") +add_executable(${PROJECT_NAME} "${PROJECT_NAME}.cpp") +target_link_libraries(${PROJECT_NAME} PRIVATE ViennaLS) -add_executable(${PROJECT_NAME} ${PROJECT_NAME}.cpp) -target_include_directories(${PROJECT_NAME} PUBLIC ${VIENNALS_INCLUDE_DIRS}) -target_link_libraries(${PROJECT_NAME} PRIVATE ${VIENNALS_LIBRARIES}) - -add_dependencies(buildTests ${PROJECT_NAME}) +add_dependencies(ViennaLS_Tests ${PROJECT_NAME}) add_test(NAME ${PROJECT_NAME} COMMAND $) diff --git a/Tests/Extrude/CMakeLists.txt b/Tests/Extrude/CMakeLists.txt index 4ed0d7b1..1bf6aa25 100644 --- a/Tests/Extrude/CMakeLists.txt +++ b/Tests/Extrude/CMakeLists.txt @@ -1,10 +1,8 @@ cmake_minimum_required(VERSION 3.14) +project(Extrude LANGUAGES CXX) -project("Extrude") +add_executable(${PROJECT_NAME} "${PROJECT_NAME}.cpp") +target_link_libraries(${PROJECT_NAME} PRIVATE ViennaLS) -add_executable(${PROJECT_NAME} ${PROJECT_NAME}.cpp) -target_include_directories(${PROJECT_NAME} PUBLIC ${VIENNALS_INCLUDE_DIRS}) -target_link_libraries(${PROJECT_NAME} PRIVATE ${VIENNALS_LIBRARIES}) - -add_dependencies(buildTests ${PROJECT_NAME}) +add_dependencies(ViennaLS_Tests ${PROJECT_NAME}) add_test(NAME ${PROJECT_NAME} COMMAND $) diff --git a/Tests/FeatureDetection/CMakeLists.txt b/Tests/FeatureDetection/CMakeLists.txt index cad58462..5a3865f0 100644 --- a/Tests/FeatureDetection/CMakeLists.txt +++ b/Tests/FeatureDetection/CMakeLists.txt @@ -1,10 +1,8 @@ cmake_minimum_required(VERSION 3.14) +project(FeatureDetection LANGUAGES CXX) -project("FeatureDetection") +add_executable(${PROJECT_NAME} "${PROJECT_NAME}.cpp") +target_link_libraries(${PROJECT_NAME} PRIVATE ViennaLS) -add_executable(${PROJECT_NAME} ${PROJECT_NAME}.cpp) -target_include_directories(${PROJECT_NAME} PUBLIC ${VIENNALS_INCLUDE_DIRS}) -target_link_libraries(${PROJECT_NAME} PRIVATE ${VIENNALS_LIBRARIES}) - -add_dependencies(buildTests ${PROJECT_NAME}) +add_dependencies(ViennaLS_Tests ${PROJECT_NAME}) add_test(NAME ${PROJECT_NAME} COMMAND $) diff --git a/Tests/FileWriter/CMakeLists.txt b/Tests/FileWriter/CMakeLists.txt index 32d94d67..82df8a96 100644 --- a/Tests/FileWriter/CMakeLists.txt +++ b/Tests/FileWriter/CMakeLists.txt @@ -1,11 +1,8 @@ cmake_minimum_required(VERSION 3.14) +project(FileWriter LANGUAGES CXX) -project("FileWriter") +add_executable(${PROJECT_NAME} "${PROJECT_NAME}.cpp") +target_link_libraries(${PROJECT_NAME} PRIVATE ViennaLS) -add_executable(${PROJECT_NAME} ${PROJECT_NAME}.cpp) -target_include_directories(${PROJECT_NAME} PUBLIC ${VIENNALS_INCLUDE_DIRS}) -target_link_libraries(${PROJECT_NAME} PRIVATE ${VIENNALS_LIBRARIES}) - -# Add to test framework -add_dependencies(buildTests ${PROJECT_NAME}) +add_dependencies(ViennaLS_Tests ${PROJECT_NAME}) add_test(NAME ${PROJECT_NAME} COMMAND $) diff --git a/Tests/FromMesh/CMakeLists.txt b/Tests/FromMesh/CMakeLists.txt index 9303f346..ecf583a8 100644 --- a/Tests/FromMesh/CMakeLists.txt +++ b/Tests/FromMesh/CMakeLists.txt @@ -1,10 +1,8 @@ cmake_minimum_required(VERSION 3.14) +project(FromMesh LANGUAGES CXX) -project("FromMesh") +add_executable(${PROJECT_NAME} "${PROJECT_NAME}.cpp") +target_link_libraries(${PROJECT_NAME} PRIVATE ViennaLS) -add_executable(${PROJECT_NAME} ${PROJECT_NAME}.cpp) -target_include_directories(${PROJECT_NAME} PUBLIC ${VIENNALS_INCLUDE_DIRS}) -target_link_libraries(${PROJECT_NAME} PRIVATE ${VIENNALS_LIBRARIES}) - -add_dependencies(buildTests ${PROJECT_NAME}) +add_dependencies(ViennaLS_Tests ${PROJECT_NAME}) add_test(NAME ${PROJECT_NAME} COMMAND $) diff --git a/Tests/GenerateHoleGeometry/CMakeLists.txt b/Tests/GenerateHoleGeometry/CMakeLists.txt index a3d8024d..bb91fd84 100644 --- a/Tests/GenerateHoleGeometry/CMakeLists.txt +++ b/Tests/GenerateHoleGeometry/CMakeLists.txt @@ -1,7 +1,8 @@ cmake_minimum_required(VERSION 3.14) +project(GenerateHoleGeometry LANGUAGES CXX) -project("GenerateHoleGeometry") +add_executable(${PROJECT_NAME} "${PROJECT_NAME}.cpp") +target_link_libraries(${PROJECT_NAME} PRIVATE ViennaLS) -add_executable(${PROJECT_NAME} ${PROJECT_NAME}.cpp) -target_include_directories(${PROJECT_NAME} PUBLIC ${VIENNALS_INCLUDE_DIRS}) -target_link_libraries(${PROJECT_NAME} PRIVATE ${VIENNALS_LIBRARIES}) +add_dependencies(ViennaLS_Tests ${PROJECT_NAME}) +add_test(NAME ${PROJECT_NAME} COMMAND $) diff --git a/Tests/GeometricAdvect/CMakeLists.txt b/Tests/GeometricAdvect/CMakeLists.txt index 437b06fa..f28f7178 100644 --- a/Tests/GeometricAdvect/CMakeLists.txt +++ b/Tests/GeometricAdvect/CMakeLists.txt @@ -1,10 +1,8 @@ cmake_minimum_required(VERSION 3.14) +project(GeometricAdvect LANGUAGES CXX) -project("GeometricAdvect") +add_executable(${PROJECT_NAME} "${PROJECT_NAME}.cpp") +target_link_libraries(${PROJECT_NAME} PRIVATE ViennaLS) -add_executable(${PROJECT_NAME} ${PROJECT_NAME}.cpp) -target_include_directories(${PROJECT_NAME} PUBLIC ${VIENNALS_INCLUDE_DIRS}) -target_link_libraries(${PROJECT_NAME} PRIVATE ${VIENNALS_LIBRARIES}) - -add_dependencies(buildTests ${PROJECT_NAME}) +add_dependencies(ViennaLS_Tests ${PROJECT_NAME}) add_test(NAME ${PROJECT_NAME} COMMAND $) diff --git a/Tests/GeometricAdvectMask/CMakeLists.txt b/Tests/GeometricAdvectMask/CMakeLists.txt index f2f968b8..ba065d6f 100644 --- a/Tests/GeometricAdvectMask/CMakeLists.txt +++ b/Tests/GeometricAdvectMask/CMakeLists.txt @@ -1,10 +1,8 @@ cmake_minimum_required(VERSION 3.14) +project(GeometricAdvectMask LANGUAGES CXX) -project("GeometricAdvectMask") +add_executable(${PROJECT_NAME} "${PROJECT_NAME}.cpp") +target_link_libraries(${PROJECT_NAME} PRIVATE ViennaLS) -add_executable(${PROJECT_NAME} ${PROJECT_NAME}.cpp) -target_include_directories(${PROJECT_NAME} PUBLIC ${VIENNALS_INCLUDE_DIRS}) -target_link_libraries(${PROJECT_NAME} PRIVATE ${VIENNALS_LIBRARIES}) - -add_dependencies(buildTests ${PROJECT_NAME}) +add_dependencies(ViennaLS_Tests ${PROJECT_NAME}) add_test(NAME ${PROJECT_NAME} COMMAND $) diff --git a/Tests/GeometricAdvectPerformance/CMakeLists.txt b/Tests/GeometricAdvectPerformance/CMakeLists.txt index dad24981..2a9088d1 100644 --- a/Tests/GeometricAdvectPerformance/CMakeLists.txt +++ b/Tests/GeometricAdvectPerformance/CMakeLists.txt @@ -1,13 +1,8 @@ cmake_minimum_required(VERSION 3.14) +project(GeometricAdvectPerformance LANGUAGES CXX) -project("GeometricAdvectPerformance") +add_executable(${PROJECT_NAME} "${PROJECT_NAME}.cpp") +target_link_libraries(${PROJECT_NAME} PRIVATE ViennaLS) -add_executable(${PROJECT_NAME} ${PROJECT_NAME}.cpp) -target_include_directories(${PROJECT_NAME} PUBLIC ${VIENNALS_INCLUDE_DIRS}) -target_link_libraries(${PROJECT_NAME} PRIVATE ${VIENNALS_LIBRARIES}) - -add_dependencies(buildTests ${PROJECT_NAME}) +add_dependencies(ViennaLS_Tests ${PROJECT_NAME}) add_test(NAME ${PROJECT_NAME} COMMAND $) - -# Label this test as a benchmark -set_tests_properties(${PROJECT_NAME} PROPERTIES LABELS benchmark) diff --git a/Tests/GeometricAdvectTrench/CMakeLists.txt b/Tests/GeometricAdvectTrench/CMakeLists.txt index 072eacc9..4238d9a3 100644 --- a/Tests/GeometricAdvectTrench/CMakeLists.txt +++ b/Tests/GeometricAdvectTrench/CMakeLists.txt @@ -1,10 +1,8 @@ cmake_minimum_required(VERSION 3.14) +project(GeometricAdvectTrench LANGUAGES CXX) -project("GeometricAdvectTrench") +add_executable(${PROJECT_NAME} "${PROJECT_NAME}.cpp") +target_link_libraries(${PROJECT_NAME} PRIVATE ViennaLS) -add_executable(${PROJECT_NAME} ${PROJECT_NAME}.cpp) -target_include_directories(${PROJECT_NAME} PUBLIC ${VIENNALS_INCLUDE_DIRS}) -target_link_libraries(${PROJECT_NAME} PRIVATE ${VIENNALS_LIBRARIES}) - -add_dependencies(buildTests ${PROJECT_NAME}) +add_dependencies(ViennaLS_Tests ${PROJECT_NAME}) add_test(NAME ${PROJECT_NAME} COMMAND $) diff --git a/Tests/HullMesh/CMakeLists.txt b/Tests/HullMesh/CMakeLists.txt index be6a5594..f6d33b74 100644 --- a/Tests/HullMesh/CMakeLists.txt +++ b/Tests/HullMesh/CMakeLists.txt @@ -1,10 +1,8 @@ cmake_minimum_required(VERSION 3.14) +project(HullMesh LANGUAGES CXX) -project("HullMesh") +add_executable(${PROJECT_NAME} "${PROJECT_NAME}.cpp") +target_link_libraries(${PROJECT_NAME} PRIVATE ViennaLS) -add_executable(${PROJECT_NAME} ${PROJECT_NAME}.cpp) -target_include_directories(${PROJECT_NAME} PUBLIC ${VIENNALS_INCLUDE_DIRS}) -target_link_libraries(${PROJECT_NAME} PRIVATE ${VIENNALS_LIBRARIES}) - -add_dependencies(buildTests ${PROJECT_NAME}) +add_dependencies(ViennaLS_Tests ${PROJECT_NAME}) add_test(NAME ${PROJECT_NAME} COMMAND $) diff --git a/Tests/Make3DSphere/CMakeLists.txt b/Tests/Make3DSphere/CMakeLists.txt index 80f0225e..2dc9b6ca 100644 --- a/Tests/Make3DSphere/CMakeLists.txt +++ b/Tests/Make3DSphere/CMakeLists.txt @@ -1,10 +1,8 @@ cmake_minimum_required(VERSION 3.14) +project(Make3DSphere LANGUAGES CXX) -project("Make3DSphere") +add_executable(${PROJECT_NAME} "${PROJECT_NAME}.cpp") +target_link_libraries(${PROJECT_NAME} PRIVATE ViennaLS) -add_executable(${PROJECT_NAME} ${PROJECT_NAME}.cpp) -target_include_directories(${PROJECT_NAME} PUBLIC ${VIENNALS_INCLUDE_DIRS}) -target_link_libraries(${PROJECT_NAME} PRIVATE ${VIENNALS_LIBRARIES}) - -add_dependencies(buildTests ${PROJECT_NAME}) +add_dependencies(ViennaLS_Tests ${PROJECT_NAME}) add_test(NAME ${PROJECT_NAME} COMMAND $) diff --git a/Tests/MakeBox/CMakeLists.txt b/Tests/MakeBox/CMakeLists.txt index f98e4698..7efb6421 100644 --- a/Tests/MakeBox/CMakeLists.txt +++ b/Tests/MakeBox/CMakeLists.txt @@ -1,11 +1,8 @@ cmake_minimum_required(VERSION 3.14) +project(MakeBox LANGUAGES CXX) -project("MakeBox") +add_executable(${PROJECT_NAME} "${PROJECT_NAME}.cpp") +target_link_libraries(${PROJECT_NAME} PRIVATE ViennaLS) -add_executable(${PROJECT_NAME} ${PROJECT_NAME}.cpp) -target_include_directories(${PROJECT_NAME} PUBLIC ${VIENNALS_INCLUDE_DIRS}) -target_link_libraries(${PROJECT_NAME} PRIVATE ${VIENNALS_LIBRARIES}) - -# Add to test framework -add_dependencies(buildTests ${PROJECT_NAME}) +add_dependencies(ViennaLS_Tests ${PROJECT_NAME}) add_test(NAME ${PROJECT_NAME} COMMAND $) diff --git a/Tests/MakeGeometry/CMakeLists.txt b/Tests/MakeGeometry/CMakeLists.txt index bd76f15c..e148a65d 100644 --- a/Tests/MakeGeometry/CMakeLists.txt +++ b/Tests/MakeGeometry/CMakeLists.txt @@ -1,10 +1,8 @@ cmake_minimum_required(VERSION 3.14) +project(MakeGeometry LANGUAGES CXX) -project("MakeGeometry") +add_executable(${PROJECT_NAME} "${PROJECT_NAME}.cpp") +target_link_libraries(${PROJECT_NAME} PRIVATE ViennaLS) -add_executable(${PROJECT_NAME} ${PROJECT_NAME}.cpp) -target_include_directories(${PROJECT_NAME} PUBLIC ${VIENNALS_INCLUDE_DIRS}) -target_link_libraries(${PROJECT_NAME} PRIVATE ${VIENNALS_LIBRARIES}) - -add_dependencies(buildTests ${PROJECT_NAME}) +add_dependencies(ViennaLS_Tests ${PROJECT_NAME}) add_test(NAME ${PROJECT_NAME} COMMAND $) diff --git a/Tests/MakePlane/CMakeLists.txt b/Tests/MakePlane/CMakeLists.txt index bdf6e773..295f5173 100644 --- a/Tests/MakePlane/CMakeLists.txt +++ b/Tests/MakePlane/CMakeLists.txt @@ -1,11 +1,8 @@ cmake_minimum_required(VERSION 3.14) +project(MakePlane LANGUAGES CXX) -project("MakePlane") +add_executable(${PROJECT_NAME} "${PROJECT_NAME}.cpp") +target_link_libraries(${PROJECT_NAME} PRIVATE ViennaLS) -add_executable(${PROJECT_NAME} ${PROJECT_NAME}.cpp) -target_include_directories(${PROJECT_NAME} PUBLIC ${VIENNALS_INCLUDE_DIRS}) -target_link_libraries(${PROJECT_NAME} PRIVATE ${VIENNALS_LIBRARIES}) - -# Add to test framework -add_dependencies(buildTests ${PROJECT_NAME}) +add_dependencies(ViennaLS_Tests ${PROJECT_NAME}) add_test(NAME ${PROJECT_NAME} COMMAND $) diff --git a/Tests/MakeSphere/CMakeLists.txt b/Tests/MakeSphere/CMakeLists.txt index 7d9776c5..9d33a0c9 100644 --- a/Tests/MakeSphere/CMakeLists.txt +++ b/Tests/MakeSphere/CMakeLists.txt @@ -1,10 +1,8 @@ cmake_minimum_required(VERSION 3.14) +project(MakeSphere LANGUAGES CXX) -project("MakeSphere") +add_executable(${PROJECT_NAME} "${PROJECT_NAME}.cpp") +target_link_libraries(${PROJECT_NAME} PRIVATE ViennaLS) -add_executable(${PROJECT_NAME} ${PROJECT_NAME}.cpp) -target_include_directories(${PROJECT_NAME} PUBLIC ${VIENNALS_INCLUDE_DIRS}) -target_link_libraries(${PROJECT_NAME} PRIVATE ${VIENNALS_LIBRARIES}) - -add_dependencies(buildTests ${PROJECT_NAME}) +add_dependencies(ViennaLS_Tests ${PROJECT_NAME}) add_test(NAME ${PROJECT_NAME} COMMAND $) diff --git a/Tests/MarkVoidPoints/CMakeLists.txt b/Tests/MarkVoidPoints/CMakeLists.txt index c9bffc16..602585a1 100644 --- a/Tests/MarkVoidPoints/CMakeLists.txt +++ b/Tests/MarkVoidPoints/CMakeLists.txt @@ -1,11 +1,8 @@ cmake_minimum_required(VERSION 3.14) +project(MarkVoidPoints LANGUAGES CXX) -project("MarkVoidPoints") +add_executable(${PROJECT_NAME} "${PROJECT_NAME}.cpp") +target_link_libraries(${PROJECT_NAME} PRIVATE ViennaLS) -add_executable(${PROJECT_NAME} ${PROJECT_NAME}.cpp) -target_include_directories(${PROJECT_NAME} PUBLIC ${VIENNALS_INCLUDE_DIRS}) -target_link_libraries(${PROJECT_NAME} PRIVATE ${VIENNALS_LIBRARIES}) - -# Add to test framework -add_dependencies(buildTests ${PROJECT_NAME}) +add_dependencies(ViennaLS_Tests ${PROJECT_NAME}) add_test(NAME ${PROJECT_NAME} COMMAND $) diff --git a/Tests/MultiMaterialAdvection/CMakeLists.txt b/Tests/MultiMaterialAdvection/CMakeLists.txt index d43e37ae..f4f9709d 100644 --- a/Tests/MultiMaterialAdvection/CMakeLists.txt +++ b/Tests/MultiMaterialAdvection/CMakeLists.txt @@ -1,10 +1,8 @@ cmake_minimum_required(VERSION 3.14) +project(MultiMaterialAdvection LANGUAGES CXX) -project("MultiMaterialAdvection") +add_executable(${PROJECT_NAME} "${PROJECT_NAME}.cpp") +target_link_libraries(${PROJECT_NAME} PRIVATE ViennaLS) -add_executable(${PROJECT_NAME} ${PROJECT_NAME}.cpp) -target_include_directories(${PROJECT_NAME} PUBLIC ${VIENNALS_INCLUDE_DIRS}) -target_link_libraries(${PROJECT_NAME} PRIVATE ${VIENNALS_LIBRARIES}) - -add_dependencies(buildTests ${PROJECT_NAME}) +add_dependencies(ViennaLS_Tests ${PROJECT_NAME}) add_test(NAME ${PROJECT_NAME} COMMAND $) diff --git a/Tests/MultiMaterialEtch/CMakeLists.txt b/Tests/MultiMaterialEtch/CMakeLists.txt index 88f8fe1c..b68f7630 100644 --- a/Tests/MultiMaterialEtch/CMakeLists.txt +++ b/Tests/MultiMaterialEtch/CMakeLists.txt @@ -1,10 +1,8 @@ cmake_minimum_required(VERSION 3.14) +project(MultiMaterialEtch LANGUAGES CXX) -project("MultiMaterialEtch") +add_executable(${PROJECT_NAME} "${PROJECT_NAME}.cpp") +target_link_libraries(${PROJECT_NAME} PRIVATE ViennaLS) -add_executable(${PROJECT_NAME} ${PROJECT_NAME}.cpp) -target_include_directories(${PROJECT_NAME} PUBLIC ${VIENNALS_INCLUDE_DIRS}) -target_link_libraries(${PROJECT_NAME} PRIVATE ${VIENNALS_LIBRARIES}) - -add_dependencies(buildTests ${PROJECT_NAME}) +add_dependencies(ViennaLS_Tests ${PROJECT_NAME}) add_test(NAME ${PROJECT_NAME} COMMAND $) diff --git a/Tests/PeriodicBoundary2D/CMakeLists.txt b/Tests/PeriodicBoundary2D/CMakeLists.txt index 803cc0cf..79336243 100644 --- a/Tests/PeriodicBoundary2D/CMakeLists.txt +++ b/Tests/PeriodicBoundary2D/CMakeLists.txt @@ -1,10 +1,8 @@ cmake_minimum_required(VERSION 3.14) +project(PeriodicBoundary2D LANGUAGES CXX) -project("PeriodicBoundary2D") +add_executable(${PROJECT_NAME} "${PROJECT_NAME}.cpp") +target_link_libraries(${PROJECT_NAME} PRIVATE ViennaLS) -add_executable(${PROJECT_NAME} ${PROJECT_NAME}.cpp) -target_include_directories(${PROJECT_NAME} PUBLIC ${VIENNALS_INCLUDE_DIRS}) -target_link_libraries(${PROJECT_NAME} PRIVATE ${VIENNALS_LIBRARIES}) - -add_dependencies(buildTests ${PROJECT_NAME}) +add_dependencies(ViennaLS_Tests ${PROJECT_NAME}) add_test(NAME ${PROJECT_NAME} COMMAND $) diff --git a/Tests/ReadFromFile/CMakeLists.txt b/Tests/ReadFromFile/CMakeLists.txt index 8f96f56d..7749a8e5 100644 --- a/Tests/ReadFromFile/CMakeLists.txt +++ b/Tests/ReadFromFile/CMakeLists.txt @@ -1,10 +1,8 @@ cmake_minimum_required(VERSION 3.14) +project(ReadFromFile LANGUAGES CXX) -project("ReadFromFile") +add_executable(${PROJECT_NAME} "${PROJECT_NAME}.cpp") +target_link_libraries(${PROJECT_NAME} PRIVATE ViennaLS) -add_executable(${PROJECT_NAME} ${PROJECT_NAME}.cpp) -target_include_directories(${PROJECT_NAME} PUBLIC ${VIENNALS_INCLUDE_DIRS}) -target_link_libraries(${PROJECT_NAME} PRIVATE ${VIENNALS_LIBRARIES}) - -add_dependencies(buildTests ${PROJECT_NAME}) +add_dependencies(ViennaLS_Tests ${PROJECT_NAME}) add_test(NAME ${PROJECT_NAME} COMMAND $) diff --git a/Tests/ReadVolume/CMakeLists.txt b/Tests/ReadVolume/CMakeLists.txt index 406099c7..dc565a0d 100644 --- a/Tests/ReadVolume/CMakeLists.txt +++ b/Tests/ReadVolume/CMakeLists.txt @@ -1,10 +1,8 @@ cmake_minimum_required(VERSION 3.14) +project(ReadVolume LANGUAGES CXX) -project("ReadVolume") +add_executable(${PROJECT_NAME} "${PROJECT_NAME}.cpp") +target_link_libraries(${PROJECT_NAME} PRIVATE ViennaLS) -add_executable(${PROJECT_NAME} ${PROJECT_NAME}.cpp) -target_include_directories(${PROJECT_NAME} PUBLIC ${VIENNALS_INCLUDE_DIRS}) -target_link_libraries(${PROJECT_NAME} PRIVATE ${VIENNALS_LIBRARIES}) - -add_dependencies(buildTests ${PROJECT_NAME}) +add_dependencies(ViennaLS_Tests ${PROJECT_NAME}) add_test(NAME ${PROJECT_NAME} COMMAND $) diff --git a/Tests/RemoveStrayPoints/CMakeLists.txt b/Tests/RemoveStrayPoints/CMakeLists.txt index 0c3f0633..f914ba66 100644 --- a/Tests/RemoveStrayPoints/CMakeLists.txt +++ b/Tests/RemoveStrayPoints/CMakeLists.txt @@ -1,11 +1,8 @@ cmake_minimum_required(VERSION 3.14) +project(RemoveStrayPoints LANGUAGES CXX) -project("RemoveStrayPoints") +add_executable(${PROJECT_NAME} "${PROJECT_NAME}.cpp") +target_link_libraries(${PROJECT_NAME} PRIVATE ViennaLS) -add_executable(${PROJECT_NAME} ${PROJECT_NAME}.cpp) -target_include_directories(${PROJECT_NAME} PUBLIC ${VIENNALS_INCLUDE_DIRS}) -target_link_libraries(${PROJECT_NAME} PRIVATE ${VIENNALS_LIBRARIES}) - -# Add to test framework -add_dependencies(buildTests ${PROJECT_NAME}) +add_dependencies(ViennaLS_Tests ${PROJECT_NAME}) add_test(NAME ${PROJECT_NAME} COMMAND $) diff --git a/Tests/RotateMesh/CMakeLists.txt b/Tests/RotateMesh/CMakeLists.txt index 4d5407e6..9b7140c8 100644 --- a/Tests/RotateMesh/CMakeLists.txt +++ b/Tests/RotateMesh/CMakeLists.txt @@ -1,10 +1,8 @@ cmake_minimum_required(VERSION 3.14) +project(RotateMesh LANGUAGES CXX) -project("RotateMesh") +add_executable(${PROJECT_NAME} "${PROJECT_NAME}.cpp") +target_link_libraries(${PROJECT_NAME} PRIVATE ViennaLS) -add_executable(${PROJECT_NAME} ${PROJECT_NAME}.cpp) -target_include_directories(${PROJECT_NAME} PUBLIC ${VIENNALS_INCLUDE_DIRS}) -target_link_libraries(${PROJECT_NAME} PRIVATE ${VIENNALS_LIBRARIES}) - -add_dependencies(buildTests ${PROJECT_NAME}) +add_dependencies(ViennaLS_Tests ${PROJECT_NAME}) add_test(NAME ${PROJECT_NAME} COMMAND $) diff --git a/Tests/Serialize/CMakeLists.txt b/Tests/Serialize/CMakeLists.txt index 77e16e70..f58987fb 100644 --- a/Tests/Serialize/CMakeLists.txt +++ b/Tests/Serialize/CMakeLists.txt @@ -1,10 +1,8 @@ cmake_minimum_required(VERSION 3.14) +project(Serialize LANGUAGES CXX) -project("Serialize") +add_executable(${PROJECT_NAME} "${PROJECT_NAME}.cpp") +target_link_libraries(${PROJECT_NAME} PRIVATE ViennaLS) -add_executable(${PROJECT_NAME} ${PROJECT_NAME}.cpp) -target_include_directories(${PROJECT_NAME} PUBLIC ${VIENNALS_INCLUDE_DIRS}) -target_link_libraries(${PROJECT_NAME} PRIVATE ${VIENNALS_LIBRARIES}) - -add_dependencies(buildTests ${PROJECT_NAME}) +add_dependencies(ViennaLS_Tests ${PROJECT_NAME}) add_test(NAME ${PROJECT_NAME} COMMAND $) diff --git a/Tests/SmartPointer/CMakeLists.txt b/Tests/SmartPointer/CMakeLists.txt index 08de8b3c..b3b5fa03 100644 --- a/Tests/SmartPointer/CMakeLists.txt +++ b/Tests/SmartPointer/CMakeLists.txt @@ -1,10 +1,8 @@ cmake_minimum_required(VERSION 3.14) +project(SmartPointer LANGUAGES CXX) -project("SmartPointer") +add_executable(${PROJECT_NAME} "${PROJECT_NAME}.cpp") +target_link_libraries(${PROJECT_NAME} PRIVATE ViennaLS) -add_executable(${PROJECT_NAME} ${PROJECT_NAME}.cpp) -target_include_directories(${PROJECT_NAME} PUBLIC ${VIENNALS_INCLUDE_DIRS}) -target_link_libraries(${PROJECT_NAME} PRIVATE ${VIENNALS_LIBRARIES}) - -add_dependencies(buildTests ${PROJECT_NAME}) +add_dependencies(ViennaLS_Tests ${PROJECT_NAME}) add_test(NAME ${PROJECT_NAME} COMMAND $) diff --git a/Tests/VisualizationMesh/CMakeLists.txt b/Tests/VisualizationMesh/CMakeLists.txt index df6d59f9..69f180db 100644 --- a/Tests/VisualizationMesh/CMakeLists.txt +++ b/Tests/VisualizationMesh/CMakeLists.txt @@ -1,13 +1,8 @@ cmake_minimum_required(VERSION 3.14) +project(VisualizationMesh LANGUAGES CXX) -project("VisualizationMesh") +add_executable(${PROJECT_NAME} "${PROJECT_NAME}.cpp") +target_link_libraries(${PROJECT_NAME} PRIVATE ViennaLS) -if(VIENNALS_USE_VTK) - add_executable(${PROJECT_NAME} ${PROJECT_NAME}.cpp) - target_include_directories(${PROJECT_NAME} PUBLIC ${VIENNALS_INCLUDE_DIRS}) - target_link_libraries(${PROJECT_NAME} PRIVATE ${VIENNALS_LIBRARIES}) - - add_dependencies(buildTests ${PROJECT_NAME}) - add_test(NAME ${PROJECT_NAME} COMMAND $) - -endif() +add_dependencies(ViennaLS_Tests ${PROJECT_NAME}) +add_test(NAME ${PROJECT_NAME} COMMAND $) diff --git a/Tests/VoidDetection/CMakeLists.txt b/Tests/VoidDetection/CMakeLists.txt index 50c5bff1..c0ba3845 100644 --- a/Tests/VoidDetection/CMakeLists.txt +++ b/Tests/VoidDetection/CMakeLists.txt @@ -1,10 +1,8 @@ cmake_minimum_required(VERSION 3.14) +project(VoidDetection LANGUAGES CXX) -project("VoidDetection") +add_executable(${PROJECT_NAME} "${PROJECT_NAME}.cpp") +target_link_libraries(${PROJECT_NAME} PRIVATE ViennaLS) -add_executable(${PROJECT_NAME} ${PROJECT_NAME}.cpp) -target_include_directories(${PROJECT_NAME} PUBLIC ${VIENNALS_INCLUDE_DIRS}) -target_link_libraries(${PROJECT_NAME} PRIVATE ${VIENNALS_LIBRARIES}) - -add_dependencies(buildTests ${PROJECT_NAME}) +add_dependencies(ViennaLS_Tests ${PROJECT_NAME}) add_test(NAME ${PROJECT_NAME} COMMAND $) diff --git a/cmake/.cpm-format b/cmake/.cpm-format new file mode 100644 index 00000000..284c984c --- /dev/null +++ b/cmake/.cpm-format @@ -0,0 +1,69 @@ +parse: + additional_commands: + cpmaddpackage: + pargs: + nargs: '*' + flags: [] + spelling: CPMAddPackage + kwargs: &cpmaddpackagekwargs + NAME: 1 + FORCE: 1 + VERSION: 1 + GIT_TAG: 1 + DOWNLOAD_ONLY: 1 + GITHUB_REPOSITORY: 1 + GITLAB_REPOSITORY: 1 + GIT_REPOSITORY: 1 + SVN_REPOSITORY: 1 + SVN_REVISION: 1 + SOURCE_DIR: 1 + DOWNLOAD_COMMAND: 1 + FIND_PACKAGE_ARGUMENTS: 1 + NO_CACHE: 1 + GIT_SHALLOW: 1 + URL: 1 + URL_HASH: 1 + URL_MD5: 1 + DOWNLOAD_NAME: 1 + DOWNLOAD_NO_EXTRACT: 1 + HTTP_USERNAME: 1 + HTTP_PASSWORD: 1 + EXCLUDE_FROM_ALL: 1 + SYSTEM: 1 + SOURCE_SUBDIR: 1 + OPTIONS: + + cpmfindpackage: + pargs: + nargs: '*' + flags: [] + spelling: CPMFindPackage + kwargs: *cpmaddpackagekwargs + cpmdeclarepackage: + pargs: + nargs: '*' + flags: [] + spelling: CPMDeclarePackage + kwargs: *cpmaddpackagekwargs + packageproject: + pargs: + nargs: '*' + flags: [] + spelling: packageProject + kwargs: + NAME: 1 + VERSION: 1 + INCLUDE_DIR: 1 + INCLUDE_DESTINATION: 1 + BINARY_DIR: 1 + COMPATIBILITY: 1 + VERSION_HEADER: 1 + DEPENDENCIES: + + cpmusepackagelock: + pargs: 1 + spelling: CPMUsePackageLock + cpmregisterpackage: + pargs: 1 + spelling: CPMRegisterPackage + cpmgetpackageversion: + pargs: 2 + spelling: CPMGetPackageVersion diff --git a/cmake/ViennaLSConfig.cmake.in b/cmake/ViennaLSConfig.cmake.in deleted file mode 100644 index dba07ffc..00000000 --- a/cmake/ViennaLSConfig.cmake.in +++ /dev/null @@ -1,73 +0,0 @@ -@PACKAGE_INIT@ - -include(CMakeFindDependencyMacro) - -# ViennaLS requires C++17 -set(CMAKE_CXX_STANDARD "17") - -# ################################################################################################## -# compiler dependent settings for ViennaLS -# ################################################################################################## -find_dependency(OpenMP) -list(APPEND VIENNALS_LIBRARIES OpenMP::OpenMP_CXX) - -# compiler dependent settings -if("${CMAKE_CXX_COMPILER_ID}" STREQUAL "GNU") - # disable-new-dtags sets RPATH which searches for libs recursively, instead of RUNPATH which is - # not needed for g++ to link correctly - set(CMAKE_EXE_LINKER_FLAGS "${CMAKE_EXE_LINKER_FLAGS} -Wl,--disable-new-dtags") -elseif("${CMAKE_CXX_COMPILER_ID}" STREQUAL "MSVC") - # SET(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} /openmp /wd\"4267\" /wd\"4244\"") - set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} /wd\"4267\" /wd\"4244\"") -endif() - -set(VIENNALS_INCLUDE_DIRS "@CMAKE_INSTALL_PREFIX@/@CMAKE_INSTALL_INCLUDEDIR@") - -set(ViennaHRLE_DIR @ViennaHRLE_DIR@) - -find_dependency(ViennaHRLE PATHS ${ViennaHRLE_DIR} NO_DEFAULT_PATH) -list(APPEND VIENNALS_INCLUDE_DIRS ${VIENNAHRLE_INCLUDE_DIRS}) - -set(VIENNALS_USE_VTK @VIENNALS_USE_VTK@) -if(@VIENNALS_USE_VTK@) - set(VTK_DIR @VTK_DIR@) - - # If VIENNALS_USE_VTK is set to true, we expect vtk to be found. Otherwise throw an error. - # NO_DEFAULT_PATH ensures that the path is stored in cmake cache and consecutive find_dependency - # calls don't overwrite its value. - find_dependency( - VTK - CONFIG - PATHS - ${VTK_DIR} - COMPONENTS - @VTK_COMPONENTS@ - NO_DEFAULT_PATH) - - add_compile_definitions(VIENNALS_USE_VTK) - - # use VTK_USE_FILE for older versions of VTK - if(VTK_VERSION VERSION_LESS "9.0") - message(STATUS "Using old VTK Version: ${VTK_VERSION}") - include(${VTK_USE_FILE}) - endif() - - set(VTK_LIBRARIES @VTK_LIBRARIES@) - - list(APPEND VIENNALS_LIBRARIES ${VTK_LIBRARIES}) -endif() - -if(@VIENNALS_PRECOMPILE_HEADERS@) - option(VIENNALS_USE_PRECOMPILED "Use precompiled headers" ON) - if(VIENNALS_USE_PRECOMPILED) - add_definitions(-DVIENNALS_USE_PRECOMPILED) - link_directories(@CMAKE_INSTALL_PREFIX@/lib) - list(APPEND VIENNALS_LIBRARIES @PROJECT_NAME@) - endif() -endif() - -if(@VIENNALS_STATIC_BUILD@) - set(VIENNALS_STATIC_BUILD ON) -endif() - -check_required_components("@PROJECT_NAME@") diff --git a/cmake/cpm.cmake b/cmake/cpm.cmake new file mode 100644 index 00000000..3ca29064 --- /dev/null +++ b/cmake/cpm.cmake @@ -0,0 +1,23 @@ +# SPDX-License-Identifier: MIT +# +# SPDX-FileCopyrightText: Copyright (c) 2019-2023 Lars Melchior and contributors + +set(CPM_DOWNLOAD_VERSION 0.38.6) +set(CPM_HASH_SUM "11c3fa5f1ba14f15d31c2fb63dbc8628ee133d81c8d764caad9a8db9e0bacb07") + +if(CPM_SOURCE_CACHE) + set(CPM_DOWNLOAD_LOCATION "${CPM_SOURCE_CACHE}/cpm/CPM_${CPM_DOWNLOAD_VERSION}.cmake") +elseif(DEFINED ENV{CPM_SOURCE_CACHE}) + set(CPM_DOWNLOAD_LOCATION "$ENV{CPM_SOURCE_CACHE}/cpm/CPM_${CPM_DOWNLOAD_VERSION}.cmake") +else() + set(CPM_DOWNLOAD_LOCATION "${CMAKE_BINARY_DIR}/cmake/CPM_${CPM_DOWNLOAD_VERSION}.cmake") +endif() + +# Expand relative path. This is important if the provided path contains a tilde (~) +get_filename_component(CPM_DOWNLOAD_LOCATION ${CPM_DOWNLOAD_LOCATION} ABSOLUTE) + +file(DOWNLOAD + https://github.com/cpm-cmake/CPM.cmake/releases/download/v${CPM_DOWNLOAD_VERSION}/CPM.cmake + ${CPM_DOWNLOAD_LOCATION} EXPECTED_HASH SHA256=${CPM_HASH_SUM}) + +include(${CPM_DOWNLOAD_LOCATION}) diff --git a/cmake/prepare.cmake b/cmake/prepare.cmake deleted file mode 100644 index aab312d0..00000000 --- a/cmake/prepare.cmake +++ /dev/null @@ -1,25 +0,0 @@ -# Enable Clang sanitizer for debug builds -if("${CMAKE_CXX_COMPILER_ID}" STREQUAL "Clang") - set(CMAKE_CXX_FLAGS_DEBUG - "${CMAKE_CXX_FLAGS_DEBUG} -fno-omit-frame-pointer -fsanitize=address -fsanitize=thread -fsanitize=memory" - CACHE STRING "") - set(CMAKE_EXE_LINKER_FLAGS_DEBUG - "${CMAKE_EXE_LINKER_FLAGS_DEBUGS} -fno-omit-frame-pointer -fsanitize=address -fsanitize=thread -fsanitize=memory" - CACHE STRING "") -endif() - -macro(SUBDIRLIST result curdir) - file( - GLOB children - RELATIVE ${curdir} - ${curdir}/*) - set(dirlist "") - foreach(child ${children}) - if(IS_DIRECTORY ${curdir}/${child}) - if(NOT ${child} STREQUAL "build") - list(APPEND dirlist ${child}) - endif() - endif() - endforeach() - set(${result} ${dirlist}) -endmacro() diff --git a/cmake/vtk.cmake b/cmake/vtk.cmake new file mode 100644 index 00000000..10c4360d --- /dev/null +++ b/cmake/vtk.cmake @@ -0,0 +1,14 @@ +macro(setup_vtk_env TARGET OUTPUT) + if(NOT WIN32) + message( + STATUS "[ViennaLS] Skipping VTK-Environment setup for ${TARGET} (Only required on Windows)") + else() + message(STATUS "[ViennaLS] Setting up VTK for ${TARGET}") + set(CMAKE_RUNTIME_OUTPUT_DIRECTORY $<1:${PROJECT_BINARY_DIR}/${OUTPUT}>) + + add_custom_command( + TARGET ${TARGET} + POST_BUILD + COMMAND ${CMAKE_COMMAND} -E copy_directory ${VTK_LIBS} ${CMAKE_RUNTIME_OUTPUT_DIRECTORY}) + endif() +endmacro() diff --git a/external/upstream/CMakeLists.txt b/external/upstream/CMakeLists.txt deleted file mode 100644 index 602ae08d..00000000 --- a/external/upstream/CMakeLists.txt +++ /dev/null @@ -1,38 +0,0 @@ -# external project base directory for all projects in this hierarchy. Set this variable here so that -# pythonBindings are not affected -set_property(DIRECTORY PROPERTY EP_BASE ${DEPENDENCIES_DIR}) - -# Macro to check if all of the libraries provided by the target list LIBRARY_TARGETS are compiled as -# the provided type (TARGET_TYPE: e.g. "STATIC_LIBRARY", "SHARED_LIBRARY", ...) -macro(CHECK_ALL_TYPE RESULT TARGET_TYPE LIBRARY_TARGETS) - set(_all_match TRUE) - foreach(_lib ${LIBRARY_TARGETS}) - if(TARGET ${_lib}) - get_target_property(_target_type ${_lib} TYPE) - # message(STATUS "${_lib}: ${_target_type} ${TARGET_TYPE}") - if(NOT _target_type STREQUAL ${TARGET_TYPE}) - set(_all_match FALSE) - break() - endif() - else() - message(WARNING "CHECK_ALL_TYPE: Not all targets were found!\- caused by ${_lib}") - set(_all_match FALSE) - break() - endif() - endforeach() - set(${RESULT} ${_all_match}) -endmacro() - -# OpenMP Support is required -find_package(OpenMP REQUIRED) - -# ViennaHRLE is also mandatory -add_subdirectory(viennahrle) - -if(VIENNALS_USE_VTK) - add_subdirectory(vtk) -endif() - -if(VIENNALS_BUILD_PYTHON) - add_subdirectory(pybind11) -endif() diff --git a/external/upstream/pybind11/CMakeLists.txt b/external/upstream/pybind11/CMakeLists.txt deleted file mode 100644 index 50ab47b3..00000000 --- a/external/upstream/pybind11/CMakeLists.txt +++ /dev/null @@ -1,66 +0,0 @@ -# ################################################################################################## -# Check pybind11 Dependency -# ################################################################################################## -# If the path to an installation was provided by the user -if(DEFINED pybind11_DIR AND NOT DEFINED CACHE{pybind11_DIR}) - # Required for windows to convert backslashes to forward slashes - file(TO_CMAKE_PATH "${pybind11_DIR}" pybind11_DIR) - set(pybind11_DIR - "${pybind11_DIR}" - CACHE PATH "Path to pybind11 installation" FORCE) - find_package(pybind11 REQUIRED PATHS ${pybind11_FOUND} NO_DEFAULT_PATH) - message(STATUS "pybind11_DIR: ${pybind11_DIR}") - add_library(pybind11_external INTERFACE) # dummy target -else() - # First try to locate any local build - find_package(pybind11 QUIET PATHS "${DEPENDENCIES_DIR}/Install/pybind11_external" NO_DEFAULT_PATH) - # If that fails look for a system installation - if(NOT pybind11_FOUND) - find_package(pybind11 QUIET) - endif() - if(pybind11_FOUND) - message(STATUS "Found pybind11 at ${pybind11_DIR}.") - add_library(pybind11_external INTERFACE) # dummy target - else() - message( - STATUS - "Couldn't find pybind11. Dependency will be built with the buildDependencies target (e.g. `make buildDependencies`)." - ) - - # Get the number of cores - include(ProcessorCount) - ProcessorCount(NPROC) - - ExternalProject_Add( - pybind11_external - GIT_REPOSITORY https://github.com/pybind/pybind11.git - # Hash of tags/v2.10.4 - GIT_TAG 5b0a6fc2017fcc176545afe3e09c9f9885283242 - # GIT_SHALLOW 1 - CMAKE_ARGS -DCMAKE_BUILD_TYPE=Release - -DCMAKE_INSTALL_PREFIX:PATH= - -DCMAKE_C_COMPILER=${CMAKE_C_COMPILER} - -DCMAKE_CXX_COMPILER=${CMAKE_CXX_COMPILER} - -DCMAKE_CXX_STANDARD=${CMAKE_CXX_STANDARD} - -DCMAKE_CXX_EXTENSIONS=${CMAKE_CXX_EXTENSIONS} - -DCMAKE_CXX_STANDARD_REQUIRED=${CMAKE_CXX_STANDARD_REQUIRED} - -DBUILD_TESTING=OFF - -DBUILD_EXAMPLES=OFF - BUILD_COMMAND ${CMAKE_COMMAND} --build . --parallel ${NPROC} - INSTALL_COMMAND ${CMAKE_COMMAND} --install . - UPDATE_COMMAND "" - USES_TERMINAL_DOWNLOAD 1 - USES_TERMINAL_UPDATE 1 - GIT_PROGRESS 1) - - # Get install and build directory - ExternalProject_Get_Property(pybind11_external INSTALL_DIR) - set(pybind11_DIR "${INSTALL_DIR}") - # add to buildDependencies target - add_dependencies(buildDependencies pybind11_external) - - endif() - set(pybind11_DIR - "${pybind11_DIR}" - CACHE PATH "Path to pybind11 installation" FORCE) -endif() diff --git a/external/upstream/viennahrle/CMakeLists.txt b/external/upstream/viennahrle/CMakeLists.txt deleted file mode 100644 index 011a513d..00000000 --- a/external/upstream/viennahrle/CMakeLists.txt +++ /dev/null @@ -1,58 +0,0 @@ -# ################################################################################################## -# Check ViennaHRLE Dependency -# ################################################################################################## -# If the path to an installation was provided by the user -if(DEFINED ViennaHRLE_DIR AND NOT DEFINED CACHE{ViennaHRLE_DIR}) - # Required for windows to convert backslashes to forward slashes - file(TO_CMAKE_PATH "${ViennaHRLE_DIR}" ViennaHRLE_DIR) - set(ViennaHRLE_DIR - "${ViennaHRLE_DIR}" - CACHE PATH "Path to ViennaHRLE installation" FORCE) - find_package(ViennaHRLE REQUIRED PATHS ${ViennaHRLE_DIR} NO_DEFAULT_PATH) - message(STATUS "ViennaHRLE_DIR: ${ViennaHRLE_DIR}") - add_library(viennahrle_external INTERFACE) # dummy target -else() - # First try to locate any local build - find_package(ViennaHRLE QUIET PATHS "${DEPENDENCIES_DIR}/Install/viennahrle_external" - NO_DEFAULT_PATH) - # If that fails look for a system installation - if(NOT ViennaHRLE_FOUND) - find_package(ViennaHRLE QUIET) - endif() - if(ViennaHRLE_FOUND) - message(STATUS "Found ViennaHRLE at ${ViennaHRLE_DIR}.") - add_library(viennahrle_external INTERFACE) # dummy target - else() - message( - STATUS - "Couldn't find ViennaHRLE. Dependency will be built with the buildDependencies target (e.g. `make buildDependencies`)." - ) - ExternalProject_Add( - viennahrle_external - GIT_REPOSITORY https://github.com/ViennaTools/ViennaHRLE - GIT_SHALLOW 1 # use --depth 1 when cloning - CMAKE_ARGS -DCMAKE_INSTALL_PREFIX:PATH= -DCMAKE_C_COMPILER=${CMAKE_C_COMPILER} - -DCMAKE_CXX_COMPILER=${CMAKE_CXX_COMPILER} -DVIENNAHRLE_BUILD_EXAMPLES=OFF - -DVIENNAHRLE_BUILD_TESTS=OFF - USES_TERMINAL_DOWNLOAD 1 - USES_TERMINAL_UPDATE 1 - GIT_PROGRESS 1) - - # Get install and build directory - ExternalProject_Get_Property(viennahrle_external INSTALL_DIR BINARY_DIR) - - # Set the required variables - set(ViennaHRLE_DIR "${INSTALL_DIR}") - set(ViennaHRLE_INCLUDE_DIRS "${ViennaHRLE_DIR}/include") - - # add to buildDependencies target - add_dependencies(buildDependencies viennahrle_external) - - endif() - set(ViennaHRLE_DIR - "${ViennaHRLE_DIR}" - CACHE PATH "Path to ViennaHRLE installation" FORCE) - set(ViennaHRLE_INCLUDE_DIRS - "${ViennaHRLE_INCLUDE_DIRS}" - CACHE PATH "Path to ViennaHRLE headers" FORCE) -endif() diff --git a/external/upstream/vtk/CMakeLists.txt b/external/upstream/vtk/CMakeLists.txt deleted file mode 100644 index a80c4245..00000000 --- a/external/upstream/vtk/CMakeLists.txt +++ /dev/null @@ -1,160 +0,0 @@ -# ################################################################################################## -# Check VTK Dependency -# ################################################################################################## - -# Get the number of cores -include(ProcessorCount) -ProcessorCount(NPROC) - -# if this is a static build, also build vtk statically -if(VIENNALS_STATIC_BUILD) - set(VTK_EXTERNAL_BUILD_SHARED OFF) - set(VTK_EXTERNAL_INSTALL "static_vtk_external") - message(STATUS "Static build: Using static VTK libs.") -else() - set(VTK_EXTERNAL_BUILD_SHARED ON) - set(VTK_EXTERNAL_INSTALL "vtk_external") -endif() - -set(VTK_COMPONENTS - vtkCommonCore;vtkIOCore;vtkIOXML;vtkIOXMLParser;vtkFiltersCore;vtkFiltersGeneral;vtkFiltersGeometry -) - -# List of VTK 9+ library targets -set(VTK_LIBRARY_TARGETS - VTK::CommonComputationalGeometry;VTK::CommonCore;VTK::CommonDataModel;VTK::CommonExecutionModel;VTK::CommonMath;VTK::CommonMisc;VTK::CommonSystem;VTK::CommonTransforms;VTK::FiltersCore;VTK::FiltersGeneral;VTK::FiltersGeometry;VTK::IOCore;VTK::IOXML;VTK::IOXMLParser;VTK::WrappingTools -) - -# If the path to an installation was provided by the user -if(DEFINED VTK_DIR AND NOT DEFINED CACHE{VTK_DIR}) - # Required for windows to convert backslashes to forward slashes - file(TO_CMAKE_PATH "${VTK_DIR}" VTK_DIR) - set(VTK_DIR - "${VTK_DIR}" - CACHE PATH "Path to VTK installation" FORCE) - find_package(VTK CONFIG REQUIRED PATHS ${VTK_DIR} COMPONENTS "${VTK_COMPONENTS}" NO_DEFAULT_PATH) - if(VIENNALS_STATIC_BUILD) - check_all_type(ALL_STATIC "STATIC_LIBRARY" "${VTK_LIBRARY_TARGETS}") - if(NOT ${ALL_STATIC}) - message( - FATAL_ERROR - "Not all of the targets which were exported by the provided VTK installation were built to be statically linked." - ) - endif() - endif() - message(STATUS "Found VTK at ${VTK_DIR}.") - add_library(vtk_external INTERFACE) # dummy target -else() # Automatically detect installation - # First try to locate any local build - find_package(VTK QUIET PATHS "${DEPENDENCIES_DIR}/Install/${VTK_EXTERNAL_INSTALL}" - COMPONENTS "${VTK_COMPONENTS}" NO_DEFAULT_PATH) - - # If that fails look for a system installation - if(NOT VTK_FOUND) - find_package(VTK QUIET COMPONENTS "${VTK_COMPONENTS}") - endif() - - if(VIENNALS_STATIC_BUILD) - # Check if the library can be statically linked - check_all_type(ALL_STATIC "STATIC_LIBRARY" "${VTK_LIBRARY_TARGETS}") - if(NOT ${ALL_STATIC}) - set(VTK_FOUND FALSE) - message( - STATUS - "The detected installation of VTK was not built using BUILD_SHARED_LIBS=OFF. Static VTK libraries will be built from source." - ) - endif() - endif() - - if(VTK_FOUND) - message(STATUS "Found VTK at ${VTK_DIR}.") - add_library(vtk_external INTERFACE) # dummy target - else() - message( - STATUS - "Couldn't find VTK. Dependency will be built with the buildDependencies target (e.g. `make buildDependencies`)." - ) - - ExternalProject_Add( - vtk_external - GIT_REPOSITORY https://gitlab.kitware.com/vtk/vtk.git - # Hash of tags/v9.2.6 - GIT_TAG f2c452c9c42005672a3f3ed9218dd9a7fecca79a - GIT_SHALLOW true - GIT_SUBMODULES "" - TMP_DIR "${DEPENDENCIES_DIR}/tmp/${VTK_EXTERNAL_INSTALL}" - STAMP_DIR "${DEPENDENCIES_DIR}/Stamp/${VTK_EXTERNAL_INSTALL}" - BINARY_DIR "${DEPENDENCIES_DIR}/Build/${VTK_EXTERNAL_INSTALL}" - INSTALL_DIR "${DEPENDENCIES_DIR}/Install/${VTK_EXTERNAL_INSTALL}" - CMAKE_ARGS -DCMAKE_BUILD_TYPE=Release - -DCMAKE_INSTALL_PREFIX:PATH= - -DCMAKE_SKIP_RPATH=OFF - -DCMAKE_SKIP_INSTALL_RPATH=ON - -DCMAKE_C_COMPILER=${CMAKE_C_COMPILER} - -DCMAKE_CXX_COMPILER=${CMAKE_CXX_COMPILER} - -DCMAKE_CXX_STANDARD=${CMAKE_CXX_STANDARD} - -DCMAKE_CXX_EXTENSIONS=${CMAKE_CXX_EXTENSIONS} - -DCMAKE_CXX_STANDARD_REQUIRED=${CMAKE_CXX_STANDARD_REQUIRED} - -DBUILD_SHARED_LIBS:BOOL=${VTK_EXTERNAL_BUILD_SHARED} - -DVTK_BUILD_TESTING=OFF - -DVTK_BUILD_EXAMPLES=OFF - -DVTK_BUILD_DOCUMENTATION=OFF - -DVTK_VERSIONED_INSTALL=OFF - -DVTK_WRAP_PYTHON:BOOL=NO - -DVTK_SMP_IMPLEMENTATION_TYPE:STRING="OpenMP" - -DVTK_GROUP_ENABLE_Rendering:BOOL=NO - -DVTK_GROUP_ENABLE_Imaging:BOOL=NO - -DVTK_GROUP_ENABLE_MPI:BOOL=NO - -DVTK_GROUP_ENABLE_Qt:BOOL=NO - -DVTK_GROUP_ENABLE_StandAlone:BOOL=NO - -DVTK_GROUP_ENABLE_Views:BOOL=NO - -DVTK_GROUP_ENABLE_Web:BOOL=NO - -DVTK_LEGACY_REMOVE:BOOL=ON - -DVTK_MODULE_ENABLE_VTK_CommonExecutionModel:BOOL=YES - -DVTK_MODULE_ENABLE_VTK_CommonMisc:BOOL=YES - -DVTK_MODULE_ENABLE_VTK_CommonSystem:BOOL=YES - -DVTK_MODULE_ENABLE_VTK_CommonMath:BOOL=YES - -DVTK_MODULE_ENABLE_VTK_CommonCore:BOOL=YES - -DVTK_MODULE_ENABLE_VTK_CommonTransforms:BOOL=YES - -DVTK_MODULE_ENABLE_VTK_CommonComputationalGeometry:BOOL=YES - -DVTK_MODULE_ENABLE_VTK_IOCore:BOOL=YES - -DVTK_MODULE_ENABLE_VTK_IOXMLParser:BOOL=YES - -DVTK_MODULE_ENABLE_VTK_IOXML:BOOL=YES - -DVTK_MODULE_ENABLE_VTK_FiltersCore:BOOL=YES - -DVTK_MODULE_ENABLE_VTK_FiltersGeneral:BOOL=YES - -DVTK_MODULE_ENABLE_VTK_FiltersGeometry:BOOL=YES - -Wno-dev - BUILD_COMMAND ${CMAKE_COMMAND} --build . --parallel ${NPROC} --config Release - INSTALL_COMMAND ${CMAKE_COMMAND} --install . - UPDATE_COMMAND "" - USES_TERMINAL_DOWNLOAD 1 - USES_TERMINAL_UPDATE 1 - GIT_PROGRESS 1) - - # Get install directory - ExternalProject_Get_Property(vtk_external INSTALL_DIR) - - # Set the required variables - set(VTK_DIR "${INSTALL_DIR}") - - set(VTK_VERSION 9.2) - set(VTK_INCLUDE_DIRS "${VTK_DIR}/include/vtk-${VTK_VERSION}") - - # add to buildDependencies target - add_dependencies(buildDependencies vtk_external) - endif() - - # Write VTK_DIR, VTK_VERSION and VTK_INCLUDE_DIRS to the cache so that we can use it in the - # toplevel CMakeLists file - set(VTK_DIR - ${VTK_DIR} - CACHE PATH "Path to VTK installation" FORCE) - - set(VTK_VERSION - ${VTK_VERSION} - CACHE STRING "The VTK version" FORCE) - - set(VTK_INCLUDE_DIRS - ${VTK_INCLUDE_DIRS} - CACHE STRING "Path to VTK headers" FORCE) -endif() diff --git a/format-project.sh b/format-project.sh index c0546001..47da0b03 100755 --- a/format-project.sh +++ b/format-project.sh @@ -3,10 +3,11 @@ # note: if you aliased clang-format, invoke this script using # bash -i format-project.sh -find . -type d \( -path ./dependencies -o -path ./build* \) -prune -false -o -name "*.hpp" -o -name "*.cpp" | while read -r i; do echo $i; clang-format -i "$i"; done +find . -type d \( -path ./dependencies -o -path "./build*" \) -prune -false -o -name "*.hpp" -o -name "*.cpp" | while read -r i; do echo "$i"; clang-format -i "$i"; done # cmake-format can be installed with `pip install --upgrade cmake-format` + if command -v cmake-format &> /dev/null then - find . -type d \( -path ./dependencies -o -path ./build* \) -prune -false -o -name *.cmake -o -name CMakeLists.txt -o -name *.cmake.in | while read -r i; do echo $i; cmake-format --line-width 100 -i "$i"; done + find . -type d \( -path ./dependencies -o -path "./build*" \) -prune -false -o -name "*.cmake" -o -name CMakeLists.txt -o -name "*.cmake.in" | while read -r i; do echo "$i"; cmake-format -i "$i"; done fi diff --git a/include/lsPointData.hpp b/include/lsPointData.hpp index c07aaa63..7454e2aa 100644 --- a/include/lsPointData.hpp +++ b/include/lsPointData.hpp @@ -4,6 +4,7 @@ #include #include +#include #include #include