Added preliminary C source, Rakefile and .gitignore
[SecurityID.git] / Rakefile
blobb62bd3e96c2c1c94681c27fbb7feecda6dd9b590
1 require 'pathname'
2 require 'rake'
4 SRCDIR = "src"
5 LIBDIR = "lib"
6 OBJDIR = "obj"
7 BINDIR = "bin"
9 LIBNAME = "libSecurityID.so"
11 CSRCDIR = "#{SRCDIR}/c"
13 VALIDATIONS = ["cusip", "isin", "sedol"]
14 VAL_OBJECTS = VALIDATIONS.collect {|v| File.join(OBJDIR, "val_#{v}.o") }
15 ALL_PRODUCTS = VAL_OBJECTS + [File.join(LIBDIR, LIBNAME)]
17 def compile(output, *sources)
18   opts = sources.pop if sources.last.is_a?(Hash)
19   opts ||= {}
20   sh "cc -c -o #{File.join(opts[:output_dir] || OBJDIR, output)} #{sources.join(' ')}"
21 end
23 def link(output, *sources)
24   opts = sources.pop if sources.last.is_a?(Hash)
25   opts ||= {}
26   sh "cc -o #{File.join(opts[:output_dir] || LIBDIR, output)} #{sources.join(' ')}"
27 end
29 VALIDATIONS.each do |validation|
30   src = File.join(CSRCDIR, "val_#{validation}.c")
31   pathname = Pathname.new(src)
32   out = pathname.basename.to_s.sub(/\.c$/, '.o')
33   file "#{OBJDIR}/val_#{validation}.o" => [src] do
34     compile(out, src)
35   end
36 end
38 file "clib" => VAL_OBJECTS do
39   link(LIBNAME, *VAL_OBJECTS) 
40 end
42 file "clean" do
43   rm_rf ALL_PRODUCTS
44 end
46 task :default => "clib"