From e0e4d943e24eec5cb519b281f333c3961612445f Mon Sep 17 00:00:00 2001 From: Ilya Fedin Date: Sat, 2 May 2020 05:48:58 +0400 Subject: [PATCH] Add new option to simplify creation of self-contained packages (snap/flatpak/appimage) --- external/dbusmenu_qt/CMakeLists.txt | 2 +- external/expected/CMakeLists.txt | 2 +- external/gsl/CMakeLists.txt | 2 +- external/hunspell/CMakeLists.txt | 2 +- external/lz4/CMakeLists.txt | 2 +- external/minizip/CMakeLists.txt | 2 +- external/qr_code_generator/CMakeLists.txt | 2 +- external/ranges/CMakeLists.txt | 4 ++-- external/rlottie/CMakeLists.txt | 2 +- external/variant/CMakeLists.txt | 2 +- external/xxhash/CMakeLists.txt | 2 +- options.cmake | 7 +++++++ variables.cmake | 1 + 13 files changed, 20 insertions(+), 12 deletions(-) diff --git a/external/dbusmenu_qt/CMakeLists.txt b/external/dbusmenu_qt/CMakeLists.txt index 05a7556..9bcf37a 100644 --- a/external/dbusmenu_qt/CMakeLists.txt +++ b/external/dbusmenu_qt/CMakeLists.txt @@ -4,7 +4,7 @@ # For license and copyright information please follow this link: # https://github.com/desktop-app/legal/blob/master/LEGAL -if (DESKTOP_APP_USE_PACKAGED) +if (DESKTOP_APP_USE_PACKAGED AND NOT DESKTOP_APP_USE_PACKAGED_LAZY) add_library(external_dbusmenu_qt INTERFACE IMPORTED GLOBAL) add_library(desktop-app::external_dbusmenu_qt ALIAS external_dbusmenu_qt) diff --git a/external/expected/CMakeLists.txt b/external/expected/CMakeLists.txt index e44617a..e42cdf7 100644 --- a/external/expected/CMakeLists.txt +++ b/external/expected/CMakeLists.txt @@ -7,7 +7,7 @@ add_library(external_expected INTERFACE IMPORTED GLOBAL) add_library(desktop-app::external_expected ALIAS external_expected) -if (DESKTOP_APP_USE_PACKAGED_EXPECTED) +if (DESKTOP_APP_USE_PACKAGED_EXPECTED AND NOT DESKTOP_APP_USE_PACKAGED_LAZY) find_package(tl-expected CONFIG REQUIRED) target_link_libraries(external_expected INTERFACE tl::expected) else() diff --git a/external/gsl/CMakeLists.txt b/external/gsl/CMakeLists.txt index 4fa933f..312447c 100644 --- a/external/gsl/CMakeLists.txt +++ b/external/gsl/CMakeLists.txt @@ -7,7 +7,7 @@ add_library(external_gsl INTERFACE IMPORTED GLOBAL) add_library(desktop-app::external_gsl ALIAS external_gsl) -if (DESKTOP_APP_USE_PACKAGED_GSL) +if (DESKTOP_APP_USE_PACKAGED_GSL AND NOT DESKTOP_APP_USE_PACKAGED_LAZY) find_package(Microsoft.GSL CONFIG REQUIRED) target_link_libraries(external_gsl INTERFACE Microsoft.GSL::GSL) else() diff --git a/external/hunspell/CMakeLists.txt b/external/hunspell/CMakeLists.txt index 409dd75..70dc2ba 100644 --- a/external/hunspell/CMakeLists.txt +++ b/external/hunspell/CMakeLists.txt @@ -4,7 +4,7 @@ # For license and copyright information please follow this link: # https://github.com/desktop-app/legal/blob/master/LEGAL -if (DESKTOP_APP_USE_PACKAGED) +if (DESKTOP_APP_USE_PACKAGED AND NOT DESKTOP_APP_USE_PACKAGED_LAZY) add_library(external_hunspell INTERFACE IMPORTED GLOBAL) add_library(desktop-app::external_hunspell ALIAS external_hunspell) diff --git a/external/lz4/CMakeLists.txt b/external/lz4/CMakeLists.txt index f6ec95e..1f203c7 100644 --- a/external/lz4/CMakeLists.txt +++ b/external/lz4/CMakeLists.txt @@ -4,7 +4,7 @@ # For license and copyright information please follow this link: # https://github.com/desktop-app/legal/blob/master/LEGAL -if (DESKTOP_APP_USE_PACKAGED) +if (DESKTOP_APP_USE_PACKAGED AND NOT DESKTOP_APP_USE_PACKAGED_LAZY) add_library(external_lz4 INTERFACE IMPORTED GLOBAL) add_library(desktop-app::external_lz4 ALIAS external_lz4) diff --git a/external/minizip/CMakeLists.txt b/external/minizip/CMakeLists.txt index 6cdb121..9e4ae33 100644 --- a/external/minizip/CMakeLists.txt +++ b/external/minizip/CMakeLists.txt @@ -7,7 +7,7 @@ add_library(external_minizip INTERFACE IMPORTED GLOBAL) add_library(desktop-app::external_minizip ALIAS external_minizip) -if (DESKTOP_APP_USE_PACKAGED) +if (DESKTOP_APP_USE_PACKAGED AND NOT DESKTOP_APP_USE_PACKAGED_LAZY) find_package(PkgConfig REQUIRED) pkg_check_modules(MINIZIP REQUIRED IMPORTED_TARGET minizip) diff --git a/external/qr_code_generator/CMakeLists.txt b/external/qr_code_generator/CMakeLists.txt index fdb3a76..44a9189 100644 --- a/external/qr_code_generator/CMakeLists.txt +++ b/external/qr_code_generator/CMakeLists.txt @@ -4,7 +4,7 @@ # For license and copyright information please follow this link: # https://github.com/desktop-app/legal/blob/master/LEGAL -if (DESKTOP_APP_USE_PACKAGED_QRCODE) +if (DESKTOP_APP_USE_PACKAGED_QRCODE AND NOT DESKTOP_APP_USE_PACKAGED_LAZY) add_library(external_qr_code_generator INTERFACE IMPORTED GLOBAL) add_library(desktop-app::external_qr_code_generator ALIAS external_qr_code_generator) diff --git a/external/ranges/CMakeLists.txt b/external/ranges/CMakeLists.txt index adb878c..aed02b3 100644 --- a/external/ranges/CMakeLists.txt +++ b/external/ranges/CMakeLists.txt @@ -7,13 +7,13 @@ add_library(external_ranges INTERFACE IMPORTED GLOBAL) add_library(desktop-app::external_ranges ALIAS external_ranges) -if (DESKTOP_APP_USE_PACKAGED) +if (DESKTOP_APP_USE_PACKAGED AND NOT DESKTOP_APP_USE_PACKAGED_LAZY) find_package(range-v3 REQUIRED) target_link_libraries(external_ranges INTERFACE range-v3::range-v3) else() target_include_directories(external_ranges SYSTEM INTERFACE - ${libs_loc}/range-v3/include + ${third_party_loc}/range-v3/include ) endif() diff --git a/external/rlottie/CMakeLists.txt b/external/rlottie/CMakeLists.txt index 1cbe499..e30129c 100644 --- a/external/rlottie/CMakeLists.txt +++ b/external/rlottie/CMakeLists.txt @@ -4,7 +4,7 @@ # For license and copyright information please follow this link: # https://github.com/desktop-app/legal/blob/master/LEGAL -if (DESKTOP_APP_USE_PACKAGED_RLOTTIE) +if (DESKTOP_APP_USE_PACKAGED_RLOTTIE AND NOT DESKTOP_APP_USE_PACKAGED_LAZY) add_library(external_rlottie INTERFACE IMPORTED GLOBAL) add_library(desktop-app::external_rlottie ALIAS external_rlottie) diff --git a/external/variant/CMakeLists.txt b/external/variant/CMakeLists.txt index a198f90..0d8a108 100644 --- a/external/variant/CMakeLists.txt +++ b/external/variant/CMakeLists.txt @@ -7,7 +7,7 @@ add_library(external_variant INTERFACE IMPORTED GLOBAL) add_library(desktop-app::external_variant ALIAS external_variant) -if (DESKTOP_APP_USE_PACKAGED_VARIANT) +if (DESKTOP_APP_USE_PACKAGED_VARIANT AND NOT DESKTOP_APP_USE_PACKAGED_LAZY) find_path(VARIANT_INCLUDE_DIRS mapbox/variant.hpp) if (NOT VARIANT_INCLUDE_DIRS) message(FATAL_ERROR "Packaged version of mapbox-variant library not found!") diff --git a/external/xxhash/CMakeLists.txt b/external/xxhash/CMakeLists.txt index 6441510..fbb4459 100644 --- a/external/xxhash/CMakeLists.txt +++ b/external/xxhash/CMakeLists.txt @@ -7,7 +7,7 @@ add_library(external_xxhash INTERFACE IMPORTED GLOBAL) add_library(desktop-app::external_xxhash ALIAS external_xxhash) -if (DESKTOP_APP_USE_PACKAGED) +if (DESKTOP_APP_USE_PACKAGED AND NOT DESKTOP_APP_USE_PACKAGED_LAZY) find_library(XXHASH_LIBRARY xxhash) find_path(XXHASH_INCLUDE_DIRS xxhash.h) diff --git a/options.cmake b/options.cmake index 46186c6..fd6f3af 100644 --- a/options.cmake +++ b/options.cmake @@ -26,6 +26,13 @@ if (DESKTOP_APP_USE_PACKAGED) ) endif() +if (DESKTOP_APP_USE_PACKAGED_LAZY) + target_compile_definitions(common_options + INTERFACE + DESKTOP_APP_USE_PACKAGED_LAZY + ) +endif() + if (DESKTOP_APP_USE_PACKAGED_FONTS) target_compile_definitions(common_options INTERFACE diff --git a/variables.cmake b/variables.cmake index a45a6b6..ff7b85b 100644 --- a/variables.cmake +++ b/variables.cmake @@ -23,6 +23,7 @@ option(DESKTOP_APP_LOTTIE_USE_CACHE "Use caching in lottie animations." ON) option(DESKTOP_APP_DISABLE_DBUS_INTEGRATION "Disable all code for D-Bus integration (Linux only)." OFF) option(DESKTOP_APP_USE_GLIBC_WRAPS "Use wraps for new GLIBC features." ${linux_special_target}) option(DESKTOP_APP_USE_PACKAGED "Find libraries using CMake instead of exact paths." ${no_special_target}) +option(DESKTOP_APP_USE_PACKAGED_LAZY "Find libraries that aren't in ThirdParty directory using CMake instead of exact paths." OFF) option(DESKTOP_APP_DISABLE_SPELLCHECK "Disable spellcheck library." ${osx_special_target}) option(DESKTOP_APP_DISABLE_CRASH_REPORTS "Disable crash report generation." ${DESKTOP_APP_USE_PACKAGED}) option(DESKTOP_APP_USE_PACKAGED_RLOTTIE "Find rlottie using CMake instead of bundled one." ${DESKTOP_APP_USE_PACKAGED})