Skip to content

Commit 204740b

Browse files
committed
Revert "Try removing building C API specs in CRuby makefiles entirely"
This reverts commit 2a92363. spec/ruby/optional/capi/spec_helper.rb doesn't work well for mingw.
1 parent 3e47e7a commit 204740b

File tree

2 files changed

+52
-0
lines changed

2 files changed

+52
-0
lines changed

defs/gmake.mk

Lines changed: 20 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -504,6 +504,26 @@ update-deps:
504504
$(GIT) --git-dir=$(GIT_DIR) merge --no-edit --ff-only $(update_deps)
505505
$(GIT) --git-dir=$(GIT_DIR) branch --delete $(update_deps)
506506

507+
# order-only-prerequisites doesn't work for $(RUBYSPEC_CAPIEXT)
508+
# because the same named directory exists in the source tree.
509+
$(RUBYSPEC_CAPIEXT)/%.$(DLEXT): $(srcdir)/$(RUBYSPEC_CAPIEXT)/%.c $(srcdir)/$(RUBYSPEC_CAPIEXT)/rubyspec.h $(RUBY_H_INCLUDES) $(LIBRUBY)
510+
$(ECHO) building $@
511+
$(Q) $(MAKEDIRS) $(@D)
512+
$(Q) $(DLDSHARED) -L. $(XDLDFLAGS) $(XLDFLAGS) $(LDFLAGS) $(INCFLAGS) -I$(EXTOUT)/include $(CPPFLAGS) $(OUTFLAG)$@ $< $(LIBRUBYARG)
513+
ifneq ($(POSTLINK),)
514+
$(Q) $(POSTLINK)
515+
endif
516+
$(Q) $(RMALL) $@.*
517+
518+
RUBYSPEC_CAPIEXT_SO := $(patsubst %.c,$(RUBYSPEC_CAPIEXT)/%.$(DLEXT),$(notdir $(wildcard $(srcdir)/$(RUBYSPEC_CAPIEXT)/*.c)))
519+
rubyspec-capiext: $(RUBYSPEC_CAPIEXT_SO)
520+
@ $(NULLCMD)
521+
522+
ifeq ($(ENABLE_SHARED),yes)
523+
ruby: $(if $(LIBRUBY_SO_UPDATE),$(RUBYSPEC_CAPIEXT_SO))
524+
exts: rubyspec-capiext
525+
endif
526+
507527
spec/%/ spec/%_spec.rb: programs exts PHONY
508528
+$(RUNRUBY) -r./$(arch)-fake $(srcdir)/spec/mspec/bin/mspec-run -B $(srcdir)/spec/default.mspec $(SPECOPTS) $(patsubst %,$(srcdir)/%,$@)
509529

win32/Makefile.sub

Lines changed: 32 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1468,6 +1468,38 @@ loadpath: verconf.h
14681468
sed -e '1,/^const char ruby_initial_load_paths/d;/;/,$$d' \
14691469
-e '/^^ /!d;s/ *"\\\\0"$$//;s/" *"//g'
14701470

1471+
RUBYSPEC_CAPIEXT_SRCDIR = $(srcdir)/$(RUBYSPEC_CAPIEXT)
1472+
RUBYSPEC_CAPIEXT_DEPS = $(RUBYSPEC_CAPIEXT_SRCDIR)/rubyspec.h $(RUBY_H_INCLUDES) $(LIBRUBY)
1473+
RUBYSPEC_CAPIEXT_EXTS =
1474+
1475+
!if [echo>rubyspec-capiext.mk RUBYSPEC_CAPIEXT_EXTS = \]
1476+
!else if [for %I in ($(RUBYSPEC_CAPIEXT_SRCDIR)\*_spec.c) do \
1477+
@echo. $$(RUBYSPEC_CAPIEXT)/%~nI.so \>>rubyspec-capiext.mk]
1478+
!else if [echo. $$(empty)>>rubyspec-capiext.mk]
1479+
!else
1480+
! include rubyspec-capiext.mk
1481+
! if [del rubyspec-capiext.mk > nul]
1482+
! endif
1483+
!endif
1484+
1485+
$(RUBYSPEC_CAPIEXT_EXTS): $(RUBYSPEC_CAPIEXT_DEPS)
1486+
rubyspec-capiext: $(RUBYSPEC_CAPIEXT_EXTS)
1487+
@ $(NULLCMD)
1488+
1489+
{$(RUBYSPEC_CAPIEXT_SRCDIR)}.c{$(RUBYSPEC_CAPIEXT)}.so:
1490+
$(ECHO) building $(@F)
1491+
$(Q)$(MAKEDIRS) $(@D)
1492+
$(Q)(echo EXPORTS&&echo Init_$(*F))> $*.def
1493+
$(Q)$(LDSHARED) -Fe$(@) -Fo$(*).obj $(INCFLAGS) $(CFLAGS) $(CPPFLAGS) $< $(LIBRUBYARG) -link $(DLDFLAGS) $(XLDFLAGS) $(LIBS) $(LOCAL_LIBS) -implib:$*.lib -pdb:$*.pdb -def:$*.def
1494+
!if defined(LDSHARED_0)
1495+
$(Q)$(LDSHARED_0)
1496+
$(Q)$(LDSHARED_1)
1497+
$(Q)$(LDSHARED_2)
1498+
!endif
1499+
$(Q)$(RM) $*.def $*.exp $*.lib $*.obj $*.pdb
1500+
1501+
exts: rubyspec-capiext
1502+
14711503
yesterday:
14721504
for /f "usebackq" %H in \
14731505
(`$(GIT) -C $(srcdir) log -1 "--before=00:00+0900" "--format=%H"`) do \

0 commit comments

Comments
 (0)