diff options
author | Gurusamy Sarathy <gsar@cpan.org> | 1998-03-16 08:44:37 +0000 |
---|---|---|
committer | Gurusamy Sarathy <gsar@cpan.org> | 1998-03-16 08:44:37 +0000 |
commit | ac4c12e7aee90d31d5da776601addbfd9d738a5a (patch) | |
tree | 1824760ad266d03442e71a134673c0c0837302f1 /win32 | |
parent | a0824163008c006b841cb7ca91d331692d4ba14a (diff) | |
download | perl-ac4c12e7aee90d31d5da776601addbfd9d738a5a.tar.gz |
[asperl] various changes to get asperl working under Borland
(passes all tests when built under PERL_OBJECT)
p4raw-id: //depot/asperl@809
Diffstat (limited to 'win32')
-rw-r--r-- | win32/Makefile | 773 | ||||
-rw-r--r-- | win32/config_H.bc | 2 | ||||
-rw-r--r-- | win32/config_H.gc | 2 | ||||
-rw-r--r-- | win32/config_H.vc | 2 | ||||
-rw-r--r-- | win32/makedef.pl | 51 | ||||
-rw-r--r-- | win32/makefile.mk | 763 | ||||
-rw-r--r-- | win32/runperl.c | 51 | ||||
-rw-r--r-- | win32/win32.c | 6 | ||||
-rw-r--r-- | win32/win32.h | 16 | ||||
-rw-r--r-- | win32/win32sck.c | 4 |
10 files changed, 854 insertions, 816 deletions
diff --git a/win32/Makefile b/win32/Makefile index 846f9a8429..230ccb1034 100644 --- a/win32/Makefile +++ b/win32/Makefile @@ -10,34 +10,34 @@ # # Set these to wherever you want "nmake install" to put your # newly built perl. -INST_DRV=c: -INST_TOP=$(INST_DRV)\perl5004.5x +INST_DRV = c: +INST_TOP = $(INST_DRV)\perl5004.5x # # uncomment to enable threads-capabilities -#USE_THREADS=define +#USE_THREADS = define # # uncomment next line if you are using Visual C++ 2.x -#CCTYPE=MSVC20 +#CCTYPE = MSVC20 # # uncomment next line if you want to use the perl object -OBJECT=-DPERL_OBJECT +OBJECT = -DPERL_OBJECT # # uncomment next line if you want debug version of perl (big,slow) -#CFG=Debug +#CFG = Debug # # if you have the source for des_fcrypt(), uncomment this and make sure the # file exists (see README.win32) -#CRYPT_SRC=des_fcrypt.c +#CRYPT_SRC = des_fcrypt.c # # if you didn't set CRYPT_SRC and if you have des_fcrypt() available in a # library, uncomment this, and make sure the library exists (see README.win32) -#CRYPT_LIB=des_fcrypt.lib +#CRYPT_LIB = des_fcrypt.lib # # set this if you wish to use perl's malloc @@ -48,37 +48,41 @@ OBJECT=-DPERL_OBJECT # # set the install locations of the compiler include/libraries -#CCHOME = f:\msvc20 -CCHOME = $(MSVCDIR) -CCINCDIR = $(CCHOME)\include -CCLIBDIR = $(CCHOME)\lib +#CCHOME = f:\msvc20 +CCHOME = $(MSVCDIR) +CCINCDIR = $(CCHOME)\include +CCLIBDIR = $(CCHOME)\lib # # set this to your email address (perl will guess a value from # from your loginname and your hostname, which may not be right) -#EMAIL = +#EMAIL = ##################### CHANGE THESE ONLY IF YOU MUST ##################### !IF "$(CRYPT_SRC)$(CRYPT_LIB)" == "" -D_CRYPT=undef +D_CRYPT = undef !ELSE -D_CRYPT=define -CRYPT_FLAG=-DHAVE_DES_FCRYPT +D_CRYPT = define +CRYPT_FLAG = -DHAVE_DES_FCRYPT !ENDIF -!IF "$(OBJECT)" != "" || "$(PERL_MALLOC)" == "" +!IF "$(OBJECT)" != "" PERL_MALLOC = undef !ENDIF -#BUILDOPT = -DMULTIPLICITY -#BUILDOPT = -DPERL_GLOBAL_STRUCT -DMULTIPLICITY -# -DUSE_PERLIO -D__STDC__=1 -DUSE_SFIO -DI_SFIO -I\sfio97\include +!IF "$(PERL_MALLOC)" == "" +PERL_MALLOC = undef +!ENDIF !IF "$(USE_THREADS)" == "" -USE_THREADS = undef +USE_THREADS = undef !ENDIF +#BUILDOPT = -DMULTIPLICITY +#BUILDOPT = -DPERL_GLOBAL_STRUCT -DMULTIPLICITY +# -DUSE_PERLIO -D__STDC__=1 -DUSE_SFIO -DI_SFIO -I\sfio97\include + !IF "$(PROCESSOR_ARCHITECTURE)" == "" PROCESSOR_ARCHITECTURE = x86 !ENDIF @@ -91,72 +95,80 @@ ARCHNAME = MSWin32-$(PROCESSOR_ARCHITECTURE) ARCHDIR = ..\lib\$(ARCHNAME) COREDIR = ..\lib\CORE +AUTODIR = ..\lib\auto # # Programs to compile, build .lib files and link # -CC=cl.exe -LINK32=link.exe -LIB32=$(LINK32) -lib +CC = cl.exe +LINK32 = link.exe +LIB32 = $(LINK32) -lib + # # Options # -!IF "$(RUNTIME)" == "" -! IF "$(OBJECT)" == "-DPERL_OBJECT" -RUNTIME = -MT -! ELSE -RUNTIME = -MD -! ENDIF +!IF "$(OBJECT)" == "-DPERL_OBJECT" +RUNTIME = -MT +# XXX building with -MD fails many tests, but cannot investigate +# because building with debug crashes compiler :-( GSAR )-: +#RUNTIME = -MD +!ELSE +RUNTIME = -MD !ENDIF -INCLUDES = -I..\lib\CORE -#PCHFLAGS = -Fp"$(INTDIR)/modules.pch" -YX -DEFINES = -DWIN32 -D_CONSOLE $(BUILDOPT) $(CRYPT_FLAG) -LOCDEFS = -DPERLDLL -DPERL_CORE -SUBSYS = console + +INCLUDES = -I.\include -I. -I.. +#PCHFLAGS = -Fp"$(INTDIR)/modules.pch" -YX +DEFINES = -DWIN32 -D_CONSOLE $(BUILDOPT) $(CRYPT_FLAG) +LOCDEFS = -DPERLDLL -DPERL_CORE +SUBSYS = console +CXX_FLAG = -TP -GX !IF "$(RUNTIME)" == "-MD" -LIBC = msvcrt.lib -WINIOMAYBE = +LIBC = msvcrt.lib !ELSE -LIBC = -WINIOMAYBE = +LIBC = libcmt.lib !ENDIF !IF "$(CFG)" == "Debug" ! IF "$(CCTYPE)" == "MSVC20" -OPTIMIZE = -Od $(RUNTIME) -Z7 -D_DEBUG -DDEBUGGING +OPTIMIZE = -Od $(RUNTIME) -Z7 -D_DEBUG -DDEBUGGING ! ELSE -OPTIMIZE = -Od -TP $(RUNTIME)d -Z7 -D_DEBUG -DDEBUGGING +OPTIMIZE = -Od $(RUNTIME)d -Z7 -D_DEBUG -DDEBUGGING ! ENDIF -LINK_DBG = -debug -pdb:none +LINK_DBG = -debug -pdb:none !ELSE ! IF "$(CCTYPE)" == "MSVC20" -OPTIMIZE = -O1 $(RUNTIME) -DNDEBUG +OPTIMIZE = -Od $(RUNTIME) -DNDEBUG ! ELSE -OPTIMIZE = -O1 -TP $(RUNTIME) -DNDEBUG +OPTIMIZE = -Od $(RUNTIME) -DNDEBUG ! ENDIF -LINK_DBG = -release +LINK_DBG = -release !ENDIF -# we don't add LIBC here, the compiler does it based on -MD/-MT -LIBFILES = $(CRYPT_LIB) oldnames.lib kernel32.lib user32.lib gdi32.lib \ - winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib \ - oleaut32.lib netapi32.lib uuid.lib wsock32.lib mpr.lib winmm.lib \ - version.lib odbc32.lib odbccp32.lib +!IF "$(OBJECT)" != "" +OPTIMIZE = $(OPTIMIZE) $(CXX_FLAG) +!ENDIF -CFLAGS = -nologo -Gf -W3 $(INCLUDES) $(DEFINES) $(OBJECT) $(LOCDEFS) $(PCHFLAGS) $(OPTIMIZE) +# we don't add LIBC here, the compiler does it based on -MD/-MT +LIBFILES = $(CRYPT_LIB) oldnames.lib kernel32.lib user32.lib gdi32.lib \ + winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib \ + oleaut32.lib netapi32.lib uuid.lib wsock32.lib mpr.lib winmm.lib \ + version.lib odbc32.lib odbccp32.lib -CFLAGSMINI = -nologo -Gf -W3 -I.\include -I. -I.. $(DEFINES) $(LOCDEFS) $(PCHFLAGS) $(OPTIMIZE) +CFLAGS = -nologo -Gf -W3 $(INCLUDES) $(DEFINES) $(LOCDEFS) \ + $(PCHFLAGS) $(OPTIMIZE) +LINK_FLAGS = -nologo $(LINK_DBG) -machine:$(PROCESSOR_ARCHITECTURE) +OBJOUT_FLAG = -Fo +EXEOUT_FLAG = -Fe -LINK_FLAGS = -nologo $(LINK_DBG) -machine:$(PROCESSOR_ARCHITECTURE) -OBJOUT_FLAG = -Fo -EXEOUT_FLAG = -Fe +CFLAGS_O = $(CFLAGS) $(OBJECT) #################### do not edit below this line ####################### ############# NO USER-SERVICEABLE PARTS BEYOND THIS POINT ############## o = .obj + # # Rules # @@ -164,306 +176,273 @@ o = .obj .SUFFIXES : .c $(o) .dll .lib .exe .c$(o): - $(CC) -c $(CFLAGS) $(OBJOUT_FLAG)$@ $< + $(CC) -c $(CFLAGS_O) $(OBJOUT_FLAG)$@ $< + +.y.c: + $(NOOP) $(o).dll: $(LINK32) -dll -subsystem:windows -implib:$(*B).lib -def:$(*B).def \ -out:$@ $(LINK_FLAGS) $(LIBFILES) $< $(LIBPERL) -.y.c: - $(NOOP) - # -INST_BIN=$(INST_TOP)\bin -INST_LIB=$(INST_TOP)\lib -INST_POD=$(INST_LIB)\pod -INST_HTML=$(INST_POD)\html -LIBDIR=..\lib -EXTDIR=..\ext -PODDIR=..\pod -EXTUTILSDIR=$(LIBDIR)\extutils +INST_BIN = $(INST_TOP)\bin +INST_LIB = $(INST_TOP)\lib +INST_POD = $(INST_LIB)\pod +INST_HTML = $(INST_POD)\html +LIBDIR = ..\lib +EXTDIR = ..\ext +PODDIR = ..\pod +EXTUTILSDIR = $(LIBDIR)\extutils # # various targets -!IF "$(OBJECT)" == "-DPERL_OBJECT" -PERLIMPLIB=..\perlcore.lib -PERLDLL=..\perlcore.dll +!IF "$(OBJECT)" == "-DPERL_OBJECT" +PERLIMPLIB = ..\perlcore.lib +PERLDLL = ..\perlcore.dll !ELSE -PERLIMPLIB=..\perl.lib -PERLDLL=..\perl.dll +PERLIMPLIB = ..\perl.lib +PERLDLL = ..\perl.dll !ENDIF -MINIPERL=..\miniperl.exe -MINIDIR=.\mini -PERLEXE=..\perl.exe -GLOBEXE=..\perlglob.exe -CONFIGPM=..\lib\Config.pm -MINIMOD=..\lib\ExtUtils\Miniperl.pm -X2P=..\x2p\a2p.exe - -PL2BAT=bin\pl2bat.pl -GLOBBAT = bin\perlglob.bat - -MAKE=nmake -nologo -CFGSH_TMPL = config.vc -CFGH_TMPL = config_H.vc -PERL95EXE=..\perl95.exe -XCOPY=xcopy /f /r /i /d -RCOPY=xcopy /f /r /i /e /d -NOOP=@echo -NULL= - -EXTRA_SRC = $(EXTRA_SRC) $(CRYPT_SRC) + +MINIPERL = ..\miniperl.exe +MINIDIR = .\mini +PERLEXE = ..\perl.exe +GLOBEXE = ..\perlglob.exe +CONFIGPM = ..\lib\Config.pm +MINIMOD = ..\lib\ExtUtils\Miniperl.pm +X2P = ..\x2p\a2p.exe + +PL2BAT = bin\pl2bat.pl +GLOBBAT = bin\perlglob.bat + +MAKE = nmake -nologo + +CFGSH_TMPL = config.vc +CFGH_TMPL = config_H.vc +PERL95EXE = ..\perl95.exe + +XCOPY = xcopy /f /r /i /d +RCOPY = xcopy /f /r /i /e /d +NOOP = @echo +NULL = + +# +# filenames given to xsubpp must have forward slashes (since it puts +# full pathnames in #line strings) +XSUBPP = ..\$(MINIPERL) -I..\..\lib ..\$(EXTUTILSDIR)\xsubpp \ + -C++ -prototypes + +CORE_SRC = \ + ..\av.c \ + ..\byterun.c \ + ..\deb.c \ + ..\doio.c \ + ..\doop.c \ + ..\dump.c \ + ..\globals.c \ + ..\gv.c \ + ..\hv.c \ + ..\mg.c \ + ..\op.c \ + ..\perl.c \ + ..\perly.c \ + ..\pp.c \ + ..\pp_ctl.c \ + ..\pp_hot.c \ + ..\pp_sys.c \ + ..\regcomp.c \ + ..\regexec.c \ + ..\run.c \ + ..\scope.c \ + ..\sv.c \ + ..\taint.c \ + ..\toke.c \ + ..\universal.c \ + ..\util.c + +CORE_SRC = $(CORE_SRC) $(CRYPT_SRC) !IF "$(PERL_MALLOC)" == "define" -EXTRA_SRC = $(EXTRA_SRC) ..\malloc.c +CORE_SRC = $(CORE_SRC) ..\malloc.c !ENDIF !IF "$(OBJECT)" == "" -EXTRA_SRC = $(EXTRA_SRC) ..\perlio.c +CORE_SRC = $(CORE_SRC) ..\perlio.c !ENDIF -EXTRA_OBJ = $(EXTRA_SRC:.c=.obj) +WIN32_SRC = \ + .\win32.c \ + .\win32sck.c -# -# filenames given to xsubpp must have forward slashes (since it puts -# full pathnames in #line strings) -XSUBPP=..\$(MINIPERL) -I..\..\lib ..\$(EXTUTILSDIR)\xsubpp -C++ -prototypes - -CORE_C= ..\av.c \ - ..\byterun.c \ - ..\deb.c \ - ..\doio.c \ - ..\doop.c \ - ..\dump.c \ - ..\globals.c \ - ..\gv.c \ - ..\hv.c \ - ..\mg.c \ - ..\op.c \ - ..\perl.c \ - ..\perly.c \ - ..\pp.c \ - ..\pp_ctl.c \ - ..\pp_hot.c \ - ..\pp_sys.c \ - ..\regcomp.c \ - ..\regexec.c \ - ..\run.c \ - ..\scope.c \ - ..\sv.c \ - ..\taint.c \ - ..\toke.c \ - ..\universal.c \ - ..\util.c \ - $(EXTRA_SRC) - - -CORE_OBJ= ..\av$(o) \ - ..\byterun$(o) \ - ..\deb$(o) \ - ..\doio$(o) \ - ..\doop$(o) \ - ..\dump$(o) \ - ..\globals$(o) \ - ..\gv$(o) \ - ..\hv$(o) \ - ..\mg$(o) \ - ..\op$(o) \ - ..\perl$(o) \ - ..\perly$(o) \ - ..\pp$(o) \ - ..\pp_ctl$(o) \ - ..\pp_hot$(o) \ - ..\pp_sys$(o) \ - ..\regcomp$(o) \ - ..\regexec$(o) \ - ..\run$(o) \ - ..\scope$(o) \ - ..\sv$(o) \ - ..\taint$(o) \ - ..\toke$(o) \ - ..\universal$(o)\ - ..\util$(o) \ - $(EXTRA_OBJ) - -MINI_OBJ= $(MINIDIR)\av$(o) \ - $(MINIDIR)\byterun$(o) \ - $(MINIDIR)\miniperlmain$(o) \ - $(MINIDIR)\deb$(o) \ - $(MINIDIR)\doio$(o) \ - $(MINIDIR)\doop$(o) \ - $(MINIDIR)\dump$(o) \ - $(MINIDIR)\globals$(o) \ - $(MINIDIR)\gv$(o) \ - $(MINIDIR)\hv$(o) \ - $(MINIDIR)\mg$(o) \ - $(MINIDIR)\op$(o) \ - $(MINIDIR)\perl$(o) \ - $(MINIDIR)\perly$(o) \ - $(MINIDIR)\pp$(o) \ - $(MINIDIR)\pp_ctl$(o) \ - $(MINIDIR)\pp_hot$(o) \ - $(MINIDIR)\pp_sys$(o) \ - $(MINIDIR)\regcomp$(o) \ - $(MINIDIR)\regexec$(o) \ - $(MINIDIR)\run$(o) \ - $(MINIDIR)\scope$(o) \ - $(MINIDIR)\sv$(o) \ - $(MINIDIR)\taint$(o) \ - $(MINIDIR)\toke$(o) \ - $(MINIDIR)\universal$(o)\ - $(MINIDIR)\util$(o) \ - $(MINIDIR)\malloc$(o) \ - $(MINIDIR)\perlio$(o) \ - -MINIWIN=$(MINIDIR)\win32$(o) \ - $(MINIDIR)\win32sck$(o) \ - $(MINIDIR)\win32thread$(o) - -WIN32_C = perllib.c \ - win32.c \ - win32sck.c \ - win32thread.c - -!IF "$(USE_THREADS)" == "undef" && "$(OBJECT)" == "-DPERL_OBJECT" -WIN32_OBJ = win32$(o) \ - win32sck$(o) \ -!ELSE -WIN32_OBJ = win32$(o) \ - win32sck$(o) \ - win32thread$(o) +!IF "$(USE_THREADS)" == "define" || "$(OBJECT)" == "" +WIN32_SRC = $(WIN32_SRC) .\win32thread.c !ENDIF -PERL95_OBJ = perl95$(o) \ - win32mt$(o) \ - win32sckmt$(o) +PERL95_SRC = \ + perl95.c \ + win32mt.c \ + win32sckmt.c +DLL_SRC = $(DYNALOADER).c -!IF "$(OBJECT)" == "-DPERL_OBJECT" -DLL_OBJ = $(DYNALOADER)$(o) + +!IF "$(OBJECT)" == "" +DLL_SRC = $(DLL_SRC) perllib.c +!ENDIF + +X2P_SRC = \ + ..\x2p\a2p.c \ + ..\x2p\hash.c \ + ..\x2p\str.c \ + ..\x2p\util.c \ + ..\x2p\walk.c + +CORE_H = \ + ..\av.h \ + ..\byterun.h \ + ..\bytecode.h \ + ..\cop.h \ + ..\cv.h \ + ..\dosish.h \ + ..\embed.h \ + ..\form.h \ + ..\gv.h \ + ..\handy.h \ + ..\hv.h \ + ..\mg.h \ + ..\nostdio.h \ + ..\op.h \ + ..\opcode.h \ + ..\perl.h \ + ..\perlio.h \ + ..\perlsdio.h \ + ..\perlsfio.h \ + ..\perly.h \ + ..\pp.h \ + ..\proto.h \ + ..\regexp.h \ + ..\scope.h \ + ..\sv.h \ + ..\thread.h \ + ..\unixish.h \ + ..\util.h \ + ..\XSUB.h \ + .\config.h \ + ..\EXTERN.h \ + ..\perlvars.h \ + ..\intrpvar.h \ + ..\thrdvar.h \ + .\include\dirent.h \ + .\include\netdb.h \ + .\include\sys\socket.h \ + .\win32.h + +CORE_OBJ = $(CORE_SRC:.c=.obj) +WIN32_OBJ = $(WIN32_SRC:.c=.obj) +MINICORE_OBJ = $(CORE_OBJ:..\=.\mini\) \ + $(MINIDIR)\perlio$(o) \ + $(MINIDIR)\miniperlmain$(o) +MINIWIN32_OBJ = $(WIN32_OBJ:.\=.\mini\) +MINI_OBJ = $(MINICORE_OBJ) $(MINIWIN32_OBJ) +PERL95_OBJ = $(PERL95_SRC:.c=.obj) DynaLoadmt$(o) +DLL_OBJ = $(DLL_SRC:.c=.obj) +X2P_OBJ = $(X2P_SRC:.c=.obj) + +PERLDLL_OBJ = $(CORE_OBJ) +PERLEXE_OBJ = perlmain$(o) + +!IF "$(OBJECT)" == "" +PERLDLL_OBJ = $(PERLDLL_OBJ) $(WIN32_OBJ) $(DLL_OBJ) !ELSE -DLL_OBJ = perllib$(o) $(DYNALOADER)$(o) +PERLEXE_OBJ = $(PERLEXE_OBJ) $(WIN32_OBJ) $(DLL_OBJ) !ENDIF -X2P_OBJ = ..\x2p\a2p$(o) \ - ..\x2p\hash$(o) \ - ..\x2p\str$(o) \ - ..\x2p\util$(o) \ - ..\x2p\walk$(o) - -CORE_H = ..\av.h \ - ..\byterun.h \ - ..\bytecode.h \ - ..\cop.h \ - ..\cv.h \ - ..\dosish.h \ - ..\embed.h \ - ..\form.h \ - ..\gv.h \ - ..\handy.h \ - ..\hv.h \ - ..\mg.h \ - ..\nostdio.h \ - ..\op.h \ - ..\opcode.h \ - ..\perl.h \ - ..\perlio.h \ - ..\perlsdio.h \ - ..\perlsfio.h \ - ..\perly.h \ - ..\pp.h \ - ..\proto.h \ - ..\regexp.h \ - ..\scope.h \ - ..\sv.h \ - ..\thread.h \ - ..\unixish.h \ - ..\util.h \ - ..\XSUB.h \ - .\config.h \ - ..\EXTERN.h \ - ..\perlvars.h \ - ..\intrpvar.h \ - ..\thrdvar.h \ - .\include\dirent.h \ - .\include\netdb.h \ - .\include\sys\socket.h \ - .\win32.h - -DYNAMIC_EXT=Socket IO Fcntl Opcode SDBM_File attrs Thread B -STATIC_EXT=DynaLoader - -DYNALOADER=$(EXTDIR)\DynaLoader\DynaLoader -SOCKET=$(EXTDIR)\Socket\Socket -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 -B=$(EXTDIR)\B\B - -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 -B_DLL=..\lib\auto\B\B.dll - -STATICLINKMODULES=DynaLoader -DYNALOADMODULES= \ - $(SOCKET_DLL) \ - $(FCNTL_DLL) \ - $(OPCODE_DLL) \ - $(SDBM_FILE_DLL)\ - $(IO_DLL) \ - $(ATTRS_DLL) -# $(THREAD_DLL) \ -# $(B_DLL) - -POD2HTML=$(PODDIR)\pod2html -POD2MAN=$(PODDIR)\pod2man -POD2LATEX=$(PODDIR)\pod2latex -POD2TEXT=$(PODDIR)\pod2text - -CFG_VARS= "INST_DRV=$(INST_DRV)" \ - "INST_TOP=$(INST_TOP)" \ - "archname=$(ARCHNAME)" \ - "cc=$(CC)" \ - "ccflags=$(OPTIMIZE) $(DEFINES) $(OBJECT)"\ - "cf_email=$(EMAIL)" \ - "d_crypt=$(D_CRYPT)" \ - "d_mymalloc=$(PERL_MALLOC)" \ - "libs=$(LIBFILES)" \ - "incpath=$(CCINCDIR)" \ - "libperl=$(PERLIMPLIB)" \ - "libpth=$(CCLIBDIR)" \ - "libc=$(LIBC)" \ - "static_ext=$(STATIC_EXT)" \ - "dynamic_ext=$(DYNAMIC_EXT)" \ - "usethreads=$(USE_THREADS)" \ - "LINK_FLAGS=$(LINK_FLAGS)" \ - "optimize=$(OPTIMIZE)" +DYNAMIC_EXT = Socket IO Fcntl Opcode SDBM_File attrs Thread B +STATIC_EXT = DynaLoader + +DYNALOADER = $(EXTDIR)\DynaLoader\DynaLoader +SOCKET = $(EXTDIR)\Socket\Socket +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 +B = $(EXTDIR)\B\B + +SOCKET_DLL = $(AUTODIR)\Socket\Socket.dll +FCNTL_DLL = $(AUTODIR)\Fcntl\Fcntl.dll +OPCODE_DLL = $(AUTODIR)\Opcode\Opcode.dll +SDBM_FILE_DLL = $(AUTODIR)\SDBM_File\SDBM_File.dll +IO_DLL = $(AUTODIR)\IO\IO.dll +ATTRS_DLL = $(AUTODIR)\attrs\attrs.dll +THREAD_DLL = $(AUTODIR)\Thread\Thread.dll +B_DLL = $(AUTODIR)\B\B.dll + +EXTENSION_C = \ + $(SOCKET).c \ + $(FCNTL).c \ + $(OPCODE).c \ + $(SDBM_FILE).c \ + $(IO).c \ + $(ATTRS).c \ + $(THREAD).c \ + $(B).c + +EXTENSION_DLL = \ + $(SOCKET_DLL) \ + $(FCNTL_DLL) \ + $(OPCODE_DLL) \ + $(SDBM_FILE_DLL)\ + $(IO_DLL) \ + $(ATTRS_DLL) +# $(THREAD_DLL) \ +# $(B_DLL) + +POD2HTML = $(PODDIR)\pod2html +POD2MAN = $(PODDIR)\pod2man +POD2LATEX = $(PODDIR)\pod2latex +POD2TEXT = $(PODDIR)\pod2text + +CFG_VARS = \ + "INST_DRV=$(INST_DRV)" \ + "INST_TOP=$(INST_TOP)" \ + "archname=$(ARCHNAME)" \ + "cc=$(CC)" \ + "ccflags=$(OPTIMIZE) $(DEFINES) $(OBJECT)" \ + "cf_email=$(EMAIL)" \ + "d_crypt=$(D_CRYPT)" \ + "d_mymalloc=$(PERL_MALLOC)" \ + "libs=$(LIBFILES)" \ + "incpath=$(CCINCDIR)" \ + "libperl=$(PERLIMPLIB)" \ + "libpth=$(CCLIBDIR)" \ + "libc=$(LIBC)" \ + "make=nmake" \ + "static_ext=$(STATIC_EXT)" \ + "dynamic_ext=$(DYNAMIC_EXT)" \ + "usethreads=$(USE_THREADS)" \ + "LINK_FLAGS=$(LINK_FLAGS)" \ + "optimize=$(OPTIMIZE)" # # Top targets # -all: $(GLOBEXE) $(X2P) $(MINIMOD) $(CONFIGPM) $(PERLEXE) $(PERL95EXE) $(DYNALOADMODULES) +all : $(GLOBEXE) $(MINIMOD) $(CONFIGPM) $(PERLEXE) $(PERL95EXE) $(X2P) \ + $(EXTENSION_DLL) $(DYNALOADER)$(o) : $(DYNALOADER).c $(CORE_H) $(EXTDIR)\DynaLoader\dlutils.c #------------------------------------------------------------ -$(GLOBEXE): perlglob$(o) +$(GLOBEXE) : perlglob$(o) $(LINK32) $(LINK_FLAGS) $(LIBFILES) -out:$@ -subsystem:$(SUBSYS) \ perlglob$(o) setargv$(o) perlglob$(o) : perlglob.c - config.w32 : $(CFGSH_TMPL) copy $(CFGSH_TMPL) config.w32 @@ -474,60 +453,58 @@ config.w32 : $(CFGSH_TMPL) ..\config.sh : config.w32 $(MINIPERL) config_sh.PL $(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.{b,v,g}c and make this target once for each supported +# compiler (e.g. `dmake CCTYPE=BORLAND regen_config_h`) +regen_config_h: + perl config_sh.PL $(CFG_VARS) $(CFGSH_TMPL) > ..\config.sh + cd .. + -del /f perl.exe + perl configpm + cd win32 + -del /f $(CFGH_TMPL) + -mkdir ..\lib\CORE + -perl -I..\lib config_h.PL + rename config.h $(CFGH_TMPL) + $(CONFIGPM) : $(MINIPERL) ..\config.sh config_h.PL ..\minimod.pl cd .. && miniperl configpm if exist lib\* $(RCOPY) lib\*.* ..\lib\$(NULL) $(XCOPY) ..\*.h $(COREDIR)\*.* $(XCOPY) *.h $(COREDIR)\*.* $(RCOPY) include $(COREDIR)\*.* - $(MINIPERL) -I..\lib config_h.PL || $(MAKE) CCTYPE=$(CCTYPE) \ - RUNTIME=$(RUNTIME) CFG=$(CFG) $(CONFIGPM) + $(MINIPERL) -I..\lib config_h.PL || $(MAKE) $(MAKEFLAGS) $(CONFIGPM) -$(MINIPERL) : $(MINIDIR) $(MINI_OBJ) $(MINIWIN) +$(MINIPERL) : $(MINIDIR) $(MINI_OBJ) $(LINK32) -subsystem:console -out:$@ @<< - $(LINK_FLAGS) $(LIBFILES) $(MINI_OBJ) $(MINIWIN) + $(LINK_FLAGS) $(LIBFILES) $(MINI_OBJ) << -$(MINIDIR) : +$(MINIDIR) : if not exist "$(MINIDIR)" mkdir "$(MINIDIR)" -$(MINI_OBJ) : $(CORE_H) - $(CC) -c $(CFLAGSMINI) $(OBJOUT_FLAG)$@ ..\$(*F).c +$(MINICORE_OBJ) : $(CORE_H) + $(CC) -c $(CFLAGS) $(OBJOUT_FLAG)$@ ..\$(*F).c -$(MINIWIN) : $(CORE_H) - $(CC) -c $(CFLAGSMINI) $(OBJOUT_FLAG)$@ $(*F).c +$(MINIWIN32_OBJ) : $(CORE_H) + $(CC) -c $(CFLAGS) $(OBJOUT_FLAG)$@ $(*F).c -$(WIN32_OBJ) : $(CORE_H) -$(CORE_OBJ) : $(CORE_H) -$(DLL_OBJ) : $(CORE_H) -$(PERL95_OBJ) : $(CORE_H) -$(X2P_OBJ) : $(CORE_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) - -!IF "$(OBJECT)" == "-DPERL_OBJECT" -perldll.def : $(CONFIGPM) - echo LIBRARY PerlCore >perldll.def - echo DESCRIPTION 'Perl interpreter' >>perldll.def - echo EXPORTS >>perldll.def - echo perl_alloc >>perldll.def - - -$(PERLDLL): perldll.def $(CORE_OBJ) - $(LINK32) -dll -def:perldll.def -out:$@ @<< - $(LINK_FLAGS) $(LIBFILES) $(CORE_OBJ) -<< - $(XCOPY) $(PERLIMPLIB) $(COREDIR) -!ELSE -perldll.def : $(CONFIGPM) ..\global.sym makedef.pl - $(MINIPERL) -w makedef.pl $(OPTIMIZE) $(DEFINES) \ +perldll.def : $(MINIPERL) $(CONFIGPM) ..\global.sym makedef.pl + $(MINIPERL) -w makedef.pl $(OPTIMIZE) $(DEFINES) $(OBJECT) \ CCTYPE=$(CCTYPE) > perldll.def -$(PERLDLL): perldll.def $(CORE_OBJ) $(WIN32_OBJ) $(DLL_OBJ) +$(PERLDLL): perldll.def $(PERLDLL_OBJ) $(LINK32) -dll -def:perldll.def -out:$@ @<< - $(LINK_FLAGS) $(LIBFILES) $(CORE_OBJ) $(WIN32_OBJ) $(DLL_OBJ) + $(LINK_FLAGS) $(LIBFILES) $(PERLDLL_OBJ) << $(XCOPY) $(PERLIMPLIB) $(COREDIR) -!ENDIF perl.def : $(MINIPERL) makeperldef.pl $(MINIPERL) -I..\lib makeperldef.pl $(NULL) > perl.def @@ -536,79 +513,63 @@ $(MINIMOD) : $(MINIPERL) ..\minimod.pl cd .. && miniperl minimod.pl > lib\ExtUtils\Miniperl.pm ..\x2p\a2p$(o) : ..\x2p\a2p.c - $(CC) $(CFLAGSMINI) $(OBJOUT_FLAG)$@ -c ..\x2p\a2p.c + $(CC) -I..\x2p $(CFLAGS) $(OBJOUT_FLAG)$@ -c ..\x2p\a2p.c ..\x2p\hash$(o) : ..\x2p\hash.c - $(CC) $(CFLAGSMINI) $(OBJOUT_FLAG)$@ -c ..\x2p\hash.c + $(CC) -I..\x2p $(CFLAGS) $(OBJOUT_FLAG)$@ -c ..\x2p\hash.c ..\x2p\str$(o) : ..\x2p\str.c - $(CC) $(CFLAGSMINI) $(OBJOUT_FLAG)$@ -c ..\x2p\str.c + $(CC) -I..\x2p $(CFLAGS) $(OBJOUT_FLAG)$@ -c ..\x2p\str.c ..\x2p\util$(o) : ..\x2p\util.c - $(CC) $(CFLAGSMINI) $(OBJOUT_FLAG)$@ -c ..\x2p\util.c + $(CC) -I..\x2p $(CFLAGS) $(OBJOUT_FLAG)$@ -c ..\x2p\util.c ..\x2p\walk$(o) : ..\x2p\walk.c - $(CC) $(CFLAGSMINI) $(OBJOUT_FLAG)$@ -c ..\x2p\walk.c + $(CC) -I..\x2p $(CFLAGS) $(OBJOUT_FLAG)$@ -c ..\x2p\walk.c -$(X2P) : $(X2P_OBJ) +$(X2P) : $(MINIPERL) $(X2P_OBJ) + $(MINIPERL) ..\x2p\find2perl.PL + $(MINIPERL) ..\x2p\s2p.PL $(LINK32) -subsystem:console -out:$@ @<< - $(LINK_FLAGS) $(LIBFILES) $(X2P_OBJ) + $(LINK_FLAGS) $(LIBFILES) $(X2P_OBJ) << perlmain.c : runperl.c copy runperl.c perlmain.c perlmain$(o) : perlmain.c - $(CC) $(CFLAGS) -UPERLDLL -c perlmain.c + $(CC) $(CFLAGS_O) -UPERLDLL $(EXEOUT_FLAG)$@ -c perlmain.c + +$(PERLEXE): $(PERLDLL) $(CONFIGPM) $(PERLEXE_OBJ) + $(LINK32) -subsystem:console -out:$@ $(LINK_FLAGS) $(LIBFILES) \ + $(PERLEXE_OBJ) $(PERLIMPLIB) + copy splittree.pl .. + $(MINIPERL) -I..\lib ..\splittree.pl "../LIB" $(AUTODIR) perl95.c : runperl.c copy runperl.c perl95.c perl95$(o) : perl95.c - $(CC) $(CFLAGS) -MT -UPERLDLL -DWIN95FIX -c perl95.c + $(CC) $(CFLAGS_O) -MT -UPERLDLL -DWIN95FIX -c perl95.c win32sckmt$(o) : win32sck.c - $(CC) $(CFLAGS) -MT -UPERLDLL -DWIN95FIX -c $(OBJOUT_FLAG)win32sckmt$(o) win32sck.c + $(CC) $(CFLAGS_O) -MT -UPERLDLL -DWIN95FIX -c \ + $(OBJOUT_FLAG)win32sckmt$(o) win32sck.c win32mt$(o) : win32.c - $(CC) $(CFLAGS) -MT -UPERLDLL -DWIN95FIX -c $(OBJOUT_FLAG)win32mt$(o) win32.c - - -!IF "$(OBJECT)" == "-DPERL_OBJECT" -$(PERLEXE): $(PERLDLL) $(CONFIGPM) perlmain$(o) $(DLL_OBJ) $(WIN32_OBJ) - $(LINK32) -subsystem:console -out:perl.exe $(LINK_FLAGS) $(LIBFILES) \ - perlmain$(o) $(DLL_OBJ) $(WIN32_OBJ) $(WINIOMAYBE) $(PERLIMPLIB) - copy perl.exe $@ - del perl.exe - copy splittree.pl .. - $(MINIPERL) -I..\lib ..\splittree.pl "../LIB" "../LIB/auto" + $(CC) $(CFLAGS_O) -MT -UPERLDLL -DWIN95FIX -c \ + $(OBJOUT_FLAG)win32mt$(o) win32.c -$(PERL95EXE): $(PERLDLL) $(CONFIGPM) $(PERL95_OBJ) $(DLL_OBJ) - $(LINK32) -subsystem:console -out:perl95.exe $(LINK_FLAGS) $(LIBFILES) \ - $(DLL_OBJ) $(PERL95_OBJ) $(PERLIMPLIB) - copy perl95.exe $@ - del perl95.exe - -!ELSE - -$(PERLEXE): $(PERLDLL) $(CONFIGPM) perlmain$(o) - $(LINK32) -subsystem:console -out:perl.exe $(LINK_FLAGS) $(LIBFILES) \ - perlmain$(o) $(WINIOMAYBE) $(PERLIMPLIB) - copy perl.exe $@ - del perl.exe - copy splittree.pl .. - $(MINIPERL) -I..\lib ..\splittree.pl "../LIB" "../LIB/auto" +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 -out:perl95.exe $(LINK_FLAGS) $(LIBFILES) \ - $(PERL95_OBJ) $(PERLIMPLIB) - copy perl95.exe $@ - del perl95.exe + $(LINK32) -subsystem:console -nodefaultlib -out:$@ $(LINK_FLAGS) \ + $(LIBFILES) $(PERL95_OBJ) $(PERLIMPLIB) libcmt.lib -!ENDIF - -$(DYNALOADER).c: $(CONFIGPM) $(EXTDIR)\DynaLoader\dl_win32.xs - if not exist ..\lib\auto mkdir ..\lib\auto +$(DYNALOADER).c: $(MINIPERL) $(EXTDIR)\DynaLoader\dl_win32.xs $(CONFIGPM) + if not exist $(AUTODIR) mkdir $(AUTODIR) $(XCOPY) $(EXTDIR)\$(*B)\$(*B).pm $(LIBDIR)\$(NULL) cd $(EXTDIR)\$(*B) $(XSUBPP) dl_win32.xs > $(*B).c @@ -635,7 +596,7 @@ $(ATTRS_DLL): $(PERLEXE) $(ATTRS).xs $(MAKE) cd ..\..\win32 -$(IO_DLL): $(PERLEXE) $(CONFIGPM) $(IO).xs +$(IO_DLL): $(PERLEXE) $(IO).xs cd $(EXTDIR)\$(*B) ..\..\miniperl -I..\..\lib Makefile.PL INSTALLDIRS=perl $(MAKE) @@ -667,7 +628,7 @@ $(SOCKET_DLL): $(PERLEXE) $(SOCKET).xs doc: $(PERLEXE) cd ..\pod - $(MAKE) OBJECTDEF=$(OBJECT) -f ..\win32\pod.mak checkpods pod2html pod2latex \ + $(MAKE) -f ..\win32\pod.mak checkpods pod2html pod2latex \ pod2man pod2text $(XCOPY) *.bat ..\win32\bin\*.* cd ..\win32 @@ -683,27 +644,27 @@ utils: $(PERLEXE) $(PERLEXE) ..\win32\$(PL2BAT) h2xs perldoc pstruct $(XCOPY) *.bat ..\win32\bin\*.* cd ..\win32 - $(PERLEXE) $(PL2BAT) bin\network.pl bin\www.pl bin\runperl.pl \ + $(PERLEXE) -I..\lib $(PL2BAT) bin\network.pl bin\www.pl bin\runperl.pl \ bin\pl2bat.pl bin\perlglob.pl distclean: clean -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) $(ATTRS_DLL) $(THREAD_DLL) $(B_DLL) - -del /f $(SOCKET).c $(IO).c $(SDBM_FILE).c $(FCNTL).c $(OPCODE).c \ - $(DYNALOADER).c $(ATTRS).c $(THREAD).c $(B).c + -del /f $(EXTENSION_DLL) + -del /f $(EXTENSION_C) -del /f $(PODDIR)\*.html -del /f $(PODDIR)\*.bat - -del /f ..\config.sh ..\splittree.pl perlmain.c dlutils.c \ - config.h.new perl95.c + -del /f ..\config.sh ..\splittree.pl perlmain.c dlutils.c config.h.new + -del /f ..\lib\Config.pm + -del /f perl95.c -del /f bin\*.bat - -rmdir /s /q ..\lib\auto || rmdir /s ..\lib\auto - -rmdir /s /q $(COREDIR) || rmdir /s $(COREDIR) cd $(EXTDIR) -del /s *.lib *.def *.map *.bs Makefile *$(o) pm_to_blib cd ..\win32 + -rmdir /s /q $(AUTODIR) || rmdir /s $(AUTODIR) + -rmdir /s /q $(COREDIR) || rmdir /s $(COREDIR) + -rmdir /s /q $(MINIDIR) || rmdir /s $(MINIDIR) install : all doc utils $(PERLEXE) ..\installperl @@ -715,7 +676,7 @@ install : all doc utils inst_lib : $(CONFIGPM) copy splittree.pl .. - $(MINIPERL) -I..\lib ..\splittree.pl "../LIB" "../LIB/auto" + $(MINIPERL) -I..\lib ..\splittree.pl "../LIB" $(AUTODIR) $(RCOPY) ..\lib $(INST_LIB)\*.* minitest : $(MINIPERL) $(GLOBEXE) $(CONFIGPM) utils @@ -744,6 +705,7 @@ test-notty : test-prep cd ..\win32 clean : + -@erase miniperlmain$(o) -@erase $(MINIPERL) -@erase perlglob$(o) -@erase perlmain$(o) @@ -753,7 +715,7 @@ clean : -@erase $(PERLEXE) -@erase $(PERLDLL) -@erase $(CORE_OBJ) - if exist "$(MINIDIR)\$(NULL)" rmdir /s /q "$(MINIDIR)" + -rmdir /s /q "$(MINIDIR)" -@erase $(WIN32_OBJ) -@erase $(DLL_OBJ) -@erase $(X2P_OBJ) @@ -762,4 +724,3 @@ clean : -@erase ..\x2p\*.exe ..\x2p\*.bat -@erase *.ilk -@erase *.pdb - diff --git a/win32/config_H.bc b/win32/config_H.bc index bcdc0b8d78..a5306b12c5 100644 --- a/win32/config_H.bc +++ b/win32/config_H.bc @@ -1150,7 +1150,7 @@ /* MYMALLOC: * This symbol, if defined, indicates that we're using our own malloc. */ -#define MYMALLOC /**/ +/*#define MYMALLOC /**/ /* Mode_t: * This symbol holds the type used to declare file modes diff --git a/win32/config_H.gc b/win32/config_H.gc index eef1a63b5c..f053e53663 100644 --- a/win32/config_H.gc +++ b/win32/config_H.gc @@ -1150,7 +1150,7 @@ /* MYMALLOC: * This symbol, if defined, indicates that we're using our own malloc. */ -#define MYMALLOC /**/ +/*#define MYMALLOC /**/ /* Mode_t: * This symbol holds the type used to declare file modes diff --git a/win32/config_H.vc b/win32/config_H.vc index ac3487f5fb..57959238e0 100644 --- a/win32/config_H.vc +++ b/win32/config_H.vc @@ -1157,7 +1157,7 @@ /* MYMALLOC: * This symbol, if defined, indicates that we're using our own malloc. */ -#define MYMALLOC /**/ +/*#define MYMALLOC /**/ /* Mode_t: * This symbol holds the type used to declare file modes diff --git a/win32/makedef.pl b/win32/makedef.pl index 07dfa04942..e688eb5075 100644 --- a/win32/makedef.pl +++ b/win32/makedef.pl @@ -33,6 +33,14 @@ close(CFG); warn join(' ',keys %define)."\n"; +if ($define{PERL_OBJECT}) { + print "LIBRARY PerlCore\n"; + print "DESCRIPTION 'Perl interpreter'\n"; + print "EXPORTS\n"; + output_symbol("perl_alloc"); + exit(0); +} + if ($CCTYPE ne 'GCC') { print "LIBRARY Perl\n"; @@ -386,25 +394,7 @@ while (<DATA>) { foreach my $symbol (sort keys %export) { - if ($CCTYPE eq "BORLAND") { - # workaround Borland quirk by exporting both the straight - # name and a name with leading underscore. Note the - # alias *must* come after the symbol itself, if both - # are to be exported. (Linker bug?) - print "\t_$symbol\n"; - print "\t$symbol = _$symbol\n"; - } - elsif ($CCTYPE eq 'GCC') { - # Symbols have leading _ whole process is $%£"% slow - # so skip aliases for now - print "\t$symbol\n"; - } - else { - # for binary coexistence, export both the symbol and - # alias with leading underscore - print "\t$symbol\n"; - print "\t_$symbol = $symbol\n"; - } + output_symbol($symbol); } sub emit_symbol { @@ -413,6 +403,29 @@ sub emit_symbol { $export{$symbol} = 1; } +sub output_symbol { + my $symbol = shift; + if ($CCTYPE eq "BORLAND") { + # workaround Borland quirk by exporting both the straight + # name and a name with leading underscore. Note the + # alias *must* come after the symbol itself, if both + # are to be exported. (Linker bug?) + print "\t_$symbol\n"; + print "\t$symbol = _$symbol\n"; + } + elsif ($CCTYPE eq 'GCC') { + # Symbols have leading _ whole process is $%£"% slow + # so skip aliases for now + print "\t$symbol\n"; + } + else { + # for binary coexistence, export both the symbol and + # alias with leading underscore + print "\t$symbol\n"; + print "\t_$symbol = $symbol\n"; + } +} + 1; __DATA__ # extra globals not included above. diff --git a/win32/makefile.mk b/win32/makefile.mk index 789cf827c3..ee329b90d6 100644 --- a/win32/makefile.mk +++ b/win32/makefile.mk @@ -28,7 +28,7 @@ CCTYPE *= BORLAND # # uncomment next line if you want to use the perl object -#OBJECT *= -DPERL_OBJECT +OBJECT *= -DPERL_OBJECT # # uncomment next line if you want debug version of perl (big,slow) @@ -49,7 +49,7 @@ CCTYPE *= BORLAND # 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. -PERL_MALLOC *= define +#PERL_MALLOC *= define # # set the install locations of the compiler include/libraries @@ -67,29 +67,29 @@ CCLIBDIR *= $(CCHOME)\lib # # set this to your email address (perl will guess a value from # from your loginname and your hostname, which may not be right) -#EMAIL *= +#EMAIL *= ##################### CHANGE THESE ONLY IF YOU MUST ##################### .IF "$(CRYPT_SRC)$(CRYPT_LIB)" == "" -D_CRYPT=undef +D_CRYPT = undef .ELSE -D_CRYPT=define -CRYPT_FLAG=-DHAVE_DES_FCRYPT +D_CRYPT = define +CRYPT_FLAG = -DHAVE_DES_FCRYPT .ENDIF -.IF "$(PERL_MALLOC)" == "" -PERL_MALLOC *= undef +.IF "$(OBJECT)" != "" +PERL_MALLOC != undef .ENDIF +PERL_MALLOC *= undef + +USE_THREADS *= undef + #BUILDOPT *= -DMULTIPLICITY #BUILDOPT *= -DPERL_GLOBAL_STRUCT -DMULTIPLICITY # -DUSE_PERLIO -D__STDC__=1 -DUSE_SFIO -DI_SFIO -I\sfio97\include -.IF "$(USE_THREADS)" == "" -USE_THREADS = undef -.ENDIF - .IMPORT .IGNORE : PROCESSOR_ARCHITECTURE PROCESSOR_ARCHITECTURE *= x86 @@ -102,6 +102,7 @@ ARCHNAME = MSWin32-$(PROCESSOR_ARCHITECTURE) ARCHDIR = ..\lib\$(ARCHNAME) COREDIR = ..\lib\CORE +AUTODIR = ..\lib\auto # # Programs to compile, build .lib files and link @@ -111,145 +112,150 @@ COREDIR = ..\lib\CORE .IF "$(CCTYPE)" == "BORLAND" -CC = bcc32 -LINK32 = tlink32 -LIB32 = tlib -IMPLIB = implib -c +CC = bcc32 +LINK32 = tlink32 +LIB32 = tlib +IMPLIB = implib -c # # Options # -RUNTIME = -D_RTLDLL -INCLUDES = -I.\include -I. -I.. -I$(CCINCDIR) -#PCHFLAGS = -H -H$(INTDIR)\bcmoduls.pch -DEFINES = -DWIN32 $(BUILDOPT) $(CRYPT_FLAG) $(OBJECT) -LOCDEFS = -DPERLDLL -DPERL_CORE -SUBSYS = console -LIBC = cw32mti.lib -LIBFILES = $(CRYPT_LIB) import32.lib $(LIBC) odbc32.lib odbccp32.lib +RUNTIME = -D_RTLDLL +INCLUDES = -I.\include -I. -I.. -I$(CCINCDIR) +#PCHFLAGS = -H -H$(INTDIR)\bcmoduls.pch +DEFINES = -DWIN32 $(BUILDOPT) $(CRYPT_FLAG) +LOCDEFS = -DPERLDLL -DPERL_CORE +SUBSYS = console +CXX_FLAG = -P -WINIOMAYBE = +LIBC = cw32mti.lib +LIBFILES = $(CRYPT_LIB) import32.lib $(LIBC) odbc32.lib odbccp32.lib .IF "$(CFG)" == "Debug" -OPTIMIZE = -v $(RUNTIME) -DDEBUGGING -LINK_DBG = -v +OPTIMIZE = -v $(RUNTIME) -DDEBUGGING +LINK_DBG = -v .ELSE -OPTIMIZE = -5 -O2 $(RUNTIME) -LINK_DBG = +OPTIMIZE = -5 -O2 $(RUNTIME) +LINK_DBG = .ENDIF -.IF "$(OBJECT)" == "-DPERL_OBJECT" -CFLAGS = -w -d -tWM -tWD -P $(INCLUDES) $(DEFINES) $(LOCDEFS) $(PCHFLAGS) $(OPTIMIZE) -.ELSE -CFLAGS = -w -d -tWM -tWD $(INCLUDES) $(DEFINES) $(LOCDEFS) $(PCHFLAGS) $(OPTIMIZE) -.ENDIF -LINK_FLAGS = $(LINK_DBG) -L$(CCLIBDIR) -OBJOUT_FLAG = -o -EXEOUT_FLAG = -e +CFLAGS = -w -d -tWM -tWD $(INCLUDES) $(DEFINES) $(LOCDEFS) \ + $(PCHFLAGS) $(OPTIMIZE) +LINK_FLAGS = $(LINK_DBG) -L$(CCLIBDIR) +OBJOUT_FLAG = -o +EXEOUT_FLAG = -e .ELIF "$(CCTYPE)" == "GCC" -CC = gcc -pipe -LINK32 = gcc -pipe -LIB32 = ar -IMPLIB = dlltool +CC = gcc -pipe +LINK32 = gcc -pipe +LIB32 = ar +IMPLIB = dlltool o = .o # # Options # -RUNTIME = -INCLUDES = -I.\include -I. -I.. -DEFINES = -DWIN32 $(BUILDOPT) $(CRYPT_FLAG) $(OBJECT) -LOCDEFS = -DPERLDLL -DPERL_CORE -SUBSYS = console -LIBC = -lcrtdll -LIBFILES = $(CRYPT_LIB) -ladvapi32 -luser32 -lwsock32 -lmingw32 -lgcc -lmoldname $(LIBC) \ - -lkernel32 +RUNTIME = +INCLUDES = -I.\include -I. -I.. +DEFINES = -DWIN32 $(BUILDOPT) $(CRYPT_FLAG) +LOCDEFS = -DPERLDLL -DPERL_CORE +SUBSYS = console +CXX_FLAG = -xc++ -WINIOMAYBE = +LIBC = -lcrtdll +LIBFILES = $(CRYPT_LIB) -ladvapi32 -luser32 -lwsock32 -lmingw32 -lgcc \ + -lmoldname $(LIBC) -lkernel32 .IF "$(CFG)" == "Debug" -OPTIMIZE = -g -O2 $(RUNTIME) -DDEBUGGING -LINK_DBG = -g +OPTIMIZE = -g -O2 $(RUNTIME) -DDEBUGGING +LINK_DBG = -g .ELSE -OPTIMIZE = -g -O2 $(RUNTIME) -LINK_DBG = +OPTIMIZE = -g -O2 $(RUNTIME) +LINK_DBG = .ENDIF -.IF "$(OBJECT)" == "-DPERL_OBJECT" -CFLAGS = $(INCLUDES) $(DEFINES) $(LOCDEFS) $(OPTIMIZE) -.ELSE -CFLAGS = $(INCLUDES) $(DEFINES) $(LOCDEFS) $(OPTIMIZE) -.ENDIF -LINK_FLAGS = $(LINK_DBG) -L$(CCLIBDIR) -OBJOUT_FLAG = -o -EXEOUT_FLAG = -o +CFLAGS = $(INCLUDES) $(DEFINES) $(LOCDEFS) $(OPTIMIZE) +LINK_FLAGS = $(LINK_DBG) -L$(CCLIBDIR) +OBJOUT_FLAG = -o +EXEOUT_FLAG = -o .ELSE -CC=cl.exe -LINK32=link.exe -LIB32=$(LINK32) -lib +CC = cl.exe +LINK32 = link.exe +LIB32 = $(LINK32) -lib + # # Options # -.IF "$(RUNTIME)" == "" -RUNTIME = -MD +.IF "$(OBJECT)" == "-DPERL_OBJECT" +RUNTIME = -MT +# XXX building with -MD fails many tests, but cannot investigate +# because building with debug crashes compiler :-( GSAR )-: +#RUNTIME = -MD +.ELSE +RUNTIME = -MD .ENDIF -INCLUDES = -I.\include -I. -I.. -#PCHFLAGS = -Fp$(INTDIR)\vcmoduls.pch -YX -DEFINES = -DWIN32 -D_CONSOLE $(BUILDOPT) $(CRYPT_FLAG) $(OBJECT) -LOCDEFS = -DPERLDLL -DPERL_CORE -SUBSYS = console + +INCLUDES = -I.\include -I. -I.. +#PCHFLAGS = -Fp$(INTDIR)\vcmoduls.pch -YX +DEFINES = -DWIN32 -D_CONSOLE $(BUILDOPT) $(CRYPT_FLAG) +LOCDEFS = -DPERLDLL -DPERL_CORE +SUBSYS = console +CXX_FLAG = -TP -GX .IF "$(RUNTIME)" == "-MD" -LIBC = msvcrt.lib -WINIOMAYBE = +LIBC = msvcrt.lib .ELSE -LIBC = libcmt.lib -WINIOMAYBE = +LIBC = libcmt.lib .ENDIF .IF "$(CFG)" == "Debug" .IF "$(CCTYPE)" == "MSVC20" -OPTIMIZE = -Od $(RUNTIME) -Z7 -D_DEBUG -DDEBUGGING +OPTIMIZE = -Od $(RUNTIME) -Z7 -D_DEBUG -DDEBUGGING .ELSE -OPTIMIZE = -Od $(RUNTIME)d -Z7 -D_DEBUG -DDEBUGGING +OPTIMIZE = -Od $(RUNTIME)d -Z7 -D_DEBUG -DDEBUGGING .ENDIF -LINK_DBG = -debug -pdb:none +LINK_DBG = -debug -pdb:none .ELSE .IF "$(CCTYPE)" == "MSVC20" -OPTIMIZE = -O1 $(RUNTIME) -DNDEBUG +OPTIMIZE = -Od $(RUNTIME) -DNDEBUG .ELSE -OPTIMIZE = -O1 $(RUNTIME) -DNDEBUG +OPTIMIZE = -Od $(RUNTIME) -DNDEBUG .ENDIF -LINK_DBG = -release +LINK_DBG = -release .ENDIF -# we don't add LIBC here, the compiler do it based on -MD/-MT -LIBFILES = $(CRYPT_LIB) oldnames.lib kernel32.lib user32.lib gdi32.lib \ - winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib \ - oleaut32.lib netapi32.lib uuid.lib wsock32.lib mpr.lib winmm.lib \ - version.lib odbc32.lib odbccp32.lib +# we don't add LIBC here, the compiler does it based on -MD/-MT +LIBFILES = $(CRYPT_LIB) oldnames.lib kernel32.lib user32.lib gdi32.lib \ + winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib \ + oleaut32.lib netapi32.lib uuid.lib wsock32.lib mpr.lib winmm.lib \ + version.lib odbc32.lib odbccp32.lib + +CFLAGS = -nologo -Gf -W3 $(INCLUDES) $(DEFINES) $(LOCDEFS) \ + $(PCHFLAGS) $(OPTIMIZE) +LINK_FLAGS = -nologo $(LINK_DBG) -machine:$(PROCESSOR_ARCHITECTURE) +OBJOUT_FLAG = -Fo +EXEOUT_FLAG = -Fe -.IF "$(OBJECT)" == "-DPERL_OBJECT" -CFLAGS = -nologo -Gf -W3 -TP $(INCLUDES) $(DEFINES) $(LOCDEFS) $(PCHFLAGS) $(OPTIMIZE) -.ELSE -CFLAGS = -nologo -Gf -W3 $(INCLUDES) $(DEFINES) $(LOCDEFS) $(PCHFLAGS) $(OPTIMIZE) .ENDIF -LINK_FLAGS = -nologo $(LINK_DBG) -machine:$(PROCESSOR_ARCHITECTURE) -OBJOUT_FLAG = -Fo -EXEOUT_FLAG = -Fe +.IF "$(OBJECT)" != "" +OPTIMIZE += $(CXX_FLAG) .ENDIF +CFLAGS_O = $(CFLAGS) $(OBJECT) + #################### do not edit below this line ####################### ############# NO USER-SERVICEABLE PARTS BEYOND THIS POINT ############## o *= .obj +LKPRE = INPUT ( +LKPOST = ) + # # Rules # @@ -257,7 +263,7 @@ o *= .obj .SUFFIXES : .c $(o) .dll .lib .exe .a .c$(o): - $(CC) -c $(null,$(<:d) $(NULL) -I$(<:d)) $(CFLAGS) $(OBJOUT_FLAG)$@ $< + $(CC) -c $(null,$(<:d) $(NULL) -I$(<:d)) $(CFLAGS_O) $(OBJOUT_FLAG)$@ $< .y.c: $(NOOP) @@ -275,255 +281,266 @@ $(o).dll: .ENDIF # -INST_BIN=$(INST_TOP)\bin -INST_LIB=$(INST_TOP)\lib -INST_POD=$(INST_LIB)\pod -INST_HTML=$(INST_POD)\html -LIBDIR=..\lib -EXTDIR=..\ext -PODDIR=..\pod -EXTUTILSDIR=$(LIBDIR)\extutils +INST_BIN = $(INST_TOP)\bin +INST_LIB = $(INST_TOP)\lib +INST_POD = $(INST_LIB)\pod +INST_HTML = $(INST_POD)\html +LIBDIR = ..\lib +EXTDIR = ..\ext +PODDIR = ..\pod +EXTUTILSDIR = $(LIBDIR)\extutils # # various targets -PERLIMPLIB=..\perl.lib -MINIPERL=..\miniperl.exe -PERLDLL=..\perl.dll -PERLEXE=..\perl.exe -GLOBEXE=..\perlglob.exe -CONFIGPM=..\lib\Config.pm -MINIMOD=..\lib\ExtUtils\Miniperl.pm -X2P=..\x2p\a2p.exe - -PL2BAT=bin\pl2bat.pl -GLOBBAT = bin\perlglob.bat +.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 +GLOBEXE = ..\perlglob.exe +CONFIGPM = ..\lib\Config.pm +MINIMOD = ..\lib\ExtUtils\Miniperl.pm +X2P = ..\x2p\a2p.exe + +PL2BAT = bin\pl2bat.pl +GLOBBAT = bin\perlglob.bat .IF "$(CCTYPE)" == "BORLAND" -CFGSH_TMPL = config.bc -CFGH_TMPL = config_H.bc +CFGSH_TMPL = config.bc +CFGH_TMPL = config_H.bc .ELIF "$(CCTYPE)" == "GCC" -CFGSH_TMPL = config.gc -CFGH_TMPL = config_H.gc +CFGSH_TMPL = config.gc +CFGH_TMPL = config_H.gc .ELSE -CFGSH_TMPL = config.vc -CFGH_TMPL = config_H.vc -PERL95EXE=..\perl95.exe +CFGSH_TMPL = config.vc +CFGH_TMPL = config_H.vc +PERL95EXE = ..\perl95.exe .ENDIF -XCOPY=xcopy /f /r /i /d -RCOPY=xcopy /f /r /i /e /d -NOOP=@echo -#NULL= +XCOPY = xcopy /f /r /i /d +RCOPY = xcopy /f /r /i /e /d +NOOP = @echo -.IF "$(CRYPT_SRC)" != "" -CRYPT_OBJ=$(CRYPT_SRC:db:+$(o)) -.ENDIF +# filenames given to xsubpp must have forward slashes (since it puts +# full pathnames in #line strings) +XSUBPP = ..\$(MINIPERL) -I..\..\lib ..\$(EXTUTILSDIR)\xsubpp \ + -C++ -prototypes + +CORE_SRC = \ + ..\av.c \ + ..\byterun.c \ + ..\deb.c \ + ..\doio.c \ + ..\doop.c \ + ..\dump.c \ + ..\globals.c \ + ..\gv.c \ + ..\hv.c \ + ..\mg.c \ + ..\op.c \ + ..\perl.c \ + ..\perly.c \ + ..\pp.c \ + ..\pp_ctl.c \ + ..\pp_hot.c \ + ..\pp_sys.c \ + ..\regcomp.c \ + ..\regexec.c \ + ..\run.c \ + ..\scope.c \ + ..\sv.c \ + ..\taint.c \ + ..\toke.c \ + ..\universal.c \ + ..\util.c + +CORE_SRC += $(CRYPT_SRC) .IF "$(PERL_MALLOC)" == "define" -MALLOC_SRC = ..\malloc.c -MALLOC_OBJ = ..\malloc$(o) +CORE_SRC += ..\malloc.c .ENDIF -# -# filenames given to xsubpp must have forward slashes (since it puts -# full pathnames in #line strings) -XSUBPP=..\$(MINIPERL) -I..\..\lib ..\$(EXTUTILSDIR)\xsubpp -C++ -prototypes - -CORE_C= ..\av.c \ - ..\byterun.c \ - ..\deb.c \ - ..\doio.c \ - ..\doop.c \ - ..\dump.c \ - ..\globals.c \ - ..\gv.c \ - ..\hv.c \ - ..\mg.c \ - ..\op.c \ - ..\perl.c \ - ..\perlio.c \ - ..\perly.c \ - ..\pp.c \ - ..\pp_ctl.c \ - ..\pp_hot.c \ - ..\pp_sys.c \ - ..\regcomp.c \ - ..\regexec.c \ - ..\run.c \ - ..\scope.c \ - ..\sv.c \ - ..\taint.c \ - ..\toke.c \ - ..\universal.c \ - ..\util.c \ - $(MALLOC_SRC) \ - $(CRYPT_SRC) - -CORE_OBJ= ..\av$(o) \ - ..\byterun$(o) \ - ..\deb$(o) \ - ..\doio$(o) \ - ..\doop$(o) \ - ..\dump$(o) \ - ..\globals$(o) \ - ..\gv$(o) \ - ..\hv$(o) \ - ..\mg$(o) \ - ..\op$(o) \ - ..\perl$(o) \ - ..\perlio$(o) \ - ..\perly$(o) \ - ..\pp$(o) \ - ..\pp_ctl$(o) \ - ..\pp_hot$(o) \ - ..\pp_sys$(o) \ - ..\regcomp$(o) \ - ..\regexec$(o) \ - ..\run$(o) \ - ..\scope$(o) \ - ..\sv$(o) \ - ..\taint$(o) \ - ..\toke$(o) \ - ..\universal$(o)\ - ..\util$(o) \ - $(MALLOC_OBJ) \ - $(CRYPT_OBJ) - -WIN32_C = perllib.c \ - win32.c \ - win32sck.c \ - win32thread.c - -WIN32_OBJ = win32$(o) \ - win32sck$(o) \ - win32thread$(o) - -PERL95_OBJ = perl95$(o) \ - win32mt$(o) \ - win32sckmt$(o) \ - $(CRYPT_OBJ) - -DLL_OBJ = perllib$(o) $(DYNALOADER)$(o) - -X2P_OBJ = ..\x2p\a2p$(o) \ - ..\x2p\hash$(o) \ - ..\x2p\str$(o) \ - ..\x2p\util$(o) \ - ..\x2p\walk$(o) - -CORE_H = ..\av.h \ - ..\byterun.h \ - ..\bytecode.h \ - ..\cop.h \ - ..\cv.h \ - ..\dosish.h \ - ..\embed.h \ - ..\form.h \ - ..\gv.h \ - ..\handy.h \ - ..\hv.h \ - ..\mg.h \ - ..\nostdio.h \ - ..\op.h \ - ..\opcode.h \ - ..\perl.h \ - ..\perlio.h \ - ..\perlsdio.h \ - ..\perlsfio.h \ - ..\perly.h \ - ..\pp.h \ - ..\proto.h \ - ..\regexp.h \ - ..\scope.h \ - ..\sv.h \ - ..\thread.h \ - ..\unixish.h \ - ..\util.h \ - ..\XSUB.h \ - .\config.h \ - ..\EXTERN.h \ - ..\perlvars.h \ - ..\intrpvar.h \ - ..\thrdvar.h \ - .\include\dirent.h \ - .\include\netdb.h \ - .\include\sys\socket.h \ - .\win32.h - -DYNAMIC_EXT=Socket IO Fcntl Opcode SDBM_File attrs Thread B -STATIC_EXT=DynaLoader - -DYNALOADER=$(EXTDIR)\DynaLoader\DynaLoader -SOCKET=$(EXTDIR)\Socket\Socket -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 -B=$(EXTDIR)\B\B - -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 -B_DLL=..\lib\auto\B\B.dll - -STATICLINKMODULES=DynaLoader -DYNALOADMODULES= \ - $(SOCKET_DLL) \ - $(FCNTL_DLL) \ - $(OPCODE_DLL) \ - $(SDBM_FILE_DLL)\ - $(IO_DLL) \ - $(ATTRS_DLL) \ - $(THREAD_DLL) \ - $(B_DLL) - -POD2HTML=$(PODDIR)\pod2html -POD2MAN=$(PODDIR)\pod2man -POD2LATEX=$(PODDIR)\pod2latex -POD2TEXT=$(PODDIR)\pod2text - -CFG_VARS= "INST_DRV=$(INST_DRV)" \ - "INST_TOP=$(INST_TOP)" \ - "archname=$(ARCHNAME)" \ - "cc=$(CC)" \ - "ccflags=$(OPTIMIZE) $(DEFINES)" \ - "cf_email=$(EMAIL)" \ - "d_crypt=$(D_CRYPT)" \ - "d_mymalloc=$(PERL_MALLOC)" \ - "libs=$(LIBFILES:f)" \ - "incpath=$(CCINCDIR)" \ - "libpth=$(strip $(CCLIBDIR) $(LIBFILES:d))" \ - "libc=$(LIBC)" \ - "static_ext=$(STATIC_EXT)" \ - "dynamic_ext=$(DYNAMIC_EXT)" \ - "usethreads=$(USE_THREADS)" \ - "LINK_FLAGS=$(LINK_FLAGS)" \ - "optimize=$(OPTIMIZE)" +.IF "$(OBJECT)" == "" +CORE_SRC += ..\perlio.c +.ENDIF + +WIN32_SRC = \ + .\win32.c \ + .\win32sck.c + +.IF "$(USE_THREADS)" == "define" || "$(OBJECT)" == "" +WIN32_SRC += .\win32thread.c +.ENDIF + +PERL95_SRC = \ + perl95.c \ + win32mt.c \ + win32sckmt.c + +DLL_SRC = $(DYNALOADER).c + + +.IF "$(OBJECT)" == "" +DLL_SRC += perllib.c +.ENDIF + +X2P_SRC = \ + ..\x2p\a2p.c \ + ..\x2p\hash.c \ + ..\x2p\str.c \ + ..\x2p\util.c \ + ..\x2p\walk.c + +CORE_H = \ + ..\av.h \ + ..\byterun.h \ + ..\bytecode.h \ + ..\cop.h \ + ..\cv.h \ + ..\dosish.h \ + ..\embed.h \ + ..\form.h \ + ..\gv.h \ + ..\handy.h \ + ..\hv.h \ + ..\mg.h \ + ..\nostdio.h \ + ..\op.h \ + ..\opcode.h \ + ..\perl.h \ + ..\perlio.h \ + ..\perlsdio.h \ + ..\perlsfio.h \ + ..\perly.h \ + ..\pp.h \ + ..\proto.h \ + ..\regexp.h \ + ..\scope.h \ + ..\sv.h \ + ..\thread.h \ + ..\unixish.h \ + ..\util.h \ + ..\XSUB.h \ + .\config.h \ + ..\EXTERN.h \ + ..\perlvars.h \ + ..\intrpvar.h \ + ..\thrdvar.h \ + .\include\dirent.h \ + .\include\netdb.h \ + .\include\sys\socket.h \ + .\win32.h + +CORE_OBJ = $(CORE_SRC:db:+$(o)) +WIN32_OBJ = $(WIN32_SRC:db:+$(o)) +MINICORE_OBJ = $(MINIDIR)\{$(CORE_OBJ:f) perlio$(o) miniperlmain$(o)} +MINIWIN32_OBJ = $(MINIDIR)\{$(WIN32_OBJ:f)} +MINI_OBJ = $(MINICORE_OBJ) $(MINIWIN32_OBJ) +PERL95_OBJ = $(PERL95_SRC:db:+$(o)) DynaLoadmt$(o) +DLL_OBJ = $(DLL_SRC:db:+$(o)) +X2P_OBJ = $(X2P_SRC:db:+$(o)) + +PERLDLL_OBJ = $(CORE_OBJ) +PERLEXE_OBJ = perlmain$(o) + +.IF "$(OBJECT)" == "" +PERLDLL_OBJ += $(WIN32_OBJ) $(DLL_OBJ) +.ELSE +PERLEXE_OBJ += $(WIN32_OBJ) $(DLL_OBJ) +.ENDIF + +DYNAMIC_EXT = Socket IO Fcntl Opcode SDBM_File attrs Thread B +STATIC_EXT = DynaLoader + +DYNALOADER = $(EXTDIR)\DynaLoader\DynaLoader +SOCKET = $(EXTDIR)\Socket\Socket +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 +B = $(EXTDIR)\B\B + +SOCKET_DLL = $(AUTODIR)\Socket\Socket.dll +FCNTL_DLL = $(AUTODIR)\Fcntl\Fcntl.dll +OPCODE_DLL = $(AUTODIR)\Opcode\Opcode.dll +SDBM_FILE_DLL = $(AUTODIR)\SDBM_File\SDBM_File.dll +IO_DLL = $(AUTODIR)\IO\IO.dll +ATTRS_DLL = $(AUTODIR)\attrs\attrs.dll +THREAD_DLL = $(AUTODIR)\Thread\Thread.dll +B_DLL = $(AUTODIR)\B\B.dll + +EXTENSION_C = \ + $(SOCKET).c \ + $(FCNTL).c \ + $(OPCODE).c \ + $(SDBM_FILE).c \ + $(IO).c \ + $(ATTRS).c \ + $(THREAD).c \ + $(B).c + +EXTENSION_DLL = \ + $(SOCKET_DLL) \ + $(FCNTL_DLL) \ + $(OPCODE_DLL) \ + $(SDBM_FILE_DLL)\ + $(IO_DLL) \ + $(ATTRS_DLL) +# $(THREAD_DLL) \ +# $(B_DLL) + +POD2HTML = $(PODDIR)\pod2html +POD2MAN = $(PODDIR)\pod2man +POD2LATEX = $(PODDIR)\pod2latex +POD2TEXT = $(PODDIR)\pod2text + +CFG_VARS = \ + "INST_DRV=$(INST_DRV)" \ + "INST_TOP=$(INST_TOP)" \ + "archname=$(ARCHNAME)" \ + "cc=$(CC)" \ + "ccflags=$(OPTIMIZE) $(DEFINES) $(OBJECT)" \ + "cf_email=$(EMAIL)" \ + "d_crypt=$(D_CRYPT)" \ + "d_mymalloc=$(PERL_MALLOC)" \ + "libs=$(LIBFILES:f)" \ + "incpath=$(CCINCDIR)" \ + "libperl=$(PERLIMPLIB)" \ + "libpth=$(strip $(CCLIBDIR) $(LIBFILES:d))" \ + "libc=$(LIBC)" \ + "make=dmake" \ + "static_ext=$(STATIC_EXT)" \ + "dynamic_ext=$(DYNAMIC_EXT)" \ + "usethreads=$(USE_THREADS)" \ + "LINK_FLAGS=$(LINK_FLAGS)" \ + "optimize=$(OPTIMIZE)" # # Top targets # -all: $(PERLEXE) $(PERL95EXE) $(GLOBEXE) $(DYNALOADMODULES) $(MINIMOD) \ - $(X2P) +all : $(GLOBEXE) $(MINIMOD) $(CONFIGPM) $(PERLEXE) $(PERL95EXE) $(X2P) \ + $(EXTENSION_DLL) $(DYNALOADER)$(o) : $(DYNALOADER).c $(CORE_H) $(EXTDIR)\DynaLoader\dlutils.c #------------------------------------------------------------ -$(GLOBEXE): perlglob$(o) +$(GLOBEXE) : perlglob$(o) .IF "$(CCTYPE)" == "BORLAND" $(CC) -c -w -v -tWM -I$(CCINCDIR) perlglob.c $(LINK32) -Tpe -ap $(LINK_FLAGS) c0x32$(o) perlglob$(o) \ @@ -537,8 +554,6 @@ $(GLOBEXE): perlglob$(o) perlglob$(o) : perlglob.c -..\miniperlmain$(o) : ..\miniperlmain.c $(CORE_H) - config.w32 : $(CFGSH_TMPL) copy $(CFGSH_TMPL) config.w32 @@ -569,58 +584,60 @@ $(CONFIGPM) : $(MINIPERL) ..\config.sh config_h.PL ..\minimod.pl $(RCOPY) include $(COREDIR)\*.* $(MINIPERL) -I..\lib config_h.PL || $(MAKE) $(MAKEMACROS) $(CONFIGPM) -LKPRE = INPUT ( -LKPOST = ) - -$(MINIPERL) : ..\miniperlmain$(o) $(CORE_OBJ) $(WIN32_OBJ) +$(MINIPERL) : $(MINIDIR) $(MINI_OBJ) .IF "$(CCTYPE)" == "BORLAND" $(LINK32) -Tpe -ap $(LINK_FLAGS) \ - @$(mktmp c0x32$(o) ..\miniperlmain$(o) \ - $(CORE_OBJ:s,\,\\) $(WIN32_OBJ:s,\,\\),$(@:s,\,\\),,$(LIBFILES),) + @$(mktmp c0x32$(o) $(MINI_OBJ:s,\,\\),$(@:s,\,\\),,$(LIBFILES),) .ELIF "$(CCTYPE)" == "GCC" $(LINK32) -v -o $@ $(LINK_FLAGS) \ - $(mktmp $(LKPRE) ..\miniperlmain$(o) \ - $(CORE_OBJ:s,\,\\) $(WIN32_OBJ:s,\,\\) $(LIBFILES) $(LKPOST)) + $(mktmp $(LKPRE) $(MINI_OBJ:s,\,\\) $(LIBFILES) $(LKPOST)) .ELSE $(LINK32) -subsystem:console -out:$@ \ - @$(mktmp $(LINK_FLAGS) $(LIBFILES) ..\miniperlmain$(o) \ - $(CORE_OBJ:s,\,\\) $(WIN32_OBJ:s,\,\\)) + @$(mktmp $(LINK_FLAGS) $(LIBFILES) $(MINI_OBJ:s,\,\\)) .ENDIF -$(WIN32_OBJ) : $(CORE_H) -$(CORE_OBJ) : $(CORE_H) -$(DLL_OBJ) : $(CORE_H) -$(X2P_OBJ) : $(CORE_H) +$(MINIDIR) : + if not exist "$(MINIDIR)" mkdir "$(MINIDIR)" + +$(MINICORE_OBJ) : $(CORE_H) + $(CC) -c $(CFLAGS) $(OBJOUT_FLAG)$@ ..\$(*B).c + +$(MINIWIN32_OBJ) : $(CORE_H) + $(CC) -c $(CFLAGS) $(OBJOUT_FLAG)$@ $(*B).c + +$(WIN32_OBJ) : $(CORE_H) +$(CORE_OBJ) : $(CORE_H) +$(MINI_OBJ) : $(CORE_H) +$(DLL_OBJ) : $(CORE_H) +$(PERL95_OBJ) : $(CORE_H) +$(X2P_OBJ) : $(CORE_H) perldll.def : $(MINIPERL) $(CONFIGPM) ..\global.sym makedef.pl - $(MINIPERL) -w makedef.pl $(OPTIMIZE) $(DEFINES) \ + $(MINIPERL) -w makedef.pl $(OPTIMIZE) $(DEFINES) $(OBJECT) \ CCTYPE=$(CCTYPE) > perldll.def -$(PERLDLL): perldll.def $(CORE_OBJ) $(WIN32_OBJ) $(DLL_OBJ) +$(PERLDLL): perldll.def $(PERLDLL_OBJ) .IF "$(CCTYPE)" == "BORLAND" $(LINK32) -Tpd -ap $(LINK_FLAGS) \ - @$(mktmp c0d32$(o) $(CORE_OBJ:s,\,\\) \ - $(WIN32_OBJ:s,\,\\) $(DLL_OBJ:s,\,\\)\n \ + @$(mktmp c0d32$(o) $(PERLDLL_OBJ:s,\,\\)\n \ $@,\n \ $(LIBFILES)\n \ perldll.def\n) $(IMPLIB) $*.lib $@ .ELIF "$(CCTYPE)" == "GCC" $(LINK32) -mdll -o $@ -Wl,--base-file -Wl,perl.base $(LINK_FLAGS) \ - $(mktmp $(LKPRE) $(CORE_OBJ:s,\,\\) $(WIN32_OBJ:s,\,\\) \ - $(DLL_OBJ:s,\,\\) $(LIBFILES) $(LKPOST)) + $(mktmp $(LKPRE) $(PERLDLL_OBJ:s,\,\\) $(LIBFILES) $(LKPOST)) dlltool --output-lib $(PERLIMPLIB) \ --dllname perl.dll \ --def perldll.def \ --base-file perl.base \ --output-exp perl.exp $(LINK32) -mdll -o $@ $(LINK_FLAGS) \ - $(mktmp $(LKPRE) $(CORE_OBJ:s,\,\\) $(WIN32_OBJ:s,\,\\) \ - $(DLL_OBJ:s,\,\\) $(LIBFILES) perl.exp $(LKPOST)) + $(mktmp $(LKPRE) $(PERLDLL_OBJ:s,\,\\) $(LIBFILES) \ + perl.exp $(LKPOST)) .ELSE $(LINK32) -dll -def:perldll.def -out:$@ \ - @$(mktmp $(LINK_FLAGS) $(LIBFILES) $(CORE_OBJ:s,\,\\) \ - $(WIN32_OBJ:s,\,\\) $(DLL_OBJ:s,\,\\)) + @$(mktmp $(LINK_FLAGS) $(LIBFILES) $(PERLDLL_OBJ:s,\,\\)) .ENDIF $(XCOPY) $(PERLIMPLIB) $(COREDIR) @@ -630,7 +647,22 @@ perl.def : $(MINIPERL) makeperldef.pl $(MINIMOD) : $(MINIPERL) ..\minimod.pl cd .. && miniperl minimod.pl > lib\ExtUtils\Miniperl.pm -$(X2P) : $(X2P_OBJ) +..\x2p\a2p$(o) : ..\x2p\a2p.c + $(CC) -I..\x2p $(CFLAGS) $(OBJOUT_FLAG)$@ -c ..\x2p\a2p.c + +..\x2p\hash$(o) : ..\x2p\hash.c + $(CC) -I..\x2p $(CFLAGS) $(OBJOUT_FLAG)$@ -c ..\x2p\hash.c + +..\x2p\str$(o) : ..\x2p\str.c + $(CC) -I..\x2p $(CFLAGS) $(OBJOUT_FLAG)$@ -c ..\x2p\str.c + +..\x2p\util$(o) : ..\x2p\util.c + $(CC) -I..\x2p $(CFLAGS) $(OBJOUT_FLAG)$@ -c ..\x2p\util.c + +..\x2p\walk$(o) : ..\x2p\walk.c + $(CC) -I..\x2p $(CFLAGS) $(OBJOUT_FLAG)$@ -c ..\x2p\walk.c + +$(X2P) : $(MINIPERL) $(X2P_OBJ) $(MINIPERL) ..\x2p\find2perl.PL $(MINIPERL) ..\x2p\s2p.PL .IF "$(CCTYPE)" == "BORLAND" @@ -641,30 +673,30 @@ $(X2P) : $(X2P_OBJ) $(mktmp $(LKPRE) $(X2P_OBJ:s,\,\\) $(LIBFILES) $(LKPOST)) .ELSE $(LINK32) -subsystem:console -out:$@ \ - @$(mktmp $(LINK_FLAGS) $(LIBFILES) $(X2P_OBJ:s,\,\\) + @$(mktmp $(LINK_FLAGS) $(LIBFILES) $(X2P_OBJ:s,\,\\)) .ENDIF perlmain.c : runperl.c copy runperl.c perlmain.c perlmain$(o) : perlmain.c - $(CC) $(CFLAGS) -UPERLDLL $(EXEOUT_FLAG)$@ -c perlmain.c + $(CC) $(CFLAGS_O) -UPERLDLL $(EXEOUT_FLAG)$@ -c perlmain.c -$(PERLEXE): $(PERLDLL) $(CONFIGPM) perlmain$(o) +$(PERLEXE): $(PERLDLL) $(CONFIGPM) $(PERLEXE_OBJ) .IF "$(CCTYPE)" == "BORLAND" $(LINK32) -Tpe -ap $(LINK_FLAGS) \ - @$(mktmp c0x32$(o) perlmain$(o) $(WINIOMAYBE)\n \ + @$(mktmp c0x32$(o) $(PERLEXE_OBJ)\n \ $@,\n \ $(PERLIMPLIB) $(LIBFILES)\n) .ELIF "$(CCTYPE)" == "GCC" $(LINK32) -o $@ $(LINK_FLAGS) \ - perlmain.o $(WINIOMAYBE) $(PERLIMPLIB) $(LIBFILES) + $(PERLEXE_OBJ) $(PERLIMPLIB) $(LIBFILES) .ELSE $(LINK32) -subsystem:console -out:$@ $(LINK_FLAGS) $(LIBFILES) \ - perlmain$(o) $(WINIOMAYBE) $(PERLIMPLIB) + $(PERLEXE_OBJ) $(PERLIMPLIB) .ENDIF copy splittree.pl .. - $(MINIPERL) -I..\lib ..\splittree.pl "../LIB" "../LIB/auto" + $(MINIPERL) -I..\lib ..\splittree.pl "../LIB" $(AUTODIR) .IF "$(CCTYPE)" != "BORLAND" .IF "$(CCTYPE)" != "GCC" @@ -673,23 +705,29 @@ perl95.c : runperl.c copy runperl.c perl95.c perl95$(o) : perl95.c - $(CC) $(CFLAGS) -MT -UPERLDLL -DWIN95FIX -c perl95.c + $(CC) $(CFLAGS_O) -MT -UPERLDLL -DWIN95FIX -c perl95.c win32sckmt$(o) : win32sck.c - $(CC) $(CFLAGS) -MT -UPERLDLL -DWIN95FIX -c $(OBJOUT_FLAG)win32sckmt$(o) win32sck.c + $(CC) $(CFLAGS_O) -MT -UPERLDLL -DWIN95FIX -c \ + $(OBJOUT_FLAG)win32sckmt$(o) win32sck.c win32mt$(o) : win32.c - $(CC) $(CFLAGS) -MT -UPERLDLL -DWIN95FIX -c $(OBJOUT_FLAG)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 -out:$@ $(LINK_FLAGS) $(LIBFILES) \ - $(PERL95_OBJ) $(PERLIMPLIB) + $(LINK32) -subsystem:console -nodefaultlib -out:$@ $(LINK_FLAGS) \ + $(LIBFILES) $(PERL95_OBJ) $(PERLIMPLIB) libcmt.lib .ENDIF .ENDIF $(DYNALOADER).c: $(MINIPERL) $(EXTDIR)\DynaLoader\dl_win32.xs $(CONFIGPM) - if not exist ..\lib\auto mkdir ..\lib\auto + if not exist $(AUTODIR) mkdir $(AUTODIR) $(XCOPY) $(EXTDIR)\$(*B)\$(*B).pm $(LIBDIR)\$(NULL) cd $(EXTDIR)\$(*B) && $(XSUBPP) dl_win32.xs > $(*B).c $(XCOPY) $(EXTDIR)\$(*B)\dlutils.c . @@ -747,7 +785,7 @@ doc: $(PERLEXE) --libpod=perlfunc:perlguts:perlvar:perlrun:perlop --recurse utils: $(PERLEXE) - cd ..\utils && $(MAKE) PERL=$(MINIPERL) + cd ..\utils && $(MAKE) PERL=$(PERLEXE) cd ..\utils && $(PERLEXE) ..\win32\$(PL2BAT) h2ph splain perlbug \ pl2pm c2ph h2xs perldoc pstruct $(XCOPY) ..\utils\*.bat bin\*.* @@ -758,20 +796,20 @@ distclean: clean -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) $(ATTRS_DLL) $(THREAD_DLL) $(B_DLL) - -del /f $(SOCKET).c $(IO).c $(SDBM_FILE).c $(FCNTL).c $(OPCODE).c \ - $(DYNALOADER).c $(ATTRS).c $(THREAD).c $(B).c + -del /f $(EXTENSION_DLL) + -del /f $(EXTENSION_C) -del /f $(PODDIR)\*.html -del /f $(PODDIR)\*.bat -del /f ..\config.sh ..\splittree.pl perlmain.c dlutils.c config.h.new + -del /f ..\lib\Config.pm .IF "$(PERL95EXE)" != "" -del /f perl95.c .ENDIF -del /f bin\*.bat -cd $(EXTDIR) && del /s *.lib *.def *.map *.bs Makefile *$(o) pm_to_blib - -rmdir /s /q ..\lib\auto || rmdir /s ..\lib\auto + -rmdir /s /q $(AUTODIR) || rmdir /s $(AUTODIR) -rmdir /s /q $(COREDIR) || rmdir /s $(COREDIR) + -rmdir /s /q $(MINIDIR) || rmdir /s $(MINIDIR) install : all doc utils $(PERLEXE) ..\installperl @@ -785,7 +823,7 @@ install : all doc utils inst_lib : $(CONFIGPM) copy splittree.pl .. - $(MINIPERL) -I..\lib ..\splittree.pl "../LIB" "../LIB/auto" + $(MINIPERL) -I..\lib ..\splittree.pl "../LIB" $(AUTODIR) $(RCOPY) ..\lib $(INST_LIB)\*.* minitest : $(MINIPERL) $(GLOBEXE) $(CONFIGPM) utils @@ -827,6 +865,7 @@ clean : -@erase $(PERLEXE) -@erase $(PERLDLL) -@erase $(CORE_OBJ) + -rmdir /s /q "$(MINIDIR)" -@erase $(WIN32_OBJ) -@erase $(DLL_OBJ) -@erase $(X2P_OBJ) @@ -835,5 +874,3 @@ clean : -@erase ..\x2p\*.exe ..\x2p\*.bat -@erase *.ilk -@erase *.pdb - - diff --git a/win32/runperl.c b/win32/runperl.c index d00815809b..cbda241319 100644 --- a/win32/runperl.c +++ b/win32/runperl.c @@ -8,13 +8,9 @@ #include "XSUB.H" #include "Win32iop.h" -#undef errno -#if defined(_MT) -_CRTIMP int * __cdecl _errno(void); -#define errno (*_errno()) -#else -_CRTIMP extern int errno; -#endif +#define errno (*win32_errno()) +#define stdout (win32_stdout()) +#define stderr (win32_stderr()) CPerlObj *pPerl; @@ -94,7 +90,7 @@ public: }; virtual int Putenv(const char *envstring, int &err) { - return _putenv(envstring); + return putenv(envstring); }; virtual char* LibPath(char *sfx, ...) { @@ -493,7 +489,7 @@ public: }; virtual int Unlink(const char *filename, int &err) { - chmod(filename, _S_IREAD | _S_IWRITE); + chmod(filename, S_IREAD | S_IWRITE); CALLFUNCRET(unlink(filename)) }; virtual int Utime(char *filename, struct utimbuf *times, int &err) @@ -593,6 +589,10 @@ public: }; virtual PerlIO* Popen(const char *command, const char *mode) { +#ifdef __BORLANDC__ + win32_fflush(stdout); + win32_fflush(stderr); +#endif return (PerlIO*)win32_popen(command, mode); }; virtual int Pclose(PerlIO *stream) @@ -601,7 +601,7 @@ public: }; virtual int Pipe(int *phandles) { - return win32_pipe(phandles, 512, _O_BINARY); + return win32_pipe(phandles, 512, O_BINARY); }; virtual int Setuid(uid_t u) { @@ -716,19 +716,23 @@ public: }; virtual char* GetBase(PerlIO* pf, int &err) { - return ((FILE*)pf)->_base; + FILE *f = (FILE*)pf; + return FILE_base(f); }; virtual int GetBufsiz(PerlIO* pf, int &err) { - return ((FILE*)pf)->_bufsiz; + FILE *f = (FILE*)pf; + return FILE_bufsiz(f); }; virtual int GetCnt(PerlIO* pf, int &err) { - return ((FILE*)pf)->_cnt; + FILE *f = (FILE*)pf; + return FILE_cnt(f); }; virtual char* GetPtr(PerlIO* pf, int &err) { - return ((FILE*)pf)->_ptr; + FILE *f = (FILE*)pf; + return FILE_ptr(f); }; virtual int Putc(PerlIO* pf, int c, int &err) { @@ -791,12 +795,14 @@ public: }; virtual void SetCnt(PerlIO* pf, int n, int &err) { - ((FILE*)pf)->_cnt = n; + FILE *f = (FILE*)pf; + FILE_cnt(f) = n; }; virtual void SetPtrCnt(PerlIO* pf, char * ptr, int n, int& err) { - ((FILE*)pf)->_ptr = ptr; - ((FILE*)pf)->_cnt = n; + FILE *f = (FILE*)pf; + FILE_ptr(f) = ptr; + FILE_cnt(f) = n; }; virtual void Setlinebuf(PerlIO* pf, int &err) { @@ -876,9 +882,6 @@ public: static void xs_init _((CPERLarg)); -#define stderr (&_iob[2]) -#undef fprintf -#undef environ class CPerlHost { @@ -897,7 +900,7 @@ public: } catch(...) { - fprintf(stderr, "%s\n", "Error: Unable to construct data structures"); + win32_fprintf(stderr, "%s\n", "Error: Unable to construct data structures"); pPerl->perl_free(); pPerl = NULL; } @@ -905,7 +908,7 @@ public: } catch(...) { - fprintf(stderr, "%s\n", "Error: Unable to allocate memory"); + win32_fprintf(stderr, "%s\n", "Error: Unable to allocate memory"); pPerl = NULL; } return (pPerl != NULL); @@ -925,7 +928,7 @@ public: } catch(...) { - fprintf(stderr, "Error: Parse exception\n"); + win32_fprintf(stderr, "Error: Parse exception\n"); retVal = -1; } return retVal; @@ -944,7 +947,7 @@ public: } catch(...) { - fprintf(stderr, "Error: Runtime exception\n"); + win32_fprintf(stderr, "Error: Runtime exception\n"); retVal = -1; } return retVal; diff --git a/win32/win32.c b/win32/win32.c index 65727a45f8..d5caff3ae8 100644 --- a/win32/win32.c +++ b/win32/win32.c @@ -13,6 +13,10 @@ #include <tchar.h> #ifdef __GNUC__ #define Win32_Winsock +# ifdef __cplusplus +#undef __attribute__ /* seems broken in 2.8.0 */ +#define __attribute__(p) +# endif #endif #include <windows.h> @@ -2022,7 +2026,7 @@ XS(w32_DomainName) char dname[256]; DWORD dnamelen = sizeof(dname); SID_NAME_USE snu; - if (LookupAccountName(NULL, name, &sid, &sidlen, + if (LookupAccountName(NULL, name, (PSID)&sid, &sidlen, dname, &dnamelen, &snu)) { XSRETURN_PV(dname); /* all that for this */ } diff --git a/win32/win32.h b/win32/win32.h index a502978201..bb2190b526 100644 --- a/win32/win32.h +++ b/win32/win32.h @@ -22,6 +22,10 @@ #ifdef __GNUC__ typedef long long __int64; #define Win32_Winsock +# ifdef __cplusplus +#undef __attribute__ /* seems broken in 2.8.0 */ +#define __attribute__(p) +# endif /* GCC does not do __declspec() - render it a nop * and turn on options to avoid importing data */ @@ -133,6 +137,11 @@ struct tms { #pragma warn -csu /* "comparing signed and unsigned values" */ #pragma warn -pro /* "call to function with no prototype" */ +/* Borland is picky about a bare member function name used as its ptr */ +#ifdef PERL_OBJECT +#define FUNC_NAME_TO_PTR(name) &(name) +#endif + #endif #ifdef _MSC_VER /* Microsoft Visual C++ */ @@ -151,6 +160,13 @@ typedef long gid_t; #define flushall _flushall #define fcloseall _fcloseall +#ifndef _O_NOINHERIT +# define _O_NOINHERIT 0x0080 +# ifndef _NO_OLDNAMES +# define O_NOINHERIT _O_NOINHERIT +# endif +#endif + #endif /* __MINGW32__ */ /* compatibility stuff for other compilers goes here */ diff --git a/win32/win32sck.c b/win32/win32sck.c index 5c2b73f95a..6d67533e36 100644 --- a/win32/win32sck.c +++ b/win32/win32sck.c @@ -13,6 +13,10 @@ #define WIN32_LEAN_AND_MEAN #ifdef __GNUC__ #define Win32_Winsock +# ifdef __cplusplus +#undef __attribute__ /* seems broken in 2.8.0 */ +#define __attribute__(p) +# endif #endif #include <windows.h> #include "EXTERN.h" |