CC: | jand [...] activestate.com |
Subject: | broken with Mingw on ActivePerl |
TLDR: PPM dmake thinks its running on a VC machine, this is wrong, anyone with VC will be using nmake, people who download the dmake PPM package are also downloading the Mingw package for their ActivePerls (since if it was strawberry both are included). PPM/CPAN dmake must default to a Mingw setup, not VC.
If the writing in this ticket is exceptionally incoherent, I'm not myself ATM.
I recently got this CPAN testers report. The build system on this machine http://www.cpantesters.org/cpan/report/7c445206-6e6d-1014-ac79-55795be8bcae tried to run $(AS), which is defined as "masm" instead of "as[.exe]". For macros like CC, LD, and AR, those are defined by MakeMaker from $Config in the makefile in section
Show quoted text
_________________________________________
# --- MakeMaker const_config section:
# These definitions are from config.sh (via C:/sperl/perl/lib/Config.pm).
# They may have been overridden via Makefile.PL or on the command line.
_________________________________________
but AS is not defined by MakeMaker and it will fallback to the make tool's builtins.
On strawberry perl, this isn't a problem, since the dmake included with SP is setup for Mingw. The dmake PPM package at http://ppm4.activestate.com/MSWin32-x64/5.16/1600/-/--/MINGW64/ is set up for VC (although that is debatable because VC's assembler is "ml" or "ml64" not "masm", "masm" is from before 1991,
"Earlier versions of the Microsoft Macro Assembler were named MASM.EXE and the Microsoft Assembler is still generally referred to as MASM even though the file name for the assembler was changed to ML.EXE in 1991 with the release of MASM version 6.0."
http://www.masm32.com/history.htm ). Also since the dmake PPM package is under AS's private namespace, I'm not sure if Steve Hay or Jan are responsible for changes to fix the issue in this ticket. So Jan gets CCed too.
the dmake cpan package says in its readme
__________________________________________________
You can change the default platform in the startup\config.mk file (the defaults, despite appearances, are set up for MS VC++ 6 on Windows NT/2000/XP etc.). If you change the defaults, you'll need to make sure the subdirectories you name in startup\config.mk are populated with setup files (you can use the current hierarchy as a model).
__________________________________________________
Ive attached the folder layouts of strawberry perl dmake vs PPM dmake.
I've also attached verbose logs of a building attempt, the .mk contents of a strawberry dmake vs the PPM dmake. The reason for the Mithaldu section title is the PPM dmake is on Mithaldu's machine, not mine.
The file startup\startup.mk which is on both SP and PPM dmake, the file on PPM dmake is overriden later by the file startup\win95\microsft\macros.mk which turns the setup from Mingw to VC (or really Microsoft C for MSDOS).
-V of the Perl in question
__________________________________________________
Summary of my perl5 (revision 5 version 16 subversion 3) configuration:
Platform:
osname=MSWin32, osvers=5.2, archname=MSWin32-x64-multi-thread
uname=''
config_args='undef'
hint=recommended, useposix=true, d_sigaction=undef
useithreads=define, usemultiplicity=define
useperlio=define, d_sfio=undef, uselargefiles=define, usesocks=undef
use64bitint=define, use64bitall=undef, uselongdouble=undef
usemymalloc=n, bincompat5005=undef
Compiler:
cc='c:\Perl1664\site\bin\gcc.exe', ccflags ='-DNDEBUG -DWIN32 -D_CONSOLE -DNO_STRICT -DWIN64 -DCONSERVATIVE -DPERL_TEXTMODE_SCRIPTS -DUSE_SITECUSTOMIZE -DPERL_IMPLICIT_CONTEXT -DPERL_IMPLICIT_SYS -DUSE_PERLIO -DHASATTRIBUTE -fno-strict-aliasing -mms-bitfields',
optimize='-O2',
cppflags='-DWIN32'
ccversion='', gccversion='gcc.exe (rubenvb-4.5.4) 4.5.4', gccosandvers=''
intsize=4, longsize=4, ptrsize=8, doublesize=8, byteorder=12345678
d_longlong=undef, longlongsize=8, d_longdbl=define, longdblsize=8
ivtype='__int64', ivsize=8, nvtype='double', nvsize=8, Off_t='__int64', lseeksize=8
alignbytes=8, prototype=define
Linker and Libraries:
ld='c:\Perl1664\site\bin\g++.exe', ldflags ='-L"c:\perl1664\lib\CORE"'
libpth=\lib
libs=-lkernel32 -luser32 -lgdi32 -lwinspool -lcomdlg32 -ladvapi32 -lshell32 -lole32 -loleaut32 -lnetapi32 -luuid -lws2_32 -lmpr -lwinmm -lversion -lodbc32 -lodbccp32 -lcomctl32 -lmsvcrt
perllibs=-lkernel32 -luser32 -lgdi32 -lwinspool -lcomdlg32 -ladvapi32 -lshell32 -lole32 -loleaut32 -lnetapi32 -luuid -lws2_32 -lmpr -lwinmm -lversion -lodbc32 -lodbccp32 -lcomctl32 -lmsvcrt
libc=msvcrt.lib, so=dll, useshrplib=true, libperl=perl516.lib
gnulibc_version=''
Dynamic Linking:
dlsrc=dl_win32.xs, dlext=dll, d_dlsymun=undef, ccdlflags=' '
cccdlflags=' ', lddlflags='-mdll -L"c:\perl1664\lib\CORE"'
Characteristics of this binary (from libperl):
Compile-time options: HAS_TIMES HAVE_INTERP_INTERN MULTIPLICITY
PERLIO_LAYERS PERL_DONT_CREATE_GVSV
PERL_IMPLICIT_CONTEXT PERL_IMPLICIT_SYS
PERL_MALLOC_WRAP PERL_PRESERVE_IVUV PL_OP_SLAB_ALLOC
USE_64_BIT_INT USE_ITHREADS USE_LARGE_FILES
USE_LOCALE USE_LOCALE_COLLATE USE_LOCALE_CTYPE
USE_LOCALE_NUMERIC USE_PERLIO USE_PERL_ATOF
USE_SITECUSTOMIZE
Locally applied patches:
ActivePerl Build 1603 [296746]
Built under MSWin32
Compiled at Mar 13 2013 13:31:10
@INC:
c:/Perl1664/site/lib/MSWin32-x64-multi-thread
c:/Perl1664/site/lib
c:/Perl1664/lib
.
________________________________________________________
The Mingw and dmake were installed using PPM on AP on a VC-less system.
Subject: | PPM dmake folders.txt |
Message body is not shown because it is too large.
Subject: | dmake verbose strawberry vs PPM.txt |
####################bulk88#####################
dmake: Openning [C:\sperl\c\bin\startup\startup.mk] for read (success)
dmake: Openning [C:\sperl\c\bin\startup\config.mk] for read (success)
dmake: Parsing include file [C:\sperl\c\bin\startup\config.mk].
dmake: Closing [C:\sperl\c\bin\startup\config.mk]
dmake: Openning [C:\sperl\c\bin\startup\local.mk] for read (success)
dmake: Parsing include file [C:\sperl\c\bin\startup\local.mk].
dmake: Closing [C:\sperl\c\bin\startup\local.mk]
dmake: Openning [C:\sperl\c\bin\startup\winnt\macros.mk] for read (success)
dmake: Parsing include file [C:\sperl\c\bin\startup\winnt\macros.mk].
dmake: Openning [C:\sperl\c\bin\startup\winnt\mingw\macros.mk] for read (success)
dmake: Parsing include file [C:\sperl\c\bin\startup\winnt\mingw\macros.mk].
dmake: Closing [C:\sperl\c\bin\startup\winnt\mingw\macros.mk]
dmake: Closing [C:\sperl\c\bin\startup\winnt\macros.mk]
dmake: Openning [C:\sperl\c\bin\startup\winnt\recipes.mk] for read (success)
dmake: Parsing include file [C:\sperl\c\bin\startup\winnt\recipes.mk].
dmake: Openning [C:\sperl\c\bin\startup\winnt\mingw\recipes.mk] for read (fail)
dmake: Include file [C:\sperl\c\bin\startup\winnt\mingw\recipes.mk] was not found.
dmake: Closing [C:\sperl\c\bin\startup\winnt\recipes.mk]
dmake: Openning [project.mk] for read (fail)
dmake: Include file [project.mk] was not found.
dmake: Closing [C:\sperl\c\bin\startup\startup.mk]
dmake: Openning [makefile.mk] for read (fail)
dmake: Infering prerequisite(s) and recipe for [makefile.mk]
dmake: Time stamp of [makefile.mk] is 0
dmake: Openning [makefile] for read (success)
dmake: Closing [makefile]
Checking prerequisite [.INIT]
Checking prerequisite [__.NULLPRQ]
dmake: >>>> Making [__.NULLPRQ]
dmake: Updating [__.NULLPRQ], (1 > 0)
dmake: <<<< Set [__.NULLPRQ] time stamp to 1381563848
dmake: >>>> Making [.INIT]
dmake: Updating [.INIT], (1381563848 > 0)
dmake: <<<< Set [.INIT] time stamp to 1381563848
############################chunk of C:\sperl\c\bin\startup\startup.mk##########################################
# ---------- Default Construction Macro and Rule definitions --------------
# The construction rules may be customized further in subsequent recipes.mk
# files.
.IF $(__.DEFAULTS)
# Primary suffixes in common use
A *:= .a # Libraries
E *:= # Executables
F *:= .f # Fortran
O *:= .o # Objects
P *:= .p # Pascal
S *:= .s # Assembler sources
V *:= ,v # RCS suffix
YTAB *:= y.tab # name-stem for yacc output files.
LEXYY *:= lex.yy # lex output file
# Standard C-language command names and flags
CPP *:= $/lib$/cpp # C-preprocessor
CC *:= cc # C compiler
CFLAGS *= # C compiler flags
"C++" *:= CC # C++ Compiler
"C++FLAGS" *= # C++ Compiler flags
AS *:= as # Assembler and flags
ASFLAGS *=
LD *= $(CC) # Loader and flags
LDFLAGS *=
LDLIBS *= # Default libraries
AR *:= ar # archiver
ARFLAGS *= -rv
# Definition of Print command for this system.
PRINT *= lp
########################Mithaldu#####################################
dmake.exe: Openning [c:\Perl1664\site\lib\auto\dmake\startup\startup.mk] for read (success)
dmake.exe: Openning [c:\Perl1664\site\lib\auto\dmake\startup\config.mk] for read (success)
dmake.exe: Parsing include file [c:\Perl1664\site\lib\auto\dmake\startup\config.mk].
dmake.exe: Closing [c:\Perl1664\site\lib\auto\dmake\startup\config.mk]
dmake.exe: Openning [c:\Perl1664\site\lib\auto\dmake\startup\local.mk] for read (fail)
dmake.exe: Include file [c:\Perl1664\site\lib\auto\dmake\startup\local.mk] was not found.
dmake.exe: Openning [c:\Perl1664\site\lib\auto\dmake\startup\win95\macros.mk] for read (success)
dmake.exe: Parsing include file [c:\Perl1664\site\lib\auto\dmake\startup\win95\macros.mk].
dmake.exe: Openning [c:\Perl1664\site\lib\auto\dmake\startup\win95\microsft\macros.mk] for read (success)
dmake.exe: Parsing include file [c:\Perl1664\site\lib\auto\dmake\startup\win95\microsft\macros.mk].
dmake.exe: Openning [c:\Perl1664\site\lib\auto\dmake\startup\win95\microsft\vpp40\macros.mk] for read (fail)
dmake.exe: Include file [c:\Perl1664\site\lib\auto\dmake\startup\win95\microsft\vpp40\macros.mk] was not found.
dmake.exe: Closing [c:\Perl1664\site\lib\auto\dmake\startup\win95\microsft\macros.mk]
dmake.exe: Closing [c:\Perl1664\site\lib\auto\dmake\startup\win95\macros.mk]
dmake.exe: Openning [c:\Perl1664\site\lib\auto\dmake\startup\win95\recipes.mk] for read (success)
dmake.exe: Parsing include file [c:\Perl1664\site\lib\auto\dmake\startup\win95\recipes.mk].
dmake.exe: Openning [c:\Perl1664\site\lib\auto\dmake\startup\win95\microsft\recipes.mk] for read (fail)
dmake.exe: Include file [c:\Perl1664\site\lib\auto\dmake\startup\win95\microsft\recipes.mk] was not found.
dmake.exe: Closing [c:\Perl1664\site\lib\auto\dmake\startup\win95\recipes.mk]
dmake.exe: Openning [project.mk] for read (fail)
dmake.exe: Include file [project.mk] was not found.
dmake.exe: Closing [c:\Perl1664\site\lib\auto\dmake\startup\startup.mk]
dmake.exe: Openning [makefile.mk] for read (fail)
dmake.exe: Infering prerequisite(s) and recipe for [makefile.mk]
dmake.exe: Time stamp of [makefile.mk] is 0
dmake.exe: Openning [makefile] for read (success)
dmake.exe: Closing [makefile]
Checking prerequisite [.INIT]
Checking prerequisite [__.NULLPRQ]
dmake.exe: >>>> Making [__.NULLPRQ]
##################################chunk of c:\Perl1664\site\lib\auto\dmake\startup\startup.mk##########
# ---------- Default Construction Macro and Rule definitions --------------
# The construction rules may be customized further in subsequent recipes.mk
# files.
.IF $(__.DEFAULTS)
# Primary suffixes in common use
A *:= .a # Libraries
E *:= # Executables
F *:= .f # Fortran
O *:= .o # Objects
P *:= .p # Pascal
S *:= .s # Assembler sources
V *:= ,v # RCS suffix
YTAB *:= y.tab # name-stem for yacc output files.
LEXYY *:= lex.yy # lex output file
# Standard C-language command names and flags
CPP *:= $/lib$/cpp # C-preprocessor
CC *:= cc # C compiler
CFLAGS *= # C compiler flags
"C++" *:= CC # C++ Compiler
"C++FLAGS" *= # C++ Compiler flags
AS *:= as # Assembler and flags
ASFLAGS *=
LD *= $(CC) # Loader and flags
LDFLAGS *=
LDLIBS *= # Default libraries
AR *:= ar # archiver
ARFLAGS *= -rv
# Definition of Print command for this system.
PRINT *= lp
# Language and Parser generation Tools and their flags
YACC *:= yacc # standard yacc
YFLAGS *=
LEX *:= lex # standard lex
LFLAGS *=
#################chunk from C:\Perl1664\site\lib\auto\dmake\startup\win95\microsft\macros.mk##########
MSDOS Microsoft-C environment customization.
.IF $(OSENVIRONMENT)
.INCLUDE .IGNORE .NOINFER : $(INCFILENAME:d)$(OSENVIRONMENT)$/macros.mk
.ENDIF
# Standard C-language command names and flags
CC *:= cl # C compiler
CPP *:= # C-preprocessor
CFLAGS *= # C compiler flags
"C++" *:= # C++ Compiler
"C++FLAGS" *= # C++ Compiler flags
AS *:= masm # Assembler and flags
ASFLAGS *=
LD *= link # Loader and flags
LDFLAGS *=
LDLIBS *= # Default libraries
AR *:= lib # archiver
ARFLAGS *= ????
# Definition of Print command for this system.
PRINT *= print
# Language and Parser generation Tools and their flags
YACC *:= yacc # standard yacc
YFLAGS *=
LEX *:= lex # standard lex
LFLAGS *=
Subject: | strawberry perl dmake folders.txt |
C:\sperl\51621port\c\bin\startup>dir /s
Volume in drive C has no label.
Volume Serial Number is 0CFF-E7B6
Directory of C:\sperl\51621port\c\bin\startup
12/28/2012 01:27 PM <DIR> .
12/28/2012 01:27 PM <DIR> ..
11/08/2009 11:26 PM 71 config.mk
01/28/2010 11:53 PM 23 local.mk
11/07/2011 10:29 AM 6,395 startup.mk
12/28/2012 01:27 PM <DIR> winnt
3 File(s) 6,489 bytes
Directory of C:\sperl\51621port\c\bin\startup\winnt
12/28/2012 01:27 PM <DIR> .
12/28/2012 01:27 PM <DIR> ..
10/15/2007 05:47 PM 2,109 macros.mk
12/28/2012 01:27 PM <DIR> mingw
09/22/2000 05:33 PM 290 recipes.mk
2 File(s) 2,399 bytes
Directory of C:\sperl\51621port\c\bin\startup\winnt\mingw
12/28/2012 01:27 PM <DIR> .
12/28/2012 01:27 PM <DIR> ..
03/25/2003 04:05 PM 253 macros.mk
1 File(s) 253 bytes
Total Files Listed:
6 File(s) 9,141 bytes
8 Dir(s) 442,885,169,152 bytes free
C:\sperl\51621port\c\bin\startup>strawberry perl