From 00e69c27c3a7f0a4fc4c687efecd9e464679c382 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?V=C3=ADt=20Ondruch?= Date: Wed, 23 Jan 2013 15:07:30 +0100 Subject: [PATCH 1/6] Remove Makefile patching. --- ext/yajl/extconf.rb | 9 +++------ 1 file changed, 3 insertions(+), 6 deletions(-) diff --git a/ext/yajl/extconf.rb b/ext/yajl/extconf.rb index 5814dfa9..3996f838 100644 --- a/ext/yajl/extconf.rb +++ b/ext/yajl/extconf.rb @@ -1,6 +1,6 @@ require 'mkmf' -yajl_dir = File.expand_path('../vendor', __FILE__) +yajl_dir = File.join($srcdir, 'vendor') $CFLAGS << " -Wall -I#{yajl_dir}" $CFLAGS << ' -Wextra -O0 -ggdb3' if ENV['DEBUG'] @@ -8,9 +8,6 @@ srcs = Dir[File.join(yajl_dir, '*.c')] + Dir[File.join(File.expand_path('..', __FILE__), '*.c')] $objs = srcs.map {|src| File.basename(src).gsub(/\.c$/, '.o') } -create_makefile('yajl/yajl') +$VPATH << "$(srcdir)/vendor" -# now lets post-process the Makefile so we compile the vendored yajl too -m = File.read('Makefile') -m.gsub!(/VPATH = (.*)\n/, "VPATH = \\1#{CONFIG['PATH_SEPARATOR']}#{yajl_dir}\n") -File.open('Makefile', 'w+') {|f| f.write(m) } +create_makefile('yajl/yajl') From 226d073ec4c362b6c044dceb1bb57cf4e7b9f649 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?V=C3=ADt=20Ondruch?= Date: Wed, 23 Jan 2013 15:21:53 +0100 Subject: [PATCH 2/6] Use find_header preferably. --- ext/yajl/encoder.c | 2 +- ext/yajl/extconf.rb | 2 ++ ext/yajl/parser.c | 4 ++-- 3 files changed, 5 insertions(+), 3 deletions(-) diff --git a/ext/yajl/encoder.c b/ext/yajl/encoder.c index 7ec82b3b..5fe6d4ea 100644 --- a/ext/yajl/encoder.c +++ b/ext/yajl/encoder.c @@ -1,5 +1,5 @@ #include "common.h" -#include "api/yajl_gen.h" +#include "yajl_gen.h" #define WRITE_BUFSIZE 8192 #define GetEncoder(obj, sval) (sval = (yajl_encoder_wrapper*)DATA_PTR(obj)); diff --git a/ext/yajl/extconf.rb b/ext/yajl/extconf.rb index 3996f838..c47f2460 100644 --- a/ext/yajl/extconf.rb +++ b/ext/yajl/extconf.rb @@ -10,4 +10,6 @@ $VPATH << "$(srcdir)/vendor" +find_header("yajl_common.h", File.join(yajl_dir, 'api')) + create_makefile('yajl/yajl') diff --git a/ext/yajl/parser.c b/ext/yajl/parser.c index aa8f6508..1959a57a 100644 --- a/ext/yajl/parser.c +++ b/ext/yajl/parser.c @@ -1,5 +1,5 @@ #include "common.h" -#include "api/yajl_parse.h" +#include "yajl_parse.h" #define READ_BUFSIZE 8192 #define GetParser(obj, sval) (sval = (yajl_parser_wrapper*)DATA_PTR(obj)); @@ -420,4 +420,4 @@ void _yajl_ruby_init_parser() { sym_allow_comments = ID2SYM(rb_intern("allow_comments")); sym_check_utf8 = ID2SYM(rb_intern("check_utf8")); sym_symbolize_keys = ID2SYM(rb_intern("symbolize_keys")); -} \ No newline at end of file +} From b17a8c15d5584949b743750fa8d25baafa42d4c2 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?V=C3=ADt=20Ondruch?= Date: Wed, 23 Jan 2013 15:42:28 +0100 Subject: [PATCH 3/6] Prefer system yajl if available. --- ext/yajl/extconf.rb | 12 ++++++++---- 1 file changed, 8 insertions(+), 4 deletions(-) diff --git a/ext/yajl/extconf.rb b/ext/yajl/extconf.rb index c47f2460..24039458 100644 --- a/ext/yajl/extconf.rb +++ b/ext/yajl/extconf.rb @@ -5,11 +5,15 @@ $CFLAGS << " -Wall -I#{yajl_dir}" $CFLAGS << ' -Wextra -O0 -ggdb3' if ENV['DEBUG'] -srcs = Dir[File.join(yajl_dir, '*.c')] + Dir[File.join(File.expand_path('..', __FILE__), '*.c')] -$objs = srcs.map {|src| File.basename(src).gsub(/\.c$/, '.o') } +if have_library("yajl", nil, 'yajl/yajl_common.h') + find_header("yajl_common.h", File.join($hdrdir, 'yajl')) +else + srcs = Dir[File.join(yajl_dir, '*.c')] + Dir[File.join(File.expand_path('..', __FILE__), '*.c')] + $objs = srcs.map {|src| File.basename(src).gsub(/\.c$/, '.o') } -$VPATH << "$(srcdir)/vendor" + $VPATH << "$(srcdir)/vendor" -find_header("yajl_common.h", File.join(yajl_dir, 'api')) + find_header("yajl_common.h", File.join(yajl_dir, 'api')) +end create_makefile('yajl/yajl') From dfe86844ac9d7728425897bac2661abd58439afe Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?V=C3=ADt=20Ondruch?= Date: Wed, 23 Jan 2013 15:44:45 +0100 Subject: [PATCH 4/6] Additional include location is neede just for bundled yajl. --- ext/yajl/extconf.rb | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/ext/yajl/extconf.rb b/ext/yajl/extconf.rb index 24039458..bcb2367e 100644 --- a/ext/yajl/extconf.rb +++ b/ext/yajl/extconf.rb @@ -2,7 +2,7 @@ yajl_dir = File.join($srcdir, 'vendor') -$CFLAGS << " -Wall -I#{yajl_dir}" +$CFLAGS << " -Wall" $CFLAGS << ' -Wextra -O0 -ggdb3' if ENV['DEBUG'] if have_library("yajl", nil, 'yajl/yajl_common.h') @@ -11,6 +11,7 @@ srcs = Dir[File.join(yajl_dir, '*.c')] + Dir[File.join(File.expand_path('..', __FILE__), '*.c')] $objs = srcs.map {|src| File.basename(src).gsub(/\.c$/, '.o') } + $INCFLAGS << " -I#{yajl_dir}" $VPATH << "$(srcdir)/vendor" find_header("yajl_common.h", File.join(yajl_dir, 'api')) From b4d1c3e24d46123e039cf3f70b9448f9cd9c0af9 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?V=C3=ADt=20Ondruch?= Date: Wed, 23 Jan 2013 15:54:15 +0100 Subject: [PATCH 5/6] yajl_dir is needed just for vandored yajl. --- ext/yajl/extconf.rb | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/ext/yajl/extconf.rb b/ext/yajl/extconf.rb index bcb2367e..069192d6 100644 --- a/ext/yajl/extconf.rb +++ b/ext/yajl/extconf.rb @@ -1,6 +1,5 @@ require 'mkmf' -yajl_dir = File.join($srcdir, 'vendor') $CFLAGS << " -Wall" $CFLAGS << ' -Wextra -O0 -ggdb3' if ENV['DEBUG'] @@ -8,6 +7,8 @@ if have_library("yajl", nil, 'yajl/yajl_common.h') find_header("yajl_common.h", File.join($hdrdir, 'yajl')) else + yajl_dir = File.join($srcdir, 'vendor') + srcs = Dir[File.join(yajl_dir, '*.c')] + Dir[File.join(File.expand_path('..', __FILE__), '*.c')] $objs = srcs.map {|src| File.basename(src).gsub(/\.c$/, '.o') } From 0c274c10adc00b83ff482c736ade48ace9ad87e2 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?V=C3=ADt=20Ondruch?= Date: Wed, 23 Jan 2013 16:08:13 +0100 Subject: [PATCH 6/6] DRY. --- ext/yajl/extconf.rb | 10 ++++++++-- 1 file changed, 8 insertions(+), 2 deletions(-) diff --git a/ext/yajl/extconf.rb b/ext/yajl/extconf.rb index 069192d6..98be8451 100644 --- a/ext/yajl/extconf.rb +++ b/ext/yajl/extconf.rb @@ -4,8 +4,14 @@ $CFLAGS << " -Wall" $CFLAGS << ' -Wextra -O0 -ggdb3' if ENV['DEBUG'] +def find_yajl_headers(path) + ['yajl_gen.h', 'yajl_parse.h'].each do |header| + find_header(header, path) + end +end + if have_library("yajl", nil, 'yajl/yajl_common.h') - find_header("yajl_common.h", File.join($hdrdir, 'yajl')) + find_yajl_headers(File.join($hdrdir, 'yajl')) else yajl_dir = File.join($srcdir, 'vendor') @@ -15,7 +21,7 @@ $INCFLAGS << " -I#{yajl_dir}" $VPATH << "$(srcdir)/vendor" - find_header("yajl_common.h", File.join(yajl_dir, 'api')) + find_yajl_headers(File.join(yajl_dir, 'api')) end create_makefile('yajl/yajl')