Skip to content

Commit 6b79975

Browse files
committed
Add separate TD_INSTALL_STATIC_LIBRARIES and TD_INSTALL_SHARED_LIBRARIES options.
1 parent b39769b commit 6b79975

7 files changed

Lines changed: 62 additions & 43 deletions

File tree

‎CMake/GeneratePkgConfig.cmake‎

Lines changed: 1 addition & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -93,9 +93,5 @@ ${REQUIRES}${LIBRARIES}")
9393
if (NOT (LIBRARY_TYPE STREQUAL STATIC_LIBRARY OR LIBRARY_TYPE STREQUAL SHARED_LIBRARY))
9494
message(FATAL_ERROR "Don't know how to handle ${TARGET} of type ${LIBRARY_TYPE}")
9595
endif()
96-
if (NOT TD_ENABLE_FILTERED_INSTALL
97-
OR (LIBRARY_TYPE STREQUAL SHARED_LIBRARY AND BUILD_SHARED_LIBS)
98-
OR (LIBRARY_TYPE STREQUAL STATIC_LIBRARY AND NOT BUILD_SHARED_LIBS))
99-
install(FILES "${CMAKE_CURRENT_BINARY_DIR}/pkgconfig/${TARGET}.pc" DESTINATION "${CMAKE_INSTALL_LIBDIR}/pkgconfig")
100-
endif()
96+
install(FILES "${CMAKE_CURRENT_BINARY_DIR}/pkgconfig/${TARGET}.pc" DESTINATION "${CMAKE_INSTALL_LIBDIR}/pkgconfig")
10197
endfunction()

‎CMakeLists.txt‎

Lines changed: 45 additions & 31 deletions
Original file line numberDiff line numberDiff line change
@@ -39,7 +39,8 @@ endif()
3939
include(PreventInSourceBuild)
4040
prevent_in_source_build()
4141

42-
option(TD_ENABLE_FILTERED_INSTALL "Use \"ON\" to limit installation to files (libraries, dev files) relevant for the chosen \"BUILD_SHARED_LIBS\" value." OFF)
42+
option(TD_INSTALL_STATIC_LIBRARIES "Enable installation of static libraries." ON)
43+
option(TD_INSTALL_SHARED_LIBRARIES "Enable installation of shared libraries." ON)
4344
option(TD_ENABLE_JNI "Use \"ON\" to enable JNI-compatible TDLib API.")
4445
option(TD_ENABLE_DOTNET "Use \"ON\" to enable generation of C++/CLI or C++/CX TDLib API bindings.")
4546
if (NOT CMAKE_CROSSCOMPILING)
@@ -168,9 +169,10 @@ configure_file("${CMAKE_CURRENT_SOURCE_DIR}/td/telegram/GitCommitHash.cpp.in" "$
168169
add_subdirectory(tdtl)
169170

170171
if (TD_GENERATE_SOURCE_FILES)
171-
set(TDUTILS_MIME_TYPE ON CACHE BOOL "")
172-
set(TDUTILS_USE_EXTERNAL_DEPENDENCIES OFF CACHE BOOL "")
172+
set(TDUTILS_MIME_TYPE ON CACHE BOOL "" FORCE)
173+
set(TDUTILS_USE_EXTERNAL_DEPENDENCIES OFF CACHE BOOL "" FORCE)
173174
endif()
175+
set(TDUTILS_ENABLE_INSTALL ${TD_INSTALL_STATIC_LIBRARIES} CACHE BOOL "" FORCE)
174176
add_subdirectory(tdutils)
175177

176178
add_subdirectory(td/generate)
@@ -213,12 +215,16 @@ if (NOT TDUTILS_MIME_TYPE OR NOT TDUTILS_USE_EXTERNAL_DEPENDENCIES)
213215
return()
214216
endif()
215217

218+
set(TDACTOR_ENABLE_INSTALL ${TD_INSTALL_STATIC_LIBRARIES} CACHE BOOL "" FORCE)
216219
add_subdirectory(tdactor)
217220

221+
set(TDNET_ENABLE_INSTALL ${TD_INSTALL_STATIC_LIBRARIES} CACHE BOOL "" FORCE)
218222
add_subdirectory(tdnet)
219223

224+
set(TDSQLITE_ENABLE_INSTALL ${TD_INSTALL_STATIC_LIBRARIES} CACHE BOOL "" FORCE)
220225
add_subdirectory(sqlite)
221226

227+
set(TDDB_ENABLE_INSTALL ${TD_INSTALL_STATIC_LIBRARIES} CACHE BOOL "" FORCE)
222228
add_subdirectory(tddb)
223229

224230
if (BUILD_TESTING)
@@ -1311,7 +1317,7 @@ add_library(Td::TdJsonStatic ALIAS TdJsonStatic)
13111317
set(INSTALL_TARGETS tdjson TdJson)
13121318
set(INSTALL_STATIC_TARGETS tdjson_static TdJsonStatic tdjson_private "${TD_CORE_PART_TARGETS}" tdcore tdmtproto tdclient TdStatic tdapi)
13131319

1314-
if (NOT TD_ENABLE_FILTERED_INSTALL OR BUILD_SHARED_LIBS)
1320+
if (TD_INSTALL_SHARED_LIBRARIES)
13151321
install(TARGETS ${INSTALL_TARGETS} EXPORT TdTargets
13161322
LIBRARY DESTINATION "${CMAKE_INSTALL_LIBDIR}"
13171323
ARCHIVE DESTINATION "${CMAKE_INSTALL_LIBDIR}"
@@ -1320,7 +1326,7 @@ if (NOT TD_ENABLE_FILTERED_INSTALL OR BUILD_SHARED_LIBS)
13201326
)
13211327
endif()
13221328

1323-
if (NOT TD_ENABLE_FILTERED_INSTALL OR NOT BUILD_SHARED_LIBS)
1329+
if (TD_INSTALL_STATIC_LIBRARIES)
13241330
install(TARGETS ${INSTALL_STATIC_TARGETS} EXPORT TdStaticTargets
13251331
LIBRARY DESTINATION "${CMAKE_INSTALL_LIBDIR}"
13261332
ARCHIVE DESTINATION "${CMAKE_INSTALL_LIBDIR}"
@@ -1331,49 +1337,57 @@ endif()
13311337
# generate pkg-config files
13321338
include(GeneratePkgConfig)
13331339

1334-
generate_pkgconfig(tdutils "Telegram Library - Utils")
1335-
generate_pkgconfig(tdactor "Telegram Library - Actor")
1336-
generate_pkgconfig(tdnet "Telegram Library - Net")
1337-
generate_pkgconfig(tdsqlite "Telegram Library - SQLite")
1338-
generate_pkgconfig(tddb "Telegram Library - Database")
1339-
if (MEMPROF)
1340-
# generate_pkgconfig(memprof "memprof - simple library for memory usage profiling")
1340+
if (TD_INSTALL_STATIC_LIBRARIES)
1341+
generate_pkgconfig(tdutils "Telegram Library - Utils")
1342+
generate_pkgconfig(tdactor "Telegram Library - Actor")
1343+
generate_pkgconfig(tdnet "Telegram Library - Net")
1344+
generate_pkgconfig(tdsqlite "Telegram Library - SQLite")
1345+
generate_pkgconfig(tddb "Telegram Library - Database")
1346+
if (MEMPROF)
1347+
# generate_pkgconfig(memprof "memprof - simple library for memory usage profiling")
1348+
endif()
1349+
generate_pkgconfig(tdmtproto "Telegram Library - MTProto implementation")
1350+
generate_pkgconfig(tdcore "Telegram Library - Core")
1351+
generate_pkgconfig(tdclient "Telegram Library - C++ Interface")
1352+
if (TD_ENABLE_DOTNET)
1353+
# generate_pkgconfig(tddotnet "Telegram Library - C# Interface")
1354+
endif()
1355+
# generate_pkgconfig(tdc "Telegram Library - C interface")
1356+
generate_pkgconfig(tdapi "Telegram Library - API")
1357+
generate_pkgconfig(tdjson_private "Telegram Library - JSON interface (private)")
1358+
generate_pkgconfig(tdjson_static "Telegram Library - JSON interface (static)")
13411359
endif()
1342-
generate_pkgconfig(tdmtproto "Telegram Library - MTProto implementation")
1343-
generate_pkgconfig(tdcore "Telegram Library - Core")
1344-
generate_pkgconfig(tdclient "Telegram Library - C++ Interface")
1345-
if (TD_ENABLE_DOTNET)
1346-
# generate_pkgconfig(tddotnet "Telegram Library - C# Interface")
1360+
if (TD_INSTALL_SHARED_LIBRARIES)
1361+
generate_pkgconfig(tdjson "Telegram Library - JSON interface (shared)")
13471362
endif()
1348-
# generate_pkgconfig(tdc "Telegram Library - C interface")
1349-
generate_pkgconfig(tdapi "Telegram Library - API")
1350-
generate_pkgconfig(tdjson_private "Telegram Library - JSON interface (private)")
1351-
generate_pkgconfig(tdjson "Telegram Library - JSON interface (shared)")
1352-
generate_pkgconfig(tdjson_static "Telegram Library - JSON interface (static)")
13531363

1354-
if (NOT TD_ENABLE_FILTERED_INSTALL OR BUILD_SHARED_LIBS)
1364+
if (TD_INSTALL_SHARED_LIBRARIES)
13551365
install(EXPORT TdTargets
13561366
FILE TdTargets.cmake
13571367
NAMESPACE Td::
13581368
DESTINATION "${CMAKE_INSTALL_LIBDIR}/cmake/Td"
13591369
)
13601370
endif()
13611371

1362-
if (NOT TD_ENABLE_FILTERED_INSTALL OR NOT BUILD_SHARED_LIBS)
1372+
if (TD_INSTALL_STATIC_LIBRARIES)
13631373
install(EXPORT TdStaticTargets
13641374
FILE TdStaticTargets.cmake
13651375
NAMESPACE Td::
13661376
DESTINATION "${CMAKE_INSTALL_LIBDIR}/cmake/Td"
13671377
)
13681378
endif()
13691379

1370-
# Install tdjson/tdjson_static:
1371-
install(FILES ${TD_JSON_HEADERS} "${CMAKE_CURRENT_BINARY_DIR}/td/telegram/tdjson_export.h" DESTINATION "${CMAKE_INSTALL_INCLUDEDIR}/td/telegram")
1372-
# Install tdclient:
1373-
install(FILES td/telegram/Client.h td/telegram/Log.h DESTINATION "${CMAKE_INSTALL_INCLUDEDIR}/td/telegram")
1374-
# Install tdapi:
1375-
install(FILES td/tl/TlObject.h DESTINATION "${CMAKE_INSTALL_INCLUDEDIR}/td/tl")
1376-
install(FILES "${TL_TD_AUTO_INCLUDE_DIR}/td/telegram/td_api.h" "${TL_TD_AUTO_INCLUDE_DIR}/td/telegram/td_api.hpp" DESTINATION "${CMAKE_INSTALL_INCLUDEDIR}/td/telegram")
1380+
if (TD_INSTALL_SHARED_LIBRARIES OR TD_INSTALL_STATIC_LIBRARIES)
1381+
# Install tdjson/tdjson_static:
1382+
install(FILES ${TD_JSON_HEADERS} "${CMAKE_CURRENT_BINARY_DIR}/td/telegram/tdjson_export.h" DESTINATION "${CMAKE_INSTALL_INCLUDEDIR}/td/telegram")
1383+
endif()
1384+
if (TD_INSTALL_STATIC_LIBRARIES)
1385+
# Install tdclient:
1386+
install(FILES td/telegram/Client.h td/telegram/Log.h DESTINATION "${CMAKE_INSTALL_INCLUDEDIR}/td/telegram")
1387+
# Install tdapi:
1388+
install(FILES td/tl/TlObject.h DESTINATION "${CMAKE_INSTALL_INCLUDEDIR}/td/tl")
1389+
install(FILES "${TL_TD_AUTO_INCLUDE_DIR}/td/telegram/td_api.h" "${TL_TD_AUTO_INCLUDE_DIR}/td/telegram/td_api.hpp" DESTINATION "${CMAKE_INSTALL_INCLUDEDIR}/td/telegram")
1390+
endif()
13771391
if (TD_ENABLE_JNI)
13781392
install(FILES td/tl/tl_jni_object.h DESTINATION "${CMAKE_INSTALL_INCLUDEDIR}/td/tl")
13791393
endif()

‎sqlite/CMakeLists.txt‎

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,8 @@ if ((CMAKE_MAJOR_VERSION LESS 3) OR (CMAKE_VERSION VERSION_LESS "3.0.2"))
22
message(FATAL_ERROR "CMake >= 3.0.2 is required")
33
endif()
44

5+
option(TDSQLITE_ENABLE_INSTALL "Enable installation of the library." ON)
6+
57
if (NOT DEFINED CMAKE_INSTALL_LIBDIR)
68
set(CMAKE_INSTALL_LIBDIR "lib")
79
endif()
@@ -70,7 +72,7 @@ elseif (MSVC)
7072
target_compile_options(tdsqlite PRIVATE /wd4996)
7173
endif()
7274

73-
if (NOT TD_ENABLE_FILTERED_INSTALL OR NOT BUILD_SHARED_LIBS)
75+
if (TDSQLITE_ENABLE_INSTALL)
7476
install(TARGETS tdsqlite EXPORT TdStaticTargets
7577
LIBRARY DESTINATION "${CMAKE_INSTALL_LIBDIR}"
7678
ARCHIVE DESTINATION "${CMAKE_INSTALL_LIBDIR}"

‎tdactor/CMakeLists.txt‎

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,8 @@ if ((CMAKE_MAJOR_VERSION LESS 3) OR (CMAKE_VERSION VERSION_LESS "3.0.2"))
22
message(FATAL_ERROR "CMake >= 3.0.2 is required")
33
endif()
44

5+
option(TDACTOR_ENABLE_INSTALL "Enable installation of the library." ON)
6+
57
if (NOT DEFINED CMAKE_INSTALL_LIBDIR)
68
set(CMAKE_INSTALL_LIBDIR "lib")
79
endif()
@@ -51,7 +53,7 @@ if (NOT CMAKE_CROSSCOMPILING)
5153
target_link_libraries(example PRIVATE tdactor)
5254
endif()
5355

54-
if (NOT TD_ENABLE_FILTERED_INSTALL OR NOT BUILD_SHARED_LIBS)
56+
if (TDACTOR_ENABLE_INSTALL)
5557
install(TARGETS tdactor EXPORT TdStaticTargets
5658
LIBRARY DESTINATION "${CMAKE_INSTALL_LIBDIR}"
5759
ARCHIVE DESTINATION "${CMAKE_INSTALL_LIBDIR}"

‎tddb/CMakeLists.txt‎

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,8 @@ if ((CMAKE_MAJOR_VERSION LESS 3) OR (CMAKE_VERSION VERSION_LESS "3.0.2"))
22
message(FATAL_ERROR "CMake >= 3.0.2 is required")
33
endif()
44

5+
option(TDDB_ENABLE_INSTALL "Enable installation of the library." ON)
6+
57
if (NOT DEFINED CMAKE_INSTALL_LIBDIR)
68
set(CMAKE_INSTALL_LIBDIR "lib")
79
endif()
@@ -55,7 +57,7 @@ if (NOT CMAKE_CROSSCOMPILING)
5557
target_link_libraries(binlog_dump PRIVATE tddb)
5658
endif()
5759

58-
if (NOT TD_ENABLE_FILTERED_INSTALL OR NOT BUILD_SHARED_LIBS)
60+
if (TDDB_ENABLE_INSTALL)
5961
install(TARGETS tddb EXPORT TdStaticTargets
6062
LIBRARY DESTINATION "${CMAKE_INSTALL_LIBDIR}"
6163
ARCHIVE DESTINATION "${CMAKE_INSTALL_LIBDIR}"

‎tdnet/CMakeLists.txt‎

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,8 @@ if ((CMAKE_MAJOR_VERSION LESS 3) OR (CMAKE_VERSION VERSION_LESS "3.0.2"))
22
message(FATAL_ERROR "CMake >= 3.0.2 is required")
33
endif()
44

5+
option(TDNET_ENABLE_INSTALL "Enable installation of the library." ON)
6+
57
if (NOT DEFINED CMAKE_INSTALL_LIBDIR)
68
set(CMAKE_INSTALL_LIBDIR "lib")
79
endif()
@@ -80,7 +82,7 @@ if (APPLE_WATCH)
8082
target_link_libraries(tdnet PRIVATE ${FOUNDATION_LIBRARY})
8183
endif()
8284

83-
if (NOT TD_ENABLE_FILTERED_INSTALL OR NOT BUILD_SHARED_LIBS)
85+
if (TDNET_ENABLE_INSTALL)
8486
install(TARGETS tdnet EXPORT TdStaticTargets
8587
LIBRARY DESTINATION "${CMAKE_INSTALL_LIBDIR}"
8688
ARCHIVE DESTINATION "${CMAKE_INSTALL_LIBDIR}"

‎tdutils/CMakeLists.txt‎

Lines changed: 4 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -2,8 +2,9 @@ if ((CMAKE_MAJOR_VERSION LESS 3) OR (CMAKE_VERSION VERSION_LESS "3.0.2"))
22
message(FATAL_ERROR "CMake >= 3.0.2 is required")
33
endif()
44

5-
option(TDUTILS_MIME_TYPE "Generate MIME types conversion; requires gperf" ON)
6-
option(TDUTILS_USE_EXTERNAL_DEPENDENCIES "Use external libraries if available" ON)
5+
option(TDUTILS_ENABLE_INSTALL "Enable installation of the library." ON)
6+
option(TDUTILS_MIME_TYPE "Generate MIME types conversion; requires gperf." ON)
7+
option(TDUTILS_USE_EXTERNAL_DEPENDENCIES "Use external libraries if available." ON)
78

89
if (NOT DEFINED CMAKE_INSTALL_LIBDIR)
910
set(CMAKE_INSTALL_LIBDIR "lib")
@@ -409,7 +410,7 @@ if (ATOMICS_LIBRARIES)
409410
target_link_libraries(tdutils PUBLIC "${ATOMICS_LIBRARIES}")
410411
endif()
411412

412-
if (NOT TD_ENABLE_FILTERED_INSTALL OR NOT BUILD_SHARED_LIBS)
413+
if (TDUTILS_ENABLE_INSTALL)
413414
install(TARGETS tdutils EXPORT TdStaticTargets
414415
LIBRARY DESTINATION "${CMAKE_INSTALL_LIBDIR}"
415416
ARCHIVE DESTINATION "${CMAKE_INSTALL_LIBDIR}"

0 commit comments

Comments
 (0)