diff options
author | Paweł Bylica <chfast@gmail.com> | 2017-08-23 04:50:03 +0800 |
---|---|---|
committer | Paweł Bylica <chfast@gmail.com> | 2017-08-23 04:50:25 +0800 |
commit | 4974ff3962759a19150877b0e59e64319190ba1d (patch) | |
tree | c0a96c8d0037de5ef64c44d33a7683598216970d | |
parent | 15fd43f0357e1f3c6ec1262df6ee39b06a6fe3f9 (diff) | |
download | dexon-solidity-4974ff3962759a19150877b0e59e64319190ba1d.tar.gz dexon-solidity-4974ff3962759a19150877b0e59e64319190ba1d.tar.zst dexon-solidity-4974ff3962759a19150877b0e59e64319190ba1d.zip |
CMake: Add option to static link solc
-rw-r--r-- | CMakeLists.txt | 2 | ||||
-rw-r--r-- | scripts/Dockerfile | 2 | ||||
-rw-r--r-- | solc/CMakeLists.txt | 14 |
3 files changed, 16 insertions, 2 deletions
diff --git a/CMakeLists.txt b/CMakeLists.txt index d204ffec..da14ddb7 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -11,6 +11,8 @@ eth_policy() set(PROJECT_VERSION "0.4.16") project(solidity VERSION ${PROJECT_VERSION}) +option(SOLC_LINK_STATIC "Link solc executable statically on supported platforms" OFF) + # Let's find our dependencies include(EthDependencies) include(deps/jsoncpp.cmake) diff --git a/scripts/Dockerfile b/scripts/Dockerfile index c984ce99..654a9f29 100644 --- a/scripts/Dockerfile +++ b/scripts/Dockerfile @@ -9,7 +9,7 @@ COPY / $WORKDIR #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 &&\ -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 &&\ cd / && rm -rf solidity &&\ apk del sed build-base git make cmake gcc g++ musl-dev curl-dev boost-dev &&\ diff --git a/solc/CMakeLists.txt b/solc/CMakeLists.txt index 0563fe2a..656b27c3 100644 --- a/solc/CMakeLists.txt +++ b/solc/CMakeLists.txt @@ -16,4 +16,16 @@ if (EMSCRIPTEN) else() add_library(soljson jsonCompiler.cpp) endif() -target_link_libraries(soljson PRIVATE solidity)
\ No newline at end of file +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()
\ No newline at end of file |