X-Git-Url: http://git.shadowcat.co.uk/gitweb/gitweb.cgi?a=blobdiff_plain;f=win32%2Fmakefile.mk;h=0fb6734523bce0d55db0efa1b928b0514ef46ffc;hb=3e83fff7485ec2aa4f013e05fa43596a76f92102;hp=e77713ce68537ceffae8294d1a5ece9a05e23124;hpb=a1dd93259a6bf8541f88c948d6f510cc5090ff8e;p=p5sagit%2Fp5-mst-13.2.git diff --git a/win32/makefile.mk b/win32/makefile.mk index e77713c..0fb6734 100644 --- a/win32/makefile.mk +++ b/win32/makefile.mk @@ -13,7 +13,16 @@ # Set these to wherever you want "nmake install" to put your # newly built perl. INST_DRV *= c: -INST_TOP *= $(INST_DRV)\perl5004.5x +INST_TOP *= $(INST_DRV)\perl.gcc + +# Comment this out if you DON'T want your perl installation to be versioned. +# This means that the new installation will overwrite any files from the +# old installation at the same INST_TOP location. Leaving it enabled is +# the safest route, as perl adds the extra version directory to all the +# locations it installs files to. If you disable it, an alternative +# versioned installation can be obtained by setting INST_TOP above to a +# path that includes an arbitrary version string. +INST_VER *= \5.00467 # # uncomment to enable threads-capabilities @@ -23,8 +32,13 @@ INST_TOP *= $(INST_DRV)\perl5004.5x # uncomment one #CCTYPE *= MSVC20 #CCTYPE *= MSVC -CCTYPE *= BORLAND -#CCTYPE *= GCC +#CCTYPE *= BORLAND +CCTYPE *= GCC + +# +# uncomment next line if you want to use the perl object +# Currently, this cannot be enabled if you ask for threads above +#OBJECT *= -DPERL_OBJECT # # uncomment next line if you want debug version of perl (big,slow) @@ -46,17 +60,16 @@ CCTYPE *= BORLAND # set this if you wish to use perl's malloc # WARNING: Turning this on/off WILL break binary compatibility with extensions # you may have compiled with/without it. Be prepared to recompile all extensions -# if you change the default. +# if you change the default. Currently, this cannot be enabled if you ask for +# PERL_OBJECT above. PERL_MALLOC *= define # # set the install locations of the compiler include/libraries -# (you'll need to quote the value if it contains spaces: i.e. -# CCHOME *= "f:\Program Files\vc" # #CCHOME *= f:\msdev\vc -CCHOME *= C:\bc5 -#CCHOME *= D:\packages\mingw32 +#CCHOME *= C:\bc5 +CCHOME *= C:\mingw32 CCINCDIR *= $(CCHOME)\include CCLIBDIR *= $(CCHOME)\lib @@ -115,7 +128,7 @@ AUTODIR = ..\lib\auto CC = bcc32 LINK32 = tlink32 -LIB32 = tlib +LIB32 = tlib /P128 IMPLIB = implib -c # @@ -145,15 +158,17 @@ CFLAGS = -w -d -tWM -tWD $(INCLUDES) $(DEFINES) $(LOCDEFS) \ LINK_FLAGS = $(LINK_DBG) -L$(CCLIBDIR) OBJOUT_FLAG = -o EXEOUT_FLAG = -e +LIBOUT_FLAG = .ELIF "$(CCTYPE)" == "GCC" -CC = gcc -pipe -LINK32 = gcc -pipe -LIB32 = ar +CC = gcc +LINK32 = gcc +LIB32 = ar rc IMPLIB = dlltool o = .o +a = .a # # Options @@ -181,6 +196,7 @@ CFLAGS = $(INCLUDES) $(DEFINES) $(LOCDEFS) $(OPTIMIZE) LINK_FLAGS = $(LINK_DBG) -L$(CCLIBDIR) OBJOUT_FLAG = -o EXEOUT_FLAG = -o +LIBOUT_FLAG = .ELSE @@ -192,10 +208,7 @@ LIB32 = $(LINK32) -lib # Options # -.IF "$(RUNTIME)" == "" RUNTIME = -MD -.ENDIF - INCLUDES = -I.\include -I. -I.. #PCHFLAGS = -Fpc:\temp\vcmoduls.pch -YX DEFINES = -DWIN32 -D_CONSOLE $(BUILDOPT) $(CRYPT_FLAG) @@ -213,7 +226,7 @@ LIBC = libcmt.lib .IF "$(CCTYPE)" == "MSVC20" OPTIMIZE = -Od $(RUNTIME) -Z7 -D_DEBUG -DDEBUGGING .ELSE -OPTIMIZE = -Od $(RUNTIME)d -Z7 -D_DEBUG -DDEBUGGING +OPTIMIZE = -Od $(RUNTIME)d -Zi -D_DEBUG -DDEBUGGING .ENDIF LINK_DBG = -debug -pdb:none .ELSE @@ -236,6 +249,7 @@ CFLAGS = -nologo -Gf -W3 $(INCLUDES) $(DEFINES) $(LOCDEFS) \ LINK_FLAGS = -nologo $(LINK_DBG) -machine:$(PROCESSOR_ARCHITECTURE) OBJOUT_FLAG = -Fo EXEOUT_FLAG = -Fe +LIBOUT_FLAG = /out: .ENDIF @@ -249,6 +263,7 @@ CFLAGS_O = $(CFLAGS) $(OBJECT) ############# NO USER-SERVICEABLE PARTS BEYOND THIS POINT ############## o *= .obj +a *= .lib LKPRE = INPUT ( LKPOST = ) @@ -257,7 +272,7 @@ LKPOST = ) # Rules # -.SUFFIXES : .c $(o) .dll .lib .exe .a +.SUFFIXES : .c $(o) .dll $(a) .exe .c$(o): $(CC) -c $(null,$(<:d) $(NULL) -I$(<:d)) $(CFLAGS_O) $(OBJOUT_FLAG)$@ $< @@ -271,15 +286,16 @@ $(o).dll: $(IMPLIB) $(*B).lib $@ .ELIF "$(CCTYPE)" == "GCC" $(LINK32) -o $@ $(LINK_FLAGS) $< $(LIBFILES) - $(IMPLIB) -def $(*B).def $(*B).lib $@ + $(IMPLIB) -def $(*B).def $(*B).a $@ .ELSE $(LINK32) -dll -subsystem:windows -implib:$(*B).lib -def:$(*B).def \ -out:$@ $(LINK_FLAGS) $(LIBFILES) $< $(LIBPERL) .ENDIF # -INST_BIN = $(INST_TOP)\bin -INST_LIB = $(INST_TOP)\lib +INST_BIN = $(INST_TOP)$(INST_VER)\bin\$(ARCHNAME) +INST_SCRIPT = $(INST_TOP)$(INST_VER)\bin +INST_LIB = $(INST_TOP)$(INST_VER)\lib INST_POD = $(INST_LIB)\pod INST_HTML = $(INST_POD)\html LIBDIR = ..\lib @@ -289,14 +305,6 @@ EXTUTILSDIR = $(LIBDIR)\extutils # # various targets -.IF "$(OBJECT)" == "-DPERL_OBJECT" -PERLIMPLIB = ..\perlcore.lib -PERLDLL = ..\perlcore.dll -.ELSE -PERLIMPLIB = ..\perl.lib -PERLDLL = ..\perl.dll -.ENDIF - MINIPERL = ..\miniperl.exe MINIDIR = .\mini PERLEXE = ..\perl.exe @@ -317,6 +325,7 @@ CFGH_TMPL = config_H.bc CFGSH_TMPL = config.gc CFGH_TMPL = config_H.gc +PERLIMPLIB *= ..\libperl$(a) .ELSE @@ -326,6 +335,18 @@ PERL95EXE = ..\perl95.exe .ENDIF +.IF "$(OBJECT)" == "-DPERL_OBJECT" +PERLIMPLIB *= ..\perlcore$(a) +PERLDLL = ..\perlcore.dll +CAPILIB = $(COREDIR)\PerlCAPI$(a) +.ELSE +PERLIMPLIB *= ..\perl$(a) +PERLDLL = ..\perl.dll +CAPILIB = +.ENDIF + + + XCOPY = xcopy /f /r /i /d RCOPY = xcopy /f /r /i /e /d NOOP = @echo @@ -336,7 +357,7 @@ NOOP = @echo XSUBPP = ..\$(MINIPERL) -I..\..\lib ..\$(EXTUTILSDIR)\xsubpp \ -C++ -prototypes -CORE_SRC = \ +MICROCORE_SRC = \ ..\av.c \ ..\byterun.c \ ..\deb.c \ @@ -365,15 +386,15 @@ CORE_SRC = \ ..\util.c .IF "$(CRYPT_SRC)" != "" -CORE_SRC += ..\$(CRYPT_SRC) +MICROCORE_SRC += ..\$(CRYPT_SRC) .ENDIF .IF "$(PERL_MALLOC)" == "define" -CORE_SRC += ..\malloc.c +EXTRACORE_SRC += ..\malloc.c .ENDIF .IF "$(OBJECT)" == "" -CORE_SRC += ..\perlio.c +EXTRACORE_SRC += ..\perlio.c .ENDIF WIN32_SRC = \ @@ -407,7 +428,7 @@ X2P_SRC = \ ..\x2p\util.c \ ..\x2p\walk.c -CORE_H = \ +CORE_NOCFG_H = \ ..\av.h \ ..\byterun.h \ ..\bytecode.h \ @@ -437,7 +458,6 @@ CORE_H = \ ..\unixish.h \ ..\util.h \ ..\XSUB.h \ - .\config.h \ ..\EXTERN.h \ ..\perlvars.h \ ..\intrpvar.h \ @@ -447,19 +467,18 @@ CORE_H = \ .\include\sys\socket.h \ .\win32.h -CORE_OBJ = $(CORE_SRC:db:+$(o)) +CORE_H = $(CORE_NOCFG_H) .\config.h + +MICROCORE_OBJ = $(MICROCORE_SRC:db:+$(o)) +CORE_OBJ = $(MICROCORE_OBJ) $(EXTRACORE_SRC:db:+$(o)) WIN32_OBJ = $(WIN32_SRC:db:+$(o)) -MINICORE_OBJ = $(MINIDIR)\{$(CORE_OBJ:f) miniperlmain$(o)} +MINICORE_OBJ = $(MINIDIR)\{$(MICROCORE_OBJ:f) miniperlmain$(o) $(EXTRACORE_SRC:db:+$(o))} MINIWIN32_OBJ = $(MINIDIR)\{$(WIN32_OBJ:f)} MINI_OBJ = $(MINICORE_OBJ) $(MINIWIN32_OBJ) PERL95_OBJ = $(PERL95_SRC:db:+$(o)) DLL_OBJ = $(DLL_SRC:db:+$(o)) X2P_OBJ = $(X2P_SRC:db:+$(o)) -.IF "$(OBJECT)" != "" -MINICORE_OBJ += $(MINIDIR)\perlio$(o) -.ENDIF - PERLDLL_OBJ = $(CORE_OBJ) PERLEXE_OBJ = perlmain$(o) @@ -467,6 +486,7 @@ PERLEXE_OBJ = perlmain$(o) PERLDLL_OBJ += $(WIN32_OBJ) $(DLL_OBJ) .ELSE PERLEXE_OBJ += $(WIN32_OBJ) $(DLL_OBJ) +PERL95_OBJ += DynaLoadmt$(o) .ENDIF DYNAMIC_EXT = Socket IO Fcntl Opcode SDBM_File POSIX attrs Thread B @@ -493,7 +513,7 @@ ATTRS_DLL = $(AUTODIR)\attrs\attrs.dll THREAD_DLL = $(AUTODIR)\Thread\Thread.dll B_DLL = $(AUTODIR)\B\B.dll -EXTENSION_C = \ +EXTENSION_C = \ $(SOCKET).c \ $(FCNTL).c \ $(OPCODE).c \ @@ -504,7 +524,7 @@ EXTENSION_C = \ $(THREAD).c \ $(B).c -EXTENSION_DLL = \ +EXTENSION_DLL = \ $(SOCKET_DLL) \ $(FCNTL_DLL) \ $(OPCODE_DLL) \ @@ -512,9 +532,13 @@ EXTENSION_DLL = \ $(IO_DLL) \ $(POSIX_DLL) \ $(ATTRS_DLL) \ - $(THREAD_DLL) \ $(B_DLL) +.IF "$(OBJECT)" == "" +EXTENSION_DLL += \ + $(THREAD_DLL) +.ENDIF + POD2HTML = $(PODDIR)\pod2html POD2MAN = $(PODDIR)\pod2man POD2LATEX = $(PODDIR)\pod2latex @@ -523,17 +547,22 @@ POD2TEXT = $(PODDIR)\pod2text CFG_VARS = \ "INST_DRV=$(INST_DRV)" \ "INST_TOP=$(INST_TOP)" \ + "INST_VER=$(INST_VER)" \ "archname=$(ARCHNAME)" \ "cc=$(CC)" \ - "ccflags=$(OPTIMIZE) $(DEFINES)" \ + "ccflags=$(OPTIMIZE) $(DEFINES) $(OBJECT)" \ "cf_email=$(EMAIL)" \ "d_crypt=$(D_CRYPT)" \ "d_mymalloc=$(PERL_MALLOC)" \ "libs=$(LIBFILES:f)" \ "incpath=$(CCINCDIR)" \ + "libperl=$(PERLIMPLIB:f)" \ "libpth=$(strip $(CCLIBDIR) $(LIBFILES:d))" \ "libc=$(LIBC)" \ "make=dmake" \ + "_o=$(o)" \ + "_a=$(a)" \ + "lib_ext=$(a)" \ "static_ext=$(STATIC_EXT)" \ "dynamic_ext=$(DYNAMIC_EXT)" \ "usethreads=$(USE_THREADS)" \ @@ -544,8 +573,8 @@ CFG_VARS = \ # Top targets # -all : $(GLOBEXE) $(MINIMOD) $(CONFIGPM) $(PERLEXE) $(PERL95EXE) $(X2P) \ - $(EXTENSION_DLL) +all : .\config.h $(GLOBEXE) $(MINIMOD) $(CONFIGPM) $(PERLEXE) $(PERL95EXE) \ + $(CAPILIB) $(X2P) $(EXTENSION_DLL) $(DYNALOADER)$(o) : $(DYNALOADER).c $(CORE_H) $(EXTDIR)\DynaLoader\dlutils.c @@ -568,7 +597,7 @@ perlglob$(o) : perlglob.c config.w32 : $(CFGSH_TMPL) copy $(CFGSH_TMPL) config.w32 -.\config.h : $(CFGH_TMPL) +.\config.h : $(CFGH_TMPL) $(CORE_NOCFG_H) -del /f config.h copy $(CFGH_TMPL) config.h @@ -584,7 +613,7 @@ regen_config_h: cd .. && perl configpm -del /f $(CFGH_TMPL) -mkdir ..\lib\CORE - -perl -I..\lib config_h.PL + -perl -I..\lib config_h.PL "INST_VER=$(INST_VER)" rename config.h $(CFGH_TMPL) $(CONFIGPM) : $(MINIPERL) ..\config.sh config_h.PL ..\minimod.pl @@ -593,7 +622,8 @@ $(CONFIGPM) : $(MINIPERL) ..\config.sh config_h.PL ..\minimod.pl $(XCOPY) ..\*.h $(COREDIR)\*.* $(XCOPY) *.h $(COREDIR)\*.* $(RCOPY) include $(COREDIR)\*.* - $(MINIPERL) -I..\lib config_h.PL || $(MAKE) $(MAKEMACROS) $(CONFIGPM) + $(MINIPERL) -I..\lib config_h.PL "INST_VER=$(INST_VER)" \ + || $(MAKE) $(MAKEMACROS) $(CONFIGPM) $(MINIPERL) : $(MINIDIR) $(MINI_OBJ) .IF "$(CCTYPE)" == "BORLAND" @@ -610,15 +640,18 @@ $(MINIPERL) : $(MINIDIR) $(MINI_OBJ) $(MINIDIR) : if not exist "$(MINIDIR)" mkdir "$(MINIDIR)" -$(MINICORE_OBJ) : $(CORE_H) +$(MINICORE_OBJ) : $(CORE_NOCFG_H) $(CC) -c $(CFLAGS) $(OBJOUT_FLAG)$@ ..\$(*B).c -$(MINIWIN32_OBJ) : $(CORE_H) +$(MINIWIN32_OBJ) : $(CORE_NOCFG_H) $(CC) -c $(CFLAGS) $(OBJOUT_FLAG)$@ $(*B).c +# 1. we don't want to rebuild miniperl.exe when config.h changes +# 2. we don't want to rebuild miniperl.exe with non-default config.h +$(MINI_OBJ) : $(CORE_NOCFG_H) + $(WIN32_OBJ) : $(CORE_H) $(CORE_OBJ) : $(CORE_H) -$(MINI_OBJ) : $(CORE_H) $(DLL_OBJ) : $(CORE_H) $(PERL95_OBJ) : $(CORE_H) $(X2P_OBJ) : $(CORE_H) @@ -691,13 +724,13 @@ perlmain.c : runperl.c copy runperl.c perlmain.c perlmain$(o) : perlmain.c - $(CC) $(CFLAGS_O) -UPERLDLL $(EXEOUT_FLAG)$@ -c perlmain.c + $(CC) $(CFLAGS_O) -UPERLDLL $(OBJOUT_FLAG)$@ -c perlmain.c $(PERLEXE): $(PERLDLL) $(CONFIGPM) $(PERLEXE_OBJ) .IF "$(CCTYPE)" == "BORLAND" $(LINK32) -Tpe -ap $(LINK_FLAGS) \ - @$(mktmp c0x32$(o) $(PERLEXE_OBJ)\n \ - $@,\n \ + @$(mktmp c0x32$(o) $(PERLEXE_OBJ:s,\,\\)\n \ + $(@:s,\,\\),\n \ $(PERLIMPLIB) $(LIBFILES)\n) .ELIF "$(CCTYPE)" == "GCC" $(LINK32) -o $@ $(LINK_FLAGS) \ @@ -726,6 +759,10 @@ win32mt$(o) : win32.c $(CC) $(CFLAGS_O) -MT -UPERLDLL -DWIN95FIX -c \ $(OBJOUT_FLAG)win32mt$(o) win32.c +DynaLoadmt$(o) : $(DYNALOADER).c + $(CC) $(CFLAGS_O) -MT -UPERLDLL -DWIN95FIX -c \ + $(OBJOUT_FLAG)DynaLoadmt$(o) $(DYNALOADER).c + $(PERL95EXE): $(PERLDLL) $(CONFIGPM) $(PERL95_OBJ) $(LINK32) -subsystem:console -nodefaultlib -out:$@ $(LINK_FLAGS) \ $(LIBFILES) $(PERL95_OBJ) $(PERLIMPLIB) libcmt.lib @@ -735,11 +772,35 @@ $(PERL95EXE): $(PERLDLL) $(CONFIGPM) $(PERL95_OBJ) $(DYNALOADER).c: $(MINIPERL) $(EXTDIR)\DynaLoader\dl_win32.xs $(CONFIGPM) if not exist $(AUTODIR) mkdir $(AUTODIR) - cd $(EXTDIR)\$(*B) && ..\$(MINIPERL) -I..\..\lib $(*B).pm.PL + cd $(EXTDIR)\$(*B) && ..\$(MINIPERL) -I..\..\lib $(*B)_pm.PL $(XCOPY) $(EXTDIR)\$(*B)\$(*B).pm $(LIBDIR)\$(NULL) cd $(EXTDIR)\$(*B) && $(XSUBPP) dl_win32.xs > $(*B).c $(XCOPY) $(EXTDIR)\$(*B)\dlutils.c . +.IF "$(OBJECT)" == "-DPERL_OBJECT" + +PerlCAPI.cpp : $(MINIPERL) + $(MINIPERL) GenCAPI.pl $(COREDIR) + +PerlCAPI$(o) : PerlCAPI.cpp +.IF "$(CCTYPE)" == "BORLAND" + $(CC) $(CFLAGS_O) -c $(OBJOUT_FLAG)PerlCAPI$(o) PerlCAPI.cpp +.ELIF "$(CCTYPE)" == "GCC" + $(CC) $(CFLAGS_O) -c $(OBJOUT_FLAG)PerlCAPI$(o) PerlCAPI.cpp +.ELSE + $(CC) $(CFLAGS_O) $(RUNTIME) -UPERLDLL -c \ + $(OBJOUT_FLAG)PerlCAPI$(o) PerlCAPI.cpp +.ENDIF + +$(CAPILIB) : PerlCAPI.cpp PerlCAPI$(o) +.IF "$(CCTYPE)" == "BORLAND" + $(LIB32) $(LIBOUT_FLAG)$(CAPILIB) +PerlCAPI$(o) +.ELSE + $(LIB32) $(LIBOUT_FLAG)$(CAPILIB) PerlCAPI$(o) +.ENDIF + +.ENDIF + $(EXTDIR)\DynaLoader\dl_win32.xs: dl_win32.xs copy dl_win32.xs $(EXTDIR)\DynaLoader\dl_win32.xs @@ -807,7 +868,7 @@ utils: $(PERLEXE) distclean: clean -del /f $(MINIPERL) $(PERLEXE) $(PERL95EXE) $(PERLDLL) $(GLOBEXE) \ - $(PERLIMPLIB) ..\miniperl.lib $(MINIMOD) + $(PERLIMPLIB) ..\miniperl$(a) $(MINIMOD) -del /f *.def *.map -del /f $(EXTENSION_DLL) -del /f $(EXTENSION_C) $(DYNALOADER).c @@ -830,7 +891,7 @@ distclean: clean -del /f perl95.c .ENDIF -del /f bin\*.bat - -cd $(EXTDIR) && del /s *.lib *.def *.map *.bs Makefile *$(o) pm_to_blib + -cd $(EXTDIR) && del /s *$(a) *.def *.map *.bs Makefile *$(o) pm_to_blib -rmdir /s /q $(AUTODIR) || rmdir /s $(AUTODIR) -rmdir /s /q $(COREDIR) || rmdir /s $(COREDIR) @@ -844,8 +905,8 @@ installbare : installutils : utils $(XCOPY) $(GLOBEXE) $(INST_BIN)\*.* - $(XCOPY) bin\*.bat $(INST_BIN)\*.* - $(XCOPY) ..\pod\*.bat $(INST_BIN)\*.* + $(XCOPY) bin\*.bat $(INST_SCRIPT)\*.* + $(XCOPY) ..\pod\*.bat $(INST_SCRIPT)\*.* installhtml : doc $(RCOPY) html\*.* $(INST_HTML)\*.* @@ -888,6 +949,7 @@ clean : -@erase $(MINIPERL) -@erase perlglob$(o) -@erase perlmain$(o) + -@erase PerlCAPI.cpp -@erase config.w32 -@erase /f config.h -@erase $(GLOBEXE) @@ -898,7 +960,7 @@ clean : -@erase $(WIN32_OBJ) -@erase $(DLL_OBJ) -@erase $(X2P_OBJ) - -@erase ..\*$(o) ..\*.lib ..\*.exp *$(o) *.lib *.exp + -@erase ..\*$(o) ..\*$(a) ..\*.exp *$(o) *$(a) *.exp -@erase ..\t\*.exe ..\t\*.dll ..\t\*.bat -@erase ..\x2p\*.exe ..\x2p\*.bat -@erase *.ilk