From d5153dfd9255f31f5114c7a810a3b1354e36baf8 Mon Sep 17 00:00:00 2001 From: Ilya Fedin Date: Wed, 1 Apr 2020 03:33:12 +0400 Subject: [PATCH] Adapt DESKTOP_APP_USE_PACKAGED for macOS and proper usage of pkg-config --- external/dbusmenu_qt/CMakeLists.txt | 3 ++- external/ffmpeg/CMakeLists.txt | 29 +++++++++++------------------ external/hunspell/CMakeLists.txt | 5 ++--- external/iconv/CMakeLists.txt | 5 ++++- external/lz4/CMakeLists.txt | 5 ++--- external/minizip/CMakeLists.txt | 5 ++--- external/openssl/CMakeLists.txt | 6 +++++- external/opus/CMakeLists.txt | 12 +++++------- external/qt/CMakeLists.txt | 6 ++++-- external/rlottie/CMakeLists.txt | 5 ++--- init_target.cmake | 8 ++++++-- options_mac.cmake | 10 ++++++---- 12 files changed, 51 insertions(+), 48 deletions(-) diff --git a/external/dbusmenu_qt/CMakeLists.txt b/external/dbusmenu_qt/CMakeLists.txt index 4ed273f..05a7556 100644 --- a/external/dbusmenu_qt/CMakeLists.txt +++ b/external/dbusmenu_qt/CMakeLists.txt @@ -51,7 +51,8 @@ else() target_include_directories(external_dbusmenu_qt PUBLIC ${dbusmenu_qt_loc} - "${CMAKE_CURRENT_BINARY_DIR}") + "${CMAKE_CURRENT_BINARY_DIR}" + ) target_link_libraries(external_dbusmenu_qt PUBLIC diff --git a/external/ffmpeg/CMakeLists.txt b/external/ffmpeg/CMakeLists.txt index f2e617a..b54bcbe 100644 --- a/external/ffmpeg/CMakeLists.txt +++ b/external/ffmpeg/CMakeLists.txt @@ -10,27 +10,20 @@ add_library(desktop-app::external_ffmpeg ALIAS external_ffmpeg) if (DESKTOP_APP_USE_PACKAGED) find_package(PkgConfig REQUIRED) - pkg_check_modules(AVCODEC REQUIRED libavcodec) - pkg_check_modules(AVFORMAT REQUIRED libavformat) - pkg_check_modules(AVUTIL REQUIRED libavutil) - pkg_check_modules(SWSCALE REQUIRED libswscale) - pkg_check_modules(SWRESAMPLE REQUIRED libswresample) - - target_include_directories(external_ffmpeg - INTERFACE - ${AVCODEC_INCLUDE_DIRS} - ${AVFORMAT_INCLUDE_DIRS} - ${AVUTIL_INCLUDE_DIRS} - ${SWSCALE_INCLUDE_DIRS} - ${SWRESAMPLE_INCLUDE_DIRS}) + pkg_check_modules(AVCODEC REQUIRED IMPORTED_TARGET libavcodec) + pkg_check_modules(AVFORMAT REQUIRED IMPORTED_TARGET libavformat) + pkg_check_modules(AVUTIL REQUIRED IMPORTED_TARGET libavutil) + pkg_check_modules(SWSCALE REQUIRED IMPORTED_TARGET libswscale) + pkg_check_modules(SWRESAMPLE REQUIRED IMPORTED_TARGET libswresample) target_link_libraries(external_ffmpeg INTERFACE - ${AVCODEC_LIBRARIES} - ${AVFORMAT_LIBRARIES} - ${AVUTIL_LIBRARIES} - ${SWSCALE_LIBRARIES} - ${SWRESAMPLE_LIBRARIES}) + PkgConfig::AVCODEC + PkgConfig::AVFORMAT + PkgConfig::AVUTIL + PkgConfig::SWSCALE + PkgConfig::SWRESAMPLE + ) else() target_include_directories(external_ffmpeg SYSTEM INTERFACE diff --git a/external/hunspell/CMakeLists.txt b/external/hunspell/CMakeLists.txt index 614bf75..409dd75 100644 --- a/external/hunspell/CMakeLists.txt +++ b/external/hunspell/CMakeLists.txt @@ -9,10 +9,9 @@ if (DESKTOP_APP_USE_PACKAGED) add_library(desktop-app::external_hunspell ALIAS external_hunspell) find_package(PkgConfig REQUIRED) - pkg_check_modules(HUNSPELL REQUIRED hunspell) + pkg_check_modules(HUNSPELL REQUIRED IMPORTED_TARGET hunspell) - target_include_directories(external_hunspell INTERFACE ${HUNSPELL_INCLUDE_DIRS}) - target_link_libraries(external_hunspell INTERFACE ${HUNSPELL_LIBRARIES}) + target_link_libraries(external_hunspell INTERFACE PkgConfig::HUNSPELL) else() add_library(external_hunspell OBJECT) add_library(desktop-app::external_hunspell ALIAS external_hunspell) diff --git a/external/iconv/CMakeLists.txt b/external/iconv/CMakeLists.txt index 5db2c1f..b0a5fa6 100644 --- a/external/iconv/CMakeLists.txt +++ b/external/iconv/CMakeLists.txt @@ -7,7 +7,10 @@ add_library(external_iconv INTERFACE IMPORTED GLOBAL) add_library(desktop-app::external_iconv ALIAS external_iconv) -if (APPLE AND NOT build_osx) +if (APPLE AND DESKTOP_APP_USE_PACKAGED) + find_package(Iconv REQUIRED) + target_link_libraries(external_iconv INTERFACE Iconv::Iconv) +elseif (APPLE AND NOT build_osx) target_link_libraries(external_iconv INTERFACE /usr/local/macos/lib/libiconv.a diff --git a/external/lz4/CMakeLists.txt b/external/lz4/CMakeLists.txt index 9faeec8..f6ec95e 100644 --- a/external/lz4/CMakeLists.txt +++ b/external/lz4/CMakeLists.txt @@ -9,10 +9,9 @@ if (DESKTOP_APP_USE_PACKAGED) add_library(desktop-app::external_lz4 ALIAS external_lz4) find_package(PkgConfig REQUIRED) - pkg_check_modules(LZ4 liblz4) + pkg_check_modules(LZ4 IMPORTED_TARGET liblz4) - target_include_directories(external_lz4 INTERFACE ${LZ4_INCLUDE_DIRS}) - target_link_libraries(external_lz4 INTERFACE ${LZ4_LIBRARIES}) + target_link_libraries(external_lz4 INTERFACE PkgConfig::LZ4) else() add_library(external_lz4 OBJECT) add_library(desktop-app::external_lz4 ALIAS external_lz4) diff --git a/external/minizip/CMakeLists.txt b/external/minizip/CMakeLists.txt index 789b5de..6cdb121 100644 --- a/external/minizip/CMakeLists.txt +++ b/external/minizip/CMakeLists.txt @@ -9,10 +9,9 @@ add_library(desktop-app::external_minizip ALIAS external_minizip) if (DESKTOP_APP_USE_PACKAGED) find_package(PkgConfig REQUIRED) - pkg_check_modules(MINIZIP REQUIRED minizip) + pkg_check_modules(MINIZIP REQUIRED IMPORTED_TARGET minizip) - target_include_directories(external_minizip INTERFACE ${MINIZIP_INCLUDE_DIRS}) - target_link_libraries(external_minizip INTERFACE ${MINIZIP_LIBRARIES}) + target_link_libraries(external_minizip INTERFACE PkgConfig::MINIZIP) elseif (NOT WIN32) add_library(external_minizip_bundled STATIC) init_target(external_minizip_bundled "(external)") diff --git a/external/openssl/CMakeLists.txt b/external/openssl/CMakeLists.txt index 301e9ec..5d61c9e 100644 --- a/external/openssl/CMakeLists.txt +++ b/external/openssl/CMakeLists.txt @@ -9,7 +9,11 @@ add_library(desktop-app::external_openssl ALIAS external_openssl) if (DESKTOP_APP_USE_PACKAGED) find_package(OpenSSL REQUIRED) - target_link_libraries(external_openssl INTERFACE OpenSSL::SSL) + target_link_libraries(external_openssl + INTERFACE + OpenSSL::SSL + OpenSSL::Crypto + ) else() if (LINUX) target_include_directories(external_openssl SYSTEM diff --git a/external/opus/CMakeLists.txt b/external/opus/CMakeLists.txt index f05e8c0..1774688 100644 --- a/external/opus/CMakeLists.txt +++ b/external/opus/CMakeLists.txt @@ -7,12 +7,7 @@ add_library(external_opus INTERFACE IMPORTED GLOBAL) add_library(desktop-app::external_opus ALIAS external_opus) -if (DESKTOP_APP_USE_PACKAGED) - find_package(PkgConfig REQUIRED) - pkg_check_modules(OPUS opus) - - target_include_directories(external_opus INTERFACE ${OPUS_INCLUDE_DIRS}) -else() +if (NOT DESKTOP_APP_USE_PACKAGED) target_include_directories(external_opus SYSTEM INTERFACE ${libs_loc}/opus/include @@ -20,7 +15,10 @@ else() endif() if (DESKTOP_APP_USE_PACKAGED) - target_link_libraries(external_opus INTERFACE ${OPUS_LIBRARIES}) + find_package(PkgConfig REQUIRED) + pkg_check_modules(OPUS IMPORTED_TARGET opus) + + target_link_libraries(external_opus INTERFACE PkgConfig::OPUS) elseif (WIN32) set(opus_lib_loc ${libs_loc}/opus/win32/VS2015/Win32/$,Debug,Release>) diff --git a/external/qt/CMakeLists.txt b/external/qt/CMakeLists.txt index fbe7991..67b9059 100644 --- a/external/qt/CMakeLists.txt +++ b/external/qt/CMakeLists.txt @@ -21,7 +21,8 @@ if (DESKTOP_APP_USE_PACKAGED) Qt5::Core Qt5::Gui Qt5::Widgets - Qt5::Network) + Qt5::Network + ) if (Qt5DBus_FOUND) target_link_libraries(external_qt INTERFACE Qt5::DBus) @@ -30,7 +31,8 @@ if (DESKTOP_APP_USE_PACKAGED) target_include_directories(external_qt INTERFACE ${Qt5Core_PRIVATE_INCLUDE_DIRS} - ${Qt5Gui_PRIVATE_INCLUDE_DIRS}) + ${Qt5Gui_PRIVATE_INCLUDE_DIRS} + ) else() target_include_directories(external_qt SYSTEM INTERFACE diff --git a/external/rlottie/CMakeLists.txt b/external/rlottie/CMakeLists.txt index f56bf26..1cbe499 100644 --- a/external/rlottie/CMakeLists.txt +++ b/external/rlottie/CMakeLists.txt @@ -9,9 +9,8 @@ if (DESKTOP_APP_USE_PACKAGED_RLOTTIE) add_library(desktop-app::external_rlottie ALIAS external_rlottie) find_package(PkgConfig REQUIRED) - pkg_check_modules(RLOTTIE REQUIRED rlottie) - target_include_directories(external_rlottie INTERFACE ${RLOTTIE_INCLUDE_DIRS}) - target_link_libraries(external_rlottie INTERFACE ${RLOTTIE_LIBRARIES}) + pkg_check_modules(RLOTTIE REQUIRED IMPORTED_TARGET rlottie) + target_link_libraries(external_rlottie INTERFACE PkgConfig::RLOTTIE) else() add_library(external_rlottie OBJECT) add_library(desktop-app::external_rlottie ALIAS external_rlottie) diff --git a/init_target.cmake b/init_target.cmake index bce754d..10e2821 100644 --- a/init_target.cmake +++ b/init_target.cmake @@ -38,9 +38,13 @@ function(init_target target_name) # init_target(my_target folder_name) XCODE_ATTRIBUTE_CLANG_ENABLE_OBJC_WEAK YES XCODE_ATTRIBUTE_GCC_INLINES_ARE_PRIVATE_EXTERN YES XCODE_ATTRIBUTE_GCC_SYMBOLS_PRIVATE_EXTERN YES - XCODE_ATTRIBUTE_GCC_OPTIMIZATION_LEVEL $,0,fast> - XCODE_ATTRIBUTE_LLVM_LTO $,NO,YES> ) + if (NOT DESKTOP_APP_USE_PACKAGED) + set_target_properties(${target_name} PROPERTIES + XCODE_ATTRIBUTE_GCC_OPTIMIZATION_LEVEL $,0,fast> + XCODE_ATTRIBUTE_LLVM_LTO $,NO,YES> + ) + endif() if (WIN32 OR DESKTOP_APP_ENABLE_IPO_OPTIMIZATIONS) set_target_properties(${target_name} PROPERTIES INTERPROCEDURAL_OPTIMIZATION_RELEASE True diff --git a/options_mac.cmake b/options_mac.cmake index 6be7263..6829572 100644 --- a/options_mac.cmake +++ b/options_mac.cmake @@ -14,10 +14,12 @@ else() MAC_USE_BREAKPAD ) endif() - target_include_directories(common_options - INTERFACE - /usr/local/macos/include - ) + if (NOT DESKTOP_APP_USE_PACKAGED) + target_include_directories(common_options + INTERFACE + /usr/local/macos/include + ) + endif() endif() target_compile_options(common_options