mirror of
https://github.com/ethereum/solidity
synced 2023-10-03 13:03:40 +00:00
Merge pull request #9811 from ethereum/windowsStaticCircleCI
Completely static Windows build on CircleCI
This commit is contained in:
commit
ef0760614d
7
.circleci/build_win.ps1
Normal file
7
.circleci/build_win.ps1
Normal file
@ -0,0 +1,7 @@
|
|||||||
|
cd "$PSScriptRoot\.."
|
||||||
|
mkdir build
|
||||||
|
cd build
|
||||||
|
$boost_dir=(Resolve-Path $PSScriptRoot\..\deps\boost\lib\cmake\Boost-*)
|
||||||
|
..\deps\cmake\bin\cmake -G "Visual Studio 16 2019" -DBoost_DIR="$boost_dir\" -DCMAKE_MSVC_RUNTIME_LIBRARY=MultiThreaded -DCMAKE_INSTALL_PREFIX="$PSScriptRoot\..\upload" ..
|
||||||
|
msbuild solidity.sln /p:Configuration=Release /m:5 /v:minimal
|
||||||
|
..\deps\cmake\bin\cmake --build . -j 5 --target install --config Release
|
@ -27,6 +27,9 @@ parameters:
|
|||||||
type: string
|
type: string
|
||||||
default: "solbuildpackpusher/solidity-buildpack-deps@sha256:23dad3b34deae8107c8551804ef299f6a89c23ed506e8118fac151e2bdc9018c"
|
default: "solbuildpackpusher/solidity-buildpack-deps@sha256:23dad3b34deae8107c8551804ef299f6a89c23ed506e8118fac151e2bdc9018c"
|
||||||
|
|
||||||
|
orbs:
|
||||||
|
win: circleci/windows@2.2.0
|
||||||
|
|
||||||
defaults:
|
defaults:
|
||||||
|
|
||||||
# --------------------------------------------------------------------------
|
# --------------------------------------------------------------------------
|
||||||
@ -64,6 +67,10 @@ defaults:
|
|||||||
path: build/solc/solc
|
path: build/solc/solc
|
||||||
destination: solc
|
destination: solc
|
||||||
|
|
||||||
|
# windows artifacts
|
||||||
|
- artifact_solc_windows: &artifact_solc_windows
|
||||||
|
path: upload/
|
||||||
|
|
||||||
# compiled tool executable target
|
# compiled tool executable target
|
||||||
- artifacts_tools: &artifacts_tools
|
- artifacts_tools: &artifacts_tools
|
||||||
path: build/tools/solidity-upgrade
|
path: build/tools/solidity-upgrade
|
||||||
@ -876,6 +883,29 @@ jobs:
|
|||||||
- run: *gitter_notify_failure
|
- run: *gitter_notify_failure
|
||||||
- run: *gitter_notify_success
|
- run: *gitter_notify_success
|
||||||
|
|
||||||
|
b_win:
|
||||||
|
executor:
|
||||||
|
name: win/default
|
||||||
|
shell: powershell.exe
|
||||||
|
steps:
|
||||||
|
- checkout
|
||||||
|
- restore_cache:
|
||||||
|
keys:
|
||||||
|
- dependencies-win-{{ checksum "scripts/install_deps.ps1" }}
|
||||||
|
- run:
|
||||||
|
name: "Installing dependencies"
|
||||||
|
command: if ( -not (Test-Path .\deps\boost) ) { .\scripts\install_deps.ps1 }
|
||||||
|
- save_cache:
|
||||||
|
key: dependencies-win-{{ checksum "scripts/install_deps.ps1" }}
|
||||||
|
paths:
|
||||||
|
- .\deps\boost
|
||||||
|
- .\deps\cmake
|
||||||
|
- run:
|
||||||
|
name: "Building solidity"
|
||||||
|
command: .circleci/build_win.ps1
|
||||||
|
- store_artifacts: *artifact_solc_windows
|
||||||
|
- persist_to_workspace: *artifacts_build_dir
|
||||||
|
|
||||||
workflows:
|
workflows:
|
||||||
version: 2
|
version: 2
|
||||||
|
|
||||||
@ -927,6 +957,9 @@ workflows:
|
|||||||
- t_ems_compile_ext_gnosis: *workflow_emscripten
|
- t_ems_compile_ext_gnosis: *workflow_emscripten
|
||||||
- t_ems_compile_ext_zeppelin: *workflow_emscripten
|
- t_ems_compile_ext_zeppelin: *workflow_emscripten
|
||||||
|
|
||||||
|
# Windows build and tests
|
||||||
|
- b_win: *workflow_trigger_on_tags
|
||||||
|
|
||||||
nightly:
|
nightly:
|
||||||
|
|
||||||
triggers:
|
triggers:
|
||||||
|
@ -59,7 +59,7 @@ install:
|
|||||||
before_build:
|
before_build:
|
||||||
- if not exist build mkdir build
|
- if not exist build mkdir build
|
||||||
- cd build
|
- cd build
|
||||||
- cmake -G "Visual Studio 15 2017 Win64" .. -DTESTS=On
|
- cmake -G "Visual Studio 15 2017 Win64" .. -DTESTS=On -DBoost_USE_STATIC_RUNTIME=OFF
|
||||||
build_script:
|
build_script:
|
||||||
- msbuild solidity.sln /p:Configuration=%CONFIGURATION% /m:%NUMBER_OF_PROCESSORS% /v:minimal
|
- msbuild solidity.sln /p:Configuration=%CONFIGURATION% /m:%NUMBER_OF_PROCESSORS% /v:minimal
|
||||||
- cd %APPVEYOR_BUILD_FOLDER%
|
- cd %APPVEYOR_BUILD_FOLDER%
|
||||||
|
@ -25,6 +25,9 @@ set(ETH_SCRIPTS_DIR ${ETH_CMAKE_DIR}/scripts)
|
|||||||
## use multithreaded boost libraries, with -mt suffix
|
## use multithreaded boost libraries, with -mt suffix
|
||||||
set(Boost_USE_MULTITHREADED ON)
|
set(Boost_USE_MULTITHREADED ON)
|
||||||
option(Boost_USE_STATIC_LIBS "Link Boost statically" ON)
|
option(Boost_USE_STATIC_LIBS "Link Boost statically" ON)
|
||||||
|
if(WIN32)
|
||||||
|
option(Boost_USE_STATIC_RUNTIME "Link Boost against static C++ runtime libraries" ON)
|
||||||
|
endif()
|
||||||
|
|
||||||
set(BOOST_COMPONENTS "filesystem;unit_test_framework;program_options;system")
|
set(BOOST_COMPONENTS "filesystem;unit_test_framework;program_options;system")
|
||||||
|
|
||||||
|
@ -15,5 +15,9 @@ macro (eth_policy)
|
|||||||
# do not interpret if() arguments as variables!
|
# do not interpret if() arguments as variables!
|
||||||
cmake_policy(SET CMP0054 NEW)
|
cmake_policy(SET CMP0054 NEW)
|
||||||
endif()
|
endif()
|
||||||
endmacro()
|
|
||||||
|
|
||||||
|
if (POLICY CMP0091)
|
||||||
|
# Allow selecting MSVC runtime library using CMAKE_MSVC_RUNTIME_LIBRARY.
|
||||||
|
cmake_policy(SET CMP0091 NEW)
|
||||||
|
endif()
|
||||||
|
endmacro()
|
||||||
|
@ -34,6 +34,12 @@ if(CMAKE_VERSION VERSION_GREATER 3.1)
|
|||||||
set(byproducts BUILD_BYPRODUCTS "${JSONCPP_LIBRARY}")
|
set(byproducts BUILD_BYPRODUCTS "${JSONCPP_LIBRARY}")
|
||||||
endif()
|
endif()
|
||||||
|
|
||||||
|
# Propagate CMAKE_MSVC_RUNTIME_LIBRARY on Windows builds, if set.
|
||||||
|
if (WIN32 AND POLICY CMP0091 AND CMAKE_MSVC_RUNTIME_LIBRARY)
|
||||||
|
list(APPEND JSONCPP_CMAKE_ARGS "-DCMAKE_POLICY_DEFAULT_CMP0091:STRING=NEW")
|
||||||
|
list(APPEND JSONCPP_CMAKE_ARGS "-DCMAKE_MSVC_RUNTIME_LIBRARY=${CMAKE_MSVC_RUNTIME_LIBRARY}")
|
||||||
|
endif()
|
||||||
|
|
||||||
ExternalProject_Add(jsoncpp-project
|
ExternalProject_Add(jsoncpp-project
|
||||||
PREFIX "${prefix}"
|
PREFIX "${prefix}"
|
||||||
DOWNLOAD_DIR "${CMAKE_SOURCE_DIR}/deps/downloads"
|
DOWNLOAD_DIR "${CMAKE_SOURCE_DIR}/deps/downloads"
|
||||||
@ -51,6 +57,7 @@ ExternalProject_Add(jsoncpp-project
|
|||||||
-DJSONCPP_WITH_PKGCONFIG_SUPPORT=OFF
|
-DJSONCPP_WITH_PKGCONFIG_SUPPORT=OFF
|
||||||
-DCMAKE_CXX_FLAGS=${JSONCPP_CXX_FLAGS}
|
-DCMAKE_CXX_FLAGS=${JSONCPP_CXX_FLAGS}
|
||||||
-DCMAKE_BUILD_TYPE=${CMAKE_BUILD_TYPE}
|
-DCMAKE_BUILD_TYPE=${CMAKE_BUILD_TYPE}
|
||||||
|
${JSONCPP_CMAKE_ARGS}
|
||||||
${byproducts}
|
${byproducts}
|
||||||
)
|
)
|
||||||
|
|
||||||
|
15
scripts/install_deps.ps1
Normal file
15
scripts/install_deps.ps1
Normal file
@ -0,0 +1,15 @@
|
|||||||
|
# Needed for Invoke-WebRequest to work via CI.
|
||||||
|
$progressPreference = "silentlyContinue"
|
||||||
|
|
||||||
|
New-Item -ItemType Directory -Force -Path "$PSScriptRoot\..\deps"
|
||||||
|
|
||||||
|
Invoke-WebRequest -URI "https://github.com/Kitware/CMake/releases/download/v3.18.2/cmake-3.18.2-win64-x64.zip" -OutFile cmake.zip
|
||||||
|
tar -xf cmake.zip
|
||||||
|
mv cmake-3.18.2-win64-x64 "$PSScriptRoot\..\deps\cmake"
|
||||||
|
|
||||||
|
Invoke-WebRequest -URI "https://dl.bintray.com/boostorg/release/1.74.0/source/boost_1_74_0.zip" -OutFile boost.zip
|
||||||
|
tar -xf boost.zip
|
||||||
|
cd boost_1_74_0
|
||||||
|
.\bootstrap.bat
|
||||||
|
.\b2 -j4 -d0 link=static runtime-link=static variant=release threading=multi address-model=64 --with-filesystem --with-system --with-program_options --with-test --prefix="$PSScriptRoot\..\deps\boost" install
|
||||||
|
cd ..
|
Loading…
Reference in New Issue
Block a user