mirror of
https://github.com/ethereum/solidity
synced 2023-10-03 13:03:40 +00:00
Major reorganisation.
New libs (libethsupport, libevm, liblll). New LLLC binary.
This commit is contained in:
commit
8ca0ae99ac
56
CMakeLists.txt
Normal file
56
CMakeLists.txt
Normal file
@ -0,0 +1,56 @@
|
||||
cmake_policy(SET CMP0015 NEW)
|
||||
|
||||
aux_source_directory(. SRC_LIST)
|
||||
|
||||
include_directories(..)
|
||||
#link_directories(../libethsupport)
|
||||
#link_directories(../libethcore)
|
||||
#link_directories(../liblll)
|
||||
|
||||
set(EXECUTABLE lllc)
|
||||
|
||||
add_executable(${EXECUTABLE} ${SRC_LIST})
|
||||
|
||||
if (JSONRPC_LS)
|
||||
add_definitions(-DETH_JSONRPC)
|
||||
include_directories(${JSONRPC_ID})
|
||||
target_link_libraries(${EXECUTABLE} ${JSONRPC_LS})
|
||||
endif ()
|
||||
|
||||
if (READLINE_LS)
|
||||
add_definitions(-DETH_READLINE)
|
||||
include_directories(${READLINE_ID})
|
||||
target_link_libraries(${EXECUTABLE} ${READLINE_LS})
|
||||
endif ()
|
||||
|
||||
if (${TARGET_PLATFORM} STREQUAL "w64")
|
||||
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -static-libgcc -static-libstdc++")
|
||||
target_link_libraries(${EXECUTABLE} gcc)
|
||||
target_link_libraries(${EXECUTABLE} gdi32)
|
||||
target_link_libraries(${EXECUTABLE} ws2_32)
|
||||
target_link_libraries(${EXECUTABLE} mswsock)
|
||||
target_link_libraries(${EXECUTABLE} shlwapi)
|
||||
target_link_libraries(${EXECUTABLE} iphlpapi)
|
||||
target_link_libraries(${EXECUTABLE} cryptopp)
|
||||
target_link_libraries(${EXECUTABLE} boost_system-mt-s)
|
||||
target_link_libraries(${EXECUTABLE} boost_filesystem-mt-s)
|
||||
target_link_libraries(${EXECUTABLE} boost_thread_win32-mt-s)
|
||||
set(CMAKE_SHARED_LIBRARY_LINK_CXX_FLAGS)
|
||||
elseif (UNIX)
|
||||
else ()
|
||||
target_link_libraries(${EXECUTABLE} ${CRYPTOPP_LIBRARIES})
|
||||
target_link_libraries(${EXECUTABLE} boost_system)
|
||||
target_link_libraries(${EXECUTABLE} boost_filesystem)
|
||||
find_package(Threads REQUIRED)
|
||||
target_link_libraries(${EXECUTABLE} ${CMAKE_THREAD_LIBS_INIT})
|
||||
endif ()
|
||||
|
||||
target_link_libraries(${EXECUTABLE} lll)
|
||||
target_link_libraries(${EXECUTABLE} ethcore)
|
||||
target_link_libraries(${EXECUTABLE} ethsupport)
|
||||
target_link_libraries(${EXECUTABLE} ${MINIUPNPC_LS})
|
||||
target_link_libraries(${EXECUTABLE} ${LEVELDB_LS})
|
||||
target_link_libraries(${EXECUTABLE} gmp)
|
||||
|
||||
install( TARGETS ${EXECUTABLE} DESTINATION bin )
|
||||
|
106
main.cpp
Normal file
106
main.cpp
Normal file
@ -0,0 +1,106 @@
|
||||
/*
|
||||
This file is part of cpp-ethereum.
|
||||
|
||||
cpp-ethereum is free software: you can redistribute it and/or modify
|
||||
it under the terms of the GNU General Public License as published by
|
||||
the Free Software Foundation, either version 3 of the License, or
|
||||
(at your option) any later version.
|
||||
|
||||
cpp-ethereum is distributed in the hope that it will be useful,
|
||||
but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
GNU General Public License for more details.
|
||||
|
||||
You should have received a copy of the GNU General Public License
|
||||
along with cpp-ethereum. If not, see <http://www.gnu.org/licenses/>.
|
||||
*/
|
||||
/** @file main.cpp
|
||||
* @author Gav Wood <i@gavwood.com>
|
||||
* @date 2014
|
||||
* Ethereum client.
|
||||
*/
|
||||
|
||||
#include <fstream>
|
||||
#include <iostream>
|
||||
#include <liblll/Compiler.h>
|
||||
#include <libethsupport/CommonIO.h>
|
||||
#include <libethsupport/CommonData.h>
|
||||
#include "BuildInfo.h"
|
||||
using namespace std;
|
||||
using namespace eth;
|
||||
|
||||
void help()
|
||||
{
|
||||
cout
|
||||
<< "Usage lllc [OPTIONS] <file>" << endl
|
||||
<< "Options:" << endl
|
||||
<< " -h,--help Show this help message and exit." << endl
|
||||
<< " -V,--version Show the version and exit." << endl;
|
||||
exit(0);
|
||||
}
|
||||
|
||||
void version()
|
||||
{
|
||||
cout << "LLLC, the Lovely Little Language Compiler " << ETH_QUOTED(ETH_VERSION) << endl;
|
||||
cout << " By Gav Wood, (c) 2014." << endl;
|
||||
cout << "Build: " << ETH_QUOTED(ETH_BUILD_PLATFORM) << "/" << ETH_QUOTED(ETH_BUILD_TYPE) << endl;
|
||||
exit(0);
|
||||
}
|
||||
|
||||
enum Mode { Binary, Hex, ParseTree };
|
||||
|
||||
int main(int argc, char** argv)
|
||||
{
|
||||
string infile;
|
||||
Mode mode = Hex;
|
||||
|
||||
for (int i = 1; i < argc; ++i)
|
||||
{
|
||||
string arg = argv[i];
|
||||
if (arg == "-h" || arg == "--help")
|
||||
help();
|
||||
else if (arg == "-b" || arg == "--binary")
|
||||
mode = Binary;
|
||||
else if (arg == "-h" || arg == "--hex")
|
||||
mode = Hex;
|
||||
else if (arg == "-t" || arg == "--parse-tree")
|
||||
mode = ParseTree;
|
||||
else if (arg == "-V" || arg == "--version")
|
||||
version();
|
||||
else
|
||||
infile = argv[i];
|
||||
}
|
||||
|
||||
string src;
|
||||
if (infile.empty())
|
||||
{
|
||||
string s;
|
||||
while (!cin.eof())
|
||||
{
|
||||
getline(cin, s);
|
||||
src.append(s);
|
||||
}
|
||||
}
|
||||
else
|
||||
src = asString(contents(infile));
|
||||
|
||||
if (src.empty())
|
||||
cerr << "Empty file." << endl;
|
||||
else if (mode == Binary || mode == Hex)
|
||||
{
|
||||
vector<string> errors;
|
||||
auto bs = compileLLL(src, &errors);
|
||||
if (mode == Hex)
|
||||
cout << toHex(bs) << endl;
|
||||
else if (mode == Binary)
|
||||
cout.write((char const*)bs.data(), bs.size());
|
||||
for (auto const& i: errors)
|
||||
cerr << i << endl;
|
||||
}
|
||||
else if (mode == ParseTree)
|
||||
{
|
||||
cout << parseLLL(src) << endl;
|
||||
}
|
||||
|
||||
return 0;
|
||||
}
|
Loading…
Reference in New Issue
Block a user