apriori 0.2.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (122) hide show
  1. data/History.txt +16 -0
  2. data/License.txt +20 -0
  3. data/Manifest.txt +121 -0
  4. data/README.txt +149 -0
  5. data/Rakefile +15 -0
  6. data/TODO.txt +60 -0
  7. data/attic/c_ext_test1/MyTest/MyTest.c +23 -0
  8. data/attic/c_ext_test1/MyTest/extconf.rb +11 -0
  9. data/attic/c_ext_test1/mytest.rb +10 -0
  10. data/attic/test.c +12 -0
  11. data/config/hoe.rb +81 -0
  12. data/config/requirements.rb +29 -0
  13. data/examples/01_simple_example.rb +32 -0
  14. data/examples/02_small_file_example.rb +17 -0
  15. data/examples/03_large_file_example.rb +22 -0
  16. data/examples/test_data/market_basket_basic_test.dat +9 -0
  17. data/ext/Apriori.c +149 -0
  18. data/ext/Makefile +149 -0
  19. data/ext/apriori/doc/apriori.html +1301 -0
  20. data/ext/apriori/doc/arem.gp +68 -0
  21. data/ext/apriori/doc/c_rev.gp +89 -0
  22. data/ext/apriori/doc/chi2.tex +156 -0
  23. data/ext/apriori/doc/copying +504 -0
  24. data/ext/apriori/doc/line.gif +0 -0
  25. data/ext/apriori/doc/uparrow.gif +0 -0
  26. data/ext/apriori/ex/flg2set +15 -0
  27. data/ext/apriori/ex/hdr2set +13 -0
  28. data/ext/apriori/ex/readme +71 -0
  29. data/ext/apriori/ex/row2set +7 -0
  30. data/ext/apriori/ex/rulesort +24 -0
  31. data/ext/apriori/ex/tab2set +9 -0
  32. data/ext/apriori/ex/test.app +2 -0
  33. data/ext/apriori/ex/test.rul +9 -0
  34. data/ext/apriori/ex/test1.rul +43 -0
  35. data/ext/apriori/ex/test1.tab +10 -0
  36. data/ext/apriori/ex/test2.tab +10 -0
  37. data/ext/apriori/ex/test3.tab +30 -0
  38. data/ext/apriori/ex/test4.tab +11 -0
  39. data/ext/apriori/ex/test5.tab +39 -0
  40. data/ext/apriori/ex/tid2set +23 -0
  41. data/ext/apriori/ex/xhdr2set +33 -0
  42. data/ext/apriori/src/apriori.c +750 -0
  43. data/ext/apriori/src/apriori.dsp +120 -0
  44. data/ext/apriori/src/apriori.dsw +29 -0
  45. data/ext/apriori/src/apriori.mak +99 -0
  46. data/ext/apriori/src/istree.c +1411 -0
  47. data/ext/apriori/src/istree.h +160 -0
  48. data/ext/apriori/src/makefile +105 -0
  49. data/ext/apriori/src/tract.c +870 -0
  50. data/ext/apriori/src/tract.h +261 -0
  51. data/ext/apriori_wrapper.c +757 -0
  52. data/ext/apriori_wrapper.h +10 -0
  53. data/ext/extconf.rb +32 -0
  54. data/ext/math/doc/copying +504 -0
  55. data/ext/math/src/chi2.c +151 -0
  56. data/ext/math/src/chi2.h +27 -0
  57. data/ext/math/src/choose.c +71 -0
  58. data/ext/math/src/choose.h +16 -0
  59. data/ext/math/src/gamma.c +446 -0
  60. data/ext/math/src/gamma.h +39 -0
  61. data/ext/math/src/intexp.c +35 -0
  62. data/ext/math/src/intexp.h +15 -0
  63. data/ext/math/src/makefile +164 -0
  64. data/ext/math/src/math.mak +48 -0
  65. data/ext/math/src/normal.c +387 -0
  66. data/ext/math/src/normal.h +44 -0
  67. data/ext/math/src/radfn.c +113 -0
  68. data/ext/math/src/radfn.h +34 -0
  69. data/ext/math/src/zeta.c +49 -0
  70. data/ext/math/src/zeta.h +15 -0
  71. data/ext/pre-clean.rb +8 -0
  72. data/ext/pre-setup.rb +9 -0
  73. data/ext/util/doc/copying +504 -0
  74. data/ext/util/src/listops.c +76 -0
  75. data/ext/util/src/listops.h +26 -0
  76. data/ext/util/src/makefile +103 -0
  77. data/ext/util/src/memsys.c +84 -0
  78. data/ext/util/src/memsys.h +42 -0
  79. data/ext/util/src/nstats.c +288 -0
  80. data/ext/util/src/nstats.h +69 -0
  81. data/ext/util/src/params.c +86 -0
  82. data/ext/util/src/params.h +19 -0
  83. data/ext/util/src/parse.c +133 -0
  84. data/ext/util/src/parse.h +81 -0
  85. data/ext/util/src/scan.c +767 -0
  86. data/ext/util/src/scan.h +111 -0
  87. data/ext/util/src/symtab.c +443 -0
  88. data/ext/util/src/symtab.h +121 -0
  89. data/ext/util/src/tabscan.c +279 -0
  90. data/ext/util/src/tabscan.h +99 -0
  91. data/ext/util/src/util.mak +91 -0
  92. data/ext/util/src/vecops.c +317 -0
  93. data/ext/util/src/vecops.h +42 -0
  94. data/lib/apriori.rb +133 -0
  95. data/lib/apriori/adapter.rb +13 -0
  96. data/lib/apriori/association_rule.rb +89 -0
  97. data/lib/apriori/version.rb +9 -0
  98. data/script/console +10 -0
  99. data/script/destroy +14 -0
  100. data/script/generate +14 -0
  101. data/script/txt2html +82 -0
  102. data/setup.rb +1585 -0
  103. data/tasks/apriori.rake +20 -0
  104. data/tasks/attic.rake +28 -0
  105. data/tasks/deployment.rake +34 -0
  106. data/tasks/environment.rake +7 -0
  107. data/tasks/install.rake +13 -0
  108. data/tasks/website.rake +17 -0
  109. data/test/apriori_test.rb +13 -0
  110. data/test/fixtures/market_basket_results_test.txt +5 -0
  111. data/test/fixtures/market_basket_string_test.txt +7 -0
  112. data/test/fixtures/results.txt +2 -0
  113. data/test/fixtures/sample.txt +7 -0
  114. data/test/test_helper.rb +5 -0
  115. data/test/unit/test_apriori.rb +68 -0
  116. data/test/unit/test_itemsets_and_parsing.rb +82 -0
  117. data/website/index.html +248 -0
  118. data/website/index.txt +152 -0
  119. data/website/javascripts/rounded_corners_lite.inc.js +285 -0
  120. data/website/stylesheets/screen.css +142 -0
  121. data/website/template.html.erb +49 -0
  122. metadata +226 -0
@@ -0,0 +1,81 @@
1
+ require 'apriori/version'
2
+
3
+ AUTHOR = 'Nate Murray' # can also be an array of Authors
4
+ EMAIL = "nate@natemurray.com"
5
+ DESCRIPTION = "Ruby Apriori is a library to efficiently find item association rules within large sets of transactions."
6
+ GEM_NAME = 'apriori' # what ppl will type to install your gem
7
+ RUBYFORGE_PROJECT = 'apriori' # The unix name for your project
8
+ HOMEPATH = "http://#{RUBYFORGE_PROJECT}.rubyforge.org"
9
+ DOWNLOAD_PATH = "http://rubyforge.org/projects/#{RUBYFORGE_PROJECT}"
10
+ EXTRA_DEPENDENCIES = [
11
+ # ['activesupport', '>= 1.3.1']
12
+ ['rake', '>= 0.0.0'],
13
+ ['hoe', '>= 0.0.0'],
14
+ ['newgem', '>= 0.0.0'],
15
+ ['rubigen', '>= 0.0.0']
16
+ ] # An array of rubygem dependencies [name, version]
17
+
18
+ @config_file = "~/.rubyforge/user-config.yml"
19
+ @config = nil
20
+ RUBYFORGE_USERNAME = "unknown"
21
+ def rubyforge_username
22
+ unless @config
23
+ begin
24
+ @config = YAML.load(File.read(File.expand_path(@config_file)))
25
+ rescue
26
+ puts <<-EOS
27
+ ERROR: No rubyforge config file found: #{@config_file}
28
+ Run 'rubyforge setup' to prepare your env for access to Rubyforge
29
+ - See http://newgem.rubyforge.org/rubyforge.html for more details
30
+ EOS
31
+ exit
32
+ end
33
+ end
34
+ RUBYFORGE_USERNAME.replace @config["username"]
35
+ end
36
+
37
+
38
+ REV = nil
39
+ # UNCOMMENT IF REQUIRED:
40
+ # REV = YAML.load(`svn info`)['Revision']
41
+ VERS = Apriori::VERSION::STRING + (REV ? ".#{REV}" : "")
42
+ RDOC_OPTS = ['--quiet', '--title', 'apriori documentation',
43
+ "--opname", "index.html",
44
+ "--line-numbers",
45
+ # "--exclude=ext",
46
+ "--main", "README",
47
+ "--inline-source"]
48
+
49
+ class Hoe
50
+ def extra_deps
51
+ @extra_deps.reject! { |x| Array(x).first == 'hoe' }
52
+ @extra_deps
53
+ end
54
+ end
55
+
56
+ # Generate all the Rake tasks
57
+ # Run 'rake -T' to see list of generated tasks (from gem root directory)
58
+ $hoe = Hoe.new(GEM_NAME, VERS) do |p|
59
+ p.developer(AUTHOR, EMAIL)
60
+ p.description = DESCRIPTION
61
+ p.summary = DESCRIPTION
62
+ p.url = HOMEPATH
63
+ p.rubyforge_name = RUBYFORGE_PROJECT if RUBYFORGE_PROJECT
64
+ p.test_globs = ["test/**/test_*.rb"]
65
+ p.clean_globs |= ['**/.*.sw?', '*.gem', '.config', '**/.DS_Store'] #An array of file patterns to delete on clean.
66
+ p.rdoc_pattern = /^(lib|bin)|txt$/
67
+
68
+ # p.spec_extras = {:extensions, FileList["ext/**/extconf.rb"].to_a} # A hash of extra values to set in the gemspec.
69
+ p.spec_extras = {:extensions, 'Rakefile'} # A hash of extra values to set in the gemspec.
70
+
71
+ # == Optional
72
+ p.changes = p.paragraphs_of("History.txt", 0..1).join("\n\n")
73
+ p.extra_deps = EXTRA_DEPENDENCIES
74
+
75
+ end
76
+
77
+ CHANGES = $hoe.paragraphs_of('History.txt', 0..1).join("\\n\\n")
78
+ PATH = (RUBYFORGE_PROJECT == GEM_NAME) ? RUBYFORGE_PROJECT : "#{RUBYFORGE_PROJECT}/#{GEM_NAME}"
79
+ $hoe.remote_rdoc_dir = File.join(PATH.gsub(/^#{RUBYFORGE_PROJECT}\/?/,''), 'rdoc')
80
+ $hoe.rsync_args = '-av --delete --ignore-errors'
81
+ $hoe.spec.post_install_message = File.open(File.dirname(__FILE__) + "/../PostInstall.txt").read rescue ""
@@ -0,0 +1,29 @@
1
+ require 'fileutils'
2
+ include FileUtils
3
+
4
+ require 'rubygems'
5
+
6
+ def check_rubygems_version
7
+ min_version = '1.2.0'
8
+ local_version = %x[gem --version].chomp
9
+
10
+ unless local_version >= min_version
11
+ puts "You need to update the RubyGems utility to #{min_version} using the following"
12
+ puts ""
13
+ puts " sudo gem update --system"
14
+ exit
15
+ end
16
+ end
17
+ check_rubygems_version
18
+
19
+ %w[rake hoe newgem rubigen].each do |req_gem|
20
+ begin
21
+ require req_gem
22
+ rescue LoadError
23
+ puts "This Rakefile requires the '#{req_gem}' RubyGem."
24
+ puts "Installation: gem install #{req_gem} -y"
25
+ exit
26
+ end
27
+ end
28
+
29
+ $:.unshift(File.join(File.dirname(__FILE__), %w[.. lib]))
@@ -0,0 +1,32 @@
1
+ $:.unshift(File.dirname(__FILE__) + "/../lib")
2
+ require 'apriori'
3
+
4
+ transactions = [ %w{beer doritos},
5
+ %w{apple cheese},
6
+ %w{beer doritos},
7
+ %w{apple cheese},
8
+ %w{apple cheese},
9
+ %w{apple doritos} ]
10
+
11
+ rules = Apriori.find_association_rules(transactions,
12
+ :min_items => 2,
13
+ :max_items => 5,
14
+ :min_support => 1,
15
+ :max_support => 100,
16
+ :min_confidence => 20)
17
+
18
+ puts rules.join("\n")
19
+
20
+ # RETURNS:
21
+ # doritos <- beer (33.3/2, 100.0)
22
+ # beer <- doritos (50.0/3, 66.7)
23
+ # apple <- doritos (50.0/3, 33.3)
24
+ # doritos <- apple (66.7/4, 25.0)
25
+ # apple <- cheese (50.0/3, 100.0)
26
+ # cheese <- apple (66.7/4, 75.0)
27
+
28
+ # NOTE:
29
+ # doritos <- beer (33.3/2, 100.0)
30
+ # means:
31
+ # * beer appears in 33.3% (2 total) of the transactions (the support)
32
+ # * beer implies doritos 100% of the time (the confidence)
@@ -0,0 +1,17 @@
1
+ $:.unshift(File.dirname(__FILE__) + "/../lib")
2
+ require 'apriori'
3
+ require 'benchmark'
4
+
5
+ rules = nil
6
+ results = Benchmark.measure {
7
+ rules = Apriori.find_association_rules(File.dirname(__FILE__) + "/test_data/market_basket_basic_test.dat",
8
+ :min_items => 2,
9
+ :max_items => 3,
10
+ :min_support => 0.01,
11
+ :min_confidence => 30)
12
+ }
13
+
14
+ puts rules.join("\n")
15
+ puts "#{rules.size} rules generated"
16
+ puts "Benchmarks:"
17
+ puts results
@@ -0,0 +1,22 @@
1
+ $:.unshift(File.dirname(__FILE__) + "/../lib")
2
+ require 'apriori'
3
+ require 'benchmark'
4
+
5
+ # NOTE: the 'accidents.dat' file is not supplied with this gem. To download it,
6
+ # run: rake apriori:get_example_data
7
+ # or see http://fimi.cs.helsinki.fi/data/
8
+
9
+ puts "This will take a little while. Hold tight..."
10
+
11
+ rules = nil
12
+ results = Benchmark.measure {
13
+ rules = Apriori.find_association_rules(File.dirname(__FILE__) + "/test_data/accidents.dat",
14
+ :min_items => 2,
15
+ :max_items => 10,
16
+ :min_support => 50,
17
+ :min_confidence => 80)
18
+ }
19
+
20
+ puts "#{rules.size} rules generated"
21
+ puts "Benchmarks:"
22
+ puts results
@@ -0,0 +1,9 @@
1
+ apple
2
+ beer doritos
3
+ eggs cheese
4
+ apple cheese
5
+ beer doritos
6
+ apple cheese
7
+ eggs cheese apple
8
+ apple cheese
9
+ apple doritos
@@ -0,0 +1,149 @@
1
+ // Include the Ruby headers and goodies
2
+ #include "ruby.h"
3
+ #include "intern.h"
4
+ #include "apriori_wrapper.h"
5
+
6
+ // Defining a space for information and references about the module to be stored internally
7
+ VALUE Apriori = Qnil;
8
+
9
+ // Prototype for the initialization method - Ruby calls this, not you
10
+ void Init_mytest();
11
+
12
+ // Prototype for our method 'test1' - methods are prefixed by 'method_' here
13
+ VALUE method_do_test_apriori(VALUE self);
14
+ //VALUE method_test_hash_ap(VALUE self, VALUE filein, VALUE fileout, VALUE opts);
15
+ //VALUE method_find_association_rules(VALUE self, VALUE filein, VALUE fileout, VALUE opts);
16
+
17
+ VALUE method_ap_do_apriori(VALUE self, VALUE rargv);
18
+
19
+ // The initialization method for this module
20
+ void Init_apriori_ext() {
21
+ Apriori = rb_define_module("Apriori");
22
+ rb_define_method(Apriori, "do_test_apriori", method_do_test_apriori, 0);
23
+ rb_define_method(Apriori, "do_apriori", method_ap_do_apriori, 1);
24
+ }
25
+
26
+ VALUE method_do_test_apriori(VALUE self) {
27
+ char *arg0 = "apriori";
28
+ char *arg1 = "test/sample.txt";
29
+ char *arg2 = "test/results.txt";
30
+ char *argv[3];
31
+ argv[0] = arg0;
32
+ argv[1] = arg1;
33
+ argv[2] = arg2;
34
+
35
+ do_apriori(3, argv);
36
+ int x = 10;
37
+ return INT2NUM(x);
38
+ }
39
+
40
+ // Our 'test1' method.. it simply returns a value of '10' for now.
41
+ /*
42
+ VALUE method_test_hash_ap(VALUE self, VALUE filein, VALUE fileout, VALUE opts) {
43
+ //VALUE s = rb_str_new2("hello");
44
+ VALUE s = rb_str_new2("bye");
45
+ VALUE val = rb_hash_aref(opts, rb_str_intern(s));
46
+
47
+ if(val != Qnil) {
48
+ return val;
49
+ } else {
50
+ return rb_str_new2("nope");
51
+ }
52
+ }
53
+ */
54
+
55
+ // Our 'test1' method.. it simply returns a value of '10' for now.
56
+ /*
57
+ VALUE method_find_association_rules(VALUE self, VALUE filein, VALUE fileout, VALUE opts) {
58
+ VALUE s = rb_str_new2("hello");
59
+ //VALUE s = rb_str_new2("bye");
60
+ VALUE val = rb_hash_aref(opts, rb_str_intern(s));
61
+
62
+ if(val != Qnil) {
63
+ return val;
64
+ } else {
65
+ return rb_str_new2("nope");
66
+ }
67
+ }
68
+ */
69
+
70
+ VALUE method_ap_do_apriori(VALUE self, VALUE rargv) {
71
+ char **argv; // todo, learn the best practice here
72
+ int i = 0;
73
+ VALUE ary_value;
74
+ // get the number of arguments
75
+ int ruby_argv_length = RARRAY(rargv)->len;
76
+ // allocate enough memory for a pointer to each char *
77
+ argv = malloc(ruby_argv_length * sizeof(*argv));
78
+
79
+ // copy the ruby array of strings to a c "array of strings"
80
+ // todo, turn this into a function
81
+ while((ary_value = rb_ary_shift(rargv)) != Qnil) {
82
+ argv[i] = malloc(strlen(STR2CSTR(ary_value)) + 1);
83
+ strcpy(argv[i], STR2CSTR(ary_value));
84
+ i++;
85
+ }
86
+ do_apriori(i, argv);
87
+ return Qnil;
88
+ }
89
+
90
+ /*
91
+ VALUE better_method_ap_test_ruby_array(VALUE self, VALUE rargv) {
92
+ char **argv;
93
+ int i = 3;
94
+ argv = (char **)convert_rb_ary_strings_to_c_ary_strings(rargv);
95
+ do_apriori(i, argv);
96
+ }
97
+
98
+ char **convert_rb_ary_strings_to_c_ary_strings(VALUE rary) {
99
+ char **argv; // todo, learn the best practice here
100
+ int i = 0;
101
+ VALUE ary_value;
102
+ // get the number of arguments
103
+ int ruby_argv_length = RARRAY(rary)->len;
104
+ // allocate enough memory for a pointer to each char *
105
+ argv = malloc(ruby_argv_length * sizeof(*argv));
106
+
107
+ // copy the ruby array of strings to a c "array of strings"
108
+ // todo, turn this into a function
109
+ while((ary_value = rb_ary_shift(rary)) != Qnil) {
110
+ argv[i] = malloc(strlen(STR2CSTR(ary_value)) + 1);
111
+ strcpy(argv[i], STR2CSTR(ary_value));
112
+ fprintf(stderr, "%s\n", argv[i]);
113
+ i++;
114
+ }
115
+ printf("%d\n", i);
116
+ return argv;
117
+ }
118
+ */
119
+
120
+ void asdf_junk_box() {
121
+ /* int j; */
122
+ /* for(j=0; j<i; j++) { */
123
+ /* fprintf(stderr, "%s\n", argv[j]); */
124
+ /* } */
125
+
126
+ // VALUE tmp_argv = rb_ary_new();
127
+ //do_apriori(i, argv);
128
+
129
+ // ok, so you need to figure out how many non-nil values you have,
130
+ // i guess you could just track it above.
131
+ // then we're good! we can feed these to the main
132
+
133
+ // for(i=0; i < NUM2INT(rb_ary_length(rargv)); i++) {
134
+ // VALUE argv = rb_ary_new();
135
+ //fprintf(stderr, STR2CSTR(rb_ary_fetch(1, 1, rargv)));
136
+ // }
137
+ // get an array of ruby strings
138
+ // convert it to a c array of char *'s
139
+ //
140
+ //VALUE s = rb_str_new2("bye");
141
+ //VALUE val = rb_hash_aref(opts, rb_str_intern(s));
142
+
143
+ /* if(val != Qnil) { */
144
+ /* return val; */
145
+ /* } else { */
146
+ /* return rb_str_new2("nope"); */
147
+ /* } */
148
+ return;
149
+ }
@@ -0,0 +1,149 @@
1
+
2
+ SHELL = /bin/sh
3
+
4
+ #### Start of system configuration section. ####
5
+
6
+ srcdir = /home/nathan/tmp/apriori/ext
7
+ topdir = /usr/local/lib/ruby/1.8/i686-linux
8
+ hdrdir = $(topdir)
9
+ VPATH = $(srcdir):$(topdir):$(hdrdir)
10
+ prefix = $(DESTDIR)/usr/local
11
+ exec_prefix = $(prefix)
12
+ sitedir = $(prefix)/lib/ruby/site_ruby
13
+ rubylibdir = $(libdir)/ruby/$(ruby_version)
14
+ docdir = $(datarootdir)/doc/$(PACKAGE)
15
+ dvidir = $(docdir)
16
+ datarootdir = $(prefix)/share
17
+ archdir = $(rubylibdir)/$(arch)
18
+ sbindir = $(exec_prefix)/sbin
19
+ psdir = $(docdir)
20
+ localedir = $(datarootdir)/locale
21
+ htmldir = $(docdir)
22
+ datadir = $(datarootdir)
23
+ includedir = $(prefix)/include
24
+ infodir = $(datarootdir)/info
25
+ sysconfdir = $(prefix)/etc
26
+ mandir = $(datarootdir)/man
27
+ libdir = $(exec_prefix)/lib
28
+ sharedstatedir = $(prefix)/com
29
+ oldincludedir = $(DESTDIR)/usr/include
30
+ pdfdir = $(docdir)
31
+ sitearchdir = $(sitelibdir)/$(sitearch)
32
+ bindir = $(exec_prefix)/bin
33
+ localstatedir = $(prefix)/var
34
+ sitelibdir = $(sitedir)/$(ruby_version)
35
+ libexecdir = $(exec_prefix)/libexec
36
+
37
+ CC = gcc
38
+ LIBRUBY = $(LIBRUBY_A)
39
+ LIBRUBY_A = lib$(RUBY_SO_NAME)-static.a
40
+ LIBRUBYARG_SHARED = -Wl,-R -Wl,$(libdir) -L$(libdir) -L.
41
+ LIBRUBYARG_STATIC = -l$(RUBY_SO_NAME)-static
42
+
43
+ RUBY_EXTCONF_H =
44
+ CFLAGS = -fPIC -g -O2
45
+ INCFLAGS = -I. -I$(topdir) -I$(hdrdir) -I$(srcdir)
46
+ CPPFLAGS = -I/home/nathan/tmp/apriori/ext/util/src -I/home/nathan/tmp/apriori/ext/math/src -I/home/nathan/tmp/apriori/ext/apriori/src
47
+ CXXFLAGS = $(CFLAGS)
48
+ DLDFLAGS =
49
+ LDSHARED = $(CC) -shared
50
+ AR = ar
51
+ EXEEXT =
52
+
53
+ RUBY_INSTALL_NAME = ruby
54
+ RUBY_SO_NAME = ruby
55
+ arch = i686-linux
56
+ sitearch = i686-linux
57
+ ruby_version = 1.8
58
+ ruby = /usr/local/bin/ruby
59
+ RUBY = $(ruby)
60
+ RM = rm -f
61
+ MAKEDIRS = mkdir -p
62
+ INSTALL = /usr/bin/ginstall -c
63
+ INSTALL_PROG = $(INSTALL) -m 0755
64
+ INSTALL_DATA = $(INSTALL) -m 644
65
+ COPY = cp
66
+
67
+ #### End of system configuration section. ####
68
+
69
+ preload =
70
+
71
+ libpath = $(libdir)
72
+ LIBPATH = -L'$(libdir)' -Wl,-R'$(libdir)'
73
+ DEFFILE =
74
+
75
+ CLEANFILES =
76
+ DISTCLEANFILES =
77
+
78
+ extout =
79
+ extout_prefix =
80
+ target_prefix =
81
+ LOCAL_LIBS =
82
+ LIBS = -ldl -lcrypt -lm -lc
83
+ SRCS = vecops.c nimap.c tabscan.c scform.c gamma.c chi2.c tract.c istree.c apriori_wrapper.c Apriori.c
84
+ OBJS = /home/nathan/tmp/apriori/ext/util/src/vecops.o /home/nathan/tmp/apriori/ext/util/src/nimap.o /home/nathan/tmp/apriori/ext/util/src/tabscan.o /home/nathan/tmp/apriori/ext/util/src/scform.o /home/nathan/tmp/apriori/ext/math/src/gamma.o /home/nathan/tmp/apriori/ext/math/src/chi2.o /home/nathan/tmp/apriori/ext/apriori/src/tract.o /home/nathan/tmp/apriori/ext/apriori/src/istree.o apriori_wrapper.o Apriori.o
85
+ TARGET = apriori_ext
86
+ DLLIB = $(TARGET).so
87
+ EXTSTATIC =
88
+ STATIC_LIB =
89
+
90
+ RUBYCOMMONDIR = $(sitedir)$(target_prefix)
91
+ RUBYLIBDIR = $(sitelibdir)$(target_prefix)
92
+ RUBYARCHDIR = $(sitearchdir)$(target_prefix)
93
+
94
+ TARGET_SO = $(DLLIB)
95
+ CLEANLIBS = $(TARGET).so $(TARGET).il? $(TARGET).tds $(TARGET).map
96
+ CLEANOBJS = *.o *.a *.s[ol] *.pdb *.exp *.bak
97
+
98
+ all: $(DLLIB)
99
+ static: $(STATIC_LIB)
100
+
101
+ clean:
102
+ @-$(RM) $(CLEANLIBS) $(CLEANOBJS) $(CLEANFILES)
103
+
104
+ distclean: clean
105
+ @-$(RM) Makefile $(RUBY_EXTCONF_H) conftest.* mkmf.log
106
+ @-$(RM) core ruby$(EXEEXT) *~ $(DISTCLEANFILES)
107
+
108
+ realclean: distclean
109
+ install: install-so install-rb
110
+
111
+ install-so: $(RUBYARCHDIR)
112
+ install-so: $(RUBYARCHDIR)/$(DLLIB)
113
+ $(RUBYARCHDIR)/$(DLLIB): $(DLLIB)
114
+ $(INSTALL_PROG) $(DLLIB) $(RUBYARCHDIR)
115
+ install-rb: pre-install-rb install-rb-default
116
+ install-rb-default: pre-install-rb-default
117
+ pre-install-rb: Makefile
118
+ pre-install-rb-default: Makefile
119
+ $(RUBYARCHDIR):
120
+ $(MAKEDIRS) $@
121
+
122
+ site-install: site-install-so site-install-rb
123
+ site-install-so: install-so
124
+ site-install-rb: install-rb
125
+
126
+ .SUFFIXES: .c .m .cc .cxx .cpp .C .o
127
+
128
+ .cc.o:
129
+ $(CXX) $(INCFLAGS) $(CPPFLAGS) $(CXXFLAGS) -c $<
130
+
131
+ .cxx.o:
132
+ $(CXX) $(INCFLAGS) $(CPPFLAGS) $(CXXFLAGS) -c $<
133
+
134
+ .cpp.o:
135
+ $(CXX) $(INCFLAGS) $(CPPFLAGS) $(CXXFLAGS) -c $<
136
+
137
+ .C.o:
138
+ $(CXX) $(INCFLAGS) $(CPPFLAGS) $(CXXFLAGS) -c $<
139
+
140
+ .c.o:
141
+ $(CC) $(INCFLAGS) $(CPPFLAGS) $(CFLAGS) -c $<
142
+
143
+ $(DLLIB): $(OBJS)
144
+ @-$(RM) $@
145
+ $(LDSHARED) $(DLDFLAGS) $(LIBPATH) -o $@ $(OBJS) $(LOCAL_LIBS) $(LIBS)
146
+
147
+
148
+
149
+ $(OBJS): ruby.h defines.h