Sarathy's patch
[p5sagit/p5-mst-13.2.git] / win32 / makefile.mk
index b91fffc..f66e788 100644 (file)
 # Set these to wherever you want "nmake install" to put your
 # newly built perl.
 INST_DRV=c:
-INST_TOP=$(INST_DRV)\perl
+INST_TOP=$(INST_DRV)\perl5004.5x
+BUILDOPT=-DUSE_THREADS
+
+# -DUSE_PERLIO -D__STDC__=1 -DUSE_SFIO -DI_SFIO -I\sfio97\include
 
 #
 # uncomment one if you are using Visual C++ 2.x or Borland
@@ -25,14 +28,14 @@ CCTYPE=BORLAND
 #
 # set the install locations of the compiler include/libraries
 #CCHOME = f:\msdev\vc
-CCHOME = D:\bc5
+CCHOME = C:\bc5
 CCINCDIR = $(CCHOME)\include
 CCLIBDIR = $(CCHOME)\lib
 
 #
 # set this to point to cmd.exe (only needed if you use some
 # alternate shell that doesn't grok cmd.exe style commands)
-SHELL = g:\winnt\system32\cmd.exe
+#SHELL = g:\winnt\system32\cmd.exe
 
 #
 # set this to your email address (perl will guess a value from
@@ -52,7 +55,7 @@ SHELL = g:\winnt\system32\cmd.exe
 CC = bcc32
 LINK32 = tlink32
 LIB32 = tlib
-IMPLIB = implib
+IMPLIB = implib -c
 
 #
 # Options
@@ -60,7 +63,8 @@ IMPLIB = implib
 RUNTIME  = -D_RTLDLL
 INCLUDES = -I.\include -I. -I.. -I$(CCINCDIR)
 #PCHFLAGS = -H -H$(INTDIR)\bcmoduls.pch 
-DEFINES  = -DWIN32 -DPERLDLL
+DEFINES  = -DWIN32 $(BUILDOPT) 
+LOCDEFS  = -DPERLDLL -DPERL_CORE
 SUBSYS   = console
 LIBC = cw32mti.lib
 LIBFILES = import32.lib $(LIBC) odbc32.lib odbccp32.lib
@@ -68,14 +72,14 @@ LIBFILES = import32.lib $(LIBC) odbc32.lib odbccp32.lib
 WINIOMAYBE =
 
 .IF  "$(CFG)" == "Debug"
-OPTIMIZE = -v $(RUNTIME)
+OPTIMIZE = -v $(RUNTIME) -DDEBUGGING
 LINK_DBG = -v
 .ELSE
-OPTIMIZE = -O $(RUNTIME)
+OPTIMIZE = -5 -O2 $(RUNTIME)
 LINK_DBG = 
 .ENDIF
 
-CFLAGS   = -w -tWM -tWD $(INCLUDES) $(DEFINES) $(PCHFLAGS) $(OPTIMIZE)
+CFLAGS   = -w -d -tWM -tWD $(INCLUDES) $(DEFINES) $(LOCDEFS) $(PCHFLAGS) $(OPTIMIZE)
 LINK_FLAGS  = $(LINK_DBG) -L$(CCLIBDIR)
 OBJOUT_FLAG = -o
 
@@ -92,7 +96,8 @@ RUNTIME  = -MD
 .ENDIF
 INCLUDES = -I.\include -I. -I..
 #PCHFLAGS = -Fp$(INTDIR)\vcmoduls.pch -YX 
-DEFINES  = -DWIN32 -D_CONSOLE -DPERLDLL
+DEFINES  = -DWIN32 -D_CONSOLE $(BUILDOPT)
+LOCDEFS  = -DPERLDLL -DPERL_CORE
 SUBSYS   = console
 
 .IF "$(RUNTIME)" == "-MD"
@@ -100,7 +105,7 @@ LIBC = msvcrt.lib
 WINIOMAYBE =
 .ELSE
 LIBC = libcmt.lib
-WINIOMAYBE = win32io.obj
+WINIOMAYBE =
 .ENDIF
 
 .IF  "$(CFG)" == "Debug"
@@ -125,8 +130,8 @@ LIBFILES = oldnames.lib kernel32.lib user32.lib gdi32.lib \
        oleaut32.lib netapi32.lib uuid.lib wsock32.lib mpr.lib winmm.lib \
        version.lib odbc32.lib odbccp32.lib
 
-CFLAGS   = -nologo -W3 $(INCLUDES) $(DEFINES) $(PCHFLAGS) $(OPTIMIZE)
-LINK_FLAGS  = -nologo $(LIBFILES) $(LINK_DBG) -machine:I386
+CFLAGS   = -nologo -W3 $(INCLUDES) $(DEFINES) $(LOCDEFS) $(PCHFLAGS) $(OPTIMIZE)
+LINK_FLAGS  = -nologo $(LINK_DBG) -machine:$(PROCESSOR_ARCHITECTURE)
 OBJOUT_FLAG = -Fo
 
 .ENDIF
@@ -152,7 +157,7 @@ OBJOUT_FLAG = -Fo
 
 .obj.dll:
        $(LINK32) -dll -subsystem:windows -implib:$(*B).lib -def:$(*B).def \
-           -out:$@ $(LINK_FLAGS) $< $(LIBPERL)  
+           -out:$@ $(LINK_FLAGS) $(LIBFILES) $< $(LIBPERL)  
 
 .ENDIF
 
@@ -176,8 +181,8 @@ GLOBEXE=..\perlglob.exe
 CONFIGPM=..\lib\Config.pm
 MINIMOD=..\lib\ExtUtils\Miniperl.pm
 
-PL2BAT=bin\PL2BAT.BAT
-GLOBBAT = perlglob.bat
+PL2BAT=bin\pl2bat.pl
+GLOBBAT = bin\perlglob.bat
 
 .IF "$(CCTYPE)" == "BORLAND"
 
@@ -229,7 +234,8 @@ CORE_C=     ..\av.c         \
        ..\taint.c      \
        ..\toke.c       \
        ..\universal.c  \
-       ..\util.c
+       ..\util.c       \
+       ..\malloc.c
 
 CORE_OBJ= ..\av.obj    \
        ..\deb.obj      \
@@ -256,16 +262,21 @@ CORE_OBJ= ..\av.obj       \
        ..\taint.obj    \
        ..\toke.obj     \
        ..\universal.obj\
-       ..\util.obj
+       ..\util.obj     \
+       ..\malloc.obj
 
 WIN32_C = perllib.c \
        win32.c \
-       win32io.c \
-       win32sck.c
+       win32sck.c \
+       win32thread.c 
 
 WIN32_OBJ = win32.obj \
-       win32io.obj \
-       win32sck.obj
+       win32sck.obj \
+       win32thread.obj
+
+PERL95_OBJ = perl95.obj \
+       win32mt.obj \
+       win32sckmt.obj
 
 DLL_OBJ = perllib.obj $(DYNALOADER).obj
 
@@ -292,6 +303,7 @@ CORE_H = ..\av.h    \
        ..\regexp.h     \
        ..\scope.h      \
        ..\sv.h         \
+       ..\thread.h     \
        ..\unixish.h    \
        ..\util.h       \
        ..\XSUB.h       \
@@ -302,8 +314,8 @@ CORE_H = ..\av.h    \
        .\include\sys\socket.h  \
        .\win32.h
 
-
-EXTENSIONS=DynaLoader Socket IO Fcntl Opcode SDBM_File
+DYNAMIC_EXT=Socket IO Fcntl Opcode SDBM_File attrs Thread
+STATIC_EXT=DynaLoader
 
 DYNALOADER=$(EXTDIR)\DynaLoader\DynaLoader
 SOCKET=$(EXTDIR)\Socket\Socket
@@ -311,12 +323,16 @@ FCNTL=$(EXTDIR)\Fcntl\Fcntl
 OPCODE=$(EXTDIR)\Opcode\Opcode
 SDBM_FILE=$(EXTDIR)\SDBM_File\SDBM_File
 IO=$(EXTDIR)\IO\IO
+ATTRS=$(EXTDIR)\attrs\attrs
+THREAD=$(EXTDIR)\Thread\Thread
 
 SOCKET_DLL=..\lib\auto\Socket\Socket.dll
 FCNTL_DLL=..\lib\auto\Fcntl\Fcntl.dll
 OPCODE_DLL=..\lib\auto\Opcode\Opcode.dll
 SDBM_FILE_DLL=..\lib\auto\SDBM_File\SDBM_File.dll
 IO_DLL=..\lib\auto\IO\IO.dll
+ATTRS_DLL=..\lib\auto\attrs\attrs.dll
+THREAD_DLL=..\lib\auto\Thread\Thread.dll
 
 STATICLINKMODULES=DynaLoader
 DYNALOADMODULES=       \
@@ -324,7 +340,9 @@ DYNALOADMODULES=    \
        $(FCNTL_DLL)    \
        $(OPCODE_DLL)   \
        $(SDBM_FILE_DLL)\
-       $(IO_DLL)
+       $(IO_DLL)       \
+       $(ATTRS_DLL)    \
+       $(THREAD_DLL)
 
 POD2HTML=$(PODDIR)\pod2html
 POD2MAN=$(PODDIR)\pod2man
@@ -347,11 +365,12 @@ $(GLOBEXE): perlglob.obj
        $(LINK32) -Tpe -ap $(LINK_FLAGS) c0x32.obj perlglob.obj \
            $(CCLIBDIR)\32BIT\wildargs.obj,$@,,import32.lib cw32mt.lib,
 .ELSE
-       $(LINK32) $(LINK_FLAGS) -out:$@ -subsystem:$(SUBSYS) perlglob.obj setargv.obj 
+       $(LINK32) $(LINK_FLAGS) $(LIBFILES) -out:$@ -subsystem:$(SUBSYS) \
+           perlglob.obj setargv.obj 
 .ENDIF
 
-perlglob.bat : ..\lib\File\DosGlob.pm $(MINIPERL)
-       $(MINIPERL) $(PL2BAT) - < ..\lib\File\DosGlob.pm > $(*B).bat
+$(GLOBBAT) : ..\lib\File\DosGlob.pm $(MINIPERL)
+       $(MINIPERL) $(PL2BAT) - < ..\lib\File\DosGlob.pm > $(GLOBBAT)
 
 perlglob.obj  : perlglob.c
 
@@ -360,15 +379,17 @@ perlglob.obj  : perlglob.c
 config.w32 : $(CFGSH_TMPL)
        copy $(CFGSH_TMPL) config.w32
 
-.\config.h : $(CFGSH_TMPL)
+.\config.h : $(CFGH_TMPL)
        -del /f config.h
        copy $(CFGH_TMPL) config.h
 
 ..\config.sh : config.w32 $(MINIPERL) config_sh.PL
        $(MINIPERL) -I..\lib config_sh.PL "INST_DRV=$(INST_DRV)" \
-           "INST_TOP=$(INST_TOP)" "cc=$(CC)" "ccflags=$(RUNTIME) -DWIN32" \
-           "cf_email=$(EMAIL)" "libs=$(LIBFILES:f)" \
+           "INST_TOP=$(INST_TOP)" "cc=$(CC)" "ccflags=$(OPTIMIZE) $(DEFINES)" \
+           "cf_email=$(EMAIL)" "libs=$(LIBFILES:f)" "incpath=$(CCINCDIR)" \
            "libpth=$(strip $(CCLIBDIR) $(LIBFILES:d))" "libc=$(LIBC)" \
+            "static_ext=$(STATIC_EXT)" "dynamic_ext=$(DYNAMIC_EXT)" \
+            "ldflags=$(LINK_FLAGS)" "optimize=$(OPTIMIZE)" \
            config.w32 > ..\config.sh
 
 $(CONFIGPM) : $(MINIPERL) ..\config.sh config_h.PL ..\minimod.pl
@@ -387,7 +408,7 @@ $(MINIPERL) : ..\miniperlmain.obj $(CORE_OBJ) $(WIN32_OBJ)
                $(CORE_OBJ:s,\,\\) $(WIN32_OBJ:s,\,\\),$@,,$(LIBFILES),)
 .ELSE
        $(LINK32) -subsystem:console -out:$@ \
-           @$(mktmp $(LINK_FLAGS) ..\miniperlmain.obj \
+           @$(mktmp $(LINK_FLAGS) $(LIBFILES) ..\miniperlmain.obj \
                $(CORE_OBJ:s,\,\\) $(WIN32_OBJ:s,\,\\))
 .ENDIF
 
@@ -395,8 +416,8 @@ $(WIN32_OBJ) : $(CORE_H)
 $(CORE_OBJ)  : $(CORE_H)
 $(DLL_OBJ)   : $(CORE_H) 
 
-perldll.def : $(MINIPERL) $(CONFIGPM)
-       $(MINIPERL) -w makedef.pl $(CCTYPE) > perldll.def
+perldll.def : $(MINIPERL) $(CONFIGPM) ..\global.sym makedef.pl
+       $(MINIPERL) -w makedef.pl $(DEFINES) $(CCTYPE) > perldll.def
 
 $(PERLDLL): perldll.def $(CORE_OBJ) $(WIN32_OBJ) $(DLL_OBJ)
 .IF "$(CCTYPE)" == "BORLAND"
@@ -409,7 +430,7 @@ $(PERLDLL): perldll.def $(CORE_OBJ) $(WIN32_OBJ) $(DLL_OBJ)
        $(IMPLIB) $*.lib $@
 .ELSE
        $(LINK32) -dll -def:perldll.def -out:$@ \
-           @$(mktmp $(LINK_FLAGS) $(CORE_OBJ:s,\,\\) \
+           @$(mktmp $(LINK_FLAGS) $(LIBFILES) $(CORE_OBJ:s,\,\\) \
                $(WIN32_OBJ:s,\,\\) $(DLL_OBJ:s,\,\\))
 .ENDIF
        $(XCOPY) $(PERLIMPLIB) ..\lib\CORE
@@ -434,15 +455,13 @@ $(PERLEXE): $(PERLDLL) $(CONFIGPM) perlmain.obj
            $@,\n \
            $(PERLIMPLIB) $(LIBFILES)\n)
 .ELSE
-       $(LINK32) -subsystem:console -out:perl.exe $(LINK_FLAGS) \
+       $(LINK32) -subsystem:console -out:perl.exe $(LINK_FLAGS) $(LIBFILES) \
            perlmain.obj $(WINIOMAYBE) $(PERLIMPLIB) 
        copy perl.exe $@
        del perl.exe
 .ENDIF
        copy splittree.pl .. 
        $(MINIPERL) -I..\lib ..\splittree.pl "../LIB" "../LIB/auto"
-       attrib -r ..\t\*.*
-       copy test ..\t
 
 .IF "$(CCTYPE)" != "BORLAND"
 
@@ -452,12 +471,15 @@ perl95.c : runperl.c
 perl95.obj : perl95.c
        $(CC) $(CFLAGS) -MT -UPERLDLL -c perl95.c
 
-win32iomt.obj : win32io.c
-       $(CC) $(CFLAGS) -MT -c $(OBJOUT_FLAG)win32iomt.obj win32io.c
+win32sckmt.obj : win32sck.c
+       $(CC) $(CFLAGS) -MT -c $(OBJOUT_FLAG)win32sckmt.obj win32sck.c
+
+win32mt.obj : win32.c
+       $(CC) $(CFLAGS) -MT -c $(OBJOUT_FLAG)win32mt.obj win32.c
 
-$(PERL95EXE): $(PERLDLL) $(CONFIGPM) perl95.obj win32iomt.obj
-       $(LINK32) -subsystem:console -out:perl95.exe $(LINK_FLAGS) \
-           perl95.obj win32iomt.obj $(PERLIMPLIB) 
+$(PERL95EXE): $(PERLDLL) $(CONFIGPM) $(PERL95_OBJ)
+       $(LINK32) -subsystem:console -out:perl95.exe $(LINK_FLAGS) $(LIBFILES) \
+           $(PERL95_OBJ) $(PERLIMPLIB) 
        copy perl95.exe $@
        del perl95.exe
 
@@ -472,7 +494,17 @@ $(DYNALOADER).c: $(MINIPERL) $(EXTDIR)\DynaLoader\dl_win32.xs $(CONFIGPM)
 $(EXTDIR)\DynaLoader\dl_win32.xs: dl_win32.xs
        copy dl_win32.xs $(EXTDIR)\DynaLoader\dl_win32.xs
 
-$(IO_DLL): $(PERLEXE) $(CONFIGPM) $(IO).xs
+$(THREAD_DLL): $(PERLEXE) $(THREAD).xs
+       cd $(EXTDIR)\$(*B) && \
+       ..\..\miniperl -I..\..\lib Makefile.PL INSTALLDIRS=perl
+       cd $(EXTDIR)\$(*B) && $(MAKE)
+
+$(ATTRS_DLL): $(PERLEXE) $(ATTRS).xs
+       cd $(EXTDIR)\$(*B) && \
+       ..\..\miniperl -I..\..\lib Makefile.PL INSTALLDIRS=perl
+       cd $(EXTDIR)\$(*B) && $(MAKE)
+
+$(IO_DLL): $(PERLEXE) $(IO).xs
        cd $(EXTDIR)\$(*B) && \
        ..\..\miniperl -I..\..\lib Makefile.PL INSTALLDIRS=perl
        cd $(EXTDIR)\$(*B) && $(MAKE)
@@ -492,12 +524,15 @@ $(OPCODE_DLL): $(PERLEXE) $(OPCODE).xs
        ..\..\miniperl -I..\..\lib Makefile.PL INSTALLDIRS=perl
        cd $(EXTDIR)\$(*B) && $(MAKE)
 
-$(SOCKET_DLL): $(SOCKET).xs $(PERLEXE)
+$(SOCKET_DLL): $(PERLEXE) $(SOCKET).xs
        cd $(EXTDIR)\$(*B) && \
        ..\..\miniperl -I..\..\lib Makefile.PL INSTALLDIRS=perl
        cd $(EXTDIR)\$(*B) && $(MAKE)
 
 doc: $(PERLEXE)
+       cd ..\pod && $(MAKE) -f ..\win32\pod.mak checkpods \
+               pod2html pod2latex pod2man pod2text
+       cd ..\pod && $(XCOPY) *.bat ..\win32\bin\*.*
        copy ..\README.win32 ..\pod\perlwin32.pod
        $(PERLEXE) ..\installhtml --podroot=.. --htmldir=./html \
            --podpath=pod:lib:ext:utils --htmlroot="//$(INST_HTML:s,:,|,)" \
@@ -507,18 +542,25 @@ utils: $(PERLEXE)
        cd ..\utils && $(MAKE) PERL=$(MINIPERL)
        cd ..\utils && $(PERLEXE) ..\win32\$(PL2BAT) h2ph splain perlbug \
                pl2pm c2ph h2xs perldoc pstruct
-       cd ..\utils && $(XCOPY) *.bat ..\win32\bin\*.*
+       $(XCOPY) ..\utils\*.bat bin\*.*
+       $(PERLEXE) $(PL2BAT) bin\network.pl bin\www.pl bin\runperl.pl \
+                       bin\pl2bat.pl
 
 distclean: clean
-       -del /f $(MINIPERL) $(PERLEXE) $(PERLDLL) $(GLOBEXE) \
+       -del /f $(MINIPERL) $(PERLEXE) $(PERL95EXE) $(PERLDLL) $(GLOBEXE) \
                $(PERLIMPLIB) ..\miniperl.lib $(MINIMOD)
        -del /f *.def *.map
        -del /f $(SOCKET_DLL) $(IO_DLL) $(SDBM_FILE_DLL) $(FCNTL_DLL) \
-               $(OPCODE_DLL)
+               $(OPCODE_DLL) $(ATTRS_DLL) $(THREAD_DLL)
        -del /f $(SOCKET).c $(IO).c $(SDBM_FILE).c $(FCNTL).c $(OPCODE).c \
-               $(DYNALOADER).c
+               $(DYNALOADER).c $(ATTRS).c $(THREAD).c
        -del /f $(PODDIR)\*.html
        -del /f $(PODDIR)\*.bat
+       -del /f ..\config.sh ..\splittree.pl perlmain.c dlutils.c config.h.new
+.IF "$(PERL95EXE)" != ""
+       -del /f perl95.c
+.ENDIF
+       -del /f bin\*.bat
        -cd $(EXTDIR) && del /s *.lib *.def *.map *.bs Makefile *.obj pm_to_blib
        -rmdir /s /q ..\lib\auto
        -rmdir /s /q ..\lib\CORE
@@ -531,9 +573,8 @@ install : all doc utils
        $(XCOPY) $(PERL95EXE) $(INST_BIN)\*.*
 .ENDIF
        $(XCOPY) $(GLOBEXE) $(INST_BIN)\*.*
-       $(XCOPY) $(GLOBBAT) $(INST_BIN)\*.*
        $(XCOPY) $(PERLDLL) $(INST_BIN)\*.*
-       $(XCOPY) bin\*.* $(INST_BIN)\*.*
+       $(XCOPY) bin\*.bat $(INST_BIN)\*.*
        $(RCOPY) ..\lib $(INST_LIB)\*.*
        $(XCOPY) ..\pod\*.bat $(INST_BIN)\*.*
        $(XCOPY) ..\pod\*.pod $(INST_POD)\*.*
@@ -556,7 +597,7 @@ minitest : $(MINIPERL) $(GLOBEXE) $(CONFIGPM)
        cd ..\t && \
        $(MINIPERL) -I..\lib test base/*.t comp/*.t cmd/*.t io/*.t op/*.t pragma/*.t
 
-test : all
+test-prep : all
        $(XCOPY) $(PERLEXE) ..\t\$(NULL)
        $(XCOPY) $(PERLDLL) ..\t\$(NULL)
 .IF "$(CCTYPE)" == "BORLAND"
@@ -564,8 +605,14 @@ test : all
 .ELSE
        $(XCOPY) $(GLOBEXE) ..\t\$(NULL)
 .ENDIF
+
+test : test-prep
        cd ..\t && $(PERLEXE) -I..\lib harness
 
+test-notty : test-prep
+       set PERL_SKIP_TTY_TEST=1 && \
+       cd ..\t && $(PERLEXE) -I.\lib harness
+
 clean : 
        -@erase miniperlmain.obj
        -@erase $(MINIPERL)
@@ -579,7 +626,8 @@ clean :
        -@erase $(CORE_OBJ)
        -@erase $(WIN32_OBJ)
        -@erase $(DLL_OBJ)
-       -@erase ..\*.obj *.obj ..\*.lib ..\*.exp
+       -@erase ..\*.obj ..\*.lib ..\*.exp *.obj *.lib *.exp
+       -@erase ..\t\*.exe ..\t\*.dll ..\t\*.bat
        -@erase *.ilk
        -@erase *.pdb