Module: Rscons

Defined in:
lib/rscons.rb,
lib/rscons/cli.rb,
lib/rscons/ansi.rb,
lib/rscons/task.rb,
lib/rscons/util.rb,
lib/rscons/cache.rb,
lib/rscons/script.rb,
lib/rscons/varset.rb,
lib/rscons/builder.rb,
lib/rscons/command.rb,
lib/rscons/version.rb,
lib/rscons/application.rb,
lib/rscons/builder_set.rb,
lib/rscons/environment.rb,
lib/rscons/configure_op.rb,
lib/rscons/builders/copy.rb,
lib/rscons/builders/size.rb,
lib/rscons/builders/cfile.rb,
lib/rscons/builder_builder.rb,
lib/rscons/builders/object.rb,
lib/rscons/builders/command.rb,
lib/rscons/builders/library.rb,
lib/rscons/builders/program.rb,
lib/rscons/basic_environment.rb,
lib/rscons/builders/directory.rb,
lib/rscons/builders/preprocess.rb,
lib/rscons/builders/disassemble.rb,
lib/rscons/builders/mixins/object.rb,
lib/rscons/builders/shared_object.rb,
lib/rscons/builders/mixins/depfile.rb,
lib/rscons/builders/mixins/program.rb,
lib/rscons/builders/shared_library.rb,
lib/rscons/builders/simple_builder.rb,
lib/rscons/builders/mixins/object_deps.rb,
lib/rscons/default_construction_variables.rb

Overview

Namespace module for rscons classes

Defined Under Namespace

Modules: Ansi, Builders, Util Classes: Application, BasicEnvironment, Builder, BuilderBuilder, BuilderSet, Cache, Cli, Command, ConfigureOp, Environment, RsconsError, Script, Task, VarSet

Constant Summary collapse

DEFAULT_BUILDERS =

Names of the default builders which will be added to all newly created Environment objects.

[
  :CFile,
  :Command,
  :Copy,
  :Directory,
  :Disassemble,
  :Install,
  :InstallDirectory,
  :Library,
  :Object,
  :Preprocess,
  :Program,
  :SharedLibrary,
  :SharedObject,
  :Size,
]
VERSION =

Project version.

"3.1.0"
DEFAULT_CONSTRUCTION_VARIABLES =

Default Rscons construction variables.

{
  "AR" => "ar",
  "ARCMD" => %w[${AR} ${ARFLAGS} ${_TARGET} ${_SOURCES}],
  "ARFLAGS" => %w[rcs],
  "AS" => "${CC}",
  "ASCMD" => %w[${AS} -c -o ${_TARGET} ${ASDEPGEN} ${INCPREFIX}${ASPPPATH} ${ASPPFLAGS} ${ASFLAGS} ${_SOURCES}],
  "ASCMD:direct" => %w[${AS} -o ${_TARGET} ${ASDEPGEN} ${INCPREFIX}${ASPPPATH} ${ASPPFLAGS} ${ASFLAGS} ${LDFLAGS} ${_SOURCES} ${LIBDIRPREFIX}${LIBPATH} ${LIBLINKPREFIX}${LIBS}],
  "ASDEPGEN" => %w[-MMD -MF ${_DEPFILE}],
  "ASFLAGS" => [],
  "ASPPFLAGS" => "${CPPFLAGS}",
  "ASPPPATH" => "${CPPPATH}",
  "ASSUFFIX" => %w[.S],
  "CC" => "gcc",
  "CCCMD" => %w[${CC} -c -o ${_TARGET} ${CCDEPGEN} ${INCPREFIX}${CPPPATH} ${CPPFLAGS} ${CFLAGS} ${CCFLAGS} ${_SOURCES}],
  "CCCMD:direct" => %w[${CC} -o ${_TARGET} ${CCDEPGEN} ${INCPREFIX}${CPPPATH} ${CPPFLAGS} ${CFLAGS} ${CCFLAGS} ${LDFLAGS} ${_SOURCES} ${LIBDIRPREFIX}${LIBPATH} ${LIBLINKPREFIX}${LIBS}],
  "CCDEPGEN" => %w[-MMD -MF ${_DEPFILE}],
  "CCFLAGS" => [],
  "CFLAGS" => [],
  "CPPDEFINES" => [],
  "CPPDEFPREFIX" => "-D",
  "CPPFLAGS" => %w[${CPPDEFPREFIX}${CPPDEFINES}],
  "CPPPATH" => [],
  "CPP_CMD" => %w[${_PREPROCESS_CC} -E ${_PREPROCESS_DEPGEN} -o ${_TARGET} ${INCPREFIX}${CPPPATH} ${CPPFLAGS} ${_SOURCES}],
  "CSUFFIX" => %w[.c],
  "CXX" => "g++",
  "CXXCMD" => %w[${CXX} -c -o ${_TARGET} ${CXXDEPGEN} ${INCPREFIX}${CPPPATH} ${CPPFLAGS} ${CXXFLAGS} ${CCFLAGS} ${_SOURCES}],
  "CXXCMD:direct" => %w[${CXX} -o ${_TARGET} ${CXXDEPGEN} ${INCPREFIX}${CPPPATH} ${CPPFLAGS} ${CXXFLAGS} ${CCFLAGS} ${LDFLAGS} ${_SOURCES} ${LIBDIRPREFIX}${LIBPATH} ${LIBLINKPREFIX}${LIBS}],
  "CXXDEPGEN" => %w[-MMD -MF ${_DEPFILE}],
  "CXXFLAGS" => [],
  "CXXSUFFIX" => %w[.cc .cpp .cxx .C],
  "DC" => "gdc",
  "DCCMD" => %w[${DC} -c -o ${_TARGET} ${DDEPGEN} ${INCPREFIX}${D_IMPORT_PATH} ${DFLAGS} ${_SOURCES}],
  "DCCMD:direct" => %w[${DC} -o ${_TARGET} ${DDEPGEN} ${INCPREFIX}${D_IMPORT_PATH} ${DFLAGS} ${LDFLAGS} ${_SOURCES} ${LIBDIRPREFIX}${LIBPATH} ${LIBLINKPREFIX}${LIBS}],
  "DDEPGEN" => %w[-MMD -MF ${_DEPFILE}],
  "DEPFILESUFFIX" => ".mf",
  "DFLAGS" => [],
  "DISASM_CMD" => %w[${OBJDUMP} ${DISASM_FLAGS} ${_SOURCES}],
  "DISASM_FLAGS" => %w[--disassemble --source],
  "DSUFFIX" => %w[.d],
  "D_IMPORT_PATH" => [],
  "INCPREFIX" => "-I",
  "LD" => nil,
  "LDCMD" => %w[${LD} -o ${_TARGET} ${LDFLAGS} ${_SOURCES} ${LIBDIRPREFIX}${LIBPATH} ${LIBLINKPREFIX}${LIBS}],
  "LDFLAGS" => [],
  "LEX" => "flex",
  "LEXSUFFIX" => %w[.l .ll],
  "LEX_CMD" => %w[${LEX} ${LEX_FLAGS} -o ${_TARGET} ${_SOURCES}],
  "LEX_FLAGS" => [],
  "LIBDIRPREFIX" => "-L",
  "LIBLINKPREFIX" => "-l",
  "LIBPATH" => [],
  "LIBS" => [],
  "LIBSUFFIX" => ".a",
  "OBJDUMP" => "objdump",
  "OBJSUFFIX" => %w[.o],
  "PROGSUFFIX" => on_windows ? ".exe" : "",
  "SHCC" => "${CC}",
  "SHCCCMD" => %w[${SHCC} -c -o ${_TARGET} ${CCDEPGEN} ${INCPREFIX}${CPPPATH} ${CPPFLAGS} ${SHCFLAGS} ${SHCCFLAGS} ${_SOURCES}],
  "SHCCCMD:direct" => %w[${SHCC} -o ${_TARGET} ${CCDEPGEN} ${INCPREFIX}${CPPPATH} ${CPPFLAGS} ${SHCFLAGS} ${SHCCFLAGS} ${SHLDFLAGS} ${_SOURCES} ${LIBDIRPREFIX}${LIBPATH} ${LIBLINKPREFIX}${LIBS}],
  "SHCCFLAGS" => %w[${CCFLAGS}] + pic_flags,
  "SHCFLAGS" => %w[${CFLAGS}],
  "SHCXX" => "${CXX}",
  "SHCXXCMD" => %w[${SHCXX} -c -o ${_TARGET} ${CXXDEPGEN} ${INCPREFIX}${CPPPATH} ${CPPFLAGS} ${SHCXXFLAGS} ${SHCCFLAGS} ${_SOURCES}],
  "SHCXXCMD:direct" => %w[${SHCXX} -o ${_TARGET} ${CXXDEPGEN} ${INCPREFIX}${CPPPATH} ${CPPFLAGS} ${SHCXXFLAGS} ${SHCCFLAGS} ${SHLDFLAGS} ${_SOURCES} ${LIBDIRPREFIX}${LIBPATH} ${LIBLINKPREFIX}${LIBS}],
  "SHCXXFLAGS" => %w[${CXXFLAGS}],
  "SHDC" => "gdc",
  "SHDCCMD" => %w[${SHDC} -c -o ${_TARGET} ${INCPREFIX}${D_IMPORT_PATH} ${SHDFLAGS} ${_SOURCES}],
  "SHDCCMD:direct" => %w[${SHDC} -o ${_TARGET} ${INCPREFIX}${D_IMPORT_PATH} ${SHDFLAGS} ${SHLDFLAGS} ${_SOURCES} ${LIBDIRPREFIX}${LIBPATH} ${LIBLINKPREFIX}${LIBS}],
  "SHDFLAGS" => %w[${DFLAGS}] + pic_flags,
  "SHLD" => nil,
  "SHLDCMD" => %w[${SHLD} -o ${_TARGET} ${SHLDFLAGS} ${_SOURCES} ${SHLIBDIRPREFIX}${LIBPATH} ${SHLIBLINKPREFIX}${LIBS}],
  "SHLDFLAGS" => %w[${LDFLAGS} -shared],
  "SHLIBDIRPREFIX" => "-L",
  "SHLIBLINKPREFIX" => "-l",
  "SHLIBPREFIX" => on_windows ? "" : "lib",
  "SHLIBSUFFIX" => on_windows ? ".dll" : ".so",
  "SIZE" => "size",
  "SIZECMD" => %w[${SIZE} ${SIZEFLAGS} ${_SOURCES}],
  "SIZEFLAGS" => [],
  "YACC" => "bison",
  "YACCSUFFIX" => %w[.y .yy],
  "YACC_CMD" => %w[${YACC} ${YACC_FLAGS} -o ${_TARGET} ${_SOURCES}],
  "YACC_FLAGS" => %w[-d],
}

Class Method Summary collapse

Class Method Details

.applicationApplication

Access the Application singleton.

Returns:



51
52
53
54
55
56
57
# File 'lib/rscons.rb', line 51

def application
  unless @application
    @application = Application.new
    @application._initialize
  end
  @application
end

.command_executerArray<String>

Return an Array containing a command used to execute commands.

This will normally be an empty Array, but on Windows if Rscons detects that it is running in MSYS then [“env”] will be returned.

Returns:

  • (Array<String>)

    Command used to execute commands.



104
105
106
107
108
109
110
111
112
113
114
115
116
# File 'lib/rscons.rb', line 104

def command_executer
  @command_executer ||=
    if Object.const_get("RUBY_PLATFORM") =~ /mingw|msys/
      if ENV.keys.find {|key| key =~ /MSYS/}
        begin
          if IO.popen(["env", "echo", "success"]) {|io| io.read.strip} == "success"
            ["env"]
          end
        rescue
        end
      end
    end || []
end

.command_executer=(val) ⇒ Array<String>

Set the command executer array.

Parameters:

  • val (Array<String>)

    Command used to execute commands.

Returns:

  • (Array<String>)

    Command used to execute commands.



123
124
125
# File 'lib/rscons.rb', line 123

def command_executer=(val)
  @command_executer = val
end

.get_system_shellArray<String>

Return the system shell and arguments for executing a shell command.

Returns:

  • (Array<String>)

    The shell and flag.



71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
# File 'lib/rscons.rb', line 71

def get_system_shell
  @shell ||=
    begin
      test_shell = lambda do |*args|
        begin
          "success" == IO.popen([*args, "echo success"]) do |io|
            io.read.strip
          end
        rescue
          false
        end
      end
      if ENV["SHELL"] and ENV["SHELL"] != "" and test_shell[ENV["SHELL"], "-c"]
        [ENV["SHELL"], "-c"]
      elsif Object.const_get("RUBY_PLATFORM") =~ /mingw|msys/
        if test_shell["sh", "-c"]
          # Using Rscons from MSYS should use MSYS's shell.
          ["sh", "-c"]
        else
          ["cmd", "/c"]
        end
      else
        ["sh", "-c"]
      end
    end
end

.phony_target?(target) ⇒ Boolean

Return whether the given target is a phony target.

Parameters:

  • target (Symbol, String)

    Target name.

Returns:

  • (Boolean)

    Whether the given target is a phony target.



64
65
66
# File 'lib/rscons.rb', line 64

def phony_target?(target)
  target.is_a?(Symbol)
end