mirror of
https://github.com/ruby/ruby.git
synced 2022-11-09 12:17:21 -05:00
parent
51e98eab1f
commit
8e2a2ba0f9
Notes:
git
2022-03-29 19:07:39 +09:00
2 changed files with 49 additions and 34 deletions
|
@ -1,48 +1,56 @@
|
|||
# -*- coding: us-ascii -*-
|
||||
# frozen_string_literal: true
|
||||
require 'mkmf'
|
||||
require 'fileutils'
|
||||
|
||||
# :stopdoc:
|
||||
if $mswin or $mingw or $cygwin
|
||||
$CPPFLAGS << " -DYAML_DECLARE_STATIC"
|
||||
end
|
||||
|
||||
dir_config 'libyaml'
|
||||
|
||||
if enable_config("bundled-libyaml", false) || !pkg_config('yaml-0.1') && !(find_header('yaml.h') && find_library('yaml', 'yaml_get_version'))
|
||||
# Embed libyaml since we could not find it.
|
||||
|
||||
unless File.exist?("#{$srcdir}/yaml")
|
||||
puts "failed to build psych because no libyaml is available"
|
||||
exit
|
||||
yaml_source = with_config("libyaml-source-dir") || enable_config("bundled-libyaml", false)
|
||||
if yaml_source == true
|
||||
yaml_source = Dir.glob("#{$srcdir}/yaml{,-*}/").max_by {|n| File.basename(n).scan(/\d+/).map(&:to_i)}
|
||||
unless yaml_source
|
||||
require_relative '../../tool/extlibs.rb'
|
||||
extlibs = ExtLibs.new(cache_dir: File.expand_path("../../tmp/download_cache", $srcdir))
|
||||
unless extlibs.process_under($srcdir)
|
||||
raise "failed to download libyaml source"
|
||||
end
|
||||
yaml_source, = Dir.glob("#{$srcdir}/yaml-*/")
|
||||
end
|
||||
elsif yaml_source
|
||||
yaml_source = yaml_source.gsub(/\$\((\w+)\)|\$\{(\w+)\}/) {ENV[$1||$2]}
|
||||
end
|
||||
if yaml_source
|
||||
yaml_configure = "#{File.expand_path(yaml_source)}/configure"
|
||||
unless File.exist?(yaml_configure)
|
||||
raise "Configure script not found in #{yaml_source.quote}"
|
||||
end
|
||||
|
||||
$VPATH << "$(srcdir)/yaml"
|
||||
$INCFLAGS << " -I$(srcdir)/yaml"
|
||||
|
||||
$srcs = Dir.glob("#{$srcdir}/{,yaml/}*.c").map {|n| File.basename(n)}.sort
|
||||
|
||||
header = 'yaml/yaml.h'
|
||||
header = "{$(VPATH)}#{header}" if $nmake
|
||||
if have_macro("_WIN32")
|
||||
$CPPFLAGS << " -DYAML_DECLARE_STATIC -DHAVE_CONFIG_H"
|
||||
puts("Configuring libyaml source in #{yaml_source.quote}")
|
||||
yaml = "libyaml"
|
||||
Dir.mkdir(yaml) unless File.directory?(yaml)
|
||||
unless system(yaml_configure, "-q",
|
||||
"--enable-#{$enable_shared || !$static ? 'shared' : 'static'}",
|
||||
*(["CFLAGS=-w"] if RbConfig::CONFIG["GCC"] == "yes"),
|
||||
chdir: yaml)
|
||||
raise "failed to configure libyaml"
|
||||
end
|
||||
Logging.message("libyaml configured\n")
|
||||
inc = yaml_source.start_with?("#$srcdir/") ? "$(srcdir)#{yaml_source[$srcdir.size..-1]}" : yaml_source
|
||||
$INCFLAGS << " -I#{yaml}/include -I#{inc}/include"
|
||||
Logging.message("INCLFAG=#$INCLFAG\n")
|
||||
libyaml = "#{yaml}/src/.libs/libyaml.#$LIBEXT"
|
||||
$LOCAL_LIBS.prepend("$(LIBYAML) ")
|
||||
else
|
||||
pkg_config('yaml-0.1')
|
||||
dir_config('libyaml')
|
||||
unless find_header('yaml.h') && find_library('yaml', 'yaml_get_version')
|
||||
raise "libyaml not found"
|
||||
end
|
||||
|
||||
have_header 'dlfcn.h'
|
||||
have_header 'inttypes.h'
|
||||
have_header 'memory.h'
|
||||
have_header 'stdint.h'
|
||||
have_header 'stdlib.h'
|
||||
have_header 'strings.h'
|
||||
have_header 'string.h'
|
||||
have_header 'sys/stat.h'
|
||||
have_header 'sys/types.h'
|
||||
have_header 'unistd.h'
|
||||
|
||||
find_header 'yaml.h'
|
||||
have_header 'config.h'
|
||||
end
|
||||
|
||||
create_makefile 'psych' do |mk|
|
||||
mk << "YAML_H = #{header}".strip << "\n"
|
||||
mk << "LIBYAML = #{libyaml}".strip << "\n"
|
||||
end
|
||||
|
||||
# :startdoc:
|
||||
|
|
7
ext/psych/extlibs
Normal file
7
ext/psych/extlibs
Normal file
|
@ -0,0 +1,7 @@
|
|||
ver = 0.2.5
|
||||
|
||||
https://github.com/yaml/libyaml/releases/download/$(ver)/yaml-$(ver).tar.gz \
|
||||
rmd160:cc175ed640046722fb7790de828002633407b6b9 \
|
||||
sha256:c642ae9b75fee120b2d96c712538bd2cf283228d2337df2cf2988e3c02678ef4 \
|
||||
sha512:dadd7d8e0d88b5ebab005e5d521d56d541580198aa497370966b98c904586e642a1cd4f3881094eb57624f218d50db77417bbfd0ffdce50340f011e35e8c4c02 \
|
||||
#
|
Loading…
Add table
Reference in a new issue