diff options
author | Nick Ing-Simmons <nik@tiuk.ti.com> | 1997-11-28 22:39:39 +0000 |
---|---|---|
committer | Nick Ing-Simmons <nik@tiuk.ti.com> | 1997-11-28 22:39:39 +0000 |
commit | 5b0d9cbecfd90628c0e955ee142f05f9b60bcf43 (patch) | |
tree | af50799266dd7553b6090aa7116baf1118b5c659 /win32 | |
parent | 04dc04aa73cc58d998c1f2e8d4c3f8576eee7e49 (diff) | |
download | perl-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.gc | 26 | ||||
-rw-r--r-- | win32/makegcc.mk | 110 | ||||
-rw-r--r-- | win32/runperl.c | 12 | ||||
-rw-r--r-- | win32/win32.c | 22 | ||||
-rw-r--r-- | win32/win32iop.h | 2 |
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 |