manual integration of all outstanding ansi branch stuff into mainline
Gurusamy Sarathy [Sat, 20 Jun 1998 21:48:32 +0000 (21:48 +0000)]
p4raw-id: //depot/perl@1162

ext/POSIX/POSIX.xs
lib/ExtUtils/MM_Win32.pm
t/op/ipcsem.t
win32/config.gc
win32/dl_win32.xs
win32/makefile.mk
win32/win32.h

index fd27b11..a4fd52e 100644 (file)
@@ -275,8 +275,10 @@ unsigned long strtoul _((const char *, char **, int));
 extern char *tzname[];
 #  endif
 #else
+#if !defined(__GNUC__) && !defined(tzname)
 char *tzname[] = { "" , "" };
 #endif
+#endif
 
 /* XXX struct tm on some systems (SunOS4/BSD) contains extra (non POSIX)
  * fields for which we don't have Configure support yet:
index 299855b..fd4b28d 100644 (file)
@@ -458,7 +458,7 @@ sub perl_archive
             return '$(PERL_INC)\perlcore$(LIB_EXT)';
         }
     }
-    return '$(PERL_INC)\perl$(LIB_EXT)';
+    return '$(PERL_INC)\\'.$Config{'libperl'};
 }
 
 sub export_list
index a1450ff..55e8104 100755 (executable)
@@ -108,11 +108,6 @@ BEGIN {
 
 use strict;
 
-# This test doesn't seem to work properly yet so skip it for _65
-print "1..0\n";
-exit;
-
-
 print "1..10\n";
 
 my $sem = semget($IPC_PRIVATE, 10, $S_IRWXU | $S_IRWXG | $S_IRWXO | $IPC_CREAT);
index b98a55e..1dfc04b 100644 (file)
@@ -14,9 +14,9 @@ Revision='$Revision'
 SUBVERSION='~SUBVERSION~'
 Source=''
 State=''
-_a='.lib'
+_a='.a'
 _exe='.exe'
-_o='.obj'
+_o='.o'
 afs='false'
 alignbytes='8'
 aphostname=''
@@ -383,8 +383,8 @@ ld='gcc'
 lddlflags='-mdll ~LINK_FLAGS~'
 ldflags='~LINK_FLAGS~'
 less='less'
-lib_ext='.lib'
-libc='msvcrt.lib'
+lib_ext='.a'
+libc='libcrtdll.a'
 libperl='libperl.a'
 libpth=''
 libs=''
index d721731..a5183c3 100644 (file)
@@ -26,6 +26,7 @@ calls.
 
 #include "EXTERN.h"
 #include "perl.h"
+#include "win32.h"
 
 #ifdef PERL_OBJECT
 #define NO_XSLOCKS
@@ -33,6 +34,19 @@ calls.
 
 #include "XSUB.h"
 
+static SV *error_sv;
+
+static char *
+OS_Error_String(void)
+{
+ DWORD err = GetLastError();
+ STRLEN len;
+ if (!error_sv)
+  error_sv = newSVpv("",0);
+ win32_str_os_error(error_sv,err);
+ return SvPV(error_sv,len);
+}
+
 #include "dlutils.c"   /* SaveError() etc      */
 
 static void
@@ -96,7 +110,7 @@ dl_load_file(filename,flags=0)
     DLDEBUG(2,PerlIO_printf(PerlIO_stderr()," libref=%x\n", RETVAL));
     ST(0) = sv_newmortal() ;
     if (RETVAL == NULL)
-       SaveError(PERL_OBJECT_THIS_ "%d",GetLastError()) ;
+       SaveError(PERL_OBJECT_THIS_ "load_file:%s",OS_Error_String()) ;
     else
        sv_setiv( ST(0), (IV)RETVAL);
 
@@ -112,7 +126,7 @@ dl_find_symbol(libhandle, symbolname)
     DLDEBUG(2,PerlIO_printf(PerlIO_stderr(),"  symbolref = %x\n", RETVAL));
     ST(0) = sv_newmortal() ;
     if (RETVAL == NULL)
-       SaveError(PERL_OBJECT_THIS_ "%d",GetLastError()) ;
+       SaveError(PERL_OBJECT_THIS_ "find_symbol:%s",OS_Error_String()) ;
     else
        sv_setiv( ST(0), (IV)RETVAL);
 
index 090e864..d41d588 100644 (file)
@@ -162,12 +162,13 @@ LIBOUT_FLAG       =
 
 .ELIF "$(CCTYPE)" == "GCC"
 
-CC             = gcc -pipe
-LINK32         = gcc -pipe
+CC             = gcc 
+LINK32         = gcc 
 LIB32          = ar rc
 IMPLIB         = dlltool
 
 o = .o
+a = .a
 
 #
 # Options
@@ -262,6 +263,7 @@ CFLAGS_O    = $(CFLAGS) $(OBJECT)
 ############# NO USER-SERVICEABLE PARTS BEYOND THIS POINT ##############
 
 o *= .obj
+a *= .lib
 
 LKPRE          = INPUT (
 LKPOST         = )
@@ -270,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)$@ $<
@@ -284,7 +286,7 @@ $(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)  
@@ -303,16 +305,6 @@ EXTUTILSDIR        = $(LIBDIR)\extutils
 
 #
 # various targets
-.IF "$(OBJECT)" == "-DPERL_OBJECT"
-PERLIMPLIB     = ..\perlcore.lib
-PERLDLL                = ..\perlcore.dll
-CAPILIB                = $(COREDIR)\PerlCAPI.lib
-.ELSE
-PERLIMPLIB     = ..\perl.lib
-PERLDLL                = ..\perl.dll
-CAPILIB                =
-.ENDIF
-
 MINIPERL       = ..\miniperl.exe
 MINIDIR                = .\mini
 PERLEXE                = ..\perl.exe
@@ -356,6 +348,7 @@ CFGH_TMPL   = config_H.bc
 
 CFGSH_TMPL     = config.gc
 CFGH_TMPL      = config_H.gc
+PERLIMPLIB     *= ..\libperl$(a)
 
 .ELSE
 
@@ -365,6 +358,16 @@ 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
@@ -490,7 +493,7 @@ 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)\{$(MICROCORE_OBJ:f) miniperlmain$(o) perlio$(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))
@@ -574,10 +577,12 @@ CFG_VARS  =                                       \
                "d_mymalloc=$(PERL_MALLOC)"             \
                "libs=$(LIBFILES:f)"                    \
                "incpath=$(CCINCDIR)"                   \
-               "libperl=$(PERLIMPLIB)"                 \
+               "libperl=$(PERLIMPLIB:f)"               \
                "libpth=$(strip $(CCLIBDIR) $(LIBFILES:d))" \
                "libc=$(LIBC)"                          \
                "make=dmake"                            \
+               "_o=$(o)" "obj_ext=$(o)"                \
+               "_a=$(a)" "lib_ext=$(a)"                \
                "static_ext=$(STATIC_EXT)"              \
                "dynamic_ext=$(DYNAMIC_EXT)"            \
                "usethreads=$(USE_THREADS)"             \
@@ -877,7 +882,7 @@ utils: $(PERLEXE) $(X2P)
 
 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
@@ -900,7 +905,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)
 
@@ -967,7 +972,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
index a6a2f9d..eaced28 100644 (file)
@@ -31,9 +31,6 @@ typedef long long __int64;
 #define __declspec(x)
 #define PERL_GLOBAL_STRUCT
 #define MULTIPLICITY
-#ifndef TLS_OUT_OF_INDEXES
-#define TLS_OUT_OF_INDEXES (DWORD)0xFFFFFFFF
-#endif
 #endif
 
 /* Define DllExport akin to perl's EXT, 
@@ -60,6 +57,10 @@ typedef long long __int64;
 #define  CONTEXT       PERL_CONTEXT    /* Avoid conflict of CONTEXT defs. */
 #endif /*WIN32_LEAN_AND_MEAN */
 
+#ifndef TLS_OUT_OF_INDEXES
+#define TLS_OUT_OF_INDEXES (DWORD)0xFFFFFFFF
+#endif
+
 #include <dirent.h>
 #include <io.h>
 #include <process.h>