Reformat CMakeLists.txt files

This commit is contained in:
Janek Bevendorff 2018-10-19 21:41:56 +02:00
parent 0ca7fd369a
commit 77adbef401
13 changed files with 659 additions and 676 deletions

View File

@ -1,4 +1,4 @@
# Copyright (C) 2017 KeePassXC Team <team@keepassxc.org> # Copyright (C) 2018 KeePassXC Team <team@keepassxc.org>
# Copyright (C) 2010 Felix Geyer <debfx@fobos.de> # Copyright (C) 2010 Felix Geyer <debfx@fobos.de>
# #
# This program is free software: you can redistribute it and/or modify # This program is free software: you can redistribute it and/or modify
@ -19,9 +19,9 @@ cmake_minimum_required(VERSION 3.1.0)
project(KeePassXC) project(KeePassXC)
if(NOT CMAKE_BUILD_TYPE) if(NOT CMAKE_BUILD_TYPE)
set(CMAKE_BUILD_TYPE "RelWithDebInfo" CACHE STRING set(CMAKE_BUILD_TYPE "RelWithDebInfo" CACHE STRING
"Choose the type of build, options are: None Debug Release RelWithDebInfo Debug DebugFull Profile MinSizeRel." "Choose the type of build, options are: None Debug Release RelWithDebInfo Debug DebugFull Profile MinSizeRel."
FORCE) FORCE)
endif() endif()
set(CMAKE_MODULE_PATH ${CMAKE_MODULE_PATH} ${CMAKE_CURRENT_SOURCE_DIR}/cmake) set(CMAKE_MODULE_PATH ${CMAKE_MODULE_PATH} ${CMAKE_CURRENT_SOURCE_DIR}/cmake)
@ -48,19 +48,19 @@ option(WITH_XC_BROWSER "Include browser integration with keepassxc-browser." OFF
option(WITH_XC_YUBIKEY "Include YubiKey support." OFF) option(WITH_XC_YUBIKEY "Include YubiKey support." OFF)
option(WITH_XC_SSHAGENT "Include SSH agent support." OFF) option(WITH_XC_SSHAGENT "Include SSH agent support." OFF)
if(APPLE) if(APPLE)
option(WITH_XC_TOUCHID "Include TouchID support for macOS." OFF) option(WITH_XC_TOUCHID "Include TouchID support for macOS." OFF)
endif() endif()
if(WITH_XC_ALL) if(WITH_XC_ALL)
# Enable all options # Enable all options
set(WITH_XC_AUTOTYPE ON) set(WITH_XC_AUTOTYPE ON)
set(WITH_XC_NETWORKING ON) set(WITH_XC_NETWORKING ON)
set(WITH_XC_BROWSER ON) set(WITH_XC_BROWSER ON)
set(WITH_XC_YUBIKEY ON) set(WITH_XC_YUBIKEY ON)
set(WITH_XC_SSHAGENT ON) set(WITH_XC_SSHAGENT ON)
if(APPLE) if(APPLE)
set(WITH_XC_TOUCHID ON) set(WITH_XC_TOUCHID ON)
endif() endif()
endif() endif()
set(KEEPASSXC_VERSION_MAJOR "2") set(KEEPASSXC_VERSION_MAJOR "2")
@ -76,34 +76,34 @@ execute_process(COMMAND git tag --points-at HEAD
WORKING_DIRECTORY ${CMAKE_SOURCE_DIR} WORKING_DIRECTORY ${CMAKE_SOURCE_DIR}
OUTPUT_VARIABLE GIT_TAG) OUTPUT_VARIABLE GIT_TAG)
if(GIT_TAG) if(GIT_TAG)
set(OVERRIDE_VERSION ${GIT_TAG}) set(OVERRIDE_VERSION ${GIT_TAG})
elseif(EXISTS ${CMAKE_SOURCE_DIR}/.version) elseif(EXISTS ${CMAKE_SOURCE_DIR}/.version)
file(READ ${CMAKE_SOURCE_DIR}/.version OVERRIDE_VERSION) file(READ ${CMAKE_SOURCE_DIR}/.version OVERRIDE_VERSION)
endif() endif()
string(REGEX REPLACE "(\r?\n)+" "" OVERRIDE_VERSION "${OVERRIDE_VERSION}") string(REGEX REPLACE "(\r?\n)+" "" OVERRIDE_VERSION "${OVERRIDE_VERSION}")
if(OVERRIDE_VERSION) if(OVERRIDE_VERSION)
if(OVERRIDE_VERSION MATCHES "^[\\.0-9]+-(alpha|beta)[0-9]+$") if(OVERRIDE_VERSION MATCHES "^[\\.0-9]+-(alpha|beta)[0-9]+$")
set(KEEPASSXC_BUILD_TYPE PreRelease) set(KEEPASSXC_BUILD_TYPE PreRelease)
set(KEEPASSXC_VERSION ${OVERRIDE_VERSION}) set(KEEPASSXC_VERSION ${OVERRIDE_VERSION})
elseif(OVERRIDE_VERSION MATCHES "^[\\.0-9]+$") elseif(OVERRIDE_VERSION MATCHES "^[\\.0-9]+$")
set(KEEPASSXC_BUILD_TYPE Release) set(KEEPASSXC_BUILD_TYPE Release)
set(KEEPASSXC_VERSION ${OVERRIDE_VERSION}) set(KEEPASSXC_VERSION ${OVERRIDE_VERSION})
endif() endif()
endif() endif()
if(KEEPASSXC_BUILD_TYPE STREQUAL "PreRelease" AND NOT OVERRIDE_VERSION) if(KEEPASSXC_BUILD_TYPE STREQUAL "PreRelease" AND NOT OVERRIDE_VERSION)
set(KEEPASSXC_VERSION "${KEEPASSXC_VERSION}-preview") set(KEEPASSXC_VERSION "${KEEPASSXC_VERSION}-preview")
elseif(KEEPASSXC_BUILD_TYPE STREQUAL "Snapshot") elseif(KEEPASSXC_BUILD_TYPE STREQUAL "Snapshot")
set(KEEPASSXC_VERSION "${KEEPASSXC_VERSION}-snapshot") set(KEEPASSXC_VERSION "${KEEPASSXC_VERSION}-snapshot")
endif() endif()
if(KEEPASSXC_BUILD_TYPE STREQUAL "Release") if(KEEPASSXC_BUILD_TYPE STREQUAL "Release")
set(KEEPASSXC_BUILD_TYPE_RELEASE ON) set(KEEPASSXC_BUILD_TYPE_RELEASE ON)
elseif(KEEPASSXC_BUILD_TYPE STREQUAL "PreRelease") elseif(KEEPASSXC_BUILD_TYPE STREQUAL "PreRelease")
set(KEEPASSXC_BUILD_TYPE_PRE_RELEASE ON) set(KEEPASSXC_BUILD_TYPE_PRE_RELEASE ON)
else() else()
set(KEEPASSXC_BUILD_TYPE_SNAPSHOT ON) set(KEEPASSXC_BUILD_TYPE_SNAPSHOT ON)
endif() endif()
message(STATUS "Setting up build for KeePassXC v${KEEPASSXC_VERSION}\n") message(STATUS "Setting up build for KeePassXC v${KEEPASSXC_VERSION}\n")
@ -113,46 +113,46 @@ set(KEEPASSXC_DIST ON)
set(KEEPASSXC_DIST_TYPE "Other" CACHE STRING "KeePassXC Distribution Type") set(KEEPASSXC_DIST_TYPE "Other" CACHE STRING "KeePassXC Distribution Type")
set_property(CACHE KEEPASSXC_DIST_TYPE PROPERTY STRINGS Snap AppImage Other) set_property(CACHE KEEPASSXC_DIST_TYPE PROPERTY STRINGS Snap AppImage Other)
if(KEEPASSXC_DIST_TYPE STREQUAL "Snap") if(KEEPASSXC_DIST_TYPE STREQUAL "Snap")
set(KEEPASSXC_DIST_SNAP ON) set(KEEPASSXC_DIST_SNAP ON)
elseif(KEEPASSXC_DIST_TYPE STREQUAL "AppImage") elseif(KEEPASSXC_DIST_TYPE STREQUAL "AppImage")
set(KEEPASSXC_DIST_APPIMAGE ON) set(KEEPASSXC_DIST_APPIMAGE ON)
elseif(KEEPASSXC_DIST_TYPE STREQUAL "Other") elseif(KEEPASSXC_DIST_TYPE STREQUAL "Other")
unset(KEEPASSXC_DIST) unset(KEEPASSXC_DIST)
endif() endif()
if("${CMAKE_SIZEOF_VOID_P}" EQUAL "4") if("${CMAKE_SIZEOF_VOID_P}" EQUAL "4")
set(IS_32BIT TRUE) set(IS_32BIT TRUE)
endif() endif()
if("${CMAKE_C_COMPILER}" MATCHES "clang$" OR "${CMAKE_C_COMPILER_ID}" STREQUAL "Clang") if("${CMAKE_C_COMPILER}" MATCHES "clang$" OR "${CMAKE_C_COMPILER_ID}" STREQUAL "Clang")
set(CMAKE_COMPILER_IS_CLANG 1) set(CMAKE_COMPILER_IS_CLANG 1)
endif() endif()
if("${CMAKE_CXX_COMPILER}" MATCHES "clang(\\+\\+)?$" OR "${CMAKE_CXX_COMPILER_ID}" STREQUAL "Clang") if("${CMAKE_CXX_COMPILER}" MATCHES "clang(\\+\\+)?$" OR "${CMAKE_CXX_COMPILER_ID}" STREQUAL "Clang")
set(CMAKE_COMPILER_IS_CLANGXX 1) set(CMAKE_COMPILER_IS_CLANGXX 1)
endif() endif()
macro(add_gcc_compiler_cxxflags FLAGS) macro(add_gcc_compiler_cxxflags FLAGS)
if(CMAKE_COMPILER_IS_GNUCXX OR CMAKE_COMPILER_IS_CLANGXX) if(CMAKE_COMPILER_IS_GNUCXX OR CMAKE_COMPILER_IS_CLANGXX)
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} ${FLAGS}") set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} ${FLAGS}")
endif() endif()
endmacro(add_gcc_compiler_cxxflags) endmacro(add_gcc_compiler_cxxflags)
macro(add_gcc_compiler_cflags FLAGS) macro(add_gcc_compiler_cflags FLAGS)
if(CMAKE_COMPILER_IS_GNUCC OR CMAKE_COMPILER_IS_CLANG) if(CMAKE_COMPILER_IS_GNUCC OR CMAKE_COMPILER_IS_CLANG)
set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} ${FLAGS}") set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} ${FLAGS}")
endif() endif()
endmacro(add_gcc_compiler_cflags) endmacro(add_gcc_compiler_cflags)
macro(add_gcc_compiler_flags FLAGS) macro(add_gcc_compiler_flags FLAGS)
add_gcc_compiler_cxxflags("${FLAGS}") add_gcc_compiler_cxxflags("${FLAGS}")
add_gcc_compiler_cflags("${FLAGS}") add_gcc_compiler_cflags("${FLAGS}")
endmacro(add_gcc_compiler_flags) endmacro(add_gcc_compiler_flags)
add_definitions(-DQT_NO_EXCEPTIONS -DQT_STRICT_ITERATORS -DQT_NO_CAST_TO_ASCII) add_definitions(-DQT_NO_EXCEPTIONS -DQT_STRICT_ITERATORS -DQT_NO_CAST_TO_ASCII)
if(WITH_APP_BUNDLE) if(WITH_APP_BUNDLE)
add_definitions(-DWITH_APP_BUNDLE) add_definitions(-DWITH_APP_BUNDLE)
endif() endif()
add_gcc_compiler_flags("-fno-common") add_gcc_compiler_flags("-fno-common")
@ -162,7 +162,7 @@ add_gcc_compiler_flags("-fvisibility=hidden")
add_gcc_compiler_cxxflags("-fvisibility-inlines-hidden") add_gcc_compiler_cxxflags("-fvisibility-inlines-hidden")
if(CMAKE_BUILD_TYPE STREQUAL "Debug") if(CMAKE_BUILD_TYPE STREQUAL "Debug")
add_gcc_compiler_flags("-Werror") add_gcc_compiler_flags("-Werror")
endif() endif()
if((CMAKE_COMPILER_IS_GNUCXX AND CMAKE_CXX_COMPILER_VERSION VERSION_GREATER 4.8.999) OR CMAKE_COMPILER_IS_CLANGXX) if((CMAKE_COMPILER_IS_GNUCXX AND CMAKE_CXX_COMPILER_VERSION VERSION_GREATER 4.8.999) OR CMAKE_COMPILER_IS_CLANGXX)
@ -176,147 +176,144 @@ add_gcc_compiler_cxxflags("-Wnon-virtual-dtor -Wold-style-cast -Woverloaded-virt
add_gcc_compiler_cflags("-Wchar-subscripts -Wwrite-strings") add_gcc_compiler_cflags("-Wchar-subscripts -Wwrite-strings")
if(WITH_ASAN) if(WITH_ASAN)
if(NOT (CMAKE_SYSTEM_NAME STREQUAL "Linux" OR APPLE)) if(NOT (CMAKE_SYSTEM_NAME STREQUAL "Linux" OR APPLE))
message(FATAL_ERROR "WITH_ASAN is only supported on Linux / macOS at the moment.") message(FATAL_ERROR "WITH_ASAN is only supported on Linux / macOS at the moment.")
endif() endif()
add_gcc_compiler_flags("-fsanitize=address -DWITH_ASAN") add_gcc_compiler_flags("-fsanitize=address -DWITH_ASAN")
if(CMAKE_SYSTEM_NAME STREQUAL "Linux") if(CMAKE_SYSTEM_NAME STREQUAL "Linux")
if(NOT (CMAKE_COMPILER_IS_GNUCXX AND CMAKE_CXX_COMPILER_VERSION VERSION_LESS 4.9)) if(NOT (CMAKE_COMPILER_IS_GNUCXX AND CMAKE_CXX_COMPILER_VERSION VERSION_LESS 4.9))
add_gcc_compiler_flags("-fsanitize=leak -DWITH_LSAN") add_gcc_compiler_flags("-fsanitize=leak -DWITH_LSAN")
endif()
endif() endif()
endif()
endif() endif()
string(TOLOWER "${CMAKE_BUILD_TYPE}" CMAKE_BUILD_TYPE_LOWER) string(TOLOWER "${CMAKE_BUILD_TYPE}" CMAKE_BUILD_TYPE_LOWER)
if (CMAKE_BUILD_TYPE_LOWER MATCHES "(release|relwithdebinfo|minsizerel)") if(CMAKE_BUILD_TYPE_LOWER MATCHES "(release|relwithdebinfo|minsizerel)")
add_gcc_compiler_flags("-U_FORTIFY_SOURCE -D_FORTIFY_SOURCE=2") add_gcc_compiler_flags("-U_FORTIFY_SOURCE -D_FORTIFY_SOURCE=2")
endif() endif()
check_c_compiler_flag("-Werror=format-security -Werror=implicit-function-declaration" WERROR_C_AVAILABLE) check_c_compiler_flag("-Werror=format-security -Werror=implicit-function-declaration" WERROR_C_AVAILABLE)
check_cxx_compiler_flag("-Werror=format-security" WERROR_CXX_AVAILABLE) check_cxx_compiler_flag("-Werror=format-security" WERROR_CXX_AVAILABLE)
if(WERROR_C_AVAILABLE AND WERROR_CXX_AVAILABLE) if(WERROR_C_AVAILABLE AND WERROR_CXX_AVAILABLE)
add_gcc_compiler_flags("-Werror=format-security") add_gcc_compiler_flags("-Werror=format-security")
add_gcc_compiler_cflags("-Werror=implicit-function-declaration") add_gcc_compiler_cflags("-Werror=implicit-function-declaration")
endif() endif()
if(CMAKE_COMPILER_IS_GNUCXX) if(CMAKE_COMPILER_IS_GNUCXX)
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -Wcast-align") set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -Wcast-align")
endif() endif()
if(CMAKE_COMPILER_IS_GNUCC) if(CMAKE_COMPILER_IS_GNUCC)
set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -Wcast-align") set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -Wcast-align")
endif() endif()
if(CMAKE_SYSTEM_NAME STREQUAL "Linux") if(CMAKE_SYSTEM_NAME STREQUAL "Linux")
if (CMAKE_COMPILER_IS_CLANGXX) if(CMAKE_COMPILER_IS_CLANGXX)
add_gcc_compiler_flags("-Qunused-arguments") add_gcc_compiler_flags("-Qunused-arguments")
endif() endif()
add_gcc_compiler_flags("-pie -fPIE") add_gcc_compiler_flags("-pie -fPIE")
set(CMAKE_EXE_LINKER_FLAGS "${CMAKE_EXE_LINKER_FLAGS} -Wl,--no-add-needed -Wl,--as-needed -Wl,--no-undefined") set(CMAKE_EXE_LINKER_FLAGS "${CMAKE_EXE_LINKER_FLAGS} -Wl,--no-add-needed -Wl,--as-needed -Wl,--no-undefined")
set(CMAKE_EXE_LINKER_FLAGS "${CMAKE_EXE_LINKER_FLAGS} -Wl,-z,relro,-z,now") set(CMAKE_EXE_LINKER_FLAGS "${CMAKE_EXE_LINKER_FLAGS} -Wl,-z,relro,-z,now")
set(CMAKE_MODULE_LINKER_FLAGS "${CMAKE_MODULE_LINKER_FLAGS} -Wl,--no-add-needed -Wl,--as-needed") set(CMAKE_MODULE_LINKER_FLAGS "${CMAKE_MODULE_LINKER_FLAGS} -Wl,--no-add-needed -Wl,--as-needed")
set(CMAKE_MODULE_LINKER_FLAGS "${CMAKE_MODULE_LINKER_FLAGS} -Wl,-z,relro,-z,now") set(CMAKE_MODULE_LINKER_FLAGS "${CMAKE_MODULE_LINKER_FLAGS} -Wl,-z,relro,-z,now")
endif() endif()
add_gcc_compiler_cflags("-std=c99") add_gcc_compiler_cflags("-std=c99")
add_gcc_compiler_cxxflags("-std=c++11") add_gcc_compiler_cxxflags("-std=c++11")
if(APPLE) if(APPLE)
add_gcc_compiler_cxxflags("-stdlib=libc++") add_gcc_compiler_cxxflags("-stdlib=libc++")
endif() endif()
if(WITH_DEV_BUILD) if(WITH_DEV_BUILD)
add_definitions(-DQT_DEPRECATED_WARNINGS -DGCRYPT_NO_DEPRECATED) add_definitions(-DQT_DEPRECATED_WARNINGS -DGCRYPT_NO_DEPRECATED)
endif() endif()
if(MINGW) if(MINGW)
set(CMAKE_RC_COMPILER_INIT windres) set(CMAKE_RC_COMPILER_INIT windres)
enable_language(RC) enable_language(RC)
set(CMAKE_RC_COMPILE_OBJECT "<CMAKE_RC_COMPILER> <FLAGS> -O coff <DEFINES> -i <SOURCE> -o <OBJECT>") set(CMAKE_RC_COMPILE_OBJECT "<CMAKE_RC_COMPILER> <FLAGS> -O coff <DEFINES> -i <SOURCE> -o <OBJECT>")
if(NOT (CMAKE_BUILD_TYPE STREQUAL "Debug" OR CMAKE_BUILD_TYPE STREQUAL "RelWithDebInfo")) if(NOT (CMAKE_BUILD_TYPE STREQUAL "Debug" OR CMAKE_BUILD_TYPE STREQUAL "RelWithDebInfo"))
# Enable DEP and ASLR # Enable DEP and ASLR
set(CMAKE_EXE_LINKER_FLAGS "${CMAKE_EXE_LINKER_FLAGS} -Wl,--nxcompat -Wl,--dynamicbase") set(CMAKE_EXE_LINKER_FLAGS "${CMAKE_EXE_LINKER_FLAGS} -Wl,--nxcompat -Wl,--dynamicbase")
set(CMAKE_MODULE_LINKER_FLAGS "${CMAKE_MODULE_LINKER_FLAGS} -Wl,--nxcompat -Wl,--dynamicbase") set(CMAKE_MODULE_LINKER_FLAGS "${CMAKE_MODULE_LINKER_FLAGS} -Wl,--nxcompat -Wl,--dynamicbase")
# Enable high entropy ASLR for 64-bit builds # Enable high entropy ASLR for 64-bit builds
if(NOT IS_32BIT) if(NOT IS_32BIT)
set(CMAKE_EXE_LINKER_FLAGS "${CMAKE_EXE_LINKER_FLAGS} -Wl,--high-entropy-va") set(CMAKE_EXE_LINKER_FLAGS "${CMAKE_EXE_LINKER_FLAGS} -Wl,--high-entropy-va")
set(CMAKE_MODULE_LINKER_FLAGS "${CMAKE_MODULE_LINKER_FLAGS} -Wl,--high-entropy-va") set(CMAKE_MODULE_LINKER_FLAGS "${CMAKE_MODULE_LINKER_FLAGS} -Wl,--high-entropy-va")
endif()
endif() endif()
endif()
endif() endif()
if(APPLE AND WITH_APP_BUNDLE OR MINGW) if(APPLE AND WITH_APP_BUNDLE OR MINGW)
set(PROGNAME KeePassXC) set(PROGNAME KeePassXC)
else() else()
set(PROGNAME keepassxc) set(PROGNAME keepassxc)
endif() endif()
if(APPLE AND WITH_APP_BUNDLE AND "${CMAKE_INSTALL_PREFIX}" STREQUAL "/usr/local") if(APPLE AND WITH_APP_BUNDLE AND "${CMAKE_INSTALL_PREFIX}" STREQUAL "/usr/local")
set(CMAKE_INSTALL_PREFIX "/Applications") set(CMAKE_INSTALL_PREFIX "/Applications")
set(CMAKE_INSTALL_MANDIR "/usr/local/share/man") set(CMAKE_INSTALL_MANDIR "/usr/local/share/man")
endif() endif()
if(MINGW) if(MINGW)
set(CLI_INSTALL_DIR ".") set(CLI_INSTALL_DIR ".")
set(PROXY_INSTALL_DIR ".") set(PROXY_INSTALL_DIR ".")
set(BIN_INSTALL_DIR ".") set(BIN_INSTALL_DIR ".")
set(PLUGIN_INSTALL_DIR ".") set(PLUGIN_INSTALL_DIR ".")
set(DATA_INSTALL_DIR "share") set(DATA_INSTALL_DIR "share")
elseif(APPLE AND WITH_APP_BUNDLE) elseif(APPLE AND WITH_APP_BUNDLE)
set(CLI_INSTALL_DIR "/usr/local/bin") set(CLI_INSTALL_DIR "/usr/local/bin")
set(PROXY_INSTALL_DIR "/usr/local/bin") set(PROXY_INSTALL_DIR "/usr/local/bin")
set(BIN_INSTALL_DIR ".") set(BIN_INSTALL_DIR ".")
set(PLUGIN_INSTALL_DIR "${PROGNAME}.app/Contents/PlugIns") set(PLUGIN_INSTALL_DIR "${PROGNAME}.app/Contents/PlugIns")
set(DATA_INSTALL_DIR "${PROGNAME}.app/Contents/Resources") set(DATA_INSTALL_DIR "${PROGNAME}.app/Contents/Resources")
else() else()
include(GNUInstallDirs) include(GNUInstallDirs)
set(CLI_INSTALL_DIR "${CMAKE_INSTALL_BINDIR}") set(CLI_INSTALL_DIR "${CMAKE_INSTALL_BINDIR}")
set(PROXY_INSTALL_DIR "${CMAKE_INSTALL_BINDIR}") set(PROXY_INSTALL_DIR "${CMAKE_INSTALL_BINDIR}")
set(BIN_INSTALL_DIR "${CMAKE_INSTALL_BINDIR}") set(BIN_INSTALL_DIR "${CMAKE_INSTALL_BINDIR}")
set(PLUGIN_INSTALL_DIR "${CMAKE_INSTALL_LIBDIR}/keepassxc") set(PLUGIN_INSTALL_DIR "${CMAKE_INSTALL_LIBDIR}/keepassxc")
set(DATA_INSTALL_DIR "${CMAKE_INSTALL_DATADIR}/keepassxc") set(DATA_INSTALL_DIR "${CMAKE_INSTALL_DATADIR}/keepassxc")
endif() endif()
if(WITH_TESTS) if(WITH_TESTS)
enable_testing() enable_testing()
endif(WITH_TESTS) endif(WITH_TESTS)
if(WITH_COVERAGE) if(WITH_COVERAGE)
# Include code coverage, use with -DCMAKE_BUILD_TYPE=Debug # Include code coverage, use with -DCMAKE_BUILD_TYPE=Debug
include(CodeCoverage) include(CodeCoverage)
set(COVERAGE_GCOVR_EXCLUDES set(COVERAGE_GCOVR_EXCLUDES
"\\(.+/\\)?tests/.\\*" "\\(.+/\\)?tests/.\\*"
".\\*/moc_\\[^/\\]+\\.cpp" ".\\*/moc_\\[^/\\]+\\.cpp"
".\\*/ui_\\[^/\\]+\\.h" ".\\*/ui_\\[^/\\]+\\.h"
"\\(.+/\\)?zxcvbn/.\\*") "\\(.+/\\)?zxcvbn/.\\*")
append_coverage_compiler_flags() append_coverage_compiler_flags()
setup_target_for_coverage_gcovr_html( setup_target_for_coverage_gcovr_html(
NAME coverage NAME coverage
EXECUTABLE $(MAKE) && $(MAKE) test EXECUTABLE $(MAKE) && $(MAKE) test
) )
endif() endif()
include(CLangFormat) include(CLangFormat)
set(QT_COMPONENTS Core Network Concurrent Gui Svg Widgets Test LinguistTools)
if(UNIX AND NOT APPLE) if(UNIX AND NOT APPLE)
find_package(Qt5 COMPONENTS Core Network Concurrent Gui Svg Widgets Test LinguistTools DBus REQUIRED) find_package(Qt5 COMPONENTS ${QT_COMPONENTS} DBus REQUIRED)
elseif(APPLE) elseif(APPLE)
find_package(Qt5 COMPONENTS Core Network Concurrent Gui Svg Widgets Test LinguistTools REQUIRED find_package(Qt5 COMPONENTS ${QT_COMPONENTS} REQUIRED HINTS /usr/local/Cellar/qt/*/lib/cmake ENV PATH)
HINTS /usr/local/Cellar/qt/*/lib/cmake ENV PATH find_package(Qt5 COMPONENTS MacExtras HINTS /usr/local/Cellar/qt/*/lib/cmake ENV PATH)
)
find_package(Qt5 COMPONENTS MacExtras
HINTS /usr/local/Cellar/qt/*/lib/cmake ENV PATH
)
else() else()
find_package(Qt5 COMPONENTS Core Network Concurrent Gui Svg Widgets Test LinguistTools REQUIRED) find_package(Qt5 COMPONENTS ${QT_COMPONENTS} REQUIRED)
endif() endif()
if(Qt5Core_VERSION VERSION_LESS "5.2.0") if(Qt5Core_VERSION VERSION_LESS "5.2.0")
message(FATAL_ERROR "Qt version 5.2.0 or higher is required") message(FATAL_ERROR "Qt version 5.2.0 or higher is required")
endif() endif()
get_filename_component(Qt5_PREFIX ${Qt5_DIR}/../../.. REALPATH) get_filename_component(Qt5_PREFIX ${Qt5_DIR}/../../.. REALPATH)
@ -329,13 +326,13 @@ set(CMAKE_AUTOUIC ON)
set(CMAKE_AUTORCC ON) set(CMAKE_AUTORCC ON)
if(APPLE) if(APPLE)
set(CMAKE_MACOSX_RPATH TRUE) set(CMAKE_MACOSX_RPATH TRUE)
find_program(MACDEPLOYQT_EXE macdeployqt HINTS ${Qt5_PREFIX}/bin ENV PATH) find_program(MACDEPLOYQT_EXE macdeployqt HINTS ${Qt5_PREFIX}/bin ENV PATH)
if(NOT MACDEPLOYQT_EXE) if(NOT MACDEPLOYQT_EXE)
message(FATAL_ERROR "macdeployqt is required to build in macOS") message(FATAL_ERROR "macdeployqt is required to build in macOS")
else() else()
message(STATUS "Using macdeployqt: ${MACDEPLOYQT_EXE}") message(STATUS "Using macdeployqt: ${MACDEPLOYQT_EXE}")
endif() endif()
endif() endif()
# Debian sets the the build type to None for package builds. # Debian sets the the build type to None for package builds.
@ -351,24 +348,24 @@ find_package(QREncode REQUIRED)
set(CMAKE_REQUIRED_INCLUDES ${ZLIB_INCLUDE_DIR}) set(CMAKE_REQUIRED_INCLUDES ${ZLIB_INCLUDE_DIR})
if(ZLIB_VERSION_STRING VERSION_LESS "1.2.0") if(ZLIB_VERSION_STRING VERSION_LESS "1.2.0")
message(FATAL_ERROR "zlib 1.2.0 or higher is required to use the gzip format") message(FATAL_ERROR "zlib 1.2.0 or higher is required to use the gzip format")
endif() endif()
include_directories(SYSTEM ${ARGON2_INCLUDE_DIR}) include_directories(SYSTEM ${ARGON2_INCLUDE_DIR})
# Optional # Optional
if(WITH_XC_YUBIKEY) if(WITH_XC_YUBIKEY)
find_package(YubiKey REQUIRED) find_package(YubiKey REQUIRED)
include_directories(SYSTEM ${YUBIKEY_INCLUDE_DIRS}) include_directories(SYSTEM ${YUBIKEY_INCLUDE_DIRS})
endif() endif()
if(UNIX) if(UNIX)
check_cxx_source_compiles("#include <sys/prctl.h> check_cxx_source_compiles("#include <sys/prctl.h>
int main() { prctl(PR_SET_DUMPABLE, 0); return 0; }" int main() { prctl(PR_SET_DUMPABLE, 0); return 0; }"
HAVE_PR_SET_DUMPABLE) HAVE_PR_SET_DUMPABLE)
check_cxx_source_compiles("#include <sys/resource.h> check_cxx_source_compiles("#include <sys/resource.h>
int main() { int main() {
struct rlimit limit; struct rlimit limit;
limit.rlim_cur = 0; limit.rlim_cur = 0;
@ -377,12 +374,12 @@ if(UNIX)
return 0; return 0;
}" HAVE_RLIMIT_CORE) }" HAVE_RLIMIT_CORE)
if(APPLE) if(APPLE)
check_cxx_source_compiles("#include <sys/types.h> check_cxx_source_compiles("#include <sys/types.h>
#include <sys/ptrace.h> #include <sys/ptrace.h>
int main() { ptrace(PT_DENY_ATTACH, 0, 0, 0); return 0; }" int main() { ptrace(PT_DENY_ATTACH, 0, 0, 0); return 0; }"
HAVE_PT_DENY_ATTACH) HAVE_PT_DENY_ATTACH)
endif() endif()
endif() endif()
include_directories(SYSTEM ${GCRYPT_INCLUDE_DIR} ${ZLIB_INCLUDE_DIR}) include_directories(SYSTEM ${GCRYPT_INCLUDE_DIR} ${ZLIB_INCLUDE_DIR})
@ -392,14 +389,14 @@ include(FeatureSummary)
add_subdirectory(src) add_subdirectory(src)
add_subdirectory(share) add_subdirectory(share)
if(WITH_TESTS) if(WITH_TESTS)
add_subdirectory(tests) add_subdirectory(tests)
endif(WITH_TESTS) endif(WITH_TESTS)
if(PRINT_SUMMARY) if(PRINT_SUMMARY)
# This will print ENABLED, REQUIRED and DISABLED # This will print ENABLED, REQUIRED and DISABLED
feature_summary(WHAT ALL) feature_summary(WHAT ALL)
else() else()
# This will only print ENABLED and DISABLED feature # This will only print ENABLED and DISABLED feature
feature_summary(WHAT ENABLED_FEATURES DESCRIPTION "Enabled features:") feature_summary(WHAT ENABLED_FEATURES DESCRIPTION "Enabled features:")
feature_summary(WHAT DISABLED_FEATURES DESCRIPTION "Disabled features:") feature_summary(WHAT DISABLED_FEATURES DESCRIPTION "Disabled features:")
endif() endif()

View File

@ -14,45 +14,43 @@
# along with this program. If not, see <http://www.gnu.org/licenses/>. # along with this program. If not, see <http://www.gnu.org/licenses/>.
set(EXCLUDED_DIRS set(EXCLUDED_DIRS
# third-party directories # third-party directories
zxcvbn/ zxcvbn/
streams/QtIOCompressor streams/QtIOCompressor
# objective-c directories # objective-c directories
autotype/mac autotype/mac)
)
set(EXCLUDED_FILES set(EXCLUDED_FILES
# third-party files # third-party files
streams/qtiocompressor.cpp streams/qtiocompressor.cpp
streams/qtiocompressor.h streams/qtiocompressor.h
gui/KMessageWidget.h gui/KMessageWidget.h
gui/KMessageWidget.cpp gui/KMessageWidget.cpp
gui/MainWindowAdaptor.h gui/MainWindowAdaptor.h
gui/MainWindowAdaptor.cpp gui/MainWindowAdaptor.cpp
sshagent/bcrypt_pbkdf.cpp sshagent/bcrypt_pbkdf.cpp
sshagent/blf.h sshagent/blf.h
sshagent/blowfish.c sshagent/blowfish.c
tests/modeltest.cpp tests/modeltest.cpp
tests/modeltest.h tests/modeltest.h
# objective-c files # objective-c files
core/ScreenLockListenerMac.h core/ScreenLockListenerMac.h
core/ScreenLockListenerMac.cpp core/ScreenLockListenerMac.cpp)
)
file(GLOB_RECURSE ALL_SOURCE_FILES *.cpp *.h) file(GLOB_RECURSE ALL_SOURCE_FILES *.cpp *.h)
foreach (SOURCE_FILE ${ALL_SOURCE_FILES}) foreach(SOURCE_FILE ${ALL_SOURCE_FILES})
foreach (EXCLUDED_DIR ${EXCLUDED_DIRS}) foreach(EXCLUDED_DIR ${EXCLUDED_DIRS})
string(FIND ${SOURCE_FILE} ${EXCLUDED_DIR} SOURCE_FILE_EXCLUDED) string(FIND ${SOURCE_FILE} ${EXCLUDED_DIR} SOURCE_FILE_EXCLUDED)
if (NOT ${SOURCE_FILE_EXCLUDED} EQUAL -1) if(NOT ${SOURCE_FILE_EXCLUDED} EQUAL -1)
list(REMOVE_ITEM ALL_SOURCE_FILES ${SOURCE_FILE}) list(REMOVE_ITEM ALL_SOURCE_FILES ${SOURCE_FILE})
endif () endif()
endforeach () endforeach()
foreach (EXCLUDED_FILE ${EXCLUDED_FILES}) foreach(EXCLUDED_FILE ${EXCLUDED_FILES})
if (${SOURCE_FILE} MATCHES ".*${EXCLUDED_FILE}$") if(${SOURCE_FILE} MATCHES ".*${EXCLUDED_FILE}$")
list(REMOVE_ITEM ALL_SOURCE_FILES ${SOURCE_FILE}) list(REMOVE_ITEM ALL_SOURCE_FILES ${SOURCE_FILE})
endif () endif()
endforeach () endforeach()
endforeach () endforeach()
add_custom_target( add_custom_target(
format format

View File

@ -14,21 +14,21 @@
# along with this program. If not, see <http://www.gnu.org/licenses/>. # along with this program. If not, see <http://www.gnu.org/licenses/>.
find_path(ARGON2_INCLUDE_DIR argon2.h) find_path(ARGON2_INCLUDE_DIR argon2.h)
if (MINGW) if(MINGW)
# find static library on Windows, and redefine used symbols to # find static library on Windows, and redefine used symbols to
# avoid definition name conflicts with libsodium # avoid definition name conflicts with libsodium
find_library(ARGON2_SYS_LIBRARIES libargon2.a) find_library(ARGON2_SYS_LIBRARIES libargon2.a)
message(STATUS "Patching libargon2...\n") message(STATUS "Patching libargon2...\n")
execute_process(COMMAND objcopy execute_process(COMMAND objcopy
--redefine-sym argon2_hash=libargon2_argon2_hash --redefine-sym argon2_hash=libargon2_argon2_hash
--redefine-sym _argon2_hash=_libargon2_argon2_hash --redefine-sym _argon2_hash=_libargon2_argon2_hash
--redefine-sym argon2_error_message=libargon2_argon2_error_message --redefine-sym argon2_error_message=libargon2_argon2_error_message
--redefine-sym _argon2_error_message=_libargon2_argon2_error_message --redefine-sym _argon2_error_message=_libargon2_argon2_error_message
${ARGON2_SYS_LIBRARIES} ${CMAKE_BINARY_DIR}/libargon2_patched.a ${ARGON2_SYS_LIBRARIES} ${CMAKE_BINARY_DIR}/libargon2_patched.a
WORKING_DIRECTORY ${CMAKE_BINARY_DIR}) WORKING_DIRECTORY ${CMAKE_BINARY_DIR})
find_library(ARGON2_LIBRARIES libargon2_patched.a PATHS ${CMAKE_BINARY_DIR} NO_DEFAULT_PATH) find_library(ARGON2_LIBRARIES libargon2_patched.a PATHS ${CMAKE_BINARY_DIR} NO_DEFAULT_PATH)
else() else()
find_library(ARGON2_LIBRARIES argon2) find_library(ARGON2_LIBRARIES argon2)
endif() endif()
mark_as_advanced(ARGON2_LIBRARIES ARGON2_INCLUDE_DIR) mark_as_advanced(ARGON2_LIBRARIES ARGON2_INCLUDE_DIR)

View File

@ -22,7 +22,7 @@ mark_as_advanced(GCRYPT_LIBRARIES GCRYPT_INCLUDE_DIR)
if(GCRYPT_INCLUDE_DIR AND EXISTS "${GCRYPT_INCLUDE_DIR}/gcrypt.h") if(GCRYPT_INCLUDE_DIR AND EXISTS "${GCRYPT_INCLUDE_DIR}/gcrypt.h")
file(STRINGS "${GCRYPT_INCLUDE_DIR}/gcrypt.h" GCRYPT_H REGEX "^#define GCRYPT_VERSION \"[^\"]*\"$") file(STRINGS "${GCRYPT_INCLUDE_DIR}/gcrypt.h" GCRYPT_H REGEX "^#define GCRYPT_VERSION \"[^\"]*\"$")
string(REGEX REPLACE "^.*GCRYPT_VERSION \"([0-9]+).*$" "\\1" GCRYPT_VERSION_MAJOR "${GCRYPT_H}") string(REGEX REPLACE "^.*GCRYPT_VERSION \"([0-9]+).*$" "\\1" GCRYPT_VERSION_MAJOR "${GCRYPT_H}")
string(REGEX REPLACE "^.*GCRYPT_VERSION \"[0-9]+\\.([0-9]+).*$" "\\1" GCRYPT_VERSION_MINOR "${GCRYPT_H}") string(REGEX REPLACE "^.*GCRYPT_VERSION \"[0-9]+\\.([0-9]+).*$" "\\1" GCRYPT_VERSION_MINOR "${GCRYPT_H}")
string(REGEX REPLACE "^.*GCRYPT_VERSION \"[0-9]+\\.[0-9]+\\.([0-9]+).*$" "\\1" GCRYPT_VERSION_PATCH "${GCRYPT_H}") string(REGEX REPLACE "^.*GCRYPT_VERSION \"[0-9]+\\.[0-9]+\\.([0-9]+).*$" "\\1" GCRYPT_VERSION_PATCH "${GCRYPT_H}")
set(GCRYPT_VERSION_STRING "${GCRYPT_VERSION_MAJOR}.${GCRYPT_VERSION_MINOR}.${GCRYPT_VERSION_PATCH}") set(GCRYPT_VERSION_STRING "${GCRYPT_VERSION_MAJOR}.${GCRYPT_VERSION_MINOR}.${GCRYPT_VERSION_PATCH}")
endif() endif()

View File

@ -1,4 +1,4 @@
# Copyright (C) 2017 KeePassXC Team <team@keepassxc.org> # Copyright (C) 2018 KeePassXC Team <team@keepassxc.org>
# Copyright (C) 2010 Felix Geyer <debfx@fobos.de> # Copyright (C) 2010 Felix Geyer <debfx@fobos.de>
# #
# This program is free software: you can redistribute it and/or modify # This program is free software: you can redistribute it and/or modify
@ -22,193 +22,191 @@ include(GetGitRevisionDescription)
get_git_head_revision(GIT_REFSPEC GIT_HEAD) get_git_head_revision(GIT_REFSPEC GIT_HEAD)
git_describe(GIT_DESCRIBE --long) git_describe(GIT_DESCRIBE --long)
if (NOT GIT_HEAD OR NOT GIT_DESCRIBE) if(NOT GIT_HEAD OR NOT GIT_DESCRIBE)
set(GIT_HEAD "") set(GIT_HEAD "")
set(GIT_DESCRIBE "") set(GIT_DESCRIBE "")
endif() endif()
find_library(ZXCVBN_LIBRARIES zxcvbn) find_library(ZXCVBN_LIBRARIES zxcvbn)
if(NOT ZXCVBN_LIBRARIES) if(NOT ZXCVBN_LIBRARIES)
add_library(zxcvbn STATIC zxcvbn/zxcvbn.c) add_library(zxcvbn STATIC zxcvbn/zxcvbn.c)
include_directories(${CMAKE_CURRENT_SOURCE_DIR}/zxcvbn) include_directories(${CMAKE_CURRENT_SOURCE_DIR}/zxcvbn)
set(ZXCVBN_LIBRARIES zxcvbn) set(ZXCVBN_LIBRARIES zxcvbn)
endif(NOT ZXCVBN_LIBRARIES) endif(NOT ZXCVBN_LIBRARIES)
configure_file(version.h.cmake ${CMAKE_CURRENT_BINARY_DIR}/version.h @ONLY) configure_file(version.h.cmake ${CMAKE_CURRENT_BINARY_DIR}/version.h @ONLY)
set(keepassx_SOURCES set(keepassx_SOURCES
core/AutoTypeAssociations.cpp core/AutoTypeAssociations.cpp
core/AsyncTask.h core/AsyncTask.h
core/AutoTypeMatch.cpp core/AutoTypeMatch.cpp
core/Compare.cpp core/Compare.cpp
core/Config.cpp core/Config.cpp
core/CsvParser.cpp core/CsvParser.cpp
core/CustomData.cpp core/CustomData.cpp
core/Database.cpp core/Database.cpp
core/DatabaseIcons.cpp core/DatabaseIcons.cpp
core/Entry.cpp core/Entry.cpp
core/EntryAttachments.cpp core/EntryAttachments.cpp
core/EntryAttributes.cpp core/EntryAttributes.cpp
core/EntrySearcher.cpp core/EntrySearcher.cpp
core/FilePath.cpp core/FilePath.cpp
core/Bootstrap.cpp core/Bootstrap.cpp
core/Global.h core/Global.h
core/Group.cpp core/Group.cpp
core/InactivityTimer.cpp core/InactivityTimer.cpp
core/ListDeleter.h core/ListDeleter.h
core/Merger.cpp core/Merger.cpp
core/Metadata.cpp core/Metadata.cpp
core/PasswordGenerator.cpp core/PasswordGenerator.cpp
core/PassphraseGenerator.cpp core/PassphraseGenerator.cpp
core/SignalMultiplexer.cpp core/SignalMultiplexer.cpp
core/ScreenLockListener.cpp core/ScreenLockListener.cpp
core/ScreenLockListener.h core/ScreenLockListener.h
core/ScreenLockListenerPrivate.h core/ScreenLockListenerPrivate.h
core/ScreenLockListenerPrivate.cpp core/ScreenLockListenerPrivate.cpp
core/TimeDelta.cpp core/TimeDelta.cpp
core/TimeInfo.cpp core/TimeInfo.cpp
core/Clock.cpp core/Clock.cpp
core/Tools.cpp core/Tools.cpp
core/Translator.cpp core/Translator.cpp
core/Base32.h core/Base32.h
core/Base32.cpp core/Base32.cpp
cli/Utils.cpp cli/Utils.cpp
cli/Utils.h cli/Utils.h
crypto/Crypto.cpp crypto/Crypto.cpp
crypto/CryptoHash.cpp crypto/CryptoHash.cpp
crypto/Random.cpp crypto/Random.cpp
crypto/SymmetricCipher.cpp crypto/SymmetricCipher.cpp
crypto/SymmetricCipherBackend.h crypto/SymmetricCipherBackend.h
crypto/SymmetricCipherGcrypt.cpp crypto/SymmetricCipherGcrypt.cpp
crypto/kdf/Kdf.cpp crypto/kdf/Kdf.cpp
crypto/kdf/Kdf_p.h crypto/kdf/Kdf_p.h
crypto/kdf/AesKdf.cpp crypto/kdf/AesKdf.cpp
crypto/kdf/Argon2Kdf.cpp crypto/kdf/Argon2Kdf.cpp
format/CsvExporter.cpp format/CsvExporter.cpp
format/KeePass1.h format/KeePass1.h
format/KeePass1Reader.cpp format/KeePass1Reader.cpp
format/KeePass2.cpp format/KeePass2.cpp
format/KeePass2RandomStream.cpp format/KeePass2RandomStream.cpp
format/KdbxReader.cpp format/KdbxReader.cpp
format/KdbxWriter.cpp format/KdbxWriter.cpp
format/KdbxXmlReader.cpp format/KdbxXmlReader.cpp
format/KeePass2Reader.cpp format/KeePass2Reader.cpp
format/KeePass2Writer.cpp format/KeePass2Writer.cpp
format/Kdbx3Reader.cpp format/Kdbx3Reader.cpp
format/Kdbx3Writer.cpp format/Kdbx3Writer.cpp
format/Kdbx4Reader.cpp format/Kdbx4Reader.cpp
format/Kdbx4Writer.cpp format/Kdbx4Writer.cpp
format/KdbxXmlWriter.cpp format/KdbxXmlWriter.cpp
gui/AboutDialog.cpp gui/AboutDialog.cpp
gui/Application.cpp gui/Application.cpp
gui/CategoryListWidget.cpp gui/CategoryListWidget.cpp
gui/Clipboard.cpp gui/Clipboard.cpp
gui/CloneDialog.cpp gui/CloneDialog.cpp
gui/DatabaseOpenWidget.cpp gui/DatabaseOpenWidget.cpp
gui/DatabaseTabWidget.cpp gui/DatabaseTabWidget.cpp
gui/DatabaseWidget.cpp gui/DatabaseWidget.cpp
gui/DatabaseWidgetStateSync.cpp gui/DatabaseWidgetStateSync.cpp
gui/EntryPreviewWidget.cpp gui/EntryPreviewWidget.cpp
gui/DialogyWidget.cpp gui/DialogyWidget.cpp
gui/DragTabBar.cpp gui/DragTabBar.cpp
gui/EditWidget.cpp gui/EditWidget.cpp
gui/EditWidgetIcons.cpp gui/EditWidgetIcons.cpp
gui/EditWidgetProperties.cpp gui/EditWidgetProperties.cpp
gui/FileDialog.cpp gui/FileDialog.cpp
gui/Font.cpp gui/Font.cpp
gui/IconModels.cpp gui/IconModels.cpp
gui/KeePass1OpenWidget.cpp gui/KeePass1OpenWidget.cpp
gui/KMessageWidget.cpp gui/KMessageWidget.cpp
gui/LineEdit.cpp gui/LineEdit.cpp
gui/MainWindow.cpp gui/MainWindow.cpp
gui/MessageBox.cpp gui/MessageBox.cpp
gui/MessageWidget.cpp gui/MessageWidget.cpp
gui/PasswordEdit.cpp gui/PasswordEdit.cpp
gui/PasswordGeneratorWidget.cpp gui/PasswordGeneratorWidget.cpp
gui/ApplicationSettingsWidget.cpp gui/ApplicationSettingsWidget.cpp
gui/SearchWidget.cpp gui/SearchWidget.cpp
gui/SortFilterHideProxyModel.cpp gui/SortFilterHideProxyModel.cpp
gui/SquareSvgWidget.cpp gui/SquareSvgWidget.cpp
gui/TotpSetupDialog.cpp gui/TotpSetupDialog.cpp
gui/TotpDialog.cpp gui/TotpDialog.cpp
gui/TotpExportSettingsDialog.cpp gui/TotpExportSettingsDialog.cpp
gui/UnlockDatabaseWidget.cpp gui/UnlockDatabaseWidget.cpp
gui/UnlockDatabaseDialog.cpp gui/UnlockDatabaseDialog.cpp
gui/WelcomeWidget.cpp gui/WelcomeWidget.cpp
gui/widgets/ElidedLabel.cpp gui/widgets/ElidedLabel.cpp
gui/csvImport/CsvImportWidget.cpp gui/csvImport/CsvImportWidget.cpp
gui/csvImport/CsvImportWizard.cpp gui/csvImport/CsvImportWizard.cpp
gui/csvImport/CsvParserModel.cpp gui/csvImport/CsvParserModel.cpp
gui/entry/AutoTypeAssociationsModel.cpp gui/entry/AutoTypeAssociationsModel.cpp
gui/entry/AutoTypeMatchModel.cpp gui/entry/AutoTypeMatchModel.cpp
gui/entry/AutoTypeMatchView.cpp gui/entry/AutoTypeMatchView.cpp
gui/entry/EditEntryWidget.cpp gui/entry/EditEntryWidget.cpp
gui/entry/EditEntryWidget_p.h gui/entry/EditEntryWidget_p.h
gui/entry/EntryAttachmentsModel.cpp gui/entry/EntryAttachmentsModel.cpp
gui/entry/EntryAttachmentsWidget.cpp gui/entry/EntryAttachmentsWidget.cpp
gui/entry/EntryAttributesModel.cpp gui/entry/EntryAttributesModel.cpp
gui/entry/EntryHistoryModel.cpp gui/entry/EntryHistoryModel.cpp
gui/entry/EntryModel.cpp gui/entry/EntryModel.cpp
gui/entry/EntryView.cpp gui/entry/EntryView.cpp
gui/group/EditGroupWidget.cpp gui/group/EditGroupWidget.cpp
gui/group/GroupModel.cpp gui/group/GroupModel.cpp
gui/group/GroupView.cpp gui/group/GroupView.cpp
gui/masterkey/KeyComponentWidget.cpp gui/masterkey/KeyComponentWidget.cpp
gui/masterkey/PasswordEditWidget.cpp gui/masterkey/PasswordEditWidget.cpp
gui/masterkey/YubiKeyEditWidget.cpp gui/masterkey/YubiKeyEditWidget.cpp
gui/masterkey/KeyFileEditWidget.cpp gui/masterkey/KeyFileEditWidget.cpp
gui/dbsettings/DatabaseSettingsWidget.cpp gui/dbsettings/DatabaseSettingsWidget.cpp
gui/dbsettings/DatabaseSettingsDialog.cpp gui/dbsettings/DatabaseSettingsDialog.cpp
gui/dbsettings/DatabaseSettingsWidgetGeneral.cpp gui/dbsettings/DatabaseSettingsWidgetGeneral.cpp
gui/dbsettings/DatabaseSettingsWidgetMetaDataSimple.cpp gui/dbsettings/DatabaseSettingsWidgetMetaDataSimple.cpp
gui/dbsettings/DatabaseSettingsWidgetEncryption.cpp gui/dbsettings/DatabaseSettingsWidgetEncryption.cpp
gui/dbsettings/DatabaseSettingsWidgetMasterKey.cpp gui/dbsettings/DatabaseSettingsWidgetMasterKey.cpp
gui/settings/SettingsWidget.cpp gui/settings/SettingsWidget.cpp
gui/wizard/NewDatabaseWizard.cpp gui/wizard/NewDatabaseWizard.cpp
gui/wizard/NewDatabaseWizardPage.cpp gui/wizard/NewDatabaseWizardPage.cpp
gui/wizard/NewDatabaseWizardPageMetaData.cpp gui/wizard/NewDatabaseWizardPageMetaData.cpp
gui/wizard/NewDatabaseWizardPageEncryption.cpp gui/wizard/NewDatabaseWizardPageEncryption.cpp
gui/wizard/NewDatabaseWizardPageMasterKey.cpp gui/wizard/NewDatabaseWizardPageMasterKey.cpp
keys/ChallengeResponseKey.h keys/ChallengeResponseKey.h
keys/CompositeKey.cpp keys/CompositeKey.cpp
keys/drivers/YubiKey.h keys/drivers/YubiKey.h
keys/FileKey.cpp keys/FileKey.cpp
keys/Key.h keys/Key.h
keys/PasswordKey.cpp keys/PasswordKey.cpp
keys/YkChallengeResponseKey.cpp keys/YkChallengeResponseKey.cpp
streams/HashedBlockStream.cpp streams/HashedBlockStream.cpp
streams/HmacBlockStream.cpp streams/HmacBlockStream.cpp
streams/LayeredStream.cpp streams/LayeredStream.cpp
streams/qtiocompressor.cpp streams/qtiocompressor.cpp
streams/StoreDataStream.cpp streams/StoreDataStream.cpp
streams/SymmetricCipherStream.cpp streams/SymmetricCipherStream.cpp
totp/totp.h totp/totp.h
totp/totp.cpp) totp/totp.cpp)
if(APPLE) if(APPLE)
set(keepassx_SOURCES ${keepassx_SOURCES} set(keepassx_SOURCES
core/ScreenLockListenerMac.h ${keepassx_SOURCES}
core/ScreenLockListenerMac.cpp core/ScreenLockListenerMac.h
core/MacPasteboard.h core/ScreenLockListenerMac.cpp
core/MacPasteboard.cpp core/MacPasteboard.h
) core/MacPasteboard.cpp)
endif() endif()
if(UNIX AND NOT APPLE) if(UNIX AND NOT APPLE)
set(keepassx_SOURCES ${keepassx_SOURCES} set(keepassx_SOURCES
core/ScreenLockListenerDBus.h ${keepassx_SOURCES}
core/ScreenLockListenerDBus.cpp core/ScreenLockListenerDBus.h
gui/MainWindowAdaptor.cpp core/ScreenLockListenerDBus.cpp
) gui/MainWindowAdaptor.cpp)
endif() endif()
if(MINGW) if(MINGW)
set(keepassx_SOURCES ${keepassx_SOURCES} set(keepassx_SOURCES
core/ScreenLockListenerWin.h ${keepassx_SOURCES}
core/ScreenLockListenerWin.cpp core/ScreenLockListenerWin.h
) core/ScreenLockListenerWin.cpp)
endif() endif()
set(keepassx_SOURCES_MAINEXE set(keepassx_SOURCES_MAINEXE main.cpp)
main.cpp
)
add_feature_info(Auto-Type WITH_XC_AUTOTYPE "Automatic password typing") 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(Networking WITH_XC_NETWORKING "Compile KeePassXC with network access code (e.g. for downloading website icons)")
@ -237,32 +235,29 @@ if(WITH_XC_SSHAGENT)
endif() endif()
set(autotype_SOURCES set(autotype_SOURCES
core/Tools.cpp core/Tools.cpp
autotype/AutoType.cpp autotype/AutoType.cpp
autotype/AutoTypeAction.cpp autotype/AutoTypeAction.cpp
autotype/AutoTypePlatformPlugin.h autotype/AutoTypePlatformPlugin.h
autotype/AutoTypeSelectDialog.cpp autotype/AutoTypeSelectDialog.cpp
autotype/AutoTypeSelectView.cpp autotype/AutoTypeSelectView.cpp
autotype/ShortcutWidget.cpp autotype/ShortcutWidget.cpp
autotype/WildcardMatcher.cpp autotype/WildcardMatcher.cpp
autotype/WindowSelectComboBox.cpp autotype/WindowSelectComboBox.cpp
autotype/test/AutoTypeTestInterface.h autotype/test/AutoTypeTestInterface.h)
)
if(MINGW) if(MINGW)
set(keepassx_SOURCES_MAINEXE set(keepassx_SOURCES_MAINEXE ${keepassx_SOURCES_MAINEXE} ${CMAKE_SOURCE_DIR}/share/windows/icon.rc)
${keepassx_SOURCES_MAINEXE}
${CMAKE_SOURCE_DIR}/share/windows/icon.rc)
endif() endif()
if(WITH_XC_YUBIKEY) if(WITH_XC_YUBIKEY)
list(APPEND keepassx_SOURCES keys/drivers/YubiKey.cpp) list(APPEND keepassx_SOURCES keys/drivers/YubiKey.cpp)
else() else()
list(APPEND keepassx_SOURCES keys/drivers/YubiKeyStub.cpp) list(APPEND keepassx_SOURCES keys/drivers/YubiKeyStub.cpp)
endif() endif()
if(WITH_XC_TOUCHID) if(WITH_XC_TOUCHID)
list(APPEND keepassx_SOURCES touchid/TouchID.mm) list(APPEND keepassx_SOURCES touchid/TouchID.mm)
endif() endif()
add_library(autotype STATIC ${autotype_SOURCES}) add_library(autotype STATIC ${autotype_SOURCES})
@ -272,35 +267,35 @@ add_library(keepassx_core STATIC ${keepassx_SOURCES})
set_target_properties(keepassx_core PROPERTIES COMPILE_DEFINITIONS KEEPASSX_BUILDING_CORE) set_target_properties(keepassx_core PROPERTIES COMPILE_DEFINITIONS KEEPASSX_BUILDING_CORE)
target_link_libraries(keepassx_core target_link_libraries(keepassx_core
autotype autotype
${keepassxcbrowser_LIB} ${keepassxcbrowser_LIB}
${sshagent_LIB} ${sshagent_LIB}
${qrcode_LIB} ${qrcode_LIB}
Qt5::Core Qt5::Core
Qt5::Concurrent Qt5::Concurrent
Qt5::Network Qt5::Network
Qt5::Widgets Qt5::Widgets
${CURL_LIBRARIES} ${CURL_LIBRARIES}
${YUBIKEY_LIBRARIES} ${YUBIKEY_LIBRARIES}
${ZXCVBN_LIBRARIES} ${ZXCVBN_LIBRARIES}
${ARGON2_LIBRARIES} ${ARGON2_LIBRARIES}
${GCRYPT_LIBRARIES} ${GCRYPT_LIBRARIES}
${GPGERROR_LIBRARIES} ${GPGERROR_LIBRARIES}
${YUBIKEY_LIBRARIES} ${YUBIKEY_LIBRARIES}
${ZLIB_LIBRARIES} ${ZLIB_LIBRARIES}
${ZXCVBN_LIBRARIES}) ${ZXCVBN_LIBRARIES})
if(APPLE) if(APPLE)
target_link_libraries(keepassx_core "-framework Foundation") target_link_libraries(keepassx_core "-framework Foundation")
if(Qt5MacExtras_FOUND) if(Qt5MacExtras_FOUND)
target_link_libraries(keepassx_core Qt5::MacExtras) target_link_libraries(keepassx_core Qt5::MacExtras)
endif() endif()
if(WITH_XC_TOUCHID) if(WITH_XC_TOUCHID)
target_link_libraries(keepassx_core "-framework Security") target_link_libraries(keepassx_core "-framework Security")
target_link_libraries(keepassx_core "-framework LocalAuthentication") target_link_libraries(keepassx_core "-framework LocalAuthentication")
endif() endif()
endif() endif()
if (UNIX AND NOT APPLE) if(UNIX AND NOT APPLE)
target_link_libraries(keepassx_core Qt5::DBus) target_link_libraries(keepassx_core Qt5::DBus)
endif() endif()
if(MINGW) if(MINGW)
@ -308,15 +303,15 @@ if(MINGW)
endif() endif()
if(MINGW) if(MINGW)
include(GenerateProductVersion) include(GenerateProductVersion)
generate_product_version( generate_product_version(
WIN32_ProductVersionFiles WIN32_ProductVersionFiles
NAME "KeePassXC" NAME "KeePassXC"
COMPANY_NAME "KeePassXC Team" COMPANY_NAME "KeePassXC Team"
VERSION_MAJOR ${KEEPASSXC_VERSION_MAJOR} VERSION_MAJOR ${KEEPASSXC_VERSION_MAJOR}
VERSION_MINOR ${KEEPASSXC_VERSION_MINOR} VERSION_MINOR ${KEEPASSXC_VERSION_MINOR}
VERSION_PATCH ${KEEPASSXC_VERSION_PATCH} VERSION_PATCH ${KEEPASSXC_VERSION_PATCH}
) )
endif() endif()
add_executable(${PROGNAME} WIN32 ${keepassx_SOURCES_MAINEXE} ${WIN32_ProductVersionFiles}) add_executable(${PROGNAME} WIN32 ${keepassx_SOURCES_MAINEXE} ${WIN32_ProductVersionFiles})
@ -325,116 +320,116 @@ target_link_libraries(${PROGNAME} keepassx_core)
set_target_properties(${PROGNAME} PROPERTIES ENABLE_EXPORTS ON) set_target_properties(${PROGNAME} PROPERTIES ENABLE_EXPORTS ON)
if(APPLE AND WITH_APP_BUNDLE) if(APPLE AND WITH_APP_BUNDLE)
configure_file(${CMAKE_SOURCE_DIR}/share/macosx/Info.plist.cmake ${CMAKE_CURRENT_BINARY_DIR}/Info.plist) configure_file(${CMAKE_SOURCE_DIR}/share/macosx/Info.plist.cmake ${CMAKE_CURRENT_BINARY_DIR}/Info.plist)
set_target_properties(${PROGNAME} PROPERTIES
MACOSX_BUNDLE ON
MACOSX_BUNDLE_INFO_PLIST ${CMAKE_CURRENT_BINARY_DIR}/Info.plist)
if(WITH_XC_TOUCHID)
set_target_properties(${PROGNAME} PROPERTIES set_target_properties(${PROGNAME} PROPERTIES
CPACK_BUNDLE_APPLE_ENTITLEMENTS "${CMAKE_SOURCE_DIR}/share/macosx/keepassxc.entitlements" ) MACOSX_BUNDLE ON
endif() MACOSX_BUNDLE_INFO_PLIST ${CMAKE_CURRENT_BINARY_DIR}/Info.plist)
if(QT_MAC_USE_COCOA AND EXISTS "${QT_LIBRARY_DIR}/Resources/qt_menu.nib") if(WITH_XC_TOUCHID)
install(DIRECTORY "${QT_LIBRARY_DIR}/Resources/qt_menu.nib" set_target_properties(${PROGNAME} PROPERTIES
DESTINATION "${DATA_INSTALL_DIR}") CPACK_BUNDLE_APPLE_ENTITLEMENTS "${CMAKE_SOURCE_DIR}/share/macosx/keepassxc.entitlements")
endif() endif()
set(CPACK_GENERATOR "DragNDrop") if(QT_MAC_USE_COCOA AND EXISTS "${QT_LIBRARY_DIR}/Resources/qt_menu.nib")
set(CPACK_DMG_FORMAT "UDBZ") install(DIRECTORY "${QT_LIBRARY_DIR}/Resources/qt_menu.nib"
set(CPACK_DMG_DS_STORE "${CMAKE_SOURCE_DIR}/share/macosx/DS_Store.in") DESTINATION "${DATA_INSTALL_DIR}")
set(CPACK_DMG_BACKGROUND_IMAGE "${CMAKE_SOURCE_DIR}/share/macosx/background.tiff") endif()
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)
add_custom_command(TARGET ${PROGNAME} set(CPACK_GENERATOR "DragNDrop")
POST_BUILD set(CPACK_DMG_FORMAT "UDBZ")
COMMAND ${MACDEPLOYQT_EXE} ${PROGNAME}.app set(CPACK_DMG_DS_STORE "${CMAKE_SOURCE_DIR}/share/macosx/DS_Store.in")
WORKING_DIRECTORY ${CMAKE_BINARY_DIR}/src set(CPACK_DMG_BACKGROUND_IMAGE "${CMAKE_SOURCE_DIR}/share/macosx/background.tiff")
COMMENT "Deploying app bundle") 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)
add_custom_command(TARGET ${PROGNAME}
POST_BUILD
COMMAND ${MACDEPLOYQT_EXE} ${PROGNAME}.app
WORKING_DIRECTORY ${CMAKE_BINARY_DIR}/src
COMMENT "Deploying app bundle")
endif() endif()
install(TARGETS ${PROGNAME} install(TARGETS ${PROGNAME}
BUNDLE DESTINATION . COMPONENT Runtime BUNDLE DESTINATION . COMPONENT Runtime
RUNTIME DESTINATION ${BIN_INSTALL_DIR} COMPONENT Runtime) RUNTIME DESTINATION ${BIN_INSTALL_DIR} COMPONENT Runtime)
if(MINGW) if(MINGW)
if(${CMAKE_SIZEOF_VOID_P} EQUAL "8") if(${CMAKE_SIZEOF_VOID_P} EQUAL "8")
set(OUTPUT_FILE_POSTFIX "Win64") set(OUTPUT_FILE_POSTFIX "Win64")
else() else()
set(OUTPUT_FILE_POSTFIX "Win32") set(OUTPUT_FILE_POSTFIX "Win32")
endif() endif()
# We have to copy the license file in the configuration phase. # We have to copy the license file in the configuration phase.
# CMake checks that CPACK_RESOURCE_FILE_LICENSE actually exists and # CMake checks that CPACK_RESOURCE_FILE_LICENSE actually exists and
# we have to copy it because WiX needs it to have a .txt extension. # we have to copy it because WiX needs it to have a .txt extension.
execute_process(COMMAND ${CMAKE_COMMAND} -E copy execute_process(COMMAND ${CMAKE_COMMAND} -E copy
"${CMAKE_SOURCE_DIR}/LICENSE.GPL-2" "${CMAKE_SOURCE_DIR}/LICENSE.GPL-2"
"${CMAKE_CURRENT_BINARY_DIR}/INSTALLER_LICENSE.txt") "${CMAKE_CURRENT_BINARY_DIR}/INSTALLER_LICENSE.txt")
string(REGEX REPLACE "-snapshot$" "" KEEPASSXC_VERSION_CLEAN ${KEEPASSXC_VERSION}) string(REGEX REPLACE "-snapshot$" "" KEEPASSXC_VERSION_CLEAN ${KEEPASSXC_VERSION})
set(CPACK_GENERATOR "ZIP;NSIS") set(CPACK_GENERATOR "ZIP;NSIS")
set(CPACK_STRIP_FILES OFF) set(CPACK_STRIP_FILES OFF)
set(CPACK_PACKAGE_FILE_NAME "${PROGNAME}-${KEEPASSXC_VERSION}-${OUTPUT_FILE_POSTFIX}") set(CPACK_PACKAGE_FILE_NAME "${PROGNAME}-${KEEPASSXC_VERSION}-${OUTPUT_FILE_POSTFIX}")
set(CPACK_PACKAGE_INSTALL_DIRECTORY ${PROGNAME}) set(CPACK_PACKAGE_INSTALL_DIRECTORY ${PROGNAME})
set(CPACK_PACKAGE_VERSION ${KEEPASSXC_VERSION_CLEAN}) set(CPACK_PACKAGE_VERSION ${KEEPASSXC_VERSION_CLEAN})
set(CPACK_PACKAGE_VENDOR "${PROGNAME} Team") set(CPACK_PACKAGE_VENDOR "${PROGNAME} Team")
string(REGEX REPLACE "/" "\\\\\\\\" CPACK_PACKAGE_ICON "${CMAKE_SOURCE_DIR}/share/windows/installer-header.bmp") string(REGEX REPLACE "/" "\\\\\\\\" CPACK_PACKAGE_ICON "${CMAKE_SOURCE_DIR}/share/windows/installer-header.bmp")
set(CPACK_RESOURCE_FILE_LICENSE "${CMAKE_CURRENT_BINARY_DIR}/INSTALLER_LICENSE.txt") set(CPACK_RESOURCE_FILE_LICENSE "${CMAKE_CURRENT_BINARY_DIR}/INSTALLER_LICENSE.txt")
set(CPACK_NSIS_ENABLE_UNINSTALL_BEFORE_INSTALL ON) set(CPACK_NSIS_ENABLE_UNINSTALL_BEFORE_INSTALL ON)
set(CPACK_NSIS_MUI_ICON "${CMAKE_SOURCE_DIR}/share/windows/keepassxc.ico") set(CPACK_NSIS_MUI_ICON "${CMAKE_SOURCE_DIR}/share/windows/keepassxc.ico")
set(CPACK_NSIS_MUI_UNIICON "${CPACK_NSIS_MUI_ICON}") set(CPACK_NSIS_MUI_UNIICON "${CPACK_NSIS_MUI_ICON}")
set(CPACK_NSIS_INSTALLED_ICON_NAME "\\\\${PROGNAME}.exe") set(CPACK_NSIS_INSTALLED_ICON_NAME "\\\\${PROGNAME}.exe")
string(REGEX REPLACE "/" "\\\\\\\\" CPACK_NSIS_MUI_WELCOMEFINISHPAGE_BITMAP "${CMAKE_SOURCE_DIR}/share/windows/installer-wizard.bmp") string(REGEX REPLACE "/" "\\\\\\\\" CPACK_NSIS_MUI_WELCOMEFINISHPAGE_BITMAP "${CMAKE_SOURCE_DIR}/share/windows/installer-wizard.bmp")
set(CPACK_NSIS_MUI_UNWELCOMEFINISHPAGE_BITMAP "${CPACK_NSIS_MUI_WELCOMEFINISHPAGE_BITMAP}") 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_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_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 "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_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 "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_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_URL_INFO_ABOUT "https://keepassxc.org")
set(CPACK_NSIS_DISPLAY_NAME ${PROGNAME}) set(CPACK_NSIS_DISPLAY_NAME ${PROGNAME})
set(CPACK_NSIS_PACKAGE_NAME "${PROGNAME} v${KEEPASSXC_VERSION}") set(CPACK_NSIS_PACKAGE_NAME "${PROGNAME} v${KEEPASSXC_VERSION}")
set(CPACK_NSIS_MUI_FINISHPAGE_RUN "../${PROGNAME}.exe") set(CPACK_NSIS_MUI_FINISHPAGE_RUN "../${PROGNAME}.exe")
set(CPACK_WIX_UPGRADE_GUID 88785A72-3EAE-4F29-89E3-BC6B19BA9A5B) 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_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_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_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_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_PATCH_FILE "${CMAKE_SOURCE_DIR}/share/windows/wix-patch.xml")
set(CPACK_WIX_PROPERTY_ARPURLINFOABOUT "https://keepassxc.org") set(CPACK_WIX_PROPERTY_ARPURLINFOABOUT "https://keepassxc.org")
set(CPACK_WIX_EXTENSIONS "WixUtilExtension.dll") set(CPACK_WIX_EXTENSIONS "WixUtilExtension.dll")
include(CPack) include(CPack)
install(CODE " install(CODE "
set(gp_tool \"objdump\") set(gp_tool \"objdump\")
" COMPONENT Runtime) " COMPONENT Runtime)
include(DeployQt4) include(DeployQt4)
install_qt4_executable(${PROGNAME}.exe) install_qt4_executable(${PROGNAME}.exe)
# install Qt5 plugins # install Qt5 plugins
set(PLUGINS_DIR ${Qt5_PREFIX}/share/qt5/plugins) set(PLUGINS_DIR ${Qt5_PREFIX}/share/qt5/plugins)
install(FILES install(FILES
${PLUGINS_DIR}/platforms/qwindows$<$<CONFIG:Debug>:d>.dll ${PLUGINS_DIR}/platforms/qwindows$<$<CONFIG:Debug>:d>.dll
${PLUGINS_DIR}/platforms/qdirect2d$<$<CONFIG:Debug>:d>.dll ${PLUGINS_DIR}/platforms/qdirect2d$<$<CONFIG:Debug>:d>.dll
DESTINATION "platforms") DESTINATION "platforms")
install(FILES ${PLUGINS_DIR}/styles/qwindowsvistastyle$<$<CONFIG:Debug>:d>.dll DESTINATION "styles") 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}/platforminputcontexts/qtvirtualkeyboardplugin$<$<CONFIG:Debug>:d>.dll DESTINATION "platforminputcontexts")
install(FILES ${PLUGINS_DIR}/iconengines/qsvgicon$<$<CONFIG:Debug>:d>.dll DESTINATION "iconengines") install(FILES ${PLUGINS_DIR}/iconengines/qsvgicon$<$<CONFIG:Debug>:d>.dll DESTINATION "iconengines")
install(FILES install(FILES
${PLUGINS_DIR}/imageformats/qgif$<$<CONFIG:Debug>:d>.dll ${PLUGINS_DIR}/imageformats/qgif$<$<CONFIG:Debug>:d>.dll
${PLUGINS_DIR}/imageformats/qicns$<$<CONFIG:Debug>:d>.dll ${PLUGINS_DIR}/imageformats/qicns$<$<CONFIG:Debug>:d>.dll
${PLUGINS_DIR}/imageformats/qico$<$<CONFIG:Debug>:d>.dll ${PLUGINS_DIR}/imageformats/qico$<$<CONFIG:Debug>:d>.dll
${PLUGINS_DIR}/imageformats/qjpeg$<$<CONFIG:Debug>:d>.dll ${PLUGINS_DIR}/imageformats/qjpeg$<$<CONFIG:Debug>:d>.dll
${PLUGINS_DIR}/imageformats/qwebp$<$<CONFIG:Debug>:d>.dll ${PLUGINS_DIR}/imageformats/qwebp$<$<CONFIG:Debug>:d>.dll
DESTINATION "imageformats") DESTINATION "imageformats")
# install CA cert chains # install CA cert chains
install(FILES ${Qt5_PREFIX}/ssl/certs/ca-bundle.crt DESTINATION "ssl/certs") install(FILES ${Qt5_PREFIX}/ssl/certs/ca-bundle.crt DESTINATION "ssl/certs")
endif() endif()

View File

@ -1,23 +1,23 @@
if(WITH_XC_AUTOTYPE) if(WITH_XC_AUTOTYPE)
if(UNIX AND NOT APPLE) if(UNIX AND NOT APPLE)
find_package(X11) find_package(X11)
find_package(Qt5X11Extras 5.2) find_package(Qt5X11Extras 5.2)
if(PRINT_SUMMARY) if(PRINT_SUMMARY)
add_feature_info(libXi X11_Xi_FOUND "The X11 Xi Protocol library is required for auto-type") add_feature_info(libXi X11_Xi_FOUND "The X11 Xi Protocol library is required for auto-type")
add_feature_info(libXtst X11_XTest_FOUND "The X11 XTEST Protocol library is required for auto-type") add_feature_info(libXtst X11_XTest_FOUND "The X11 XTEST Protocol library is required for auto-type")
add_feature_info(Qt5X11Extras Qt5X11Extras_FOUND "The Qt5X11Extras library is required for auto-type") add_feature_info(Qt5X11Extras Qt5X11Extras_FOUND "The Qt5X11Extras library is required for auto-type")
endif()
if(X11_FOUND AND X11_Xi_FOUND AND X11_XTest_FOUND AND Qt5X11Extras_FOUND)
add_subdirectory(xcb)
endif()
elseif(APPLE)
add_subdirectory(mac)
elseif(WIN32)
add_subdirectory(windows)
endif() endif()
if(X11_FOUND AND X11_Xi_FOUND AND X11_XTest_FOUND AND Qt5X11Extras_FOUND) if(WITH_TESTS)
add_subdirectory(xcb) add_subdirectory(test)
endif() endif()
elseif(APPLE)
add_subdirectory(mac)
elseif(WIN32)
add_subdirectory(windows)
endif()
if(WITH_TESTS)
add_subdirectory(test)
endif()
endif() endif()

View File

@ -1,24 +1,20 @@
set(autotype_mac_SOURCES set(autotype_mac_SOURCES AutoTypeMac.cpp)
AutoTypeMac.cpp
)
set(autotype_mac_mm_SOURCES set(autotype_mac_mm_SOURCES AppKitImpl.mm)
AppKitImpl.mm
)
add_library(keepassx-autotype-cocoa MODULE ${autotype_mac_SOURCES} ${autotype_mac_mm_SOURCES}) add_library(keepassx-autotype-cocoa MODULE ${autotype_mac_SOURCES} ${autotype_mac_mm_SOURCES})
set_target_properties(keepassx-autotype-cocoa PROPERTIES LINK_FLAGS "-framework Foundation -framework AppKit -framework Carbon") set_target_properties(keepassx-autotype-cocoa PROPERTIES LINK_FLAGS "-framework Foundation -framework AppKit -framework Carbon")
target_link_libraries(keepassx-autotype-cocoa ${PROGNAME} Qt5::Core Qt5::Widgets) target_link_libraries(keepassx-autotype-cocoa ${PROGNAME} Qt5::Core Qt5::Widgets)
if(WITH_APP_BUNDLE) if(WITH_APP_BUNDLE)
add_custom_command(TARGET keepassx-autotype-cocoa add_custom_command(TARGET keepassx-autotype-cocoa
POST_BUILD POST_BUILD
COMMAND ${CMAKE_COMMAND} -E copy ${CMAKE_CURRENT_BINARY_DIR}/libkeepassx-autotype-cocoa.so ${PLUGIN_INSTALL_DIR} COMMAND ${CMAKE_COMMAND} -E copy ${CMAKE_CURRENT_BINARY_DIR}/libkeepassx-autotype-cocoa.so ${PLUGIN_INSTALL_DIR}
COMMAND ${MACDEPLOYQT_EXE} ${PROGNAME}.app -executable=${PLUGIN_INSTALL_DIR}/libkeepassx-autotype-cocoa.so -no-plugins COMMAND ${MACDEPLOYQT_EXE} ${PROGNAME}.app -executable=${PLUGIN_INSTALL_DIR}/libkeepassx-autotype-cocoa.so -no-plugins
WORKING_DIRECTORY ${CMAKE_BINARY_DIR}/src WORKING_DIRECTORY ${CMAKE_BINARY_DIR}/src
COMMENT "Deploying autotype plugin") COMMENT "Deploying autotype plugin")
else() else()
install(TARGETS keepassx-autotype-cocoa install(TARGETS keepassx-autotype-cocoa
BUNDLE DESTINATION . COMPONENT Runtime BUNDLE DESTINATION . COMPONENT Runtime
LIBRARY DESTINATION ${PLUGIN_INSTALL_DIR} COMPONENT Runtime) LIBRARY DESTINATION ${PLUGIN_INSTALL_DIR} COMPONENT Runtime)
endif() endif()

View File

@ -1,6 +1,4 @@
set(autotype_test_SOURCES set(autotype_test_SOURCES AutoTypeTest.cpp)
AutoTypeTest.cpp
)
add_library(keepassx-autotype-test MODULE ${autotype_test_SOURCES}) add_library(keepassx-autotype-test MODULE ${autotype_test_SOURCES})
target_link_libraries(keepassx-autotype-test keepassx_core ${autotype_LIB} Qt5::Core Qt5::Widgets) target_link_libraries(keepassx-autotype-test keepassx_core ${autotype_LIB} Qt5::Core Qt5::Widgets)

View File

@ -1,9 +1,7 @@
set(autotype_win_SOURCES set(autotype_win_SOURCES AutoTypeWindows.cpp)
AutoTypeWindows.cpp
)
add_library(keepassx-autotype-windows MODULE ${autotype_win_SOURCES}) add_library(keepassx-autotype-windows MODULE ${autotype_win_SOURCES})
target_link_libraries(keepassx-autotype-windows keepassx_core ${autotype_LIB} Qt5::Core Qt5::Widgets) target_link_libraries(keepassx-autotype-windows keepassx_core ${autotype_LIB} Qt5::Core Qt5::Widgets)
install(TARGETS keepassx-autotype-windows install(TARGETS keepassx-autotype-windows
BUNDLE DESTINATION . COMPONENT Runtime BUNDLE DESTINATION . COMPONENT Runtime
LIBRARY DESTINATION ${PLUGIN_INSTALL_DIR} COMPONENT Runtime) LIBRARY DESTINATION ${PLUGIN_INSTALL_DIR} COMPONENT Runtime)

View File

@ -1,8 +1,6 @@
include_directories(SYSTEM ${X11_X11_INCLUDE_PATH}) include_directories(SYSTEM ${X11_X11_INCLUDE_PATH})
set(autotype_XCB_SOURCES set(autotype_XCB_SOURCES AutoTypeXCB.cpp)
AutoTypeXCB.cpp
)
add_library(keepassx-autotype-xcb MODULE ${autotype_XCB_SOURCES}) add_library(keepassx-autotype-xcb MODULE ${autotype_XCB_SOURCES})
target_link_libraries(keepassx-autotype-xcb keepassx_core Qt5::Core Qt5::Widgets Qt5::X11Extras ${X11_X11_LIB} ${X11_Xi_LIB} ${X11_XTest_LIB}) target_link_libraries(keepassx-autotype-xcb keepassx_core Qt5::Core Qt5::Widgets Qt5::X11Extras ${X11_X11_LIB} ${X11_Xi_LIB} ${X11_XTest_LIB})

View File

@ -19,19 +19,18 @@ if(WITH_XC_BROWSER)
find_package(sodium 1.0.12 REQUIRED) find_package(sodium 1.0.12 REQUIRED)
set(keepassxcbrowser_SOURCES set(keepassxcbrowser_SOURCES
BrowserAccessControlDialog.cpp BrowserAccessControlDialog.cpp
BrowserAction.cpp BrowserAction.cpp
BrowserClients.cpp BrowserClients.cpp
BrowserEntryConfig.cpp BrowserEntryConfig.cpp
BrowserEntrySaveDialog.cpp BrowserEntrySaveDialog.cpp
BrowserOptionDialog.cpp BrowserOptionDialog.cpp
BrowserService.cpp BrowserService.cpp
BrowserSettings.cpp BrowserSettings.cpp
HostInstaller.cpp HostInstaller.cpp
NativeMessagingBase.cpp NativeMessagingBase.cpp
NativeMessagingHost.cpp NativeMessagingHost.cpp
Variant.cpp Variant.cpp)
)
add_library(keepassxcbrowser STATIC ${keepassxcbrowser_SOURCES}) add_library(keepassxcbrowser STATIC ${keepassxcbrowser_SOURCES})
target_link_libraries(keepassxcbrowser Qt5::Core Qt5::Concurrent Qt5::Widgets Qt5::Network sodium) target_link_libraries(keepassxcbrowser Qt5::Core Qt5::Concurrent Qt5::Widgets Qt5::Network sodium)

View File

@ -14,46 +14,46 @@
# along with this program. If not, see <http://www.gnu.org/licenses/>. # along with this program. If not, see <http://www.gnu.org/licenses/>.
set(cli_SOURCES set(cli_SOURCES
Add.cpp Add.cpp
Add.h Add.h
Clip.cpp Clip.cpp
Clip.h Clip.h
Command.cpp Command.cpp
Command.h Command.h
Diceware.cpp Diceware.cpp
Diceware.h Diceware.h
Edit.cpp Edit.cpp
Edit.h Edit.h
Estimate.cpp Estimate.cpp
Estimate.h Estimate.h
Extract.cpp Extract.cpp
Extract.h Extract.h
Generate.cpp Generate.cpp
Generate.h Generate.h
List.cpp List.cpp
List.h List.h
Locate.cpp Locate.cpp
Locate.h Locate.h
Merge.cpp Merge.cpp
Merge.h Merge.h
Remove.cpp Remove.cpp
Remove.h Remove.h
Show.cpp Show.cpp
Show.h) Show.h)
add_library(cli STATIC ${cli_SOURCES}) add_library(cli STATIC ${cli_SOURCES})
target_link_libraries(cli Qt5::Core Qt5::Widgets) target_link_libraries(cli Qt5::Core Qt5::Widgets)
add_executable(keepassxc-cli keepassxc-cli.cpp) add_executable(keepassxc-cli keepassxc-cli.cpp)
target_link_libraries(keepassxc-cli target_link_libraries(keepassxc-cli
cli cli
keepassx_core keepassx_core
Qt5::Core Qt5::Core
${GCRYPT_LIBRARIES} ${GCRYPT_LIBRARIES}
${ARGON2_LIBRARIES} ${ARGON2_LIBRARIES}
${GPGERROR_LIBRARIES} ${GPGERROR_LIBRARIES}
${ZLIB_LIBRARIES} ${ZLIB_LIBRARIES}
${ZXCVBN_LIBRARIES}) ${ZXCVBN_LIBRARIES})
install(TARGETS keepassxc-cli install(TARGETS keepassxc-cli
BUNDLE DESTINATION . COMPONENT Runtime BUNDLE DESTINATION . COMPONENT Runtime

View File

@ -1,3 +1,4 @@
# Copyright (C) 2018 KeePassXC Team <team@keepassxc.org>
# Copyright (C) 2010 Felix Geyer <debfx@fobos.de> # Copyright (C) 2010 Felix Geyer <debfx@fobos.de>
# #
# This program is free software: you can redistribute it and/or modify # This program is free software: you can redistribute it and/or modify
@ -13,7 +14,11 @@
# You should have received a copy of the GNU General Public License # You should have received a copy of the GNU General Public License
# along with this program. If not, see <http://www.gnu.org/licenses/>. # along with this program. If not, see <http://www.gnu.org/licenses/>.
include_directories(${CMAKE_CURRENT_SOURCE_DIR} ${CMAKE_CURRENT_BINARY_DIR} ${CMAKE_SOURCE_DIR}/src ${CMAKE_CURRENT_BINARY_DIR}/../src) include_directories(
${CMAKE_CURRENT_SOURCE_DIR}
${CMAKE_CURRENT_BINARY_DIR}
${CMAKE_SOURCE_DIR}/src
${CMAKE_CURRENT_BINARY_DIR}/../src)
add_definitions(-DQT_TEST_LIB) add_definitions(-DQT_TEST_LIB)
@ -21,99 +26,98 @@ set(KEEPASSX_TEST_DATA_DIR ${CMAKE_CURRENT_SOURCE_DIR}/data)
configure_file(config-keepassx-tests.h.cmake ${CMAKE_CURRENT_BINARY_DIR}/config-keepassx-tests.h) configure_file(config-keepassx-tests.h.cmake ${CMAKE_CURRENT_BINARY_DIR}/config-keepassx-tests.h)
macro(parse_arguments prefix arg_names option_names) macro(parse_arguments prefix arg_names option_names)
set(DEFAULT_ARGS) set(DEFAULT_ARGS)
foreach(arg_name ${arg_names}) foreach(arg_name ${arg_names})
set(${prefix}_${arg_name}) set(${prefix}_${arg_name})
endforeach(arg_name) endforeach(arg_name)
foreach(option ${option_names}) foreach(option ${option_names})
set(${prefix}_${option} FALSE) set(${prefix}_${option} FALSE)
endforeach(option) endforeach(option)
set(current_arg_name DEFAULT_ARGS) set(current_arg_name DEFAULT_ARGS)
set(current_arg_list) set(current_arg_list)
foreach(arg ${ARGN}) foreach(arg ${ARGN})
set(larg_names ${arg_names}) set(larg_names ${arg_names})
list(FIND larg_names "${arg}" is_arg_name) list(FIND larg_names "${arg}" is_arg_name)
if(is_arg_name GREATER -1) if(is_arg_name GREATER -1)
set(${prefix}_${current_arg_name} ${current_arg_list}) set(${prefix}_${current_arg_name} ${current_arg_list})
set(current_arg_name ${arg}) set(current_arg_name ${arg})
set(current_arg_list) set(current_arg_list)
else() else()
set(loption_names ${option_names}) set(loption_names ${option_names})
list(FIND loption_names "${arg}" is_option) list(FIND loption_names "${arg}" is_option)
if(is_option GREATER -1) if(is_option GREATER -1)
set(${prefix}_${arg} TRUE) set(${prefix}_${arg} TRUE)
else(is_option GREATER -1) else(is_option GREATER -1)
set(current_arg_list ${current_arg_list} ${arg}) set(current_arg_list ${current_arg_list} ${arg})
endif() endif()
endif() endif()
endforeach(arg) endforeach(arg)
set(${prefix}_${current_arg_name} ${current_arg_list}) set(${prefix}_${current_arg_name} ${current_arg_list})
endmacro(parse_arguments) endmacro(parse_arguments)
macro(add_unit_test) macro(add_unit_test)
parse_arguments(TEST "NAME;SOURCES;LIBS" "" ${ARGN}) parse_arguments(TEST "NAME;SOURCES;LIBS" "" ${ARGN})
set(_test_NAME ${TEST_NAME}) set(_test_NAME ${TEST_NAME})
set(_srcList ${TEST_SOURCES}) set(_srcList ${TEST_SOURCES})
add_executable(${_test_NAME} ${_srcList}) add_executable(${_test_NAME} ${_srcList})
target_link_libraries(${_test_NAME} ${TEST_LIBS}) target_link_libraries(${_test_NAME} ${TEST_LIBS})
if(NOT TEST_OUTPUT) if(NOT TEST_OUTPUT)
set(TEST_OUTPUT plaintext) set(TEST_OUTPUT plaintext)
endif(NOT TEST_OUTPUT) endif(NOT TEST_OUTPUT)
set(TEST_OUTPUT ${TEST_OUTPUT} CACHE STRING "The output to generate when running the QTest unit tests") set(TEST_OUTPUT ${TEST_OUTPUT} CACHE STRING "The output to generate when running the QTest unit tests")
if(KDE4_TEST_OUTPUT STREQUAL "xml") if(KDE4_TEST_OUTPUT STREQUAL "xml")
add_test(${_test_NAME} ${_test_NAME} -xml -o ${_test_NAME}.tml) add_test(${_test_NAME} ${_test_NAME} -xml -o ${_test_NAME}.tml)
else(KDE4_TEST_OUTPUT STREQUAL "xml") else(KDE4_TEST_OUTPUT STREQUAL "xml")
add_test(${_test_NAME} ${_test_NAME}) add_test(${_test_NAME} ${_test_NAME})
endif(KDE4_TEST_OUTPUT STREQUAL "xml") endif(KDE4_TEST_OUTPUT STREQUAL "xml")
if(NOT MSVC_IDE) #not needed for the ide if(NOT MSVC_IDE) #not needed for the ide
# if the tests are EXCLUDE_FROM_ALL, add a target "buildtests" to build all tests # if the tests are EXCLUDE_FROM_ALL, add a target "buildtests" to build all tests
if(NOT WITH_TESTS) if(NOT WITH_TESTS)
get_directory_property(_buildtestsAdded BUILDTESTS_ADDED) get_directory_property(_buildtestsAdded BUILDTESTS_ADDED)
if(NOT _buildtestsAdded) if(NOT _buildtestsAdded)
add_custom_target(buildtests) add_custom_target(buildtests)
set_directory_properties(PROPERTIES BUILDTESTS_ADDED TRUE) set_directory_properties(PROPERTIES BUILDTESTS_ADDED TRUE)
endif() endif()
add_dependencies(buildtests ${_test_NAME}) add_dependencies(buildtests ${_test_NAME})
endif()
endif() endif()
endif()
endmacro(add_unit_test) endmacro(add_unit_test)
set(TEST_LIBRARIES set(TEST_LIBRARIES
keepassx_core keepassx_core
${keepasshttp_LIB} ${keepasshttp_LIB}
${autotype_LIB} ${autotype_LIB}
Qt5::Core Qt5::Core
Qt5::Concurrent Qt5::Concurrent
Qt5::Widgets Qt5::Widgets
Qt5::Test Qt5::Test
${GCRYPT_LIBRARIES} ${GCRYPT_LIBRARIES}
${GPGERROR_LIBRARIES} ${GPGERROR_LIBRARIES}
${ZLIB_LIBRARIES} ${ZLIB_LIBRARIES})
)
set(testsupport_SOURCES TestGlobal.h modeltest.cpp FailDevice.cpp mock/MockClock.cpp util/TemporaryFile.cpp) set(testsupport_SOURCES TestGlobal.h modeltest.cpp FailDevice.cpp mock/MockClock.cpp util/TemporaryFile.cpp)
add_library(testsupport STATIC ${testsupport_SOURCES}) add_library(testsupport STATIC ${testsupport_SOURCES})
target_link_libraries(testsupport Qt5::Core Qt5::Concurrent Qt5::Widgets Qt5::Test) target_link_libraries(testsupport Qt5::Core Qt5::Concurrent Qt5::Widgets Qt5::Test)
if(YUBIKEY_FOUND) if(YUBIKEY_FOUND)
set(TEST_LIBRARIES ${TEST_LIBRARIES} ${YUBIKEY_LIBRARIES}) set(TEST_LIBRARIES ${TEST_LIBRARIES} ${YUBIKEY_LIBRARIES})
endif() endif()
add_unit_test(NAME testgroup SOURCES TestGroup.cpp add_unit_test(NAME testgroup SOURCES TestGroup.cpp
LIBS testsupport ${TEST_LIBRARIES}) LIBS testsupport ${TEST_LIBRARIES})
add_unit_test(NAME testkdbx2 SOURCES TestKdbx2.cpp add_unit_test(NAME testkdbx2 SOURCES TestKdbx2.cpp
LIBS ${TEST_LIBRARIES}) LIBS ${TEST_LIBRARIES})
add_unit_test(NAME testkdbx3 SOURCES TestKeePass2Format.cpp FailDevice.cpp TestKdbx3.cpp add_unit_test(NAME testkdbx3 SOURCES TestKeePass2Format.cpp FailDevice.cpp TestKdbx3.cpp
LIBS testsupport ${TEST_LIBRARIES}) LIBS testsupport ${TEST_LIBRARIES})
add_unit_test(NAME testkdbx4 SOURCES TestKeePass2Format.cpp FailDevice.cpp mock/MockChallengeResponseKey.cpp TestKdbx4.cpp add_unit_test(NAME testkdbx4 SOURCES TestKeePass2Format.cpp FailDevice.cpp mock/MockChallengeResponseKey.cpp TestKdbx4.cpp
LIBS testsupport ${TEST_LIBRARIES}) LIBS testsupport ${TEST_LIBRARIES})
add_unit_test(NAME testkeys SOURCES TestKeys.cpp mock/MockChallengeResponseKey.cpp add_unit_test(NAME testkeys SOURCES TestKeys.cpp mock/MockChallengeResponseKey.cpp
LIBS ${TEST_LIBRARIES}) LIBS ${TEST_LIBRARIES})
@ -137,7 +141,7 @@ add_unit_test(NAME testkeepass2randomstream SOURCES TestKeePass2RandomStream.cpp
LIBS ${TEST_LIBRARIES}) LIBS ${TEST_LIBRARIES})
add_unit_test(NAME testmodified SOURCES TestModified.cpp add_unit_test(NAME testmodified SOURCES TestModified.cpp
LIBS testsupport ${TEST_LIBRARIES}) LIBS testsupport ${TEST_LIBRARIES})
add_unit_test(NAME testdeletedobjects SOURCES TestDeletedObjects.cpp add_unit_test(NAME testdeletedobjects SOURCES TestDeletedObjects.cpp
LIBS ${TEST_LIBRARIES}) LIBS ${TEST_LIBRARIES})
@ -149,14 +153,14 @@ add_unit_test(NAME testwildcardmatcher SOURCES TestWildcardMatcher.cpp
LIBS ${TEST_LIBRARIES}) LIBS ${TEST_LIBRARIES})
if(WITH_XC_AUTOTYPE) if(WITH_XC_AUTOTYPE)
add_unit_test(NAME testautotype SOURCES TestAutoType.cpp add_unit_test(NAME testautotype SOURCES TestAutoType.cpp
LIBS ${TEST_LIBRARIES}) LIBS ${TEST_LIBRARIES})
set_target_properties(testautotype PROPERTIES ENABLE_EXPORTS ON) set_target_properties(testautotype PROPERTIES ENABLE_EXPORTS ON)
endif() endif()
if(WITH_XC_SSHAGENT) if(WITH_XC_SSHAGENT)
add_unit_test(NAME testopensshkey SOURCES TestOpenSSHKey.cpp add_unit_test(NAME testopensshkey SOURCES TestOpenSSHKey.cpp
LIBS sshagent ${TEST_LIBRARIES}) LIBS sshagent ${TEST_LIBRARIES})
endif() endif()
add_unit_test(NAME testentry SOURCES TestEntry.cpp add_unit_test(NAME testentry SOURCES TestEntry.cpp
@ -183,7 +187,7 @@ add_unit_test(NAME testrandom SOURCES TestRandom.cpp
add_unit_test(NAME testentrysearcher SOURCES TestEntrySearcher.cpp add_unit_test(NAME testentrysearcher SOURCES TestEntrySearcher.cpp
LIBS ${TEST_LIBRARIES}) LIBS ${TEST_LIBRARIES})
add_unit_test(NAME testcsveporter SOURCES TestCsvExporter.cpp add_unit_test(NAME testcsvexporter SOURCES TestCsvExporter.cpp
LIBS ${TEST_LIBRARIES}) LIBS ${TEST_LIBRARIES})
add_unit_test(NAME testykchallengeresponsekey add_unit_test(NAME testykchallengeresponsekey
@ -198,9 +202,9 @@ add_unit_test(NAME testtools SOURCES TestTools.cpp
if(WITH_GUI_TESTS) if(WITH_GUI_TESTS)
# CLI clip tests need X environment on Linux # CLI clip tests need X environment on Linux
add_unit_test(NAME testcli SOURCES TestCli.cpp add_unit_test(NAME testcli SOURCES TestCli.cpp
LIBS testsupport cli ${TEST_LIBRARIES}) LIBS testsupport cli ${TEST_LIBRARIES})
add_subdirectory(gui) add_subdirectory(gui)
endif(WITH_GUI_TESTS) endif(WITH_GUI_TESTS)