#[[ 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)