From 35275bf8ef4aded68d6bda4a87e2b1570318edc5 Mon Sep 17 00:00:00 2001 From: Dylan Baker Date: Wed, 16 Mar 2016 15:02:12 -0700 Subject: [PATCH] cmake: Add FindASSIMP.cmake This find module addresses the problem raised by debian (non-sid) and Ubuntu (and possibly other distributions) that don't install the cmake config files. This FindModule will try to use a config file, but will fall back to using find_library if it can't. It will unset any variables provided by the config that the find path wont also expose. --- CMakeLists.txt | 2 +- cmake/FindASSIMP.cmake | 56 ++++++++++++++++++++++++++++++++++++++++++ 2 files changed, 57 insertions(+), 1 deletion(-) create mode 100644 cmake/FindASSIMP.cmake diff --git a/CMakeLists.txt b/CMakeLists.txt index 08f3a773..87adc797 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -18,7 +18,7 @@ IF(WIN32) set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -DVK_USE_PLATFORM_WIN32_KHR") ELSE(WIN32) find_library(VULKAN_LIB NAMES libvulkan.so PATHS ${CMAKE_SOURCE_DIR}/libs/vulkan) - find_package(ASSIMP REQUIRED CONFIG) + find_package(ASSIMP REQUIRED) find_package(XCB REQUIRED) set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -DVK_USE_PLATFORM_XCB_KHR") # Todo : android? diff --git a/cmake/FindASSIMP.cmake b/cmake/FindASSIMP.cmake new file mode 100644 index 00000000..8b9b580d --- /dev/null +++ b/cmake/FindASSIMP.cmake @@ -0,0 +1,56 @@ +# Find assimp +# Copyright © 2016 Dylan Baker + +# Permission is hereby granted, free of charge, to any person obtaining +# a copy of this software and associated documentation files (the "Software"), +# to deal in the Software without restriction, including without limitation +# the rights to use, copy, modify, merge, publish, distribute, sublicense, +# and/or sell copies of the Software, and to permit persons to whom the +# Software is furnished to do so, subject to the following conditions: + +# The above copyright notice and this permission notice shall be included +# in all copies or substantial portions of the Software. + +# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +# EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES +# OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. +# IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, +# DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, +# TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE +# OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. + +# Provides a subset of what the one would get by calling CONFIG REQUIRED +# directly, it will unset any unsupported versions +# Currently it provides the following: +# ASSIMP_FOUND -- TRUE if assimp was found +# ASSIMP_LIBRARIES -- Libraries to link against + +find_package(ASSIMP CONFIG) +if (ASSIMP_LIBRARIES) + # Unset variables that would be difficult to get via the find module + unset(ASSIMP_ROOT_DIR) + unset(ASSIMP_CXX_FLAGS) + unset(ASSIMP_LINK_FLAGS) + unset(ASSIMP_Boost_VERSION) + + # TODO: It would be nice to find these, but they're not being used at the + # moment. They also need to be added to REQUIRED_VARS if added + unset(ASSIMP_INCLUDE_DIRS) + unset(ASSIMP_LIBRARY_DIRS) + + # Like the found path + set(ASSIMP_FOUND TRUE) + message("-- Found ASSIMP") +else () + find_library(ASSIMP_LIBRARIES + NAMES assimp + ) + + include(FindPackageHandleStandardArgs) + find_package_handle_standard_args( + ASSIMP + REQUIRED_VARS ASSIMP_LIBRARIES + ) +endif (ASSIMP_LIBRARIES) + +set(ASSIMP_FOUND True)