Sha256: f4a8803f7c173d642539a61b039ce5bf7470ea381ed151bfd5553314cc8e88a8

Contents?: true

Size: 1.6 KB

Versions: 6

Compression:

Stored size: 1.6 KB

Contents

require 'rubygems'
require 'mkmf'

extension_name = 'express_parser'
cross_build = enable_config("cross-build")

antlr4_src = 'antlr4-upstream/runtime/Cpp/runtime/src'
src_paths = [
  ".",
  "antlrgen",
  "#{antlr4_src}",
  "#{antlr4_src}/atn",
  "#{antlr4_src}/dfa",
  "#{antlr4_src}/misc",
  "#{antlr4_src}/support",
  "#{antlr4_src}/tree",
  "#{antlr4_src}/tree/pattern",
  "#{antlr4_src}/tree/xpath",
]

if cross_build
  rice_subdir = "rice-embed"
  rice_root = Gem.loaded_specs["rice"].full_gem_path
  rice_src = File.join(rice_root, "rice")
  rice_embed = File.join(__dir__, rice_subdir)
  unless File.exists?(rice_embed)
    FileUtils.mkdir_p(rice_embed)
    FileUtils.cp_r(Dir.glob(rice_src), rice_embed)
    File.delete(*Dir.glob("#{rice_embed}/**/*.o"))
    File.delete(*Dir.glob("#{rice_embed}/**/Makefile"))
  end

  src_paths.push("#{rice_subdir}/rice", "#{rice_subdir}/rice/detail")

  $INCFLAGS << " -I#{__dir__}/#{rice_subdir}"

  if RbConfig::CONFIG['target_os'] =~ /mingw32|mswin/
    # workaround for 'w64-mingw32-as: express_parser.o: too many sections'
    $CXXFLAGS << " -O3 -Wa,-mbig-obj"
    # workaround for LoadError: 127: The specified procedure could not be found.
    $DLDFLAGS << " -static -static-libgcc -static-libstdc++"
  end
else
  require 'mkmf-rice'

  dir_config(extension_name)
end

$CPPFLAGS << " -std=c++14 -DANTLR4CPP_STATIC -DHAVE_CXX11"
$INCFLAGS << " -I#{__dir__}/#{antlr4_src}"
$srcs = []

src_paths.each do |src_path|
  abs_src_path = File.join(__dir__, src_path)
  $VPATH << abs_src_path
  $srcs.push(*Dir["#{abs_src_path}/*.cpp"])
end

create_makefile "expressir/express_exp/#{extension_name}"

Version data entries

6 entries across 6 versions & 1 rubygems

Version Path
expressir-0.2.27 ext/express-parser/extconf.rb
expressir-0.2.26 ext/express-parser/extconf.rb
expressir-0.2.25 ext/express-parser/extconf.rb
expressir-0.2.24 ext/express-parser/extconf.rb
expressir-0.2.21 ext/express-parser/extconf.rb
expressir-0.2.19 ext/express-parser/extconf.rb