|
|
- # Find the Vision Labs Face SDK.
- # Sets the usual variables expected for find_package scripts:
- # FSDK_INCLUDE_DIRS - headers location
- # FSDK_LIBRARIES - libraries to link against
- # FSDK_RUNTIME_LIBRARIES - runtime libraries
- # FSDK_FOUND - true if Face SDK was found.
-
- # This is the directory where the Face SDK is located.
- # By default FSDKDIR environment variable value is taken.
- set(FSDK_ROOT "$ENV{FSDKDIR}" CACHE PATH "Vision Labs Face SDK root directory.")
-
- # Look for headers.
- find_path(FSDK_INCLUDE_DIRS
- NAMES fsdk/FaceEngine.h fsdk/Types.h fsdk/Def.h
- HINTS $ENV{FSDKDIR}
- PATHS ${FSDK_ROOT}
- PATH_SUFFIXES include)
-
- # iOS framework have different header structure: not flower/header.h, but Headers/header.h. But when you link against framework it's name is used as prefix for includes, so you still use its includes as flower/header.h in c++ code.
- # Now the reason to set this variable is that its used for every other platform and its easier to fake it than rewrite most cmakelists
- if(IOS OR ANDROID)
- set(FSDK_INCLUDE_DIRS ${FSDK_ROOT}/include)
- endif()
-
- #message(STATUS "FSDK: FSDK_INCLUDE_DIRS = ${FSDK_INCLUDE_DIRS}.")
-
- if(WIN32)
- SET(CMAKE_FIND_LIBRARY_SUFFIXES ".lib" ".dll")
- elseif(APPLE AND NOT IOS) # mac os
- SET(CMAKE_FIND_LIBRARY_SUFFIXES ".a" ".dylib")
- else()
- SET(CMAKE_FIND_LIBRARY_SUFFIXES ".so" ".a")
- endif()
-
- # Determine compiler version and architecture.
- # ios has no architechture/compiler branching, because only can only use clang
- # and if you need multiple architechtures there still compiled into single universal binary
- if(NOT IOS)
- if(MSVC10)
- set(FSDK_COMPILER_NAME vs2010)
- elseif(MSVC11)
- set(FSDK_COMPILER_NAME vs2012)
- elseif(MSVC12)
- set(FSDK_COMPILER_NAME vs2013)
- elseif(MSVC14)
- set(FSDK_COMPILER_NAME vs2015)
- elseif(CMAKE_COMPILER_IS_GNUCXX)
- set(FSDK_COMPILER_NAME gcc4)
- elseif("${CMAKE_CXX_COMPILER_ID}" STREQUAL "Clang")
- set(FSDK_COMPILER_NAME clang)
- elseif("${CMAKE_CXX_COMPILER_ID}" STREQUAL "AppleClang")
- set(FSDK_COMPILER_NAME clang)
- else()
- message(SEND_ERROR "[FindFSDK] Unsupported compiler: ${FSDK_COMPILER_NAME}")
- endif()
-
- if(ANDROID)
- set(FSDK_TARGET_NAME ${ANDROID_ABI})
- elseif(CMAKE_SIZEOF_VOID_P EQUAL 8)
- set(FSDK_TARGET_NAME x64)
- else()
- set(FSDK_TARGET_NAME x86)
- endif()
-
- # What version of Face SDK to use.
- set(FSDK_LIB_PREFIX ${FSDK_COMPILER_NAME}/${FSDK_TARGET_NAME})
- endif()
-
- if(IOS)
- # List of all SDK libraries.
- set(FSDK_LIB_NAMES fsdk)
- else()
- # List of all SDK libraries.
- set(FSDK_LIB_NAMES FaceEngineSDK)
- endif()
-
- if(IOS)
- set(FSDK_LIB_PATH_SUFFIX Frameworks)
- set(FSDK_BIN_PATH_SUFFIX Frameworks)
- else()
- set(FSDK_LIB_PATH_SUFFIX lib/${FSDK_LIB_PREFIX})
- set(FSDK_BIN_PATH_SUFFIX bin/${FSDK_LIB_PREFIX})
- endif()
-
-
- macro(find_fsdk_library LIBRARY_VAR LIBRARY_NAME)
-
- find_library(${LIBRARY_VAR}
- NAMES ${LIBRARY_NAME}
- HINTS $ENV{FSDKDIR}
- PATHS ${FSDK_ROOT}
- PATH_SUFFIXES ${FSDK_LIB_PATH_SUFFIX}
- NO_DEFAULT_PATH
- )
-
- endmacro()
-
- if(IOS)
- find_fsdk_library(FSDK_LIBRARY_RELEASE fsdk)
- find_fsdk_library(FSDK_LIBRARY_DEBUG fsdkd)
- elseif(EMSCRIPTEN)
- if(EXISTS "${FSDK_ROOT}/include/fsdk/FaceEngine.h")
- message(STATUS "[FindFSDK]:${FSDK_ROOT}/include/fsdk/FaceEngine.h exists!")
- set(FSDK_INCLUDE_DIRS ${FSDK_ROOT}/include)
- else()
- message(ERROR "[FindFSDK]:${FSDK_ROOT}/include/fsdk/FaceEngine.h not found...")
- endif()
-
- if(EXISTS "${FSDK_ROOT}/lib/clang/x86/libFaceEngineSDK.bc")
- message(STATUS "[FindFSDK]: ${FSDK_ROOT}/lib/clang/x86/libFaceEngineSDK.bc exists!")
- list(APPEND FSDK_LIBRARY_RELEASE "${FSDK_ROOT}/lib/clang/x86/libvlc.bc")
- list(APPEND FSDK_LIBRARY_RELEASE "${FSDK_ROOT}/lib/clang/x86/libflower.bc")
- list(APPEND FSDK_LIBRARY_RELEASE "${FSDK_ROOT}/lib/clang/x86/libSdkCore.bc")
- list(APPEND FSDK_LIBRARY_RELEASE "${FSDK_ROOT}/lib/clang/x86/libDetector.bc")
- list(APPEND FSDK_LIBRARY_RELEASE "${FSDK_ROOT}/lib/clang/x86/libEstimator.bc")
- list(APPEND FSDK_LIBRARY_RELEASE "${FSDK_ROOT}/lib/clang/x86/libLicensing.bc")
- list(APPEND FSDK_LIBRARY_RELEASE "${FSDK_ROOT}/lib/clang/x86/libMTCNN.bc")
- list(APPEND FSDK_LIBRARY_RELEASE "${FSDK_ROOT}/lib/clang/x86/libOpticalFlow.bc")
- list(APPEND FSDK_LIBRARY_RELEASE "${FSDK_ROOT}/lib/clang/x86/libWarper.bc")
- list(APPEND FSDK_LIBRARY_RELEASE "${FSDK_ROOT}/lib/clang/x86/libFaceEngineSDK.bc")
- else()
- message(ERROR "[FindFSDK]: ${FSDK_ROOT}/lib/clang/x86/libFaceEngineSDK.bc not found...")
- endif()
- else()
- find_fsdk_library(FSDK_LIBRARY_RELEASE FaceEngineSDK)
- find_fsdk_library(FSDK_LIBRARY_DEBUG FaceEngineSDKd)
- endif()
-
- if(WIN32)
-
- macro(find_fsdk_runtime_library LIBRARY_VAR LIBRARY_NAME)
- find_library(${LIBRARY_VAR}
- NAMES ${LIBRARY_NAME}
- HINTS $ENV{FSDKDIR}
- PATHS ${FSDK_ROOT}
- PATH_SUFFIXES ${FSDK_BIN_PATH_SUFFIX}
- NO_DEFAULT_PATH
- )
- endmacro()
-
- find_fsdk_runtime_library(FSDK_RUNTIME_LIBRARY_RELEASE FaceEngineSDK)
- find_fsdk_runtime_library(FSDK_RUNTIME_LIBRARY_DEBUG FaceEngineSDKd)
- endif()
-
- #link components
- if(FSDK_LIBRARY_RELEASE AND FSDK_LIBRARY_DEBUG)
- set(FSDK_LIBRARIES optimized ${FSDK_LIBRARY_RELEASE} debug ${FSDK_LIBRARY_DEBUG})
- elseif(FSDK_LIBRARY_DEBUG)
- set(FSDK_LIBRARIES ${FSDK_LIBRARY_DEBUG})
- message(STATUS "[FindFSDK]: Release libraries were not found")
- elseif(FSDK_LIBRARY_RELEASE)
- set(FSDK_LIBRARIES ${FSDK_LIBRARY_RELEASE})
- message(STATUS "[FindFSDK]: Debug libraries were not found")
- endif()
-
- #runtime components
- if(WIN32)
- if(FSDK_RUNTIME_LIBRARY_RELEASE)
- list(APPEND FSDK_RUNTIME_LIBRARIES ${FSDK_RUNTIME_LIBRARY_RELEASE})
- endif()
-
- if(FSDK_RUNTIME_LIBRARY_DEBUG)
- list(APPEND FSDK_RUNTIME_LIBRARIES ${FSDK_RUNTIME_LIBRARY_DEBUG})
- endif()
- else()
- list(APPEND FSDK_RUNTIME_LIBRARIES ${FSDK_LIBRARIES})
- endif()
-
- message(STATUS "[FindFSDK]: FSDK_INCLUDE_DIRS: ${FSDK_INCLUDE_DIRS}")
- message(STATUS "[FindFSDK]: FSDK_LIBRARIES: ${FSDK_LIBRARIES}")
- message(STATUS "[FindFSDK]: FSDK_RUNTIME_LIBRARIES: ${FSDK_RUNTIME_LIBRARIES}")
-
- # Support the REQUIRED and QUIET arguments, and set FSDK_FOUND if found.
- include(FindPackageHandleStandardArgs)
- FIND_PACKAGE_HANDLE_STANDARD_ARGS(FSDK DEFAULT_MSG
- FSDK_INCLUDE_DIRS
- FSDK_LIBRARIES
- FSDK_RUNTIME_LIBRARIES
- )
-
- # Don't show in GUI
- mark_as_advanced(
- FSDK_INCLUDE_DIRS
- FSDK_LIBRARIES
- FSDK_COMPILER_NAME
- FSDK_TARGET_NAME
- FSDK_LIB_PREFIX
- FSDK_LIB_NAMES
- )
|