diff --git a/CMakeLists.txt b/CMakeLists.txt index fe86aaf9b26..d95cbb6e536 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -454,11 +454,15 @@ if(UNIX AND NOT APPLE) endif() if (WITH_INPUT_NDOF) - if(CMAKE_SYSTEM_NAME MATCHES "Linux") - set(NDOF /usr) - set(NDOF_INC ${NDOF}/include) - set(NDOF_LIBRARY spnav) - set(NDOF_LIBPATH ${NDOF}/lib) + find_package(Spacenav) + if(NOT SPACENAV_FOUND) + set(WITH_INPUT_NDOF OFF) + endif() + + # use generic names within blenders buildsystem. + if(SPACENAV_FOUND) + set(NDOF_INCLUDE_DIRS ${SPACENAV_INCLUDE_DIRS}) + set(NDOF_LIBRARIES ${SPACENAV_LIBRARIES}) endif() endif() @@ -1334,6 +1338,7 @@ if(FIRST_RUN) info_cfg_option(WITH_OPENCOLLADA) info_cfg_option(WITH_FFTW3) info_cfg_option(WITH_INTERNATIONAL) + info_cfg_option(WITH_INPUT_NDOF) info_cfg_text("Compiler Options:") info_cfg_option(WITH_BUILDINFO) diff --git a/build_files/cmake/Modules/FindSpacenav.cmake b/build_files/cmake/Modules/FindSpacenav.cmake new file mode 100644 index 00000000000..206f3611ed6 --- /dev/null +++ b/build_files/cmake/Modules/FindSpacenav.cmake @@ -0,0 +1,70 @@ +# - Find Spacenav library +# Find the native Spacenav includes and library +# This module defines +# SPACENAV_INCLUDE_DIRS, where to find spnav.h, Set when +# SPACENAV_INCLUDE_DIR is found. +# SPACENAV_LIBRARIES, libraries to link against to use Spacenav. +# SPACENAV_ROOT_DIR, The base directory to search for Spacenav. +# This can also be an environment variable. +# SPACENAV_FOUND, If false, do not try to use Spacenav. +# +# also defined, but not for general use are +# SPACENAV_LIBRARY, where to find the Spacenav library. + +#============================================================================= +# Copyright 2011 Blender Foundation. +# +# Distributed under the OSI-approved BSD License (the "License"); +# see accompanying file Copyright.txt for details. +# +# This software is distributed WITHOUT ANY WARRANTY; without even the +# implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +# See the License for more information. +#============================================================================= + +# If SPACENAV_ROOT_DIR was defined in the environment, use it. +IF(NOT SPACENAV_ROOT_DIR AND NOT $ENV{SPACENAV_ROOT_DIR} STREQUAL "") + SET(SPACENAV_ROOT_DIR $ENV{SPACENAV_ROOT_DIR}) +ENDIF() + +SET(_spacenav_SEARCH_DIRS + ${SPACENAV_ROOT_DIR} + /usr/local + /sw # Fink + /opt/local # DarwinPorts + /opt/csw # Blastwave +) + +FIND_PATH(SPACENAV_INCLUDE_DIR + NAMES + spnav.h + HINTS + ${_spacenav_SEARCH_DIRS} + PATH_SUFFIXES + include +) + +FIND_LIBRARY(SPACENAV_LIBRARY + NAMES + spnav + HINTS + ${_spacenav_SEARCH_DIRS} + PATH_SUFFIXES + lib64 lib + ) + +# handle the QUIETLY and REQUIRED arguments and set SPACENAV_FOUND to TRUE if +# all listed variables are TRUE +INCLUDE(FindPackageHandleStandardArgs) +FIND_PACKAGE_HANDLE_STANDARD_ARGS(Spacenav DEFAULT_MSG + SPACENAV_LIBRARY SPACENAV_INCLUDE_DIR) + +IF(SPACENAV_FOUND) + SET(SPACENAV_LIBRARIES ${SPACENAV_LIBRARY}) + SET(SPACENAV_INCLUDE_DIRS ${SPACENAV_INCLUDE_DIR}) +ENDIF(SPACENAV_FOUND) + +MARK_AS_ADVANCED( + SPACENAV_INCLUDE_DIR + SPACENAV_LIBRARY +) diff --git a/build_files/cmake/macros.cmake b/build_files/cmake/macros.cmake index c53f52b7bae..ed200abd419 100644 --- a/build_files/cmake/macros.cmake +++ b/build_files/cmake/macros.cmake @@ -193,9 +193,6 @@ macro(SETUP_LIBDIRS) if(WITH_MEM_JEMALLOC) link_directories(${JEMALLOC_LIBPATH}) endif() - if(WITH_INPUT_NDOF) - link_directories(${NDOF_LIBPATH}) - endif() if(WIN32 AND NOT UNIX) link_directories(${PTHREADS_LIBPATH}) @@ -318,7 +315,7 @@ macro(setup_liblinks target_link_libraries(${target} ${JEMALLOC_LIBRARIES}) endif() if(WITH_INPUT_NDOF) - target_link_libraries(${target} ${NDOF_LIBRARY}) + target_link_libraries(${target} ${NDOF_LIBRARIES}) endif() if(WIN32 AND NOT UNIX) diff --git a/intern/ghost/CMakeLists.txt b/intern/ghost/CMakeLists.txt index 86829c892ed..2180ddbe567 100644 --- a/intern/ghost/CMakeLists.txt +++ b/intern/ghost/CMakeLists.txt @@ -99,6 +99,9 @@ endif() if(WITH_INPUT_NDOF) add_definitions(-DWITH_INPUT_NDOF) + list(APPEND INC_SYS + ${NDOF_INCLUDE_DIRS} + ) endif() if(WITH_HEADLESS OR WITH_GHOST_SDL)