[#7055] More on VC++ 2005 — Austin Ziegler <halostatue@...>

Okay. I've got Ruby compiling. I'm attempting to get everything in

17 messages 2006/01/05
[#7058] Re: More on VC++ 2005 — nobuyoshi nakada <nobuyoshi.nakada@...> 2006/01/06

Hi,

[#7084] mathn: ugly warnings — hadmut@... (Hadmut Danisch)

Hi,

22 messages 2006/01/10
[#7097] Re: mathn: ugly warnings — Daniel Berger <Daniel.Berger@...> 2006/01/10

Hadmut Danisch wrote:

[#7098] Design contracts and refactoring (was Re: mathn: ugly warnings) — mathew <meta@...> 2006/01/10

Daniel Berger wrote:

[#7118] Re: Design contracts and refactoring (was Re: mathn: ugly warnings) — mathew <meta@...> 2006/01/12

*Dean Wampler *<deanwampler gmail.com> writes:

[#7226] Fwd: Re: Question about massive API changes — "Sean E. Russell" <ser@...>

Hello,

23 messages 2006/01/28
[#7228] Re: Question about massive API changes — Caleb Tennis <caleb@...> 2006/01/28

>

Re: More on VC++ 2005

From: nobuyoshi nakada <nobuyoshi.nakada@...>
Date: 2006-01-10 09:09:26 UTC
List: ruby-core #7094
Hi,
At Tue, 10 Jan 2006 10:25:35 +0900,
Austin Ziegler wrote in [ruby-core:07086]:
> > > It would be *nice* to be able to have the manifest stuff automatically
> > > applied to the .so files as well, just in case, but since they depend
> > > on Ruby or the msvcr80-ruby18.dll (which *does* have the manifest
> > > applied), that should be good enough. It's probably worth documenting
> > > somewhere, though.
> > Documentation for what, to whom, and how?
> 
> Mmmm. I think embedders who want to use VS2005 or later to compile
> Ruby and their programs.

Still I'm not sure what to be documented.  .manifest files won't
created?  According to [ruby-core:07064], it doesn't seem important
for DLLs

And I believe that a developer who want to compile an applications
with VS2005 should of course know about .manifest, regardless
embedding ruby.


Index: mkconfig.rb
===================================================================
RCS file: /cvs/ruby/src/ruby/mkconfig.rb,v
retrieving revision 1.42
diff -U2 -p -r1.42 mkconfig.rb
--- mkconfig.rb	10 Nov 2005 23:21:52 -0000	1.42
+++ mkconfig.rb	10 Jan 2006 07:19:00 -0000
@@ -42,7 +42,8 @@ File.foreach "config.status" do |line|
     ptn = $1.sub(/\$\$/, '$').split(/,/)	#'
     v_fast << "  CONFIG[\"ruby_install_name\"] = \"" + "ruby".sub(/#{ptn[0]}/,ptn[1]) + "\"\n"
-  elsif /^s[%,]@(\w+)@[%,](.*)[%,]/ =~ line
-    name = $1
-    val = $2 || ""
+  elsif /^s([%,])@(\w+)@\1(.*)\1/ =~ line
+    extend = $1
+    name = $2
+    val = $3 || ""
     next if /^(?:ac_.*|DEFS|configure_input)$/ =~ name
     next if /^\$\(ac_\w+\)$/ =~ val
@@ -52,6 +53,7 @@ File.foreach "config.status" do |line|
     next if $so_name and /^RUBY_SO_NAME$/ =~  name
     val.gsub!(/ +(?!-)/, "=") if name == "configure_args" && /mswin32/ =~ RUBY_PLATFORM
-    v = "  CONFIG[\"" + name + "\"] = " +
-      val.gsub(/\$(?:\$|\{?(\w+)\}?)/) {$1 ? "$(#{$1})" : $&}.dump + "\n"
+    val.gsub!(/\$(?:\$|\{?(\w+)\}?)/) {$1 ? "$(#{$1})" : $&}
+    val = /%/ =~ extend ? "\"#{val}\"" : val.dump
+    v = "  CONFIG[\"#{name}\"] = #{val}\n"
     if fast[name]
       v_fast << v
Index: lib/mkmf.rb
===================================================================
RCS file: /cvs/ruby/src/ruby/lib/mkmf.rb,v
retrieving revision 1.234
diff -U2 -p -r1.234 mkmf.rb
--- lib/mkmf.rb	28 Nov 2005 00:20:32 -0000	1.234
+++ lib/mkmf.rb	10 Jan 2006 08:00:14 -0000
@@ -996,4 +996,9 @@ preload = #{$preload.join(" ") if $prelo
     end
   end
+  config_string('SYSDEP_CONFS') do |s|
+    for x in s.split
+      config_string(x) {|s| mk << "#{x} = #{s}\n"}
+    end
+  end
   mk
 end
@@ -1182,12 +1187,12 @@ site-install-rb: install-rb
 
   mfile.print "$(RUBYARCHDIR)/" if $extout
-  mfile.print "$(DLLIB): ", (makedef ? "$(DEFFILE) " : ""), "$(OBJS)\n\t"
-  mfile.print "@-$(RM) $@\n\t"
-  mfile.print "@-$(MAKEDIRS) $(@D)\n\t" if $extout
+  mfile.print "$(DLLIB): ", (makedef ? "$(DEFFILE) " : ""), "$(OBJS)\n"
+  mfile.print "\t@-$(RM) $@\n"
+  mfile.print "\t@-$(MAKEDIRS) $(@D)\n" if $extout
   link_so = LINK_SO
   if srcs.any?(&%r"\.(?:#{CXX_EXT.join('|')})\z".method(:===))
     link_so = link_so.sub(/\bLDSHARED\b/, '\&XX')
   end
-  mfile.print link_so, "\n\n"
+  mfile.print link_so.gsub(/^\s*/, "\t"), "\n\n"
   unless $static.nil?
     mfile.print "$(STATIC_LIB): $(OBJS)\n\t"
Index: win32/Makefile.sub
===================================================================
RCS file: /cvs/ruby/src/ruby/win32/Makefile.sub,v
retrieving revision 1.107
diff -U2 -p -r1.107 Makefile.sub
--- win32/Makefile.sub	9 Jan 2006 05:26:58 -0000	1.107
+++ win32/Makefile.sub	10 Jan 2006 08:06:44 -0000
@@ -130,5 +130,8 @@ CXXFLAGS = $(CFLAGS)
 !endif
 !if !defined(LDFLAGS)
-LDFLAGS = -link -incremental:no -debug -opt:ref -opt:icf
+LDFLAGS = -link -incremental:no -opt:ref -opt:icf
+!if $(MSC_VER) < 1400
+LDFLAGS = $(LDFLAGS) -debug
+!endif
 !endif
 !if !defined(XLDFLAGS)
@@ -148,4 +151,5 @@ CC = $(CC) -nologo
 LD = $(CC)
 LDSHARED = $(LD) -LD
+LINK_SO = $$(LDSHARED) -Fe$$(@) $$(OBJS) $$(LIBS) $$(LOCAL_LIBS) $$(DLDFLAGS)
 XCFLAGS = -DRUBY_EXPORT -I. -I$(srcdir) -I$(srcdir)/missing
 !if $(MSC_VER) >= 1400
@@ -157,4 +161,12 @@ DLDFLAGS = $(LDFLAGS) -dll
 SOLIBS = 
 
+!if $(MSC_VER) >= 1400
+MANIFESTTOOL = mt -nologo
+EMBED_MANIFEST_EXE = $(MANIFESTTOOL) -manifest $@.manifest -outputresource:$@;1
+EMBED_MANIFEST_DLL = $(MANIFESTTOOL) -manifest $@.manifest -outputresource:$@;2
+LINK_SO = $(LINK_SO)\n$$(EMBED_MANIFEST_DLL)\n@$$(RM) $$(@).manifest
+sysdep_confs = $(sysdep_confs) MANIFESTTOOL EMBED_MANIFEST_EXE EMBED_MANIFEST_DLL
+!endif
+
 LIBRUBY_LDSHARED = $(LDSHARED)
 LIBRUBY_DLDFLAGS = $(EXTLDFLAGS) -def:$(RUBYDEF)
@@ -214,5 +226,5 @@ $(CONFIG_H): $(MKFILES) $(srcdir)/win32/
 	@$(srcdir:/=\)\win32\ifchange.bat config.h <<
 #if _MSC_VER != $(MSC_VER)
-#error MSC version unmatch
+#error MSC version unmatch: configured for $(MSC_VER)
 #endif
 #define STDC_HEADERS 1
@@ -429,5 +441,12 @@ s,@LIBPATHFLAG@, -libpath:"%s",;t t
 s,@RPATHFLAG@,,;t t
 s,@LIBARG@,%s.lib,;t t
-s,@LINK_SO@,$$(LDSHARED) -Fe$$(@) $$(OBJS) $$(LIBS) $$(LOCAL_LIBS) $$(DLDFLAGS),;t t
+!if defined(EMBED_MANIFEST_DLL)
+s,@MANIFESTTOOL@,$(MANIFESTTOOL),;t t
+s,@EMBED_MANIFEST_EXE@,$$(MANIFESTTOOL) -manifest $$(@).manifest -outputresource:$$(@);1,;t t
+s,@EMBED_MANIFEST_DLL@,$$(MANIFESTTOOL) -manifest $$(@).manifest -outputresource:$$(@);2,;t t
+s%@LINK_SO@%$(LINK_SO:$@=$$@)%;t t
+!else
+s,@LINK_SO@,$(LINK_SO),;t t
+!endif
 s,@COMPILE_C@,$$(CC) $$(CFLAGS) $$(CPPFLAGS) -c -Tc$$(<:\=/),;t t
 s,@COMPILE_CXX@,$$(CXX) $$(CXXFLAGS) $$(CPPFLAGS) -c -Tp$$(<:\=/),;t t
@@ -447,4 +466,5 @@ s,@configure_input@,$$configure_input,;t
 s,@srcdir@,$(srcdir),;t t
 s,@top_srcdir@,$(srcdir),;t t
+s,@SYSDEP_CONFS@,$(sysdep_confs),;t t
 <<KEEP
 
@@ -452,8 +472,10 @@ miniruby$(EXEEXT):
 		@echo. $(LIBS)
 		$(PURIFY) $(CC) $(MAINOBJ) $(MINIOBJS) $(LIBRUBY_A) $(LIBS) -Fe$@ $(LDFLAGS)
+		$(EMBED_MANIFEST_EXE)
 
 $(PROGRAM):	$(LIBRUBY_SO) $(RUBY_INSTALL_NAME).res
 		$(PURIFY) $(CC) $(MAINOBJ) $(RUBY_INSTALL_NAME).res \
 			$(OUTFLAG)$@ $(LIBRUBYARG) $(LDFLAGS) $(XLDFLAGS)
+		$(EMBED_MANIFEST_EXE)
 
 $(WPROGRAM):	$(MAINOBJ) $(WINMAINOBJ) $(LIBRUBY_SO) $(RUBYW_INSTALL_NAME).res
@@ -461,4 +483,5 @@ $(WPROGRAM):	$(MAINOBJ) $(WINMAINOBJ) $(
 			$(RUBYW_INSTALL_NAME).res $(OUTFLAG)$@ $(LIBRUBYARG) \
 			$(LDFLAGS) $(XLDFLAGS) -subsystem:Windows
+		$(EMBED_MANIFEST_EXE)
 
 $(LIBRUBY_A):	$(OBJS) $(DMYEXT)
@@ -473,4 +496,5 @@ $(LIBRUBY_SO):	$(LIBRUBY_A) $(DLDOBJS) $
 			$(RUBY_SO_NAME).res $(LIBS) -Fe$@ $(LDFLAGS) \
 			$(LIBRUBY_DLDFLAGS)
+		$(EMBED_MANIFEST_DLL)
 
 $(RUBYDEF):	$(LIBRUBY_A) $(PREP)


-- 
Nobu Nakada

In This Thread