X-Git-Url: http://git.shadowcat.co.uk/gitweb/gitweb.cgi?a=blobdiff_plain;f=Makefile.SH;h=c746aed94a220c5698da4f350f956dd3fe796eb3;hb=b06e0d456d71354ff1405da4e9d765c7d6aa38c3;hp=fa109a880d1d070d8e233518dd1f31b3178f980f;hpb=0279961e65f24cb3d5407ae9771030dcc5eb6882;p=p5sagit%2Fp5-mst-13.2.git diff --git a/Makefile.SH b/Makefile.SH index fa109a8..c746aed 100644 --- a/Makefile.SH +++ b/Makefile.SH @@ -10,6 +10,17 @@ case $PERL_CONFIG_SH in ;; esac +case $CROSS_NAME in +'') + Makefile=Makefile + ;; +*) + # if cross-compilation, the Makefile named accordingly + Makefile=Makefile-cross-$CROSS_NAME + . Cross/config-${CROSS_NAME}.sh + ;; +esac + # H.Merijn Brand [17 Feb 2004] # This comment is just to ensure that Configure will find variables that # are removed/replaced in patches on blead, but are still needed in the @@ -36,6 +47,7 @@ case "$d_dosuid" in esac linklibperl='$(LIBPERL)' +linklibperl_nonshr='' shrpldflags='$(LDDLFLAGS)' ldlibpth='' DPERL_EXTERNAL_GLOB='-DPERL_EXTERNAL_GLOB' @@ -68,7 +80,8 @@ true) -install_name \$(shrpdir)/\$@" ;; cygwin*) - linklibperl="-lperl" + shrpldflags="$shrpldflags -Wl,--out-implib=libperl.dll.a -Wl,--image-base,0x52000000" + linklibperl="-L. -lperl" ;; sunos*) linklibperl="-lperl" @@ -81,15 +94,32 @@ true) shrpldflags="$shrpldflags -Wl,--image-base,0x57000000" ;; aix*) - shrpldflags="-H512 -T512 -bhalt:4 -bM:SRE -bE:perl.exp" - case "$osvers" in - 3*) shrpldflags="$shrpldflags -e _nostart" + case "$cc" in + gcc*) + shrpldflags="-shared -Wl,-H512 -Wl,-T512 -Wl,-bhalt:4 -Wl,-bM:SRE -Wl,-bE:perl.exp" + case "$osvers" in + 3*) shrpldflags="$shrpldflags -e _nostart" + ;; + *) shrpldflags="$shrpldflags -Wl,-bnoentry" + ;; + esac + shrpldflags="$shrpldflags $ldflags $perllibs $cryptlib" + linklibperl="-L $archlibexp/CORE -L `pwd | sed 's/\/UU$//'` -lperl" + linklibperl_nonshr='-lperl_nonshr' ;; - *) shrpldflags="$shrpldflags -bnoentry" + *) + shrpldflags="-H512 -T512 -bhalt:4 -bM:SRE -bE:perl.exp" + case "$osvers" in + 3*) shrpldflags="$shrpldflags -e _nostart" + ;; + *) shrpldflags="$shrpldflags -b noentry" + ;; + esac + shrpldflags="$shrpldflags $ldflags $perllibs $cryptlib" + linklibperl="-L $archlibexp/CORE -L `pwd | sed 's/\/UU$//'` -lperl" + linklibperl_nonshr='-lperl_nonshr' ;; esac - shrpldflags="$shrpldflags $ldflags $perllibs $cryptlib" - linklibperl="-L $archlibexp/CORE -L `pwd | sed 's/\/UU$//'` -lperl" ;; hpux*) linklibperl="-L `pwd | sed 's/\/UU$//'` -Wl,+s -Wl,+b$archlibexp/CORE -lperl" @@ -164,7 +194,7 @@ for f in $dynamic_ext; do : Parallel makes reveal that we have some interdependencies case $f in - Math/BigInt/FastCalc) extra_dep="$extra_dep + Math/BigInt/FastCalc|Devel/NYTProf) extra_dep="$extra_dep $this_target: lib/auto/List/Util/Util.$dlext" ;; Unicode/Normalize) extra_dep="$extra_dep $this_target: uni.data" ;; @@ -193,9 +223,9 @@ define|true) ;; esac -echo "Extracting Makefile (with variable substitutions)" -$spitshell >Makefile <$Makefile <>Makefile <>$Makefile <>Makefile <<'!NO!SUBS!' +$spitshell >>$Makefile <<'!NO!SUBS!' CCCMD = `sh $(shellflags) cflags "optimize='$(OPTIMIZE)'" $@` CCCMDSRC = `sh $(shellflags) cflags "optimize='$(OPTIMIZE)'" $<` CONFIGPM = lib/Config.pm lib/Config_heavy.pl -private = preplibrary $(CONFIGPM) lib/Config.pod lib/ExtUtils/Miniperl.pm + +CONFIGPOD = lib/Config.pod + +CONFIGH = config.h +!NO!SUBS! + ;; +*) + # if cross-compilation +$spitshell >>$Makefile <>$Makefile <<'!NO!SUBS!' + +private = preplibrary $(CONFIGPM) $(CONFIGPOD) lib/ExtUtils/Miniperl.pm # Files to be built with variable substitution before miniperl # is available. @@ -367,7 +433,7 @@ unidatafiles = lib/unicore/Canonical.pl lib/unicore/Exact.pl \ # Directories of Unicode data files generated by mktables unidatadirs = lib/unicore/To lib/unicore/lib -h1 = EXTERN.h INTERN.h XSUB.h av.h config.h cop.h cv.h dosish.h +h1 = EXTERN.h INTERN.h XSUB.h av.h $(CONFIGH) cop.h cv.h dosish.h 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 @@ -447,13 +513,13 @@ splintflags = \ splintfiles = $(c1) -.c$(OBJ_EXT): +.c$(OBJ_EXT): cflags $(CCCMD) $(PLDLFLAGS) $*.c -.c.i: +.c.i: cflags $(CCCMDSRC) -E $*.c > $*.i -.c.s: +.c.s: cflags $(CCCMDSRC) -S $*.c all: $(FIRSTMAKEFILE) miniperl$(EXE_EXT) extra.pods $(private) $(unidatafiles) $(public) $(dynamic_ext) $(nonxs_ext) extras.make @@ -469,7 +535,14 @@ sperl$(OBJ_EXT): perl.c $(h) sperl.i: perl.c $(h) $(CCCMDSRC) -DIAMSUID -E perl.c > sperl.i -.PHONY: all translators utilities +.PHONY: all translators utilities make_patchnum + +make_patchnum: + sh $(shellflags) make_patchnum.sh + +.patchnum: make_patchnum + +perl$(OBJ_EXT): .patchnum translators: miniperl$(EXE_EXT) $(CONFIGPM) FORCE @echo " "; echo " Making x2p stuff"; cd x2p; $(LDLIBPTH) $(MAKE) all @@ -487,7 +560,7 @@ utilities: miniperl$(EXE_EXT) $(CONFIGPM) $(plextract) lib/lib.pm FORCE FORCE: @sh -c true !NO!SUBS! -$spitshell >>Makefile <>$Makefile <uudmap.h +uudmap.h: generate_uudmap\$(HOST_EXE_EXT) + \$(RUN) ./generate_uudmap\$(HOST_EXE_EXT) >uudmap.h -generate_uudmap\$(EXE_EXT): generate_uudmap\$(OBJ_EXT) - \$(CC) -o generate_uudmap \$(LDFLAGS) generate_uudmap\$(OBJ_EXT) \$(libs) +generate_uudmap\$(HOST_EXE_EXT): generate_uudmap\$(OBJ_EXT) + \$(CC) -o generate_uudmap\$(EXE_EXT) \$(LDFLAGS) generate_uudmap\$(OBJ_EXT) \$(libs) !GROK!THIS! -$spitshell >>Makefile <<'!NO!SUBS!' +$spitshell >>$Makefile <<'!NO!SUBS!' miniperlmain$(OBJ_EXT): miniperlmain.c patchlevel.h $(CCCMD) $(PLDLFLAGS) $*.c perlmain.c: miniperlmain.c config.sh $(FIRSTMAKEFILE) sh writemain $(DYNALOADER) $(static_ext) > perlmain.c -!NO!SUBS! -case "$osname" in -cygwin) - ;; # Let cygwin/Makefile.SHs do its work. -*) - $spitshell >>Makefile <<'!NO!SUBS!' perlmain$(OBJ_EXT): perlmain.c $(CCCMD) $(PLDLFLAGS) $*.c -!NO!SUBS! - ;; -esac -$spitshell >>Makefile <<'!NO!SUBS!' # The file ext.libs is a list of libraries that must be linked in # for static extensions, e.g. -lm -lgdbm, etc. The individual # static extension Makefile's add to it. @@ -547,7 +610,7 @@ esac case "$osname" in aix) - $spitshell >>Makefile <>$Makefile <>Makefile <<'!NO!SUBS!' + $spitshell >>$Makefile <<'!NO!SUBS!' LIBPERL_NONSHR = libperl_nonshr$(LIB_EXT) MINIPERL_NONSHR = miniperl_nonshr$(EXE_EXT) @@ -578,7 +641,7 @@ LIBPERLEXPORT = perl.exp ;; *) - $spitshell >>Makefile <<'!NO!SUBS!' + $spitshell >>$Makefile <<'!NO!SUBS!' MINIPERLEXP = miniperl$(EXE_EXT) PERLEXPORT = perl.exp @@ -586,14 +649,14 @@ PERLEXPORT = perl.exp !NO!SUBS! ;; esac - $spitshell >>Makefile <<'!NO!SUBS!' + $spitshell >>$Makefile <<'!NO!SUBS!' perl.exp: $(MINIPERLEXP) makedef.pl config.sh $(SYM) $(SYMH) ./$(MINIPERLEXP) makedef.pl PLATFORM=aix CC_FLAGS="$(OPTIMIZE)" | sort -u | sort -f > perl.exp !NO!SUBS! ;; os2) - $spitshell >>Makefile <<'!NO!SUBS!' + $spitshell >>$Makefile <<'!NO!SUBS!' MINIPERLEXP = miniperl perl5.def: $(MINIPERLEXP) makedef.pl config.sh $(SYM) $(SYMH) miniperl.map @@ -601,18 +664,31 @@ perl5.def: $(MINIPERLEXP) makedef.pl config.sh $(SYM) $(SYMH) miniperl.map !NO!SUBS! ;; +cygwin) + $spitshell >>$Makefile <<'!NO!SUBS!' +cygwin.c: cygwin/cygwin.c + $(LNS) cygwin/cygwin.c + +LIBPERL_NONSHR = libperl$(LIB_EXT) + +$(LIBPERL_NONSHR): $(obj) + $(RMS) $(LIBPERL_NONSHR) + $(AR) rcu $(LIBPERL_NONSHR) $(obj) + +!NO!SUBS! + ;; esac -if test -r $Makefile_s ; then +if test -s $Makefile_s ; then . $Makefile_s - $spitshell >>Makefile <>$Makefile <>Makefile <<'!NO!SUBS!' + $spitshell >>$Makefile <<'!NO!SUBS!' $(DTRACE_H): perldtrace.d $(DTRACE) -h -s perldtrace.d -o $(DTRACE_H) @@ -623,25 +699,25 @@ mydtrace.h: $(DTRACE_H) esac case "$dtrace_o" in ?*) - $spitshell >>Makefile <<'!NO!SUBS!' + $spitshell >>$Makefile <<'!NO!SUBS!' $(DTRACE_O): perldtrace.d $(DTRACE) -G -s perldtrace.d -o $(DTRACE_O) $(ndt_obj) !NO!SUBS! ;; esac - $spitshell >>Makefile <<'!NO!SUBS!' + $spitshell >>$Makefile <<'!NO!SUBS!' $(LIBPERL): $& $(obj) $(DYNALOADER) $(LIBPERLEXPORT) !NO!SUBS! case "$useshrplib" in true) - $spitshell >>Makefile <<'!NO!SUBS!' + $spitshell >>$Makefile <<'!NO!SUBS!' rm -f $@ $(LD) -o $@ $(SHRPLDFLAGS) $(obj) $(DYNALOADER) $(libs) !NO!SUBS! case "$osname" in aix) - $spitshell >>Makefile <<'!NO!SUBS!' + $spitshell >>$Makefile <<'!NO!SUBS!' rm -f libperl$(OBJ_EXT) mv $@ libperl$(OBJ_EXT) $(AR) qv $(LIBPERL) libperl$(OBJ_EXT) @@ -650,14 +726,14 @@ $(LIBPERL): $& $(obj) $(DYNALOADER) $(LIBPERLEXPORT) esac ;; *) - $spitshell >>Makefile <<'!NO!SUBS!' + $spitshell >>$Makefile <<'!NO!SUBS!' rm -f $(LIBPERL) $(AR) rcu $(LIBPERL) $(obj) $(DYNALOADER) @$(ranlib) $(LIBPERL) !NO!SUBS! ;; esac - $spitshell >>Makefile <<'!NO!SUBS!' + $spitshell >>$Makefile <<'!NO!SUBS!' # How to build executables. @@ -673,20 +749,20 @@ $(LIBPERL): $& $(obj) $(DYNALOADER) $(LIBPERLEXPORT) case "${osname}${osvers}" in aix*|beos*) - $spitshell >>Makefile <<'!NO!SUBS!' -miniperl: $& miniperlmain$(OBJ_EXT) $(obj) opmini$(OBJ_EXT) - $(CC) -o miniperl $(CLDFLAGS) \ + $spitshell >>$Makefile <<'!NO!SUBS!' +miniperl$(EXE_EXT): $& miniperlmain$(OBJ_EXT) $(obj) opmini$(OBJ_EXT) + $(CC) -o miniperl$(EXE_EXT) $(CLDFLAGS) \ `echo $(obj) | sed 's/ op$(OBJ_EXT) / /'` \ miniperlmain$(OBJ_EXT) opmini$(OBJ_EXT) $(libs) - $(LDLIBPTH) $(RUN) ./miniperl -w -Ilib -MExporter -e '' || $(MAKE) minitest + $(LDLIBPTH) $(RUN) ./miniperl$(HOST_EXE_EXT) -w -Ilib -MExporter -e '' || $(MAKE) minitest !NO!SUBS! ;; next4*) - $spitshell >>Makefile <<'!NO!SUBS!' -miniperl: $& miniperlmain$(OBJ_EXT) $(obj) opmini$(OBJ_EXT) - $(CC) -o miniperl `echo $(obj) | sed 's/ op$(OBJ_EXT) / /'` \ + $spitshell >>$Makefile <<'!NO!SUBS!' +miniperl$(EXE_EXT): $& miniperlmain$(OBJ_EXT) $(obj) opmini$(OBJ_EXT) + $(CC) -o miniperl$(EXE_EXT) `echo $(obj) | sed 's/ op$(OBJ_EXT) / /'` \ miniperlmain$(OBJ_EXT) opmini$(OBJ_EXT) $(libs) - $(LDLIBPTH) $(RUN) ./miniperl -w -Ilib -MExporter -e '' || $(MAKE) minitest + $(LDLIBPTH) $(RUN) ./miniperl$(HOST_EXE_EXT) -w -Ilib -MExporter -e '' || $(MAKE) minitest !NO!SUBS! ;; darwin*) @@ -695,35 +771,35 @@ miniperl: $& miniperlmain$(OBJ_EXT) $(obj) opmini$(OBJ_EXT) *) case "$ldflags" in *"-flat_namespace"*) ;; *) # to allow opmini.o to override stuff in libperl.dylib - $spitshell >>Makefile <>$Makefile <>Makefile <<'!NO!SUBS!' + $spitshell >>$Makefile <<'!NO!SUBS!' miniperl$(EXE_EXT): $& miniperlmain$(OBJ_EXT) $(obj) opmini$(OBJ_EXT) -@rm -f miniperl.xok - $(CC) $(CLDFLAGS) $(NAMESPACEFLAGS) -o miniperl \ + $(CC) $(CLDFLAGS) $(NAMESPACEFLAGS) -o miniperl$(EXE_EXT) \ `echo $(obj) | sed 's/ op$(OBJ_EXT) / /'` \ miniperlmain$(OBJ_EXT) opmini$(OBJ_EXT) $(libs) - $(LDLIBPTH) $(RUN) ./miniperl -w -Ilib -MExporter -e '' || $(MAKE) minitest + $(LDLIBPTH) $(RUN) ./miniperl$(HOST_EXE_EXT) -w -Ilib -MExporter -e '' || $(MAKE) minitest !NO!SUBS! ;; *) - $spitshell >>Makefile <<'!NO!SUBS!' + $spitshell >>$Makefile <<'!NO!SUBS!' miniperl$(EXE_EXT): $& miniperlmain$(OBJ_EXT) $(obj) opmini$(OBJ_EXT) -@rm -f miniperl.xok - $(LDLIBPTH) $(CC) $(CLDFLAGS) -o miniperl \ + $(LDLIBPTH) $(CC) $(CLDFLAGS) -o miniperl$(EXE_EXT) \ `echo $(obj) | sed 's/ op$(OBJ_EXT) / /'` \ miniperlmain$(OBJ_EXT) opmini$(OBJ_EXT) $(libs) - $(LDLIBPTH) $(RUN) ./miniperl -w -Ilib -MExporter -e '' || $(MAKE) minitest + $(LDLIBPTH) $(RUN) ./miniperl$(HOST_EXE_EXT) -w -Ilib -MExporter -e '' || $(MAKE) minitest !NO!SUBS! ;; esac - $spitshell >>Makefile <<'!NO!SUBS!' + $spitshell >>$Makefile <<'!NO!SUBS!' perl$(EXE_EXT): $& perlmain$(OBJ_EXT) $(LIBPERL) $(static_ext) ext.libs $(PERLEXPORT) -@rm -f miniperl.xok @@ -835,10 +911,24 @@ microperl: # checks as well as the special code to validate that the script in question # has been invoked correctly. +!NO!SUBS! + +case "${osname}" in +aix*) +$spitshell >>Makefile <<'!NO!SUBS!' +suidperl$(EXE_EXT): $& sperl$(OBJ_EXT) perlmain$(OBJ_EXT) $(LIBPERL) $(static_ext) ext.libs $(PERLEXPORT) + $(SHRPENV) $(LDLIBPTH) $(CC) -o suidperl $(CLDFLAGS) $(CCDLFLAGS) perlmain$(OBJ_EXT) sperl$(OBJ_EXT) $(static_ext) $(LLIBPERL_NONSHR) $(LLIBPERL) `cat ext.libs` $(libs) + +!NO!SUBS! +;; +*) +$spitshell >>Makefile <<'!NO!SUBS!' suidperl$(EXE_EXT): $& sperl$(OBJ_EXT) perlmain$(OBJ_EXT) $(LIBPERL) $(static_ext) ext.libs $(PERLEXPORT) $(SHRPENV) $(LDLIBPTH) $(CC) -o suidperl $(CLDFLAGS) $(CCDLFLAGS) perlmain$(OBJ_EXT) sperl$(OBJ_EXT) $(static_ext) $(LLIBPERL) `cat ext.libs` $(libs) !NO!SUBS! +;; +esac fi @@ -846,7 +936,7 @@ fi # Let's try running the commands with shell. case "${osname}" in catamount) -$spitshell >>Makefile <>$Makefile <>Makefile <<'!NO!SUBS!' +$spitshell >>$Makefile <<'!NO!SUBS!' .PHONY: makeppport makeppport: miniperl$(EXE_EXT) $(CONFIGPM) $(LDLIBPTH) $(RUN) ./miniperl$(EXE_EXT) -Ilib mkppport @@ -865,7 +955,7 @@ makeppport: miniperl$(EXE_EXT) $(CONFIGPM) ;; esac -$spitshell >>Makefile <<'!NO!SUBS!' +$spitshell >>$Makefile <<'!NO!SUBS!' # We have to call our ./makedir because Ultrix 4.3 make can't handle the line # test -d lib/auto || mkdir lib/auto @@ -875,16 +965,13 @@ $spitshell >>Makefile <<'!NO!SUBS!' preplibrary: miniperl$(EXE_EXT) $(CONFIGPM) lib/lib.pm $(PREPLIBRARY_LIBPERL) @sh ./makedir lib/auto @echo " AutoSplitting perl library" - $(LDLIBPTH) $(RUN) ./miniperl -Ilib -MAutoSplit -MFile::Find -e ' \ - find ({no_chdir=>1, wanted => \ - sub {autosplit_lib_modules($$_) if /\.pm$$/}}, \ - "lib")' + $(LDLIBPTH) $(RUN) ./miniperl -Ilib -MAutoSplit -MFile::Find -e 'find ({no_chdir=>1, wanted => sub {autosplit_lib_modules($$_) if /\.pm$$/}}, "lib")' $(MAKE) lib/re.pm -lib/Config.pod: config.sh miniperl$(EXE_EXT) configpm Porting/Glossary +$(CONFIGPOD): config.sh miniperl$(EXE_EXT) configpm Porting/Glossary $(LDLIBPTH) $(RUN) ./miniperl -Ilib configpm -$(CONFIGPM): lib/Config.pod +$(CONFIGPM): $(CONFIGPOD) lib/ExtUtils/Miniperl.pm: miniperlmain.c miniperl$(EXE_EXT) minimod.pl $(CONFIGPM) $(LDLIBPTH) $(RUN) ./miniperl minimod.pl > lib/ExtUtils/Miniperl.pm @@ -1076,11 +1163,11 @@ n_dummy $(nonxs_ext): miniperl$(EXE_EXT) preplibrary FORCE @$(LDLIBPTH) sh ext/util/make_ext nonxs $@ MAKE=$(MAKE) LIBPERL_A=$(LIBPERL) !NO!SUBS! -$spitshell >>Makefile <>$Makefile <>Makefile <<'!NO!SUBS!' +$spitshell >>$Makefile <<'!NO!SUBS!' .PHONY: printconfig printconfig: @@ -1131,6 +1218,8 @@ _tidy: -cd pod; $(LDLIBPTH) $(MAKE) clean -cd utils; $(LDLIBPTH) $(MAKE) clean -cd x2p; $(LDLIBPTH) $(MAKE) clean + -rm .patchnum + -rm .sha1 -@for x in $(DYNALOADER) $(dynamic_ext) $(static_ext) $(nonxs_ext) ; do \ $(LDLIBPTH) sh ext/util/make_ext clean $$x MAKE=$(MAKE) ; \ done @@ -1161,6 +1250,7 @@ _cleaner2: rm -rf .config rm -f preload lib/re.pm rm -rf lib/Encode lib/Compress lib/Hash lib/re + rm -rf lib/TAP lib/Module/Pluggable lib/App 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) @@ -1172,7 +1262,6 @@ _cleaner2: -rmdir lib/threads lib/XS -rmdir lib/CPANPLUS/Dist/Build/t/dummy-* -rmdir lib/CPANPLUS/t/dummy-cpanplus lib/CPANPLUS/t/dummy-localmirror - -rm -f cygcrypt-0.dll cygwin1.dll -rm -f lib/ExtUtils/CBuilder/t/libcompilet.dll.a -rm -f lib/ExtUtils/ParseXS/t/libXSTest.dll.a