Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

[PATCH] fix win32 gmake with win64 VC with 32 bit GCC in PATH build failure #15179

Closed
p5pRT opened this issue Feb 13, 2016 · 7 comments
Closed

Comments

@p5pRT
Copy link

p5pRT commented Feb 13, 2016

Migrated from rt.perl.org#127532 (status was 'resolved')

Searchable as RT127532$

@p5pRT
Copy link
Author

p5pRT commented Feb 13, 2016

From @bulk88

Created by @bulk88

See attached patch.

Perl Info

Flags:
       category=core
       severity=low

Site configuration information for perl 5.23.5:

Configured by Owner at Sun Oct 25 19:14:27 2015.

Summary of my perl5 (revision 5 version 23 subversion 5) configuration:
     Derived from: 644207b7a8ff7a2b1661c05a7f9ac2df9a5dad91
     Platform:
       osname=MSWin32, osvers=6.1, archname=MSWin32-x86-multi-thread
       uname=''
       config_args='undef'
       hint=recommended, useposix=true, d_sigaction=undef
       useithreads=define, usemultiplicity=define
       use64bitint=undef, use64bitall=undef, uselongdouble=undef
       usemymalloc=n, bincompat5005=undef
     Compiler:
       cc='cl', ccflags ='-nologo -GF -W3 -O1 -MD -Zi -DNDEBUG -GL 
-DWIN32 -D_CONSOLE -DNO_STRICT -D_CRT_SECURE_NO_DEPRECATE 
-D_CRT_NONSTDC_NO_DEPRECATE  -DPERL_TEXTMODE_SCRIPTS 
-DPERL_IMPLICIT_CONTEXT -DPERL_IMPLICIT_SYS',
       optimize='-O1 -MD -Zi -DNDEBUG -GL',
       cppflags='-DWIN32'
       ccversion='18.00.31101', gccversion='', gccosandvers=''
       intsize=4, longsize=4, ptrsize=4, doublesize=8, byteorder=1234, 
doublekind=3
       d_longlong=undef, longlongsize=8, d_longdbl=define, 
longdblsize=8, longdblkind=0
       ivtype='long', ivsize=4, nvtype='double', nvsize=8, 
Off_t='__int64', lseeksize=8
       alignbytes=8, prototype=define
     Linker and Libraries:
       ld='link', ldflags ='-nologo -nodefaultlib -debug -opt:ref,icf 
-ltcg         -libpath:"c:\p523\lib\CORE"         -machine:x86 
"/manifestdependency:type='Win32' 
name='Microsoft.Windows.Common-Controls' version='6.0.0.0' 
processorArchitecture='*' publicKeyToken='6595b64144ccf1df' 
language='*'" -subsystem:console,"5.01"'
       libpth=\lib
       libs=oldnames.lib kernel32.lib user32.lib gdi32.lib winspool.lib 
comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib 
netapi32.lib uuid.lib ws2_32.lib mpr.lib winmm.lib version.lib 
odbc32.lib odbccp32.lib comctl32.lib msvcrt.lib
       perllibs=oldnames.lib kernel32.lib user32.lib gdi32.lib 
winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib 
oleaut32.lib netapi32.lib uuid.lib ws2_32.lib mpr.lib winmm.lib 
version.lib odbc32.lib odbccp32.lib comctl32.lib msvcrt.lib
       libc=msvcrt.lib, so=dll, useshrplib=true, libperl=perl523.lib
       gnulibc_version=''
     Dynamic Linking:
       dlsrc=dl_win32.xs, dlext=dll, d_dlsymun=undef, ccdlflags=' '
       cccdlflags=' ', lddlflags='-dll -nologo -nodefaultlib -debug 
-opt:ref,icf -ltcg         -libpath:"c:\p523\lib\CORE"  -machine:x86 
"/manifestdependency:type='Win32' 
name='Microsoft.Windows.Common-Controls' version='6.0.0.0' 
processorArchitecture='*' publicKeyToken='6595b64144ccf1df' 
language='*'" -subsystem:console,"5.01"'

Locally applied patches:
       uncommitted-changes


@INC for perl 5.23.5:
       C:/p523/site/lib
       C:/p523/lib
       .


Environment for perl 5.23.5:
       HOME (unset)
       LANG (unset)
       LANGUAGE (unset)
       LD_LIBRARY_PATH (unset)
       LOGDIR (unset)
       PATH=C:\p523\site\bin;C:\p523\bin;C:\Program Files\ActiveState 
Komodo Edit 
9\;C:\Windows\system32;C:\Windows;C:\Windows\System32\Wbem;C:\Windows\System32\WindowsPowerShell\v1.0\;C:\Program 
Files\TortoiseGit\bin;C:\Program Files\Microsoft Windows Performance 
Toolkit\;C:\Program Files\Microsoft SQL 
Server\110\Tools\Binn\;C:\Program Files\Microsoft 
SDKs\TypeScript\1.0\;C:\Program Files\TortoiseHg\;
       PERL_BADLANG (unset)
       SHELL (unset)




@p5pRT
Copy link
Author

p5pRT commented Feb 13, 2016

From @bulk88

0001-fix-win32-gmake-with-win64-VC-with-32-bit-GCC-in-PAT.patch
From 1f3028abb456d6ffc65838401e0ad86a93e7677b Mon Sep 17 00:00:00 2001
From: Daniel Dragan <bulk88@hotmail.com>
Date: Sat, 13 Feb 2016 04:05:24 -0500
Subject: [PATCH] fix win32 gmake with win64 VC with 32 bit GCC in PATH build
 failure

The assignment of PROCESSOR_ARCHITEW6432 to PROCESSOR_ARCHITECTURE near
the "When we are running from a 32bit cmd.exe on AMD64 then" comment
doesn't happen if WIN64 var was already assigned to. Do the 32/64 auto
detection only for GCC builds, not for VC builds. I not implementing 32/64
and cl version (CCTYPE setting) detection by parsing stdout of "cl<enter>"
with batch and gmake syntax at this time.

failure message:
generate_uudmap.obj : fatal error LNK1112: module machine type 'x64'
conflicts with target machine type 'X86'
GNUmakefile:1416: recipe for target '..\generate_uudmap.exe' failed
gmake: *** [..\generate_uudmap.exe] Error 2
---
 win32/GNUmakefile | 20 +++++++++++---------
 1 file changed, 11 insertions(+), 9 deletions(-)

diff --git a/win32/GNUmakefile b/win32/GNUmakefile
index 3abcba6..92d4528 100644
--- a/win32/GNUmakefile
+++ b/win32/GNUmakefile
@@ -41,15 +41,6 @@ GCCVER1   := $(shell for /f "delims=. tokens=1,2,3" %%i in ('gcc -dumpversion')
 GCCVER2   := $(shell for /f "delims=. tokens=1,2,3" %%i in ('gcc -dumpversion') do echo %%j)
 GCCVER3   := $(shell for /f "delims=. tokens=1,2,3" %%i in ('gcc -dumpversion') do echo %%k)
 
-ifeq ($(GCCTARGET),x86_64-w64-mingw32)
-WIN64 := define
-ARCHITECTURE := x64
-endif
-ifeq ($(GCCTARGET),i686-w64-mingw32)
-WIN64 := undef
-ARCHITECTURE := x86
-endif
-
 ##
 ## Build configuration.  Edit the values below to suit your needs.
 ##
@@ -363,6 +354,17 @@ ifeq ($(USE_NO_REGISTRY),define)
 BUILDOPT	+= -DWIN32_NO_REGISTRY
 endif
 
+ifeq ($(CCTYPE),GCC)
+ifeq ($(GCCTARGET),x86_64-w64-mingw32)
+WIN64 := define
+ARCHITECTURE := x64
+endif
+ifeq ($(GCCTARGET),i686-w64-mingw32)
+WIN64 := undef
+ARCHITECTURE := x86
+endif
+endif
+
 PROCESSOR_ARCHITECTURE  ?= x86
 
 ifeq ($(WIN64),undef)
-- 
1.8.0.msysgit.0

@p5pRT
Copy link
Author

p5pRT commented Feb 15, 2016

From @tonycoz

On Sat Feb 13 01​:17​:00 2016, bulk88 wrote​:

See attached patch.

Thanks, applied as 745dedb.

I didn't perldelta this.

Tony

@p5pRT
Copy link
Author

p5pRT commented Feb 15, 2016

The RT System itself - Status changed from 'new' to 'open'

@p5pRT
Copy link
Author

p5pRT commented Feb 15, 2016

@tonycoz - Status changed from 'open' to 'pending release'

@p5pRT
Copy link
Author

p5pRT commented May 13, 2016

From @khwilliamson

Thank you for submitting this report. You have helped make Perl better.
 
With the release of Perl 5.24.0 on May 9, 2016, this and 149 other issues have been resolved.

Perl 5.24.0 may be downloaded via https://metacpan.org/release/RJBS/perl-5.24.0

@p5pRT
Copy link
Author

p5pRT commented May 13, 2016

@khwilliamson - Status changed from 'pending release' to 'resolved'

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
Development

No branches or pull requests

1 participant