Sha256: 2f5c17af35d89ed19fbe5eb02feb0da3c31479b42cb71687a063b7876dbc71c7

Contents?: true

Size: 1.61 KB

Versions: 1

Compression:

Stored size: 1.61 KB

Contents

require 'mkmf'
require 'set'

ROOT = File.join(__dir__, '..')

def with_success(&block)
    state = [ $CFLAGS, $LDFLAGS, $libs ]
    block.call.tap {|success|
        $CFLAGS, $LDFLAGS, $libs = state unless success
    }
end


build = Set[]

cmake = find_executable('cmake')

unless pkg_config('libchdr').tap {|found|
           puts "found pkg-config for libchdr" if found
       } ||
       with_success do
           find_library('chdr', 'chd_open') & find_header('libchdr/chd.h')
       end

    $CFLAGS += " -I " + File.join(ROOT, 'libchdr', 'include')

    $libs += [ 'deps/zlib-1.2.11/libzlib.a',
               'deps/lzma-19.00/liblzma.a',
               'CMakeFiles/chdr.dir/src/libchdr_chd.c.o',
               'CMakeFiles/chdr.dir/src/libchdr_flac.c.o',
               'CMakeFiles/chdr.dir/src/libchdr_bitstream.c.o',
               'CMakeFiles/chdr.dir/src/libchdr_huffman.c.o',
               'CMakeFiles/chdr.dir/src/libchdr_cdrom.c.o',
             ].map {|l|
        ' ' + File.join(ROOT, 'build', l)
    }.join

#    $libs   += [ 'libchdr-static.a', 'liblzma.a', 'libzlib.a' ].map {|l|
#        ' ' + File.join(ROOT, 'stage', 'lib', l)
#    }.join(' ')

    build.add(:libchdr)
end

create_makefile('chd/core')


if build.include?(:libchdr)
    puts "Building bundled libchdr"

    Dir.chdir(ROOT) do
        unless cmake                                                    &&
               system(cmake, '-DINSTALL_STATIC_LIBS=on',
                             '-S', 'libchdr', '-B', 'build')            &&
               system(cmake, '--build',   'build')
            abort "failed building libchdr"
        end
    end
end

Version data entries

1 entries across 1 versions & 1 rubygems

Version Path
chd-0.1.1 ext/extconf.rb