New upstream version 3.7.1
This commit is contained in:
parent
83e672b7ec
commit
a7c1ce03b2
@ -1,7 +1,7 @@
|
||||
Visual Studio 15
|
||||
----------------
|
||||
Visual Studio 15 2017
|
||||
---------------------
|
||||
|
||||
Generates Visual Studio 15 project files.
|
||||
Generates Visual Studio 15 (VS 2017) project files.
|
||||
|
||||
The :variable:`CMAKE_GENERATOR_PLATFORM` variable may be set
|
||||
to specify a target platform name (architecture).
|
||||
@ -9,8 +9,8 @@ to specify a target platform name (architecture).
|
||||
For compatibility with CMake versions prior to 3.1, one may specify
|
||||
a target platform name optionally at the end of this generator name:
|
||||
|
||||
``Visual Studio 15 Win64``
|
||||
``Visual Studio 15 2017 Win64``
|
||||
Specify target platform ``x64``.
|
||||
|
||||
``Visual Studio 15 ARM``
|
||||
``Visual Studio 15 2017 ARM``
|
||||
Specify target platform ``ARM``.
|
@ -82,7 +82,7 @@ Visual Studio Generators
|
||||
/generator/Visual Studio 11 2012
|
||||
/generator/Visual Studio 12 2013
|
||||
/generator/Visual Studio 14 2015
|
||||
/generator/Visual Studio 15
|
||||
/generator/Visual Studio 15 2017
|
||||
|
||||
Other Generators
|
||||
^^^^^^^^^^^^^^^^
|
||||
|
@ -387,7 +387,7 @@ Configure use of an Android NDK with the following variables:
|
||||
|
||||
:variable:`CMAKE_ANDROID_NDK_TOOLCHAIN_VERSION`
|
||||
Set to the version of the NDK toolchain to be selected as the compiler.
|
||||
If not specified, the latest available GCC toolchain will be used.
|
||||
If not specified, the default will be the latest available GCC toolchain.
|
||||
|
||||
:variable:`CMAKE_ANDROID_STL_TYPE`
|
||||
Set to specify which C++ standard library to use. If not specified,
|
||||
|
@ -148,6 +148,7 @@ Variables that Change Behavior
|
||||
/variable/CMAKE_INSTALL_DEFAULT_COMPONENT_NAME
|
||||
/variable/CMAKE_INSTALL_MESSAGE
|
||||
/variable/CMAKE_INSTALL_PREFIX
|
||||
/variable/CMAKE_INSTALL_PREFIX_INITIALIZED_TO_DEFAULT
|
||||
/variable/CMAKE_LIBRARY_PATH
|
||||
/variable/CMAKE_MFC_FLAG
|
||||
/variable/CMAKE_MODULE_PATH
|
||||
@ -241,6 +242,7 @@ Variables that Control the Build
|
||||
/variable/CMAKE_ANDROID_NATIVE_LIB_DEPENDENCIES
|
||||
/variable/CMAKE_ANDROID_NATIVE_LIB_DIRECTORIES
|
||||
/variable/CMAKE_ANDROID_NDK
|
||||
/variable/CMAKE_ANDROID_NDK_TOOLCHAIN_HOST_TAG
|
||||
/variable/CMAKE_ANDROID_NDK_TOOLCHAIN_VERSION
|
||||
/variable/CMAKE_ANDROID_PROCESS_MAX
|
||||
/variable/CMAKE_ANDROID_PROGUARD
|
||||
@ -350,6 +352,7 @@ Variables for Languages
|
||||
/variable/CMAKE_Fortran_MODDIR_FLAG
|
||||
/variable/CMAKE_Fortran_MODOUT_FLAG
|
||||
/variable/CMAKE_INTERNAL_PLATFORM_ABI
|
||||
/variable/CMAKE_LANG_ANDROID_TOOLCHAIN_MACHINE
|
||||
/variable/CMAKE_LANG_ANDROID_TOOLCHAIN_PREFIX
|
||||
/variable/CMAKE_LANG_ANDROID_TOOLCHAIN_SUFFIX
|
||||
/variable/CMAKE_LANG_ARCHIVE_APPEND
|
||||
|
@ -31,9 +31,9 @@ Generators
|
||||
This is equivalent to ``cd sub/dir; make {test,install,package}``
|
||||
with :ref:`Makefile Generators`.
|
||||
|
||||
* The :generator:`Visual Studio 15` generator was added. This is
|
||||
experimental and based on Preview 4 because this version of VS
|
||||
has not been released.
|
||||
* The :generator:`Visual Studio 15 2017` generator was added. This is
|
||||
experimental and based on "Visual Studio 2017 RC" because this version
|
||||
of VS has not been released.
|
||||
|
||||
* :ref:`Visual Studio Generators` for VS 2010 and above learned to
|
||||
place ``.natvis`` source files into VS project files properly.
|
||||
|
6
Help/variable/CMAKE_ANDROID_NDK_TOOLCHAIN_HOST_TAG.rst
Normal file
6
Help/variable/CMAKE_ANDROID_NDK_TOOLCHAIN_HOST_TAG.rst
Normal file
@ -0,0 +1,6 @@
|
||||
CMAKE_ANDROID_NDK_TOOLCHAIN_HOST_TAG
|
||||
------------------------------------
|
||||
|
||||
When :ref:`Cross Compiling for Android with the NDK`, this variable
|
||||
provides the NDK's "host tag" used to construct the path to prebuilt
|
||||
toolchains that run on the host.
|
@ -11,3 +11,6 @@ as the compiler. The variable must be set to one of these forms:
|
||||
|
||||
A toolchain of the requested version will be selected automatically to
|
||||
match the ABI named in the :variable:`CMAKE_ANDROID_ARCH_ABI` variable.
|
||||
|
||||
If not specified, the default will be a value that selects the latest
|
||||
available GCC toolchain.
|
||||
|
@ -6,6 +6,8 @@ Install directory used by :command:`install`.
|
||||
If ``make install`` is invoked or ``INSTALL`` is built, this directory is
|
||||
prepended onto all install directories. This variable defaults to
|
||||
``/usr/local`` on UNIX and ``c:/Program Files/${PROJECT_NAME}`` on Windows.
|
||||
See :variable:`CMAKE_INSTALL_PREFIX_INITIALIZED_TO_DEFAULT` for how a
|
||||
project might choose its own default.
|
||||
|
||||
On UNIX one can use the ``DESTDIR`` mechanism in order to relocate the
|
||||
whole installation. ``DESTDIR`` means DESTination DIRectory. It is
|
||||
|
@ -0,0 +1,14 @@
|
||||
CMAKE_INSTALL_PREFIX_INITIALIZED_TO_DEFAULT
|
||||
-------------------------------------------
|
||||
|
||||
CMake sets this variable to a ``TRUE`` value when the
|
||||
:variable:`CMAKE_INSTALL_PREFIX` has just been initialized to
|
||||
its default value, typically on the first run of CMake within
|
||||
a new build tree. This can be used by project code to change
|
||||
the default without overriding a user-provided value:
|
||||
|
||||
.. code-block:: cmake
|
||||
|
||||
if(CMAKE_INSTALL_PREFIX_INITIALIZED_TO_DEFAULT)
|
||||
set(CMAKE_INSTALL_PREFIX "/my/default" CACHE PATH "..." FORCE)
|
||||
endif()
|
9
Help/variable/CMAKE_LANG_ANDROID_TOOLCHAIN_MACHINE.rst
Normal file
9
Help/variable/CMAKE_LANG_ANDROID_TOOLCHAIN_MACHINE.rst
Normal file
@ -0,0 +1,9 @@
|
||||
CMAKE_<LANG>_ANDROID_TOOLCHAIN_MACHINE
|
||||
--------------------------------------
|
||||
|
||||
When :ref:`Cross Compiling for Android` this variable contains the
|
||||
toolchain binutils machine name (e.g. ``gcc -dumpmachine``). The
|
||||
binutils typically have a ``<machine>-`` prefix on their name.
|
||||
|
||||
See also :variable:`CMAKE_<LANG>_ANDROID_TOOLCHAIN_PREFIX`
|
||||
and :variable:`CMAKE_<LANG>_ANDROID_TOOLCHAIN_SUFFIX`.
|
@ -4,7 +4,8 @@ CMAKE_<LANG>_ANDROID_TOOLCHAIN_PREFIX
|
||||
When :ref:`Cross Compiling for Android` this variable contains the absolute
|
||||
path prefixing the toolchain GNU compiler and its binutils.
|
||||
|
||||
See also :variable:`CMAKE_<LANG>_ANDROID_TOOLCHAIN_SUFFIX`.
|
||||
See also :variable:`CMAKE_<LANG>_ANDROID_TOOLCHAIN_SUFFIX`
|
||||
and :variable:`CMAKE_<LANG>_ANDROID_TOOLCHAIN_MACHINE`.
|
||||
|
||||
For example, the path to the linker is::
|
||||
|
||||
|
@ -4,4 +4,5 @@ CMAKE_<LANG>_ANDROID_TOOLCHAIN_SUFFIX
|
||||
When :ref:`Cross Compiling for Android` this variable contains the
|
||||
host platform suffix of the toolchain GNU compiler and its binutils.
|
||||
|
||||
See also :variable:`CMAKE_<LANG>_ANDROID_TOOLCHAIN_PREFIX`.
|
||||
See also :variable:`CMAKE_<LANG>_ANDROID_TOOLCHAIN_PREFIX`
|
||||
and :variable:`CMAKE_<LANG>_ANDROID_TOOLCHAIN_MACHINE`.
|
||||
|
@ -28,6 +28,7 @@ macro(__compiler_armcc lang)
|
||||
|
||||
set(CMAKE_${lang}_OUTPUT_EXTENSION ".o")
|
||||
set(CMAKE_${lang}_OUTPUT_EXTENSION_REPLACE 1)
|
||||
set(CMAKE_${lang}_RESPONSE_FILE_LINK_FLAG "--via=")
|
||||
|
||||
set(CMAKE_${lang}_LINK_EXECUTABLE "<CMAKE_LINKER> <CMAKE_${lang}_LINK_FLAGS> <LINK_FLAGS> <LINK_LIBRARIES> <OBJECTS> -o <TARGET> --list <TARGET_BASE>.map")
|
||||
set(CMAKE_${lang}_CREATE_STATIC_LIBRARY "<CMAKE_AR> --create -cr <TARGET> <LINK_FLAGS> <OBJECTS>")
|
||||
|
@ -228,7 +228,7 @@ if(BISON_EXECUTABLE)
|
||||
list(APPEND BISON_TARGET_outputs "${BISON_TARGET_output_header}")
|
||||
|
||||
add_custom_command(OUTPUT ${BISON_TARGET_outputs}
|
||||
${BISON_TARGET_verbose_file}
|
||||
${BISON_TARGET_extraoutputs}
|
||||
COMMAND ${BISON_EXECUTABLE} ${BISON_TARGET_cmdopt} -o ${BisonOutput} ${BisonInput}
|
||||
VERBATIM
|
||||
DEPENDS ${BisonInput}
|
||||
|
@ -52,6 +52,7 @@ unset(_ANDROID_CONFIG_MK_PATTERNS)
|
||||
# Find the newest toolchain version matching the ABI.
|
||||
set(_ANDROID_TOOL_NAME "")
|
||||
set(_ANDROID_TOOL_VERS 0)
|
||||
set(_ANDROID_TOOL_VERS_NDK "")
|
||||
set(_ANDROID_TOOL_SETUP_MK "")
|
||||
foreach(config_mk IN LISTS _ANDROID_CONFIG_MKS)
|
||||
# Check that the toolchain matches the ABI.
|
||||
@ -62,18 +63,21 @@ foreach(config_mk IN LISTS _ANDROID_CONFIG_MKS)
|
||||
unset(_ANDROID_TOOL_ABIS)
|
||||
|
||||
# Check the version.
|
||||
if("${config_mk}" MATCHES [[/([^/]+-(clang)?([0-9]\.[0-9]|))/config.mk$]])
|
||||
if("${config_mk}" MATCHES [[/([^/]+-((clang)?([0-9]\.[0-9]|)))/config.mk$]])
|
||||
set(_ANDROID_CUR_NAME "${CMAKE_MATCH_1}")
|
||||
set(_ANDROID_CUR_VERS "${CMAKE_MATCH_3}")
|
||||
set(_ANDROID_CUR_VERS "${CMAKE_MATCH_4}")
|
||||
set(_ANDROID_CUR_VERS_NDK "${CMAKE_MATCH_2}")
|
||||
if(_ANDROID_TOOL_VERS STREQUAL "")
|
||||
# already the latest possible
|
||||
elseif(_ANDROID_CUR_VERS STREQUAL "" OR _ANDROID_CUR_VERS VERSION_GREATER _ANDROID_TOOL_VERS)
|
||||
set(_ANDROID_TOOL_NAME "${_ANDROID_CUR_NAME}")
|
||||
set(_ANDROID_TOOL_VERS "${_ANDROID_CUR_VERS}")
|
||||
set(_ANDROID_TOOL_VERS_NDK "${_ANDROID_CUR_VERS_NDK}")
|
||||
string(REPLACE "/config.mk" "/setup.mk" _ANDROID_TOOL_SETUP_MK "${config_mk}")
|
||||
endif()
|
||||
unset(_ANDROID_CUR_TOOL)
|
||||
unset(_ANDROID_CUR_VERS)
|
||||
unset(_ANDROID_CUR_VERS_NDK)
|
||||
endif()
|
||||
endforeach()
|
||||
|
||||
@ -206,10 +210,17 @@ endif()
|
||||
# Help CMakeFindBinUtils locate things.
|
||||
set(_CMAKE_TOOLCHAIN_PREFIX "${_ANDROID_TOOL_PREFIX}")
|
||||
|
||||
set(_ANDROID_TOOL_NDK_TOOLCHAIN_HOST_TAG "${_ANDROID_HOST_DIR}")
|
||||
set(_ANDROID_TOOL_NDK_TOOLCHAIN_VERSION "${_ANDROID_TOOL_VERS_NDK}")
|
||||
|
||||
# _ANDROID_TOOL_PREFIX should now match `gcc -dumpmachine`.
|
||||
string(REGEX REPLACE "-$" "" _ANDROID_TOOL_C_TOOLCHAIN_MACHINE "${_ANDROID_TOOL_PREFIX}")
|
||||
|
||||
set(_ANDROID_TOOL_C_TOOLCHAIN_VERSION "${_ANDROID_TOOL_VERS}")
|
||||
set(_ANDROID_TOOL_C_TOOLCHAIN_PREFIX "${CMAKE_ANDROID_NDK}/toolchains/${_ANDROID_TOOL_NAME}/prebuilt/${_ANDROID_HOST_DIR}/bin/${_ANDROID_TOOL_PREFIX}")
|
||||
set(_ANDROID_TOOL_C_TOOLCHAIN_SUFFIX "${_ANDROID_HOST_EXT}")
|
||||
|
||||
set(_ANDROID_TOOL_CXX_TOOLCHAIN_MACHINE "${_ANDROID_TOOL_C_TOOLCHAIN_MACHINE}")
|
||||
set(_ANDROID_TOOL_CXX_TOOLCHAIN_VERSION "${_ANDROID_TOOL_C_TOOLCHAIN_VERSION}")
|
||||
set(_ANDROID_TOOL_CXX_TOOLCHAIN_PREFIX "${_ANDROID_TOOL_C_TOOLCHAIN_PREFIX}")
|
||||
set(_ANDROID_TOOL_CXX_TOOLCHAIN_SUFFIX "${_ANDROID_TOOL_C_TOOLCHAIN_SUFFIX}")
|
||||
@ -231,6 +242,7 @@ endif()
|
||||
if(CMAKE_ANDROID_NDK_TOOLCHAIN_DEBUG)
|
||||
message(STATUS "_ANDROID_TOOL_NAME=${_ANDROID_TOOL_NAME}")
|
||||
message(STATUS "_ANDROID_TOOL_VERS=${_ANDROID_TOOL_VERS}")
|
||||
message(STATUS "_ANDROID_TOOL_VERS_NDK=${_ANDROID_TOOL_VERS_NDK}")
|
||||
message(STATUS "_ANDROID_TOOL_PREFIX=${_ANDROID_TOOL_PREFIX}")
|
||||
message(STATUS "_ANDROID_TOOL_CLANG_NAME=${_ANDROID_TOOL_CLANG_NAME}")
|
||||
message(STATUS "_ANDROID_TOOL_CLANG_VERS=${_ANDROID_TOOL_CLANG_VERS}")
|
||||
@ -239,6 +251,7 @@ endif()
|
||||
|
||||
unset(_ANDROID_TOOL_NAME)
|
||||
unset(_ANDROID_TOOL_VERS)
|
||||
unset(_ANDROID_TOOL_VERS_NDK)
|
||||
unset(_ANDROID_TOOL_PREFIX)
|
||||
unset(_ANDROID_TOOL_CLANG_NAME)
|
||||
unset(_ANDROID_TOOL_CLANG_VERS)
|
||||
|
@ -22,6 +22,9 @@ endif()
|
||||
# Help CMakeFindBinUtils locate things.
|
||||
set(_CMAKE_TOOLCHAIN_PREFIX "${_ANDROID_TOOL_PREFIX}")
|
||||
|
||||
# _ANDROID_TOOL_PREFIX should now match `gcc -dumpmachine`.
|
||||
string(REGEX REPLACE "-$" "" _ANDROID_TOOL_C_TOOLCHAIN_MACHINE "${_ANDROID_TOOL_PREFIX}")
|
||||
|
||||
execute_process(
|
||||
COMMAND "${CMAKE_ANDROID_STANDALONE_TOOLCHAIN}/bin/${_ANDROID_TOOL_PREFIX}gcc${_ANDROID_HOST_EXT}" -dumpversion
|
||||
OUTPUT_VARIABLE _gcc_version
|
||||
@ -42,6 +45,7 @@ endif()
|
||||
set(_ANDROID_TOOL_C_TOOLCHAIN_PREFIX "${CMAKE_ANDROID_STANDALONE_TOOLCHAIN}/bin/${_ANDROID_TOOL_PREFIX}")
|
||||
set(_ANDROID_TOOL_C_TOOLCHAIN_SUFFIX "${_ANDROID_HOST_EXT}")
|
||||
|
||||
set(_ANDROID_TOOL_CXX_TOOLCHAIN_MACHINE "${_ANDROID_TOOL_C_TOOLCHAIN_MACHINE}")
|
||||
set(_ANDROID_TOOL_CXX_TOOLCHAIN_VERSION "${_ANDROID_TOOL_C_TOOLCHAIN_VERSION}")
|
||||
set(_ANDROID_TOOL_CXX_TOOLCHAIN_PREFIX "${_ANDROID_TOOL_C_TOOLCHAIN_PREFIX}")
|
||||
set(_ANDROID_TOOL_CXX_TOOLCHAIN_SUFFIX "${_ANDROID_TOOL_C_TOOLCHAIN_SUFFIX}")
|
||||
@ -57,3 +61,6 @@ else()
|
||||
set(_ANDROID_TOOL_CXX_COMPILER "${_ANDROID_TOOL_CXX_TOOLCHAIN_PREFIX}g++${_ANDROID_TOOL_CXX_TOOLCHAIN_SUFFIX}")
|
||||
set(_ANDROID_TOOL_CXX_COMPILER_EXTERNAL_TOOLCHAIN "")
|
||||
endif()
|
||||
|
||||
set(_ANDROID_TOOL_NDK_TOOLCHAIN_HOST_TAG "")
|
||||
set(_ANDROID_TOOL_NDK_TOOLCHAIN_VERSION "")
|
||||
|
@ -40,12 +40,16 @@ if(CMAKE_ANDROID_NDK)
|
||||
elseif(CMAKE_ANDROID_STANDALONE_TOOLCHAIN)
|
||||
include(Platform/Android/Determine-Compiler-Standalone)
|
||||
else()
|
||||
set(_ANDROID_TOOL_NDK_TOOLCHAIN_HOST_TAG "")
|
||||
set(_ANDROID_TOOL_NDK_TOOLCHAIN_VERSION "")
|
||||
set(_ANDROID_TOOL_C_COMPILER "")
|
||||
set(_ANDROID_TOOL_C_TOOLCHAIN_MACHINE "")
|
||||
set(_ANDROID_TOOL_C_TOOLCHAIN_VERSION "")
|
||||
set(_ANDROID_TOOL_C_COMPILER_EXTERNAL_TOOLCHAIN "")
|
||||
set(_ANDROID_TOOL_C_TOOLCHAIN_PREFIX "")
|
||||
set(_ANDROID_TOOL_C_TOOLCHAIN_SUFFIX "")
|
||||
set(_ANDROID_TOOL_CXX_COMPILER "")
|
||||
set(_ANDROID_TOOL_CXX_TOOLCHAIN_MACHINE "")
|
||||
set(_ANDROID_TOOL_CXX_TOOLCHAIN_VERSION "")
|
||||
set(_ANDROID_TOOL_CXX_COMPILER_EXTERNAL_TOOLCHAIN "")
|
||||
set(_ANDROID_TOOL_CXX_TOOLCHAIN_PREFIX "")
|
||||
@ -61,6 +65,9 @@ macro(__android_determine_compiler lang)
|
||||
|
||||
# Save the Android-specific information in CMake${lang}Compiler.cmake.
|
||||
set(CMAKE_${lang}_COMPILER_CUSTOM_CODE "
|
||||
set(CMAKE_ANDROID_NDK_TOOLCHAIN_HOST_TAG \"${_ANDROID_TOOL_NDK_TOOLCHAIN_HOST_TAG}\")
|
||||
set(CMAKE_ANDROID_NDK_TOOLCHAIN_VERSION \"${_ANDROID_TOOL_NDK_TOOLCHAIN_VERSION}\")
|
||||
set(CMAKE_${lang}_ANDROID_TOOLCHAIN_MACHINE \"${_ANDROID_TOOL_${lang}_TOOLCHAIN_MACHINE}\")
|
||||
set(CMAKE_${lang}_ANDROID_TOOLCHAIN_VERSION \"${_ANDROID_TOOL_${lang}_TOOLCHAIN_VERSION}\")
|
||||
set(CMAKE_${lang}_COMPILER_EXTERNAL_TOOLCHAIN \"${_ANDROID_TOOL_${lang}_COMPILER_EXTERNAL_TOOLCHAIN}\")
|
||||
set(CMAKE_${lang}_ANDROID_TOOLCHAIN_PREFIX \"${_ANDROID_TOOL_${lang}_TOOLCHAIN_PREFIX}\")
|
||||
|
@ -1,5 +1,5 @@
|
||||
# CMake version number components.
|
||||
set(CMake_VERSION_MAJOR 3)
|
||||
set(CMake_VERSION_MINOR 7)
|
||||
set(CMake_VERSION_PATCH 0)
|
||||
set(CMake_VERSION_PATCH 1)
|
||||
#set(CMake_VERSION_RC 0)
|
||||
|
@ -288,7 +288,7 @@ void on_directory_change(uv_fs_event_t* handle, const char* filename,
|
||||
{
|
||||
const cmIBaseWatcher* const watcher =
|
||||
static_cast<const cmIBaseWatcher*>(handle->data);
|
||||
const std::string pathSegment(filename);
|
||||
const std::string pathSegment(filename ? filename : "");
|
||||
watcher->Trigger(pathSegment, events, status);
|
||||
}
|
||||
|
||||
|
@ -6,16 +6,19 @@
|
||||
#include "cmLocalVisualStudio10Generator.h"
|
||||
#include "cmMakefile.h"
|
||||
|
||||
static const char vs15generatorName[] = "Visual Studio 15";
|
||||
static const char vs15generatorName[] = "Visual Studio 15 2017";
|
||||
|
||||
// Map generator name without year to name with year.
|
||||
static const char* cmVS15GenName(const std::string& name, std::string& genName)
|
||||
{
|
||||
if (strncmp(name.c_str(), vs15generatorName,
|
||||
sizeof(vs15generatorName) - 1) != 0) {
|
||||
sizeof(vs15generatorName) - 6) != 0) {
|
||||
return 0;
|
||||
}
|
||||
const char* p = name.c_str() + sizeof(vs15generatorName) - 1;
|
||||
const char* p = name.c_str() + sizeof(vs15generatorName) - 6;
|
||||
if (cmHasLiteralPrefix(p, " 2017")) {
|
||||
p += 5;
|
||||
}
|
||||
genName = std::string(vs15generatorName) + p;
|
||||
return p;
|
||||
}
|
||||
@ -50,7 +53,7 @@ public:
|
||||
virtual void GetDocumentation(cmDocumentationEntry& entry) const
|
||||
{
|
||||
entry.Name = std::string(vs15generatorName) + " [arch]";
|
||||
entry.Brief = "Generates Visual Studio 15 project files. "
|
||||
entry.Brief = "Generates Visual Studio 2017 project files. "
|
||||
"Optional [arch] can be \"Win64\" or \"ARM\".";
|
||||
}
|
||||
|
||||
@ -79,7 +82,7 @@ cmGlobalVisualStudio15Generator::cmGlobalVisualStudio15Generator(
|
||||
"HKEY_LOCAL_MACHINE\\SOFTWARE\\Microsoft\\VCExpress\\15.0\\Setup\\VC;"
|
||||
"ProductDir",
|
||||
vc15Express, cmSystemTools::KeyWOW64_32);
|
||||
this->DefaultPlatformToolset = "v140";
|
||||
this->DefaultPlatformToolset = "v141";
|
||||
this->Version = VS15;
|
||||
}
|
||||
|
||||
|
@ -1894,40 +1894,24 @@ void cmGlobalXCodeGenerator::CreateBuildSettings(cmGeneratorTarget* gtgt,
|
||||
|
||||
BuildObjectListOrString dirs(this, this->XcodeVersion >= 30);
|
||||
BuildObjectListOrString fdirs(this, this->XcodeVersion >= 30);
|
||||
std::vector<std::string> includes;
|
||||
this->CurrentLocalGenerator->GetIncludeDirectories(includes, gtgt, "C",
|
||||
configName);
|
||||
std::set<std::string> emitted;
|
||||
emitted.insert("/System/Library/Frameworks");
|
||||
|
||||
if (this->XcodeVersion < 60) {
|
||||
std::vector<std::string> includes;
|
||||
this->CurrentLocalGenerator->GetIncludeDirectories(includes, gtgt, "C",
|
||||
configName);
|
||||
for (std::vector<std::string>::iterator i = includes.begin();
|
||||
i != includes.end(); ++i) {
|
||||
if (this->NameResolvesToFramework(*i)) {
|
||||
std::string frameworkDir = *i;
|
||||
frameworkDir += "/../";
|
||||
frameworkDir = cmSystemTools::CollapseFullPath(frameworkDir);
|
||||
if (emitted.insert(frameworkDir).second) {
|
||||
fdirs.Add(this->XCodeEscapePath(frameworkDir));
|
||||
}
|
||||
} else {
|
||||
std::string incpath = this->XCodeEscapePath(*i);
|
||||
dirs.Add(incpath);
|
||||
}
|
||||
}
|
||||
} else {
|
||||
for (std::set<std::string>::iterator li = languages.begin();
|
||||
li != languages.end(); ++li) {
|
||||
std::vector<std::string> includes;
|
||||
this->CurrentLocalGenerator->GetIncludeDirectories(includes, gtgt, *li,
|
||||
configName);
|
||||
std::string includeFlags = this->CurrentLocalGenerator->GetIncludeFlags(
|
||||
includes, gtgt, *li, true, false, configName);
|
||||
|
||||
std::string& flags = cflags[*li];
|
||||
if (!includeFlags.empty()) {
|
||||
flags += " " + includeFlags;
|
||||
for (std::vector<std::string>::iterator i = includes.begin();
|
||||
i != includes.end(); ++i) {
|
||||
if (this->NameResolvesToFramework(*i)) {
|
||||
std::string frameworkDir = *i;
|
||||
frameworkDir += "/../";
|
||||
frameworkDir = cmSystemTools::CollapseFullPath(frameworkDir);
|
||||
if (emitted.insert(frameworkDir).second) {
|
||||
fdirs.Add(this->XCodeEscapePath(frameworkDir));
|
||||
}
|
||||
} else {
|
||||
std::string incpath = this->XCodeEscapePath(*i);
|
||||
dirs.Add(incpath);
|
||||
}
|
||||
}
|
||||
// Add framework search paths needed for linking.
|
||||
|
@ -381,25 +381,9 @@ bool cmServerProtocol1_0::DoActivate(const cmServerRequest& request,
|
||||
return false;
|
||||
}
|
||||
|
||||
const std::string fullGeneratorName =
|
||||
cmExternalMakefileProjectGenerator::CreateFullGeneratorName(
|
||||
generator, extraGenerator);
|
||||
|
||||
cm->SetGeneratorToolset(toolset);
|
||||
cm->SetGeneratorPlatform(platform);
|
||||
|
||||
cmGlobalGenerator* gg = cm->CreateGlobalGenerator(fullGeneratorName);
|
||||
if (!gg) {
|
||||
setErrorMessage(
|
||||
errorMessage,
|
||||
std::string("Could not set up the requested combination of \"") +
|
||||
kGENERATOR_KEY + "\" and \"" + kEXTRA_GENERATOR_KEY + "\"");
|
||||
return false;
|
||||
}
|
||||
|
||||
cm->SetGlobalGenerator(gg);
|
||||
cm->SetHomeDirectory(sourceDirectory);
|
||||
cm->SetHomeOutputDirectory(buildDirectory);
|
||||
this->GeneratorInfo =
|
||||
GeneratorInformation(generator, extraGenerator, toolset, platform,
|
||||
sourceDirectory, buildDirectory);
|
||||
|
||||
this->m_State = STATE_ACTIVE;
|
||||
return true;
|
||||
@ -931,6 +915,13 @@ cmServerResponse cmServerProtocol1_0::ProcessConfigure(
|
||||
|
||||
FileMonitor()->StopMonitoring();
|
||||
|
||||
std::string errorMessage;
|
||||
cmake* cm = this->CMakeInstance();
|
||||
this->GeneratorInfo.SetupGenerator(cm, &errorMessage);
|
||||
if (!errorMessage.empty()) {
|
||||
return request.ReportError(errorMessage);
|
||||
}
|
||||
|
||||
// Make sure the types of cacheArguments matches (if given):
|
||||
std::vector<std::string> cacheArgs;
|
||||
bool cacheArgumentsError = false;
|
||||
@ -955,15 +946,13 @@ cmServerResponse cmServerProtocol1_0::ProcessConfigure(
|
||||
"cacheArguments must be unset, a string or an array of strings.");
|
||||
}
|
||||
|
||||
cmake* cm = this->CMakeInstance();
|
||||
std::string sourceDir = cm->GetHomeDirectory();
|
||||
const std::string buildDir = cm->GetHomeOutputDirectory();
|
||||
|
||||
cmGlobalGenerator* gg = cm->GetGlobalGenerator();
|
||||
|
||||
if (buildDir.empty()) {
|
||||
return request.ReportError(
|
||||
"No build directory set via setGlobalSettings.");
|
||||
return request.ReportError("No build directory set via Handshake.");
|
||||
}
|
||||
|
||||
if (cm->LoadCache(buildDir)) {
|
||||
@ -1038,14 +1027,12 @@ cmServerResponse cmServerProtocol1_0::ProcessGlobalSettings(
|
||||
obj[kWARN_UNUSED_CLI_KEY] = cm->GetWarnUnusedCli();
|
||||
obj[kCHECK_SYSTEM_VARS_KEY] = cm->GetCheckSystemVars();
|
||||
|
||||
obj[kSOURCE_DIRECTORY_KEY] = cm->GetHomeDirectory();
|
||||
obj[kBUILD_DIRECTORY_KEY] = cm->GetHomeOutputDirectory();
|
||||
obj[kSOURCE_DIRECTORY_KEY] = this->GeneratorInfo.SourceDirectory;
|
||||
obj[kBUILD_DIRECTORY_KEY] = this->GeneratorInfo.BuildDirectory;
|
||||
|
||||
// Currently used generator:
|
||||
cmGlobalGenerator* gen = cm->GetGlobalGenerator();
|
||||
obj[kGENERATOR_KEY] = gen ? gen->GetName() : std::string();
|
||||
obj[kEXTRA_GENERATOR_KEY] =
|
||||
gen ? gen->GetExtraGeneratorName() : std::string();
|
||||
obj[kGENERATOR_KEY] = this->GeneratorInfo.GeneratorName;
|
||||
obj[kEXTRA_GENERATOR_KEY] = this->GeneratorInfo.ExtraGeneratorName;
|
||||
|
||||
return request.Reply(obj);
|
||||
}
|
||||
@ -1109,3 +1096,41 @@ cmServerResponse cmServerProtocol1_0::ProcessFileSystemWatchers(
|
||||
|
||||
return request.Reply(result);
|
||||
}
|
||||
|
||||
cmServerProtocol1_0::GeneratorInformation::GeneratorInformation(
|
||||
const std::string& generatorName, const std::string& extraGeneratorName,
|
||||
const std::string& toolset, const std::string& platform,
|
||||
const std::string& sourceDirectory, const std::string& buildDirectory)
|
||||
: GeneratorName(generatorName)
|
||||
, ExtraGeneratorName(extraGeneratorName)
|
||||
, Toolset(toolset)
|
||||
, Platform(platform)
|
||||
, SourceDirectory(sourceDirectory)
|
||||
, BuildDirectory(buildDirectory)
|
||||
{
|
||||
}
|
||||
|
||||
void cmServerProtocol1_0::GeneratorInformation::SetupGenerator(
|
||||
cmake* cm, std::string* errorMessage)
|
||||
{
|
||||
const std::string fullGeneratorName =
|
||||
cmExternalMakefileProjectGenerator::CreateFullGeneratorName(
|
||||
GeneratorName, ExtraGeneratorName);
|
||||
|
||||
cm->SetHomeDirectory(SourceDirectory);
|
||||
cm->SetHomeOutputDirectory(BuildDirectory);
|
||||
|
||||
cmGlobalGenerator* gg = cm->CreateGlobalGenerator(fullGeneratorName);
|
||||
if (!gg) {
|
||||
setErrorMessage(
|
||||
errorMessage,
|
||||
std::string("Could not set up the requested combination of \"") +
|
||||
kGENERATOR_KEY + "\" and \"" + kEXTRA_GENERATOR_KEY + "\"");
|
||||
return;
|
||||
}
|
||||
|
||||
cm->SetGlobalGenerator(gg);
|
||||
|
||||
cm->SetGeneratorToolset(Toolset);
|
||||
cm->SetGeneratorPlatform(Platform);
|
||||
}
|
||||
|
@ -131,4 +131,28 @@ private:
|
||||
State m_State = STATE_INACTIVE;
|
||||
|
||||
bool m_isDirty = false;
|
||||
|
||||
struct GeneratorInformation
|
||||
{
|
||||
public:
|
||||
GeneratorInformation() = default;
|
||||
GeneratorInformation(const std::string& generatorName,
|
||||
const std::string& extraGeneratorName,
|
||||
const std::string& toolset,
|
||||
const std::string& platform,
|
||||
const std::string& sourceDirectory,
|
||||
const std::string& buildDirectory);
|
||||
|
||||
void SetupGenerator(cmake* cm, std::string* errorMessage);
|
||||
|
||||
std::string GeneratorName;
|
||||
std::string ExtraGeneratorName;
|
||||
std::string Toolset;
|
||||
std::string Platform;
|
||||
|
||||
std::string SourceDirectory;
|
||||
std::string BuildDirectory;
|
||||
};
|
||||
|
||||
GeneratorInformation GeneratorInfo;
|
||||
};
|
||||
|
@ -1334,7 +1334,7 @@ int cmake::ActualConfigure()
|
||||
{ "11.0", "Visual Studio 11 2012" },
|
||||
{ "12.0", "Visual Studio 12 2013" },
|
||||
{ "14.0", "Visual Studio 14 2015" },
|
||||
{ "15.0", "Visual Studio 15" },
|
||||
{ "15.0", "Visual Studio 15 2017" },
|
||||
{ 0, 0 }
|
||||
};
|
||||
for (int i = 0; version[i].MSVersion != 0; i++) {
|
||||
|
@ -3,9 +3,7 @@ project(IncludeDirectories)
|
||||
|
||||
if (((CMAKE_C_COMPILER_ID STREQUAL GNU AND CMAKE_C_COMPILER_VERSION VERSION_GREATER 4.4)
|
||||
OR CMAKE_C_COMPILER_ID STREQUAL Clang OR CMAKE_C_COMPILER_ID STREQUAL AppleClang)
|
||||
AND (CMAKE_GENERATOR STREQUAL "Unix Makefiles"
|
||||
OR CMAKE_GENERATOR STREQUAL "Ninja"
|
||||
OR (CMAKE_GENERATOR STREQUAL "Xcode" AND NOT XCODE_VERSION VERSION_LESS 6.0)))
|
||||
AND (CMAKE_GENERATOR STREQUAL "Unix Makefiles" OR CMAKE_GENERATOR STREQUAL "Ninja"))
|
||||
include(CheckCXXCompilerFlag)
|
||||
check_cxx_compiler_flag(-Wunused-variable run_sys_includes_test)
|
||||
if(run_sys_includes_test)
|
||||
|
@ -15,17 +15,10 @@ target_include_directories(upstream SYSTEM PUBLIC
|
||||
)
|
||||
|
||||
add_library(config_specific INTERFACE)
|
||||
if(CMAKE_GENERATOR STREQUAL "Xcode")
|
||||
# CMAKE_BUILD_TYPE does not work here for multi-config generators
|
||||
target_include_directories(config_specific SYSTEM INTERFACE
|
||||
"${CMAKE_CURRENT_SOURCE_DIR}/config_specific"
|
||||
)
|
||||
else()
|
||||
set(testConfig ${CMAKE_BUILD_TYPE})
|
||||
target_include_directories(config_specific SYSTEM INTERFACE
|
||||
"$<$<CONFIG:${testConfig}>:${CMAKE_CURRENT_SOURCE_DIR}/config_specific>"
|
||||
)
|
||||
endif()
|
||||
set(testConfig ${CMAKE_BUILD_TYPE})
|
||||
target_include_directories(config_specific SYSTEM INTERFACE
|
||||
"$<$<CONFIG:${testConfig}>:${CMAKE_CURRENT_SOURCE_DIR}/config_specific>"
|
||||
)
|
||||
|
||||
add_library(consumer consumer.cpp)
|
||||
target_link_libraries(consumer upstream config_specific)
|
||||
|
@ -22,8 +22,23 @@ string(APPEND CMAKE_CXX_FLAGS " -Werror -Wno-attributes")
|
||||
string(APPEND CMAKE_EXE_LINKER_FLAGS " -Wl,-no-undefined")
|
||||
|
||||
if(CMAKE_ANDROID_NDK)
|
||||
if(CMAKE_ANDROID_NDK_TOOLCHAIN_VERSION MATCHES "clang")
|
||||
if(NOT CMAKE_ANDROID_NDK_TOOLCHAIN_VERSION)
|
||||
message(SEND_ERROR "CMAKE_ANDROID_NDK_TOOLCHAIN_VERSION is not set!")
|
||||
elseif(CMAKE_ANDROID_NDK_TOOLCHAIN_VERSION MATCHES "^clang")
|
||||
add_definitions(-DCOMPILER_IS_CLANG)
|
||||
elseif(NOT "${CMAKE_C_COMPILER}" MATCHES "toolchains/[^/]+-${CMAKE_ANDROID_NDK_TOOLCHAIN_VERSION}/prebuilt")
|
||||
message(SEND_ERROR "CMAKE_ANDROID_NDK_TOOLCHAIN_VERSION is\n"
|
||||
" ${CMAKE_ANDROID_NDK_TOOLCHAIN_VERSION}\n"
|
||||
"which does not appear in CMAKE_C_COMPILER:\n"
|
||||
" ${CMAKE_C_COMPILER}")
|
||||
endif()
|
||||
if(NOT CMAKE_ANDROID_NDK_TOOLCHAIN_HOST_TAG)
|
||||
message(SEND_ERROR "CMAKE_ANDROID_NDK_TOOLCHAIN_HOST_TAG is not set!")
|
||||
elseif(NOT "${CMAKE_C_COMPILER}" MATCHES "prebuilt/${CMAKE_ANDROID_NDK_TOOLCHAIN_HOST_TAG}/bin")
|
||||
message(SEND_ERROR "CMAKE_ANDROID_NDK_TOOLCHAIN_HOST_TAG is\n"
|
||||
" ${CMAKE_ANDROID_NDK_TOOLCHAIN_HOST_TAG}\n"
|
||||
"which does not appear in CMAKE_C_COMPILER:\n"
|
||||
" ${CMAKE_C_COMPILER}")
|
||||
endif()
|
||||
elseif(CMAKE_ANDROID_STANDALONE_TOOLCHAIN)
|
||||
execute_process(
|
||||
@ -37,6 +52,23 @@ elseif(CMAKE_ANDROID_STANDALONE_TOOLCHAIN)
|
||||
endif()
|
||||
endif()
|
||||
|
||||
execute_process(
|
||||
COMMAND "${CMAKE_C_ANDROID_TOOLCHAIN_PREFIX}gcc${CMAKE_C_ANDROID_TOOLCHAIN_SUFFIX}" -dumpmachine
|
||||
OUTPUT_VARIABLE _out OUTPUT_STRIP_TRAILING_WHITESPACE
|
||||
ERROR_VARIABLE _err
|
||||
RESULT_VARIABLE _res
|
||||
)
|
||||
if(NOT _res EQUAL 0)
|
||||
message(SEND_ERROR "Failed to run 'gcc -dumpmachine':\n ${_res}")
|
||||
endif()
|
||||
if(NOT _out STREQUAL "${CMAKE_C_ANDROID_TOOLCHAIN_MACHINE}")
|
||||
message(SEND_ERROR "'gcc -dumpmachine' produced:\n"
|
||||
" ${_out}\n"
|
||||
"which is not equal to CMAKE_C_ANDROID_TOOLCHAIN_MACHINE:\n"
|
||||
" ${CMAKE_C_ANDROID_TOOLCHAIN_MACHINE}"
|
||||
)
|
||||
endif()
|
||||
|
||||
if(CMAKE_ANDROID_STL_TYPE STREQUAL "none")
|
||||
add_definitions(-DSTL_NONE)
|
||||
elseif(CMAKE_ANDROID_STL_TYPE STREQUAL "system")
|
||||
|
Binary file not shown.
@ -38,6 +38,8 @@ SET(libarchive_SOURCES
|
||||
archive_hmac.c
|
||||
archive_hmac_private.h
|
||||
archive_match.c
|
||||
archive_openssl_evp_private.h
|
||||
archive_openssl_hmac_private.h
|
||||
archive_options.c
|
||||
archive_options_private.h
|
||||
archive_pack_dev.h
|
||||
|
@ -302,6 +302,7 @@ aes_ctr_release(archive_crypto_ctx *ctx)
|
||||
static int
|
||||
aes_ctr_init(archive_crypto_ctx *ctx, const uint8_t *key, size_t key_len)
|
||||
{
|
||||
ctx->ctx = EVP_CIPHER_CTX_new();
|
||||
|
||||
switch (key_len) {
|
||||
case 16: ctx->type = EVP_aes_128_ecb(); break;
|
||||
@ -314,7 +315,7 @@ aes_ctr_init(archive_crypto_ctx *ctx, const uint8_t *key, size_t key_len)
|
||||
memcpy(ctx->key, key, key_len);
|
||||
memset(ctx->nonce, 0, sizeof(ctx->nonce));
|
||||
ctx->encr_pos = AES_BLOCK_SIZE;
|
||||
EVP_CIPHER_CTX_init(&ctx->ctx);
|
||||
EVP_CIPHER_CTX_init(ctx->ctx);
|
||||
return 0;
|
||||
}
|
||||
|
||||
@ -324,10 +325,10 @@ aes_ctr_encrypt_counter(archive_crypto_ctx *ctx)
|
||||
int outl = 0;
|
||||
int r;
|
||||
|
||||
r = EVP_EncryptInit_ex(&ctx->ctx, ctx->type, NULL, ctx->key, NULL);
|
||||
r = EVP_EncryptInit_ex(ctx->ctx, ctx->type, NULL, ctx->key, NULL);
|
||||
if (r == 0)
|
||||
return -1;
|
||||
r = EVP_EncryptUpdate(&ctx->ctx, ctx->encr_buf, &outl, ctx->nonce,
|
||||
r = EVP_EncryptUpdate(ctx->ctx, ctx->encr_buf, &outl, ctx->nonce,
|
||||
AES_BLOCK_SIZE);
|
||||
if (r == 0 || outl != AES_BLOCK_SIZE)
|
||||
return -1;
|
||||
@ -337,7 +338,7 @@ aes_ctr_encrypt_counter(archive_crypto_ctx *ctx)
|
||||
static int
|
||||
aes_ctr_release(archive_crypto_ctx *ctx)
|
||||
{
|
||||
EVP_CIPHER_CTX_cleanup(&ctx->ctx);
|
||||
EVP_CIPHER_CTX_free(ctx->ctx);
|
||||
memset(ctx->key, 0, ctx->key_len);
|
||||
memset(ctx->nonce, 0, sizeof(ctx->nonce));
|
||||
return 0;
|
||||
|
@ -99,12 +99,12 @@ typedef struct {
|
||||
} archive_crypto_ctx;
|
||||
|
||||
#elif defined(HAVE_LIBCRYPTO)
|
||||
#include <openssl/evp.h>
|
||||
#include "archive_openssl_evp_private.h"
|
||||
#define AES_BLOCK_SIZE 16
|
||||
#define AES_MAX_KEY_SIZE 32
|
||||
|
||||
typedef struct {
|
||||
EVP_CIPHER_CTX ctx;
|
||||
EVP_CIPHER_CTX *ctx;
|
||||
const EVP_CIPHER *type;
|
||||
uint8_t key[AES_MAX_KEY_SIZE];
|
||||
unsigned key_len;
|
||||
|
@ -207,7 +207,9 @@ __archive_nettle_md5final(archive_md5_ctx *ctx, void *md)
|
||||
static int
|
||||
__archive_openssl_md5init(archive_md5_ctx *ctx)
|
||||
{
|
||||
EVP_DigestInit(ctx, EVP_md5());
|
||||
if ((*ctx = EVP_MD_CTX_new()) == NULL)
|
||||
return (ARCHIVE_FAILED);
|
||||
EVP_DigestInit(*ctx, EVP_md5());
|
||||
return (ARCHIVE_OK);
|
||||
}
|
||||
|
||||
@ -215,7 +217,7 @@ static int
|
||||
__archive_openssl_md5update(archive_md5_ctx *ctx, const void *indata,
|
||||
size_t insize)
|
||||
{
|
||||
EVP_DigestUpdate(ctx, indata, insize);
|
||||
EVP_DigestUpdate(*ctx, indata, insize);
|
||||
return (ARCHIVE_OK);
|
||||
}
|
||||
|
||||
@ -226,8 +228,11 @@ __archive_openssl_md5final(archive_md5_ctx *ctx, void *md)
|
||||
* this is meant to cope with that. Real fix is probably to fix
|
||||
* archive_write_set_format_xar.c
|
||||
*/
|
||||
if (ctx->digest)
|
||||
EVP_DigestFinal(ctx, md, NULL);
|
||||
if (*ctx) {
|
||||
EVP_DigestFinal(*ctx, md, NULL);
|
||||
EVP_MD_CTX_free(*ctx);
|
||||
*ctx = NULL;
|
||||
}
|
||||
return (ARCHIVE_OK);
|
||||
}
|
||||
|
||||
@ -359,7 +364,9 @@ __archive_nettle_ripemd160final(archive_rmd160_ctx *ctx, void *md)
|
||||
static int
|
||||
__archive_openssl_ripemd160init(archive_rmd160_ctx *ctx)
|
||||
{
|
||||
EVP_DigestInit(ctx, EVP_ripemd160());
|
||||
if ((*ctx = EVP_MD_CTX_new()) == NULL)
|
||||
return (ARCHIVE_FAILED);
|
||||
EVP_DigestInit(*ctx, EVP_ripemd160());
|
||||
return (ARCHIVE_OK);
|
||||
}
|
||||
|
||||
@ -367,14 +374,18 @@ static int
|
||||
__archive_openssl_ripemd160update(archive_rmd160_ctx *ctx, const void *indata,
|
||||
size_t insize)
|
||||
{
|
||||
EVP_DigestUpdate(ctx, indata, insize);
|
||||
EVP_DigestUpdate(*ctx, indata, insize);
|
||||
return (ARCHIVE_OK);
|
||||
}
|
||||
|
||||
static int
|
||||
__archive_openssl_ripemd160final(archive_rmd160_ctx *ctx, void *md)
|
||||
{
|
||||
EVP_DigestFinal(ctx, md, NULL);
|
||||
if (*ctx) {
|
||||
EVP_DigestFinal(*ctx, md, NULL);
|
||||
EVP_MD_CTX_free(*ctx);
|
||||
*ctx = NULL;
|
||||
}
|
||||
return (ARCHIVE_OK);
|
||||
}
|
||||
|
||||
@ -509,7 +520,9 @@ __archive_nettle_sha1final(archive_sha1_ctx *ctx, void *md)
|
||||
static int
|
||||
__archive_openssl_sha1init(archive_sha1_ctx *ctx)
|
||||
{
|
||||
EVP_DigestInit(ctx, EVP_sha1());
|
||||
if ((*ctx = EVP_MD_CTX_new()) == NULL)
|
||||
return (ARCHIVE_FAILED);
|
||||
EVP_DigestInit(*ctx, EVP_sha1());
|
||||
return (ARCHIVE_OK);
|
||||
}
|
||||
|
||||
@ -517,7 +530,7 @@ static int
|
||||
__archive_openssl_sha1update(archive_sha1_ctx *ctx, const void *indata,
|
||||
size_t insize)
|
||||
{
|
||||
EVP_DigestUpdate(ctx, indata, insize);
|
||||
EVP_DigestUpdate(*ctx, indata, insize);
|
||||
return (ARCHIVE_OK);
|
||||
}
|
||||
|
||||
@ -528,8 +541,11 @@ __archive_openssl_sha1final(archive_sha1_ctx *ctx, void *md)
|
||||
* this is meant to cope with that. Real fix is probably to fix
|
||||
* archive_write_set_format_xar.c
|
||||
*/
|
||||
if (ctx->digest)
|
||||
EVP_DigestFinal(ctx, md, NULL);
|
||||
if (*ctx) {
|
||||
EVP_DigestFinal(*ctx, md, NULL);
|
||||
EVP_MD_CTX_free(*ctx);
|
||||
*ctx = NULL;
|
||||
}
|
||||
return (ARCHIVE_OK);
|
||||
}
|
||||
|
||||
@ -733,7 +749,9 @@ __archive_nettle_sha256final(archive_sha256_ctx *ctx, void *md)
|
||||
static int
|
||||
__archive_openssl_sha256init(archive_sha256_ctx *ctx)
|
||||
{
|
||||
EVP_DigestInit(ctx, EVP_sha256());
|
||||
if ((*ctx = EVP_MD_CTX_new()) == NULL)
|
||||
return (ARCHIVE_FAILED);
|
||||
EVP_DigestInit(*ctx, EVP_sha256());
|
||||
return (ARCHIVE_OK);
|
||||
}
|
||||
|
||||
@ -741,14 +759,18 @@ static int
|
||||
__archive_openssl_sha256update(archive_sha256_ctx *ctx, const void *indata,
|
||||
size_t insize)
|
||||
{
|
||||
EVP_DigestUpdate(ctx, indata, insize);
|
||||
EVP_DigestUpdate(*ctx, indata, insize);
|
||||
return (ARCHIVE_OK);
|
||||
}
|
||||
|
||||
static int
|
||||
__archive_openssl_sha256final(archive_sha256_ctx *ctx, void *md)
|
||||
{
|
||||
EVP_DigestFinal(ctx, md, NULL);
|
||||
if (*ctx) {
|
||||
EVP_DigestFinal(*ctx, md, NULL);
|
||||
EVP_MD_CTX_free(*ctx);
|
||||
*ctx = NULL;
|
||||
}
|
||||
return (ARCHIVE_OK);
|
||||
}
|
||||
|
||||
@ -928,7 +950,9 @@ __archive_nettle_sha384final(archive_sha384_ctx *ctx, void *md)
|
||||
static int
|
||||
__archive_openssl_sha384init(archive_sha384_ctx *ctx)
|
||||
{
|
||||
EVP_DigestInit(ctx, EVP_sha384());
|
||||
if ((*ctx = EVP_MD_CTX_new()) == NULL)
|
||||
return (ARCHIVE_FAILED);
|
||||
EVP_DigestInit(*ctx, EVP_sha384());
|
||||
return (ARCHIVE_OK);
|
||||
}
|
||||
|
||||
@ -936,14 +960,18 @@ static int
|
||||
__archive_openssl_sha384update(archive_sha384_ctx *ctx, const void *indata,
|
||||
size_t insize)
|
||||
{
|
||||
EVP_DigestUpdate(ctx, indata, insize);
|
||||
EVP_DigestUpdate(*ctx, indata, insize);
|
||||
return (ARCHIVE_OK);
|
||||
}
|
||||
|
||||
static int
|
||||
__archive_openssl_sha384final(archive_sha384_ctx *ctx, void *md)
|
||||
{
|
||||
EVP_DigestFinal(ctx, md, NULL);
|
||||
if (*ctx) {
|
||||
EVP_DigestFinal(*ctx, md, NULL);
|
||||
EVP_MD_CTX_free(*ctx);
|
||||
*ctx = NULL;
|
||||
}
|
||||
return (ARCHIVE_OK);
|
||||
}
|
||||
|
||||
@ -1147,7 +1175,9 @@ __archive_nettle_sha512final(archive_sha512_ctx *ctx, void *md)
|
||||
static int
|
||||
__archive_openssl_sha512init(archive_sha512_ctx *ctx)
|
||||
{
|
||||
EVP_DigestInit(ctx, EVP_sha512());
|
||||
if ((*ctx = EVP_MD_CTX_new()) == NULL)
|
||||
return (ARCHIVE_FAILED);
|
||||
EVP_DigestInit(*ctx, EVP_sha512());
|
||||
return (ARCHIVE_OK);
|
||||
}
|
||||
|
||||
@ -1155,14 +1185,18 @@ static int
|
||||
__archive_openssl_sha512update(archive_sha512_ctx *ctx, const void *indata,
|
||||
size_t insize)
|
||||
{
|
||||
EVP_DigestUpdate(ctx, indata, insize);
|
||||
EVP_DigestUpdate(*ctx, indata, insize);
|
||||
return (ARCHIVE_OK);
|
||||
}
|
||||
|
||||
static int
|
||||
__archive_openssl_sha512final(archive_sha512_ctx *ctx, void *md)
|
||||
{
|
||||
EVP_DigestFinal(ctx, md, NULL);
|
||||
if (*ctx) {
|
||||
EVP_DigestFinal(*ctx, md, NULL);
|
||||
EVP_MD_CTX_free(*ctx);
|
||||
*ctx = NULL;
|
||||
}
|
||||
return (ARCHIVE_OK);
|
||||
}
|
||||
|
||||
|
@ -134,7 +134,7 @@
|
||||
defined(ARCHIVE_CRYPTO_SHA384_OPENSSL) ||\
|
||||
defined(ARCHIVE_CRYPTO_SHA512_OPENSSL)
|
||||
#define ARCHIVE_CRYPTO_OPENSSL 1
|
||||
#include <openssl/evp.h>
|
||||
#include "archive_openssl_evp_private.h"
|
||||
#endif
|
||||
|
||||
/* Windows crypto headers */
|
||||
@ -161,7 +161,7 @@ typedef CC_MD5_CTX archive_md5_ctx;
|
||||
#elif defined(ARCHIVE_CRYPTO_MD5_NETTLE)
|
||||
typedef struct md5_ctx archive_md5_ctx;
|
||||
#elif defined(ARCHIVE_CRYPTO_MD5_OPENSSL)
|
||||
typedef EVP_MD_CTX archive_md5_ctx;
|
||||
typedef EVP_MD_CTX *archive_md5_ctx;
|
||||
#elif defined(ARCHIVE_CRYPTO_MD5_WIN)
|
||||
typedef Digest_CTX archive_md5_ctx;
|
||||
#else
|
||||
@ -175,7 +175,7 @@ typedef RIPEMD160_CTX archive_rmd160_ctx;
|
||||
#elif defined(ARCHIVE_CRYPTO_RMD160_NETTLE)
|
||||
typedef struct ripemd160_ctx archive_rmd160_ctx;
|
||||
#elif defined(ARCHIVE_CRYPTO_RMD160_OPENSSL)
|
||||
typedef EVP_MD_CTX archive_rmd160_ctx;
|
||||
typedef EVP_MD_CTX *archive_rmd160_ctx;
|
||||
#else
|
||||
typedef unsigned char archive_rmd160_ctx;
|
||||
#endif
|
||||
@ -189,7 +189,7 @@ typedef CC_SHA1_CTX archive_sha1_ctx;
|
||||
#elif defined(ARCHIVE_CRYPTO_SHA1_NETTLE)
|
||||
typedef struct sha1_ctx archive_sha1_ctx;
|
||||
#elif defined(ARCHIVE_CRYPTO_SHA1_OPENSSL)
|
||||
typedef EVP_MD_CTX archive_sha1_ctx;
|
||||
typedef EVP_MD_CTX *archive_sha1_ctx;
|
||||
#elif defined(ARCHIVE_CRYPTO_SHA1_WIN)
|
||||
typedef Digest_CTX archive_sha1_ctx;
|
||||
#else
|
||||
@ -209,7 +209,7 @@ typedef CC_SHA256_CTX archive_sha256_ctx;
|
||||
#elif defined(ARCHIVE_CRYPTO_SHA256_NETTLE)
|
||||
typedef struct sha256_ctx archive_sha256_ctx;
|
||||
#elif defined(ARCHIVE_CRYPTO_SHA256_OPENSSL)
|
||||
typedef EVP_MD_CTX archive_sha256_ctx;
|
||||
typedef EVP_MD_CTX *archive_sha256_ctx;
|
||||
#elif defined(ARCHIVE_CRYPTO_SHA256_WIN)
|
||||
typedef Digest_CTX archive_sha256_ctx;
|
||||
#else
|
||||
@ -227,7 +227,7 @@ typedef CC_SHA512_CTX archive_sha384_ctx;
|
||||
#elif defined(ARCHIVE_CRYPTO_SHA384_NETTLE)
|
||||
typedef struct sha384_ctx archive_sha384_ctx;
|
||||
#elif defined(ARCHIVE_CRYPTO_SHA384_OPENSSL)
|
||||
typedef EVP_MD_CTX archive_sha384_ctx;
|
||||
typedef EVP_MD_CTX *archive_sha384_ctx;
|
||||
#elif defined(ARCHIVE_CRYPTO_SHA384_WIN)
|
||||
typedef Digest_CTX archive_sha384_ctx;
|
||||
#else
|
||||
@ -247,7 +247,7 @@ typedef CC_SHA512_CTX archive_sha512_ctx;
|
||||
#elif defined(ARCHIVE_CRYPTO_SHA512_NETTLE)
|
||||
typedef struct sha512_ctx archive_sha512_ctx;
|
||||
#elif defined(ARCHIVE_CRYPTO_SHA512_OPENSSL)
|
||||
typedef EVP_MD_CTX archive_sha512_ctx;
|
||||
typedef EVP_MD_CTX *archive_sha512_ctx;
|
||||
#elif defined(ARCHIVE_CRYPTO_SHA512_WIN)
|
||||
typedef Digest_CTX archive_sha512_ctx;
|
||||
#else
|
||||
|
@ -176,8 +176,10 @@ __hmac_sha1_cleanup(archive_hmac_sha1_ctx *ctx)
|
||||
static int
|
||||
__hmac_sha1_init(archive_hmac_sha1_ctx *ctx, const uint8_t *key, size_t key_len)
|
||||
{
|
||||
HMAC_CTX_init(ctx);
|
||||
HMAC_Init(ctx, key, key_len, EVP_sha1());
|
||||
*ctx = HMAC_CTX_new();
|
||||
if (*ctx == NULL)
|
||||
return -1;
|
||||
HMAC_Init_ex(*ctx, key, key_len, EVP_sha1(), NULL);
|
||||
return 0;
|
||||
}
|
||||
|
||||
@ -185,22 +187,22 @@ static void
|
||||
__hmac_sha1_update(archive_hmac_sha1_ctx *ctx, const uint8_t *data,
|
||||
size_t data_len)
|
||||
{
|
||||
HMAC_Update(ctx, data, data_len);
|
||||
HMAC_Update(*ctx, data, data_len);
|
||||
}
|
||||
|
||||
static void
|
||||
__hmac_sha1_final(archive_hmac_sha1_ctx *ctx, uint8_t *out, size_t *out_len)
|
||||
{
|
||||
unsigned int len = (unsigned int)*out_len;
|
||||
HMAC_Final(ctx, out, &len);
|
||||
HMAC_Final(*ctx, out, &len);
|
||||
*out_len = len;
|
||||
}
|
||||
|
||||
static void
|
||||
__hmac_sha1_cleanup(archive_hmac_sha1_ctx *ctx)
|
||||
{
|
||||
HMAC_CTX_cleanup(ctx);
|
||||
memset(ctx, 0, sizeof(*ctx));
|
||||
HMAC_CTX_free(*ctx);
|
||||
*ctx = NULL;
|
||||
}
|
||||
|
||||
#else
|
||||
|
@ -70,9 +70,9 @@ typedef struct {
|
||||
typedef struct hmac_sha1_ctx archive_hmac_sha1_ctx;
|
||||
|
||||
#elif defined(HAVE_LIBCRYPTO)
|
||||
#include <openssl/hmac.h>
|
||||
#include "archive_openssl_hmac_private.h"
|
||||
|
||||
typedef HMAC_CTX archive_hmac_sha1_ctx;
|
||||
typedef HMAC_CTX* archive_hmac_sha1_ctx;
|
||||
|
||||
#else
|
||||
|
||||
|
@ -0,0 +1,51 @@
|
||||
/*-
|
||||
* Copyright (c) 2003-2007 Tim Kientzle
|
||||
* All rights reserved.
|
||||
*
|
||||
* Redistribution and use in source and binary forms, with or without
|
||||
* modification, are permitted provided that the following conditions
|
||||
* are met:
|
||||
* 1. Redistributions of source code must retain the above copyright
|
||||
* notice, this list of conditions and the following disclaimer.
|
||||
* 2. Redistributions in binary form must reproduce the above copyright
|
||||
* notice, this list of conditions and the following disclaimer in the
|
||||
* documentation and/or other materials provided with the distribution.
|
||||
*
|
||||
* THIS SOFTWARE IS PROVIDED BY THE AUTHOR(S) ``AS IS'' AND ANY EXPRESS OR
|
||||
* IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
|
||||
* OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.
|
||||
* IN NO EVENT SHALL THE AUTHOR(S) BE LIABLE FOR ANY DIRECT, INDIRECT,
|
||||
* INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT
|
||||
* NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
|
||||
* DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
|
||||
* THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
|
||||
* (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
|
||||
* THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
||||
*/
|
||||
#ifndef ARCHIVE_OPENSSL_EVP_PRIVATE_H_INCLUDED
|
||||
#define ARCHIVE_OPENSSL_EVP_PRIVATE_H_INCLUDED
|
||||
|
||||
#include <openssl/evp.h>
|
||||
#include <openssl/opensslv.h>
|
||||
|
||||
#if OPENSSL_VERSION_NUMBER < 0x10100000L
|
||||
#include <stdlib.h> /* malloc, free */
|
||||
#include <string.h> /* memset */
|
||||
static inline EVP_MD_CTX *EVP_MD_CTX_new(void)
|
||||
{
|
||||
EVP_MD_CTX *ctx = (EVP_MD_CTX *)malloc(sizeof(EVP_MD_CTX));
|
||||
if (ctx != NULL) {
|
||||
memset(ctx, 0, sizeof(*ctx));
|
||||
}
|
||||
return ctx;
|
||||
}
|
||||
|
||||
static inline void EVP_MD_CTX_free(EVP_MD_CTX *ctx)
|
||||
{
|
||||
EVP_MD_CTX_cleanup(ctx);
|
||||
memset(ctx, 0, sizeof(*ctx));
|
||||
free(ctx);
|
||||
}
|
||||
#endif
|
||||
|
||||
#endif
|
@ -0,0 +1,52 @@
|
||||
/*-
|
||||
* Copyright (c) 2003-2007 Tim Kientzle
|
||||
* All rights reserved.
|
||||
*
|
||||
* Redistribution and use in source and binary forms, with or without
|
||||
* modification, are permitted provided that the following conditions
|
||||
* are met:
|
||||
* 1. Redistributions of source code must retain the above copyright
|
||||
* notice, this list of conditions and the following disclaimer.
|
||||
* 2. Redistributions in binary form must reproduce the above copyright
|
||||
* notice, this list of conditions and the following disclaimer in the
|
||||
* documentation and/or other materials provided with the distribution.
|
||||
*
|
||||
* THIS SOFTWARE IS PROVIDED BY THE AUTHOR(S) ``AS IS'' AND ANY EXPRESS OR
|
||||
* IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
|
||||
* OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.
|
||||
* IN NO EVENT SHALL THE AUTHOR(S) BE LIABLE FOR ANY DIRECT, INDIRECT,
|
||||
* INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT
|
||||
* NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
|
||||
* DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
|
||||
* THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
|
||||
* (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
|
||||
* THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
||||
*/
|
||||
#ifndef ARCHIVE_OPENSSL_HMAC_PRIVATE_H_INCLUDED
|
||||
#define ARCHIVE_OPENSSL_HMAC_PRIVATE_H_INCLUDED
|
||||
|
||||
#include <openssl/hmac.h>
|
||||
#include <openssl/opensslv.h>
|
||||
|
||||
#if OPENSSL_VERSION_NUMBER < 0x10100000L
|
||||
#include <stdlib.h> /* malloc, free */
|
||||
#include <string.h> /* memset */
|
||||
static inline HMAC_CTX *HMAC_CTX_new(void)
|
||||
{
|
||||
HMAC_CTX *ctx = (HMAC_CTX *)malloc(sizeof(HMAC_CTX));
|
||||
if (ctx != NULL) {
|
||||
memset(ctx, 0, sizeof(*ctx));
|
||||
HMAC_CTX_init(ctx);
|
||||
}
|
||||
return ctx;
|
||||
}
|
||||
|
||||
static inline void HMAC_CTX_free(HMAC_CTX *ctx)
|
||||
{
|
||||
HMAC_CTX_cleanup(ctx);
|
||||
memset(ctx, 0, sizeof(*ctx));
|
||||
free(ctx);
|
||||
}
|
||||
#endif
|
||||
|
||||
#endif
|
Loading…
x
Reference in New Issue
Block a user