summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorFlorian Ragwitz <rafl@debian.org>2011-07-12 13:33:20 +0200
committerFlorian Ragwitz <rafl@debian.org>2011-07-13 15:35:33 +0200
commitb2af324d4531e01333f0687096a4ca1e8b780440 (patch)
tree8d6ec54662bd0af8933a037143312d33f47712cc
parent3f9853b2b1a616ceabdf2ae5d8b9976a85521ccf (diff)
downloadperl-smoke-me/rafl/assert-bincompat.tar.gz
Assert binary compatibility between perl and libperlsmoke-me/rafl/assert-bincompat
-rw-r--r--.gitignore2
-rw-r--r--MANIFEST1
-rwxr-xr-xMakefile.SH51
-rw-r--r--make_bincompat.pl16
-rw-r--r--miniperlmain.c21
-rw-r--r--perl.h129
-rw-r--r--vms/descrip_mms.template16
-rw-r--r--win32/Makefile13
-rw-r--r--win32/makefile.mk13
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
diff --git a/MANIFEST b/MANIFEST
index 7f91488443..7edcc09c2c 100644
--- a/MANIFEST
+++ b/MANIFEST
@@ -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 */
diff --git a/perl.h b/perl.h
index 4fa45f42dc..b02891fd53 100644
--- a/perl.h
+++ b/perl.h
@@ -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)