parse 'configure' command-line options

This commit is contained in:
Josh Holtrop 2018-11-04 00:16:53 -04:00
parent 5288a47bfb
commit d196845c85
2 changed files with 80 additions and 5 deletions

View File

@ -15,23 +15,38 @@ module Rscons
# Access any variables set on the rscons command-line. # Access any variables set on the rscons command-line.
attr_reader :vars attr_reader :vars
# @return [String]
# Build directory (default "build").
attr_accessor :build_dir
# @return [String]
# Installation prefix (default "/usr/local").
attr_accessor :prefix
def initialize def initialize
@vars = VarSet.new
@n_threads = determine_n_threads @n_threads = determine_n_threads
@vars = VarSet.new
@build_dir = "build"
@prefix = "/usr/local"
@default_environment = Environment.new
end end
# Run the specified operation. # Run the specified operation.
# #
# @param operation [String] # @param operation [String]
# The operation to perform (e.g. "clean", "configure", "build", etc...) # The operation to perform (e.g. "clean", "configure", "build", etc...)
# @param script [Script]
# The script.
# #
# @return [Integer] # @return [Integer]
# Process exit code (0 on success). # Process exit code (0 on success).
def run(operation) def run(operation, script)
# TODO @script = script
case operation case operation
when "clean" when "clean"
clean clean
when "configure"
configure
end end
0 0
end end
@ -57,6 +72,41 @@ module Rscons
cache.clear cache.clear
end end
# Configure the project.
#
# @return [void]
def configure
if ccc = @script.check_c_compiler
check_c_compiler(ccc)
end
end
# Configure: check for a working C compiler.
#
# @param ccc [Array<String>]
# C compiler(s) to check for.
#
# @return [void]
def check_c_compiler(ccc)
if ccc.empty?
# Default C compiler search array.
ccc = %w[gcc clang]
end
cc = ccc.find do |cc|
test_c_compiler(cc)
end
end
# Test a C compiler.
#
# @param cc [String]
# C compiler to test.
#
# @return [Boolean]
# Whether the C compiler tested successfully.
def test_c_compiler(cc)
end
# Determine the number of threads to use by default. # Determine the number of threads to use by default.
# #
# @return [Integer] # @return [Integer]

View File

@ -108,9 +108,34 @@ module Rscons
if do_help if do_help
puts USAGE puts USAGE
exit 0 exit 0
else
exit Rscons.application.run(operation)
end end
parse_operation_args(operation, argv)
exit Rscons.application.run(operation, script)
end
private
def parse_operation_args(operation, argv)
case operation
when "configure"
parse_configure_args(argv)
end
end
def parse_configure_args(argv)
OptionParser.new do |opts|
opts.banner = "Usage: #{$0} [options]"
opts.on("-b", "--build DIR") do |build_dir|
Rscons.application.build_dir = build_dir
end
opts.on("--prefix PREFIX") do |prefix|
Rscons.application.prefix = prefix
end
end.order!(argv)
end end
end end