diff options
Diffstat (limited to 'ext/dbm/extconf.rb')
-rw-r--r-- | ext/dbm/extconf.rb | 16 |
1 files changed, 12 insertions, 4 deletions
diff --git a/ext/dbm/extconf.rb b/ext/dbm/extconf.rb index be4d030402..419ea65163 100644 --- a/ext/dbm/extconf.rb +++ b/ext/dbm/extconf.rb @@ -21,7 +21,10 @@ headers = { "qdbm" => ["relic.h", "qdbm/relic.h"], } -$dbm_headers = [] +class << headers + attr_accessor :found +end +headers.found = [] def headers.db_check(db) db_prefix = nil @@ -46,7 +49,7 @@ def headers.db_check(db) have_func(db_prefix+"dbm_clearerr") unless have_gdbm $defs << hsearch if hsearch $defs << '-DDBM_HDR="<'+hdr+'>"' - $dbm_headers << hdr + @found << hdr true else false @@ -56,7 +59,12 @@ end if dblib.any? {|db| headers.db_check(db)} have_header("cdefs.h") have_header("sys/cdefs.h") - have_func("dbm_pagfno", $dbm_headers) - have_func("dbm_dirfno", $dbm_headers) + have_func("dbm_pagfno", headers.found) + have_func("dbm_dirfno", headers.found) + if try_static_assert("sizeof(conftest_key.dsize) <= sizeof(int)", [[cpp_include(headers.found), "static datum conftest_key;"]]) + $defs << "-DSIZEOF_DSIZE=SIZEOF_INT" + else + $defs << "-DSIZEOF_DSIZE=SIZEOF_LONG" + end create_makefile("dbm") end |