ready for shstk
This commit is contained in:
148
CMakeLists.txt
148
CMakeLists.txt
@@ -1,46 +1,36 @@
|
||||
cmake_minimum_required(VERSION 3.0)
|
||||
cmake_policy(SET CMP0017 NEW) # need include() with .cmake
|
||||
project(pip)
|
||||
set(_PIP_MAJOR 2)
|
||||
set(_PIP_MINOR 5)
|
||||
set(_PIP_REVISION 0)
|
||||
set(_PIP_SUFFIX _beta)
|
||||
set(_PIP_COMPANY SHS)
|
||||
set(_PIP_DOMAIN org.SHS)
|
||||
set(pip_MAJOR 2)
|
||||
set(pip_MINOR 5)
|
||||
set(pip_REVISION 0)
|
||||
set(pip_SUFFIX _beta)
|
||||
set(pip_COMPANY SHS)
|
||||
set(pip_DOMAIN org.SHS)
|
||||
|
||||
if ("x${CMAKE_MODULE_PATH}" STREQUAL "x")
|
||||
set(CMAKE_MODULE_PATH "${CMAKE_CURRENT_SOURCE_DIR}/cmake")
|
||||
endif()
|
||||
include_directories(${CMAKE_CURRENT_SOURCE_DIR} ${CMAKE_CURRENT_BINARY_DIR})
|
||||
set(PIP_BUILD 1)
|
||||
include(CheckFunctionExists)
|
||||
include(GenerateExportHeader)
|
||||
include(DeployMacros)
|
||||
include(PIPMacros)
|
||||
if(NOT DEFINED BUILD_NUMBER)
|
||||
set(BUILD_NUMBER 9999)
|
||||
endif()
|
||||
if("x${BUILD_NUMBER}" STREQUAL "x")
|
||||
set(BUILD_NUMBER 0)
|
||||
endif()
|
||||
include(SHSTKMacros)
|
||||
|
||||
shstk_begin_project(pip PIP)
|
||||
|
||||
set(_ICU_DEFAULT OFF)
|
||||
if((NOT DEFINED WIN32) AND (NOT DEFINED ANDROID_PLATFORM) AND (NOT DEFINED APPLE))
|
||||
set(_ICU_DEFAULT ON)
|
||||
endif()
|
||||
set(PIP_DLL_DIR "${CMAKE_CURRENT_BINARY_DIR}" CACHE STRING "")
|
||||
|
||||
|
||||
# Options
|
||||
option(ICU "ICU support for convert codepages" ${_ICU_DEFAULT})
|
||||
option(STD_IOSTREAM "Building with std iostream operators support" OFF)
|
||||
option(INTROSPECTION "Build with introspection" OFF)
|
||||
option(LIB "System install" ON)
|
||||
option(STATIC_LIB OFF)
|
||||
option(TESTS "Build tests and perform their before install step" OFF)
|
||||
set(PIP_UTILS 1)
|
||||
if(LIBPROJECT)
|
||||
set(PIP_UTILS ${UTILS})
|
||||
endif()
|
||||
set(CMAKE_CXX_STANDARD_REQUIRED TRUE)
|
||||
set(CMAKE_CXX_STANDARD 11)
|
||||
|
||||
@@ -69,7 +59,7 @@ macro(pip_module NAME LIBS LABEL INCLUDES MSG)
|
||||
file(GLOB_RECURSE CPPS "libs/${NAME}/*.cpp")
|
||||
file(GLOB_RECURSE HS "libs/${NAME}/*.h")
|
||||
file(GLOB_RECURSE PHS "libs/${NAME}/*_p.h")
|
||||
file(GLOB_RECURSE RES "libs/${NAME}/*conf.h")
|
||||
file(GLOB_RECURSE RES "libs/${NAME}/*.conf")
|
||||
list(REMOVE_ITEM HS "${PHS}")
|
||||
list(APPEND HDRS ${HS})
|
||||
list(APPEND PHDRS ${PHS})
|
||||
@@ -84,11 +74,11 @@ macro(pip_module NAME LIBS LABEL INCLUDES MSG)
|
||||
string(TOUPPER "${_target}" DEF_NAME)
|
||||
|
||||
set(PIP_MSG_${NAME} "yes${MSG}")
|
||||
import_version(${_target} PIP)
|
||||
set_deploy_property(${_target} ${PIP_LIB_TYPE}
|
||||
import_version(${_target} pip)
|
||||
set_deploy_property(${_target} ${pip_LIB_TYPE}
|
||||
LABEL "${LABEL}"
|
||||
FULLNAME "${_PIP_DOMAIN}.${_target}"
|
||||
COMPANY "${_PIP_COMPANY}"
|
||||
FULLNAME "${pip_DOMAIN}.${_target}"
|
||||
COMPANY "${pip_COMPANY}"
|
||||
INFO "Platform-Independent Primitives")
|
||||
make_rc(${_target} _RC)
|
||||
|
||||
@@ -101,21 +91,22 @@ macro(pip_module NAME LIBS LABEL INCLUDES MSG)
|
||||
endif()
|
||||
endforeach()
|
||||
|
||||
if (NOT "${RES}" STREQUAL "")
|
||||
if (NOT "x${RES}" STREQUAL "x")
|
||||
pip_resources(CRES "${RES}")
|
||||
endif()
|
||||
add_definitions(-D${DEF_NAME})
|
||||
add_library(${_target} ${PIP_LIB_TYPE} ${CPPS} ${CRES} ${_RC})
|
||||
if (NOT "${RES}" STREQUAL "")
|
||||
add_library(${_target} ${pip_LIB_TYPE} ${CPPS} ${CRES} ${_RC})
|
||||
target_include_directories(${_target} PUBLIC ${PIP_INCLUDES})
|
||||
if (NOT "x${RES}" STREQUAL "x")
|
||||
add_dependencies(${_target} pip_rc)
|
||||
endif()
|
||||
if (NOT "${INCLUDES}" STREQUAL "")
|
||||
if (NOT "x${INCLUDES}" STREQUAL "x")
|
||||
target_include_directories(${_target} PRIVATE ${INCLUDES})
|
||||
endif()
|
||||
list(APPEND PIP_EXPORTS "${DEF_NAME}_EXPORT")
|
||||
target_link_libraries(${_target} ${LINK_LIBS})
|
||||
list(APPEND PIP_MODULES ${_target})
|
||||
if (NOT "${LIBS}" STREQUAL "")
|
||||
if (NOT "x${LIBS}" STREQUAL "x")
|
||||
list(APPEND LIBS_STATUS ${LIBS})
|
||||
endif()
|
||||
endmacro()
|
||||
@@ -132,63 +123,10 @@ if (DEFINED ENV{QNX_HOST} OR PIP_FREERTOS)
|
||||
set(STATIC_LIB ON)
|
||||
endif()
|
||||
|
||||
if(STATIC_LIB)
|
||||
set(PIP_LIB_TYPE STATIC)
|
||||
set(PIP_LIB_TYPE_MSG "Static")
|
||||
add_definitions(-DPIP_STATIC_DEFINE)
|
||||
else()
|
||||
set(PIP_LIB_TYPE SHARED)
|
||||
set(PIP_LIB_TYPE_MSG "Shared")
|
||||
endif()
|
||||
|
||||
|
||||
# Version
|
||||
set_version(PIP
|
||||
MAJOR "${_PIP_MAJOR}"
|
||||
MINOR "${_PIP_MINOR}"
|
||||
REVISION "${_PIP_REVISION}"
|
||||
BUILD "${BUILD_NUMBER}"
|
||||
SUFFIX "${_PIP_SUFFIX}"
|
||||
OUTPUT "${CMAKE_CURRENT_BINARY_DIR}/piversion.h")
|
||||
if(EXISTS "${CMAKE_CURRENT_SOURCE_DIR}/${PIP_SRC_MAIN}/piversion.h")
|
||||
file(REMOVE "${CMAKE_CURRENT_SOURCE_DIR}/${PIP_SRC_MAIN}/piversion.h")
|
||||
endif()
|
||||
list(APPEND HDRS "${CMAKE_CURRENT_BINARY_DIR}/piversion.h")
|
||||
list(APPEND HDRS "${CMAKE_CURRENT_BINARY_DIR}/pip_version.h")
|
||||
|
||||
if(MINGW)
|
||||
find_package(MinGW REQUIRED)
|
||||
list(APPEND CMAKE_LIBRARY_PATH ${MINGW_LIB})
|
||||
else()
|
||||
if(APPLE)
|
||||
if(CMAKE_CROSSCOMPILING)
|
||||
set(CMAKE_INSTALL_NAME_DIR "@rpath")
|
||||
else()
|
||||
include_directories(/usr/local/include)
|
||||
link_directories(/usr/local/lib)
|
||||
endif()
|
||||
set(CMAKE_INSTALL_RPATH "@executable_path/../Frameworks;@executable_path/lib;@loader_path/../lib")
|
||||
set(CMAKE_MACOSX_RPATH 1)
|
||||
else()
|
||||
set(CMAKE_INSTALL_RPATH "\$ORIGIN;\$ORIGIN/lib")
|
||||
endif()
|
||||
endif()
|
||||
if(LIB)
|
||||
if(WIN32)
|
||||
if(MINGW)
|
||||
set(CMAKE_INSTALL_PREFIX ${MINGW_DIR})
|
||||
endif()
|
||||
else()
|
||||
if (DEFINED ANDROID_PLATFORM)
|
||||
set(CMAKE_INSTALL_PREFIX ${ANDROID_SYSTEM_LIBRARY_PATH}/usr)
|
||||
else()
|
||||
if(CMAKE_CROSSCOMPILING)
|
||||
set(CMAKE_INSTALL_PREFIX ${CMAKE_STAGING_PREFIX})
|
||||
else()
|
||||
set(CMAKE_INSTALL_PREFIX ${INSTALL_PREFIX}/usr/local)
|
||||
endif()
|
||||
endif()
|
||||
endif()
|
||||
endif()
|
||||
|
||||
if (NOT DEFINED PIP_CMG)
|
||||
if (CMAKE_CROSSCOMPILING OR (DEFINED ANDROID_PLATFORM))
|
||||
@@ -210,16 +148,13 @@ get_filename_component(C_COMPILER "${CMAKE_C_COMPILER}" NAME)
|
||||
# Main lib
|
||||
file(GLOB PIP_FOLDERS LIST_DIRECTORIES TRUE "${CMAKE_CURRENT_SOURCE_DIR}/libs/main/*")
|
||||
list(APPEND PIP_FOLDERS "${CMAKE_CURRENT_SOURCE_DIR}/libs/main")
|
||||
set(PIP_MAIN_FOLDERS)
|
||||
set(PIP_INCLUDES "${CMAKE_CURRENT_BINARY_DIR}")
|
||||
foreach(F ${PIP_FOLDERS})
|
||||
if (IS_DIRECTORY "${F}")
|
||||
list(APPEND PIP_MAIN_FOLDERS "${F}")
|
||||
include_directories("${F}")
|
||||
list(APPEND PIP_INCLUDES "${F}")
|
||||
#include_directories("${F}")
|
||||
endif()
|
||||
endforeach(F)
|
||||
if (DEFINED LIBPROJECT)
|
||||
set(PIP_MAIN_FOLDERS "${PIP_MAIN_FOLDERS}" PARENT_SCOPE)
|
||||
endif()
|
||||
|
||||
if (TESTS)
|
||||
set(PIP_ROOT_BINARY_DIR "${CMAKE_CURRENT_BINARY_DIR}")
|
||||
@@ -229,7 +164,7 @@ endif()
|
||||
if(PIP_FREERTOS)
|
||||
add_definitions(-DPIP_FREERTOS)
|
||||
set(ICU OFF)
|
||||
set(LIB OFF)
|
||||
set(LOCAL ON)
|
||||
endif()
|
||||
|
||||
# Check Bessel functions
|
||||
@@ -365,7 +300,6 @@ else()
|
||||
pip_find_lib(${LIB_})
|
||||
endforeach()
|
||||
endif()
|
||||
import_version(pip PIP)
|
||||
if(WIN32)
|
||||
add_definitions(-DPSAPI_VERSION=1)
|
||||
if(${C_COMPILER} STREQUAL "cl.exe")
|
||||
@@ -510,16 +444,16 @@ if (NOT CROSSTOOLS)
|
||||
set(PIP_MSG_compress "yes")
|
||||
set(PIP_MODULES pip)
|
||||
add_definitions(-DPIP_CRYPT)
|
||||
add_library(pip_crypt ${PIP_LIB_TYPE} ${CPP_LIB_CRYPT})
|
||||
add_library(pip_crypt ${pip_LIB_TYPE} ${CPP_LIB_CRYPT})
|
||||
target_link_libraries(pip_crypt pip)
|
||||
list(APPEND PIP_MODULES pip_crypt)
|
||||
set(IO_UTILS_LIBS pip)
|
||||
add_library(pip_io_utils ${PIP_LIB_TYPE} ${CPP_LIB_IO_UTILS})
|
||||
add_library(pip_io_utils ${pip_LIB_TYPE} ${CPP_LIB_IO_UTILS})
|
||||
list(APPEND IO_UTILS_LIBS pip_crypt)
|
||||
target_link_libraries(pip_io_utils ${IO_UTILS_LIBS})
|
||||
list(APPEND PIP_MODULES pip_io_utils)
|
||||
add_definitions(-DPIP_COMPRESS)
|
||||
add_library(pip_compress ${PIP_LIB_TYPE} ${CPP_LIB_COMPRESS})
|
||||
add_library(pip_compress ${pip_LIB_TYPE} ${CPP_LIB_COMPRESS})
|
||||
target_link_libraries(pip_compress pip)
|
||||
list(APPEND PIP_MODULES pip_compress)
|
||||
|
||||
@@ -531,7 +465,7 @@ target_compile_definitions(pip PRIVATE "PICODE_DEFINES=\"${PIP_EXPORTS_STR}\"")
|
||||
|
||||
# Install
|
||||
# Check if system or local install will be used (to system install use "-DLIB=" argument of cmake)
|
||||
if(LIB)
|
||||
if(NOT LOCAL)
|
||||
if(WIN32)
|
||||
if(MINGW)
|
||||
if (NOT CROSSTOOLS)
|
||||
@@ -562,7 +496,7 @@ if(LIB)
|
||||
endif()
|
||||
install(TARGETS ${PIP_MODULES} DESTINATION ${CMAKE_INSTALL_PREFIX}/lib)
|
||||
endif()
|
||||
file(GLOB CMAKES "cmake/*.cmake" "cmake/*.in" "cmake/android_debug.keystore")
|
||||
file(GLOB CMAKES "cmake/*.cmake" "cmake/*.in")
|
||||
install(FILES ${CMAKES} DESTINATION ${CMAKE_ROOT}/Modules)
|
||||
else()
|
||||
if(NOT PIP_FREERTOS)
|
||||
@@ -603,11 +537,9 @@ if(NOT PIP_FREERTOS)
|
||||
endif()
|
||||
|
||||
|
||||
# Libraries messages
|
||||
if(DEFINED LIBPROJECT)
|
||||
shstk_is_parent_exists(_pe)
|
||||
if (_pe)
|
||||
set(PIP_MODULES ${PIP_MODULES} PARENT_SCOPE)
|
||||
list(APPEND _ALL_TARGETS ${PIP_MODULES})
|
||||
set(_ALL_TARGETS ${_ALL_TARGETS} PARENT_SCOPE)
|
||||
endif()
|
||||
|
||||
#
|
||||
@@ -617,9 +549,9 @@ if ((NOT PIP_FREERTOS) AND (NOT CROSSTOOLS))
|
||||
include(PIPDocumentation)
|
||||
find_package(Doxygen)
|
||||
if(DOXYGEN_FOUND)
|
||||
set(DOXY_PROJECT_NUMBER "${PIP_VERSION}")
|
||||
set(DOXY_QHP_CUST_FILTER_ATTRS "\"PIP ${PIP_VERSION}\"")
|
||||
set(DOXY_QHP_SECT_FILTER_ATTRS "\"PIP ${PIP_VERSION}\"")
|
||||
set(DOXY_PROJECT_NUMBER "${pip_VERSION}")
|
||||
set(DOXY_QHP_CUST_FILTER_ATTRS "\"PIP ${pip_VERSION}\"")
|
||||
set(DOXY_QHP_SECT_FILTER_ATTRS "\"PIP ${pip_VERSION}\"")
|
||||
set(DOXY_EXAMPLE_PATH "\"${CMAKE_CURRENT_SOURCE_DIR}/doc/examples\"")
|
||||
set(DOXY_IMAGE_PATH "\"${CMAKE_CURRENT_SOURCE_DIR}/doc/images\"")
|
||||
set(DOXY_EXCLUDE "\"${CMAKE_CURRENT_SOURCE_DIR}/libs/lua/3rd\"")
|
||||
@@ -662,10 +594,10 @@ endmacro()
|
||||
|
||||
list(REMOVE_ITEM LIBS_STATUS ${PIP_MODULES})
|
||||
message("----------PIP----------")
|
||||
message(" Version: ${PIP_VERSION} ")
|
||||
message(" Linkage: ${PIP_LIB_TYPE_MSG}")
|
||||
message(" Type : ${PIP_BUILD_TYPE}")
|
||||
if(LIB)
|
||||
message(" Version: ${pip_VERSION} ")
|
||||
message(" Linkage: ${pip_LIB_TYPE_MSG}")
|
||||
message(" Type : ${pip_BUILD_TYPE}")
|
||||
if (NOT LOCAL)
|
||||
message(" Install: \"${CMAKE_INSTALL_PREFIX}\"")
|
||||
else()
|
||||
if(NOT PIP_FREERTOS)
|
||||
|
||||
Reference in New Issue
Block a user