class MxxRu::Cpp::Toolsets::C89_nsk_family

Toolset implemetation for c89 NonStopKernel.

Constants

TANDEM_OSS

Tag name, points to target platform is Open System Services on NonStopKernel.

Public Class Methods

new( a_name ) click to toggle source
Calls superclass method MxxRu::Cpp::Toolset::new
# File lib/mxx_ru/cpp/toolsets/c89_nsk_family.rb, line 42
def initialize( a_name )
  super( a_name )
end

Public Instance Methods

c_compiler_name() click to toggle source

Returns C compiler name

# File lib/mxx_ru/cpp/toolsets/c89_nsk_family.rb, line 47
def c_compiler_name
  tag( [ C_COMPILER_NAME_TAG, COMPILER_NAME_TAG ], "c89" )
end
cpp_compiler_name() click to toggle source

Returns C++ compiler name.

# File lib/mxx_ru/cpp/toolsets/c89_nsk_family.rb, line 52
def cpp_compiler_name
  tag( [ CPP_COMPILER_NAME_TAG, COMPILER_NAME_TAG ], "c89" )
end
dll_file_name( source_name, target ) click to toggle source

See description at MxxRu::Cpp::Toolset#dll_file_name.

# File lib/mxx_ru/cpp/toolsets/c89_nsk_family.rb, line 171
def dll_file_name( source_name, target )
  return construct_target_name( source_name, 'lib', '.so', target )
end
exe_file_name( source_name, target ) click to toggle source

See description at MxxRu::Cpp::Toolset#exe_file_name.

# File lib/mxx_ru/cpp/toolsets/c89_nsk_family.rb, line 243
def exe_file_name( source_name, target )
  return construct_target_name( source_name, NO_PREFIX, NO_SUFFIX, target )
end
lib_file_name( source_name, target ) click to toggle source

See description at MxxRu::Cpp::Toolset#lib_file_name.

# File lib/mxx_ru/cpp/toolsets/c89_nsk_family.rb, line 148
def lib_file_name( source_name, target )
  return construct_target_name( source_name, "lib", ".a", target )
end
librarian_name() click to toggle source

Returns librarian name.

# File lib/mxx_ru/cpp/toolsets/c89_nsk_family.rb, line 62
def librarian_name
  tag( LIBRARIAN_NAME_TAG, "ar" )
end
linker_name() click to toggle source

Returns linker name.

# File lib/mxx_ru/cpp/toolsets/c89_nsk_family.rb, line 57
def linker_name
  tag( LINKER_NAME_TAG, "c89" )
end
make_c_obj_command_lines( obj_name, source_name, compiler_options, target ) click to toggle source

See description at MxxRu::Cpp::Toolset#make_c_obj_command_lines.

# File lib/mxx_ru/cpp/toolsets/c89_nsk_family.rb, line 122
def make_c_obj_command_lines(
  obj_name,
  source_name,
  compiler_options,
  target )

  cmd_line = "-c -o #{obj_name} " +
    "#{compiler_options.join(' ')} #{source_name}"

  return [ "#{c_compiler_name} #{cmd_line}" ]
end
make_cpp_obj_command_lines( obj_name, source_name, compiler_options, target ) click to toggle source

See description at MxxRu::Cpp::Toolset#make_c_obj_command_lines.

# File lib/mxx_ru/cpp/toolsets/c89_nsk_family.rb, line 135
def make_cpp_obj_command_lines(
  obj_name,
  source_name,
  compiler_options,
  target )

  cmd_line = "-c -o #{obj_name} " +
    "#{compiler_options.join(' ')} #{source_name}"

  return [ "#{cpp_compiler_name} #{cmd_line}" ]
end
make_dll_command_lines( a_dll_name, a_dll_info, a_linker_lists, a_target ) click to toggle source

See description at MxxRu::Cpp::Toolset#make_dll_command_lines.

# File lib/mxx_ru/cpp/toolsets/c89_nsk_family.rb, line 196
def make_dll_command_lines(
  a_dll_name,
  a_dll_info,
  a_linker_lists,
  a_target )

  result = "-Wshared " +
    "#{a_linker_lists.linker_options.join(' ')} " +
    "-Wld=-export_all " +
    "-o #{a_dll_name} "

  a_linker_lists.lib_paths.each { |p| result << "-L #{p} " }

  result << "#{a_linker_lists.objs.join(' ')} "
  a_linker_lists.libs.each { |l| result << "-l#{l} " }

  return [ "#{linker_name} #{result}" ]
end
make_dll_requirements( a_dll_name, a_dll_info, a_linker_lists, a_target ) click to toggle source

See description at MxxRu::Cpp::Toolset#make_dll_requirements.

# File lib/mxx_ru/cpp/toolsets/c89_nsk_family.rb, line 216
        def make_dll_requirements(
          a_dll_name,
          a_dll_info,
          a_linker_lists,
          a_target )

          result = DllRequirements.new

#FIX ME: This should be checked on a real translator.
          # On UNIX all requirements are dependencies.

          # This library, as a first one.
          result.add_libs( [ a_dll_info.link_name ] )
          result.add_lib_paths( [ a_dll_info.link_path ] )

          # And all required libraries.
          a_target.mxx_required_prjs.each { |d|
            if Toolset::has_linkable_dependecies?( d )
              result.add_libs( d.mxx_required_libs )
              result.add_lib_paths( d.mxx_required_lib_paths )
            end
          }

          return result
        end
make_exe_command_lines( a_exe_name, a_exe_info, a_linker_lists, a_target ) click to toggle source

See description at MxxRu::Cpp::Toolset#make_exe_command_lines.

# File lib/mxx_ru/cpp/toolsets/c89_nsk_family.rb, line 248
def make_exe_command_lines(
  a_exe_name,
  a_exe_info,
  a_linker_lists,
  a_target )

  result = "-Wcall_shared " +
    "#{a_linker_lists.linker_options.join(' ')} " +
    "-o #{a_exe_name} "

  a_linker_lists.lib_paths.each { |p| result << "-L #{p} " }

  result << "#{a_linker_lists.objs.join(' ')} "
  a_linker_lists.libs.each { |l| result << "-l#{l} " }

  return [ "#{linker_name} #{result}" ]
end
make_lib_command_lines( lib_name, obj_files, librarian_options, target ) click to toggle source

See description at MxxRu::Cpp::Toolset#make_lib_command_lines.

# File lib/mxx_ru/cpp/toolsets/c89_nsk_family.rb, line 158
def make_lib_command_lines(
  lib_name,
  obj_files,
  librarian_options,
  target )

  result = "-r #{librarian_options.join(' ')} " +
    "#{lib_name} #{obj_files.join(' ')}"

  return [ "#{librarian_name} #{result}" ]
end
obj_file_ext() click to toggle source

See description at MxxRu::Cpp::Toolset#obj_file_ext.

# File lib/mxx_ru/cpp/toolsets/c89_nsk_family.rb, line 117
def obj_file_ext
  return ".o"
end
setup_mandatory_options( target ) click to toggle source

See description at MxxRu::Cpp::Toolset#setup_mandatory_options.

# File lib/mxx_ru/cpp/toolsets/c89_nsk_family.rb, line 67
def setup_mandatory_options( target )

  if TANDEM_OSS == tag( "target_os" )
    target.compiler_option( "-Wsystype=oss" )
    target.linker_option( "-Wsystype=oss" )
  end

  target.compiler_option( "-Wcall_shared" )

  if RUNTIME_DEBUG == target.mxx_runtime_mode
    target.compiler_option( "-g" )
    target.linker_option( "-g" )
  elsif RUNTIME_RELEASE == target.mxx_runtime_mode
    target.define( "NDEBUG" )
    target.linker_option( "-s" )
    if OPTIM_SIZE == target.mxx_optimization
      target.compiler_option( "-Woptimize=1" )
    else
      target.compiler_option( "-Woptimize=2" )
    end
  end

  target.compiler_option( "-WIEEE_float" )
  target.compiler_option( "-Wnowarn=1255" )

  target.cpp_compiler_option( "-Wcplusplus" )
  target.linker_option( "-Wcplusplus" )
  target.cpp_compiler_option( "-Wversion3" )
  target.linker_option( "-Wversion3" )

  # No warnings:
  # 1506 - implicit conversion form "unsigned int" to long.
  # 770 - variable set but never used.
  # 734 - function not inlined.
  # 495 - delete of pointer to incomplete class.
  # 270 - pointless comparision of unsigned integer with zero.
  # 262 - variable declared but never referenced.
  # 101 - last line of file ends without a newline.
  target.compiler_option( "-Wnowarn=1506,770,734,495,270,262,101" )

  target.mxx_all_defines.each { |d|
    target.compiler_option( "-D " + d )
  }

  target.mxx_all_include_paths.each { |p|
    target.compiler_option( "-I " + p )
  }
end