CMake: Add option to static link solc

This commit is contained in:
Paweł Bylica 2017-08-22 22:50:03 +02:00
parent 15fd43f035
commit 4974ff3962
No known key found for this signature in database
GPG Key ID: 7A0C037434FE77EF
3 changed files with 16 additions and 2 deletions

View File

@ -11,6 +11,8 @@ eth_policy()
set(PROJECT_VERSION "0.4.16") set(PROJECT_VERSION "0.4.16")
project(solidity VERSION ${PROJECT_VERSION}) project(solidity VERSION ${PROJECT_VERSION})
option(SOLC_LINK_STATIC "Link solc executable statically on supported platforms" OFF)
# Let's find our dependencies # Let's find our dependencies
include(EthDependencies) include(EthDependencies)
include(deps/jsoncpp.cmake) include(deps/jsoncpp.cmake)

View File

@ -9,7 +9,7 @@ COPY / $WORKDIR
#Install dependencies, eliminate annoying warnings, and build release, delete all remaining points and statically link. #Install dependencies, eliminate annoying warnings, and build release, delete all remaining points and statically link.
RUN ./scripts/install_deps.sh && sed -i -E -e 's/include <sys\/poll.h>/include <poll.h>/' /usr/include/boost/asio/detail/socket_types.hpp &&\ RUN ./scripts/install_deps.sh && sed -i -E -e 's/include <sys\/poll.h>/include <poll.h>/' /usr/include/boost/asio/detail/socket_types.hpp &&\
cmake -DCMAKE_BUILD_TYPE=Release -DTESTS=0 -DSTATIC_LINKING=1 &&\ cmake -DCMAKE_BUILD_TYPE=Release -DTESTS=0 -DSOLC_LINK_STATIC=1 &&\
make solc && install -s solc/solc /usr/bin &&\ make solc && install -s solc/solc /usr/bin &&\
cd / && rm -rf solidity &&\ cd / && rm -rf solidity &&\
apk del sed build-base git make cmake gcc g++ musl-dev curl-dev boost-dev &&\ apk del sed build-base git make cmake gcc g++ musl-dev curl-dev boost-dev &&\

View File

@ -16,4 +16,16 @@ if (EMSCRIPTEN)
else() else()
add_library(soljson jsonCompiler.cpp) add_library(soljson jsonCompiler.cpp)
endif() endif()
target_link_libraries(soljson PRIVATE solidity) target_link_libraries(soljson PRIVATE solidity)
if(SOLC_LINK_STATIC AND UNIX AND NOT APPLE)
# Produce solc as statically linked binary (includes C/C++ standard libraries)
# This is not supported on macOS, see
# https://developer.apple.com/library/content/qa/qa1118/_index.html.
set_target_properties(
solc PROPERTIES
LINK_FLAGS -static
LINK_SEARCH_START_STATIC ON
LINK_SEARCH_END_STATIC ON
)
endif()