class PaperHouse::SharedLibraryTask

Compiles *.c files into a shared library.

Attributes

version[RW]

Library version string.

Public Class Methods

new(name, version = nil, &block) click to toggle source

Defines a rake task called name that builds a shared library. Note that version number must be set as the version argument or in the block to build the library.

@yield [task] @example

PaperHouse::SharedLibraryTask.new :libhello do |task|
  task.version = '0.1.0'
  task.sources = 'hello.c'
  task.library_dependencies = 'm'
end
Calls superclass method PaperHouse::LibraryTask::new
# File lib/paper_house/shared_library_task.rb, line 27
def initialize(name, version = nil, &block)
  @version = version
  super name, &block
end

Public Instance Methods

linker_name() click to toggle source

Name of library used by linkers.

# File lib/paper_house/shared_library_task.rb, line 40
def linker_name
  library_name + '.so'
end
real_name()
Alias for: target_file_name
soname() click to toggle source

Soname of target library.

# File lib/paper_house/shared_library_task.rb, line 45
def soname
  File.basename(target_file_name).sub(/\.\d+\.\d+\Z/, '')
end
target_file_name() click to toggle source

Real name of target library.

# File lib/paper_house/shared_library_task.rb, line 33
def target_file_name
  fail 'version option is a mandatory.' unless @version
  [linker_name, @version].join '.'
end
Also aliased as: real_name

Private Instance Methods

cc_options() click to toggle source
# File lib/paper_house/shared_library_task.rb, line 51
def cc_options
  ['-shared', wl_option, o_option, objects, ldflags, l_options].flatten
end
o_option() click to toggle source
# File lib/paper_house/shared_library_task.rb, line 59
def o_option
  "-o #{target_path}"
end
wl_option() click to toggle source
# File lib/paper_house/shared_library_task.rb, line 55
def wl_option
  "-Wl,#{SONAME_OPTION},#{soname}"
end