diff options
author | Florian Ragwitz <rafl@debian.org> | 2011-07-12 13:33:20 +0200 |
---|---|---|
committer | Florian Ragwitz <rafl@debian.org> | 2011-07-13 15:35:33 +0200 |
commit | b2af324d4531e01333f0687096a4ca1e8b780440 (patch) | |
tree | 8d6ec54662bd0af8933a037143312d33f47712cc | |
parent | 3f9853b2b1a616ceabdf2ae5d8b9976a85521ccf (diff) | |
download | perl-smoke-me/rafl/assert-bincompat.tar.gz |
Assert binary compatibility between perl and libperlsmoke-me/rafl/assert-bincompat
-rw-r--r-- | .gitignore | 2 | ||||
-rw-r--r-- | MANIFEST | 1 | ||||
-rwxr-xr-x | Makefile.SH | 51 | ||||
-rw-r--r-- | make_bincompat.pl | 16 | ||||
-rw-r--r-- | miniperlmain.c | 21 | ||||
-rw-r--r-- | perl.h | 129 | ||||
-rw-r--r-- | vms/descrip_mms.template | 16 | ||||
-rw-r--r-- | win32/Makefile | 13 | ||||
-rw-r--r-- | win32/makefile.mk | 13 |
9 files changed, 168 insertions, 94 deletions
diff --git a/.gitignore b/.gitignore index deb3c8d104..6b9da87445 100644 --- a/.gitignore +++ b/.gitignore @@ -26,6 +26,7 @@ bug*.pl /opmini.c /perlmain.c /perlmini.c +/globalsmini.c /pod/Makefile /runtests /writemain @@ -86,6 +87,7 @@ MYMETA.yml /uudmap.h /bitcount.h /mg_data.h +/bincompat.h lib/inc/ lib/Win32.pm @@ -4158,6 +4158,7 @@ mad/P5AST.pm Used by nomad mad/P5re.pm Used by nomad mad/PLXML.pm Used by nomad mad/t/p55.t Test for the Perl 5 to Perl 5 translator +make_bincompat.pl Script to generate bincompat.h makedef.pl Create symbol export lists for linking makedepend.SH Precursor to makedepend make_ext.pl Used by Makefile to execute extension Makefiles diff --git a/Makefile.SH b/Makefile.SH index 1a61e5b89c..a8ca128503 100755 --- a/Makefile.SH +++ b/Makefile.SH @@ -454,12 +454,12 @@ c3 = taint.c toke.c util.c deb.c run.c universal.c pad.c globals.c keywords.c c4 = perlio.c perlapi.c numeric.c mathoms.c locale.c pp_pack.c pp_sort.c c5 = $(madlysrc) $(mallocsrc) -c = $(c1) $(c2) $(c3) $(c4) $(c5) miniperlmain.c opmini.c perlmini.c +c = $(c1) $(c2) $(c3) $(c4) $(c5) miniperlmain.c opmini.c perlmini.c globalsmini.c -obj0 = op$(OBJ_EXT) perl$(OBJ_EXT) +obj0 = op$(OBJ_EXT) perl$(OBJ_EXT) globals$(OBJ_EXT) obj1 = $(madlyobj) $(mallocobj) gv$(OBJ_EXT) toke$(OBJ_EXT) perly$(OBJ_EXT) pad$(OBJ_EXT) regcomp$(OBJ_EXT) dump$(OBJ_EXT) util$(OBJ_EXT) mg$(OBJ_EXT) reentr$(OBJ_EXT) mro$(OBJ_EXT) keywords$(OBJ_EXT) obj2 = hv$(OBJ_EXT) av$(OBJ_EXT) run$(OBJ_EXT) pp_hot$(OBJ_EXT) sv$(OBJ_EXT) pp$(OBJ_EXT) scope$(OBJ_EXT) pp_ctl$(OBJ_EXT) pp_sys$(OBJ_EXT) -obj3 = doop$(OBJ_EXT) doio$(OBJ_EXT) regexec$(OBJ_EXT) utf8$(OBJ_EXT) taint$(OBJ_EXT) deb$(OBJ_EXT) universal$(OBJ_EXT) globals$(OBJ_EXT) perlio$(OBJ_EXT) perlapi$(OBJ_EXT) numeric$(OBJ_EXT) mathoms$(OBJ_EXT) locale$(OBJ_EXT) pp_pack$(OBJ_EXT) pp_sort$(OBJ_EXT) +obj3 = doop$(OBJ_EXT) doio$(OBJ_EXT) regexec$(OBJ_EXT) utf8$(OBJ_EXT) taint$(OBJ_EXT) deb$(OBJ_EXT) universal$(OBJ_EXT) perlio$(OBJ_EXT) perlapi$(OBJ_EXT) numeric$(OBJ_EXT) mathoms$(OBJ_EXT) locale$(OBJ_EXT) pp_pack$(OBJ_EXT) pp_sort$(OBJ_EXT) minindt_obj = $(obj1) $(obj2) $(obj3) $(ARCHOBJS) mini_obj = $(minindt_obj) $(MINIDTRACE_O) @@ -551,6 +551,9 @@ git_version.h: lib/Config_git.pl lib/Config_git.pl: $(MINIPERL_EXE) make_patchnum.pl $(MINIPERL) make_patchnum.pl +bincompat.h: $(MINIPERL_EXE) $(CONFIGPM) make_bincompat.pl + $(MINIPERL) make_bincompat.pl > bincompat.h + # make sure that we recompile perl.c if the git version changes perl$(OBJ_EXT): git_version.h @@ -600,7 +603,7 @@ FORCE: @sh -c true !NO!SUBS! -for file in op perl; do +for file in op perl globals; do if $issymlink $file.c; then $spitshell >>$Makefile <<!GROK!THIS! @@ -628,9 +631,18 @@ ${file}mini\$(OBJ_EXT): ${file}mini.c !GROK!THIS! done +$spitshell >>$Makefile <<!GROK!THIS! + +miniperlmain\$(OBJ_EXT): miniperlmain.c patchlevel.h + \$(CCCMD) $DPERL_IS_MINIPERL \$(PLDLFLAGS) \$*.c + +!GROK!THIS! + $spitshell >>$Makefile <<'!NO!SUBS!' -globals$(OBJ_EXT): uudmap.h bitcount.h mg_data.h +globals$(OBJ_EXT): uudmap.h bitcount.h mg_data.h bincompat.h + +globalsmini$(OBJ_EXT): uudmap.h bitcount.h mg_data.h uudmap.h mg_data.h: bitcount.h @@ -642,9 +654,6 @@ generate_uudmap$(OBJ_EXT): mg_raw.h generate_uudmap$(HOST_EXE_EXT): generate_uudmap$(OBJ_EXT) $(CC) -o generate_uudmap$(EXE_EXT) $(LDFLAGS) generate_uudmap$(OBJ_EXT) $(libs) -miniperlmain$(OBJ_EXT): miniperlmain.c patchlevel.h - $(CCCMD) $(PLDLFLAGS) $*.c - perlmain.c: $(MINIPERL_EXE) lib/ExtUtils/Miniperl.pm $(MINIPERL) -Ilib -MExtUtils::Miniperl -e 'writemain(@ARGV)' DynaLoader $(static_ext) > perlmain.c @@ -688,9 +697,9 @@ $(LIBPERL_NONSHR): $(obj) $(RMS) $(LIBPERL_NONSHR) $(AR) rcu $(LIBPERL_NONSHR) $(obj) -$(MINIPERL_NONSHR): $(LIBPERL_NONSHR) miniperlmain$(OBJ_EXT) opmini$(OBJ_EXT) perlmini$(OBJ_EXT) +$(MINIPERL_NONSHR): $(LIBPERL_NONSHR) miniperlmain$(OBJ_EXT) opmini$(OBJ_EXT) perlmini$(OBJ_EXT) globalsmini$(OBJ_EXT) $(CC) $(LDFLAGS) -o $(MINIPERL_NONSHR) miniperlmain$(OBJ_EXT) \ - opmini$(OBJ_EXT) perlmini$(OBJ_EXT) $(LIBPERL_NONSHR) $(LIBS) + opmini$(OBJ_EXT) perlmini$(OBJ_EXT) globalsmini$(OBJ_EXT) $(LIBPERL_NONSHR) $(LIBS) MINIPERLEXP = $(MINIPERL_NONSHR) @@ -812,18 +821,18 @@ $(LIBPERL): $& $(obj) $(DYNALOADER) $(LIBPERLEXPORT) case "${osname}${osvers}" in aix*|beos*) $spitshell >>$Makefile <<'!NO!SUBS!' -$(MINIPERL_EXE): $& miniperlmain$(OBJ_EXT) $(mini_obj) opmini$(OBJ_EXT) perlmini$(OBJ_EXT) +$(MINIPERL_EXE): $& miniperlmain$(OBJ_EXT) $(mini_obj) opmini$(OBJ_EXT) perlmini$(OBJ_EXT) globalsmini$(OBJ_EXT) $(CC) -o $(MINIPERL_EXE) $(CLDFLAGS) \ $(mini_obj) \ - miniperlmain$(OBJ_EXT) opmini$(OBJ_EXT) perlmini$(OBJ_EXT) $(libs) + miniperlmain$(OBJ_EXT) opmini$(OBJ_EXT) perlmini$(OBJ_EXT) globalsmini$(OBJ_EXT) $(libs) $(LDLIBPTH) $(RUN) ./miniperl$(HOST_EXE_EXT) -w -Ilib -MExporter -e '<?>' || $(MAKE) minitest !NO!SUBS! ;; next4*) $spitshell >>$Makefile <<'!NO!SUBS!' -$(MINIPERL_EXE): $& miniperlmain$(OBJ_EXT) $(mini_obj) perlmini$(OBJ_EXT) opmini$(OBJ_EXT) +$(MINIPERL_EXE): $& miniperlmain$(OBJ_EXT) $(mini_obj) perlmini$(OBJ_EXT) globalsmini$(OBJ_EXT) opmini$(OBJ_EXT) $(CC) -o $(MINIPERL_EXE) $(mini_obj) \ - miniperlmain$(OBJ_EXT) opmini$(OBJ_EXT) perlmini$(OBJ_EXT) $(libs) + miniperlmain$(OBJ_EXT) opmini$(OBJ_EXT) perlmini$(OBJ_EXT) globalsmini$(OBJ_EXT) $(libs) $(LDLIBPTH) $(RUN) ./miniperl$(HOST_EXE_EXT) -w -Ilib -MExporter -e '<?>' || $(MAKE) minitest !NO!SUBS! ;; @@ -841,21 +850,21 @@ NAMESPACEFLAGS = -force_flat_namespace ;; esac $spitshell >>$Makefile <<'!NO!SUBS!' -$(MINIPERL_EXE): $& miniperlmain$(OBJ_EXT) $(mini_obj) opmini$(OBJ_EXT) perlmini$(OBJ_EXT) +$(MINIPERL_EXE): $& miniperlmain$(OBJ_EXT) $(mini_obj) opmini$(OBJ_EXT) perlmini$(OBJ_EXT) globalsmini$(OBJ_EXT) -@rm -f miniperl.xok $(CC) $(CLDFLAGS) $(NAMESPACEFLAGS) -o $(MINIPERL_EXE) \ $(mini_obj) \ - miniperlmain$(OBJ_EXT) opmini$(OBJ_EXT) perlmini$(OBJ_EXT) $(libs) + miniperlmain$(OBJ_EXT) opmini$(OBJ_EXT) perlmini$(OBJ_EXT) globalsmini$(OBJ_EXT) $(libs) $(LDLIBPTH) $(RUN) ./miniperl$(HOST_EXE_EXT) -w -Ilib -MExporter -e '<?>' || $(MAKE) minitest !NO!SUBS! ;; *) $spitshell >>$Makefile <<'!NO!SUBS!' -$(MINIPERL_EXE): $& miniperlmain$(OBJ_EXT) $(mini_obj) opmini$(OBJ_EXT) perlmini$(OBJ_EXT) +$(MINIPERL_EXE): $& miniperlmain$(OBJ_EXT) $(mini_obj) opmini$(OBJ_EXT) perlmini$(OBJ_EXT) globalsmini$(OBJ_EXT) -@rm -f miniperl.xok $(LDLIBPTH) $(CC) $(CLDFLAGS) -o $(MINIPERL_EXE) \ $(mini_obj) \ - miniperlmain$(OBJ_EXT) opmini$(OBJ_EXT) perlmini$(OBJ_EXT) $(libs) + miniperlmain$(OBJ_EXT) opmini$(OBJ_EXT) perlmini$(OBJ_EXT) globalsmini$(OBJ_EXT) $(libs) $(LDLIBPTH) $(RUN) ./miniperl$(HOST_EXE_EXT) -w -Ilib -MExporter -e '<?>' || $(MAKE) minitest !NO!SUBS! ;; @@ -1226,11 +1235,11 @@ veryclean: _verycleaner _mopup _clobber # Do not 'make _mopup' directly. _mopup: - rm -f *$(OBJ_EXT) *$(LIB_EXT) all perlmain.c opmini.c perlmini.c uudmap.h generate_uudmap$(EXE_EXT) bitcount.h mg_data.h + rm -f *$(OBJ_EXT) *$(LIB_EXT) all perlmain.c opmini.c perlmini.c globalsmini.c uudmap.h generate_uudmap$(EXE_EXT) bitcount.h mg_data.h bincompat.h -rmdir .depending -@test -f extra.pods && rm -f `cat extra.pods` -@test -f vms/README_vms.pod && rm -f vms/README_vms.pod - -rm -f perl.exp ext.libs $(generated_pods) uni.data opmini.o perlmini.o + -rm -f perl.exp ext.libs $(generated_pods) uni.data opmini.o perlmini.o globalsmini.o -rm -f perl.export perl.dll perl.libexp perl.map perl.def -rm -f perl.loadmap miniperl.loadmap perl.prelmap miniperl.prelmap -rm -f perl.third lib*.so.perl.third perl.3log t/perl.third t/perl.3log @@ -1553,7 +1562,7 @@ distcheck: FORCE .PHONY: ctags ctags: - ctags -f Tags -N --totals --languages=c --langmap=c:+.h --exclude=opmini.c --exclude=perlmini.c *.c *.h + ctags -f Tags -N --totals --languages=c --langmap=c:+.h --exclude=opmini.c --exclude=perlmini.c --exclude=globalsmini.c *.c *.h # AUTOMATICALLY GENERATED MAKE DEPENDENCIES--PUT NOTHING BELOW THIS LINE # If this runs make out of memory, delete /usr/include lines. diff --git a/make_bincompat.pl b/make_bincompat.pl new file mode 100644 index 0000000000..97d9342154 --- /dev/null +++ b/make_bincompat.pl @@ -0,0 +1,16 @@ +#!perl + +use strict; +use warnings; +use Config 'bincompat_options'; + +my $opts = join q{ } => bincompat_options; + +print <<"EOH"; +#ifndef __BINCOMPAT_H__ +#define __BINCOMPAT_H__ + +#define PERL_BINCOMPAT_OPTIONS "$opts" + +#endif +EOH diff --git a/miniperlmain.c b/miniperlmain.c index 260369ee5c..2122d5432e 100644 --- a/miniperlmain.c +++ b/miniperlmain.c @@ -39,6 +39,11 @@ #define PERL_IN_MINIPERLMAIN_C #include "perl.h" +#ifndef PERL_IS_MINIPERL +# include "bincompat.h" +# include <stdio.h> +#endif + static void xs_init (pTHX); static PerlInterpreter *my_perl; @@ -77,6 +82,22 @@ main(int argc, char **argv, char **env) #ifndef NO_ENV_ARRAY_IN_MAIN PERL_UNUSED_ARG(env); #endif +#ifndef PERL_IS_MINIPERL + if (!strnEQ("v" PERL_API_VERSION_STRING, PL_apiversion, + sizeof(PERL_API_VERSION_STRING))) { + fprintf(stderr, "Perl API version v" PERL_API_VERSION_STRING + " of perl executable doesn't match" + " API version%s of libperl.so", PL_apiversion); + exit(1); + } + if (!strnEQ(PERL_BINCOMPAT_OPTIONS, PL_bincompat_options, + sizeof(PERL_BINCOMPAT_OPTIONS))) { + fprintf(stderr, "Binary compatibility options for perl executable (" + PERL_BINCOMPAT_OPTIONS ") do not match compatibility options" + " of libperl.so (%s)", PL_bincompat_options); + exit(1); + } +#endif #ifndef PERL_USE_SAFE_PUTENV PL_use_safe_putenv = FALSE; #endif /* PERL_USE_SAFE_PUTENV */ @@ -4625,101 +4625,106 @@ EXTCONST char PL_apiversion[]; #endif #ifdef DOINIT +# ifdef PERL_IS_MINIPERL EXTCONST char PL_bincompat_options[] = -# ifdef DEBUG_LEAKING_SCALARS +# ifdef DEBUG_LEAKING_SCALARS " DEBUG_LEAKING_SCALARS" -# endif -# ifdef DEBUG_LEAKING_SCALARS_FORK_DUMP +# endif +# ifdef DEBUG_LEAKING_SCALARS_FORK_DUMP " DEBUG_LEAKING_SCALARS_FORK_DUMP" -# endif -# ifdef FAKE_THREADS +# endif +# ifdef FAKE_THREADS " FAKE_THREADS" -# endif -# ifdef MULTIPLICITY +# endif +# ifdef MULTIPLICITY " MULTIPLICITY" -# endif -# ifdef MYMALLOC +# endif +# ifdef MYMALLOC " MYMALLOC" -# endif -# ifdef PERL_DEBUG_READONLY_OPS +# endif +# ifdef PERL_DEBUG_READONLY_OPS " PERL_DEBUG_READONLY_OPS" -# endif -# ifdef PERL_GLOBAL_STRUCT +# endif +# ifdef PERL_GLOBAL_STRUCT " PERL_GLOBAL_STRUCT" -# endif -# ifdef PERL_IMPLICIT_CONTEXT +# endif +# ifdef PERL_IMPLICIT_CONTEXT " PERL_IMPLICIT_CONTEXT" -# endif -# ifdef PERL_IMPLICIT_SYS +# endif +# ifdef PERL_IMPLICIT_SYS " PERL_IMPLICIT_SYS" -# endif -# ifdef PERL_MAD +# endif +# ifdef PERL_MAD " PERL_MAD" -# endif -# ifdef PERL_NEED_APPCTX +# endif +# ifdef PERL_NEED_APPCTX " PERL_NEED_APPCTX" -# endif -# ifdef PERL_NEED_TIMESBASE +# endif +# ifdef PERL_NEED_TIMESBASE " PERL_NEED_TIMESBASE" -# endif -# ifdef PERL_OLD_COPY_ON_WRITE +# endif +# ifdef PERL_OLD_COPY_ON_WRITE " PERL_OLD_COPY_ON_WRITE" -# endif -# ifdef PERL_POISON +# endif +# ifdef PERL_POISON " PERL_POISON" -# endif -# ifdef PERL_TRACK_MEMPOOL +# endif +# ifdef PERL_TRACK_MEMPOOL " PERL_TRACK_MEMPOOL" -# endif -# ifdef PERL_USES_PL_PIDSTATUS +# endif +# ifdef PERL_USES_PL_PIDSTATUS " PERL_USES_PL_PIDSTATUS" -# endif -# ifdef PL_OP_SLAB_ALLOC +# endif +# ifdef PL_OP_SLAB_ALLOC " PL_OP_SLAB_ALLOC" -# endif -# ifdef THREADS_HAVE_PIDS +# endif +# ifdef THREADS_HAVE_PIDS " THREADS_HAVE_PIDS" -# endif -# ifdef USE_64_BIT_ALL +# endif +# ifdef USE_64_BIT_ALL " USE_64_BIT_ALL" -# endif -# ifdef USE_64_BIT_INT +# endif +# ifdef USE_64_BIT_INT " USE_64_BIT_INT" -# endif -# ifdef USE_IEEE +# endif +# ifdef USE_IEEE " USE_IEEE" -# endif -# ifdef USE_ITHREADS +# endif +# ifdef USE_ITHREADS " USE_ITHREADS" -# endif -# ifdef USE_LARGE_FILES +# endif +# ifdef USE_LARGE_FILES " USE_LARGE_FILES" -# endif -# ifdef USE_LONG_DOUBLE +# endif +# ifdef USE_LONG_DOUBLE " USE_LONG_DOUBLE" -# endif -# ifdef USE_PERLIO +# endif +# ifdef USE_PERLIO " USE_PERLIO" -# endif -# ifdef USE_REENTRANT_API +# endif +# ifdef USE_REENTRANT_API " USE_REENTRANT_API" -# endif -# ifdef USE_SFIO +# endif +# ifdef USE_SFIO " USE_SFIO" -# endif -# ifdef USE_SOCKS +# endif +# ifdef USE_SOCKS " USE_SOCKS" -# endif -# ifdef VMS_DO_SOCKETS +# endif +# ifdef VMS_DO_SOCKETS " VMS_DO_SOCKETS" -# endif -# ifdef VMS_WE_ARE_CASE_SENSITIVE +# endif +# ifdef VMS_WE_ARE_CASE_SENSITIVE " VMS_SYMBOL_CASE_AS_IS" -# endif -# ifdef VMS_SHORTEN_LONG_SYMBOLS +# endif +# ifdef VMS_SHORTEN_LONG_SYMBOLS " VMS_SHORTEN_LONG_SYMBOLS" -# endif +# endif ""; +# else +# include "bincompat.h" +EXTCONST char PL_bincompat_options[] = PERL_BINCOMPAT_OPTIONS; +# endif #else EXTCONST char PL_bincompat_options[]; #endif diff --git a/vms/descrip_mms.template b/vms/descrip_mms.template index 97b8396180..b69cca3093 100644 --- a/vms/descrip_mms.template +++ b/vms/descrip_mms.template @@ -284,13 +284,13 @@ c2 = perly.c pp.c pp_ctl.c pp_hot.c pp_pack.c pp_sort.c pp_sys.c regcomp.c regex c3 = run.c scope.c sv.c taint.c toke.c universal.c utf8.c util.c vms.c keywords.c c = $(c0) $(c1) $(c2) $(c3) -obj0 = perl$(O) -obj1 = $(MALLOC_O) $(SOCKO) av$(O) deb$(O) doio$(O) doop$(O) dump$(O) mro$(O) globals$(O) gv$(O) hv$(O) +obj0 = perl$(O) globals$(O) +obj1 = $(MALLOC_O) $(SOCKO) av$(O) deb$(O) doio$(O) doop$(O) dump$(O) mro$(O) gv$(O) hv$(O) obj2 = keywords$(O) locale$(O) mathoms$(O) mg$(O) miniperlmain$(O) numeric$(O) op$(O) pad$(O) perlapi$(O) perlio$(O) obj3 = perly$(O) pp$(O) pp_ctl$(O) pp_hot$(O) reentr$(O) pp_pack$(O) pp_sort$(O) pp_sys$(O) regcomp$(O) obj4 = regexec$(O) run$(O) scope$(O) sv$(O) taint$(O) toke$(O) universal$(O) utf8$(O) util$(O) vms$(O) -mini_obj = perlmini$(O) $(obj1) $(obj2) $(obj3) $(obj4) +mini_obj = perlmini$(O) globalsmini$(O) $(obj1) $(obj2) $(obj3) $(obj4) obj = $(obj0) $(obj1) $(obj2) $(obj3) $(obj4) h0 = av.h config.h cop.h cv.h embed.h embedvar.h @@ -378,6 +378,9 @@ all : base extras x2p archcorefiles preplibrary [.pod]perltoc.pod git_version.h : $(MINIPERL_EXE) make_patchnum.pl $(MINIPERL) make_patchnum.pl +bincompat.h : $(MINIPERL_EXE) make_patchnum.pl + $(MINIPERL) make_bincompat.pl > bincompat.h + base : miniperl git_version.h nonxsext perl @ $(NOOP) extras : dynext libmods utils extra.pods @@ -472,6 +475,9 @@ $(DBG)libperlmini$(OLB) : $(mini_obj) perlmain.c : miniperlmain.c $(MINIPERL_EXE) [.lib.ExtUtils]Miniperl.pm $(MINIPERL) -"MExtUtils::Miniperl" -e "writemain(@ARGV)" "$(EXT)" > perlmain.c +globalsmini.c : globals.c + Copy/NoConfirm/Log $(MMS$SOURCE) $(MMS$TARGET) + .ifdef __DEBUG__ # Link an extra perl that doesn't invoke the debugger perl : $(DBG)perl$(E) @@ -1697,7 +1703,7 @@ doop$(O) : doop.c $(h) $(CC) $(CORECFLAGS) $(MMS$SOURCE) dump$(O) : dump.c $(h) $(CC) $(CORECFLAGS) $(MMS$SOURCE) -globals$(O) : globals.c uudmap.h bitcount.h mg_data.h $(h) +globals$(O) : globals.c uudmap.h bitcount.h mg_data.h bincompat.h $(h) $(CC) $(CORECFLAGS) $(MMS$SOURCE) gv$(O) : gv.c $(h) $(CC) $(CORECFLAGS) $(MMS$SOURCE) @@ -1833,6 +1839,7 @@ tidy : cleanlis - If F$Search("uudmap.h;-1") .nes."" Then Purge/NoConfirm/Log uudmap.h - If F$Search("bitcount.h;-1") .nes."" Then Purge/NoConfirm/Log bitcount.h - If F$Search("mg_data.h;-1") .nes."" Then Purge/NoConfirm/Log mg_data.h + - If F$Search("bincompat.h;-1") .nes."" Then Purge/NoConfirm/Log bincompat.h - If F$Search("Perlshr_Gbl*.Mar;-1") .nes."" Then Purge/NoConfirm/Log Perlshr_Gbl*.Mar - If F$Search("[.ext.Opcode...];-1").nes."" Then Purge/NoConfirm/Log [.ext.Opcode] - If F$Search("[.vms.ext...]*.C;-1").nes."" Then Purge/NoConfirm/Log [.vms.ext...]*.C @@ -1867,6 +1874,7 @@ clean : tidy cleantest - If F$Search("uudmap.h") .nes."" Then Delete/NoConfirm/Log uudmap.h;* - If F$Search("bitcount.h") .nes."" Then Delete/NoConfirm/Log bitcount.h;* - If F$Search("mg_data.h") .nes."" Then Delete/NoConfirm/Log mg_data.h;* + - If F$Search("bincompat.h") .nes."" Then Delete/NoConfirm/Log bincompat.h;* - If F$Search("Perlshr_Gbl*.Mar") .nes."" Then Delete/NoConfirm/Log Perlshr_Gbl*.Mar;* - If F$Search("*.TS").nes."" Then Delete/NoConfirm/Log *.TS;* - If F$Search("[.vms.ext...]*.C").nes."" Then Delete/NoConfirm/Log [.vms.ext...]*.C;* diff --git a/win32/Makefile b/win32/Makefile index d249271b07..d364abc483 100644 --- a/win32/Makefile +++ b/win32/Makefile @@ -726,13 +726,15 @@ CORE_H = $(CORE_NOCFG_H) .\config.h ..\git_version.h UUDMAP_H = ..\uudmap.h BITCOUNT_H = ..\bitcount.h MG_DATA_H = ..\mg_data.h +BINCOMPAT_H = ..\bincompat.h MICROCORE_OBJ = $(MICROCORE_SRC:.c=.obj) CORE_OBJ = $(MICROCORE_OBJ) $(EXTRACORE_SRC:.c=.obj) WIN32_OBJ = $(WIN32_SRC:.c=.obj) MINICORE_OBJ = $(MICROCORE_OBJ:..\=.\mini\) \ $(MINIDIR)\miniperlmain$(o) \ - $(MINIDIR)\perlio$(o) + $(MINIDIR)\perlio$(o) \ + $(MINIDIR)\globals$(o) MINIWIN32_OBJ = $(WIN32_OBJ:.\=.\mini\) MINI_OBJ = $(MINICORE_OBJ) $(MINIWIN32_OBJ) DLL_OBJ = $(DYNALOADER) @@ -833,6 +835,11 @@ config.w32 : $(CFGSH_TMPL) miniperl -Ilib make_patchnum.pl cd win32 +..\bincompat.h : $(MINIPERL) ..\make_bincompat.pl + cd .. + miniperl -Ilib make_bincompat.pl > bincompat.h + cd win32 + # make sure that we recompile perl.c if the git version changes ..\perl$(o) : ..\git_version.h @@ -947,7 +954,7 @@ $(X2P) : $(MINIPERL) $(X2P_OBJ) Extensions << $(EMBED_EXE_MANI) -$(MINIDIR)\globals$(o) : $(UUDMAP_H) $(BITCOUNT_H) $(MG_DATA_H) +$(MINIDIR)\globals$(o) : $(UUDMAP_H) $(BITCOUNT_H) $(MG_DATA_H) $(BINCOMPAT_H) $(UUDMAP_H) $(MG_DATA_H) : $(BITCOUNT_H) @@ -1281,7 +1288,7 @@ _clean : -@$(DEL) $(PERLSTATICLIB) -@$(DEL) $(PERLDLL) -@$(DEL) $(CORE_OBJ) - -@$(DEL) $(GENUUDMAP) $(GENUUDMAP_OBJ) $(UUDMAP_H) $(BITCOUNT_H) $(MG_DATA_H) + -@$(DEL) $(GENUUDMAP) $(GENUUDMAP_OBJ) $(UUDMAP_H) $(BITCOUNT_H) $(MG_DATA_H) $(BINCOMPAT_H) -if exist $(MINIDIR) rmdir /s /q $(MINIDIR) -if exist $(UNIDATADIR1) rmdir /s /q $(UNIDATADIR1) -if exist $(UNIDATADIR2) rmdir /s /q $(UNIDATADIR2) diff --git a/win32/makefile.mk b/win32/makefile.mk index 56edad28d3..1fac9193b0 100644 --- a/win32/makefile.mk +++ b/win32/makefile.mk @@ -817,7 +817,7 @@ MICROCORE_SRC = \ ..\doio.c \ ..\doop.c \ ..\dump.c \ - ..\globals.c \ + ..\globalsmini.c\ ..\gv.c \ ..\mro.c \ ..\hv.c \ @@ -921,11 +921,12 @@ CORE_H = $(CORE_NOCFG_H) .\config.h ..\git_version.h UUDMAP_H = ..\uudmap.h BITCOUNT_H = ..\bitcount.h MG_DATA_H = ..\mg_data.h +BINCOMPAT_H = ..\bincompat.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) perlio$(o) globalsmini$(o)} MINIWIN32_OBJ = $(MINIDIR)\{$(WIN32_OBJ:f)} MINI_OBJ = $(MINICORE_OBJ) $(MINIWIN32_OBJ) DLL_OBJ = $(DYNALOADER) @@ -1118,6 +1119,9 @@ config.w32 : $(CFGSH_TMPL) ..\git_version.h : $(MINIPERL) ..\make_patchnum.pl cd .. && miniperl -Ilib make_patchnum.pl +..\bincompat.h : $(MINIPERL) ..\make_bincompat.pl + cd .. && miniperl -Ilib bincompat.pl > bincompat.h + # make sure that we recompile perl.c if the git version changes ..\perl$(o) : ..\git_version.h @@ -1292,7 +1296,7 @@ $(X2P) : $(MINIPERL) $(X2P_OBJ) Extensions $(EMBED_EXE_MANI) .ENDIF -$(MINIDIR)\globals$(o) : $(UUDMAP_H) $(BITCOUNT_H) $(MG_DATA_H) +$(MINIDIR)\globals$(o) : $(UUDMAP_H) $(BITCOUNT_H) $(MG_DATA_H) $(BINCOMPAT_H) $(UUDMAP_H) $(MG_DATA_H) : $(BITCOUNT_H) @@ -1657,6 +1661,7 @@ _test : $(RIGHTMAKE) _clean : -@erase miniperlmain$(o) + -@erase globalsmini$(o) -@erase $(MINIPERL) -@erase perlglob$(o) -@erase perlmain$(o) @@ -1671,7 +1676,7 @@ _clean : -@erase $(PERLSTATICLIB) -@erase $(PERLDLL) -@erase $(CORE_OBJ) - -@erase $(GENUUDMAP) $(GENUUDMAP_OBJ) $(UUDMAP_H) $(BITCOUNT_H) $(MG_DATA_H) + -@erase $(GENUUDMAP) $(GENUUDMAP_OBJ) $(UUDMAP_H) $(BITCOUNT_H) $(MG_DATA_H) $(BINCOMPAT_H) -if exist $(MINIDIR) rmdir /s /q $(MINIDIR) -if exist $(UNIDATADIR1) rmdir /s /q $(UNIDATADIR1) -if exist $(UNIDATADIR2) rmdir /s /q $(UNIDATADIR2) |