X-Git-Url: https://perl5.git.perl.org/perl5.git/blobdiff_plain/4683a5d7cdb32ed2af60a28a12123d5c199e7bbf..cfd4abf2bf035401d8184babc5d1aca80208cd5b:/win32/Makefile diff --git a/win32/Makefile b/win32/Makefile index 8133d12..40c6768 100644 --- a/win32/Makefile +++ b/win32/Makefile @@ -37,7 +37,7 @@ INST_TOP = $(INST_DRV)\perl # versioned installation can be obtained by setting INST_TOP above to a # path that includes an arbitrary version string. # -#INST_VER = \5.17.1 +#INST_VER = \5.17.6 # # Comment this out if you DON'T want your perl installation to have @@ -93,6 +93,12 @@ USE_PERLIO = define USE_LARGE_FILES = define # +# Uncomment this if you're building a 32-bit perl and want 64-bit integers. +# (If you're building a 64-bit perl then you will have 64-bit integers whether +# or not this is uncommented.) +#USE_64_BIT_INT = define + +# # uncomment exactly one of the following # # Visual C++ 6.x (aka Visual C++ 98) @@ -261,6 +267,10 @@ USE_PERLIO = undef USE_LARGE_FILES = undef !ENDIF +!IF "$(USE_64_BIT_INT)" == "" +USE_64_BIT_INT = undef +!ENDIF + !IF "$(USE_IMP_SYS)$(USE_MULTI)" == "defineundef" USE_MULTI = define !ENDIF @@ -301,6 +311,10 @@ WIN64 = undef !ENDIF !ENDIF +!IF "$(WIN64)" == "define" +USE_64_BIT_INT = define +!ENDIF + # Treat 64-bit MSVC60 (doesn't really exist) as SDK2003SP1 because # both link against MSVCRT.dll (which is part of Windows itself) and # not against a compiler specific versioned runtime. @@ -334,6 +348,12 @@ BUILDOPT = $(BUILDOPT) -DUSE_PERLIO ARCHNAME = $(ARCHNAME)-thread !ENDIF +!IF "$(WIN64)" != "define" +!IF "$(USE_64_BIT_INT)" == "define" +ARCHNAME = $(ARCHNAME)-64int +!ENDIF +!ENDIF + # Visual C++ 98, .NET 2003, 2005/2008/2010 specific. # VC++ 6/7/8/9/10.x can load DLLs on demand. Makes the test suite run # in about 10% less time. (The free version of 7.x can't do this, but the free @@ -603,13 +623,8 @@ UTILS = \ MAKE = nmake -nologo MAKE_BARE = nmake -!IF "$(WIN64)" == "define" -CFGSH_TMPL = config.vc64 -CFGH_TMPL = config_H.vc64 -!ELSE CFGSH_TMPL = config.vc CFGH_TMPL = config_H.vc -!ENDIF XCOPY = xcopy /f /r /i /d /y RCOPY = xcopy /f /r /i /e /d /y @@ -788,10 +803,12 @@ CFG_VARS = \ "useithreads=$(USE_ITHREADS)" \ "usemultiplicity=$(USE_MULTI)" \ "useperlio=$(USE_PERLIO)" \ + "use64bitint=$(USE_64_BIT_INT)" \ "uselargefiles=$(USE_LARGE_FILES)" \ "usesitecustomize=$(USE_SITECUST)" \ "LINK_FLAGS=$(LINK_FLAGS:"=\")" \ - "optimize=$(OPTIMIZE:"=\")" + "optimize=$(OPTIMIZE:"=\")" \ + "WIN64=$(WIN64)" ICWD = -I..\dist\Cwd -I..\dist\Cwd\lib @@ -827,9 +844,82 @@ perlglob$(o) : perlglob.c config.w32 : $(CFGSH_TMPL) copy $(CFGSH_TMPL) config.w32 +# +# Copy the template config.h and set configurables at the end of it +# as per the options chosen and compiler used. +# Note: This config.h is only used to build miniperl.exe anyway, but +# it's as well to have its options correct to be sure that it builds +# and so that it's "-V" options are correct for use by makedef.pl. The +# real config.h used to build perl.exe is generated from the top-level +# config_h.SH by config_h.PL (run by miniperl.exe). +# .\config.h : $(CFGH_TMPL) -del /f config.h copy $(CFGH_TMPL) config.h + @echo.>>$@ + @echo #ifndef _config_h_footer_>>$@ + @echo #define _config_h_footer_>>$@ + @echo #undef PTRSIZE>>$@ + @echo #undef SSize_t>>$@ + @echo #undef HAS_ATOLL>>$@ + @echo #undef HAS_STRTOLL>>$@ + @echo #undef HAS_STRTOULL>>$@ + @echo #undef IVTYPE>>$@ + @echo #undef UVTYPE>>$@ + @echo #undef IVSIZE>>$@ + @echo #undef UVSIZE>>$@ + @echo #undef NV_PRESERVES_UV>>$@ + @echo #undef NV_PRESERVES_UV_BITS>>$@ + @echo #undef IVdf>>$@ + @echo #undef UVuf>>$@ + @echo #undef UVof>>$@ + @echo #undef UVxf>>$@ + @echo #undef UVXf>>$@ + @echo #undef USE_64_BIT_INT>>$@ + @echo #undef Size_t_size>>$@ +!IF "$(WIN64)"=="define" + @echo #define PTRSIZE ^8>>$@ + @echo #define SSize_t __int64>>$@ + @echo #define HAS_ATOLL>>$@ + @echo #define HAS_STRTOLL>>$@ + @echo #define HAS_STRTOULL>>$@ + @echo #define Size_t_size ^8>>$@ +!ELSE + @echo #define PTRSIZE ^4>>$@ + @echo #define SSize_t int>>$@ + @echo #undef HAS_ATOLL>>$@ + @echo #undef HAS_STRTOLL>>$@ + @echo #undef HAS_STRTOULL>>$@ + @echo #define Size_t_size ^4>>$@ +!ENDIF +!IF "$(USE_64_BIT_INT)"=="define" + @echo #define IVTYPE __int64>>$@ + @echo #define UVTYPE unsigned __int64>>$@ + @echo #define IVSIZE ^8>>$@ + @echo #define UVSIZE ^8>>$@ + @echo #undef NV_PRESERVES_UV>>$@ + @echo #define NV_PRESERVES_UV_BITS 53>>$@ + @echo #define IVdf "I64d">>$@ + @echo #define UVuf "I64u">>$@ + @echo #define UVof "I64o">>$@ + @echo #define UVxf "I64x">>$@ + @echo #define UVXf "I64X">>$@ + @echo #define USE_64_BIT_INT>>$@ +!ELSE + @echo #define IVTYPE long>>$@ + @echo #define UVTYPE unsigned long>>$@ + @echo #define IVSIZE ^4>>$@ + @echo #define UVSIZE ^4>>$@ + @echo #define NV_PRESERVES_UV>>$@ + @echo #define NV_PRESERVES_UV_BITS 32>>$@ + @echo #define IVdf "ld">>$@ + @echo #define UVuf "lu">>$@ + @echo #define UVof "lo">>$@ + @echo #define UVxf "lx">>$@ + @echo #define UVXf "lX">>$@ + @echo #undef USE_64_BIT_INT>>$@ +!ENDIF + @echo #endif>>$@ ..\git_version.h : $(MINIPERL) ..\make_patchnum.pl cd .. @@ -842,13 +932,10 @@ config.w32 : $(CFGSH_TMPL) ..\config.sh : config.w32 $(MINIPERL) config_sh.PL FindExt.pm $(MINIPERL) -I..\lib config_sh.PL $(CFG_VARS) config.w32 > ..\config.sh -# this target is for when changes to the main config.sh happen. -# edit config.vc, then make perl in a minimal configuration (i.e. with MULTI, +# This target is for when changes to the main config.sh happen. +# Edit config.vc, then make perl in a minimal configuration (i.e. with MULTI, # ITHREADS, IMP_SYS, LARGE_FILES and PERLIO off), then make this target # to regenerate config_H.vc. -# repeat for config.vc64 and config_H.vc64 if you have a suitable build -# environment, otherwise hand-edit them to maintain the same differences with -# config.vc and config_H.vc as before. regen_config_h: $(MINIPERL) -I..\lib config_sh.PL $(CFG_VARS) $(CFGSH_TMPL) > ..\config.sh $(MINIPERL) -I..\lib ..\configpm --chdir=.. @@ -870,7 +957,7 @@ $(CONFIGPM) : $(MINIPERL) ..\config.sh config_h.PL ..\minimod.pl $(MINIPERL) : $(MINIDIR) $(MINI_OBJ) $(LINK32) -subsystem:console -out:$@ @<< - $(LINK_FLAGS) $(LIBFILES) $(MINI_OBJ) + $(LINK_FLAGS) $(DELAYLOAD) $(LIBFILES) $(MINI_OBJ) << $(EMBED_EXE_MANI) @@ -881,7 +968,7 @@ $(MINICORE_OBJ) : $(CORE_NOCFG_H) $(CC) -c $(CFLAGS) -DPERL_EXTERNAL_GLOB -DPERL_IS_MINIPERL $(OBJOUT_FLAG)$@ ..\$(*F).c $(MINIWIN32_OBJ) : $(CORE_NOCFG_H) - $(CC) -c $(CFLAGS) $(OBJOUT_FLAG)$@ $(*F).c + $(CC) -c $(CFLAGS) -DPERL_IS_MINIPERL $(OBJOUT_FLAG)$@ $(*F).c # -DPERL_IMPLICIT_SYS needs C++ for perllib.c # This is the only file that depends on perlhost.h, vmem.h, and vdir.h @@ -1055,7 +1142,6 @@ utils: $(PERLEXE) $(X2P) copy ..\README.linux ..\pod\perllinux.pod copy ..\README.macos ..\pod\perlmacos.pod copy ..\README.macosx ..\pod\perlmacosx.pod - copy ..\README.mpeix ..\pod\perlmpeix.pod copy ..\README.netware ..\pod\perlnetware.pod copy ..\README.openbsd ..\pod\perlopenbsd.pod copy ..\README.os2 ..\pod\perlos2.pod @@ -1068,11 +1154,9 @@ utils: $(PERLEXE) $(X2P) copy ..\README.symbian ..\pod\perlsymbian.pod copy ..\README.tru64 ..\pod\perltru64.pod copy ..\README.tw ..\pod\perltw.pod - copy ..\README.uts ..\pod\perluts.pod - copy ..\README.vmesa ..\pod\perlvmesa.pod copy ..\README.vos ..\pod\perlvos.pod copy ..\README.win32 ..\pod\perlwin32.pod - copy ..\pod\perldelta.pod ..\pod\perl5171delta.pod + copy ..\pod\perldelta.pod ..\pod\perl5176delta.pod cd ..\win32 $(PERLEXE) $(PL2BAT) $(UTILS) $(PERLEXE) $(ICWD) ..\autodoc.pl .. @@ -1165,17 +1249,16 @@ distclean: realclean -if exist $(LIBDIR)\XS rmdir /s /q $(LIBDIR)\XS -if exist $(LIBDIR)\Win32API rmdir /s /q $(LIBDIR)\Win32API -cd $(PODDIR) && del /f *.html *.bat roffitall \ - perl5171delta.pod perlaix.pod perlamiga.pod perlapi.pod \ + perl5176delta.pod perlaix.pod perlamiga.pod perlapi.pod \ perlbeos.pod perlbs2000.pod perlce.pod perlcn.pod \ perlcygwin.pod perldgux.pod perldos.pod perlepoc.pod \ perlfreebsd.pod perlhaiku.pod perlhpux.pod perlhurd.pod \ perlintern.pod perlirix.pod perljp.pod perlko.pod perllinux.pod \ - perlmacos.pod perlmacosx.pod perlmodlib.pod perlmpeix.pod \ - perlnetware.pod perlopenbsd.pod perlos2.pod perlos390.pod \ - perlos400.pod perlplan9.pod perlqnx.pod perlriscos.pod \ - perlsolaris.pod perlsymbian.pod perltoc.pod perltru64.pod \ - perltw.pod perluniprops.pod perluts.pod perlvmesa.pod \ - perlvos.pod perlwin32.pod + perlmacos.pod perlmacosx.pod perlmodlib.pod perlnetware.pod \ + perlopenbsd.pod perlos2.pod perlos390.pod perlos400.pod \ + perlplan9.pod perlqnx.pod perlriscos.pod perlsolaris.pod \ + perlsymbian.pod perltoc.pod perltru64.pod perltw.pod \ + perluniprops.pod perlvos.pod perlwin32.pod -cd ..\utils && del /f h2ph splain perlbug pl2pm c2ph pstruct h2xs \ perldoc perlivp libnetcfg enc2xs piconv cpan *.bat \ xsubpp pod2html instmodsh json_pp prove ptar ptardiff ptargrep cpanp-run-perl cpanp cpan2dist shasum corelist config_data zipdetails