aboutsummaryrefslogtreecommitdiffhomepage
diff options
context:
space:
mode:
-rw-r--r--CMake/GeneratePkgConfig.cmake10
-rw-r--r--CMakeLists.txt52
-rw-r--r--TdConfig.cmake4
-rw-r--r--sqlite/CMakeLists.txt10
-rw-r--r--tdactor/CMakeLists.txt10
-rw-r--r--tddb/CMakeLists.txt10
-rw-r--r--tdnet/CMakeLists.txt10
-rw-r--r--tdutils/CMakeLists.txt10
8 files changed, 73 insertions, 43 deletions
diff --git a/CMake/GeneratePkgConfig.cmake b/CMake/GeneratePkgConfig.cmake
index a2800e107..57e59ca74 100644
--- a/CMake/GeneratePkgConfig.cmake
+++ b/CMake/GeneratePkgConfig.cmake
@@ -89,5 +89,13 @@ CFlags: -I\"${PKGCONFIG_INCLUDEDIR}\"
Libs: -L\"${PKGCONFIG_LIBDIR}\" -l${TARGET}
${REQUIRES}${LIBRARIES}")
- install(FILES "${CMAKE_CURRENT_BINARY_DIR}/pkgconfig/${TARGET}.pc" DESTINATION "${CMAKE_INSTALL_LIBDIR}/pkgconfig")
+ get_target_property(LIBRARY_TYPE "${TARGET}" TYPE)
+ if (NOT (LIBRARY_TYPE STREQUAL STATIC_LIBRARY OR LIBRARY_TYPE STREQUAL SHARED_LIBRARY))
+ message(FATAL_ERROR "Don't know how to handle ${TARGET} of type ${LIBRARY_TYPE}")
+ endif()
+ if (NOT TD_ENABLE_FILTERED_INSTALL
+ OR (LIBRARY_TYPE STREQUAL SHARED_LIBRARY AND BUILD_SHARED_LIBS)
+ OR (LIBRARY_TYPE STREQUAL STATIC_LIBRARY AND NOT BUILD_SHARED_LIBS))
+ install(FILES "${CMAKE_CURRENT_BINARY_DIR}/pkgconfig/${TARGET}.pc" DESTINATION "${CMAKE_INSTALL_LIBDIR}/pkgconfig")
+ endif()
endfunction()
diff --git a/CMakeLists.txt b/CMakeLists.txt
index 27e8a2622..818495b21 100644
--- a/CMakeLists.txt
+++ b/CMakeLists.txt
@@ -39,6 +39,7 @@ endif()
include(PreventInSourceBuild)
prevent_in_source_build()
+option(TD_ENABLE_FILTERED_INSTALL "Use \"ON\" to limit installation to files (libraries, dev files) relevant for the chosen \"BUILD_SHARED_LIBS\" value." OFF)
option(TD_ENABLE_JNI "Use \"ON\" to enable JNI-compatible TDLib API.")
option(TD_ENABLE_DOTNET "Use \"ON\" to enable generation of C++/CLI or C++/CX TDLib API bindings.")
if (NOT CMAKE_CROSSCOMPILING)
@@ -1310,18 +1311,22 @@ add_library(Td::TdJsonStatic ALIAS TdJsonStatic)
set(INSTALL_TARGETS tdjson TdJson)
set(INSTALL_STATIC_TARGETS tdjson_static TdJsonStatic tdjson_private "${TD_CORE_PART_TARGETS}" tdcore tdmtproto tdclient TdStatic tdapi)
-install(TARGETS ${INSTALL_TARGETS} EXPORT TdTargets
- LIBRARY DESTINATION "${CMAKE_INSTALL_LIBDIR}"
- ARCHIVE DESTINATION "${CMAKE_INSTALL_LIBDIR}"
- RUNTIME DESTINATION "${CMAKE_INSTALL_BINDIR}"
- INCLUDES DESTINATION "${CMAKE_INSTALL_INCLUDEDIR}"
-)
+if (NOT TD_ENABLE_FILTERED_INSTALL OR BUILD_SHARED_LIBS)
+ install(TARGETS ${INSTALL_TARGETS} EXPORT TdTargets
+ LIBRARY DESTINATION "${CMAKE_INSTALL_LIBDIR}"
+ ARCHIVE DESTINATION "${CMAKE_INSTALL_LIBDIR}"
+ RUNTIME DESTINATION "${CMAKE_INSTALL_BINDIR}"
+ INCLUDES DESTINATION "${CMAKE_INSTALL_INCLUDEDIR}"
+ )
+endif()
-install(TARGETS ${INSTALL_STATIC_TARGETS} EXPORT TdStaticTargets
- LIBRARY DESTINATION "${CMAKE_INSTALL_LIBDIR}"
- ARCHIVE DESTINATION "${CMAKE_INSTALL_LIBDIR}"
- INCLUDES DESTINATION "${CMAKE_INSTALL_INCLUDEDIR}"
-)
+if (NOT TD_ENABLE_FILTERED_INSTALL OR NOT BUILD_SHARED_LIBS)
+ install(TARGETS ${INSTALL_STATIC_TARGETS} EXPORT TdStaticTargets
+ LIBRARY DESTINATION "${CMAKE_INSTALL_LIBDIR}"
+ ARCHIVE DESTINATION "${CMAKE_INSTALL_LIBDIR}"
+ INCLUDES DESTINATION "${CMAKE_INSTALL_INCLUDEDIR}"
+ )
+endif()
# generate pkg-config files
include(GeneratePkgConfig)
@@ -1346,16 +1351,21 @@ generate_pkgconfig(tdjson_private "Telegram Library - JSON interface (private)")
generate_pkgconfig(tdjson "Telegram Library - JSON interface (shared)")
generate_pkgconfig(tdjson_static "Telegram Library - JSON interface (static)")
-install(EXPORT TdTargets
- FILE TdTargets.cmake
- NAMESPACE Td::
- DESTINATION "${CMAKE_INSTALL_LIBDIR}/cmake/Td"
-)
-install(EXPORT TdStaticTargets
- FILE TdStaticTargets.cmake
- NAMESPACE Td::
- DESTINATION "${CMAKE_INSTALL_LIBDIR}/cmake/Td"
-)
+if (NOT TD_ENABLE_FILTERED_INSTALL OR BUILD_SHARED_LIBS)
+ install(EXPORT TdTargets
+ FILE TdTargets.cmake
+ NAMESPACE Td::
+ DESTINATION "${CMAKE_INSTALL_LIBDIR}/cmake/Td"
+ )
+endif()
+
+if (NOT TD_ENABLE_FILTERED_INSTALL OR NOT BUILD_SHARED_LIBS)
+ install(EXPORT TdStaticTargets
+ FILE TdStaticTargets.cmake
+ NAMESPACE Td::
+ DESTINATION "${CMAKE_INSTALL_LIBDIR}/cmake/Td"
+ )
+endif()
# Install tdjson/tdjson_static:
install(FILES ${TD_JSON_HEADERS} "${CMAKE_CURRENT_BINARY_DIR}/td/telegram/tdjson_export.h" DESTINATION "${CMAKE_INSTALL_INCLUDEDIR}/td/telegram")
diff --git a/TdConfig.cmake b/TdConfig.cmake
index cbe7a0348..807a840ed 100644
--- a/TdConfig.cmake
+++ b/TdConfig.cmake
@@ -1,6 +1,8 @@
include(CMakeFindDependencyMacro)
#TODO: write all external dependencies
-include("${CMAKE_CURRENT_LIST_DIR}/TdTargets.cmake")
+if (EXISTS "${CMAKE_CURRENT_LIST_DIR}/TdTargets.cmake")
+ include("${CMAKE_CURRENT_LIST_DIR}/TdTargets.cmake")
+endif()
if (EXISTS "${CMAKE_CURRENT_LIST_DIR}/TdStaticTargets.cmake")
include("${CMAKE_CURRENT_LIST_DIR}/TdStaticTargets.cmake")
endif()
diff --git a/sqlite/CMakeLists.txt b/sqlite/CMakeLists.txt
index 82ceb04c8..539eb631e 100644
--- a/sqlite/CMakeLists.txt
+++ b/sqlite/CMakeLists.txt
@@ -70,7 +70,9 @@ elseif (MSVC)
target_compile_options(tdsqlite PRIVATE /wd4996)
endif()
-install(TARGETS tdsqlite EXPORT TdStaticTargets
- LIBRARY DESTINATION "${CMAKE_INSTALL_LIBDIR}"
- ARCHIVE DESTINATION "${CMAKE_INSTALL_LIBDIR}"
-)
+if (NOT TD_ENABLE_FILTERED_INSTALL OR NOT BUILD_SHARED_LIBS)
+ install(TARGETS tdsqlite EXPORT TdStaticTargets
+ LIBRARY DESTINATION "${CMAKE_INSTALL_LIBDIR}"
+ ARCHIVE DESTINATION "${CMAKE_INSTALL_LIBDIR}"
+ )
+endif()
diff --git a/tdactor/CMakeLists.txt b/tdactor/CMakeLists.txt
index 2a7c68f5d..0b0ecd1db 100644
--- a/tdactor/CMakeLists.txt
+++ b/tdactor/CMakeLists.txt
@@ -51,7 +51,9 @@ if (NOT CMAKE_CROSSCOMPILING)
target_link_libraries(example PRIVATE tdactor)
endif()
-install(TARGETS tdactor EXPORT TdStaticTargets
- LIBRARY DESTINATION "${CMAKE_INSTALL_LIBDIR}"
- ARCHIVE DESTINATION "${CMAKE_INSTALL_LIBDIR}"
-)
+if (NOT TD_ENABLE_FILTERED_INSTALL OR NOT BUILD_SHARED_LIBS)
+ install(TARGETS tdactor EXPORT TdStaticTargets
+ LIBRARY DESTINATION "${CMAKE_INSTALL_LIBDIR}"
+ ARCHIVE DESTINATION "${CMAKE_INSTALL_LIBDIR}"
+ )
+endif()
diff --git a/tddb/CMakeLists.txt b/tddb/CMakeLists.txt
index 85573170d..7f9d40a84 100644
--- a/tddb/CMakeLists.txt
+++ b/tddb/CMakeLists.txt
@@ -55,7 +55,9 @@ if (NOT CMAKE_CROSSCOMPILING)
target_link_libraries(binlog_dump PRIVATE tddb)
endif()
-install(TARGETS tddb EXPORT TdStaticTargets
- LIBRARY DESTINATION "${CMAKE_INSTALL_LIBDIR}"
- ARCHIVE DESTINATION "${CMAKE_INSTALL_LIBDIR}"
-)
+if (NOT TD_ENABLE_FILTERED_INSTALL OR NOT BUILD_SHARED_LIBS)
+ install(TARGETS tddb EXPORT TdStaticTargets
+ LIBRARY DESTINATION "${CMAKE_INSTALL_LIBDIR}"
+ ARCHIVE DESTINATION "${CMAKE_INSTALL_LIBDIR}"
+ )
+endif()
diff --git a/tdnet/CMakeLists.txt b/tdnet/CMakeLists.txt
index 0e35c9722..fead65f0b 100644
--- a/tdnet/CMakeLists.txt
+++ b/tdnet/CMakeLists.txt
@@ -80,7 +80,9 @@ if (APPLE_WATCH)
target_link_libraries(tdnet PRIVATE ${FOUNDATION_LIBRARY})
endif()
-install(TARGETS tdnet EXPORT TdStaticTargets
- LIBRARY DESTINATION "${CMAKE_INSTALL_LIBDIR}"
- ARCHIVE DESTINATION "${CMAKE_INSTALL_LIBDIR}"
-)
+if (NOT TD_ENABLE_FILTERED_INSTALL OR NOT BUILD_SHARED_LIBS)
+ install(TARGETS tdnet EXPORT TdStaticTargets
+ LIBRARY DESTINATION "${CMAKE_INSTALL_LIBDIR}"
+ ARCHIVE DESTINATION "${CMAKE_INSTALL_LIBDIR}"
+ )
+endif()
diff --git a/tdutils/CMakeLists.txt b/tdutils/CMakeLists.txt
index 4760aab01..4b6ac1c2a 100644
--- a/tdutils/CMakeLists.txt
+++ b/tdutils/CMakeLists.txt
@@ -409,10 +409,12 @@ if (ATOMICS_LIBRARIES)
target_link_libraries(tdutils PUBLIC "${ATOMICS_LIBRARIES}")
endif()
-install(TARGETS tdutils EXPORT TdStaticTargets
- LIBRARY DESTINATION "${CMAKE_INSTALL_LIBDIR}"
- ARCHIVE DESTINATION "${CMAKE_INSTALL_LIBDIR}"
-)
+if (NOT TD_ENABLE_FILTERED_INSTALL OR NOT BUILD_SHARED_LIBS)
+ install(TARGETS tdutils EXPORT TdStaticTargets
+ LIBRARY DESTINATION "${CMAKE_INSTALL_LIBDIR}"
+ ARCHIVE DESTINATION "${CMAKE_INSTALL_LIBDIR}"
+ )
+endif()
if (TD_TEST_FOLLY AND ABSL_FOUND AND TDUTILS_USE_EXTERNAL_DEPENDENCIES)
find_package(benchmark QUIET)