require 'mkmf' require 'fileutils' IS_DARWIN = RUBY_PLATFORM =~ /darwin/ IS_SOLARIS = RUBY_PLATFORM =~ /solaris/ have_library('pthread') have_library('objc') if IS_DARWIN $CPPFLAGS.gsub! /-std=[^\s]+/, '' $CPPFLAGS += " -Wall" unless $CPPFLAGS.split.include? "-Wall" $CPPFLAGS += " -g" unless $CPPFLAGS.split.include? "-g" $CPPFLAGS += " -rdynamic" unless $CPPFLAGS.split.include? "-rdynamic" $CPPFLAGS += " -fPIC" unless $CPPFLAGS.split.include? "-rdynamic" or IS_DARWIN $CPPFLAGS += " -std=c++0x" $CPPFLAGS += " -fpermissive" $CPPFLAGS += " -fno-omit-frame-pointer" if enable_config('avx2') $CPPFLAGS += " -mavx2" else $CPPFLAGS += " -mssse3" end $CPPFLAGS += " -Wno-reserved-user-defined-literal" if IS_DARWIN $LDFLAGS.insert(0, " -stdlib=libc++ ") if IS_DARWIN if ENV['CXX'] puts "SETTING CXX" CONFIG['CXX'] = ENV['CXX'] end CXX11_TEST = < true "LD_LIBRARY_PATH='#{File.expand_path('gemdir')}:#{ENV['LD_LIBRARY_PATH']}'" end def libv8_gem_name return "libv8-solaris" if IS_SOLARIS is_musl = false begin is_musl = !!(File.read('/proc/self/maps') =~ /ld-musl-x86_64/) rescue; end is_musl ? 'libv8-alpine' : 'libv8' end # 1) old rubygem versions prefer source gems to binary ones # ... and their --platform switch is broken too, as it leaves the 'ruby' # platform in Gem.platforms. # 2) the ruby binaries distributed with alpine (platform ending in -musl) # refuse to load binary gems by default def force_platform_gem gem_version = `gem --version` return 'gem' unless $?.success? if RUBY_PLATFORM != 'x86_64-linux-musl' return 'gem' if gem_version.to_f.zero? || gem_version.to_f >= 2.3 return 'gem' if RUBY_PLATFORM != 'x86_64-linux' end gem_binary = `which gem` return 'gem' unless $?.success? ruby = File.foreach(gem_binary.strip).first.sub(/^#!/, '').strip unless File.file? ruby warn "No valid ruby: #{ruby}" return 'gem' end require 'tempfile' file = Tempfile.new('sq_mini_racer') file << <