diff options
| author | Jérémy Zurcher <jeremy@asynk.ch> | 2012-01-24 16:34:05 +0100 | 
|---|---|---|
| committer | Jérémy Zurcher <jeremy@asynk.ch> | 2012-01-24 16:34:05 +0100 | 
| commit | dbb2c5713e11489dfaeb318a82785017f1794dde (patch) | |
| tree | 6cfc2ed4f023bf2aaa11c889b81b98ad87e4d75d | |
| parent | df490aebdfce1d52f4e5c79cd778ea088cdff71f (diff) | |
| download | ffi-efl-dbb2c5713e11489dfaeb318a82785017f1794dde.zip ffi-efl-dbb2c5713e11489dfaeb318a82785017f1794dde.tar.gz  | |
tools/genruby: handle necessary requires directives for native modules
| -rwxr-xr-x | tools/genruby.rb | 18 | 
1 files changed, 11 insertions, 7 deletions
diff --git a/tools/genruby.rb b/tools/genruby.rb index e2ee632..2eae0e7 100755 --- a/tools/genruby.rb +++ b/tools/genruby.rb @@ -6,14 +6,14 @@ lib_path = File.join path, '..', 'lib', 'efl', 'native'  #  # header, module name, fct prefix, lib  libraries = [ -    # HEADER            MODUE NAME      FCT PREFIX      LIB             OUTPUT +    # HEADER            MODUE NAME      FCT PREFIX      LIB             OUTPUT              REQUIRES      [ 'eina_types.h',   'Eina',         'eina',         'eina',         'eina_types.rb' ],      [ 'eina_main.h',    'Eina',         'eina',         'eina',         'eina.rb' ],      [ 'eina_xattr.h',   'EinaXattr',    'eina_xattr',   'eina',         'eina_xattr.rb' ],      [ 'eina_log.h',     'EinaLog',      'eina_log',     'eina',         'eina_log.rb' ],      [ 'eina_list.h',    'EinaList',     'eina_list',    'eina',         'eina_list.rb' ],      [ 'eina_hash.h',    'EinaHash',     'eina_hash',    'eina',         'eina_hash.rb' ], -    [ 'Eet.h',          'Eet',          'eet',          'eet',          'eet.rb' ], +    [ 'Eet.h',          'Eet',          'eet',          'eet',          'eet.rb',           [ 'efl/native/eina_xattr' ] ],      [ 'Evas.h',         'Evas',         'evas',         'evas',         'evas.rb' ],  #    [ 'Evas_GL.h',      'EvasGl',       'evas_gl',      'evas',         'evas/evas_gl.rb' ],      [ 'Edje.h',         'Edje',         'edje',         'edje',         'edje.rb' ], @@ -30,11 +30,13 @@ libraries = [  #  INDENT=' '*8  # +REQUIRES=['efl/ffi'] +#  HEADER =<<-EOF  #! /usr/bin/env ruby  # -*- coding: UTF-8 -*-  # -require 'efl/ffi' +REQUIRES  #  module Efl      # @@ -269,12 +271,12 @@ end  #  Dir.mkdir lib_path unless (File.exists? lib_path)  # -libraries.collect do |header,module_name,fct_prefix,lib, output| +libraries.collect do |header,module_name,fct_prefix,lib, output, requires|      base = File.join path, 'api', header      output = File.join lib_path, output      Dir.mkdir File.dirname(output) unless File.exists? File.dirname(output)      printf "%-60s", "parse #{base}-*" -    r = [lib, output, module_name, fct_prefix ] +    r = [lib, output, module_name, fct_prefix, requires ]      print "enums, "      r << gen_enums(base, INDENT)      print "typedefs, " @@ -286,10 +288,12 @@ libraries.collect do |header,module_name,fct_prefix,lib, output|      puts "functions."      r << gen_functions(base, INDENT)      r -end.each do |lib, output, module_name, fct_prefix, enums, typedefs, callbacks, variables, functions| +end.each do |lib, output, module_name, fct_prefix, requires, enums, typedefs, callbacks, variables, functions|      printf "%-60s", "generate #{output}"      open(output,'w:utf-8') do |f| -        f << HEADER.gsub(/MNAME/,module_name).sub(/MY_FCT_PREFIX/,fct_prefix) +        requires||=[] +        reqs =  REQUIRES.concat(requires).collect{|r| "require '#{r}'" }.join ("\n") +        f << HEADER.gsub(/MNAME/,module_name).sub(/MY_FCT_PREFIX/,fct_prefix).sub(/REQUIRES/,reqs)          f << "#{INDENT}#\n#{INDENT}ffi_lib '#{lib}'"          f << "\n#{INDENT}#\n#{INDENT}# ENUMS"          print "enums, "  | 
