forked from qt-creator/qt-creator
SSH: Link Botan objects into libQtcSsh.
Using Botan as a shared library is dangerous due to the use of dynamic_cast and exceptions, which both reproducibly fail to work on MacOs. Since there are no other users of Botan, we just add its objects to the SSH library. Change-Id: Ic79f081d2e1231a52feef02ef5b68761692f1110 Reviewed-by: Eike Ziller <eike.ziller@digia.com>
This commit is contained in:
committed by
Eike Ziller
parent
f6d5ba9b1a
commit
55c44bf238
@@ -16,7 +16,6 @@ Project {
|
||||
"lib/qtcreator/qtcomponents/qtcomponents.qbs",
|
||||
"share/share.qbs",
|
||||
"share/qtcreator/translations/translations.qbs",
|
||||
"src/libs/3rdparty/botan/botan.qbs",
|
||||
"src/libs/aggregation/aggregation.qbs",
|
||||
"src/libs/cplusplus/cplusplus.qbs",
|
||||
"src/libs/extensionsystem/extensionsystem.qbs",
|
||||
|
4
src/libs/3rdparty/3rdparty.pro
vendored
4
src/libs/3rdparty/3rdparty.pro
vendored
@@ -1,4 +0,0 @@
|
||||
TEMPLATE = subdirs
|
||||
CONFIG += ordered
|
||||
|
||||
SUBDIRS += botan
|
46
src/libs/3rdparty/botan/botan.pri
vendored
46
src/libs/3rdparty/botan/botan.pri
vendored
@@ -1,2 +1,46 @@
|
||||
INCLUDEPATH *= $$PWD/..
|
||||
LIBS *= -l$$qtLibraryName(Botan)
|
||||
HEADERS += $$PWD/botan.h
|
||||
SOURCES += $$PWD/botan.cpp
|
||||
|
||||
CONFIG += exceptions
|
||||
|
||||
DEPENDPATH += .
|
||||
|
||||
DEFINES += BOTAN_DLL="\"\""
|
||||
unix:DEFINES += BOTAN_TARGET_OS_HAS_GETTIMEOFDAY BOTAN_HAS_ALLOC_MMAP \
|
||||
BOTAN_HAS_ENTROPY_SRC_DEV_RANDOM BOTAN_HAS_ENTROPY_SRC_EGD BOTAN_HAS_ENTROPY_SRC_FTW \
|
||||
BOTAN_HAS_ENTROPY_SRC_UNIX BOTAN_HAS_MUTEX_PTHREAD BOTAN_HAS_PIPE_UNIXFD_IO
|
||||
*linux*:DEFINES += BOTAN_TARGET_OS_IS_LINUX BOTAN_TARGET_OS_HAS_CLOCK_GETTIME \
|
||||
BOTAN_TARGET_OS_HAS_DLOPEN BOTAN_TARGET_OS_HAS_GMTIME_R BOTAN_TARGET_OS_HAS_POSIX_MLOCK \
|
||||
BOTAN_HAS_DYNAMICALLY_LOADED_ENGINE BOTAN_HAS_DYNAMIC_LOADER
|
||||
macx:DEFINES += BOTAN_TARGET_OS_IS_DARWIN
|
||||
*g++*:DEFINES += BOTAN_BUILD_COMPILER_IS_GCC
|
||||
*clang*:DEFINES += BOTAN_BUILD_COMPILER_IS_CLANG
|
||||
*icc*:DEFINES += BOTAN_BUILD_COMPILER_IS_INTEL
|
||||
|
||||
win32 {
|
||||
DEFINES += BOTAN_TARGET_OS_IS_WINDOWS \
|
||||
BOTAN_TARGET_OS_HAS_LOADLIBRARY BOTAN_TARGET_OS_HAS_WIN32_GET_SYSTEMTIME \
|
||||
BOTAN_TARGET_OS_HAS_WIN32_VIRTUAL_LOCK BOTAN_HAS_DYNAMICALLY_LOADED_ENGINE \
|
||||
BOTAN_HAS_DYNAMIC_LOADER BOTAN_HAS_ENTROPY_SRC_CAPI BOTAN_HAS_ENTROPY_SRC_WIN32 \
|
||||
BOTAN_HAS_MUTEX_WIN32
|
||||
|
||||
win32-msvc* {
|
||||
QMAKE_CXXFLAGS += -wd4251 -wd4290 -wd4250
|
||||
DEFINES += BOTAN_BUILD_COMPILER_IS_MSVC BOTAN_TARGET_OS_HAS_GMTIME_S
|
||||
} else {
|
||||
QMAKE_CFLAGS += -fpermissive -finline-functions -Wno-long-long
|
||||
QMAKE_CXXFLAGS += -fpermissive -finline-functions -Wno-long-long
|
||||
}
|
||||
LIBS += -ladvapi32 -luser32
|
||||
}
|
||||
|
||||
unix:*-g++* {
|
||||
QMAKE_CFLAGS += -fPIC -ansi -fpermissive -finline-functions -Wno-long-long
|
||||
QMAKE_CXXFLAGS += -fPIC -ansi -fpermissive -finline-functions -Wno-long-long
|
||||
QMAKE_CXXFLAGS_HIDESYMS -= -fvisibility-inlines-hidden # for ubuntu 7.04
|
||||
}
|
||||
|
||||
linux*|freebsd* {
|
||||
LIBS += -lrt
|
||||
}
|
||||
|
53
src/libs/3rdparty/botan/botan.pro
vendored
53
src/libs/3rdparty/botan/botan.pro
vendored
@@ -1,53 +0,0 @@
|
||||
TEMPLATE = lib
|
||||
TARGET = Botan
|
||||
|
||||
PRECOMPILED_HEADER = ../precompiled_headers/botan_pch.h
|
||||
|
||||
CONFIG += exceptions
|
||||
|
||||
include(../../../qtcreatorlibrary.pri)
|
||||
|
||||
DEPENDPATH += .
|
||||
INCLUDEPATH += .
|
||||
|
||||
DEFINES += BOTAN_DLL=Q_DECL_EXPORT
|
||||
unix:DEFINES += BOTAN_TARGET_OS_HAS_GETTIMEOFDAY BOTAN_HAS_ALLOC_MMAP \
|
||||
BOTAN_HAS_ENTROPY_SRC_DEV_RANDOM BOTAN_HAS_ENTROPY_SRC_EGD BOTAN_HAS_ENTROPY_SRC_FTW \
|
||||
BOTAN_HAS_ENTROPY_SRC_UNIX BOTAN_HAS_MUTEX_PTHREAD BOTAN_HAS_PIPE_UNIXFD_IO
|
||||
*linux*:DEFINES += BOTAN_TARGET_OS_IS_LINUX BOTAN_TARGET_OS_HAS_CLOCK_GETTIME \
|
||||
BOTAN_TARGET_OS_HAS_DLOPEN BOTAN_TARGET_OS_HAS_GMTIME_R BOTAN_TARGET_OS_HAS_POSIX_MLOCK \
|
||||
BOTAN_HAS_DYNAMICALLY_LOADED_ENGINE BOTAN_HAS_DYNAMIC_LOADER
|
||||
macx:DEFINES += BOTAN_TARGET_OS_IS_DARWIN
|
||||
*g++*:DEFINES += BOTAN_BUILD_COMPILER_IS_GCC
|
||||
*clang*:DEFINES += BOTAN_BUILD_COMPILER_IS_CLANG
|
||||
*icc*:DEFINES += BOTAN_BUILD_COMPILER_IS_INTEL
|
||||
|
||||
win32 {
|
||||
DEFINES += BOTAN_TARGET_OS_IS_WINDOWS \
|
||||
BOTAN_TARGET_OS_HAS_LOADLIBRARY BOTAN_TARGET_OS_HAS_WIN32_GET_SYSTEMTIME \
|
||||
BOTAN_TARGET_OS_HAS_WIN32_VIRTUAL_LOCK BOTAN_HAS_DYNAMICALLY_LOADED_ENGINE \
|
||||
BOTAN_HAS_DYNAMIC_LOADER BOTAN_HAS_ENTROPY_SRC_CAPI BOTAN_HAS_ENTROPY_SRC_WIN32 \
|
||||
BOTAN_HAS_MUTEX_WIN32
|
||||
|
||||
win32-msvc* {
|
||||
QMAKE_CXXFLAGS += -wd4251 -wd4290 -wd4250
|
||||
DEFINES += BOTAN_BUILD_COMPILER_IS_MSVC BOTAN_TARGET_OS_HAS_GMTIME_S
|
||||
} else {
|
||||
QMAKE_CFLAGS += -fpermissive -finline-functions -Wno-long-long
|
||||
QMAKE_CXXFLAGS += -fpermissive -finline-functions -Wno-long-long
|
||||
}
|
||||
LIBS += -ladvapi32 -luser32
|
||||
}
|
||||
|
||||
unix:*-g++* {
|
||||
QMAKE_CFLAGS += -fPIC -ansi -fpermissive -finline-functions -Wno-long-long
|
||||
QMAKE_CXXFLAGS += -fPIC -ansi -fpermissive -finline-functions -Wno-long-long
|
||||
QMAKE_CXXFLAGS_HIDESYMS -= -fvisibility-inlines-hidden # for ubuntu 7.04
|
||||
}
|
||||
|
||||
HEADERS += botan.h
|
||||
SOURCES += botan.cpp
|
||||
|
||||
linux*|freebsd* {
|
||||
LIBS += -lrt
|
||||
}
|
70
src/libs/3rdparty/botan/botan.qbs
vendored
70
src/libs/3rdparty/botan/botan.qbs
vendored
@@ -1,70 +0,0 @@
|
||||
import qbs.base 1.0
|
||||
import "../../QtcLibrary.qbs" as QtcLibrary
|
||||
|
||||
QtcLibrary {
|
||||
name: "Botan"
|
||||
|
||||
Depends { name: "cpp" }
|
||||
Depends { name: "Qt.core" }
|
||||
|
||||
cpp.includePaths: '.'
|
||||
cpp.dynamicLibraries: {
|
||||
if (qbs.targetOS == "windows") {
|
||||
return [
|
||||
"advapi32",
|
||||
"user32"
|
||||
]
|
||||
} else {
|
||||
return ["rt", "dl"]
|
||||
}
|
||||
}
|
||||
|
||||
cpp.defines: {
|
||||
var result = ["BOTAN_DLL=Q_DECL_EXPORT"]
|
||||
if (qbs.toolchain == "msvc")
|
||||
result.push("BOTAN_BUILD_COMPILER_IS_MSVC", "BOTAN_TARGET_OS_HAS_GMTIME_S")
|
||||
if (qbs.toolchain == "gcc" || qbs.toolchain == "mingw")
|
||||
result.push("BOTAN_BUILD_COMPILER_IS_GCC")
|
||||
if (qbs.targetOS == "linux")
|
||||
result.push("BOTAN_TARGET_OS_IS_LINUX", "BOTAN_TARGET_OS_HAS_CLOCK_GETTIME",
|
||||
"BOTAN_TARGET_OS_HAS_DLOPEN", " BOTAN_TARGET_OS_HAS_GMTIME_R",
|
||||
"BOTAN_TARGET_OS_HAS_POSIX_MLOCK", "BOTAN_HAS_DYNAMICALLY_LOADED_ENGINE",
|
||||
"BOTAN_HAS_DYNAMIC_LOADER", "BOTAN_TARGET_OS_HAS_GETTIMEOFDAY",
|
||||
"BOTAN_HAS_ALLOC_MMAP", "BOTAN_HAS_ENTROPY_SRC_DEV_RANDOM",
|
||||
"BOTAN_HAS_ENTROPY_SRC_EGD", "BOTAN_HAS_ENTROPY_SRC_FTW",
|
||||
"BOTAN_HAS_ENTROPY_SRC_UNIX", "BOTAN_HAS_MUTEX_PTHREAD", "BOTAN_HAS_PIPE_UNIXFD_IO")
|
||||
if (qbs.targetOS == "mac")
|
||||
result.push("BOTAN_TARGET_OS_IS_DARWIN", "BOTAN_TARGET_OS_HAS_GETTIMEOFDAY",
|
||||
"BOTAN_HAS_ALLOC_MMAP", "BOTAN_HAS_ENTROPY_SRC_DEV_RANDOM",
|
||||
"BOTAN_HAS_ENTROPY_SRC_EGD", "BOTAN_HAS_ENTROPY_SRC_FTW",
|
||||
"BOTAN_HAS_ENTROPY_SRC_UNIX", "BOTAN_HAS_MUTEX_PTHREAD", "BOTAN_HAS_PIPE_UNIXFD_IO")
|
||||
if (qbs.targetOS == "windows")
|
||||
result.push("BOTAN_TARGET_OS_IS_WINDOWS",
|
||||
"BOTAN_TARGET_OS_HAS_LOADLIBRARY", "BOTAN_TARGET_OS_HAS_WIN32_GET_SYSTEMTIME",
|
||||
"BOTAN_TARGET_OS_HAS_WIN32_VIRTUAL_LOCK", "BOTAN_HAS_DYNAMICALLY_LOADED_ENGINE",
|
||||
"BOTAN_HAS_DYNAMIC_LOADER", "BOTAN_HAS_ENTROPY_SRC_CAPI",
|
||||
"BOTAN_HAS_ENTROPY_SRC_WIN32", "BOTAN_HAS_MUTEX_WIN32")
|
||||
return base.concat(result)
|
||||
}
|
||||
|
||||
Properties {
|
||||
condition: qbs.toolchain == "mingw"
|
||||
cpp.cxxFlags: [
|
||||
"-fpermissive",
|
||||
"-finline-functions",
|
||||
"-Wno-long-long"
|
||||
]
|
||||
}
|
||||
|
||||
files: [ "botan.h", "botan.cpp" ]
|
||||
|
||||
ProductModule {
|
||||
Depends { name: "cpp" }
|
||||
cpp.linkerFlags: {
|
||||
if (qbs.toolchain == "mingw") {
|
||||
return ["-Wl,--enable-auto-import"]
|
||||
}
|
||||
}
|
||||
cpp.includePaths: '..'
|
||||
}
|
||||
}
|
@@ -1,49 +0,0 @@
|
||||
/****************************************************************************
|
||||
**
|
||||
** Copyright (C) 2009 Digia Plc and/or its subsidiary(-ies).
|
||||
** Contact: http://www.qt-project.org/legal
|
||||
**
|
||||
** This file is part of Qt Creator.
|
||||
**
|
||||
** Commercial License Usage
|
||||
** Licensees holding valid commercial Qt licenses may use this file in
|
||||
** accordance with the commercial license agreement provided with the
|
||||
** Software or, alternatively, in accordance with the terms contained in
|
||||
** a written agreement between you and Digia. For licensing terms and
|
||||
** conditions see http://qt.digia.com/licensing. For further information
|
||||
** use the contact form at http://qt.digia.com/contact-us.
|
||||
**
|
||||
** GNU Lesser General Public License Usage
|
||||
** Alternatively, this file may be used under the terms of the GNU Lesser
|
||||
** General Public License version 2.1 as published by the Free Software
|
||||
** Foundation and appearing in the file LICENSE.LGPL included in the
|
||||
** packaging of this file. Please review the following information to
|
||||
** ensure the GNU Lesser General Public License version 2.1 requirements
|
||||
** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
|
||||
**
|
||||
** In addition, as a special exception, Digia gives you certain additional
|
||||
** rights. These rights are described in the Digia Qt LGPL Exception
|
||||
** version 1.1, included in the file LGPL_EXCEPTION.txt in this package.
|
||||
**
|
||||
****************************************************************************/
|
||||
|
||||
#if defined __cplusplus
|
||||
#include <QtGlobal>
|
||||
|
||||
#ifdef Q_WS_WIN
|
||||
# define _POSIX_
|
||||
# include <limits.h>
|
||||
# undef _POSIX_
|
||||
#endif
|
||||
|
||||
#include "../botan/botan.h"
|
||||
|
||||
#include <map>
|
||||
#include <fstream>
|
||||
#include <memory>
|
||||
#include <algorithm>
|
||||
#include <iostream>
|
||||
#include <vector>
|
||||
#include <string>
|
||||
|
||||
#endif
|
@@ -5,7 +5,6 @@ QT += core gui
|
||||
# aggregation and extensionsystem are directly in src.pro
|
||||
# because of dependencies of app
|
||||
SUBDIRS = \
|
||||
3rdparty \
|
||||
utils \
|
||||
utils/process_stub.pro \
|
||||
languageutils \
|
||||
|
@@ -65,3 +65,5 @@ HEADERS = $$PWD/sshsendfacility_p.h \
|
||||
$$PWD/ssh_global.h
|
||||
|
||||
FORMS = $$PWD/sshkeycreationdialog.ui
|
||||
|
||||
include(../3rdparty/botan/botan.pri)
|
||||
|
@@ -4,17 +4,17 @@ import "../QtcLibrary.qbs" as QtcLibrary
|
||||
QtcLibrary {
|
||||
name: "QtcSsh"
|
||||
|
||||
cpp.defines: base.concat(["QSSH_LIBRARY"])
|
||||
cpp.defines: base.concat(["QSSH_LIBRARY"]).concat(botanDefines)
|
||||
cpp.dynamicLibraries: botanLibs
|
||||
cpp.includePaths: [
|
||||
".",
|
||||
"..",
|
||||
"../..",
|
||||
buildDirectory
|
||||
]
|
||||
].concat(botanIncludes)
|
||||
|
||||
Depends { name: "cpp" }
|
||||
Depends { name: "Qt"; submodules: ["widgets", "network" ] }
|
||||
Depends { name: "Botan" }
|
||||
|
||||
files: [
|
||||
"sftpchannel.h", "sftpchannel_p.h", "sftpchannel.cpp",
|
||||
@@ -46,7 +46,48 @@ QtcLibrary {
|
||||
"sshexception_p.h",
|
||||
"sshpseudoterminal.h",
|
||||
"sshbotanconversions_p.h"
|
||||
]
|
||||
].concat(botanFiles)
|
||||
|
||||
property var botanIncludes: ["../3rdparty"]
|
||||
property var botanLibs: qbs.targetOS === "windows" ? ["advapi32", "user32"] : ["rt", "dl"]
|
||||
property var botanDefines: {
|
||||
var result = ['BOTAN_DLL=""']
|
||||
if (qbs.toolchain === "msvc")
|
||||
result.push("BOTAN_BUILD_COMPILER_IS_MSVC", "BOTAN_TARGET_OS_HAS_GMTIME_S")
|
||||
if (qbs.toolchain === "gcc" || qbs.toolchain === "mingw")
|
||||
result.push("BOTAN_BUILD_COMPILER_IS_GCC")
|
||||
if (qbs.targetOS === "linux")
|
||||
result.push("BOTAN_TARGET_OS_IS_LINUX", "BOTAN_TARGET_OS_HAS_CLOCK_GETTIME",
|
||||
"BOTAN_TARGET_OS_HAS_DLOPEN", " BOTAN_TARGET_OS_HAS_GMTIME_R",
|
||||
"BOTAN_TARGET_OS_HAS_POSIX_MLOCK", "BOTAN_HAS_DYNAMICALLY_LOADED_ENGINE",
|
||||
"BOTAN_HAS_DYNAMIC_LOADER", "BOTAN_TARGET_OS_HAS_GETTIMEOFDAY",
|
||||
"BOTAN_HAS_ALLOC_MMAP", "BOTAN_HAS_ENTROPY_SRC_DEV_RANDOM",
|
||||
"BOTAN_HAS_ENTROPY_SRC_EGD", "BOTAN_HAS_ENTROPY_SRC_FTW",
|
||||
"BOTAN_HAS_ENTROPY_SRC_UNIX", "BOTAN_HAS_MUTEX_PTHREAD", "BOTAN_HAS_PIPE_UNIXFD_IO")
|
||||
if (qbs.targetOS === "mac")
|
||||
result.push("BOTAN_TARGET_OS_IS_DARWIN", "BOTAN_TARGET_OS_HAS_GETTIMEOFDAY",
|
||||
"BOTAN_HAS_ALLOC_MMAP", "BOTAN_HAS_ENTROPY_SRC_DEV_RANDOM",
|
||||
"BOTAN_HAS_ENTROPY_SRC_EGD", "BOTAN_HAS_ENTROPY_SRC_FTW",
|
||||
"BOTAN_HAS_ENTROPY_SRC_UNIX", "BOTAN_HAS_MUTEX_PTHREAD", "BOTAN_HAS_PIPE_UNIXFD_IO")
|
||||
if (qbs.targetOS === "windows")
|
||||
result.push("BOTAN_TARGET_OS_IS_WINDOWS",
|
||||
"BOTAN_TARGET_OS_HAS_LOADLIBRARY", "BOTAN_TARGET_OS_HAS_WIN32_GET_SYSTEMTIME",
|
||||
"BOTAN_TARGET_OS_HAS_WIN32_VIRTUAL_LOCK", "BOTAN_HAS_DYNAMICALLY_LOADED_ENGINE",
|
||||
"BOTAN_HAS_DYNAMIC_LOADER", "BOTAN_HAS_ENTROPY_SRC_CAPI",
|
||||
"BOTAN_HAS_ENTROPY_SRC_WIN32", "BOTAN_HAS_MUTEX_WIN32")
|
||||
return result
|
||||
}
|
||||
property var botanFiles: [ "../3rdparty/botan/botan.h", "../3rdparty/botan/botan.cpp" ]
|
||||
|
||||
// For Botan.
|
||||
Properties {
|
||||
condition: qbs.toolchain === "mingw"
|
||||
cpp.cxxFlags: [
|
||||
"-fpermissive",
|
||||
"-finline-functions",
|
||||
"-Wno-long-long"
|
||||
]
|
||||
}
|
||||
|
||||
ProductModule {
|
||||
Depends { name: "cpp" }
|
||||
|
@@ -1 +0,0 @@
|
||||
include(../3rdparty/botan/botan.pri)
|
||||
|
@@ -12,7 +12,6 @@ QtcPlugin {
|
||||
Depends { name: "CppTools" }
|
||||
Depends { name: "Debugger" }
|
||||
Depends { name: "QmlJS" }
|
||||
Depends { name: "Botan" }
|
||||
Depends { name: "CPlusPlus" }
|
||||
Depends { name: "TextEditor" }
|
||||
|
||||
|
@@ -3,4 +3,3 @@ include(../../plugins/qtsupport/qtsupport.pri)
|
||||
include(../../plugins/cpptools/cpptools.pri)
|
||||
include(../../plugins/debugger/debugger.pri)
|
||||
include(../../libs/qmljs/qmljs.pri)
|
||||
include(../../libs/3rdparty/botan/botan.pri)
|
||||
|
Reference in New Issue
Block a user