This is a live mirror of the Perl 5 development currently hosted at https://github.com/perl/perl5
Fix for warnings in util.c/Perl_init_tm()
[perl5.git] / Makefile.SH
index 7620570..70c3d6c 100644 (file)
@@ -20,6 +20,10 @@ esac
 # #22227 $baserev
 # #22302 $yacc $byacc
 
+# H.Merijn Brand [30 Oct 2004]
+# Mentioned for the same reason for future reference
+# #23434 $d_strlcat $d_strlcpy
+
 : This forces SH files to create target in same directory as SH file.
 : This is so that make depend always knows where to find SH derivatives.
 case "$0" in
@@ -72,6 +76,10 @@ true)
        netbsd*|freebsd[234]*|openbsd*)
                linklibperl="-L. -lperl"
                ;;
+       interix*)
+               linklibperl="-L. -lperl"
+               shrpldflags="$shrpldflags -Wl,--image-base,0x57000000"
+               ;;
        aix*)
                shrpldflags="-H512 -T512 -bhalt:4 -bM:SRE -bE:perl.exp"
                case "$osvers" in
@@ -295,7 +303,8 @@ CCCMD    = `sh $(shellflags) cflags "optimize='$(OPTIMIZE)'" $@`
 
 CCCMDSRC = `sh $(shellflags) cflags "optimize='$(OPTIMIZE)'" $<`
 
-private = preplibrary lib/Config.pm lib/ExtUtils/Miniperl.pm
+CONFIGPM = lib/Config.pm lib/Config_heavy.pl
+private = preplibrary $(CONFIGPM) lib/ExtUtils/Miniperl.pm
 
 # Files to be built with variable substitution before miniperl
 # is available.
@@ -337,7 +346,7 @@ c2 = perl.c perly.c pp.c pp_hot.c pp_ctl.c pp_sys.c regcomp.c regexec.c utf8.c
 c3 = gv.c sv.c taint.c toke.c util.c deb.c run.c universal.c xsutils.c pad.c
 c4 = globals.c perlio.c perlapi.c numeric.c locale.c pp_pack.c pp_sort.c
 
-c = $(c1) $(c2) $(c3) $(c4) miniperlmain.c perlmain.c
+c = $(c1) $(c2) $(c3) $(c4) miniperlmain.c perlmain.c opmini.c
 
 obj1 = $(mallocobj) gv$(OBJ_EXT) toke$(OBJ_EXT) perly$(OBJ_EXT) op$(OBJ_EXT) pad$(OBJ_EXT) regcomp$(OBJ_EXT) dump$(OBJ_EXT) util$(OBJ_EXT) mg$(OBJ_EXT) reentr$(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)
@@ -368,10 +377,10 @@ compile: all
        cd x2p; $(MAKE) compile;
        cd pod; $(MAKE) compile;
 
-translators:   miniperl$(EXE_EXT) lib/Config.pm FORCE
+translators:   miniperl$(EXE_EXT) $(CONFIGPM) FORCE
        @echo " "; echo "       Making x2p stuff"; cd x2p; $(LDLIBPTH) $(MAKE) all
 
-utilities:     miniperl$(EXE_EXT) lib/Config.pm $(plextract) lib/lib.pm FORCE
+utilities:     miniperl$(EXE_EXT) $(CONFIGPM) $(plextract) lib/lib.pm FORCE
        @echo " "; echo "       Making utilities"; cd utils; $(LDLIBPTH) $(MAKE) all
 
 
@@ -390,11 +399,12 @@ $spitshell >>Makefile <<!GROK!THIS!
 # if we have a symlink forest to another disk (it complains about too many
 # levels of symbolic links, even if we have only two)
 
-opmini\$(OBJ_EXT): op.c config.h
-       \$(RMS) opmini.c
-       \$(CPS) op.c opmini.c
+opmini.c: op.c
+       \$(CPS) op.c opmini.tmp
+       sh mv-if-diff opmini.tmp opmini.c
+
+opmini\$(OBJ_EXT): opmini.c
        \$(CCCMD) \$(PLDLFLAGS) $DPERL_EXTERNAL_GLOB opmini.c
-       \$(RMS) opmini.c
 
 !GROK!THIS!
 $spitshell >>Makefile <<'!NO!SUBS!'
@@ -542,7 +552,7 @@ $(LIBPERL): $& perl$(OBJ_EXT) $(obj) $(LIBPERLEXPORT)
 !NO!SUBS!
 
        case "${osname}${osvers}" in
-       aix*)
+       aix*|beos*)
                $spitshell >>Makefile <<'!NO!SUBS!'
 miniperl: $& miniperlmain$(OBJ_EXT) $(LIBPERL) opmini$(OBJ_EXT)
        $(CC) -o miniperl $(CLDFLAGS) \
@@ -551,7 +561,7 @@ miniperl: $& miniperlmain$(OBJ_EXT) $(LIBPERL) opmini$(OBJ_EXT)
        $(LDLIBPTH) ./miniperl -w -Ilib -MExporter -e '<?>' || $(MAKE) minitest
 !NO!SUBS!
                ;;
-       beos*|next4*)
+       next4*)
                $spitshell >>Makefile <<'!NO!SUBS!'
 miniperl: $& miniperlmain$(OBJ_EXT) $(LIBPERL) opmini$(OBJ_EXT)
        $(CC) -o miniperl `echo $(obj) | sed 's/ op$(OBJ_EXT) / /'` \
@@ -723,7 +733,7 @@ sperl$(OBJ_EXT): perl.c $(h)
 # We need to autosplit in two steps because VOS can't handle so many args
 #
 .PHONY: preplibrary
-preplibrary: miniperl$(EXE_EXT) lib/Config.pm lib/lib.pm $(PREPLIBRARY_LIBPERL)
+preplibrary: miniperl$(EXE_EXT) $(CONFIGPM) lib/lib.pm $(PREPLIBRARY_LIBPERL)
        @sh ./makedir lib/auto
        @echo " AutoSplitting perl library"
        $(LDLIBPTH) ./miniperl -Ilib -e 'use AutoSplit; \
@@ -735,11 +745,11 @@ preplibrary: miniperl$(EXE_EXT) lib/Config.pm lib/lib.pm $(PREPLIBRARY_LIBPERL)
 # Take care to avoid modifying lib/Config.pm without reason
 # (If trying to create a new port and having problems with the configpm script,
 # try 'make minitest' and/or commenting out the tests at the end of configpm.)
-lib/Config.pm: config.sh miniperl$(EXE_EXT) configpm Porting/Glossary
-       $(LDLIBPTH) ./miniperl -Ilib configpm configpm.tmp
-       sh mv-if-diff configpm.tmp $@
+$(CONFIGPM): config.sh miniperl$(EXE_EXT) configpm Porting/Glossary
+       $(LDLIBPTH) ./miniperl -Ilib configpm --heavy=lib/Config_heavy.pl configpm.tmp
+       sh mv-if-diff configpm.tmp lib/Config.pm
 
-lib/ExtUtils/Miniperl.pm: miniperlmain.c miniperl$(EXE_EXT) minimod.pl lib/Config.pm
+lib/ExtUtils/Miniperl.pm: miniperlmain.c miniperl$(EXE_EXT) minimod.pl $(CONFIGPM)
        $(LDLIBPTH) ./miniperl minimod.pl > minimod.tmp
        sh mv-if-diff minimod.tmp $@
        -touch lib/ExtUtils/Miniperl.pm
@@ -747,19 +757,22 @@ lib/ExtUtils/Miniperl.pm: miniperlmain.c miniperl$(EXE_EXT) minimod.pl lib/Confi
 lib/re.pm: ext/re/re.pm
        cp ext/re/re.pm ext/re/re.tmp && sh mv-if-diff ext/re/re.tmp lib/re.pm
 
-$(plextract):  miniperl$(EXE_EXT) lib/Config.pm x2p/s2p
+$(plextract):  miniperl$(EXE_EXT) $(CONFIGPM) x2p/s2p
        @-rm -f $@
-       $(LDLIBPTH) ./miniperl -Ilib $@.PL
+       $(LDLIBPTH) ./miniperl -I`pwd`/lib $@.PL
 
-x2p/s2p: miniperl$(EXE_EXT) lib/Config.pm x2p/s2p.PL
+x2p/s2p: miniperl$(EXE_EXT) $(CONFIGPM) x2p/s2p.PL
        cd x2p; $(LDLIBPTH) $(MAKE) s2p
 
-lib/lib.pm:    miniperl$(EXE_EXT) lib/Config.pm
+lib/lib.pm:    miniperl$(EXE_EXT) $(CONFIGPM)
        @-rm -f $@
        $(LDLIBPTH) ./miniperl -Ilib lib/lib_pm.PL
 
-$(unidatafiles): miniperl$(EXE_EXT) lib/Config.pm lib/unicore/mktables
-       cd lib/unicore && $(LDLIBPTH) ../../miniperl -I../../lib mktables
+unidatafiles $(unidatafiles): uni.data
+
+uni.data: miniperl$(EXE_EXT) $(CONFIGPM) lib/unicore/mktables
+       cd lib/unicore && $(LDLIBPTH) ../../miniperl -I../../lib mktables -w
+       touch uni.data
 
 extra.pods: miniperl$(EXE_EXT)
        -@test -f extra.pods && rm -f `cat extra.pods`
@@ -772,8 +785,7 @@ extra.pods: miniperl$(EXE_EXT)
        -@rm -f pod/perlvms.pod
        -@test -f vms/perlvms.pod && cd pod && $(LNS) ../vms/perlvms.pod perlvms.pod && cd .. && echo "pod/perlvms.pod" >> extra.pods
        -@rm -f pod/perldelta.pod
-       -@test -f pod/perl592delta.pod && cd pod && $(LNS) perl592delta.pod perldelta.pod && cd .. && echo "pod/perldelta.pod" >> extra.pods
-
+       -@test -f pod/perl593delta.pod && cd pod && $(LNS) perl593delta.pod perldelta.pod && cd .. && echo "pod/perldelta.pod" >> extra.pods # See buildtoc
 extras.make: perl$(EXE_EXT)
        -@test -s extras.lst && PATH="`pwd`:${PATH}" PERL5LIB="`pwd`/lib" $(LDLIBPTH) ./perl -Ilib -MCPAN -e '@ARGV&&make(@ARGV)' `cat extras.lst`
 
@@ -955,11 +967,11 @@ veryclean:        _verycleaner _mopup _clobber
 
 # Do not 'make _mopup' directly.
 _mopup:
-       rm -f *$(OBJ_EXT) *$(LIB_EXT) all perlmain.c
+       rm -f *$(OBJ_EXT) *$(LIB_EXT) all perlmain.c opmini.c
        -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 extra.pods opmini.o
+       -rm -f perl.exp ext.libs extra.pods uni.data opmini.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
@@ -1004,8 +1016,8 @@ _cleaner2:
        rm -rf .config
        rm -f preload
        rm -f testcompile compilelog
-       -rmdir lib/B lib/Data lib/Digest
        rm -rf lib/Encode
+       -rmdir lib/B lib/Data
        -rmdir lib/Filter/Util lib/IO/Socket lib/IO
        -rmdir lib/List lib/MIME lib/Scalar lib/Sys 
        -rmdir lib/threads lib/XS
@@ -1054,6 +1066,7 @@ makedepend: makedepend.SH config.sh
 .PHONY: test check test_prep test_prep_nodll test_prep_pre _test_prep \
        test_tty test-tty _test_tty test_notty test-notty _test_notty \
        utest ucheck test.utf8 check.utf8 test.torture torturetest \
+       test.utf16 check.utf16 utest.utf16 ucheck.utf16 \
        test.third check.third utest.third ucheck.third test_notty.third \
        test.deparse test_notty.deparse test_harness test_harness_notty \
        test.bytecompile minitest coretest test.taintwarn
@@ -1115,6 +1128,18 @@ test-notty:      test_notty
 test.torture torturetest:      test_prep
        PERL=./perl TEST_ARGS=-torture $(MAKE) _test
 
+# Targets for UTF16 testing:
+
+minitest.utf16: minitest.prep
+       - cd t && (rm -f perl$(EXE_EXT); $(LNS) ../miniperl$(EXE_EXT) perl$(EXE_EXT)) \
+               && $(LDLIBPTH) ./perl TEST -minitest -utf16 base/*.t comp/*.t cmd/*.t run/*.t io/*.t op/*.t uni/*.t </dev/tty
+
+test.utf16 check.utf16: test_prep
+       PERL=./perl $(MAKE) TEST_ARGS=-utf16 _test
+
+utest.utf16 ucheck.utf16: test_prep
+       PERL=./perl $(MAKE) TEST_ARGS="-utf8 -utf16" _test
+
 # Targets for valgrind testing:
 
 test_prep.valgrind: test_prep perl.valgrind
@@ -1161,15 +1186,17 @@ test_notty.deparse:     test_prep
 test.taintwarn:        test_prep
        PERL=./perl TEST_ARGS=-taintwarn $(MAKE) _test
 
-# Can't depend on lib/Config.pm because that might be where miniperl
-# is crashing.
-minitest: miniperl$(EXE_EXT) lib/re.pm
+minitest.prep:
        -@test -f lib/lib.pm && test -f lib/Config.pm || \
          $(MAKE) lib/Config.pm lib/lib.pm $(unidatafiles)
        @echo " "
        @echo "You may see some irrelevant test failures if you have been unable"
        @echo "to build lib/Config.pm, lib/lib.pm or the Unicode data files."
        @echo " "
+
+# Can't depend on lib/Config.pm because that might be where miniperl
+# is crashing.
+minitest: miniperl$(EXE_EXT) lib/re.pm minitest.prep
        - cd t && (rm -f perl$(EXE_EXT); $(LNS) ../miniperl$(EXE_EXT) perl$(EXE_EXT)) \
                && $(LDLIBPTH) ./perl TEST -minitest base/*.t comp/*.t cmd/*.t run/*.t io/*.t op/*.t uni/*.t </dev/tty