mirror of
https://github.com/keepassxreboot/keepassxc.git
synced 2024-12-25 07:19:42 -05:00
Fix linker definition clashes between libargon2 and libsodium on Windows
This commit is contained in:
parent
002d374f0c
commit
21a6c0fd89
@ -14,8 +14,21 @@
|
||||
# along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||
|
||||
find_path(ARGON2_INCLUDE_DIR argon2.h)
|
||||
find_library(ARGON2_LIBRARIES argon2)
|
||||
if (MINGW)
|
||||
# find static library on Windows, and redefine used symbols to
|
||||
# avoid definition name conflicts with libsodium
|
||||
find_library(ARGON2_SYS_LIBRARIES libargon2.a)
|
||||
message(STATUS "Patching libargon2...")
|
||||
execute_process(COMMAND objcopy
|
||||
--redefine-sym argon2_hash=libargon2_argon2_hash
|
||||
--redefine-sym argon2_error_message=libargon2_argon2_error_message
|
||||
${ARGON2_SYS_LIBRARIES} ${CMAKE_BINARY_DIR}/libargon2_patched.a
|
||||
WORKING_DIRECTORY ${CMAKE_BINARY_DIR})
|
||||
find_library(ARGON2_LIBRARIES libargon2_patched.a PATHS ${CMAKE_BINARY_DIR} NO_DEFAULT_PATH)
|
||||
else()
|
||||
find_library(ARGON2_LIBRARIES argon2)
|
||||
endif()
|
||||
mark_as_advanced(ARGON2_LIBRARIES ARGON2_INCLUDE_DIR)
|
||||
|
||||
include(FindPackageHandleStandardArgs)
|
||||
find_package_handle_standard_args(Argon2 DEFAULT_MSG ARGON2_LIBRARIES ARGON2_INCLUDE_DIR)
|
||||
find_package_handle_standard_args(Argon2 DEFAULT_MSG ARGON2_LIBRARIES ARGON2_INCLUDE_DIR)
|
||||
|
34
src/crypto/argon2/argon2.h
Normal file
34
src/crypto/argon2/argon2.h
Normal file
@ -0,0 +1,34 @@
|
||||
/*
|
||||
* Copyright (C) 2018 KeePassXC Team <team@keepassxc.org>
|
||||
*
|
||||
* 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
|
||||
* the Free Software Foundation, either version 2 or (at your option)
|
||||
* version 3 of the License.
|
||||
*
|
||||
* This program is distributed in the hope that it will be useful,
|
||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
* GNU General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU General Public License
|
||||
* along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||
*/
|
||||
|
||||
#ifndef KEEPASSXC_CRYPTO_ARGON2_H
|
||||
#define KEEPASSXC_CRYPTO_ARGON2_H
|
||||
|
||||
/*
|
||||
Argon2 wrapper header with redefined symbols to be used with the
|
||||
patched libargon2 binary which is generated by the build system.
|
||||
This is to avoid link-time definition clashes with libsodium on Windows.
|
||||
*/
|
||||
|
||||
#ifdef Q_OS_WIN
|
||||
#define argon2_hash libargon2_argon2_hash
|
||||
#define argon2_error_message libargon2_argon2_error_message
|
||||
#endif
|
||||
|
||||
#include <argon2.h>
|
||||
|
||||
#endif //KEEPASSXC_CRYPTO_ARGON2_H
|
@ -18,8 +18,8 @@
|
||||
#include "Argon2Kdf.h"
|
||||
|
||||
#include <QtConcurrent>
|
||||
#include <argon2.h>
|
||||
|
||||
#include "crypto/argon2/argon2.h"
|
||||
#include "format/KeePass2.h"
|
||||
|
||||
/**
|
||||
|
Loading…
Reference in New Issue
Block a user