class MxxRu::Cpp::Toolsets::C89NskFamily
Toolset
implemetation for c89 NonStopKernel.
Constants
- TANDEM_OSS
Tag name, points to target platform is Open System Services on NonStopKernel.
Public Class Methods
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
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
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
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
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
See description at MxxRu::Cpp::Toolset#implib_link_name
.
# File lib/mxx_ru/cpp/toolsets/c89_nsk_family.rb, line 176 def implib_link_name( dll_real_name, target ) # Target name should be passed to linker on UNIX platform return lib_link_name( File.basename( target.mxx_target_name ), target ) end
See description at MxxRu::Cpp::Toolset#implib_link_path
.
# File lib/mxx_ru/cpp/toolsets/c89_nsk_family.rb, line 186 def implib_link_path( dll_real_name, dll_real_path, target ) # DLL name is the import library name on UNIX platform. return dll_real_path end
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
See description at MxxRu::Cpp::Toolset#lib_link_name
.
# File lib/mxx_ru/cpp/toolsets/c89_nsk_family.rb, line 153 def lib_link_name( source_name, target ) return source_name end
Returns librarian name.
# File lib/mxx_ru/cpp/toolsets/c89_nsk_family.rb, line 62 def librarian_name tag( LIBRARIAN_NAME_TAG, "ar" ) end
Returns linker name.
# File lib/mxx_ru/cpp/toolsets/c89_nsk_family.rb, line 57 def linker_name tag( LINKER_NAME_TAG, "c89" ) end
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
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
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
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
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
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
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
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