aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorAlex Beregszaszi <alex@rtfs.hu>2017-06-13 23:03:24 +0800
committerGitHub <noreply@github.com>2017-06-13 23:03:24 +0800
commit40f5690f68961130073028526f8b923ed0793c8a (patch)
treeebc2b4fff8cfe23745810e80f3875f15703d2fb4
parent0c8c2091947e23297655bd6a65587a7580d7dae8 (diff)
parentf583008c7376bc7c9323331fe6a9c580752c08dd (diff)
downloaddexon-solidity-40f5690f68961130073028526f8b923ed0793c8a.tar
dexon-solidity-40f5690f68961130073028526f8b923ed0793c8a.tar.gz
dexon-solidity-40f5690f68961130073028526f8b923ed0793c8a.tar.bz2
dexon-solidity-40f5690f68961130073028526f8b923ed0793c8a.tar.lz
dexon-solidity-40f5690f68961130073028526f8b923ed0793c8a.tar.xz
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.txt4
-rw-r--r--cmake/templates/license.h.in3
-rw-r--r--solc/CommandLineInterface.cpp27
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;