1
0
Fork 0

fix windows build (#3855)

This commit is contained in:
Jan Christoph Uhde 2017-12-06 16:35:45 +01:00 committed by Jan
parent 08949a1608
commit 41a8c581a3
16 changed files with 205 additions and 189 deletions

View File

@ -23,25 +23,11 @@ else ()
set(WITH_JEMALLOC OFF CACHE BOOL "enable jemalloc" FORCE)
endif ()
# snappy settings
#set(SNAPPY_HOME ${CMAKE_SOURCE_DIR}/3rdParty/snappy/google-snappy-d53de18/)
if (WIN32)
set(WITH_MD_LIBRARY OFF CACHE BOOL "override option in rocksdb lib" FORCE) #libraries should not touch this (/MD /MT) at all!
set(PORTABLE On CACHE BOOL "enable portable rocksdb build (disabling might yield better performance but break portability)")
endif ()
#if (WIN32)
# set(SNAPPY 1 CACHE BOOL "enable snappy")
# set(SNAPPY_INCLUDE ${SNAPPY_HOME};${CMAKE_BINARY_DIR}/3rdParty/snappy/google-snappy-d53de18/)
# set(SNAPPY_LIB_DEBUG snappystatic)
# set(SNAPPY_LIB_RELEASE snappystatic)
#else ()
# set(WITH_SNAPPY ON CACHE BOOL "enable snappy")
# set(SNAPPY_INCLUDE_DIR ${SNAPPY_HOME};${CMAKE_BINARY_DIR}/3rdParty/snappy/google-snappy-d53de18/)
# set(SNAPPY_LIBRARIES ${CMAKE_BINARY_DIR}/3rdParty/snappy/google-snappy-d53de18/libsnappystatic.a)
#endif ()
#
#message(STATUS "WITH_SNAPPY ${WITH_SNAPPY}")
#message(STATUS "ArangoDB (3rdParty/rocksdb/CMakeLists.txt) Snappy path: ${SNAPPY_INCLUDE_DIR}")
add_subdirectory(${CMAKE_CURRENT_SOURCE_DIR}/${ARANGO_ROCKSDB_VERSION})
# result

View File

@ -1345,7 +1345,19 @@ def buildEdition(os, edition, maintainer) {
}
}
else if (os == 'windows') {
powershell ". .\\Installation\\Pipeline\\windows\\build_${os}_${edition}_${maintainer}.ps1"
logFile = "..\\" + logFile
extra = "-DUSE_CATCH_TESTS=ON -DUSE_FAILURE_TESTS=ON -DDEBUG_SYNC_REPLICATION=ON"
if( edition == "enterprise"){
extra += " -DUSE_ENTERPRISE=ON"
}
if( maintainer == "maintainer"){
extra += " -DUSE_MAINTAINER_MODE=ON"
}
powershell "Remove-Item -Force -Recurse ${arch} -ErrorAction SilentlyContinue"
powershell "New-Item -Force -ItemType Directory ${arch} -ErrorAction SilentlyContinue"
powershell "New-Item -ItemType Directory -Force -Path build"
powershell "cd build; ..\\configure\\${os}_vs2017_RelWithDebInfo.ps1 -build ${extra} | Add-Content -PassThru ${logFile}"
}
logStopStage(os, logFile)
@ -1354,7 +1366,7 @@ def buildEdition(os, edition, maintainer) {
logExceptionStage(os, logFile, logFile, exc)
def msg = exc.toString()
if (os == 'linux' || os == 'mac') {
sh "echo \"${msg}\" >> ${logFile}"
}

View File

@ -1345,7 +1345,19 @@ def buildEdition(os, edition, maintainer) {
}
}
else if (os == 'windows') {
powershell ". .\\Installation\\Pipeline\\windows\\build_${os}_${edition}_${maintainer}.ps1"
logFile = "..\\" + logFile
extra = "-DUSE_CATCH_TESTS=ON -DUSE_FAILURE_TESTS=ON -DDEBUG_SYNC_REPLICATION=ON"
if( edition == "enterprise"){
extra += " -DUSE_ENTERPRISE=ON"
}
if( maintainer == "maintainer"){
extra += " -DUSE_MAINTAINER_MODE=ON"
}
powershell "Remove-Item -Force -Recurse ${arch} -ErrorAction SilentlyContinue"
powershell "New-Item -Force -ItemType Directory ${arch} -ErrorAction SilentlyContinue"
powershell "New-Item -ItemType Directory -Force -Path build"
powershell "cd build; ..\\configure\\${os}_vs2017_RelWithDebInfo.ps1 -build ${extra} | Add-Content -PassThru ${logFile}"
}
logStopStage(os, logFile)

View File

@ -1,39 +0,0 @@
$logdir="windows-community-maintainer/01-build"
$ErrorActionPreference="Stop"
$vcpath=$(Get-ItemProperty HKLM:\SOFTWARE\Wow6432Node\Microsoft\VisualStudio\SxS\VC7)."14.0"
$buildOptions = "-DUSE_MAINTAINER_MODE=On -DUSE_ENTERPRISE=Off -DUSE_CATCH_TESTS=On -DUSE_FAILURE_TESTS=On -DDEBUG_SYNC_REPLICATION=On -DCMAKE_BUILD_TYPE=RelWithDebInfo -DSKIP_PACKAGING=On"
Remove-Item -Force -Recurse ${logdir} -ErrorAction SilentlyContinue
New-Item -Force -ItemType Directory ${logdir} -ErrorAction SilentlyContinue
if (Get-Command docker -errorAction SilentlyContinue) {
$buildOptions += " -DOPENSSL_INCLUDE_DIR=`"`$env:OPENSSL_INCLUDE_DIR`" -DLIB_EAY_RELEASE=`"`$env:LIB_EAY_RELEASE`" -DSSL_EAY_RELEASE=`"`$env:SSL_EAY_RELEASE`" -DLIB_EAY_RELEASE_DLL=`"`$env:LIB_EAY_RELEASE_DLL`" -DSSL_EAY_RELEASE_DLL=`"`$env:SSL_EAY_RELEASE_DLL"
$volume = "$env:WORKSPACE"
$volume += ":C:\arangodb"
$build = @'
$ErrorActionPreference="Stop"
New-Item -ItemType Directory -Force -Path c:\arangodb\build
cd c:\arangodb\build
cmake .. -G "Visual Studio 14 2015 Win64" ${buildOptions}
cmake --build . --config RelWithDebInfo
exit $LastExitCode
'@
$build > buildscript.ps1
docker run --rm -v $volume m0ppers/build-container powershell C:\arangodb\buildscript.ps1 | Set-Content -PassThru ${logdir}\build.log
} else {
$env:GYP_MSVS_OVERRIDE_PATH="${vcpath}\bin"
$env:CC="${vcpath}\bin\cl.exe"
$env:CXX="${vcpath}\bin\cl.exe"
$env
New-Item -ItemType Directory -Force -Path build
cd build
Invoke-Expression "cmake .. -G `"Visual Studio 15 2017 Win64`" ${buildOptions} | Set-Content -PassThru ..\${logdir}\build.log"
cmake --build . --config RelWithDebInfo | Add-Content -PassThru ..\${logdir}\build.log
cd ..
}

View File

@ -1,39 +0,0 @@
$logdir="windows-community-maintainer/01-build"
$ErrorActionPreference="Stop"
$vcpath=$(Get-ItemProperty HKLM:\SOFTWARE\Wow6432Node\Microsoft\VisualStudio\SxS\VC7)."14.0"
$buildOptions = "-DUSE_MAINTAINER_MODE=Off -DUSE_ENTERPRISE=Off -DUSE_CATCH_TESTS=On -DUSE_FAILURE_TESTS=On -DDEBUG_SYNC_REPLICATION=On -DCMAKE_BUILD_TYPE=RelWithDebInfo -DSKIP_PACKAGING=On"
Remove-Item -Force -Recurse ${logdir} -ErrorAction SilentlyContinue
New-Item -Force -ItemType Directory ${logdir} -ErrorAction SilentlyContinue
if (Get-Command docker -errorAction SilentlyContinue) {
$buildOptions += " -DOPENSSL_INCLUDE_DIR=`"`$env:OPENSSL_INCLUDE_DIR`" -DLIB_EAY_RELEASE=`"`$env:LIB_EAY_RELEASE`" -DSSL_EAY_RELEASE=`"`$env:SSL_EAY_RELEASE`" -DLIB_EAY_RELEASE_DLL=`"`$env:LIB_EAY_RELEASE_DLL`" -DSSL_EAY_RELEASE_DLL=`"`$env:SSL_EAY_RELEASE_DLL"
$volume = "$env:WORKSPACE"
$volume += ":C:\arangodb"
$build = @'
$ErrorActionPreference="Stop"
New-Item -ItemType Directory -Force -Path c:\arangodb\build
cd c:\arangodb\build
cmake .. -G "Visual Studio 14 2015 Win64" ${buildOptions}
cmake --build . --config RelWithDebInfo
exit $LastExitCode
'@
$build > buildscript.ps1
docker run --rm -v $volume m0ppers/build-container powershell C:\arangodb\buildscript.ps1 | Set-Content -PassThru ${logdir}\build.log
} else {
$env:GYP_MSVS_OVERRIDE_PATH="${vcpath}\bin"
$env:CC="${vcpath}\bin\cl.exe"
$env:CXX="${vcpath}\bin\cl.exe"
$env
New-Item -ItemType Directory -Force -Path build
cd build
Invoke-Expression "cmake .. -G `"Visual Studio 15 2017 Win64`" ${buildOptions} | Set-Content -PassThru ..\${logdir}\build.log"
cmake --build . --config RelWithDebInfo | Add-Content -PassThru ..\${logdir}\build.log
cd ..
}

View File

@ -1,39 +0,0 @@
$logdir="windows-enterprise-maintainer/01-build"
$ErrorActionPreference="Stop"
$vcpath=$(Get-ItemProperty HKLM:\SOFTWARE\Wow6432Node\Microsoft\VisualStudio\SxS\VC7)."14.0"
$buildOptions = "-DUSE_MAINTAINER_MODE=On -DUSE_ENTERPRISE=On -DUSE_CATCH_TESTS=On -DUSE_FAILURE_TESTS=On -DDEBUG_SYNC_REPLICATION=On -DCMAKE_BUILD_TYPE=RelWithDebInfo -DSKIP_PACKAGING=On"
Remove-Item -Force -Recurse ${logdir} -ErrorAction SilentlyContinue
New-Item -Force -ItemType Directory ${logdir} -ErrorAction SilentlyContinue
if (Get-Command docker -errorAction SilentlyContinue) {
$buildOptions += " -DOPENSSL_INCLUDE_DIR=`"`$env:OPENSSL_INCLUDE_DIR`" -DLIB_EAY_RELEASE=`"`$env:LIB_EAY_RELEASE`" -DSSL_EAY_RELEASE=`"`$env:SSL_EAY_RELEASE`" -DLIB_EAY_RELEASE_DLL=`"`$env:LIB_EAY_RELEASE_DLL`" -DSSL_EAY_RELEASE_DLL=`"`$env:SSL_EAY_RELEASE_DLL"
$volume = "$env:WORKSPACE"
$volume += ":C:\arangodb"
$build = @'
$ErrorActionPreference="Stop"
New-Item -ItemType Directory -Force -Path c:\arangodb\build
cd c:\arangodb\build
cmake .. -G "Visual Studio 14 2015 Win64" ${buildOptions}
cmake --build . --config RelWithDebInfo
exit $LastExitCode
'@
$build > buildscript.ps1
docker run --rm -v $volume m0ppers/build-container powershell C:\arangodb\buildscript.ps1 | Set-Content -PassThru ${logdir}\build.log
} else {
$env:GYP_MSVS_OVERRIDE_PATH="${vcpath}\bin"
$env:CC="${vcpath}\bin\cl.exe"
$env:CXX="${vcpath}\bin\cl.exe"
$env
New-Item -ItemType Directory -Force -Path build
cd build
Invoke-Expression "cmake .. -G `"Visual Studio 15 2017 Win64`" ${buildOptions} | Set-Content -PassThru ..\${logdir}\build.log"
cmake --build . --config RelWithDebInfo | Add-Content -PassThru ..\${logdir}\build.log
cd ..
}

View File

@ -1,39 +0,0 @@
$logdir="windows-enterprise-maintainer/01-build"
$ErrorActionPreference="Stop"
$vcpath=$(Get-ItemProperty HKLM:\SOFTWARE\Wow6432Node\Microsoft\VisualStudio\SxS\VC7)."14.0"
$buildOptions = "-DUSE_MAINTAINER_MODE=Off -DUSE_ENTERPRISE=On -DUSE_CATCH_TESTS=On -DUSE_FAILURE_TESTS=On -DDEBUG_SYNC_REPLICATION=On -DCMAKE_BUILD_TYPE=RelWithDebInfo -DSKIP_PACKAGING=On"
Remove-Item -Force -Recurse ${logdir} -ErrorAction SilentlyContinue
New-Item -Force -ItemType Directory ${logdir} -ErrorAction SilentlyContinue
if (Get-Command docker -errorAction SilentlyContinue) {
$buildOptions += " -DOPENSSL_INCLUDE_DIR=`"`$env:OPENSSL_INCLUDE_DIR`" -DLIB_EAY_RELEASE=`"`$env:LIB_EAY_RELEASE`" -DSSL_EAY_RELEASE=`"`$env:SSL_EAY_RELEASE`" -DLIB_EAY_RELEASE_DLL=`"`$env:LIB_EAY_RELEASE_DLL`" -DSSL_EAY_RELEASE_DLL=`"`$env:SSL_EAY_RELEASE_DLL"
$volume = "$env:WORKSPACE"
$volume += ":C:\arangodb"
$build = @'
$ErrorActionPreference="Stop"
New-Item -ItemType Directory -Force -Path c:\arangodb\build
cd c:\arangodb\build
cmake .. -G "Visual Studio 14 2015 Win64" ${buildOptions}
cmake --build . --config RelWithDebInfo
exit $LastExitCode
'@
$build > buildscript.ps1
docker run --rm -v $volume m0ppers/build-container powershell C:\arangodb\buildscript.ps1 | Set-Content -PassThru ${logdir}\build.log
} else {
$env:GYP_MSVS_OVERRIDE_PATH="${vcpath}\bin"
$env:CC="${vcpath}\bin\cl.exe"
$env:CXX="${vcpath}\bin\cl.exe"
$env
New-Item -ItemType Directory -Force -Path build
cd build
Invoke-Expression "cmake .. -G `"Visual Studio 15 2017 Win64`" ${buildOptions} | Set-Content -PassThru ..\${logdir}\build.log"
cmake --build . --config RelWithDebInfo | Add-Content -PassThru ..\${logdir}\build.log
cd ..
}

View File

@ -270,6 +270,8 @@ SET(ARANGOD_SOURCES
Pregel/Recovery.cpp
Pregel/Utils.cpp
Pregel/Worker.cpp
Pregel/Worker-templates-native-types.cpp
Pregel/Worker-templates-algorithms.cpp
Pregel/WorkerConfig.cpp
Replication/DatabaseReplicationApplier.cpp
Replication/GlobalReplicationApplier.cpp

View File

@ -0,0 +1,33 @@
////////////////////////////////////////////////////////////////////////////////
/// DISCLAIMER
///
/// Copyright 2016 ArangoDB GmbH, Cologne, Germany
///
/// Licensed under the Apache License, Version 2.0 (the "License");
/// you may not use this file except in compliance with the License.
/// You may obtain a copy of the License at
///
/// http://www.apache.org/licenses/LICENSE-2.0
///
/// Unless required by applicable law or agreed to in writing, software
/// distributed under the License is distributed on an "AS IS" BASIS,
/// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
/// See the License for the specific language governing permissions and
/// limitations under the License.
///
/// Copyright holder is ArangoDB GmbH, Cologne, Germany
///
/// @author Simon Grätzer
////////////////////////////////////////////////////////////////////////////////
#include "Pregel/Worker.cpp"
// custom algorihm types
template class arangodb::pregel::Worker<SCCValue, int8_t,
SenderMessage<uint64_t>>;
template class arangodb::pregel::Worker<HITSValue, int8_t,
SenderMessage<double>>;
template class arangodb::pregel::Worker<ECValue, int8_t, HLLCounter>;
template class arangodb::pregel::Worker<DMIDValue, float, DMIDMessage>;
template class arangodb::pregel::Worker<LPValue, int8_t, uint64_t>;
template class arangodb::pregel::Worker<SLPAValue, int8_t, uint64_t>;

View File

@ -0,0 +1,28 @@
////////////////////////////////////////////////////////////////////////////////
/// DISCLAIMER
///
/// Copyright 2016 ArangoDB GmbH, Cologne, Germany
///
/// Licensed under the Apache License, Version 2.0 (the "License");
/// you may not use this file except in compliance with the License.
/// You may obtain a copy of the License at
///
/// http://www.apache.org/licenses/LICENSE-2.0
///
/// Unless required by applicable law or agreed to in writing, software
/// distributed under the License is distributed on an "AS IS" BASIS,
/// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
/// See the License for the specific language governing permissions and
/// limitations under the License.
///
/// Copyright holder is ArangoDB GmbH, Cologne, Germany
///
/// @author Simon Grätzer
////////////////////////////////////////////////////////////////////////////////
#include "Pregel/Worker.cpp"
// template types to create
template class arangodb::pregel::Worker<int64_t, int64_t, int64_t>;
template class arangodb::pregel::Worker<float, float, float>;
template class arangodb::pregel::Worker<double, float, double>;

View File

@ -777,17 +777,3 @@ void Worker<V, E, M>::_callConductorWithResponse(
}
}
}
// template types to create
template class arangodb::pregel::Worker<int64_t, int64_t, int64_t>;
template class arangodb::pregel::Worker<float, float, float>;
template class arangodb::pregel::Worker<double, float, double>;
// custom algorihm types
template class arangodb::pregel::Worker<SCCValue, int8_t,
SenderMessage<uint64_t>>;
template class arangodb::pregel::Worker<HITSValue, int8_t,
SenderMessage<double>>;
template class arangodb::pregel::Worker<ECValue, int8_t, HLLCounter>;
template class arangodb::pregel::Worker<DMIDValue, float, DMIDMessage>;
template class arangodb::pregel::Worker<LPValue, int8_t, uint64_t>;
template class arangodb::pregel::Worker<SLPAValue, int8_t, uint64_t>;

View File

@ -0,0 +1,41 @@
#REQUIRES -Version 2.0
<#
.SYNOPSIS
Common base of ArangoDB Windows build scripts.
.DESCRIPTION
The Script Sets variables and executes CMake with a fitting
generator and parameters required by the build. It optionally
starts a build if the $do_build variable is set to $TRUE.
#>
# set variables
$ErrorActionPreference = "Stop"
$PSDefaultParameterValues['*:ErrorAction']='Stop'
$arango_source = split-path -parent $script_path
$vcpath=$(Get-ItemProperty HKLM:\SOFTWARE\Wow6432Node\Microsoft\VisualStudio\SxS\VC7)."$vc_version"
$env:GYP_MSVS_OVERRIDE_PATH="${vcpath}\bin"
$env:CC="${vcpath}\bin\cl.exe"
$env:CXX="${vcpath}\bin\cl.exe"
# print configuration
echo "do build: $do_build"
echo "extra args: $Params"
echo "configuration: $config"
echo "source path: $arango_source"
echo "generator: $generator"
echo "VC version: $vc_version"
echo "CC: ${env:CC}"
echo "CXX: ${env:CXX}"
echo "GYP_MSVS_OVERRIDE_PATH: ${vcpath}\bin"
Start-Sleep -s 2
# configure
cmake -G "$generator" -DCMAKE_BUILD_TYPE="$config" -DSKIP_PACKAGING=ON "$arango_source" @Params
# build - with msbuild
if ($do_build) {
cmake --build . --config "$config"
}

View File

@ -0,0 +1,18 @@
#REQUIRES -Version 2.0
<#
.SYNOPSIS
Configures and builds ArangoDB
.EXAMPLE
mkdir arango-build; cd arangod-build; ../arangodb/scripts/configure/<this_file> [-build] [cmake params]
#>
param([switch] $build)
if ($build) { $do_build = $TRUE } else { $do_build = $FALSE }
$Params = $Args
$config = "RelWithDebInfo"
$vc_version = "14.0"
$generator = "Visual Studio 14 2015 Win64"
$script_path = split-path -parent $myinvocation.mycommand.definition
. "$script_path/windows_common.ps1"

View File

@ -0,0 +1,18 @@
#REQUIRES -Version 2.0
<#
.SYNOPSIS
Configures and builds ArangoDB
.EXAMPLE
mkdir arango-build; cd arangod-build; ../arangodb/scripts/configure/<this_file> [-build] [cmake params]
#>
param([switch] $build)
if ($build) { $do_build = $TRUE } else { $do_build = $FALSE }
$Params = $Args
$config = "Debug"
$vc_version = "15.0"
$generator = "Visual Studio 15 2017 Win64"
$script_path = split-path -parent $myinvocation.mycommand.definition
. "$script_path/windows_common.ps1"

View File

@ -0,0 +1,18 @@
#REQUIRES -Version 2.0
<#
.SYNOPSIS
Configures and builds ArangoDB
.EXAMPLE
mkdir arango-build; cd arangod-build; ../arangodb/scripts/configure/<this_file> [-build] [cmake params]
#>
param([switch] $build)
if ($build) { $do_build = $TRUE } else { $do_build = $FALSE }
$Params = $Args
$config = "RelWithDebInfo"
$vc_version = "15.0"
$generator = "Visual Studio 15 2017 Win64"
$script_path = split-path -parent $myinvocation.mycommand.definition
. "$script_path/windows_common.ps1"

View File

@ -0,0 +1,18 @@
#REQUIRES -Version 2.0
<#
.SYNOPSIS
Configures and builds ArangoDB
.EXAMPLE
mkdir arango-build; cd arangod-build; ../arangodb/scripts/configure/<this_file> [-build] [cmake params]
#>
param([switch] $build)
if ($build) { $do_build = $TRUE } else { $do_build = $FALSE }
$Params = $Args
$config = "Release"
$vc_version = "15.0"
$generator = "Visual Studio 15 2017 Win64"
$script_path = split-path -parent $myinvocation.mycommand.definition
. "$script_path/windows_common.ps1"