aboutsummaryrefslogtreecommitdiffstats
path: root/src/libs/3rdparty/qtkeychain/CMakeLists.txt.upstream
diff options
context:
space:
mode:
Diffstat (limited to 'src/libs/3rdparty/qtkeychain/CMakeLists.txt.upstream')
-rw-r--r--src/libs/3rdparty/qtkeychain/CMakeLists.txt.upstream198
1 files changed, 198 insertions, 0 deletions
diff --git a/src/libs/3rdparty/qtkeychain/CMakeLists.txt.upstream b/src/libs/3rdparty/qtkeychain/CMakeLists.txt.upstream
new file mode 100644
index 0000000000..3b4e30d129
--- /dev/null
+++ b/src/libs/3rdparty/qtkeychain/CMakeLists.txt.upstream
@@ -0,0 +1,198 @@
+set(QTKEYCHAIN_VERSION 0.14.99)
+set(QTKEYCHAIN_SOVERSION 1)
+
+project(qtkeychain VERSION ${QTKEYCHAIN_VERSION} LANGUAGES CXX)
+
+include(FindPkgConfig)
+
+###
+
+set(CMAKE_MODULE_PATH "${CMAKE_MODULE_PATH}" "${PROJECT_SOURCE_DIR}/cmake/Modules")
+include(GNUInstallDirs)
+include(GenerateExportHeader)
+include(CMakePackageConfigHelpers)
+include(ECMSetupVersion)
+include(CMakeDependentOption)
+
+option(BUILD_TRANSLATIONS "Build translations" ON)
+option(BUILD_SHARED_LIBS "Build dynamic library" OFF)
+
+CMAKE_DEPENDENT_OPTION(BUILD_TRANSLATIONS_AS_RESOURCES "Bundle translations with the library" OFF
+ "BUILD_TRANSLATIONS" OFF)
+
+if (WIN32)
+ option(USE_CREDENTIAL_STORE "Build with windows CredentialStore support" ON)
+
+ if (USE_CREDENTIAL_STORE)
+ add_definitions(-DUSE_CREDENTIAL_STORE=1)
+ endif()
+endif()
+
+
+find_package(Qt6 COMPONENTS Core REQUIRED)
+
+if(UNIX AND NOT APPLE)
+ find_package(Qt6 COMPONENTS DBus REQUIRED)
+ include_directories(${Qt6DBus_INCLUDE_DIRS})
+ set(QTDBUS_LIBRARIES ${Qt6DBus_LIBRARIES})
+endif()
+
+if(BUILD_TRANSLATIONS)
+ find_package(Qt6 COMPONENTS LinguistTools REQUIRED)
+endif()
+
+set(QTCORE_LIBRARIES ${Qt6Core_LIBRARIES})
+
+include_directories(${CMAKE_CURRENT_BINARY_DIR})
+
+list(APPEND qtkeychain_LIBRARIES ${QTCORE_LIBRARIES})
+set(qtkeychain_SOURCES
+ keychain.cpp
+ qkeychain_export.h
+ keychain.h
+)
+
+if(CMAKE_CXX_COMPILER_ID MATCHES "MSVC")
+ # CMake < 3.15 sneaks in /W# flags for us, so we need a replacement,
+ # or we'll get a warning (cf. CMP0092)
+ if (CMAKE_CXX_FLAGS MATCHES "/W[0-4]")
+ string(REGEX REPLACE "/W[0-4]" "/W4" CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS}")
+ else()
+ set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} /W4")
+ endif()
+else()
+ # MSVC's STL / Qt headers are not MSVC -Wall clean, so don't enable it there
+ add_definitions( -Wall -Werror=return-type )
+endif()
+
+if(WIN32)
+ list(APPEND qtkeychain_SOURCES keychain_win.cpp)
+ if (NOT USE_CREDENTIAL_STORE)
+ list(APPEND qtkeychain_LIBRARIES crypt32)
+ list(APPEND qtkeychain_SOURCES plaintextstore.cpp)
+ endif()
+ #FIXME: mingw bug; otherwise getting undefined refs to RtlSecureZeroMemory there
+ if(MINGW)
+ add_definitions( -O2 )
+ endif()
+endif()
+
+if(APPLE)
+ list(APPEND qtkeychain_SOURCES keychain_apple.mm)
+ list(APPEND qtkeychain_LIBRARIES "-framework Foundation" "-framework Security")
+endif()
+
+if(UNIX AND NOT APPLE)
+ option(LIBSECRET_SUPPORT "Build with libsecret support if available" ON)
+ find_package(PkgConfig REQUIRED)
+ pkg_check_modules(LIBSECRET libsecret-1)
+
+ if(LIBSECRET_SUPPORT AND LIBSECRET_FOUND)
+ add_definitions(-DHAVE_LIBSECRET=1)
+ INCLUDE_DIRECTORIES(${LIBSECRET_INCLUDE_DIRS})
+ LINK_DIRECTORIES(${LIBSECRET_LIBRARY_DIRS})
+ list(APPEND qtkeychain_LIBRARIES_PRIVATE ${LIBSECRET_LIBRARIES})
+ endif()
+
+ add_definitions(-DKEYCHAIN_DBUS=1)
+ list(APPEND qtkeychain_SOURCES keychain_unix.cpp gnomekeyring.cpp libsecret.cpp plaintextstore.cpp)
+ qt6_add_dbus_interface(qtkeychain_SOURCES ${CMAKE_CURRENT_SOURCE_DIR}/org.kde.KWallet.xml kwallet_interface KWalletInterface)
+ list(APPEND qtkeychain_LIBRARIES ${QTDBUS_LIBRARIES} )
+endif()
+
+qt6_wrap_cpp(qtkeychain_MOC_OUTFILES keychain.h keychain_p.h gnomekeyring_p.h)
+
+set(qtkeychain_TR_FILES
+ translations/qtkeychain_de.ts
+ translations/qtkeychain_fr.ts
+ translations/qtkeychain_ro.ts
+ translations/qtkeychain_ru.ts
+ translations/qtkeychain_zh.ts
+)
+
+set(QTKEYCHAIN_TARGET_NAME qtkeychain)
+add_library(${QTKEYCHAIN_TARGET_NAME} ${qtkeychain_SOURCES} ${qtkeychain_MOC_OUTFILES} ${qtkeychain_QM_FILES})
+if(WIN32)
+ set_target_properties( ${QTKEYCHAIN_TARGET_NAME} PROPERTIES DEBUG_POSTFIX "d" )
+endif()
+
+file(GLOB qtkeychain_TR_SOURCES *.cpp *.h *.ui)
+if ( BUILD_TRANSLATIONS )
+ qt6_create_translation(qtkeychain_MESSAGES ${qtkeychain_TR_SOURCES} ${qtkeychain_TR_FILES})
+ qt6_add_translation(qtkeychain_QM_FILES ${qtkeychain_TR_FILES})
+ add_custom_target(messages DEPENDS ${qtkeychain_MESSAGES})
+ add_custom_target(translations DEPENDS ${qtkeychain_QM_FILES} messages)
+ # https://github.com/frankosterfeld/qtkeychain/issues/185
+ add_dependencies(${QTKEYCHAIN_TARGET_NAME} translations)
+
+ if (BUILD_TRANSLATIONS_AS_RESOURCES)
+ set(QM_FILE_LIST "")
+ foreach(FILE ${qtkeychain_QM_FILES})
+ list(APPEND QM_FILE_LIST "<file>${FILE}</file>")
+ endforeach()
+ string(REPLACE ";" "" QM_FILE_LIST ${QM_FILE_LIST})
+ configure_file(${CMAKE_CURRENT_SOURCE_DIR}/translations/translations.qrc.in ${CMAKE_CURRENT_BINARY_DIR}/translations.qrc)
+ target_sources(${QTKEYCHAIN_TARGET_NAME} PRIVATE ${CMAKE_CURRENT_BINARY_DIR}/translations.qrc)
+ else()
+ set(QTKEYCHAIN_TRANSLATIONS_DIR
+ ${CMAKE_INSTALL_DATADIR}/qtkeychain/translations
+ CACHE PATH "The location of the QtKeychain translations" )
+ install(FILES ${qtkeychain_QM_FILES} DESTINATION ${QTKEYCHAIN_TRANSLATIONS_DIR})
+ endif()
+endif( BUILD_TRANSLATIONS )
+
+target_link_libraries(${QTKEYCHAIN_TARGET_NAME} PUBLIC ${qtkeychain_LIBRARIES} PRIVATE ${qtkeychain_LIBRARIES_PRIVATE})
+if(NOT INTERFACE_INCLUDE_SUFFIX)
+ set(INTERFACE_INCLUDE_SUFFIX include)
+endif()
+target_include_directories(${QTKEYCHAIN_TARGET_NAME} PUBLIC $<INSTALL_INTERFACE:${INTERFACE_INCLUDE_SUFFIX}/>)
+
+generate_export_header(${QTKEYCHAIN_TARGET_NAME}
+ EXPORT_FILE_NAME qkeychain_export.h
+ EXPORT_MACRO_NAME QKEYCHAIN_EXPORT
+)
+
+set_target_properties(${QTKEYCHAIN_TARGET_NAME} PROPERTIES
+ VERSION ${QTKEYCHAIN_VERSION}
+ SOVERSION ${QTKEYCHAIN_SOVERSION}
+ INSTALL_RPATH_USE_LINK_PATH TRUE
+)
+
+if (NOT APPLE)
+ set_target_properties(${QTKEYCHAIN_TARGET_NAME} PROPERTIES
+ INSTALL_NAME_DIR "${CMAKE_INSTALL_PREFIX}/${CMAKE_INSTALL_LIBDIR}"
+ )
+endif()
+
+install(FILES keychain.h ${CMAKE_CURRENT_BINARY_DIR}/qkeychain_export.h
+ DESTINATION ${CMAKE_INSTALL_INCLUDEDIR}/qtkeychain/
+)
+
+install(TARGETS ${QTKEYCHAIN_TARGET_NAME}
+ EXPORT QtKeychainLibraryDepends
+ RUNTIME DESTINATION ${CMAKE_INSTALL_BINDIR}
+ LIBRARY DESTINATION ${CMAKE_INSTALL_LIBDIR}
+ ARCHIVE DESTINATION ${CMAKE_INSTALL_LIBDIR}
+)
+
+###
+### CMake config file
+###
+
+configure_package_config_file("${CMAKE_CURRENT_SOURCE_DIR}/QtKeychainConfig.cmake.in"
+ "${CMAKE_CURRENT_BINARY_DIR}/QtKeychainConfig.cmake"
+ INSTALL_DESTINATION QtKeychain)
+
+ecm_setup_version("${QTKEYCHAIN_VERSION}" VARIABLE_PREFIX SNORE
+ PACKAGE_VERSION_FILE "${CMAKE_CURRENT_BINARY_DIR}/QtKeychainConfigVersion.cmake"
+ SOVERSION ${QTKEYCHAIN_VERSION})
+
+install(EXPORT QtKeychainLibraryDepends
+ DESTINATION "${CMAKE_INSTALL_LIBDIR}/cmake/QtKeychain"
+)
+
+install(FILES ${CMAKE_CURRENT_BINARY_DIR}/QtKeychainConfig.cmake
+ ${CMAKE_CURRENT_BINARY_DIR}/QtKeychainConfigVersion.cmake
+ DESTINATION ${CMAKE_INSTALL_LIBDIR}/cmake/QtKeychain
+)
+