Skip to content

Commit

Permalink
Merge pull request ethereum#2353 from ethereum/license_output
Browse files Browse the repository at this point in the history
Include license and warranty statement with solc.
  • Loading branch information
axic committed Jun 13, 2017
2 parents 0c8c209 + f583008 commit 40f5690
Show file tree
Hide file tree
Showing 3 changed files with 31 additions and 3 deletions.
4 changes: 4 additions & 0 deletions CMakeLists.txt
Original file line number Diff line number Diff line change
Expand Up @@ -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)

Expand Down
3 changes: 3 additions & 0 deletions cmake/templates/license.h.in
Original file line number Diff line number Diff line change
@@ -0,0 +1,3 @@
#pragma once

static char const* licenseText = R"(@LICENSE_TEXT@)";
27 changes: 24 additions & 3 deletions solc/CommandLineInterface.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -23,6 +23,7 @@
#include "CommandLineInterface.h"

#include "solidity/BuildInfo.h"
#include "license.h"

#include <libsolidity/interface/Version.h>
#include <libsolidity/parsing/Scanner.h>
Expand Down Expand Up @@ -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";
Expand Down Expand Up @@ -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))
Expand Down Expand Up @@ -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
Expand All @@ -523,10 +536,12 @@ remap paths using the context:prefix=path syntax.
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(),
Expand Down Expand Up @@ -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;
Expand Down

0 comments on commit 40f5690

Please sign in to comment.