sunos*)
linklibperl="-lperl"
;;
- netbsd*|freebsd[234]*|openbsd*)
+ netbsd*|freebsd[234]*|openbsd*|dragonfly*)
linklibperl="-L. -lperl"
;;
interix*)
mallocsrc = $mallocsrc
mallocobj = $mallocobj
+madlyh = $madlyh
+madlysrc = $madlysrc
+madlyobj = $madlyobj
LNS = $lns
# NOTE: some systems don't grok "cp -f". XXX Configure test needed?
CPS = $cp
h2 = embed.h form.h gv.h handy.h hv.h keywords.h mg.h op.h opcode.h
h3 = pad.h patchlevel.h perl.h perlapi.h perly.h pp.h proto.h regcomp.h
h4 = regexp.h scope.h sv.h unixish.h util.h iperlsys.h thread.h
-h5 = utf8.h warnings.h
+h5 = utf8.h warnings.h $(madlyh)
h = $(h1) $(h2) $(h3) $(h4) $(h5)
-c1 = $(mallocsrc) av.c scope.c op.c doop.c doio.c dump.c hv.c mg.c reentr.c
-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 mathoms.c locale.c pp_pack.c pp_sort.c
+c1 = av.c scope.c op.c doop.c doio.c dump.c gv.c hv.c mg.c reentr.c perl.c
+c2 = perly.c pp.c pp_hot.c pp_ctl.c pp_sys.c regcomp.c regexec.c utf8.c sv.c
+c3 = taint.c toke.c util.c deb.c run.c universal.c xsutils.c pad.c globals.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) miniperlmain.c perlmain.c opmini.c
+c = $(c1) $(c2) $(c3) $(c4) $(c5) 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)
+obj1 = $(madlyobj) $(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)
obj3 = doop$(OBJ_EXT) doio$(OBJ_EXT) regexec$(OBJ_EXT) utf8$(OBJ_EXT) taint$(OBJ_EXT) deb$(OBJ_EXT) universal$(OBJ_EXT) xsutils$(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)
obj = $(obj1) $(obj2) $(obj3) $(ARCHOBJS)
lintflags = \
- -bhn \
+ -b \
+ -n \
-p \
- -s \
-Ncheck=%all \
-Nlevel=4 \
+ -errchk=parentheses \
+ -errhdr=%all \
-errfmt=src \
-errtags \
+ -erroff=E_ASSIGN_NARROW_CONV \
-erroff=E_BAD_PTR_CAST \
+ -erroff=E_BAD_PTR_CAST_ALIGN \
+ -erroff=E_BAD_PTR_INT_COMBINATION \
+ -erroff=E_BAD_SIGN_EXTEND \
-erroff=E_BLOCK_DECL_UNUSED \
+ -erroff=E_CASE_FALLTHRU \
-erroff=E_CONSTANT_CONDITION \
- -erroff=E_BAD_PTR_CAST_ALIGN \
- -erroff=E_PTRDIFF_OVERFLOW \
+ -erroff=E_EQUALITY_NOT_ASSIGNMENT \
-erroff=E_EXPR_NULL_EFFECT \
- -erroff=E_BAD_PTR_INT_COMBINATION \
- -erroff=E_LOOP_EMPTY \
- -erroff=E_TRUE_LOGICAL_EXPR \
-erroff=E_FALSE_LOGICAL_EXPR \
- -erroff=E_INDISTING_FROM_TRUNC \
- -erroff=E_POINTER_TO_OBJECT \
- -erroff=E_ASSIGN_NARROW_CONV \
- -erroff=E_BAD_SIGN_EXTEND \
-erroff=E_INCL_NUSD \
+ -erroff=E_INDISTING_FROM_TRUNC \
+ -erroff=E_LOOP_EMPTY \
-erroff=E_MAIN_PARAM \
- -Wfoo.flow
+ -erroff=E_POINTER_TO_OBJECT \
+ -erroff=E_PTRDIFF_OVERFLOW \
+ -erroff=E_SHIFT_CNT_NEG_TOO_BIG_L \
+ -erroff=E_STATIC_UNUSED \
+ -erroff=E_TRUE_LOGICAL_EXPR
.c$(OBJ_EXT):
$(CCCMD) $(PLDLFLAGS) $*.c
touch uni.data
extra.pods: miniperl$(EXE_EXT)
- -@test -f extra.pods && rm -f `cat extra.pods`
+ -@test ! -f extra.pods || rm -f `cat extra.pods`
-@rm -f extra.pods
-@for x in `grep -l '^=[a-z]' README.* | grep -v README.vms` ; do \
nx=`echo $$x | sed -e "s/README\.//"`; \
-@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/perl593delta.pod && cd pod && $(LNS) perl593delta.pod perldelta.pod && cd .. && echo "pod/perldelta.pod" >> extra.pods # See buildtoc
+ -@test -f pod/perl594delta.pod && cd pod && $(LNS) perl594delta.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`
+ -@test ! -s extras.lst || PATH="`pwd`:${PATH}" PERL5LIB="`pwd`/lib" $(LDLIBPTH) ./perl -Ilib -MCPAN -e '@ARGV&&make(@ARGV)' `cat extras.lst`
extras.test: perl$(EXE_EXT)
- -@test -s extras.lst && PATH="`pwd`:${PATH}" PERL5LIB="`pwd`/lib" $(LDLIBPTH) ./perl -Ilib -MCPAN -e '@ARGV&&test(@ARGV)' `cat extras.lst`
+ -@test ! -s extras.lst || PATH="`pwd`:${PATH}" PERL5LIB="`pwd`/lib" $(LDLIBPTH) ./perl -Ilib -MCPAN -e '@ARGV&&test(@ARGV)' `cat extras.lst`
extras.install: perl$(EXE_EXT)
- -@test -s extras.lst && PATH="`pwd`:${PATH}" PERL5LIB="`pwd`/lib" $(LDLIBPTH) ./perl -Ilib -MCPAN -e '@ARGV&&install(@ARGV)' `cat extras.lst`
+ -@test ! -s extras.lst || PATH="`pwd`:${PATH}" PERL5LIB="`pwd`/lib" $(LDLIBPTH) ./perl -Ilib -MCPAN -e '@ARGV&&install(@ARGV)' `cat extras.lst`
.PHONY: install install-strip install-all install-verbose install-silent \
no-install install.perl install.man install.html
run_byacc:
@echo "run_byacc is obsolete; try 'make regen_perly' instead"
-# this outputs perly.act and perly.tab
+# this outputs perly.h, perly.act, perly.tab, madly.h, madly.act and madly.tab
regen_perly:
perl regen_perly.pl
+ perl regen_perly.pl madly.y
# We don't want to regenerate perly.c and perly.h, but they might
# appear out-of-date after a patch is applied or a new distribution is
perly.h: perly.y
-@sh -c true
+# Similary for madly.
+madly.c: madly.y
+ -@sh -c true
+
+madly.h: madly.y
+ -@sh -c true
+
# No compat3.sym here since and including the 5.004_50.
# No interp.sym since 5.005_03.
SYM = global.sym globvar.sym perlio.sym pp.sym
n_dummy $(nonxs_ext): miniperl$(EXE_EXT) preplibrary $(DYNALOADER) FORCE
@$(LDLIBPTH) sh ext/util/make_ext nonxs $@ MAKE=$(MAKE) LIBPERL_A=$(LIBPERL)
+.PHONY: printconfig
+printconfig:
+ @eval `$(LDLIBPTH) ./perl -Ilib -V:$(CONFIGVAR)`; echo $$$(CONFIGVAR)
+
.PHONY: clean _tidy _mopup _cleaner1 _cleaner2 \
realclean _realcleaner clobber _clobber \
distclean veryclean _verycleaner
-rm -f perlld cygwin.c ld2 libperl*.def libperl*.dll cygperl*.dll *.exe.stackdump
-rm -f perl$(EXE_EXT) suidperl$(EXE_EXT) miniperl$(EXE_EXT) $(LIBPERL) libperl.* microperl
-rm -f opcode.h-old opnames.h-old pp.sym-old pp_proto.h-old
+ -rm -f config.over
# Do not 'make _tidy' directly.
_tidy:
rm -rf .config
rm -f preload
rm -f testcompile compilelog
- rm -rf lib/Encode
+ rm -rf lib/Encode lib/Compress
+ rm -rf lib/IO/Compress lib/IO/Uncompress
rm -f lib/ExtUtils/ParseXS/t/XSTest.c
rm -f lib/ExtUtils/ParseXS/t/XSTest$(OBJ_EXT)
rm -f lib/ExtUtils/ParseXS/t/XSTest$(DLSUFFIX)
-rmdir lib/B lib/Data
- -rmdir lib/Compress/Zlib lib/Compress/Gzip lib/Compress
- -rmdir lib/Filter/Util lib/IO/Socket lib/IO/Compress lib/IO/Uncompress
- -rmdir lib/List lib/MIME lib/Scalar lib/Sys
- -rmdir lib/threads lib/XS
+ -rmdir lib/Filter/Util lib/IO/Socket
+ -rmdir lib/List lib/MIME lib/Scalar lib/Sys
+ -rmdir lib/threads lib/XS lib/Hash
_realcleaner:
@$(LDLIBPTH) $(MAKE) _cleaner1 CLEAN=realclean
test.valgrind check.valgrind: test_prep perl.valgrind.config
PERL=./perl PERL_DEBUG=PERL_VALGRIND=1 VALGRIND='$(VALGRIND)' $(MAKE) _test
-utest.valgrind ucheck.valgrind: test_prep.valgrind perl.valgrind
+utest.valgrind ucheck.valgrind: test_prep.valgrind perl.valgrind.config
PERL=./perl PERL_DEBUG=PERL_VALGRIND=1 TEST_ARGS=-utf8 $(MAKE) _test
-test_notty.valgrind: test_prep.valgrind perl.valgrind
+test_notty.valgrind: test_prep.valgrind perl.valgrind.config
PERL=./perl $(MAKE) PERL_DEBUG=PERL_VALGRIND=1 _test_notty
# Targets for Third Degree testing.