summaryrefslogtreecommitdiff
path: root/ext/fiddle
diff options
context:
space:
mode:
Diffstat (limited to 'ext/fiddle')
-rw-r--r--ext/fiddle/depend17
-rw-r--r--ext/fiddle/extconf.rb6
2 files changed, 21 insertions, 2 deletions
diff --git a/ext/fiddle/depend b/ext/fiddle/depend
index 89623db708..6b59b31804 100644
--- a/ext/fiddle/depend
+++ b/ext/fiddle/depend
@@ -25,4 +25,21 @@ build-libffi: $(LIBFFI_A)
build-libffi $(LIBFFI_A):
$(Q) $(SUBMAKE_LIBFFI)
+clean-libffi:
+ $(Q) $(SUBMAKE_LIBFFI) clean
+
+distclean-libffi:
+ $(Q) $(SUBMAKE_LIBFFI) distclean
+ $(Q) $(RM) $(LIBFFI_DIR)/local.exp
+ $(Q) $(RUBY) -rfileutils -e 'FileUtils.rmdir(Dir.glob(ARGV[0]+"/**/"), :parents=>true)' $(LIBFFI_DIR)
+
+realclean-libffi:
+ $(Q) $(RMDIRS) $(LIBFFI_DIR)
+
+clean-none distclean-none realclean-none:
+
+clean: clean-$(LIBFFI_CLEAN)
+distclean: distclean-$(LIBFFI_CLEAN)
+realclean: realclean-$(LIBFFI_CLEAN)
+
configure: configure-libffi
diff --git a/ext/fiddle/extconf.rb b/ext/fiddle/extconf.rb
index 6da557bc79..f5c27cc934 100644
--- a/ext/fiddle/extconf.rb
+++ b/ext/fiddle/extconf.rb
@@ -127,8 +127,9 @@ if libffi
$LOCAL_LIBS.prepend("#{libffi.a} ").strip!
end
create_makefile 'fiddle' do |conf|
- next conf unless libffi
- if $mswin
+ if !libffi
+ next conf << "LIBFFI_CLEAN = none\n"
+ elsif $mswin
submake = "make -C $(LIBFFI_DIR)\n"
elsif $gnumake
submake = "$(MAKE) -C $(LIBFFI_DIR)\n"
@@ -148,6 +149,7 @@ create_makefile 'fiddle' do |conf|
LIBFFI_LDFLAGS = #{libffi.ldflags}
FFI_H = $(LIBFFI_DIR)/include/ffi.h
SUBMAKE_LIBFFI = #{submake}
+ LIBFFI_CLEAN = libffi
MK
end