fix variable name.
[ruby-svn.git] / win32 / resource.rb
blob40886cb5e5bf97e25ec8b1d6ab93173c5c6c6951
1 #!./miniruby -sI.
3 require 'rbconfig'
5 CONFIG = RbConfig::MAKEFILE_CONFIG
7 version = %w'MAJOR MINOR TEENY PATCHLEVEL'.map{|v| CONFIG[v] || '0'}
8 nversion = version.join(',')
9 sversion = version.join('.')
11 $ruby_name ||= CONFIG["RUBY_INSTALL_NAME"]
12 $rubyw_name ||= CONFIG["RUBYW_INSTALL_NAME"] || $ruby_name.sub(/ruby/, '\&w')
13 $so_name ||= CONFIG["RUBY_SO_NAME"]
15 icons = {}
16 def icons.find(path)
17   if File.directory?(path)
18     Dir.open(File.expand_path(path)) do |d|
19       d.grep(/\.ico$/i) {|i| self[$`] = i}
20     end
21   else
22     self[File.basename(path, '.ico')] = path
23   end
24   self
25 end
27 if ARGV.empty?
28   icons.find('.')
29 else
30   ARGV.each {|i| icons.find(i)}
31 end
33 ruby_icon = rubyw_icon = nil
34 [$ruby_name, 'ruby'].find do |i|
35   if i = icons[i]
36     ruby_icon = "1 ICON DISCARDABLE "+i.dump+"\n"
37   end
38 end
39 [$rubyw_name, 'rubyw'].find do |i|
40   if i = icons[i]
41     rubyw_icon = "1 ICON DISCARDABLE "+i.dump+"\n"
42   end
43 end
44 dll_icons = []
45 icons.keys.sort.each do |i|
46   dll_icons << "#{dll_icons.size + 1} ICON DISCARDABLE "+icons[i].dump+"\n"
47 end
49 [ # base name    extension         file type  desc, icons
50   [$ruby_name,   CONFIG["EXEEXT"], 'VFT_APP', 'CUI', ruby_icon],
51   [$rubyw_name,  CONFIG["EXEEXT"], 'VFT_APP', 'GUI', rubyw_icon || ruby_icon],
52   [$so_name,     '.dll',           'VFT_DLL', 'DLL', dll_icons.join],
53 ].each do |base, ext, type, desc, icon|
54   open(base + '.rc', "w") { |f|
55     f.binmode if /mingw/ =~ RUBY_PLATFORM
57     f.print <<EOF
58 #ifndef __BORLANDC__
59 #include <windows.h>
60 #include <winver.h>
61 #endif
63 #{icon || ''}
64 VS_VERSION_INFO VERSIONINFO
65  FILEVERSION    #{nversion}
66  PRODUCTVERSION #{nversion}
67  FILEFLAGSMASK  0x3fL
68  FILEFLAGS      0x0L
69  FILEOS         VOS__WINDOWS32
70  FILETYPE       #{type}
71  FILESUBTYPE    VFT2_UNKNOWN
72 BEGIN
73  BLOCK "StringFileInfo"
74  BEGIN
75   BLOCK "000004b0"
76   BEGIN
77    VALUE "Comments",         "#{RUBY_RELEASE_DATE}\\0"
78    VALUE "CompanyName",      "http://www.ruby-lang.org/\\0"
79    VALUE "FileDescription",  "Ruby interpreter (#{desc}) #{sversion} [#{RUBY_PLATFORM}]\\0"
80    VALUE "FileVersion",      "#{sversion}\\0"
81    VALUE "InternalName",     "#{base + ext}\\0"
82    VALUE "LegalCopyright",   "Copyright (C) 1993-#{RUBY_RELEASE_DATE[/\d+/]} Yukihiro Matsumoto\\0"
83    VALUE "OriginalFilename", "#{base + ext}\\0"
84    VALUE "ProductName",      "Ruby interpreter #{sversion} [#{RUBY_PLATFORM}]\\0"
85    VALUE "ProductVersion",   "#{sversion}\\0"
86   END
87  END
88  BLOCK "VarFileInfo"
89  BEGIN
90   VALUE "Translation", 0x0, 0x4b0
91  END
92 END
93 EOF
94   }
95 end