diff --git a/CMakeLists.txt b/CMakeLists.txt index cfb5752eda6884bbe0f958160227e7cbecb82c0e..96b410c83458e2544080524f6492efd20fc39881 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -894,6 +894,22 @@ endif() +############################################################################################################################ +## +## OpenMesh +## +############################################################################################################################ +if( (NOT DEFINED WALBERLA_BUILD_WITH_OPENMESH) OR WALBERLA_BUILD_WITH_OPENMESH ) + find_package( OpenMesh ) + if( OPENMESH_FOUND ) + set( WALBERLA_BUILD_WITH_OPENMESH ON CACHE BOOL "Build with OpenMesh support" ) + include_directories( SYSTEM ${OPENMESH_INCLUDE_DIRS} ) + list( APPEND SERVICE_LIBS ${OPENMESH_LIBRARIES} ) + else() + set( WALBERLA_BUILD_WITH_OPENMESH OFF CACHE BOOL "Build with OpenMesh support" FORCE ) + endif() +endif() + ############################################################################################################################ ## ## DebugOptimized Build Configuration for fast execution of tests with enabled asserts diff --git a/cmake/FindOpenMesh.cmake b/cmake/FindOpenMesh.cmake new file mode 100644 index 0000000000000000000000000000000000000000..307899c0906a4b7d11d6bfe38e6bef4fe7eb74a8 --- /dev/null +++ b/cmake/FindOpenMesh.cmake @@ -0,0 +1,147 @@ +# +# Try to find OPENMESH +# Once done this will define +# +# OPENMESH_FOUND - system has OPENMESH +# OPENMESH_INCLUDE_DIRS - the OPENMESH include directories +# OPENMESH_LIBRARIES - Link these to use OPENMESH +# OPENMESH_LIBRARY_DIR - directory where the libraries are included +# +# Copyright 2015 Computer Graphics Group, RWTH Aachen University +# Authors: Jan Möbius <moebius@cs.rwth-aachen.de> +# Hans-Christian Ebke <ebke@cs.rwth-aachen.de> +# +# +#=========================================================================== +# +# OpenMesh +# Copyright (c) 2001-2015, RWTH-Aachen University +# Department of Computer Graphics and Multimedia +# All rights reserved. +# www.openmesh.org +# +#--------------------------------------------------------------------------- +# This file is part of OpenMesh. +#--------------------------------------------------------------------------- +# +# Redistribution and use in source and binary forms, with or without +# modification, are permitted provided that the following conditions +# are met: +# +# 1. Redistributions of source code must retain the above copyright notice, +# this list of conditions and the following disclaimer. +# +# 2. Redistributions in binary form must reproduce the above copyright +# notice, this list of conditions and the following disclaimer in the +# documentation and/or other materials provided with the distribution. +# +# 3. Neither the name of the copyright holder nor the names of its +# contributors may be used to endorse or promote products derived from +# this software without specific prior written permission. +# +# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +# "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED +# TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A +# PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER +# OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, +# EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, +# PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR +# PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF +# LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING +# NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS +# SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +# +#=========================================================================== + +cmake_minimum_required(VERSION 2.8.9) + +#if already found via finder or simulated finder in openmesh CMakeLists.txt, skip the search +IF (NOT OPENMESH_FOUND) + SET (SEARCH_PATHS + /usr/local/ + /usr/ + "${CMAKE_SOURCE_DIR}/OpenMesh/src/OpenMesh" + "${CMAKE_SOURCE_DIR}/libs_required/OpenMesh/src/OpenMesh" + "${CMAKE_SOURCE_DIR}/../OpenMesh/src/OpenMesh" + "C:/Program Files/OpenMesh 6.3" + "C:/Program Files/OpenMesh 6.2" + "C:/Program Files/OpenMesh 6.1" + "C:/Program Files/OpenMesh 6.0" + "C:/Program Files/OpenMesh 5.2" + "C:/Program Files/OpenMesh 5.1" + "C:/Program Files/OpenMesh 5.0" + "C:/Program Files/OpenMesh 4.2" + "C:/Program Files/OpenMesh 4.1" + "C:/Program Files/OpenMesh 4.0" + "C:/Program Files/OpenMesh 3.4" + "C:/Program Files/OpenMesh 3.3" + "C:/Program Files/OpenMesh 3.2" + "C:/Program Files/OpenMesh 3.1" + "C:/Program Files/OpenMesh 3.0" + "C:/Program Files/OpenMesh 2.4.1" + "C:/Program Files/OpenMesh 2.4" + "C:/Program Files/OpenMesh 2.0/include" + "C:/libs/OpenMesh 6.3" + "C:/libs/OpenMesh 6.2" + "C:/libs/OpenMesh 6.1" + "C:/libs/OpenMesh 6.0" + "C:/libs/OpenMesh 5.2" + "C:/libs/OpenMesh 5.1" + "C:/libs/OpenMesh 5.0" + "C:/libs/OpenMesh 4.2" + "C:/libs/OpenMesh 4.1" + "C:/libs/OpenMesh 4.0" + "C:/libs/OpenMesh 3.4" + "C:/libs/OpenMesh 3.3" + "C:/libs/OpenMesh 3.2" + "C:/libs/OpenMesh 3.1" + "C:/libs/OpenMesh 3.0" + "C:/libs/OpenMesh 2.4.1" + "C:/libs/OpenMesh 2.4" + "${OPENMESH_LIBRARY_DIR}" + ) + + FIND_PATH (OPENMESH_INCLUDE_DIR OpenMesh/Core/Mesh/PolyMeshT.hh + PATHS ${SEARCH_PATHS} + PATH_SUFFIXES include) + + FIND_LIBRARY(OPENMESH_CORE_LIBRARY_RELEASE NAMES OpenMeshCore + PATHS ${SEARCH_PATHS} + PATH_SUFFIXES lib lib64) + + FIND_LIBRARY(OPENMESH_CORE_LIBRARY_DEBUG NAMES OpenMeshCored + PATHS ${SEARCH_PATHS} + PATH_SUFFIXES lib lib64) + + FIND_LIBRARY(OPENMESH_TOOLS_LIBRARY_RELEASE NAMES OpenMeshTools + PATHS ${SEARCH_PATHS} + PATH_SUFFIXES lib lib64) + + FIND_LIBRARY(OPENMESH_TOOLS_LIBRARY_DEBUG NAMES OpenMeshToolsd + PATHS ${SEARCH_PATHS} + PATH_SUFFIXES lib lib64) + +#select configuration depending on platform (optimized... on windows) + include(SelectLibraryConfigurations) + select_library_configurations( OPENMESH_TOOLS ) + select_library_configurations( OPENMESH_CORE ) + + set(OPENMESH_LIBRARIES ${OPENMESH_CORE_LIBRARY} ${OPENMESH_TOOLS_LIBRARY} ) + set(OPENMESH_INCLUDE_DIRS ${OPENMESH_INCLUDE_DIR} ) + +#checks, if OPENMESH was found and sets OPENMESH_FOUND if so + include(FindPackageHandleStandardArgs) + find_package_handle_standard_args(OpenMesh DEFAULT_MSG + OPENMESH_CORE_LIBRARY OPENMESH_TOOLS_LIBRARY OPENMESH_INCLUDE_DIR) + +#sets the library dir + if ( OPENMESH_CORE_LIBRARY_RELEASE ) + get_filename_component(_OPENMESH_LIBRARY_DIR ${OPENMESH_CORE_LIBRARY_RELEASE} PATH) + else( OPENMESH_CORE_LIBRARY_RELEASE ) + get_filename_component(_OPENMESH_LIBRARY_DIR ${OPENMESH_CORE_LIBRARY_DEBUG} PATH) + endif( OPENMESH_CORE_LIBRARY_RELEASE ) + set (OPENMESH_LIBRARY_DIR "${_OPENMESH_LIBRARY_DIR}" CACHE PATH "The directory where the OpenMesh libraries can be found.") + + + mark_as_advanced(OPENMESH_INCLUDE_DIR OPENMESH_CORE_LIBRARY_RELEASE OPENMESH_CORE_LIBRARY_DEBUG OPENMESH_TOOLS_LIBRARY_RELEASE OPENMESH_TOOLS_LIBRARY_DEBUG OPENMESH_LIBRARY_DIR) +endif() diff --git a/src/waLBerlaDefinitions.in.h b/src/waLBerlaDefinitions.in.h index 42789981647a210a6d0d76e3d2d0c8d2da6c11e4..ed587958ec197a7dd1115b849694751296058909 100644 --- a/src/waLBerlaDefinitions.in.h +++ b/src/waLBerlaDefinitions.in.h @@ -27,6 +27,8 @@ #cmakedefine WALBERLA_BUILD_WITH_FFT +#cmakedefine WALBERLA_BUILD_WITH_OPENMESH + #cmakedefine WALBERLA_BUFFER_DEBUG #cmakedefine WALBERLA_THREAD_SAFE_LOGGING