diff options
author | Alex Beregszaszi <alex@rtfs.hu> | 2017-06-13 23:03:24 +0800 |
---|---|---|
committer | GitHub <noreply@github.com> | 2017-06-13 23:03:24 +0800 |
commit | 40f5690f68961130073028526f8b923ed0793c8a (patch) | |
tree | ebc2b4fff8cfe23745810e80f3875f15703d2fb4 | |
parent | 0c8c2091947e23297655bd6a65587a7580d7dae8 (diff) | |
parent | f583008c7376bc7c9323331fe6a9c580752c08dd (diff) | |
download | dexon-solidity-40f5690f68961130073028526f8b923ed0793c8a.tar.gz dexon-solidity-40f5690f68961130073028526f8b923ed0793c8a.tar.zst dexon-solidity-40f5690f68961130073028526f8b923ed0793c8a.zip |
Merge pull request #2353 from ethereum/license_output
Include license and warranty statement with solc.
-rw-r--r-- | CMakeLists.txt | 4 | ||||
-rw-r--r-- | cmake/templates/license.h.in | 3 | ||||
-rw-r--r-- | solc/CommandLineInterface.cpp | 27 |
3 files changed, 31 insertions, 3 deletions
diff --git a/CMakeLists.txt b/CMakeLists.txt index e53917cb..2dbc521d 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -24,6 +24,10 @@ include(EthExecutableHelper) # Include utils include(EthUtils) +# Create license.h from LICENSE.txt and template +file(READ ${CMAKE_SOURCE_DIR}/LICENSE.txt LICENSE_TEXT) +configure_file("${CMAKE_SOURCE_DIR}/cmake/templates/license.h.in" "license.h") + include(EthOptions) configure_project(TESTS) diff --git a/cmake/templates/license.h.in b/cmake/templates/license.h.in new file mode 100644 index 00000000..48801347 --- /dev/null +++ b/cmake/templates/license.h.in @@ -0,0 +1,3 @@ +#pragma once + +static char const* licenseText = R"(@LICENSE_TEXT@)"; diff --git a/solc/CommandLineInterface.cpp b/solc/CommandLineInterface.cpp index b2e257ee..cae05b18 100644 --- a/solc/CommandLineInterface.cpp +++ b/solc/CommandLineInterface.cpp @@ -23,6 +23,7 @@ #include "CommandLineInterface.h" #include "solidity/BuildInfo.h" +#include "license.h" #include <libsolidity/interface/Version.h> #include <libsolidity/parsing/Scanner.h> @@ -94,6 +95,7 @@ static string const g_strHelp = "help"; static string const g_strInputFile = "input-file"; static string const g_strInterface = "interface"; static string const g_strJulia = "julia"; +static string const g_strLicense = "license"; static string const g_strLibraries = "libraries"; static string const g_strLink = "link"; static string const g_strMetadata = "metadata"; @@ -186,6 +188,13 @@ static void version() exit(0); } +static void license() +{ + // This is a static variable generated by cmake from LICENSE.txt + cout << licenseText << endl; + exit(0); +} + static bool needsHumanTargetedStdout(po::variables_map const& _args) { if (_args.count(g_argGas)) @@ -510,8 +519,12 @@ void CommandLineInterface::createFile(string const& _fileName, string const& _da bool CommandLineInterface::parseArguments(int _argc, char** _argv) { // Declare the supported options. - po::options_description desc( - R"(solc, the Solidity commandline compiler. + po::options_description desc(R"(solc, the Solidity commandline compiler. + +This program comes with ABSOLUTELY NO WARRANTY. This is free software, and you +are welcome to redistribute it under certain conditions. See 'solc --license' +for details. + Usage: solc [options] [input_file...] Compiles the given Solidity input files (or the standard input if none given or "-" is used as a file name) and outputs the components specified in the options @@ -523,10 +536,12 @@ Example: Allowed options)", po::options_description::m_default_line_length, - po::options_description::m_default_line_length - 23); + po::options_description::m_default_line_length - 23 + ); desc.add_options() (g_argHelp.c_str(), "Show help message and exit.") (g_argVersion.c_str(), "Show version and exit.") + (g_strLicense.c_str(), "Show licensing information and exit.") (g_argOptimize.c_str(), "Enable bytecode optimizer.") ( g_argOptimizeRuns.c_str(), @@ -633,6 +648,12 @@ Allowed options)", return false; } + if (m_args.count(g_strLicense)) + { + license(); + return false; + } + if (m_args.count(g_argCombinedJson)) { vector<string> requests; |