Welcome to mirror list, hosted at ThFree Co, Russian Federation.

github.com/keepassxreboot/keepassxc.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
Diffstat (limited to 'src/CMakeLists.txt')
-rw-r--r--src/CMakeLists.txt159
1 files changed, 119 insertions, 40 deletions
diff --git a/src/CMakeLists.txt b/src/CMakeLists.txt
index 5255186ea..69526967c 100644
--- a/src/CMakeLists.txt
+++ b/src/CMakeLists.txt
@@ -1,5 +1,5 @@
-# Copyright (C) 2010 Felix Geyer <debfx@fobos.de>
# Copyright (C) 2017 KeePassXC Team <team@keepassxc.org>
+# Copyright (C) 2010 Felix Geyer <debfx@fobos.de>
#
# This program is free software: you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
@@ -27,15 +27,24 @@ if (NOT GIT_HEAD OR NOT GIT_DESCRIBE)
set(GIT_DESCRIBE "")
endif()
+find_library(ZXCVBN_LIBRARIES zxcvbn)
+if(NOT ZXCVBN_LIBRARIES)
+ add_library(zxcvbn STATIC zxcvbn/zxcvbn.c)
+ include_directories(${CMAKE_CURRENT_SOURCE_DIR}/zxcvbn)
+ set(ZXCVBN_LIBRARIES zxcvbn)
+endif(NOT ZXCVBN_LIBRARIES)
+
configure_file(version.h.cmake ${CMAKE_CURRENT_BINARY_DIR}/version.h @ONLY)
set(keepassx_SOURCES
core/AutoTypeAssociations.cpp
+ core/AsyncTask.h
+ core/AutoTypeMatch.cpp
core/Config.cpp
core/CsvParser.cpp
+ core/CustomData.cpp
core/Database.cpp
core/DatabaseIcons.cpp
- core/Endian.cpp
core/Entry.cpp
core/EntryAttachments.cpp
core/EntryAttributes.cpp
@@ -55,30 +64,39 @@ set(keepassx_SOURCES
core/ScreenLockListenerPrivate.cpp
core/TimeDelta.cpp
core/TimeInfo.cpp
- core/ToDbExporter.cpp
core/Tools.cpp
core/Translator.cpp
core/Uuid.cpp
core/Base32.h
core/Base32.cpp
- cli/PasswordInput.cpp
- cli/PasswordInput.h
+ cli/Utils.cpp
+ cli/Utils.h
crypto/Crypto.cpp
crypto/CryptoHash.cpp
crypto/Random.cpp
crypto/SymmetricCipher.cpp
crypto/SymmetricCipherBackend.h
crypto/SymmetricCipherGcrypt.cpp
+ crypto/kdf/Kdf.cpp
+ crypto/kdf/Kdf_p.h
+ crypto/kdf/AesKdf.cpp
+ crypto/kdf/Argon2Kdf.cpp
format/CsvExporter.cpp
format/KeePass1.h
format/KeePass1Reader.cpp
- format/KeePass2.h
+ format/KeePass2.cpp
format/KeePass2RandomStream.cpp
- format/KeePass2Reader.cpp
format/KeePass2Repair.cpp
+ format/KdbxReader.cpp
+ format/KdbxWriter.cpp
+ format/KdbxXmlReader.cpp
+ format/KeePass2Reader.cpp
format/KeePass2Writer.cpp
- format/KeePass2XmlReader.cpp
- format/KeePass2XmlWriter.cpp
+ format/Kdbx3Reader.cpp
+ format/Kdbx3Writer.cpp
+ format/Kdbx4Reader.cpp
+ format/Kdbx4Writer.cpp
+ format/KdbxXmlWriter.cpp
gui/AboutDialog.cpp
gui/Application.cpp
gui/CategoryListWidget.cpp
@@ -91,12 +109,14 @@ set(keepassx_SOURCES
gui/DatabaseTabWidget.cpp
gui/DatabaseWidget.cpp
gui/DatabaseWidgetStateSync.cpp
+ gui/DetailsWidget.cpp
gui/DialogyWidget.cpp
gui/DragTabBar.cpp
gui/EditWidget.cpp
gui/EditWidgetIcons.cpp
gui/EditWidgetProperties.cpp
gui/FileDialog.cpp
+ gui/Font.cpp
gui/IconModels.cpp
gui/KeePass1OpenWidget.cpp
gui/KMessageWidget.cpp
@@ -114,13 +134,17 @@ set(keepassx_SOURCES
gui/UnlockDatabaseWidget.cpp
gui/UnlockDatabaseDialog.cpp
gui/WelcomeWidget.cpp
+ gui/widgets/ElidedLabel.cpp
gui/csvImport/CsvImportWidget.cpp
gui/csvImport/CsvImportWizard.cpp
gui/csvImport/CsvParserModel.cpp
gui/entry/AutoTypeAssociationsModel.cpp
+ gui/entry/AutoTypeMatchModel.cpp
+ gui/entry/AutoTypeMatchView.cpp
gui/entry/EditEntryWidget.cpp
gui/entry/EditEntryWidget_p.h
gui/entry/EntryAttachmentsModel.cpp
+ gui/entry/EntryAttachmentsWidget.cpp
gui/entry/EntryAttributesModel.cpp
gui/entry/EntryHistoryModel.cpp
gui/entry/EntryModel.cpp
@@ -129,13 +153,13 @@ set(keepassx_SOURCES
gui/group/GroupModel.cpp
gui/group/GroupView.cpp
keys/CompositeKey.cpp
- keys/CompositeKey_p.h
keys/drivers/YubiKey.h
keys/FileKey.cpp
keys/Key.h
keys/PasswordKey.cpp
keys/YkChallengeResponseKey.cpp
streams/HashedBlockStream.cpp
+ streams/HmacBlockStream.cpp
streams/LayeredStream.cpp
streams/qtiocompressor.cpp
streams/StoreDataStream.cpp
@@ -147,12 +171,15 @@ if(APPLE)
set(keepassx_SOURCES ${keepassx_SOURCES}
core/ScreenLockListenerMac.h
core/ScreenLockListenerMac.cpp
+ core/MacPasteboard.h
+ core/MacPasteboard.cpp
)
endif()
-if(${CMAKE_SYSTEM_NAME} STREQUAL "Linux")
+if(${CMAKE_SYSTEM_NAME} STREQUAL "Linux" OR ${CMAKE_SYSTEM_NAME} STREQUAL "OpenBSD")
set(keepassx_SOURCES ${keepassx_SOURCES}
core/ScreenLockListenerDBus.h
core/ScreenLockListenerDBus.cpp
+ gui/MainWindowAdaptor.cpp
)
endif()
if(MINGW)
@@ -166,18 +193,33 @@ set(keepassx_SOURCES_MAINEXE
main.cpp
)
-add_feature_info(AutoType WITH_XC_AUTOTYPE "Automatic password typing")
-add_feature_info(KeePassHTTP WITH_XC_HTTP "Browser integration compatible with ChromeIPass and PassIFox")
+add_feature_info(Auto-Type WITH_XC_AUTOTYPE "Automatic password typing")
+add_feature_info(Networking WITH_XC_NETWORKING "Compile KeePassXC with network access code (e.g. for downloading website icons)")
+add_feature_info(KeePassXC-Browser WITH_XC_BROWSER "Browser integration with KeePassXC-Browser")
+add_feature_info(KeePassHTTP WITH_XC_HTTP "Browser integration compatible with ChromeIPass and PassIFox (deprecated, implies Networking)")
+add_feature_info(SSHAgent WITH_XC_SSHAGENT "SSH agent integration compatible with KeeAgent")
add_feature_info(YubiKey WITH_XC_YUBIKEY "YubiKey HMAC-SHA1 challenge-response")
add_subdirectory(http)
-if(WITH_XC_HTTP)
- set(keepasshttp_LIB keepasshttp qhttp Qt5::Network)
+if(WITH_XC_NETWORKING)
+ find_package(CURL REQUIRED)
+endif()
+
+set(BROWSER_SOURCE_DIR ${CMAKE_CURRENT_SOURCE_DIR}/browser)
+add_subdirectory(browser)
+add_subdirectory(proxy)
+if(WITH_XC_BROWSER)
+ set(keepassxcbrowser_LIB keepassxcbrowser)
endif()
add_subdirectory(autotype)
add_subdirectory(cli)
+add_subdirectory(sshagent)
+if(WITH_XC_SSHAGENT)
+ set(sshagent_LIB sshagent)
+endif()
+
set(autotype_SOURCES
core/Tools.cpp
autotype/AutoType.cpp
@@ -203,32 +245,34 @@ else()
list(APPEND keepassx_SOURCES keys/drivers/YubiKeyStub.cpp)
endif()
-add_library(zxcvbn STATIC zxcvbn/zxcvbn.cpp)
-target_link_libraries(zxcvbn)
-
add_library(autotype STATIC ${autotype_SOURCES})
target_link_libraries(autotype Qt5::Core Qt5::Widgets)
-set(autotype_LIB autotype)
-
add_library(keepassx_core STATIC ${keepassx_SOURCES})
set_target_properties(keepassx_core PROPERTIES COMPILE_DEFINITIONS KEEPASSX_BUILDING_CORE)
target_link_libraries(keepassx_core
- ${keepasshttp_LIB}
- ${autotype_LIB}
- ${YUBIKEY_LIBRARIES}
- zxcvbn
+ autotype
+ ${keepassxchttp_LIB}
+ ${keepassxcbrowser_LIB}
+ ${sshagent_LIB}
Qt5::Core
Qt5::Network
Qt5::Concurrent
Qt5::Widgets
+ ${CURL_LIBRARIES}
+ ${YUBIKEY_LIBRARIES}
+ ${ZXCVBN_LIBRARIES}
+ ${ARGON2_LIBRARIES}
${GCRYPT_LIBRARIES}
${GPGERROR_LIBRARIES}
${ZLIB_LIBRARIES})
if(APPLE)
target_link_libraries(keepassx_core "-framework Foundation")
+ if(Qt5MacExtras_FOUND)
+ target_link_libraries(keepassx_core Qt5::MacExtras)
+ endif()
endif()
if (UNIX AND NOT APPLE)
target_link_libraries(keepassx_core Qt5::DBus)
@@ -259,13 +303,7 @@ if(APPLE AND WITH_APP_BUNDLE)
set_target_properties(${PROGNAME} PROPERTIES
MACOSX_BUNDLE ON
MACOSX_BUNDLE_INFO_PLIST ${CMAKE_CURRENT_BINARY_DIR}/Info.plist)
-endif()
-
-install(TARGETS ${PROGNAME}
- BUNDLE DESTINATION . COMPONENT Runtime
- RUNTIME DESTINATION ${BIN_INSTALL_DIR} COMPONENT Runtime)
-if(APPLE AND WITH_APP_BUNDLE)
if(QT_MAC_USE_COCOA AND EXISTS "${QT_LIBRARY_DIR}/Resources/qt_menu.nib")
install(DIRECTORY "${QT_LIBRARY_DIR}/Resources/qt_menu.nib"
DESTINATION "${DATA_INSTALL_DIR}")
@@ -273,22 +311,25 @@ if(APPLE AND WITH_APP_BUNDLE)
set(CPACK_GENERATOR "DragNDrop")
set(CPACK_DMG_FORMAT "UDBZ")
+ set(CPACK_DMG_DS_STORE "${CMAKE_SOURCE_DIR}/share/macosx/DS_Store.in")
+ set(CPACK_DMG_BACKGROUND_IMAGE "${CMAKE_SOURCE_DIR}/share/macosx/background.tiff")
set(CPACK_DMG_VOLUME_NAME "${PROGNAME}")
set(CPACK_SYSTEM_NAME "OSX")
set(CPACK_STRIP_FILES ON)
set(CPACK_PACKAGE_FILE_NAME "${PROGNAME}-${KEEPASSXC_VERSION}")
include(CPack)
- if(NOT DEFINED QT_BINARY_DIR)
- set(QT_BINARY_DIR "/usr/local/opt/qt5/bin" CACHE PATH "QT binary folder")
- endif()
add_custom_command(TARGET ${PROGNAME}
POST_BUILD
- COMMAND ${QT_BINARY_DIR}/macdeployqt ${PROGNAME}.app
+ COMMAND ${MACDEPLOYQT_EXE} ${PROGNAME}.app
WORKING_DIRECTORY ${CMAKE_BINARY_DIR}/src
COMMENT "Deploying app bundle")
endif()
+install(TARGETS ${PROGNAME}
+ BUNDLE DESTINATION . COMPONENT Runtime
+ RUNTIME DESTINATION ${BIN_INSTALL_DIR} COMPONENT Runtime)
+
if(MINGW)
if(${CMAKE_SIZEOF_VOID_P} EQUAL "8")
set(OUTPUT_FILE_POSTFIX "Win64")
@@ -296,14 +337,23 @@ if(MINGW)
set(OUTPUT_FILE_POSTFIX "Win32")
endif()
+ # We have to copy the license file in the configuration phase.
+ # CMake checks that CPACK_RESOURCE_FILE_LICENSE actually exists and
+ # we have to copy it because WiX needs it to have a .txt extension.
+ execute_process(COMMAND ${CMAKE_COMMAND} -E copy
+ "${CMAKE_SOURCE_DIR}/LICENSE.GPL-2"
+ "${CMAKE_CURRENT_BINARY_DIR}/INSTALLER_LICENSE.txt")
+
+ string(REGEX REPLACE "-snapshot$" "" KEEPASSXC_VERSION_CLEAN ${KEEPASSXC_VERSION})
+
set(CPACK_GENERATOR "ZIP;NSIS")
set(CPACK_STRIP_FILES ON)
set(CPACK_PACKAGE_FILE_NAME "${PROGNAME}-${KEEPASSXC_VERSION}-${OUTPUT_FILE_POSTFIX}")
set(CPACK_PACKAGE_INSTALL_DIRECTORY ${PROGNAME})
- set(CPACK_PACKAGE_VERSION ${KEEPASSXC_VERSION})
+ set(CPACK_PACKAGE_VERSION ${KEEPASSXC_VERSION_CLEAN})
set(CPACK_PACKAGE_VENDOR "${PROGNAME} Team")
string(REGEX REPLACE "/" "\\\\\\\\" CPACK_PACKAGE_ICON "${CMAKE_SOURCE_DIR}/share/windows/installer-header.bmp")
- set(CPACK_RESOURCE_FILE_LICENSE "${CMAKE_SOURCE_DIR}/LICENSE.GPL-2")
+ set(CPACK_RESOURCE_FILE_LICENSE "${CMAKE_CURRENT_BINARY_DIR}/INSTALLER_LICENSE.txt")
set(CPACK_NSIS_ENABLE_UNINSTALL_BEFORE_INSTALL ON)
set(CPACK_NSIS_MUI_ICON "${CMAKE_SOURCE_DIR}/share/windows/keepassxc.ico")
set(CPACK_NSIS_MUI_UNIICON "${CPACK_NSIS_MUI_ICON}")
@@ -312,10 +362,22 @@ if(MINGW)
set(CPACK_NSIS_MUI_UNWELCOMEFINISHPAGE_BITMAP "${CPACK_NSIS_MUI_WELCOMEFINISHPAGE_BITMAP}")
set(CPACK_NSIS_CREATE_ICONS_EXTRA "CreateShortCut '$SMPROGRAMS\\\\$STARTMENU_FOLDER\\\\${PROGNAME}.lnk' '$INSTDIR\\\\${PROGNAME}.exe'")
set(CPACK_NSIS_DELETE_ICONS_EXTRA "Delete '$SMPROGRAMS\\\\$START_MENU\\\\${PROGNAME}.lnk'")
+ set(CPACK_NSIS_EXTRA_PREINSTALL_COMMANDS "ExecWait 'Taskkill /IM KeePassXC.exe'")
+ set(CPACK_NSIS_EXTRA_PREINSTALL_COMMANDS "${CPACK_NSIS_EXTRA_PREINSTALL_COMMANDS}\nExecWait 'Taskkill /IM keepassxc-proxy.exe /F'")
+ set(CPACK_NSIS_EXTRA_UNINSTALL_COMMANDS "ExecWait 'Taskkill /IM KeePassXC.exe'")
+ set(CPACK_NSIS_EXTRA_UNINSTALL_COMMANDS "${CPACK_NSIS_EXTRA_UNINSTALL_COMMANDS}\nExecWait 'Taskkill /IM keepassxc-proxy.exe /F'")
set(CPACK_NSIS_URL_INFO_ABOUT "https://keepassxc.org")
set(CPACK_NSIS_DISPLAY_NAME ${PROGNAME})
set(CPACK_NSIS_PACKAGE_NAME "${PROGNAME} v${KEEPASSXC_VERSION}")
set(CPACK_NSIS_MUI_FINISHPAGE_RUN "../${PROGNAME}.exe")
+ set(CPACK_WIX_UPGRADE_GUID 88785A72-3EAE-4F29-89E3-BC6B19BA9A5B)
+ set(CPACK_WIX_PRODUCT_ICON "${CMAKE_SOURCE_DIR}/share/windows/keepassxc.ico")
+ set(CPACK_WIX_UI_BANNER "${CMAKE_SOURCE_DIR}/share/windows/wix-banner.bmp")
+ set(CPACK_WIX_UI_DIALOG "${CMAKE_SOURCE_DIR}/share/windows/wix-dialog.bmp")
+ set(CPACK_WIX_TEMPLATE "${CMAKE_SOURCE_DIR}/share/windows/wix-template.xml")
+ set(CPACK_WIX_PATCH_FILE "${CMAKE_SOURCE_DIR}/share/windows/wix-patch.xml")
+ set(CPACK_WIX_PROPERTY_ARPURLINFOABOUT "https://keepassxc.org")
+ set(CPACK_WIX_EXTENSIONS "WixUtilExtension.dll")
include(CPack)
install(CODE "
@@ -324,8 +386,25 @@ if(MINGW)
include(DeployQt4)
install_qt4_executable(${PROGNAME}.exe)
- add_custom_command(TARGET ${PROGNAME} POST_BUILD
- COMMAND ${CMAKE_COMMAND} -E copy_if_different ${Qt5Core_DIR}/../../../share/qt5/plugins/platforms/qwindows$<$<CONFIG:Debug>:d>.dll
- $<TARGET_FILE_DIR:${PROGNAME}>)
- install(FILES $<TARGET_FILE_DIR:${PROGNAME}>/qwindows$<$<CONFIG:Debug>:d>.dll DESTINATION "platforms")
+
+ # install Qt5 plugins
+ set(PLUGINS_DIR ${Qt5_PREFIX}/share/qt5/plugins)
+ install(FILES
+ ${PLUGINS_DIR}/platforms/qwindows$<$<CONFIG:Debug>:d>.dll
+ ${PLUGINS_DIR}/platforms/qdirect2d$<$<CONFIG:Debug>:d>.dll
+ DESTINATION "platforms")
+ install(FILES ${PLUGINS_DIR}/styles/qwindowsvistastyle$<$<CONFIG:Debug>:d>.dll DESTINATION "styles")
+ install(FILES ${PLUGINS_DIR}/platforminputcontexts/qtvirtualkeyboardplugin$<$<CONFIG:Debug>:d>.dll DESTINATION "platforminputcontexts")
+ install(FILES ${PLUGINS_DIR}/iconengines/qsvgicon$<$<CONFIG:Debug>:d>.dll DESTINATION "iconengines")
+ install(FILES
+ ${PLUGINS_DIR}/imageformats/qgif$<$<CONFIG:Debug>:d>.dll
+ ${PLUGINS_DIR}/imageformats/qicns$<$<CONFIG:Debug>:d>.dll
+ ${PLUGINS_DIR}/imageformats/qico$<$<CONFIG:Debug>:d>.dll
+ ${PLUGINS_DIR}/imageformats/qjpeg$<$<CONFIG:Debug>:d>.dll
+ ${PLUGINS_DIR}/imageformats/qsvg$<$<CONFIG:Debug>:d>.dll
+ ${PLUGINS_DIR}/imageformats/qwebp$<$<CONFIG:Debug>:d>.dll
+ DESTINATION "imageformats")
+
+ # install CA cert chains
+ install(FILES ${Qt5_PREFIX}/ssl/certs/ca-bundle.crt DESTINATION "ssl/certs")
endif()