From e0cee1db5966507d2e812cda64442cf9c61757b5 Mon Sep 17 00:00:00 2001 From: Bucky Kittinger Date: Sun, 16 Dec 2018 19:24:59 -0500 Subject: [PATCH] added support for configurable exports for wasm output, also fixed cmake to build in different dirs --- eosio_llvm | 2 +- modules/ClangExternalProject.txt | 1 + modules/InstallCDT.cmake | 9 ++++----- modules/LibrariesExternalProject.txt | 1 + modules/ToolsExternalProject.txt | 3 ++- tools/include/compiler_options.hpp.in | 4 +++- 6 files changed, 12 insertions(+), 8 deletions(-) diff --git a/eosio_llvm b/eosio_llvm index 798a37dc0d..38844df792 160000 --- a/eosio_llvm +++ b/eosio_llvm @@ -1 +1 @@ -Subproject commit 798a37dc0de68ba4fd5bb2988e45f7d022b3bb65 +Subproject commit 38844df7923093c9b9869cffa7e62fb1519877ab diff --git a/modules/ClangExternalProject.txt b/modules/ClangExternalProject.txt index ab7b5f6bae..8142fd3bab 100644 --- a/modules/ClangExternalProject.txt +++ b/modules/ClangExternalProject.txt @@ -7,6 +7,7 @@ ExternalProject_Add( CMAKE_ARGS -DCMAKE_INSTALL_PREFIX=${CMAKE_INSTALL_PREFIX}/llvm -DCMAKE_BUILD_TYPE=Release -DEOSIO_VER_MAJOR=${VERSION_MAJOR} -DEOSIO_VER_MINOR=${VERSION_MINOR} -DEOSIO_VER_REVISION=${VERSION_PATCH} -DEOSIO_STACK_SIZE=8192 -DCOMPILER_RT_DEFAULT_TARGET_TRIPLE=wasm32-unknown-unknown-wasm -DCOMPILER_RT_BAREMETAL_BUILD=TRUE -DCOMPILER_RT_EXCLUDE_ATOMIC_BUILTIN=TRUE -DCAN_TARGET_wasm32=ON -DLLVM_BUILD_EXTERNAL_COMPILER_RT=ON -DCOMPILER_RT_BUILD_BUILTINS=ON -DCOMPILER_RT_BUILD_XRAY=OFF -DCOMPILER_RT_BUILD_SANITIZERS=OFF -DCOMPILER_RT_BUILD_LIBFUZZER=OFF -DCOMPILER_RT_BUILD_PROFILE=OFF SOURCE_DIR "${CMAKE_SOURCE_DIR}/eosio_llvm" + BINARY_DIR "${CMAKE_BINARY_DIR}/eosio_llvm" UPDATE_COMMAND "" PATCH_COMMAND "" TEST_COMMAND "" diff --git a/modules/InstallCDT.cmake b/modules/InstallCDT.cmake index 8c9e09e34b..1f14b8410f 100644 --- a/modules/InstallCDT.cmake +++ b/modules/InstallCDT.cmake @@ -1,6 +1,6 @@ add_custom_command( TARGET EosioClang POST_BUILD COMMAND mkdir -p ${CMAKE_BINARY_DIR}/bin ) macro( eosio_clang_install file ) - set(BINARY_DIR ${CMAKE_BINARY_DIR}/EosioClang-prefix/src/EosioClang-build/bin) + set(BINARY_DIR ${CMAKE_BINARY_DIR}/eosio_llvm/bin) add_custom_command( TARGET EosioClang POST_BUILD COMMAND ${CMAKE_COMMAND} -E copy ${BINARY_DIR}/${file} ${CMAKE_BINARY_DIR}/bin/ ) install(FILES ${BINARY_DIR}/${file} DESTINATION ${CMAKE_INSTALL_FULL_BINDIR} @@ -8,7 +8,7 @@ macro( eosio_clang_install file ) endmacro( eosio_clang_install ) macro( eosio_clang_install_and_symlink file symlink ) - set(BINARY_DIR ${CMAKE_BINARY_DIR}/EosioClang-prefix/src/EosioClang-build/bin) + set(BINARY_DIR ${CMAKE_BINARY_DIR}/eosio_llvm/bin) add_custom_command( TARGET EosioClang POST_BUILD COMMAND ${CMAKE_COMMAND} -E copy ${BINARY_DIR}/${file} ${CMAKE_BINARY_DIR}/bin/ ) add_custom_command( TARGET EosioClang POST_BUILD COMMAND cd ${CMAKE_BINARY_DIR}/bin && ln -sf ${file} ${symlink} ) install(FILES ${BINARY_DIR}/${file} @@ -17,7 +17,7 @@ macro( eosio_clang_install_and_symlink file symlink ) endmacro( eosio_clang_install_and_symlink ) macro( eosio_tool_install file ) - set(BINARY_DIR ${CMAKE_BINARY_DIR}/EosioTools-prefix/src/EosioTools-build/bin) + set(BINARY_DIR ${CMAKE_BINARY_DIR}/tools/bin) add_custom_command( TARGET EosioTools POST_BUILD COMMAND ${CMAKE_COMMAND} -E copy ${BINARY_DIR}/${file} ${CMAKE_BINARY_DIR}/bin/ ) install(FILES ${BINARY_DIR}/${file} DESTINATION ${CMAKE_INSTALL_FULL_BINDIR} @@ -25,7 +25,7 @@ macro( eosio_tool_install file ) endmacro( eosio_tool_install ) macro( eosio_tool_install_and_symlink file symlink ) - set(BINARY_DIR ${CMAKE_BINARY_DIR}/EosioTools-prefix/src/EosioTools-build/bin) + set(BINARY_DIR ${CMAKE_BINARY_DIR}/tools/bin) add_custom_command( TARGET EosioTools POST_BUILD COMMAND ${CMAKE_COMMAND} -E copy ${BINARY_DIR}/${file} ${CMAKE_BINARY_DIR}/bin/ ) add_custom_command( TARGET EosioTools POST_BUILD COMMAND cd ${CMAKE_BINARY_DIR}/bin && ln -sf ${file} ${symlink} ) install(FILES ${BINARY_DIR}/${file} @@ -36,7 +36,6 @@ endmacro( eosio_tool_install_and_symlink ) macro( eosio_libraries_install) execute_process(COMMAND ${CMAKE_COMMAND} -E make_directory ${CMAKE_BINARY_DIR}/lib) execute_process(COMMAND ${CMAKE_COMMAND} -E make_directory ${CMAKE_BINARY_DIR}/include) - set(BIN_DIR ${CMAKE_BINARY_DIR}/EosioWasmLibraries-prefix/src/EosioWasmLibraries-build/) install(DIRECTORY ${CMAKE_BINARY_DIR}/lib/ DESTINATION ${CMAKE_INSTALL_PREFIX}/lib) install(DIRECTORY ${CMAKE_BINARY_DIR}/include/ DESTINATION ${CMAKE_INSTALL_FULL_INCLUDEDIR}) endmacro( eosio_libraries_install ) diff --git a/modules/LibrariesExternalProject.txt b/modules/LibrariesExternalProject.txt index cb1c3aef25..d9298be3a2 100644 --- a/modules/LibrariesExternalProject.txt +++ b/modules/LibrariesExternalProject.txt @@ -5,6 +5,7 @@ include(GNUInstallDirs) ExternalProject_Add( EosioWasmLibraries SOURCE_DIR "${CMAKE_SOURCE_DIR}/libraries" + BINARY_DIR "${CMAKE_BINARY_DIR}/libraries" CMAKE_ARGS -DCMAKE_TOOLCHAIN_FILE=${CMAKE_BINARY_DIR}/lib/cmake/eosio.cdt/EosioWasmToolchain.cmake -DEOSIO_CDT_BIN=${CMAKE_BINARY_DIR}/lib/cmake/eosio.cdt/ -DBASE_BINARY_DIR=${CMAKE_BINARY_DIR} -D__APPLE=${APPLE} UPDATE_COMMAND "" PATCH_COMMAND "" diff --git a/modules/ToolsExternalProject.txt b/modules/ToolsExternalProject.txt index 9e3861d3c9..eb7df5300e 100644 --- a/modules/ToolsExternalProject.txt +++ b/modules/ToolsExternalProject.txt @@ -2,12 +2,13 @@ include(ExternalProject) find_package(Git REQUIRED) include(GNUInstallDirs) -set(LLVM_BINDIR ${CMAKE_BINARY_DIR}/EosioClang-prefix/src/EosioClang-build) +set(LLVM_BINDIR ${CMAKE_BINARY_DIR}/eosio_llvm) ExternalProject_Add( EosioTools CMAKE_ARGS -DCMAKE_INSTALL_PREFIX=${CMAKE_INSTALL_PREFIX} -DCMAKE_BUILD_TYPE=Release -DVERSION_FULL=${VERSION_FULL} -DLLVM_SRCDIR=${CMAKE_SOURCE_DIR}/eosio_llvm -DLLVM_BINDIR=${LLVM_BINDIR} -DLLVM_DIR=${LLVM_BINDIR}/lib/cmake/llvm -DCMAKE_INSTALL_BINDIR=${CMAKE_INSTALL_BINDIR} SOURCE_DIR "${CMAKE_SOURCE_DIR}/tools" + BINARY_DIR "${CMAKE_BINARY_DIR}/tools" UPDATE_COMMAND "" PATCH_COMMAND "" TEST_COMMAND "" diff --git a/tools/include/compiler_options.hpp.in b/tools/include/compiler_options.hpp.in index 7a85978769..d13a2c2236 100644 --- a/tools/include/compiler_options.hpp.in +++ b/tools/include/compiler_options.hpp.in @@ -699,8 +699,10 @@ static Options CreateOptions(bool add_defaults=true) { #else if (fnative_opt) ldopts.emplace_back("-lnative_c++ -lnative_c -lnative_eosio -lnative"); - else + else { ldopts.emplace_back("-lc++ -lc -leosio"); + ldopts.emplace_back("--only-export \"apply:function\""); + } #endif return {output_fn, abigen_inputs.str(), inputs, link, abigen, pp_dir, abigen_output, abigen_contract, copts, ldopts, agopts, agresources, fnative_opt}; }