| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186 |
- #
- # Copyright (c) 2008-2014 the Urho3D project.
- #
- # 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.
- #
- # Find Urho3D library and include directories in the project root tree or installed location
- # For project root tree detection to work, Urho3D library must be already been built
- #
- # URHO3D_FOUND
- # URHO3D_INCLUDE_DIRS
- # URHO3D_LIBRARIES
- # URHO3D_LIBRARIES_REL
- # URHO3D_LIBRARIES_DBG
- #
- if (URHO3D_FOUND)
- return ()
- endif ()
- # If the URHO3D_LIB_TYPE build option changes then invalidate the found library cache
- if (NOT URHO3D_LIB_TYPE STREQUAL URHO3D_FOUND_LIB_TYPE)
- unset (URHO3D_LIBRARIES CACHE)
- set (URHO3D_FOUND_LIB_TYPE ${URHO3D_LIB_TYPE} CACHE INTERNAL "Lib type when Urho3D library was last found")
- # Urho3D prefers static library type by default while CMake prefers shared one, so we need to change CMake preference to agree with Urho3D
- if (NOT URHO3D_LIB_TYPE STREQUAL SHARED)
- list (REVERSE CMAKE_FIND_LIBRARY_SUFFIXES)
- endif ()
- endif ()
- set (URHO3D_LIB_NAMES Urho3D)
- if (WIN32)
- set (URHO3D_LIB_NAMES_DBG Urho3D_d)
- endif ()
- if (CMAKE_PROJECT_NAME STREQUAL Urho3D AND PROJECT_ROOT_DIR)
- set (URHO3D_HOME ${PROJECT_ROOT_DIR} CACHE PATH "Path to Urho3D project root tree" FORCE)
- set (IS_INTERNAL 1)
- elseif (NOT URHO3D_HOME AND DEFINED ENV{URHO3D_HOME})
- file (TO_CMAKE_PATH "$ENV{URHO3D_HOME}" URHO3D_HOME)
- set (URHO3D_HOME ${URHO3D_HOME} CACHE PATH "Path to Urho3D project root tree")
- endif ()
- if (URHO3D_HOME)
- # Construct source tree paths from URHO3D_HOME environment variable
- find_file (URHO3D_SOURCE_TREE Urho3D.h.in ${URHO3D_HOME}/Source/Engine DOC "Path to Urho3D project source tree" NO_DEFAULT_PATH NO_CMAKE_FIND_ROOT_PATH)
- if (URHO3D_SOURCE_TREE)
- get_filename_component (URHO3D_SOURCE_TREE ${URHO3D_SOURCE_TREE} PATH)
- set (URHO3D_INCLUDE_DIRS ${URHO3D_SOURCE_TREE})
- foreach (DIR Audio Container Core Engine Graphics Input IO LuaScript Math Navigation Network Physics Resource Scene Script UI UIX Urho2D)
- list (APPEND URHO3D_INCLUDE_DIRS ${URHO3D_SOURCE_TREE}/${DIR}) # Note: variable change to list context after this
- endforeach ()
- set (DIRS SDL/include)
- if (URHO3D_ANGELSCRIPT)
- list (APPEND DIRS AngelScript/include)
- endif ()
- if (URHO3D_NETWORK)
- list (APPEND DIRS kNet/include)
- endif ()
- if (URHO3D_PHYSICS)
- list (APPEND DIRS Bullet/src)
- endif ()
- if (URHO3D_URHO2D)
- list (APPEND DIRS Box2D)
- endif ()
- foreach (DIR ${DIRS})
- list (APPEND URHO3D_INCLUDE_DIRS ${URHO3D_HOME}/Source/ThirdParty/${DIR})
- endforeach ()
- # For non Urho3D project using Urho3D as external library, Urho3D project itself must be built using predefined build directory as per specified in the provided build scripts.
- if (IS_INTERNAL)
- set (BINARY_DIR ${CMAKE_BINARY_DIR})
- elseif (ANDROID AND CMAKE_HOST_WIN32 AND NOT URHO3D_MKLINK)
- set (BINARY_DIR ${URHO3D_HOME}/Source/Android)
- else ()
- set (BINARY_DIR ${URHO3D_HOME}/${PLATFORM_PREFIX}Build)
- endif ()
- list (APPEND URHO3D_INCLUDE_DIRS ${BINARY_DIR}/Engine)
- if (ANDROID)
- if (IS_INTERNAL)
- set (URHO3D_LIB_SEARCH_PATH ${ANDROID_LIBRARY_OUTPUT_PATH})
- else ()
- set (URHO3D_LIB_SEARCH_PATH ${BINARY_DIR}/libs/${ANDROID_NDK_ABI_NAME})
- endif ()
- else ()
- set (URHO3D_LIB_SEARCH_PATH ${URHO3D_HOME}/${PLATFORM_PREFIX}Lib)
- endif ()
- if (TARGET Urho3D)
- set (URHO3D_LIBRARIES Urho3D)
- set (FOUND_MESSAGE "Found Urho3D: as CMake target")
- else ()
- find_library (URHO3D_LIBRARIES NAMES ${URHO3D_LIB_NAMES} PATHS ${URHO3D_LIB_SEARCH_PATH} NO_DEFAULT_PATH NO_CMAKE_FIND_ROOT_PATH)
- if (WIN32)
- find_library (URHO3D_LIBRARIES_DBG NAMES ${URHO3D_LIB_NAMES_DBG} PATHS ${URHO3D_LIB_SEARCH_PATH} NO_DEFAULT_PATH NO_CMAKE_FIND_ROOT_PATH)
- endif ()
- endif ()
- endif ()
- else ()
- # If Urho3D SDK is not being installed in the default system location, use the CMAKE_PREFIX_PATH environment variable to specify the prefix path to that location
- # Note that the prefix path should not contain the "/include" or "/lib"
- # For example on Windows platform: CMAKE_PREFIX_PATH=C:/Users/john/Urho3D if the SDK is installed using CMAKE_INSTALL_PREFIX=C:/Users/john/Urho3D
- # For example on Linux platform: CMAKE_PREFIX_PATH=/home/john/usr/local if the SDK is installed using DESTDIR=/home/john and CMAKE_INSTALL_PREFIX=/usr/local
- if (CMAKE_HOST_WIN32)
- set (URHO3D_INC_SEARCH_PATH include)
- set (URHO3D_LIB_SEARCH_PATH lib)
- else ()
- set (PATH_SUFFIX Urho3D)
- if (IOS)
- set (CMAKE_LIBRARY_ARCHITECTURE ios)
- endif ()
- endif ()
- # Additional search paths are added by CMake by default which should already include most common platform specific paths
- find_path (URHO3D_INCLUDE_DIRS Urho3D.h PATHS ${URHO3D_INC_SEARCH_PATH} PATH_SUFFIXES ${PATH_SUFFIX})
- find_library (URHO3D_LIBRARIES NAMES ${URHO3D_LIB_NAMES} PATHS ${URHO3D_LIB_SEARCH_PATH} PATH_SUFFIXES ${PATH_SUFFIX})
- if (WIN32)
- find_library (URHO3D_LIBRARIES_DBG NAMES ${URHO3D_LIB_NAMES_DBG} PATHS ${URHO3D_LIB_SEARCH_PATH} PATH_SUFFIXES ${PATH_SUFFIX})
- endif ()
- if (URHO3D_INCLUDE_DIRS)
- set (BASE_DIR ${URHO3D_INCLUDE_DIRS})
- set (DIRS SDL)
- if (URHO3D_ANGELSCRIPT)
- list (APPEND DIRS AngelScript)
- endif ()
- if (URHO3D_NETWORK)
- list (APPEND DIRS kNet)
- endif ()
- if (URHO3D_PHYSICS)
- list (APPEND DIRS Bullet)
- endif ()
- if (URHO3D_URHO2D)
- list (APPEND DIRS Box2D)
- endif ()
- foreach (DIR ${DIRS})
- list (APPEND URHO3D_INCLUDE_DIRS ${BASE_DIR}/${DIR}) # Note: variable change to list context after this, so we need BASE_DIR to remain the same
- endforeach ()
- endif ()
- endif ()
- if (WIN32)
- set (URHO3D_LIBRARIES_REL ${URHO3D_LIBRARIES})
- if (URHO3D_LIBRARIES)
- if (URHO3D_LIBRARIES_DBG)
- list (APPEND URHO3D_LIBRARIES ${URHO3D_LIBRARIES_DBG})
- endif ()
- else ()
- set (URHO3D_LIBRARIES ${URHO3D_LIBRARIES_DBG})
- endif ()
- endif ()
- if (URHO3D_INCLUDE_DIRS AND URHO3D_LIBRARIES)
- set (URHO3D_FOUND 1)
- if (NOT FOUND_MESSAGE)
- set (FOUND_MESSAGE "Found Urho3D: ${URHO3D_LIBRARIES}")
- endif ()
- endif ()
- if (URHO3D_FOUND)
- include (FindPackageMessage)
- FIND_PACKAGE_MESSAGE (Urho3D ${FOUND_MESSAGE} "[${URHO3D_LIBRARIES}][${URHO3D_INCLUDE_DIRS}]")
- else ()
- if (Urho3D_FIND_REQUIRED)
- message (FATAL_ERROR
- "Could not find Urho3D library in default SDK installation location or Urho3D project root tree. "
- "For searching in a non-default Urho3D SDK installation, use 'CMAKE_PREFIX_PATH' environment variable to specify the prefix path of the installation location. "
- "For searching in a build tree of Urho3D project, use 'URHO3D_HOME' environment variable to specify the Urho3D project root directory. The Urho3D library itself must already be built successfully.")
- endif ()
- endif ()
- mark_as_advanced (URHO3D_INCLUDE_DIRS URHO3D_LIBRARIES URHO3D_SOURCE_TREE)
|