You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
80 lines
1.8 KiB
80 lines
1.8 KiB
--- a/MANIFEST.txt
|
|
+++ b/MANIFEST.txt
|
|
@@ -1,9 +1,6 @@
|
|
README.md
|
|
CHANGELOG.md
|
|
-ext/duktape/duktape.c
|
|
-ext/duktape/duktape.h
|
|
ext/duktape/duktape_ext.c
|
|
-ext/duktape/duk_config.h
|
|
ext/duktape/extconf.rb
|
|
lib/duktape/version.rb
|
|
lib/duktape.rb
|
|
--- a/ext/duktape/extconf.rb
|
|
+++ b/ext/duktape/extconf.rb
|
|
@@ -1,6 +1,64 @@
|
|
require 'mkmf'
|
|
require 'zlib'
|
|
|
|
+#
|
|
+# functions
|
|
+#
|
|
+
|
|
+def package_config pkg, options={}
|
|
+ package = pkg_config(pkg)
|
|
+ return package if package
|
|
+
|
|
+ begin
|
|
+ require 'rubygems'
|
|
+ gem 'pkg-config', (gem_ver='~> 1.1')
|
|
+ require 'pkg-config' and message("Using pkg-config gem version #{PKGConfig::VERSION}\n")
|
|
+ rescue LoadError
|
|
+ message "pkg-config could not be used to find #{pkg}\nPlease install either `pkg-config` or the pkg-config gem per\n\n gem install pkg-config -v #{gem_ver.inspect}\n\n"
|
|
+ else
|
|
+ return nil unless PKGConfig.have_package(pkg)
|
|
+
|
|
+ cflags = PKGConfig.cflags(pkg)
|
|
+ ldflags = PKGConfig.libs_only_L(pkg)
|
|
+ libs = PKGConfig.libs_only_l(pkg)
|
|
+
|
|
+ Logging::message "PKGConfig package configuration for %s\n", pkg
|
|
+ Logging::message "cflags: %s\nldflags: %s\nlibs: %s\n\n", cflags, ldflags, libs
|
|
+
|
|
+ [cflags, ldflags, libs]
|
|
+ end
|
|
+end
|
|
+
|
|
+def duktape_try_compile
|
|
+ try_compile "int main() {return 0;}", "", {werror: true}
|
|
+end
|
|
+
|
|
+def add_cflags(flags)
|
|
+ print "checking if the C compiler accepts #{flags}... "
|
|
+ with_cflags("#{$CFLAGS} #{flags}") do
|
|
+ if duktape_try_compile
|
|
+ puts 'yes'
|
|
+ true
|
|
+ else
|
|
+ puts 'no'
|
|
+ false
|
|
+ end
|
|
+ end
|
|
+end
|
|
+
|
|
+#
|
|
+# main
|
|
+#
|
|
+
|
|
+if ENV['CC']
|
|
+ RbConfig::CONFIG['CC'] = RbConfig::MAKEFILE_CONFIG['CC'] = ENV['CC']
|
|
+end
|
|
+$LIBS << " #{ENV["LIBS"]}"
|
|
+$LDFLAGS << " #{ENV["LDFLAGS"]}"
|
|
+add_cflags(ENV["CFLAGS"])
|
|
+
|
|
+package_config('duktape')
|
|
+
|
|
$CFLAGS += ' -std=c99'
|
|
have_func 'rb_sym2str'
|
|
create_makefile 'duktape_ext'
|