Bug #4113

Cannot build trunk with MSVC.

Added by Heesob Park over 4 years ago. Updated over 4 years ago.

[ruby-core:33530]
Status:Closed
Priority:Normal
Assignee:-
ruby -v:ruby 1.9.3dev Backport:

Description

=begin
Due to r30012 and r30054, I cannot build trunk version with MSVC.

C:\work\snapshot>nmake

Microsoft(R) Program Maintenance Utility 버전 9.00.30729.01
Copyright (c) Microsoft Corporation. All rights reserved.

     CFLAGS = -MD -Zi -W2 -wd4996 -O2sy-  -Zm600
     XCFLAGS = -DRUBY_EXPORT -I. -I.ext/include/i386-mswin32_90 -I./include -I. -I./missing
     CPPFLAGS =
     DLDFLAGS = -incremental:no -debug -opt:ref -opt:icf -dll
     SOLIBS =

Creating config.h
.ext\include\i386-mswin32_90\ruby\config.h updated.
Creating config.status
compiling main.c
main.c
compiling dmydln.c
dmydln.c
compiling miniruby.rc
fatal error RC1106: invalid option: -ologo
NMAKE : fatal error U1077: '"C:\Program Files\Microsoft SDKs\Windows\v6.0A\bin\rc.EXE"' : '0x1' 반환 코드입니다.
Stop.

C:\work\snapshot>cl
Microsoft (R) 32비트 C/C++ 최적화 컴파일러 버전 15.00.30729.01(80x86)
Copyright (c) Microsoft Corporation. All rights reserved.

사용법: cl [ option... ] filename... [ /link linkoption... ]

C:\work\snapshot>rc/?

Microsoft (R) Windows (R) Resource Compiler Version 6.1.6723.1
Copyright (C) Microsoft Corporation. All rights reserved.

Usage: rc [options] .RC input file
Switches:
/r Emit .RES file (optional)
/v Verbose (print progress messages)
/d Define a symbol
/u Undefine a symbol
/fo Rename .RES file
/l Default language ID in hex
/i Add a path for INCLUDE searches
/x Ignore INCLUDE environment variable
/c Define a code page used by NLS conversion
/w Warn on Invalid codepage in .rc (default is an error)
/y Don't warn if there are duplicate control ID's
/n Append null's to all strings in the string tables
/fm Localizable resource only dll file name
/j Add localizable resource type(s)
/k Add resource type(s) to be kept in the language neutral
file in addition to adding them to the resource only DLL
Using the /j switch
/q RC Configuration file for the resource only DLL
/g Specify the ultimate fallback language ID in hex
/g1 Specify if version only MUI file can be created
/g2 Specify the custom file version for checksum in MUI creation
Flags may be either upper or lower case

C:\Program Files\Microsoft SDKs\Windows\v7.0A\bin>rc /?

Microsoft (R) Windows (R) Resource Compiler Version 6.1.7600.16385
Copyright (C) Microsoft Corporation. All rights reserved.

Usage: rc [options] .RC input file
Switches:
/r Emit .RES file (optional)
/v Verbose (print progress messages)
/d Define a symbol
/u Undefine a symbol
/fo Rename .RES file
/l Default language ID in hex
/i Add a path for INCLUDE searches
/x Ignore INCLUDE environment variable
/c Define a code page used by NLS conversion
/w Warn on Invalid codepage in .rc (default is an error)
/y Don't warn if there are duplicate control ID's
/n Append null's to all strings in the string tables
/fm Localizable resource only dll file name
/q RC Configuration file for the resource only DLL
/g Specify the ultimate fallback language ID in hex
/g1 Specify if version only MUI file can be created
/g2 Specify the custom file version for checksum in MUI creation
/nologo Suppress startup logo
Flags may be either upper or lower case

The version of rc.exe is independent of the version of cl.exe.
The RC command in the SDK of version 6.x does not support -ologo.
The -nologo option requires the SDK of version 7.0A of higher.
=end

History

#1 Updated by Nobuyoshi Nakada over 4 years ago

=begin
Hi,

At Fri, 3 Dec 2010 10:53:50 +0900,
Heesob Park wrote at :

The version of rc.exe is independent of the version of cl.exe.
The RC command in the SDK of version 6.x does not support -ologo.
The -nologo option requires the SDK of version 7.0A of higher.

I didn't know that such combination was possible.

Does this help?

diff --git a/win32/Makefile.sub b/win32/Makefile.sub
index 18a8cb4..5f34f2e 100644
--- a/win32/Makefile.sub
+++ b/win32/Makefile.sub
@@ -240,7 +240,7 @@ DLDFLAGS = $(LDFLAGS) -dll
SOLIBS =
RCFILES = $(RUBY_INSTALL_NAME).rc $(RUBYW_INSTALL_NAME).rc $(RUBY_SO_NAME).rc
!ifndef RCFLAGS
-!if $(MSC_VER) >= 1500
+!if [$(RC) -? | findstr nologo] == 0
RCFLAGS=-nologo
!endif
!endif

--
Nobu Nakada

=end

#2 Updated by Usaku NAKAMURA over 4 years ago

  • Status changed from Open to Closed
  • % Done changed from 0 to 100

=begin
This issue was solved with changeset r30066.
Heesob, thank you for reporting this issue.
Your contribution to Ruby is greatly appreciated.
May Ruby be with you.

=end

#3 Updated by Heesob Park over 4 years ago

=begin
Hi,

2010/12/3 Nobuyoshi Nakada nobu@ruby-lang.org:

Hi,

At Fri, 3 Dec 2010 10:53:50 +0900,
Heesob Park wrote at :

The version of rc.exe is independent of the version of cl.exe.
The RC command in the SDK of version 6.x does not support -ologo.
The -nologo option requires the SDK of version 7.0A of higher.

I didn't know that such combination was possible.

Does this help?

diff --git a/win32/Makefile.sub b/win32/Makefile.sub
index 18a8cb4..5f34f2e 100644
--- a/win32/Makefile.sub
+++ b/win32/Makefile.sub
@@ -240,7 +240,7 @@ DLDFLAGS = $(LDFLAGS) -dll
 SOLIBS =
 RCFILES = $(RUBY_INSTALL_NAME).rc $(RUBYW_INSTALL_NAME).rc $(RUBY_SO_NAME).rc
 !ifndef RCFLAGS
-!if $(MSC_VER) >= 1500
+!if [$(RC) -? | findstr nologo] == 0
 RCFLAGS=-nologo
 !endif
 !endif

Yes, it helps.

Regards,
Park Heesob

=end

Also available in: Atom PDF