summaryrefslogtreecommitdiff
path: root/win32
diff options
context:
space:
mode:
authorNick Ing-Simmons <nik@tiuk.ti.com>1997-11-28 22:39:39 +0000
committerNick Ing-Simmons <nik@tiuk.ti.com>1997-11-28 22:39:39 +0000
commit5b0d9cbecfd90628c0e955ee142f05f9b60bcf43 (patch)
treeaf50799266dd7553b6090aa7116baf1118b5c659 /win32
parent04dc04aa73cc58d998c1f2e8d4c3f8576eee7e49 (diff)
downloadperl-5b0d9cbecfd90628c0e955ee142f05f9b60bcf43.tar.gz
Builds completely with Mingw32, dynamic loaded extensions
don't work yet - suspect __declspec() non-implemented issues. p4raw-id: //depot/ansiperl@329
Diffstat (limited to 'win32')
-rw-r--r--win32/config.gc26
-rw-r--r--win32/makegcc.mk110
-rw-r--r--win32/runperl.c12
-rw-r--r--win32/win32.c22
-rw-r--r--win32/win32iop.h2
5 files changed, 92 insertions, 80 deletions
diff --git a/win32/config.gc b/win32/config.gc
index 096444c6d0..a78198ffe1 100644
--- a/win32/config.gc
+++ b/win32/config.gc
@@ -7,8 +7,8 @@
archlibexp='~INST_TOP~\lib'
archname='MSWin32'
-cc='cl'
-ccflags='-MD -DWIN32'
+cc='gcc'
+ccflags='-DWIN32'
cppflags='-DWIN32'
dlsrc='dl_win32.xs'
dynamic_ext='Socket IO Fcntl Opcode SDBM_File attrs Thread'
@@ -16,7 +16,7 @@ extensions='~static_ext~ ~dynamic_ext~'
installarchlib='~INST_TOP~\lib'
installprivlib='~INST_TOP~\lib'
libpth=''
-libs=''
+libs=' '
osname='MSWin32'
osvers='4.0'
prefix='~INST_DRV~'
@@ -59,7 +59,7 @@ byteorder='1234'
c=''
castflags='0'
cat='type'
-cccdlflags=' '
+cccdlflags='-dll'
ccdlflags=' '
cf_by='nobody'
cf_email='nobody@no.where.net'
@@ -76,9 +76,9 @@ cpio=''
cpp='cpp'
cpp_stuff='42'
cpplast=''
-cppminus=''
-cpprun='cl -E'
-cppstdin='cl -E'
+cppminus='-'
+cpprun='gcc -E'
+cppstdin='gcc -E'
cryptlib=''
csh='undef'
d_Gconvert='sprintf((b),"%.*g",(n),(x))'
@@ -363,16 +363,16 @@ intsize='4'
known_extensions='DB_File Fcntl GDBM_File NDBM_File ODBM_File Opcode POSIX SDBM_File Socket IO attrs Thread'
ksh=''
large=''
-ld='link'
+ld='gcc'
lddlflags='-dll'
-ldflags='-nologo -subsystem:windows'
+ldflags=''
less='less'
lib_ext='.lib'
libc='msvcrt.lib'
libswanted='net socket inet nsl nm ndbm gdbm dbm db malloc dl dld ld sun m c cposix posix ndir dir crypt ucb bsd BSD PW x'
line='line'
lint=''
-lkflags=''
+lkflags=' '
ln=''
lns='copy'
locincpth='/usr/local/include /opt/local/include /usr/gnu/include /opt/gnu/include /usr/GNU/include /opt/GNU/include'
@@ -384,7 +384,7 @@ ls='dir'
lseektype='off_t'
mail=''
mailx=''
-make='nmake'
+make='dmake'
mallocobj='malloc.o'
mallocsrc='malloc.c'
malloctype='void *'
@@ -411,10 +411,10 @@ nm_opt=''
nm_so_opt=''
nroff=''
o_nonblock='O_NONBLOCK'
-obj_ext='.obj'
+obj_ext='.o'
oldarchlib=''
oldarchlibexp=''
-optimize='-O'
+optimize='-O2'
orderlib='false'
package='perl5'
pager='more /e'
diff --git a/win32/makegcc.mk b/win32/makegcc.mk
index a61d4bea5c..a6c574e32a 100644
--- a/win32/makegcc.mk
+++ b/win32/makegcc.mk
@@ -71,7 +71,7 @@ WINIOMAYBE =
OPTIMIZE = -g -O2 $(RUNTIME)
LINK_DBG = -g
.ELSE
-OPTIMIZE = -O2 $(RUNTIME)
+OPTIMIZE = -g -O2 $(RUNTIME)
LINK_DBG =
.ENDIF
@@ -86,15 +86,15 @@ OBJOUT_FLAG = -o
# Rules
#
.SUFFIXES :
-.SUFFIXES : .c .obj .dll .lib .exe
+.SUFFIXES : .c .o .dll .lib .exe
-.c.obj:
+.c.o:
$(CC) -c $(CFLAGS) $(OBJOUT_FLAG) $@ $<
.c.i:
$(CC) -E $(CFLAGS) $(OBJOUT_FLAG) $@ $<
-.obj.dll:
+.o.dll:
$(LINK32) -o $@ $(LINK_FLAGS) $< $(LIBFILES),
$(IMPLIB) -def $(*B).def $(*B).lib $@
@@ -164,48 +164,48 @@ CORE_C= ..\av.c \
..\util.c \
..\malloc.c
-CORE_OBJ= ..\av.obj \
- ..\deb.obj \
- ..\doio.obj \
- ..\doop.obj \
- ..\dump.obj \
- ..\globals.obj \
- ..\gv.obj \
- ..\hv.obj \
- ..\mg.obj \
- ..\op.obj \
- ..\perl.obj \
- ..\perlio.obj \
- ..\perly.obj \
- ..\pp.obj \
- ..\pp_ctl.obj \
- ..\pp_hot.obj \
- ..\pp_sys.obj \
- ..\regcomp.obj \
- ..\regexec.obj \
- ..\run.obj \
- ..\scope.obj \
- ..\sv.obj \
- ..\taint.obj \
- ..\toke.obj \
- ..\universal.obj\
- ..\util.obj \
- ..\malloc.obj
+CORE_OBJ= ..\av.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.o
WIN32_C = perllib.c \
win32.c \
win32sck.c \
win32thread.c
-WIN32_OBJ = win32.obj \
- win32sck.obj \
- win32thread.obj
+WIN32_OBJ = win32.o \
+ win32sck.o \
+ win32thread.o
-PERL95_OBJ = perl95.obj \
- win32mt.obj \
- win32sckmt.obj
+PERL95_OBJ = perl95.o \
+ win32mt.o \
+ win32sckmt.o
-DLL_OBJ = perllib.obj $(DYNALOADER).obj
+DLL_OBJ = perllib.o $(DYNALOADER).o
CORE_H = ..\av.h \
..\cop.h \
@@ -283,20 +283,20 @@ MAKE = dmake
all: $(PERLEXE) $(PERL95EXE) $(GLOBEXE) $(DYNALOADMODULES) $(MINIMOD) $(GLOBBAT)
-$(DYNALOADER).obj : $(DYNALOADER).c $(CORE_H) $(EXTDIR)\DynaLoader\dlutils.c
+$(DYNALOADER).o : $(DYNALOADER).c $(CORE_H) $(EXTDIR)\DynaLoader\dlutils.c
#------------------------------------------------------------
-$(GLOBEXE): perlglob.obj
+$(GLOBEXE): perlglob.o
$(LINK32) $(LINK_FLAGS) -o $@ \
- perlglob.obj $(LIBFILES)
+ perlglob.o $(LIBFILES)
$(GLOBBAT) : ..\lib\File\DosGlob.pm $(MINIPERL)
$(MINIPERL) $(PL2BAT) - < ..\lib\File\DosGlob.pm > $(GLOBBAT)
-perlglob.obj : perlglob.c
+perlglob.o : perlglob.c
-..\miniperlmain.obj : ..\miniperlmain.c $(CORE_H)
+..\miniperlmain.o : ..\miniperlmain.c $(CORE_H)
config.w32 : $(CFGSH_TMPL)
copy $(CFGSH_TMPL) config.w32
@@ -326,15 +326,15 @@ $(CONFIGPM) : $(MINIPERL) ..\config.sh config_h.PL ..\minimod.pl
LKPRE = INPUT (
LKPOST = )
-linkscript : ..\miniperlmain.obj $(CORE_OBJ) $(WIN32_OBJ)
- type $(mktmp $(LKPRE) ..\miniperlmain.obj \
+linkscript : ..\miniperlmain.o $(CORE_OBJ) $(WIN32_OBJ)
+ type $(mktmp $(LKPRE) ..\miniperlmain.o \
$(CORE_OBJ:s,\,\\) $(WIN32_OBJ:s,\,\\) $(LIBFILES) $(LKPOST))
-$(MINIPERL) : ..\miniperlmain.obj $(CORE_OBJ) $(WIN32_OBJ)
+$(MINIPERL) : ..\miniperlmain.o $(CORE_OBJ) $(WIN32_OBJ)
$(LINK32) -v -o $@ $(LINK_FLAGS) \
- $(mktmp $(LKPRE) ..\miniperlmain.obj \
+ $(mktmp $(LKPRE) ..\miniperlmain.o \
$(CORE_OBJ:s,\,\\) $(WIN32_OBJ:s,\,\\) $(LIBFILES) $(LKPOST))
$(WIN32_OBJ) : $(CORE_H)
@@ -367,13 +367,13 @@ $(MINIMOD) : $(MINIPERL) ..\minimod.pl
perlmain.c : runperl.c
copy runperl.c perlmain.c
-perlmain.obj : perlmain.c
+perlmain.o : perlmain.c
$(CC) $(CFLAGS) -UPERLDLL -o $@ -c perlmain.c
-$(PERLEXE): $(PERLDLL) $(CONFIGPM) perlmain.obj
+$(PERLEXE): $(PERLDLL) $(CONFIGPM) perlmain.o
$(LINK32) -o perl.exe $(LINK_FLAGS) \
- perlmain.obj $(WINIOMAYBE) $(PERLIMPLIB) $(LIBFILES)
+ perlmain.o $(WINIOMAYBE) $(PERLIMPLIB) $(LIBFILES)
copy perl.exe $@
del perl.exe
copy splittree.pl ..
@@ -456,7 +456,7 @@ distclean: clean
-del /f perl95.c
.ENDIF
-del /f bin\*.bat
- -cd $(EXTDIR) && del /s *.lib *.def *.map *.bs Makefile *.obj pm_to_blib
+ -cd $(EXTDIR) && del /s *.lib *.def *.map *.bs Makefile *.o pm_to_blib
-rmdir /s /q ..\lib\auto
-rmdir /s /q ..\lib\CORE
@@ -509,10 +509,10 @@ test-notty : test-prep
cd ..\t && $(PERLEXE) -I.\lib harness
clean :
- -@erase miniperlmain.obj
+ -@erase miniperlmain.o
-@erase $(MINIPERL)
- -@erase perlglob.obj
- -@erase perlmain.obj
+ -@erase perlglob.o
+ -@erase perlmain.o
-@erase config.w32
-@erase /f config.h
-@erase $(GLOBEXE)
@@ -521,7 +521,7 @@ clean :
-@erase $(CORE_OBJ)
-@erase $(WIN32_OBJ)
-@erase $(DLL_OBJ)
- -@erase ..\*.obj ..\*.lib ..\*.exp *.obj *.lib *.exp
+ -@erase ..\*.o ..\*.lib ..\*.exp *.o *.lib *.exp
-@erase ..\t\*.exe ..\t\*.dll ..\t\*.bat
-@erase *.ilk
-@erase *.pdb
diff --git a/win32/runperl.c b/win32/runperl.c
index ff0a5718ee..954460739f 100644
--- a/win32/runperl.c
+++ b/win32/runperl.c
@@ -1,8 +1,20 @@
/* Say NO to CPP! Hallelujah! */
#ifdef __GNUC__
+/*
+ * GNU C does not do __declspec()
+ */
#define __declspec(foo)
+
+/* Mingw32 defaults to globing command line
+ * This is inconsistent with other Win32 ports and
+ * seems to cause trouble with passing -DXSVERSION=\"1.6\"
+ * So we turn it off like this:
+ */
+int _CRT_glob = 0;
+
#endif
+
__declspec(dllimport) int RunPerl(int argc, char **argv, char **env, void *ios);
int
diff --git a/win32/win32.c b/win32/win32.c
index a01ff6fb44..613d9815ca 100644
--- a/win32/win32.c
+++ b/win32/win32.c
@@ -28,11 +28,21 @@
#include "XSUB.h"
#include <fcntl.h>
#include <sys/stat.h>
+#ifndef __GNUC__
+/* assert.h conflicts with #define of assert in perl.h */
#include <assert.h>
+#endif
#include <string.h>
#include <stdarg.h>
#include <float.h>
+#ifdef __GNUC__
+/* Mingw32 defaults to globing command line
+ * So we turn it off like this:
+ */
+int _CRT_glob = 0;
+#endif
+
#define EXECF_EXEC 1
#define EXECF_SPAWN 2
#define EXECF_SPAWN_NOWAIT 3
@@ -1126,21 +1136,13 @@ win32_pipe(int *pfd, unsigned int size, int mode)
DllExport FILE*
win32_popen(const char *command, const char *mode)
{
-#ifdef __GNUC__
- return NULL;
-#else
return _popen(command, mode);
-#endif
}
DllExport int
win32_pclose(FILE *pf)
{
-#ifdef __GNUC__
- return fclose(pf);
-#else
return _pclose(pf);
-#endif
}
DllExport int
@@ -1263,17 +1265,13 @@ win32_setvbuf(FILE *pf, char *buf, int type, size_t size)
DllExport int
win32_flushall(void)
{
-#ifndef __GNUC__
return flushall();
-#endif
}
DllExport int
win32_fcloseall(void)
{
-#ifndef __GNUC__
return fcloseall();
-#endif
}
DllExport char*
diff --git a/win32/win32iop.h b/win32/win32iop.h
index c862cada26..ccc1a65218 100644
--- a/win32/win32iop.h
+++ b/win32/win32iop.h
@@ -211,7 +211,9 @@ END_EXTERN_C
#define perror win32_perror
#define setbuf win32_setbuf
#define setvbuf win32_setvbuf
+#undef flushall
#define flushall win32_flushall
+#undef fcloseall
#define fcloseall win32_fcloseall
#define fgets win32_fgets
#define gets win32_gets