From faaffbebfa11a77b94cabb605b87f92718cc5f41 Mon Sep 17 00:00:00 2001 From: Lamont Granquist Date: Wed, 4 Jun 2014 17:59:00 -0700 Subject: add a jruby makefile works on ubuntu, probably other linuxes, probably not mac, etc --- ext/libyajl2/extconf.rb | 84 ++++++++++++++++++++++++++++++++++--------------- 1 file changed, 58 insertions(+), 26 deletions(-) diff --git a/ext/libyajl2/extconf.rb b/ext/libyajl2/extconf.rb index d656a86..f1d4586 100644 --- a/ext/libyajl2/extconf.rb +++ b/ext/libyajl2/extconf.rb @@ -2,7 +2,6 @@ exit(0) if ENV["USE_SYSTEM_LIBYAJL2"] require 'rbconfig' require 'fileutils' -require 'mkmf' module Libyajl2Build class BuildError < StandardError; end @@ -23,6 +22,10 @@ module Libyajl2Build PREFIX end + def self.deps + require 'mkmf' + end + def self.setup_env RbConfig::MAKEFILE_CONFIG['CC'] = ENV['CC'] if ENV['CC'] @@ -42,37 +45,65 @@ module Libyajl2Build end def self.makemakefiles - setup_env - dir_config("libyajl") - create_makefile("libyajl") - - # on windows the Makefile will try to export Init_libyajl which is wrong because we aren't a ruby lib. - # i could not figure out how to tell mkmf.rb to stop being so helpful, so instead will just patch it here. - if windows? - makefile = IO.read("Makefile") - makefile.gsub!(/\$\(DEFFILE\)/, '') - File.open("Makefile", 'w+') {|f| f.write(makefile) } - end + if RUBY_PLATFORM == "java" + File.open("Makefile", "w+") do |f| + f.write <make.out 2>&1") || raise # rubinius doesn't like the output this generates - # ...so we can hack up what install does later and copy over the include files +all: $(DLLIB) - # not sure why ruby windows produces .so's instead of .dll's - if windows? - FileUtils.mv "libyajl.so", "yajl.dll" - end +$(DLLIB): $(OBJS) +\t$(CC) -shared -o $(DLLIB) $(OBJS) $(LDFLAGS) $(LIBS) + +%.o: ../../../../ext/libyajl2/%.c +\t$(COMPILE.c) $(OUTPUT_OPTION) $< - File.open("Makefile", "w+") do |f| - f.write <