172 lines
5.7 KiB
CMake
172 lines
5.7 KiB
CMake
#[[
|
|
|
|
Also create imported targets:
|
|
* PIP - main library
|
|
* PIP::USB
|
|
* PIP::Console
|
|
* PIP::Crypt
|
|
* PIP::Compress
|
|
* PIP::FFTW
|
|
* PIP::OpenCL
|
|
* PIP::IOUtils
|
|
* PIP::Cloud
|
|
* PIP::Lua
|
|
|
|
These targets include directories and depends on
|
|
main library
|
|
|
|
]]
|
|
|
|
cmake_policy(SET CMP0011 NEW) # don`t affect includer policies
|
|
if(WIN32)
|
|
find_package(MinGW REQUIRED)
|
|
endif()
|
|
|
|
set(_PIP_INCDIR "${PIP_DIR}/include/pip")
|
|
set(_PIP_LIBDIR "${PIP_DIR}/lib")
|
|
set(_PIP_BINDIR)
|
|
set(_PIP_FP_DP)
|
|
|
|
if(MINGW_INCLUDE)
|
|
list(APPEND _PIP_INCDIR "${MINGW_INCLUDE}/pip")
|
|
list(APPEND _PIP_LIBDIR "${MINGW_LIB}")
|
|
endif()
|
|
if(CMAKE_CROSSCOMPILING)
|
|
list(APPEND _PIP_INCDIR "${CMAKE_PREFIX_PATH}/include/pip")
|
|
list(APPEND _PIP_LIBDIR "${CMAKE_PREFIX_PATH}/lib")
|
|
else()
|
|
if(NOT WIN32)
|
|
list(APPEND _PIP_INCDIR "/usr/include/pip" "/usr/local/include/pip")
|
|
list(APPEND _PIP_LIBDIR "/usr/lib" "/usr/local/lib")
|
|
endif()
|
|
if(APPLE)
|
|
include_directories(/usr/local/include)
|
|
link_directories(/usr/local/lib)
|
|
endif()
|
|
endif()
|
|
list(APPEND _PIP_LIBDIR "$ENV{SMSDK_DIR}/lib")
|
|
|
|
if(MINGW_INCLUDE)
|
|
list(APPEND _PIP_BINDIR "${MINGW_BIN}")
|
|
endif()
|
|
if(CMAKE_CROSSCOMPILING)
|
|
set(_PIP_FP_DP "NO_DEFAULT_PATH")
|
|
list(APPEND _PIP_BINDIR "/usr/bin" "/usr/local/bin")
|
|
else()
|
|
list(APPEND _PIP_BINDIR "${CMAKE_PREFIX_PATH}/bin")
|
|
endif()
|
|
list(APPEND _PIP_BINDIR "${PIP_DIR}/bin")
|
|
set(_pip_suffix "")
|
|
|
|
find_library(PIP_LIBRARY pip${_pip_suffix} HINTS ${_PIP_LIBDIR})
|
|
find_library(PIP_USB_LIBRARY pip_usb${_pip_suffix} HINTS ${_PIP_LIBDIR})
|
|
find_library(PIP_CONSOLE_LIBRARY pip_console${_pip_suffix} HINTS ${_PIP_LIBDIR})
|
|
find_library(PIP_CRYPT_LIBRARY pip_crypt${_pip_suffix} HINTS ${_PIP_LIBDIR})
|
|
find_library(PIP_FFTW_LIBRARY pip_fftw${_pip_suffix} HINTS ${_PIP_LIBDIR})
|
|
find_library(PIP_COMPRESS_LIBRARY pip_compress${_pip_suffix} HINTS ${_PIP_LIBDIR})
|
|
find_library(PIP_OPENCL_LIBRARY pip_opencl${_pip_suffix} HINTS ${_PIP_LIBDIR})
|
|
find_library(PIP_IO_UTILS_LIBRARY pip_io_utils${_pip_suffix} HINTS ${_PIP_LIBDIR})
|
|
find_library(PIP_CLOUD_LIBRARY pip_cloud HINTS${_pip_suffix} ${_PIP_LIBDIR})
|
|
find_library(PIP_LUA_LIBRARY pip_lua HINTS${_pip_suffix} ${_PIP_LIBDIR})
|
|
find_file(PIP_H_INCLUDE "pip.h" HINTS ${_PIP_INCDIR} $ENV{SMSDK_DIR}/include/pip)
|
|
get_filename_component(PIP_INCLUDES ${PIP_H_INCLUDE} PATH)
|
|
set(__ext "")
|
|
if ("x${CMAKE_HOST_SYSTEM_NAME}" STREQUAL "xWindows")
|
|
set(__ext ".exe")
|
|
if (CMAKE_CROSSCOMPILING)
|
|
set(_PIP_FP_DP)
|
|
endif()
|
|
endif()
|
|
#message("FIND \"${__ext}\" -> ${_PIP_BINDIR}")
|
|
find_program(PIP_CMG pip_cmg${__ext} HINTS ${_PIP_BINDIR} ${_PIP_FP_DP})
|
|
find_program(PIP_RC pip_rc${__ext} HINTS ${_PIP_BINDIR} ${_PIP_FP_DP})
|
|
find_program(PIP_DEPLOY_TOOL deploy_tool${__ext} HINTS ${_PIP_BINDIR} ${_PIP_FP_DP})
|
|
if (NOT PIP_LIBRARY)
|
|
message(FATAL_ERROR "Can`t find PIP library!")
|
|
endif()
|
|
set(_PIP_LIBRARY_PATH_ "${PIP_LIBRARY}")
|
|
set(_PIP_ADD_LIBS_ "")
|
|
if("${CMAKE_SYSTEM_NAME}" STREQUAL "Linux")
|
|
find_library(DL_LIBRARY dl)
|
|
list(APPEND PIP_LIBRARY ${DL_LIBRARY})
|
|
if (NOT DEFINED ANDROID_PLATFORM)
|
|
find_library(PTHREAD_LIBRARY pthread)
|
|
find_library(UTIL_LIBRARY util)
|
|
set(_PIP_ADD_LIBS_ ${PTHREAD_LIBRARY} ${UTIL_LIBRARY})
|
|
list(APPEND PIP_LIBRARY ${_PIP_ADD_LIBS_})
|
|
endif()
|
|
endif()
|
|
if(PIP_LUA_LIBRARY)
|
|
if (NOT LUA_FOUND)
|
|
if(MINGW)
|
|
set(LUA_INCLUDE_DIR ${MINGW_INCLUDE})
|
|
set(_prev_clp "${CMAKE_LIBRARY_PATH}")
|
|
set(CMAKE_LIBRARY_PATH "${MINGW_LIB}")
|
|
endif()
|
|
find_package(Lua QUIET)
|
|
if(MINGW)
|
|
set(CMAKE_LIBRARY_PATH "${_prev_clp}")
|
|
endif()
|
|
endif()
|
|
endif()
|
|
|
|
if(NOT PIP_VERSION)
|
|
include(CheckSymbolExists)
|
|
check_symbol_exists(PIP_VERSION_NAME "${PIP_INCLUDES}/piversion.h" HAVE_PIP_VERSION)
|
|
if (HAVE_PIP_VERSION)
|
|
file(STRINGS "${PIP_INCLUDES}/piversion.h" _VERSION REGEX "^[ \t]*#define[ \t]+PIP_VERSION_NAME+[ \t]+.*$")
|
|
string(REGEX MATCH "\".*\"" _VERSION ${_VERSION})
|
|
string(LENGTH ${_VERSION} SL)
|
|
math(EXPR SL ${SL}-2)
|
|
string(SUBSTRING ${_VERSION} 1 ${SL} _VERSION)
|
|
set(PIP_VERSION ${_VERSION} CACHE STRING "VERSION")
|
|
if (NOT _PIP_MSG)
|
|
set(_PIP_MSG 1 CACHE BOOL "msg_pip" FORCE)
|
|
message(STATUS "Found PIP: ${_PIP_LIBRARY_PATH_} (version \"${PIP_VERSION}\")")
|
|
endif()
|
|
else()
|
|
message(FATAL_ERROR "Can`t find PIP version file!")
|
|
endif()
|
|
endif()
|
|
if(PIP_FIND_VERSION VERSION_GREATER PIP_VERSION)
|
|
message(FATAL_ERROR "PIP version ${PIP_VERSION} is available, but ${PIP_FIND_VERSION} requested!")
|
|
endif()
|
|
|
|
set(__modules "USB;Crypt;Console;FFTW;Compress;IOUtils;Cloud;Lua")
|
|
set(__module_USB "${PIP_USB_LIBRARY}" )
|
|
set(__module_Console "${PIP_CONSOLE_LIBRARY}" )
|
|
set(__module_Crypt "${PIP_CRYPT_LIBRARY}" )
|
|
set(__module_FFTW "${PIP_FFTW_LIBRARY}" )
|
|
set(__module_Compress "${PIP_COMPRESS_LIBRARY}" )
|
|
set(__module_OpenCL "${PIP_OPENCL_LIBRARY}" )
|
|
set(__module_IOUtils "${PIP_IO_UTILS_LIBRARY}" )
|
|
set(__module_Cloud "${PIP_CLOUD_LIBRARY}" )
|
|
set(__module_Lua "${PIP_LUA_LIBRARY}" )
|
|
if((NOT TARGET PIP) AND PIP_LIBRARY)
|
|
add_library(PIP UNKNOWN IMPORTED)
|
|
set_target_properties(PIP PROPERTIES
|
|
IMPORTED_LOCATION "${_PIP_LIBRARY_PATH_}"
|
|
INTERFACE_INCLUDE_DIRECTORIES "${PIP_INCLUDES}"
|
|
INTERFACE_LINK_LIBRARIES "${_PIP_ADD_LIBS_}")
|
|
endif()
|
|
foreach (_m ${__modules})
|
|
if((NOT TARGET PIP::${_m}) AND __module_${_m})
|
|
add_library(PIP::${_m} UNKNOWN IMPORTED)
|
|
set_target_properties(PIP::${_m} PROPERTIES
|
|
IMPORTED_LOCATION "${__module_${_m}}"
|
|
INTERFACE_LINK_LIBRARIES "PIP")
|
|
endif()
|
|
endforeach()
|
|
if(__module_IOUtils AND __module_Crypt)
|
|
set_target_properties(PIP::IOUtils PROPERTIES INTERFACE_LINK_LIBRARIES "PIP::Crypt")
|
|
endif()
|
|
if(__module_Cloud AND __module_IOUtils)
|
|
set_target_properties(PIP::Cloud PROPERTIES INTERFACE_LINK_LIBRARIES "PIP::IOUtils")
|
|
endif()
|
|
if(__module_Lua)
|
|
set_target_properties(PIP::Lua PROPERTIES INTERFACE_INCLUDE_DIRECTORIES "${LUA_INCLUDE_DIR}" INTERFACE_LINK_LIBRARIES "PIP;${LUA_LIBRARIES}")
|
|
endif()
|
|
|
|
include(PIPMacros)
|
|
|