aboutsummaryrefslogtreecommitdiffstats
path: root/solc
diff options
context:
space:
mode:
authorAlex Beregszaszi <alex@rtfs.hu>2017-08-23 19:36:24 +0800
committerGitHub <noreply@github.com>2017-08-23 19:36:24 +0800
commit3b07c4d38e40c52ee8a4d16e56e2afa1a0f27905 (patch)
tree3af9644b27a6fd453610d26ffe65bf4ca98d9aa9 /solc
parentc5f11d938f6670d9dbe0d7212097089c757fd91a (diff)
parent09628dee8c86e71119884204eb729fe439fb3bad (diff)
downloaddexon-solidity-3b07c4d38e40c52ee8a4d16e56e2afa1a0f27905.tar.gz
dexon-solidity-3b07c4d38e40c52ee8a4d16e56e2afa1a0f27905.tar.zst
dexon-solidity-3b07c4d38e40c52ee8a4d16e56e2afa1a0f27905.zip
Merge pull request #2757 from ethereum/cmake
Static linking
Diffstat (limited to 'solc')
-rw-r--r--solc/CMakeLists.txt44
1 files changed, 24 insertions, 20 deletions
diff --git a/solc/CMakeLists.txt b/solc/CMakeLists.txt
index 18e83e75..656b27c3 100644
--- a/solc/CMakeLists.txt
+++ b/solc/CMakeLists.txt
@@ -1,27 +1,31 @@
-aux_source_directory(. SRC_LIST)
-list(REMOVE_ITEM SRC_LIST "./jsonCompiler.cpp")
+set(
+ sources
+ CommandLineInterface.cpp CommandLineInterface.h
+ main.cpp
+)
-include_directories(BEFORE ..)
+add_executable(solc ${sources})
+target_link_libraries(solc PRIVATE solidity ${Boost_PROGRAM_OPTIONS_LIBRARIES})
-set(EXECUTABLE solc)
-
-file(GLOB HEADERS "*.h")
-eth_simple_add_executable(${EXECUTABLE} ${SRC_LIST} ${HEADERS})
-
-eth_use(${EXECUTABLE} REQUIRED Solidity::solidity)
-target_link_libraries(${EXECUTABLE} ${Boost_PROGRAM_OPTIONS_LIBRARIES})
-
-if (APPLE)
- install(TARGETS ${EXECUTABLE} DESTINATION bin)
-else()
- eth_install_executable(${EXECUTABLE})
-endif()
+include(GNUInstallDirs)
+install(TARGETS solc DESTINATION "${CMAKE_INSTALL_BINDIR}")
if (EMSCRIPTEN)
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -s EXPORTED_FUNCTIONS='[\"_compileJSON\",\"_license\",\"_version\",\"_compileJSONMulti\",\"_compileJSONCallback\",\"_compileStandard\"]' -s RESERVED_FUNCTION_POINTERS=20")
- add_executable(soljson jsonCompiler.cpp ${HEADERS})
- eth_use(soljson REQUIRED Solidity::solidity)
+ add_executable(soljson jsonCompiler.cpp)
else()
- add_library(soljson jsonCompiler.cpp ${HEADERS})
- target_link_libraries(soljson solidity)
+ add_library(soljson jsonCompiler.cpp)
endif()
+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