summaryrefslogtreecommitdiff
path: root/win32/Makefile.sub
diff options
context:
space:
mode:
authorNobuyoshi Nakada <nobu@ruby-lang.org>2023-04-21 15:34:01 +0900
committerNobuyoshi Nakada <nobu@ruby-lang.org>2023-04-21 21:28:08 +0900
commit39bbbd767d6465080c6e1d6ba0da98c2762eedc6 (patch)
tree300db6663b831a13465bcdac774e84ee2acc5892 /win32/Makefile.sub
parent94a418d0bb6c1740801c9fd5a646a2683c5f8260 (diff)
Add rubyspec-capiext on mswin
Diffstat (limited to 'win32/Makefile.sub')
-rw-r--r--win32/Makefile.sub30
1 files changed, 30 insertions, 0 deletions
diff --git a/win32/Makefile.sub b/win32/Makefile.sub
index ea3b50c4ea..15e821cf43 100644
--- a/win32/Makefile.sub
+++ b/win32/Makefile.sub
@@ -1377,3 +1377,33 @@ loadpath: verconf.h
@$(CPP) $(XCFLAGS) $(CPPFLAGS) $(srcdir)/loadpath.c | \
sed -e '1,/^const char ruby_initial_load_paths/d;/;/,$$d' \
-e '/^^ /!d;s/ *"\\\\0"$$//;s/" *"//g'
+
+RUBYSPEC_CAPIEXT_SRCDIR = $(srcdir)/$(RUBYSPEC_CAPIEXT)
+RUBYSPEC_CAPIEXT_DEPS = $(RUBYSPEC_CAPIEXT_SRCDIR)/rubyspec.h $(RUBY_H_INCLUDES) $(LIBRUBY)
+RUBYSPEC_CAPIEXT_EXTS =
+
+!if [echo>rubyspec-capiext.mk RUBYSPEC_CAPIEXT_EXTS = \]
+!else if [for %I in ($(RUBYSPEC_CAPIEXT_SRCDIR)\*_spec.c) do \
+ @echo. $$(RUBYSPEC_CAPIEXT)/%~nI.so \>>rubyspec-capiext.mk]
+!else if [echo. $$(empty)>>rubyspec-capiext.mk]
+!else
+! include rubyspec-capiext.mk
+! if [del rubyspec-capiext.mk > nul]
+! endif
+!endif
+
+$(RUBYSPEC_CAPIEXT_EXTS): $(RUBYSPEC_CAPIEXT_DEPS)
+rubyspec-capiext: $(RUBYSPEC_CAPIEXT_EXTS)
+ @ $(NULLCMD)
+
+{$(RUBYSPEC_CAPIEXT_SRCDIR)}.c{$(RUBYSPEC_CAPIEXT)}.so:
+ $(ECHO) building $(@F)
+ $(Q)$(MAKEDIRS) $(@D)
+ $(Q)echo> $*.def EXPORTS
+ $(Q)echo>> $*.def Init_$(*F)
+ $(Q)$(LDSHARED) -Fe$(@) $(INCFLAGS) $(CFLAGS) $(CPPFLAGS) $< $(LIBRUBYARG) -link $(DLDFLAGS) $(LIBS) $(LOCAL_LIBS) -implib:$*.lib -pdb:$*.pdb -def:$*.def
+ $(Q)$(LDSHARED_0)
+ $(Q)$(LDSHARED_1)
+ $(Q)$(LDSHARED_2)
+
+exts: rubyspec-capiext