aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorPaweł Bylica <chfast@gmail.com>2017-08-23 04:50:03 +0800
committerPaweł Bylica <chfast@gmail.com>2017-08-23 04:50:25 +0800
commit4974ff3962759a19150877b0e59e64319190ba1d (patch)
treec0a96c8d0037de5ef64c44d33a7683598216970d
parent15fd43f0357e1f3c6ec1262df6ee39b06a6fe3f9 (diff)
downloaddexon-solidity-4974ff3962759a19150877b0e59e64319190ba1d.tar.gz
dexon-solidity-4974ff3962759a19150877b0e59e64319190ba1d.tar.zst
dexon-solidity-4974ff3962759a19150877b0e59e64319190ba1d.zip
CMake: Add option to static link solc
-rw-r--r--CMakeLists.txt2
-rw-r--r--scripts/Dockerfile2
-rw-r--r--solc/CMakeLists.txt14
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