diff options
Diffstat (limited to 'ext/psych/extconf.rb')
-rw-r--r-- | ext/psych/extconf.rb | 41 |
1 files changed, 8 insertions, 33 deletions
diff --git a/ext/psych/extconf.rb b/ext/psych/extconf.rb index 6d03870436..e7dd0bb60a 100644 --- a/ext/psych/extconf.rb +++ b/ext/psych/extconf.rb @@ -6,39 +6,9 @@ if $mswin or $mingw or $cygwin $CPPFLAGS << " -DYAML_DECLARE_STATIC" end -yaml_source = with_config("libyaml-source-dir") || enable_config("bundled-libyaml", false) -unless yaml_source # default to pre-installed libyaml - pkg_config('yaml-0.1') - dir_config('libyaml') - unless find_header('yaml.h') && find_library('yaml', 'yaml_get_version') - yaml_source = true # fallback to the bundled source if exists - end -end - -if yaml_source == true - # search the latest libyaml source under $srcdir - yaml_source = Dir.glob("#{$srcdir}/yaml{,-*}/").max_by {|n| File.basename(n).scan(/\d+/).map(&:to_i)} - unless yaml_source - download_failure = "failed to download libyaml source. Try manually installing libyaml?" - begin - require_relative '../../tool/extlibs.rb' - rescue LoadError - # When running in ruby/ruby, we use miniruby and don't have stdlib. - # Avoid LoadError because it aborts the whole build. Usually when - # stdlib extension fail to configure we skip it and continue. - raise download_failure - end - extlibs = ExtLibs.new(cache_dir: File.expand_path("../../tmp/download_cache", $srcdir)) - unless extlibs.process_under($srcdir) - raise download_failure - end - yaml_source, = Dir.glob("#{$srcdir}/yaml-*/") - raise "libyaml not found" unless yaml_source - end -elsif yaml_source - yaml_source = yaml_source.gsub(/\$\((\w+)\)|\$\{(\w+)\}/) {ENV[$1||$2]} -end +yaml_source = with_config("libyaml-source-dir") if yaml_source + yaml_source = yaml_source.gsub(/\$\((\w+)\)|\$\{(\w+)\}/) {ENV[$1||$2]} yaml_source = yaml_source.chomp("/") yaml_configure = "#{File.expand_path(yaml_source)}/configure" unless File.exist?(yaml_configure) @@ -52,7 +22,7 @@ if yaml_source args = [ yaml_configure, "--enable-#{shared ? 'shared' : 'static'}", - "--host=#{RbConfig::CONFIG['host'].sub(/-unknown-/, '-')}", + "--host=#{RbConfig::CONFIG['host'].sub(/-unknown-/, '-').sub(/arm64/, 'arm')}", "CC=#{RbConfig::CONFIG['CC']}", *(["CFLAGS=-w"] if RbConfig::CONFIG["GCC"] == "yes"), ] @@ -66,6 +36,11 @@ if yaml_source libyaml = "libyaml.#$LIBEXT" $cleanfiles << libyaml $LOCAL_LIBS.prepend("$(LIBYAML) ") +else # default to pre-installed libyaml + pkg_config('yaml-0.1') + dir_config('libyaml') + find_header('yaml.h') or abort "yaml.h not found" + find_library('yaml', 'yaml_get_version') or abort "libyaml not found" end create_makefile 'psych' do |mk| |