Class: Cxxproject::UnixSharedLibs

Inherits:
SharedLibsHelper show all
Defined in:
lib/cxxproject/buildingblocks/shared_libs_helper.rb

Instance Method Summary collapse

Methods inherited from SharedLibsHelper

#symlink_lib_to

Constructor Details

#initializeUnixSharedLibs

Returns a new instance of UnixSharedLibs.



50
51
# File 'lib/cxxproject/buildingblocks/shared_libs_helper.rb', line 50

def initialize()
end

Instance Method Details

#calc(linker, bb) ⇒ Object



73
74
75
# File 'lib/cxxproject/buildingblocks/shared_libs_helper.rb', line 73

def calc(linker, bb)
  return ["-Wl,-soname,#{get_soname(linker, bb)}"]
end

#get_basic_name(linker, bb) ⇒ Object

For :major=>1, minor=>2 fullname is 'libfoo.so'



78
79
80
81
# File 'lib/cxxproject/buildingblocks/shared_libs_helper.rb', line 78

def get_basic_name(linker, bb)
  prefix = bb.get_output_prefix(linker)
  return "#{prefix}#{bb.name}#{bb.shared_suffix(linker)}"
end

#get_soname(linker, bb) ⇒ Object

For :major=>1, minor=>2 soname is 'libfoo.1.so' def get_major(linker) prefix = get_output_prefix(linker) return "#prefix#name##major_suffix#linker" end



68
69
70
71
# File 'lib/cxxproject/buildingblocks/shared_libs_helper.rb', line 68

def get_soname(linker, bb)
  prefix = bb.get_output_prefix(linker)
  "#{prefix}#{bb.name}#{major_suffix bb}#{bb.shared_suffix linker}"
end

#get_version_suffix(linker, bb) ⇒ Object

For :major=>1, minor=>2 fullname is '1.2.so'



54
55
56
# File 'lib/cxxproject/buildingblocks/shared_libs_helper.rb', line 54

def get_version_suffix(linker, bb)
  "#{major_suffix bb}#{[bb.major, bb.minor].compact.join('.')}"
end

#major_suffix(bb) ⇒ Object



58
59
60
# File 'lib/cxxproject/buildingblocks/shared_libs_helper.rb', line 58

def major_suffix(bb)
  bb.major ? ".#{bb.major}" : ''
end

#post_link_hook(linker, bb) ⇒ Object

Some symbolic links ln -s libfoo.so libfoo.1.2.so ln -s libfoo.1.so libfoo.1.2.so



86
87
88
89
90
91
# File 'lib/cxxproject/buildingblocks/shared_libs_helper.rb', line 86

def post_link_hook(linker, bb)
  basic_name = get_basic_name(linker, bb)
  soname = get_soname(linker, bb)
  symlink_lib_to(basic_name, bb)
  symlink_lib_to(soname, bb)
end