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 5814dfa9..98be8451 100644 --- a/ext/yajl/extconf.rb +++ b/ext/yajl/extconf.rb @@ -1,16 +1,27 @@ require 'mkmf' -yajl_dir = File.expand_path('../vendor', __FILE__) -$CFLAGS << " -Wall -I#{yajl_dir}" +$CFLAGS << " -Wall" $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') } +def find_yajl_headers(path) + ['yajl_gen.h', 'yajl_parse.h'].each do |header| + find_header(header, path) + end +end -create_makefile('yajl/yajl') +if have_library("yajl", nil, 'yajl/yajl_common.h') + find_yajl_headers(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') } + + $INCFLAGS << " -I#{yajl_dir}" + $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) } + find_yajl_headers(File.join(yajl_dir, 'api')) +end + +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 +}