Sha256: d23f20c2410f31e02adf119855bdd910847e886d60715f4a7ad8e6d362934bcc

Contents?: true

Size: 1.75 KB

Versions: 3

Compression:

Stored size: 1.75 KB

Contents

#!/usr/bin/env ruby

require 'mkmf'
require 'fileutils'

include RbConfig
include FileUtils

ZSTD_VERSION = '1.3.8'
ZLIB_VERSION = '1.2.11'
RB_VERSION = CONFIG['MAJOR']+'.'+CONFIG['MINOR']
ZMOD_VERSION = RB_VERSION >= '2.3' ? '2.6' : RB_VERSION # Review requirements with every new zlib module release!

root = File.dirname(__FILE__)

zmod = File.expand_path "ruby/zlib-#{ZMOD_VERSION}", root
zlib = File.expand_path "zlib-#{ZLIB_VERSION}", root
zstd = File.expand_path "zstd-#{ZSTD_VERSION}/lib", root
zlibwrapper = File.expand_path "zstd-#{ZSTD_VERSION}/zlibWrapper", root

File.open('zstdlib.c', 'w') do |file|
  file << %~\n#include <zstd.h>\n~
  file << File.read("#{zmod}/zlib.c").
    gsub(%~Init_zlib~, %~Init_zstdlib~).
    gsub(/"([Zz])lib"/, '"\1stdlib"').
    gsub(/Zlib(\.|::)/, 'Zstdlib\1').
    gsub(%~<zlib.h>~, %~<zstd_zlibwrapper.h>~).
    gsub(%~Z_DEFAULT_COMPRESSION~, %~ZSTD_CLEVEL_DEFAULT~).
    gsub(%~Z_BEST_COMPRESSION~, %~ZSTD_maxCLevel()~)
  file << %~\n/* Ruby: #{RB_VERSION} Zlib: #{ZMOD_VERSION} */\n~
end

$srcs = ['zstdlib.c']

$CFLAGS += ' -fomit-frame-pointer -ffast-math -O3'
$CPPFLAGS += " -I#{zlib} -I#{zlibwrapper} -I#{zstd} -DZWRAP_USE_ZSTD=1 -DGZIP_SUPPORT=0"
$LDFLAGS += ' -s'
$LOCAL_LIBS += ' libzlibwrapper.a libz.a libzstd.a'

create_makefile('zstdlib')

File.open('Makefile', 'a') do |file|
file << %~

export CC AR CFLAGS CPPFLAGS

$(DLLIB) : libz.a libzstd.a libzlibwrapper.a

libzstd.a :
\texport SRCDIR=#{zstd} && mkdir -p zstd && $(MAKE) -C zstd -f #{File.expand_path root}/zstd.mk

libz.a :
\texport SRCDIR=#{zlib} && mkdir -p zlib && $(MAKE) -C zlib -f #{File.expand_path root}/zlib.mk

libzlibwrapper.a :
\texport SRCDIR=#{zlibwrapper} && mkdir -p zlibwrapper && $(MAKE) -C zlibwrapper -f #{File.expand_path root}/zlibwrapper.mk

~
end

Version data entries

3 entries across 3 versions & 1 rubygems

Version Path
zstdlib-0.1.1-x86-mingw32 ext/zstdlib/extconf.rb
zstdlib-0.1.1-x64-mingw32 ext/zstdlib/extconf.rb
zstdlib-0.1.1 ext/zstdlib/extconf.rb