diff options
author | Florian Frank <flori@ping.de> | 2009-11-07 23:57:25 +0100 |
---|---|---|
committer | Florian Frank <flori@ping.de> | 2009-11-07 23:57:25 +0100 |
commit | 76e017a1b8a042bcb682b68821cc33f29788cd9a (patch) | |
tree | 07e14b66c1304e2dcabd7dacde71006204adde4b /Rakefile | |
parent | f477a836f4f06de520d0e5de9adcf82c87fa69fb (diff) | |
download | json-76e017a1b8a042bcb682b68821cc33f29788cd9a.tar.gz |
simplified build structure, tweak bs iterations
Diffstat (limited to 'Rakefile')
-rw-r--r-- | Rakefile | 40 |
1 files changed, 19 insertions, 21 deletions
@@ -9,31 +9,29 @@ rescue LoadError puts "WARNING: rake-compiler is not installed. You will not be able to build the json gem until you install it." end -require 'rake/clean' -CLOBBER.include Dir['benchmarks/data/*.{dat,log}'] - require 'rbconfig' include Config +require 'rake/clean' +CLOBBER.include Dir['benchmarks/data/*.{dat,log}'] +CLEAN.include FileList['diagrams/*.*'], 'doc', 'coverage', 'tmp', + FileList["ext/**/{Makefile,mkmf.log}"], + FileList["{ext,lib}/**/*.{so,bundle,#{CONFIG['DLEXT']},o,obj,pdb,lib,manifest,exp,def}"] + MAKE = ENV['MAKE'] || %w[gmake make].find { |c| system(c, '-v') } PKG_NAME = 'json' PKG_TITLE = 'JSON Implementation for Ruby' PKG_VERSION = File.read('VERSION').chomp PKG_FILES = FileList["**/*"].exclude(/CVS|pkg|tmp|coverage|Makefile|\.nfs\./).exclude(/\.(so|bundle|o|#{CONFIG['DLEXT']})$/) EXT_ROOT_DIR = 'ext/json/ext' -EXT_PARSER_DIR = "#{EXT_ROOT_DIR}/parser" EXT_PARSER_DL = "#{EXT_ROOT_DIR}/parser.#{CONFIG['DLEXT']}" -EXT_PARSER_SRC = "#{EXT_PARSER_DIR}/parser.c" +EXT_PARSER_SRC = "#{EXT_ROOT_DIR}/parser.c" PKG_FILES << EXT_PARSER_SRC -EXT_GENERATOR_DIR = "#{EXT_ROOT_DIR}/generator" EXT_GENERATOR_DL = "#{EXT_ROOT_DIR}/generator.#{CONFIG['DLEXT']}" -EXT_GENERATOR_SRC = "#{EXT_GENERATOR_DIR}/generator.c" +EXT_GENERATOR_SRC = "#{EXT_ROOT_DIR}/generator.c" RAGEL_CODEGEN = %w[rlcodegen rlgen-cd ragel].find { |c| system(c, '-v') } RAGEL_DOTGEN = %w[rlgen-dot rlgen-cd ragel].find { |c| system(c, '-v') } -RAGEL_PATH = "#{EXT_PARSER_DIR}/parser.rl" -CLEAN.include FileList['diagrams/*.*'], 'doc', 'coverage', 'tmp', - FileList["ext/**/{Makefile,mkmf.log}"], - FileList["{ext,lib}/**/*.{so,bundle,#{CONFIG['DLEXT']},o,obj,pdb,lib,manifest,exp,def}"] +RAGEL_PATH = "#{EXT_ROOT_DIR}/parser.rl" def myruby(*args, &block) @myruby ||= File.join(CONFIG['bindir'], CONFIG['ruby_install_name']) @@ -75,19 +73,17 @@ desc "Compiling extension" task :compile_ext => [ EXT_PARSER_DL, EXT_GENERATOR_DL ] file EXT_PARSER_DL => EXT_PARSER_SRC do - cd EXT_PARSER_DIR do - myruby 'extconf.rb' + cd EXT_ROOT_DIR do + myruby 'extconf_parser.rb' sh MAKE end - cp "#{EXT_PARSER_DIR}/parser.#{CONFIG['DLEXT']}", EXT_ROOT_DIR end file EXT_GENERATOR_DL => EXT_GENERATOR_SRC do - cd EXT_GENERATOR_DIR do - myruby 'extconf.rb' + cd EXT_ROOT_DIR do + myruby 'extconf_generator.rb' sh MAKE end - cp "#{EXT_GENERATOR_DIR}/generator.#{CONFIG['DLEXT']}", EXT_ROOT_DIR end desc "Generate parser with ragel" @@ -98,7 +94,7 @@ task :ragel_clean do end file EXT_PARSER_SRC => RAGEL_PATH do - cd EXT_PARSER_DIR do + cd EXT_ROOT_DIR do if RAGEL_CODEGEN == 'ragel' sh "ragel parser.rl -G2 -o parser.c" else @@ -217,7 +213,7 @@ if defined?(Gem) and defined?(Rake::GemPackageTask) and defined?(Rake::Extension s.files = PKG_FILES - s.extensions = FileList['ext/**/extconf.rb'] + s.extensions = FileList['ext/**/extconf_*.rb'] s.require_path = EXT_ROOT_DIR s.require_paths << 'ext' @@ -246,19 +242,21 @@ if defined?(Gem) and defined?(Rake::GemPackageTask) and defined?(Rake::Extension Rake::ExtensionTask.new do |ext| ext.name = 'parser' + ext.config_script = 'extconf_parser.rb' ext.gem_spec = spec_ext ext.cross_compile = true ext.cross_platform = 'i386-mswin32' - ext.ext_dir = 'ext/json/ext/parser' + ext.ext_dir = 'ext/json/ext' ext.lib_dir = 'lib/json/ext' end Rake::ExtensionTask.new do |ext| ext.name = 'generator' + ext.config_script = 'extconf_generator.rb' ext.gem_spec = spec_ext ext.cross_compile = true ext.cross_platform = 'i386-mswin32' - ext.ext_dir = 'ext/json/ext/generator' + ext.ext_dir = 'ext/json/ext' ext.lib_dir = 'lib/json/ext' end end |