From 71d77c14b2276f4a055630d194bac783eb50b47f Mon Sep 17 00:00:00 2001
From: Lyle Johnson <lyle@lylejohnson.name>
Date: Tue, 15 Sep 2009 09:52:50 -0500
Subject: [PATCH] Moved swig dependencies task from Makefile to Rakefile

---
 Rakefile | 55 +++++++++++++++++++++++++++++++++++++++++++++++--------
 1 file changed, 47 insertions(+), 8 deletions(-)

diff --git a/Rakefile b/Rakefile
index c6193aa..abc619b 100755
--- a/Rakefile
+++ b/Rakefile
@@ -82,14 +82,6 @@ task :setversions => [ :create_installer_scripts ] do
   setversions("scripts/make-installers.rb")
 end
 
-desc "Run SWIG to generate the wrapper files."
-task :swig do
-  Dir.chdir "swig-interfaces" do
-    system %{touch dependencies}
-    system %{make depend; make}
-  end
-end
-
 DISTFILES = [
   "ANNOUNCE",
   "LICENSE",
@@ -220,4 +212,51 @@ end
 Rake::ExtensionTask.new("fox16") do |ext|
 end
 
+namespace :swig do
+  SWIG = "/usr/local/bin/swig"
+  SWIGFLAGS = "-fcompact -noruntime -c++ -ruby -no_default -I../fox-includes"
+  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 swig_generate_dependencies(wrapper_src_file_name, swig_interface_file_name)
+    wrapper_src_file_name = File.join("..", "ext", "fox16", wrapper_src_file_name)
+    system "#{SWIG} #{SWIGFLAGS} -MM -o #{wrapper_src_file_name} #{swig_interface_file_name} >> dependencies"
+  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(value, key)
+      end
+    end
+  end
+
+  desc "Run SWIG to generate the wrapper files."
+  task :swig => [:swig_dependencies] do
+    Dir.chdir "swig-interfaces" do
+      system %{make}
+    end
+  end
+end
+
 task :build => [:configure, :compile]
\ No newline at end of file
-- 
GitLab