diff --git a/Rakefile b/Rakefile index 515599247fcd5ed57a0bd4d8aa547d7d64ed6421..34fca0bf4732809cb819ba09dddde8c0fd3a7937 100755 --- a/Rakefile +++ b/Rakefile @@ -82,18 +82,6 @@ task :setversions => [ :create_installer_scripts ] do setversions("scripts/make-installers.rb") end -# Set environment variable SWIG_LIB to -# c:/ruby-1.8.6-p383-preview2/devkit/msys/1.0.11/usr/local/share/swig/1.3.22 -# before running swig on MinGW. -desc "Run SWIG to generate the wrapper files." -task :swig do - Dir.chdir "swig-interfaces" do - system %{touch dependencies} - system %{make depend} - system %{make} - end -end - DISTFILES = [ "ANNOUNCE", "LICENSE", @@ -229,4 +217,94 @@ Rake::ExtensionTask.new("fox16") do |ext| ext.config_options << "--with-fox-lib=c:/ruby-1.8.6-p383-preview2/devkit/msys/1.0.11/usr/local/lib" end +# Set environment variable SWIG_LIB to +# c:/ruby-1.8.6-p383-preview2/devkit/msys/1.0.11/usr/local/share/swig/1.3.22 +# before running swig on MinGW. +namespace :swig do + SWIG = "/usr/local/bin/swig" + SWIGFLAGS = "-fcompact -noruntime -c++ -ruby -no_default -I../fox-includes" + SWIG_LIB = `#{SWIG} -swiglib`.chomp + SWIG_MODULES = { + "core.i" => "core_wrap.cpp", + "dcmodule.i" => "dc_wrap.cpp", + "dialogs.i" => "dialogs_wrap.cpp", + "framesmodule.i" => "frames_wrap.cpp", + "iconlistmodule.i" => "iconlist_wrap.cpp", + "icons.i" => "icons_wrap.cpp", + "image.i" => "image_wrap.cpp", + "labelmodule.i" => "label_wrap.cpp", + "layout.i" => "layout_wrap.cpp", + "listmodule.i" => "list_wrap.cpp", + "mdi.i" => "mdi_wrap.cpp", + "menumodule.i" => "menu_wrap.cpp", + "fx3d.i" => "fx3d_wrap.cpp", + "scintilla.i" => "scintilla_wrap.cpp", + "table-module.i" => "table_wrap.cpp", + "text-module.i" => "text_wrap.cpp", + "treelist-module.i" => "treelist_wrap.cpp", + "ui.i" => "ui_wrap.cpp" + } + + def wrapper_src_file_path(wrapper_src_file_name) + File.join("..", "ext", "fox16", wrapper_src_file_name) + end + + def swig_generate_dependencies(swig_interface_file_name, wrapper_src_file_name) + system "#{SWIG} #{SWIGFLAGS} -MM -o #{wrapper_src_file_path(wrapper_src_file_name)} #{swig_interface_file_name} >> dependencies" + end + + def sed(wrapper_src_file_name) + results = [] + IO.readlines(wrapper_src_file_name).each do |line| + line.gsub!(/static VALUE mCore;/, "VALUE mCore;") + line.gsub!(/mCore = rb_define_module\("Core"\)/, "mFox = rb_define_module(\"Fox\")") + line.gsub!(/mCore/, "mFox") + next if line =~ /static VALUE m(Dc|Dialogs|Frames|Iconlist|Icons|Image|Label|Layout|List|Mdi|Menu|Fx3d|Scintilla|Table|Text|Treelist|Ui);/ + next if line =~ /m(Dc|Dialogs|Frames|Iconlist|Icons|Image|Label|Layout|List|Mdi|Menu|Fx3d|Scintilla|Table|Text|Treelist|Ui) = rb_define_module/ + next if line =~ /rb_require/ + line.gsub!(/m(Dc|Dialogs|Frames|Iconlist|Icons|Image|Label|Layout|List|Mdi|Menu|Fx3d|Scintilla|Table|Text|Treelist|Ui),/, "mFox,") + results << line + end + File.open(wrapper_src_file_name, "w") do |io| + io.write(results.join) + end + end + + def swig(swig_interface_file_name, wrapper_src_file_name) + system "#{SWIG} #{SWIGFLAGS} -o #{wrapper_src_file_path(wrapper_src_file_name)} #{swig_interface_file_name}" + sed wrapper_src_file_path(wrapper_src_file_name) + end + + task :swig_dependencies do + Dir.chdir "swig-interfaces" do + FileUtils.rm_f "dependencies" + FileUtils.touch "dependencies" + SWIG_MODULES.each do |key, value| + swig_generate_dependencies(key, value) + end + end + end + + task :swig_librb do + Dir.chdir "swig-interfaces" do + File.open(wrapper_src_file_path("librb.c"), "w") do |io| + io.puts "#define SWIG_GLOBAL 1" + io.write(IO.read(File.join(SWIG_LIB, "ruby", "precommon.swg"))) + io.write(IO.read(File.join(SWIG_LIB, "common.swg"))) + io.write(IO.read(File.join(SWIG_LIB, "ruby", "rubyhead.swg"))) + io.write(IO.read(File.join(SWIG_LIB, "ruby", "rubydef.swg"))) + end + end + end + + desc "Run SWIG to generate the wrapper files." + task :swig => [:swig_dependencies, :swig_librb] do + Dir.chdir "swig-interfaces" do + SWIG_MODULES.each do |key, value| + swig(key, value) + end + end + end +end + task :build => [:configure, :compile] diff --git a/swig-interfaces/Makefile b/swig-interfaces/Makefile deleted file mode 100755 index a989672c619b91b05bfe437436af2a63bf5937a9..0000000000000000000000000000000000000000 --- a/swig-interfaces/Makefile +++ /dev/null @@ -1,138 +0,0 @@ -# -# This makefile is used to generate the wrapper code from the -# SWIG interface files. -# -# $Id: Makefile 2827 2008-03-28 16:04:44Z lyle $ -# - -.PHONY: clean - -SWIG = /usr/local/bin/swig -SWIGFLAGS = -fcompact -noruntime -c++ -ruby -no_default -I../fox-includes -SRCDIR = ../ext/fox16 -SED = sed -f swig.sed -RUBY = ruby -SWIGLIB := $(shell /usr/local/bin/swig -swiglib) - -MODULES = \ - $(SRCDIR)/core_wrap.cpp \ - $(SRCDIR)/dc_wrap.cpp \ - $(SRCDIR)/dialogs_wrap.cpp \ - $(SRCDIR)/frames_wrap.cpp \ - $(SRCDIR)/iconlist_wrap.cpp \ - $(SRCDIR)/icons_wrap.cpp \ - $(SRCDIR)/image_wrap.cpp \ - $(SRCDIR)/label_wrap.cpp \ - $(SRCDIR)/layout_wrap.cpp \ - $(SRCDIR)/list_wrap.cpp \ - $(SRCDIR)/mdi_wrap.cpp \ - $(SRCDIR)/menu_wrap.cpp \ - $(SRCDIR)/fx3d_wrap.cpp \ - $(SRCDIR)/scintilla_wrap.cpp \ - $(SRCDIR)/table_wrap.cpp \ - $(SRCDIR)/text_wrap.cpp \ - $(SRCDIR)/treelist_wrap.cpp \ - $(SRCDIR)/ui_wrap.cpp - -all: $(SRCDIR)/librb.c $(MODULES) - -$(SRCDIR)/core_wrap.cpp: core.i - $(SWIG) $(SWIGFLAGS) -o $(SRCDIR)/core_wrap.cpp core.i - $(SED) $(SRCDIR)/core_wrap.cpp > junk; mv junk $(SRCDIR)/core_wrap.cpp - -$(SRCDIR)/dc_wrap.cpp: dcmodule.i - $(SWIG) $(SWIGFLAGS) -o $(SRCDIR)/dc_wrap.cpp dcmodule.i - $(SED) $(SRCDIR)/dc_wrap.cpp > junk; mv junk $(SRCDIR)/dc_wrap.cpp - -$(SRCDIR)/dialogs_wrap.cpp: dialogs.i - $(SWIG) $(SWIGFLAGS) -o $(SRCDIR)/dialogs_wrap.cpp dialogs.i - $(SED) $(SRCDIR)/dialogs_wrap.cpp > junk; mv junk $(SRCDIR)/dialogs_wrap.cpp - -$(SRCDIR)/frames_wrap.cpp: framesmodule.i - $(SWIG) $(SWIGFLAGS) -o $(SRCDIR)/frames_wrap.cpp framesmodule.i - $(SED) $(SRCDIR)/frames_wrap.cpp > junk; mv junk $(SRCDIR)/frames_wrap.cpp - -$(SRCDIR)/iconlist_wrap.cpp: iconlistmodule.i - $(SWIG) $(SWIGFLAGS) -o $(SRCDIR)/iconlist_wrap.cpp iconlistmodule.i - $(SED) $(SRCDIR)/iconlist_wrap.cpp > junk; mv junk $(SRCDIR)/iconlist_wrap.cpp - -$(SRCDIR)/icons_wrap.cpp: icons.i - $(SWIG) $(SWIGFLAGS) -o $(SRCDIR)/icons_wrap.cpp icons.i - $(SED) $(SRCDIR)/icons_wrap.cpp > junk; mv junk $(SRCDIR)/icons_wrap.cpp - -$(SRCDIR)/image_wrap.cpp: image.i - $(SWIG) $(SWIGFLAGS) -o $(SRCDIR)/image_wrap.cpp image.i - $(SED) $(SRCDIR)/image_wrap.cpp > junk; mv junk $(SRCDIR)/image_wrap.cpp - -$(SRCDIR)/label_wrap.cpp: labelmodule.i - $(SWIG) $(SWIGFLAGS) -o $(SRCDIR)/label_wrap.cpp labelmodule.i - $(SED) $(SRCDIR)/label_wrap.cpp > junk; mv junk $(SRCDIR)/label_wrap.cpp - -$(SRCDIR)/layout_wrap.cpp: layout.i - $(SWIG) $(SWIGFLAGS) -o $(SRCDIR)/layout_wrap.cpp layout.i - $(SED) $(SRCDIR)/layout_wrap.cpp > junk; mv junk $(SRCDIR)/layout_wrap.cpp - -$(SRCDIR)/list_wrap.cpp: listmodule.i - $(SWIG) $(SWIGFLAGS) -o $(SRCDIR)/list_wrap.cpp listmodule.i - $(SED) $(SRCDIR)/list_wrap.cpp > junk; mv junk $(SRCDIR)/list_wrap.cpp - -$(SRCDIR)/mdi_wrap.cpp: mdi.i - $(SWIG) $(SWIGFLAGS) -o $(SRCDIR)/mdi_wrap.cpp mdi.i - $(SED) $(SRCDIR)/mdi_wrap.cpp > junk; mv junk $(SRCDIR)/mdi_wrap.cpp - -$(SRCDIR)/menu_wrap.cpp: menumodule.i - $(SWIG) $(SWIGFLAGS) -o $(SRCDIR)/menu_wrap.cpp menumodule.i - $(SED) $(SRCDIR)/menu_wrap.cpp > junk; mv junk $(SRCDIR)/menu_wrap.cpp - -$(SRCDIR)/fx3d_wrap.cpp: fx3d.i - $(SWIG) $(SWIGFLAGS) -o $(SRCDIR)/fx3d_wrap.cpp fx3d.i - $(SED) $(SRCDIR)/fx3d_wrap.cpp > junk; mv junk $(SRCDIR)/fx3d_wrap.cpp - -$(SRCDIR)/scintilla_wrap.cpp: scintilla.i - $(SWIG) $(SWIGFLAGS) -o $(SRCDIR)/scintilla_wrap.cpp scintilla.i - $(SED) $(SRCDIR)/scintilla_wrap.cpp > junk; mv junk $(SRCDIR)/scintilla_wrap.cpp - -$(SRCDIR)/table_wrap.cpp: table-module.i - $(SWIG) $(SWIGFLAGS) -o $(SRCDIR)/table_wrap.cpp table-module.i - $(SED) $(SRCDIR)/table_wrap.cpp > junk; mv junk $(SRCDIR)/table_wrap.cpp - -$(SRCDIR)/text_wrap.cpp: text-module.i - $(SWIG) $(SWIGFLAGS) -o $(SRCDIR)/text_wrap.cpp text-module.i - $(SED) $(SRCDIR)/text_wrap.cpp > junk; mv junk $(SRCDIR)/text_wrap.cpp - -$(SRCDIR)/treelist_wrap.cpp: treelist-module.i - $(SWIG) $(SWIGFLAGS) -o $(SRCDIR)/treelist_wrap.cpp treelist-module.i - $(SED) $(SRCDIR)/treelist_wrap.cpp > junk; mv junk $(SRCDIR)/treelist_wrap.cpp - -$(SRCDIR)/ui_wrap.cpp: ui.i - $(SWIG) $(SWIGFLAGS) -o $(SRCDIR)/ui_wrap.cpp ui.i - $(SED) $(SRCDIR)/ui_wrap.cpp > junk; mv junk $(SRCDIR)/ui_wrap.cpp - -$(SRCDIR)/librb.c: $(SWIGLIB)/ruby/precommon.swg $(SWIGLIB)/common.swg $(SWIGLIB)/ruby/rubyhead.swg $(SWIGLIB)/ruby/rubydef.swg - @echo "#define SWIG_GLOBAL 1" > $(SRCDIR)/librb.c - @cat $(SWIGLIB)/ruby/precommon.swg $(SWIGLIB)/common.swg $(SWIGLIB)/ruby/rubyhead.swg $(SWIGLIB)/ruby/rubydef.swg >> $(SRCDIR)/librb.c - -clean: - @rm -f $(SRCDIR)/librb.c $(MODULES) - -depend: - $(SWIG) $(SWIGFLAGS) -MM -o $(SRCDIR)/core_wrap.cpp core.i > dependencies - $(SWIG) $(SWIGFLAGS) -MM -o $(SRCDIR)/dc_wrap.cpp dcmodule.i >> dependencies - $(SWIG) $(SWIGFLAGS) -MM -o $(SRCDIR)/dialogs_wrap.cpp dialogs.i >> dependencies - $(SWIG) $(SWIGFLAGS) -MM -o $(SRCDIR)/frames_wrap.cpp framesmodule.i >> dependencies - $(SWIG) $(SWIGFLAGS) -MM -o $(SRCDIR)/iconlist_wrap.cpp iconlistmodule.i >> dependencies - $(SWIG) $(SWIGFLAGS) -MM -o $(SRCDIR)/icons_wrap.cpp icons.i >> dependencies - $(SWIG) $(SWIGFLAGS) -MM -o $(SRCDIR)/image_wrap.cpp image.i >> dependencies - $(SWIG) $(SWIGFLAGS) -MM -o $(SRCDIR)/label_wrap.cpp labelmodule.i >> dependencies - $(SWIG) $(SWIGFLAGS) -MM -o $(SRCDIR)/layout_wrap.cpp layout.i >> dependencies - $(SWIG) $(SWIGFLAGS) -MM -o $(SRCDIR)/list_wrap.cpp listmodule.i >> dependencies - $(SWIG) $(SWIGFLAGS) -MM -o $(SRCDIR)/mdi_wrap.cpp mdi.i >> dependencies - $(SWIG) $(SWIGFLAGS) -MM -o $(SRCDIR)/menu_wrap.cpp menumodule.i >> dependencies - $(SWIG) $(SWIGFLAGS) -MM -o $(SRCDIR)/fx3d_wrap.cpp fx3d.i >> dependencies - $(SWIG) $(SWIGFLAGS) -MM -o $(SRCDIR)/scintilla_wrap.cpp scintilla.i >> dependencies - $(SWIG) $(SWIGFLAGS) -MM -o $(SRCDIR)/table_wrap.cpp table-module.i >> dependencies - $(SWIG) $(SWIGFLAGS) -MM -o $(SRCDIR)/text_wrap.cpp text-module.i >> dependencies - $(SWIG) $(SWIGFLAGS) -MM -o $(SRCDIR)/treelist_wrap.cpp treelist-module.i >> dependencies - $(SWIG) $(SWIGFLAGS) -MM -o $(SRCDIR)/ui_wrap.cpp ui.i >> dependencies - -include dependencies diff --git a/swig-interfaces/swig.sed b/swig-interfaces/swig.sed deleted file mode 100755 index de1b3b727a1300851ef4cd3dc172b662fb65b6ee..0000000000000000000000000000000000000000 --- a/swig-interfaces/swig.sed +++ /dev/null @@ -1,55 +0,0 @@ -s/static VALUE mCore;/VALUE mCore;/ -s/mCore = rb_define_module("Core")/mFox = rb_define_module("Fox")/ -s/mCore/mFox/ -/static VALUE mDc;/d -/mDc = rb_define_module/d -/static VALUE mDialogs;/d -/mDialogs = rb_define_module/d -/static VALUE mFrames;/d -/mFrames = rb_define_module/d -/static VALUE mIconlist;/d -/mIconlist = rb_define_module/d -/static VALUE mIcons;/d -/mIcons = rb_define_module/d -/static VALUE mImage;/d -/mImage = rb_define_module/d -/static VALUE mLabel;/d -/mLabel = rb_define_module/d -/static VALUE mLayout;/d -/mLayout = rb_define_module/d -/static VALUE mList;/d -/mList = rb_define_module/d -/static VALUE mMdi;/d -/mMdi = rb_define_module/d -/static VALUE mMenu;/d -/mMenu = rb_define_module/d -/static VALUE mFx3d;/d -/mFx3d = rb_define_module/d -/static VALUE mScintilla;/d -/mScintilla = rb_define_module/d -/static VALUE mTable;/d -/mTable = rb_define_module/d -/static VALUE mText;/d -/mText = rb_define_module/d -/static VALUE mTreelist;/d -/mTreelist = rb_define_module/d -/static VALUE mUi;/d -/mUi = rb_define_module/d -/rb_require/d -s/mDc,/mFox,/ -s/mDialogs,/mFox,/ -s/mFrames,/mFox,/ -s/mIconlist,/mFox,/ -s/mIcons,/mFox,/ -s/mImage,/mFox,/ -s/mLabel,/mFox,/ -s/mLayout,/mFox,/ -s/mList,/mFox,/ -s/mMdi,/mFox,/ -s/mMenu,/mFox,/ -s/mFx3d,/mFox,/ -s/mScintilla,/mFox,/ -s/mTable,/mFox,/ -s/mText,/mFox,/ -s/mTreelist,/mFox,/ -s/mUi,/mFox,/