mirror of
				https://github.com/SoftFever/OrcaSlicer.git
				synced 2025-11-02 20:51:23 -07:00 
			
		
		
		
	* Add Linux openvdb integration * Add Mac openvdb integration and enable in ALL * Create openvdb sandbox to test integration. * Additional fixes in the patches * Remove slabasebed sandbox as it has no relevance now * Provide FindOpenVDB module and fix build issues
		
			
				
	
	
		
			166 lines
		
	
	
	
		
			5.4 KiB
		
	
	
	
		
			CMake
		
	
	
	
	
	
			
		
		
	
	
			166 lines
		
	
	
	
		
			5.4 KiB
		
	
	
	
		
			CMake
		
	
	
	
	
	
# Copyright (c) DreamWorks Animation LLC
 | 
						|
#
 | 
						|
# All rights reserved. This software is distributed under the
 | 
						|
# Mozilla Public License 2.0 ( http://www.mozilla.org/MPL/2.0/ )
 | 
						|
#
 | 
						|
# Redistributions of source code must retain the above copyright
 | 
						|
# and license notice and the following restrictions and disclaimer.
 | 
						|
#
 | 
						|
# *     Neither the name of DreamWorks Animation 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
 | 
						|
# OWNER OR CONTRIBUTORS BE LIABLE FOR ANY 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.
 | 
						|
# IN NO EVENT SHALL THE COPYRIGHT HOLDERS' AND CONTRIBUTORS' AGGREGATE
 | 
						|
# LIABILITY FOR ALL CLAIMS REGARDLESS OF THEIR BASIS EXCEED US$250.00.
 | 
						|
#
 | 
						|
#[=======================================================================[.rst:
 | 
						|
 | 
						|
OpenVDBUtils.cmake
 | 
						|
------------------
 | 
						|
 | 
						|
A utility CMake file which provides helper functions for configuring an
 | 
						|
OpenVDB installation.
 | 
						|
 | 
						|
Use this module by invoking include with the form::
 | 
						|
 | 
						|
  include ( OpenVDBUtils )
 | 
						|
 | 
						|
 | 
						|
The following functions are provided:
 | 
						|
 | 
						|
``OPENVDB_VERSION_FROM_HEADER``
 | 
						|
 | 
						|
  OPENVDB_VERSION_FROM_HEADER ( <header_path>
 | 
						|
    VERSION [<version>]
 | 
						|
    MAJOR   [<version>]
 | 
						|
    MINOR   [<version>]
 | 
						|
    PATCH   [<version>] )
 | 
						|
 | 
						|
  Parse the provided version file to retrieve the current OpenVDB
 | 
						|
  version information. The file is expected to be a version.h file
 | 
						|
  as found in the following path of an OpenVDB repository:
 | 
						|
    openvdb/version.h
 | 
						|
 | 
						|
  If the file does not exist, variables are unmodified.
 | 
						|
 | 
						|
``OPENVDB_ABI_VERSION_FROM_PRINT``
 | 
						|
 | 
						|
  OPENVDB_ABI_VERSION_FROM_PRINT ( <vdb_print>
 | 
						|
    [QUIET]
 | 
						|
    ABI [<version>] )
 | 
						|
 | 
						|
  Retrieve the ABI version that an installation of OpenVDB was compiled
 | 
						|
  for using the provided vdb_print binary. Parses the result of:
 | 
						|
    vdb_print --version
 | 
						|
 | 
						|
  If the binary does not exist or fails to launch, variables are
 | 
						|
  unmodified.
 | 
						|
 | 
						|
#]=======================================================================]
 | 
						|
 | 
						|
 | 
						|
function(OPENVDB_VERSION_FROM_HEADER OPENVDB_VERSION_FILE)
 | 
						|
  cmake_parse_arguments(_VDB "" "VERSION;MAJOR;MINOR;PATCH" "" ${ARGN})
 | 
						|
 | 
						|
  if(NOT EXISTS ${OPENVDB_VERSION_FILE})
 | 
						|
    return()
 | 
						|
  endif()
 | 
						|
 | 
						|
  file(STRINGS "${OPENVDB_VERSION_FILE}" openvdb_version_str
 | 
						|
    REGEX "^#define[\t ]+OPENVDB_LIBRARY_MAJOR_VERSION_NUMBER[\t ]+.*"
 | 
						|
  )
 | 
						|
  string(REGEX REPLACE "^.*OPENVDB_LIBRARY_MAJOR_VERSION_NUMBER[\t ]+([0-9]*).*$" "\\1"
 | 
						|
    _OpenVDB_MAJOR_VERSION "${openvdb_version_str}"
 | 
						|
  )
 | 
						|
 | 
						|
  file(STRINGS "${OPENVDB_VERSION_FILE}" openvdb_version_str
 | 
						|
    REGEX "^#define[\t ]+OPENVDB_LIBRARY_MINOR_VERSION_NUMBER[\t ]+.*"
 | 
						|
  )
 | 
						|
  string(REGEX REPLACE "^.*OPENVDB_LIBRARY_MINOR_VERSION_NUMBER[\t ]+([0-9]*).*$" "\\1"
 | 
						|
    _OpenVDB_MINOR_VERSION "${openvdb_version_str}"
 | 
						|
  )
 | 
						|
 | 
						|
  file(STRINGS "${OPENVDB_VERSION_FILE}" openvdb_version_str
 | 
						|
    REGEX "^#define[\t ]+OPENVDB_LIBRARY_PATCH_VERSION_NUMBER[\t ]+.*"
 | 
						|
  )
 | 
						|
  string(REGEX REPLACE "^.*OPENVDB_LIBRARY_PATCH_VERSION_NUMBER[\t ]+([0-9]*).*$" "\\1"
 | 
						|
    _OpenVDB_PATCH_VERSION "${openvdb_version_str}"
 | 
						|
  )
 | 
						|
  unset(openvdb_version_str)
 | 
						|
 | 
						|
  if(_VDB_VERSION)
 | 
						|
    set(${_VDB_VERSION}
 | 
						|
      ${_OpenVDB_MAJOR_VERSION}.${_OpenVDB_MINOR_VERSION}.${_OpenVDB_PATCH_VERSION}
 | 
						|
      PARENT_SCOPE
 | 
						|
    )
 | 
						|
  endif()
 | 
						|
  if(_VDB_MAJOR)
 | 
						|
    set(${_VDB_MAJOR} ${_OpenVDB_MAJOR_VERSION} PARENT_SCOPE)
 | 
						|
  endif()
 | 
						|
  if(_VDB_MINOR)
 | 
						|
    set(${_VDB_MINOR} ${_OpenVDB_MINOR_VERSION} PARENT_SCOPE)
 | 
						|
  endif()
 | 
						|
  if(_VDB_PATCH)
 | 
						|
    set(${_VDB_PATCH} ${_OpenVDB_PATCH_VERSION} PARENT_SCOPE)
 | 
						|
  endif()
 | 
						|
endfunction()
 | 
						|
 | 
						|
 | 
						|
########################################################################
 | 
						|
########################################################################
 | 
						|
 | 
						|
 | 
						|
function(OPENVDB_ABI_VERSION_FROM_PRINT OPENVDB_PRINT)
 | 
						|
  cmake_parse_arguments(_VDB "QUIET" "ABI" "" ${ARGN})
 | 
						|
 | 
						|
  if(NOT EXISTS ${OPENVDB_PRINT})
 | 
						|
    message(WARNING "vdb_print not found! ${OPENVDB_PRINT}")
 | 
						|
    return()
 | 
						|
  endif()
 | 
						|
 | 
						|
  set(_VDB_PRINT_VERSION_STRING "")
 | 
						|
  set(_VDB_PRINT_RETURN_STATUS "")
 | 
						|
 | 
						|
  if(${_VDB_QUIET})
 | 
						|
    execute_process(COMMAND ${OPENVDB_PRINT} "--version"
 | 
						|
      RESULT_VARIABLE _VDB_PRINT_RETURN_STATUS
 | 
						|
      OUTPUT_VARIABLE _VDB_PRINT_VERSION_STRING
 | 
						|
      ERROR_QUIET
 | 
						|
      OUTPUT_STRIP_TRAILING_WHITESPACE
 | 
						|
    )
 | 
						|
  else()
 | 
						|
    execute_process(COMMAND ${OPENVDB_PRINT} "--version"
 | 
						|
      RESULT_VARIABLE _VDB_PRINT_RETURN_STATUS
 | 
						|
      OUTPUT_VARIABLE _VDB_PRINT_VERSION_STRING
 | 
						|
      OUTPUT_STRIP_TRAILING_WHITESPACE
 | 
						|
    )
 | 
						|
  endif()
 | 
						|
 | 
						|
  if(${_VDB_PRINT_RETURN_STATUS})
 | 
						|
    message(WARNING "vdb_print returned with status ${_VDB_PRINT_RETURN_STATUS}")
 | 
						|
    return()
 | 
						|
  endif()
 | 
						|
 | 
						|
  set(_OpenVDB_ABI)
 | 
						|
  string(REGEX REPLACE ".*abi([0-9]*).*" "\\1" _OpenVDB_ABI ${_VDB_PRINT_VERSION_STRING})
 | 
						|
  if(${_OpenVDB_ABI} STREQUAL ${_VDB_PRINT_VERSION_STRING})
 | 
						|
    set(_OpenVDB_ABI "")
 | 
						|
  endif()
 | 
						|
  unset(_VDB_PRINT_RETURN_STATUS)
 | 
						|
  unset(_VDB_PRINT_VERSION_STRING)
 | 
						|
 | 
						|
  if(_VDB_ABI)
 | 
						|
    set(${_VDB_ABI} ${_OpenVDB_ABI} PARENT_SCOPE)
 | 
						|
  endif()
 | 
						|
endfunction()
 |