summaryrefslogtreecommitdiff
path: root/Makefile.SH
diff options
context:
space:
mode:
authorNicholas Clark <nick@ccl4.org>2011-05-15 13:21:09 +0100
committerNicholas Clark <nick@ccl4.org>2011-06-11 10:39:59 +0200
commit6f83ef0e5a45c465f83de3304c5818ba44492250 (patch)
tree6b5a754cde4ee86baf633e6415f18b5fd8e721ff /Makefile.SH
parent546efe9fbd6c3c651c39b369e97d0835230a0f9f (diff)
downloadperl-6f83ef0e5a45c465f83de3304c5818ba44492250.tar.gz
Create a lookup table for magic vtables from magic type, PL_magic_data.
Use it to eliminate the large switch statement in Perl_sv_magic(). As the table needs to be keyed on magic type, which is expressed as C character constants, the order depends on the compiler's character set. Frustratingly, EBCDIC variants don't agree on the code points for '~' and ']', which we use here. Instead of having (at least) 4 tables, get the local runtime to sort the table for us. Hence the regen script writes out the (unsorted) mg_raw.h, which generate_uudmap sorts to generate mg_data.h
Diffstat (limited to 'Makefile.SH')
-rwxr-xr-xMakefile.SH10
1 files changed, 6 insertions, 4 deletions
diff --git a/Makefile.SH b/Makefile.SH
index 8c17ac247f..b4955adac1 100755
--- a/Makefile.SH
+++ b/Makefile.SH
@@ -630,12 +630,14 @@ done
$spitshell >>$Makefile <<'!NO!SUBS!'
-globals$(OBJ_EXT): uudmap.h bitcount.h
+globals$(OBJ_EXT): uudmap.h bitcount.h mg_data.h
-uudmap.h: bitcount.h
+uudmap.h mg_data.h: bitcount.h
bitcount.h: generate_uudmap$(HOST_EXE_EXT)
- $(RUN) ./generate_uudmap$(HOST_EXE_EXT) uudmap.h bitcount.h
+ $(RUN) ./generate_uudmap$(HOST_EXE_EXT) uudmap.h bitcount.h mg_data.h
+
+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)
@@ -1224,7 +1226,7 @@ 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
+ rm -f *$(OBJ_EXT) *$(LIB_EXT) all perlmain.c opmini.c perlmini.c uudmap.h generate_uudmap$(EXE_EXT) bitcount.h mg_data.h
-rmdir .depending
-@test -f extra.pods && rm -f `cat extra.pods`
-@test -f vms/README_vms.pod && rm -f vms/README_vms.pod