diff --git a/CMakeLists.txt b/CMakeLists.txt index d204ffec3..da14ddb77 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 c984ce99d..654a9f29a 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 /include /' /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 0563fe2aa..656b27c34 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