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) set(WITH_JEMALLOC OFF CACHE BOOL "enable jemalloc" FORCE)
endif () endif ()
# snappy settings
#set(SNAPPY_HOME ${CMAKE_SOURCE_DIR}/3rdParty/snappy/google-snappy-d53de18/)
if (WIN32) 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)") set(PORTABLE On CACHE BOOL "enable portable rocksdb build (disabling might yield better performance but break portability)")
endif () 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}) add_subdirectory(${CMAKE_CURRENT_SOURCE_DIR}/${ARANGO_ROCKSDB_VERSION})
# result # result

View File

@ -1345,7 +1345,19 @@ def buildEdition(os, edition, maintainer) {
} }
} }
else if (os == 'windows') { 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) logStopStage(os, logFile)
@ -1354,7 +1366,7 @@ def buildEdition(os, edition, maintainer) {
logExceptionStage(os, logFile, logFile, exc) logExceptionStage(os, logFile, logFile, exc)
def msg = exc.toString() def msg = exc.toString()
if (os == 'linux' || os == 'mac') { if (os == 'linux' || os == 'mac') {
sh "echo \"${msg}\" >> ${logFile}" sh "echo \"${msg}\" >> ${logFile}"
} }

View File

@ -1345,7 +1345,19 @@ def buildEdition(os, edition, maintainer) {
} }
} }
else if (os == 'windows') { 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) 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/Recovery.cpp
Pregel/Utils.cpp Pregel/Utils.cpp
Pregel/Worker.cpp Pregel/Worker.cpp
Pregel/Worker-templates-native-types.cpp
Pregel/Worker-templates-algorithms.cpp
Pregel/WorkerConfig.cpp Pregel/WorkerConfig.cpp
Replication/DatabaseReplicationApplier.cpp Replication/DatabaseReplicationApplier.cpp
Replication/GlobalReplicationApplier.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"