1
0
Fork 0
mirror of https://github.com/ruby/ruby.git synced 2022-11-09 12:17:21 -05:00

Merge psych master

c386ecb0c2
This commit is contained in:
Hiroshi SHIBATA 2022-03-29 17:45:33 +09:00
parent 51e98eab1f
commit 8e2a2ba0f9
Notes: git 2022-03-29 19:07:39 +09:00
2 changed files with 49 additions and 34 deletions

View file

@ -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
View 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 \
#