grep { $unified_info{sources}->{$_}->[0] =~ /\.c$/ }
keys %{$unified_info{sources}}); -}
{- output_on() if $disabled{makedepend}; "" -}
-
+GENERATED={- join(" ",
+ ( map { (my $x = $_) =~ s|\.S$|\.s|; $x }
+ grep { defined $unified_info{generate}->{$_} }
+ map { @{$unified_info{sources}->{$_}} }
+ grep { /\.o$/ } keys %{$unified_info{sources}} ),
+ ( grep { /\.h$/ } keys %{$unified_info{generate}} )) -}
+
+{- output_off() if $disabled{apps}; "" -}
BIN_SCRIPTS=$(BLDDIR)/tools/c_rehash
MISC_SCRIPTS=$(SRCDIR)/tools/c_hash $(SRCDIR)/tools/c_info \
$(SRCDIR)/tools/c_issuer $(SRCDIR)/tools/c_name \
- $(BLDDIR)/apps/CA.pl $(SRCDIR)/apps/tsget
+ $(BLDDIR)/apps/CA.pl $(BLDDIR)/apps/tsget
+{- output_on() if $disabled{apps}; "" -}
SHLIB_INFO={- join(" ", map { "\"".shlib($_).";".shlib_simple($_)."\"" } @{$unified_info{libraries}}) -}
# $prefix is not /usr.
. ($config{target} =~ m|^BSD-| && $prefix !~ m|^/usr/.*$|
? " -Wl,-rpath,\$\$(LIBRPATH)" : "") -}
-RCFLAGS={- $target{shared_rcflag} -}
DSO_CFLAGS={- $target{shared_cflag} || "" -}
DSO_LDFLAGS=$(LIB_LDFLAGS)
-BIN_CFLAGS={- "" -}
+BIN_CFLAGS={- $target{bin_cflags} -}
PERL={- $config{perl} -}
AR=$(CROSS_COMPILE){- $target{ar} || "ar" -} $(ARFLAGS) r
RANLIB= {- $target{ranlib} -}
NM= $(CROSS_COMPILE){- $target{nm} || "nm" -}
+RCFLAGS={- $target{shared_rcflag} -}
+RC= $(CROSS_COMPILE){- $target{rc} || "windres" -}
RM= rm -f
RMDIR= rmdir
TAR= {- $target{tar} || "tar" -}
build_tests: configdata.pm build_tests_nodep depend
build_tests_nodep: $(TESTPROGS)
-test tests: build_tests_nodep build_apps_nodep build_engines_nodep depend
+test: tests
+tests: build_tests_nodep build_apps_nodep build_engines_nodep \
+ depend link-utils
+ @ : {- output_off() if $disabled{tests}; "" -}
( cd test; \
SRCTOP=../$(SRCDIR) \
BLDTOP=../$(BLDDIR) \
+ PERL="$(PERL)" \
EXE_EXT={- $exeext -} \
+ OPENSSL_ENGINES=../$(BLDDIR)/engines \
$(PERL) ../$(SRCDIR)/test/run_tests.pl $(TESTS) )
+ @ : {- if ($disabled{tests}) { output_on(); } else { output_off(); } "" -}
+ @echo "Tests are not supported with your chosen Configure options"
+ @ : {- output_on() if !$disabled{tests}; "" -}
list-tests:
- @TOP=$(SRCDIR) PERL=$(PERL) $(PERL) $(SRCDIR)/test/run_tests.pl list
+ @TOP="$(SRCDIR)" PERL="$(PERL)" $(PERL) $(SRCDIR)/test/run_tests.pl list
libclean:
@set -e; for s in $(SHLIB_INFO); do \
uninstall: uninstall_docs uninstall_sw
clean: libclean
- rm -f $(PROGRAMS) $(TESTPROGS)
- rm -f `find $(BLDDIR) -name '*{- $depext -}'`
- rm -f `find $(BLDDIR) -name '*{- $objext -}'`
- rm -f $(BLDDIR)/core
- rm -f $(BLDDIR)/tags $(BLDDIR)/TAGS
- rm -f $(BLDDIR)/openssl.pc $(BLDDIR)/libcrypto.pc $(BLDDIR)/libssl.pc
- -rm -f `find $(BLDDIR) -type l`
+ rm -f $(PROGRAMS) $(TESTPROGS) $(ENGINES) $(SCRIPTS)
+ rm -f $(GENERATED)
+ -rm -f `find . -name '*{- $depext -}'`
+ -rm -f `find . -name '*{- $objext -}'`
+ rm -f core
+ rm -f tags TAGS
+ rm -f openssl.pc libcrypto.pc libssl.pc
+ -rm -f `find . -type l -a \! -path "./.git/*"`
rm -f $(TARFILE)
# This exists solely for those who still type 'make depend'
#
# We check if any depfile is newer than Makefile and decide to
-# concatenate only if that is true, or if 'test' (a.k.a [ )
-# doesn't have the option to figure it out (-nt).
-#
-# To check if test has the file age comparison operator, we
-# simply try, and rely test to exit with 0 if the comparison
-# was true, 1 if false, and most importantly, 2 if it doesn't
-# recognise the operator.
+# concatenate only if that is true.
depend:
@: {- output_off() if $disabled{makedepend}; "" -}
- @catdepends=false; \
- if [ Makefile -nt Makefile ] 2>/dev/null || [ $$? = 1 ]; then \
- for d in $(DEPS); do \
- if [ $$d -nt Makefile ]; then \
- catdepends=true; \
- break; \
- fi; \
- done; \
- else \
- catdepends=true; \
- fi; \
- if [ $$catdepends = true ]; then \
+ @if [ -n "`find $(DEPS) -newer Makefile 2>/dev/null; exit 0`" ]; then \
( sed -e '/^# DO NOT DELETE THIS LINE.*/,$$d' < Makefile; \
echo '# DO NOT DELETE THIS LINE -- make depend depends on it.'; \
echo; \
- for d in $(DEPS); do \
- if [ -f $$d ]; then cat $$d; fi; \
+ for f in $(DEPS); do \
+ if [ -f $$f ]; then cat $$f; fi; \
done ) > Makefile.new; \
- if ! cmp Makefile.new Makefile >/dev/null 2>&1; then \
- mv -f Makefile.new Makefile; \
- else \
+ if cmp Makefile.new Makefile >/dev/null 2>&1; then \
rm -f Makefile.new; \
+ else \
+ mv -f Makefile.new Makefile; \
fi; \
fi
@: {- output_on() if $disabled{makedepend}; "" -}
@[ -n "$(INSTALLTOP)" ] || (echo INSTALLTOP should not be empty; exit 1)
@$(PERL) $(SRCDIR)/util/mkdir-p.pl $(DESTDIR)$(INSTALLTOP)/$(LIBDIR)/engines/
@echo "*** Installing engines"
- @set -e; for e in $(ENGINES); do \
+ @set -e; for e in dummy $(ENGINES); do \
+ if [ "$$e" = "dummy" ]; then continue; fi; \
fn=`basename $$e`; \
if [ "$$fn" = '{- dso("ossltest") -}' ]; then \
continue; \
uninstall_engines:
@echo "*** Uninstalling engines"
- @set -e; for e in $(ENGINES); do \
+ @set -e; for e in dummy $(ENGINES); do \
+ if [ "$$e" = "dummy" ]; then continue; fi; \
fn=`basename $$e`; \
if [ "$$fn" = '{- dso("ossltest") -}' ]; then \
continue; \
@$(PERL) $(SRCDIR)/util/mkdir-p.pl $(DESTDIR)$(OPENSSLDIR)/misc
@echo "*** Installing runtime files"
: {- output_off() unless windowsdll(); "" -};
- @set -e; for s in $(SHLIBS); do \
+ @set -e; for s in dummy $(SHLIBS); do \
+ if [ "$$s" = "dummy" ]; then continue; fi; \
fn=`basename $$s`; \
echo "install $$s -> $(DESTDIR)$(INSTALLTOP)/bin/$$fn"; \
cp $$s $(DESTDIR)$(INSTALLTOP)/bin/$$fn.new; \
$(DESTDIR)$(INSTALLTOP)/bin/$$fn; \
done
: {- output_on() unless windowsdll(); "" -};
- @set -e; for x in $(PROGRAMS); do \
+ @set -e; for x in dummy $(PROGRAMS); do \
+ if [ "$$x" = "dummy" ]; then continue; fi; \
fn=`basename $$x`; \
echo "install $$x -> $(DESTDIR)$(INSTALLTOP)/bin/$$fn"; \
cp $$x $(DESTDIR)$(INSTALLTOP)/bin/$$fn.new; \
mv -f $(DESTDIR)$(INSTALLTOP)/bin/$$fn.new \
$(DESTDIR)$(INSTALLTOP)/bin/$$fn; \
done
- @set -e; for x in $(BIN_SCRIPTS); do \
+ @set -e; for x in dummy $(BIN_SCRIPTS); do \
+ if [ "$$x" = "dummy" ]; then continue; fi; \
fn=`basename $$x`; \
echo "install $$x -> $(DESTDIR)$(INSTALLTOP)/bin/$$fn"; \
cp $$x $(DESTDIR)$(INSTALLTOP)/bin/$$fn.new; \
mv -f $(DESTDIR)$(INSTALLTOP)/bin/$$fn.new \
$(DESTDIR)$(INSTALLTOP)/bin/$$fn; \
done
- @set -e; for x in $(MISC_SCRIPTS); do \
+ @set -e; for x in dummy $(MISC_SCRIPTS); do \
+ if [ "$$x" = "dummy" ]; then continue; fi; \
fn=`basename $$x`; \
echo "install $$x -> $(DESTDIR)$(OPENSSLDIR)/misc/$$fn"; \
cp $$x $(DESTDIR)$(OPENSSLDIR)/misc/$$fn.new; \
uninstall_runtime:
@echo "*** Uninstalling runtime files"
- @set -e; for x in $(PROGRAMS); \
+ @set -e; for x in dummy $(PROGRAMS); \
do \
+ if [ "$$x" = "dummy" ]; then continue; fi; \
fn=`basename $$x`; \
echo "$(RM) $(DESTDIR)$(INSTALLTOP)/bin/$$fn"; \
$(RM) $(DESTDIR)$(INSTALLTOP)/bin/$$fn; \
done;
- @set -e; for x in $(BIN_SCRIPTS); \
+ @set -e; for x in dummy $(BIN_SCRIPTS); \
do \
+ if [ "$$x" = "dummy" ]; then continue; fi; \
fn=`basename $$x`; \
echo "$(RM) $(DESTDIR)$(INSTALLTOP)/bin/$$fn"; \
$(RM) $(DESTDIR)$(INSTALLTOP)/bin/$$fn; \
done
- @set -e; for x in $(MISC_SCRIPTS); \
+ @set -e; for x in dummy $(MISC_SCRIPTS); \
do \
+ if [ "$$x" = "dummy" ]; then continue; fi; \
fn=`basename $$x`; \
echo "$(RM) $(DESTDIR)$(OPENSSLDIR)/misc/$$fn"; \
$(RM) $(DESTDIR)$(OPENSSLDIR)/misc/$$fn; \
done
: {- output_off() unless windowsdll(); "" -};
- @set -e; for s in $(SHLIBS); do \
+ @set -e; for s in dummy $(SHLIBS); do \
+ if [ "$$s" = "dummy" ]; then continue; fi; \
fn=`basename $$s`; \
echo "$(RM) $(DESTDIR)$(INSTALLTOP)/bin/$$fn"; \
$(RM) $(DESTDIR)$(INSTALLTOP)/bin/$$fn; \
# A method to extract all names from a .pod file
# The first sed extracts everything between "=head1 NAME" and the next =head1
-# The second sed joins all the lines into one
-# The third sed removes the description and turns all commas into spaces
+# The perl command joins all the lines into one
+# The second sed removes the description and turns all commas into spaces
# VoilĂ , you have a space separated list of names!
EXTRACT_NAMES=sed -e '1,/^=head1 *NAME *$$/d;/^=head1/,$$d' | \
- sed -e ':a;{N;s/\n/ /;ba}' | \
+ $(PERL) -p -0 -e 's/\n/ /g; END {print "\n"}' | \
sed -e 's/ - .*$$//;s/,/ /g'
PROCESS_PODS=\
set -e; \
SEC=`sed -ne 's/^=for *comment *openssl_manual_section: *\([0-9]\) *$$/\1/p' $$p`; \
[ -z "$$SEC" ] && SEC=$$defsec; \
fn=`basename $$p .pod`; \
+ Name=$$fn; \
NAME=`echo $$fn | tr [a-z] [A-Z]`; \
suf=`eval "echo $$OUTSUFFIX"`; \
top=`eval "echo $$OUTTOP"`; \
OUTSUFFIX='.$(HTMLSUFFIX)'; \
OUTTOP="$(DESTDIR)$(HTMLDIR)"; \
GENERATE="pod2html --podroot=$(SRCDIR)/doc --htmldir=.. \
- --podpath=apps:crypto:ssl \
+ --podpath=apps:crypto:ssl --title=\$$Name \
| sed -e 's|href=\"http://man.he.net/man|href=\"../man|g'"; \
$(PROCESS_PODS)
update: generate errors ordinals
-generate: generate_apps generate_crypto_bn generate_crypto_objects
+generate: generate_apps generate_crypto_bn generate_crypto_objects \
+ generate_crypto_conf generate_crypto_asn1
# Test coverage is a good idea for the future
#coverage: $(PROGRAMS) $(TESTPROGRAMS)
lint:
lint -DLINT $(INCLUDES) $(SRCS)
-generate_apps: $(SRCDIR)/apps/openssl-vms.cnf $(SRCDIR)/apps/progs.h
-
-generate_crypto_bn: $(SRCDIR)/crypto/bn/bn_prime.h
-
-generate_crypto_objects: $(SRCDIR)/crypto/objects/obj_dat.h \
- $(SRCDIR)/include/openssl/obj_mac.h \
- $(SRCDIR)/crypto/objects/obj_xref.h
+{- # because the program apps/openssl has object files as sources, and
+ # they then have the corresponding C files as source, we need to chain
+ # the lookups in %unified_info
+ my $apps_openssl = catfile("apps","openssl");
+ our @openssl_source = map { @{$unified_info{sources}->{$_}} }
+ @{$unified_info{sources}->{$apps_openssl}};
+ ""; -}
+generate_apps:
+ ( cd $(SRCDIR); $(PERL) VMS/VMSify-conf.pl \
+ < apps/openssl.cnf > apps/openssl-vms.cnf )
+ ( b=`pwd`; cd $(SRCDIR); $(PERL) -I$$b apps/progs.pl \
+ {- join(" ", @openssl_source) -} \
+ > apps/progs.h )
+
+generate_crypto_bn:
+ ( cd $(SRCDIR); $(PERL) crypto/bn/bn_prime.pl > crypto/bn/bn_prime.h )
+
+generate_crypto_objects:
+ ( cd $(SRCDIR); $(PERL) crypto/objects/objects.pl \
+ crypto/objects/objects.txt \
+ crypto/objects/obj_mac.num \
+ include/openssl/obj_mac.h )
+ ( cd $(SRCDIR); $(PERL) crypto/objects/obj_dat.pl \
+ include/openssl/obj_mac.h \
+ crypto/objects/obj_dat.h )
+ ( cd $(SRCDIR); $(PERL) crypto/objects/objxref.pl \
+ crypto/objects/obj_mac.num \
+ crypto/objects/obj_xref.txt \
+ > crypto/objects/obj_xref.h )
+
+generate_crypto_conf:
+ ( cd $(SRCDIR); $(PERL) crypto/conf/keysets.pl \
+ > crypto/conf/conf_def.h )
+
+generate_crypto_asn1:
+ ( cd $(SRCDIR); $(PERL) crypto/asn1/charmap.pl \
+ > crypto/asn1/charmap.h )
errors:
( cd $(SRCDIR); $(PERL) util/ck_errf.pl -strict */*.c */*/*.c )
mkdir -p "$(BLDDIR)/util"; \
ln -sf "../$(SRCDIR)/util/shlib_wrap.sh" "$(BLDDIR)/util"; \
fi
-
-$(SRCDIR)/apps/openssl-vms.cnf: $(SRCDIR)/apps/openssl.cnf
- $(PERL) $(SRCDIR)/VMS/VMSify-conf.pl \
- < $(SRCDIR)/apps/openssl.cnf > $(SRCDIR)/apps/openssl-vms.cnf
-
-{- # because the program apps/openssl has object files as sources, and
- # they then have the corresponding C files as source, we need to chain
- # the lookups in %unified_info
- my $apps_openssl = catfile("apps","openssl");
- our @openssl_source = map { @{$unified_info{sources}->{$_}} }
- @{$unified_info{sources}->{$apps_openssl}};
- ""; -}
-$(SRCDIR)/apps/progs.h:
- $(RM) $@
- $(PERL) $(SRCDIR)/apps/progs.pl {- join(" ", @openssl_source) -} > $@
-
-$(SRCDIR)/crypto/bn/bn_prime.h: $(SRCDIR)/crypto/bn/bn_prime.pl
- $(PERL) $(SRCDIR)/crypto/bn/bn_prime.pl > $(SRCDIR)/crypto/bn/bn_prime.h
-
-$(SRCDIR)/crypto/objects/obj_dat.h: $(SRCDIR)/crypto/objects/obj_dat.pl \
- $(SRCDIR)/include/openssl/obj_mac.h
- $(PERL) $(SRCDIR)/crypto/objects/obj_dat.pl \
- $(SRCDIR)/include/openssl/obj_mac.h \
- $(SRCDIR)/crypto/objects/obj_dat.h
-
-# objects.pl both reads and writes obj_mac.num
-$(SRCDIR)/include/openssl/obj_mac.h: $(SRCDIR)/crypto/objects/objects.pl \
- $(SRCDIR)/crypto/objects/objects.txt \
- $(SRCDIR)/crypto/objects/obj_mac.num
- $(PERL) $(SRCDIR)/crypto/objects/objects.pl \
- $(SRCDIR)/crypto/objects/objects.txt \
- $(SRCDIR)/crypto/objects/obj_mac.num \
- $(SRCDIR)/include/openssl/obj_mac.h
- @sleep 1; touch $(SRCDIR)/include/openssl/obj_mac.h; sleep 1
-
-$(SRCDIR)/crypto/objects/obj_xref.h: $(SRCDIR)/crypto/objects/objxref.pl \
- $(SRCDIR)/crypto/objects/obj_xref.txt \
- $(SRCDIR)/crypto/objects/obj_mac.num
- $(PERL) $(SRCDIR)/crypto/objects/objxref.pl \
- $(SRCDIR)/crypto/objects/obj_mac.num \
- $(SRCDIR)/crypto/objects/obj_xref.txt \
- > $(SRCDIR)/crypto/objects/obj_xref.h
- @sleep 1; touch $(SRCDIR)/crypto/objects/obj_xref.h; sleep 1
-
FORCE:
# Building targets ###################################################
# wasn't passed down automatically. It's quite safe to use it like we do
# below; if it doesn't exist, the result will be empty and 'make' will pick
# up $(MAKEFLAGS) which is passed down as an environment variable.
-configdata.pm: {- $config{build_file_template} -} $(SRCDIR)/Configurations/common.tmpl $(SRCDIR)/Configure $(SRCDIR)/config {- join(" ", @{$config{build_infos}}) -}
+configdata.pm: $(SRCDIR)/Configurations/unix-Makefile.tmpl $(SRCDIR)/Configurations/common.tmpl $(SRCDIR)/Configure $(SRCDIR)/config {- join(" ", @{$config{build_infos}}) -}
@echo "Detected changed: $?"
@echo "Reconfiguring..."
$(SRCDIR)/Configure reconf
sub generatesrc {
my %args = @_;
my $generator = join(" ", @{$args{generator}});
+ my $generator_incs = join("", map { " -I".$_ } @{$args{generator_incs}});
my $incs = join("", map { " -I".$_ } @{$args{incs}});
+ my $deps = join(" ", @{$args{generator_deps}}, @{$args{deps}});
if ($args{src} !~ /\.[sS]$/) {
return <<"EOF";
-$args{src}: $args{generator}->[0]
- \$(PERL) $generator > \$@
+$args{src}: $args{generator}->[0] $deps
+ \$(PERL)$generator_incs $generator > \$@
EOF
} else {
if ($args{generator}->[0] =~ /\.pl$/) {
- $generator = 'CC="$(CC)" $(PERL) '.$generator;
+ $generator = 'CC="$(CC)" $(PERL)'.$generator_incs.' '.$generator;
} elsif ($args{generator}->[0] =~ /\.m4$/) {
- $generator = 'm4 -B 8192 '.$generator.' >'
+ $generator = 'm4 -B 8192'.$generator_incs.' '.$generator.' >'
} elsif ($args{generator}->[0] =~ /\.S$/) {
$generator = undef;
} else {
if ($args{src} =~ /\.S$/) {
(my $target = $args{src}) =~ s|\.S$|.s|;
return <<"EOF";
-$target: $args{generator}->[0]
+$target: $args{generator}->[0] $deps
( trap "rm -f \$@.*" INT 0; \\
$generator \$@.S; \\
- \$(CC) \$(CFLAGS) $incs -E -P \$@.S > \$@.i && mv -f \$@.i \$@ )
+ \$(CC) \$(CFLAGS) $incs -E \$@.S | \\
+ \$(PERL) -ne '/^#(line)?\\s*[0-9]+/ or print' > \$@.i && \\
+ mv -f \$@.i \$@ )
EOF
}
# Otherwise....
return <<"EOF";
-$args{src}: $args{generator}->[0]
+$args{src}: $args{generator}->[0] $deps
$generator \$@
EOF
}
return <<"EOF";
-$args{src}: $args{generator}->[0]
- \$(CC) \$(CFLAGS) $incs -E -P \$< > \$@
+$args{src}: $args{generator}->[0] $deps
+ \$(CC) \$(CFLAGS) $incs -E \$< | \\
+ \$(PERL) -ne '/^#(line)?\\s*[0-9]+/ or print' > \$@
EOF
}
}
sub src2obj {
my %args = @_;
my $obj = $args{obj};
- my @srcs = map { (my $x = $_) =~ s/\.S$/.s/; $x } ( @{$args{srcs}} );
+ my @srcs = map { if ($unified_info{generate}->{$_}) {
+ (my $x = $_) =~ s/\.S$/.s/; $x
+ } else {
+ $_
+ }
+ } ( @{$args{srcs}} );
my $srcs = join(" ", @srcs);
my $deps = join(" ", @srcs, @{$args{deps}});
my $incs = join("", map { " -I".$_ } @{$args{incs}});
+ unless ($disabled{zlib}) {
+ if ($withargs{zlib_include}) {
+ $incs .= " -I".$withargs{zlib_include};
+ }
+ }
my $ecflags = { lib => '$(LIB_CFLAGS)',
dso => '$(DSO_CFLAGS)',
bin => '$(BIN_CFLAGS)' } -> {$args{intent}};
if (!$disabled{makedepend} && $makedepprog =~ /\/makedepend/) {
$recipe .= <<"EOF";
$obj$depext: $deps
- rm -f \$\@.tmp; touch \$\@.tmp
- -\$(MAKEDEPEND) -f\$\@.tmp -o"|$obj$objext" -- \$(CFLAGS) $ecflags$incs -- $srcs \\
- 2>/dev/null
- perl -i -pe 's/^.*\\|//; s/ \\/(\\\\.|[^ ])*//; #\\
- \$\$_ = undef if (/: *\$\$/ || /^(#.*| *)\$\$/); #\\
- \$\$_.="\\n" unless !defined(\$\$_) or /\\R\$\$/g;' \$\@.tmp
- \@if ! cmp \$\@.tmp \$\@ > /dev/null 2> /dev/null; then \\
- mv \$\@.tmp \$\@; \\
- else \\
+ -\$(MAKEDEPEND) -f- -o"|$obj$objext" -- \$(CFLAGS) $ecflags$incs -- $srcs \\
+ >\$\@.tmp 2>/dev/null
+ -\$(PERL) -i -pe 's/^.*\\|//; s/ \\/(\\\\.|[^ ])*//; \$\$_ = undef if (/: *\$\$/ || /^(#.*| *)\$\$/); \$\$_.="\\n" unless !defined(\$\$_) or /\\R\$\$/g;' \$\@.tmp
+ \@if cmp \$\@.tmp \$\@ > /dev/null 2> /dev/null; then \\
rm -f \$\@.tmp; \\
+ else \\
+ mv \$\@.tmp \$\@; \\
fi
EOF
$deps = $obj.$depext;
$obj$objext: $deps
\$(CC) \$(CFLAGS) $ecflags$incs -MMD -MF $obj$depext.tmp -MT \$\@ -c -o \$\@ $srcs
\@touch $obj$depext.tmp
- \@if ! cmp $obj$depext.tmp $obj$depext > /dev/null 2> /dev/null; then \\
- mv $obj$depext.tmp $obj$depext; \\
- else \\
+ \@if cmp $obj$depext.tmp $obj$depext > /dev/null 2> /dev/null; then \\
rm -f $obj$depext.tmp; \\
+ else \\
+ mv $obj$depext.tmp $obj$depext; \\
fi
EOF
}
$target: $lib$libext $deps $ordinalsfile
\$(MAKE) -f \$(SRCDIR)/Makefile.shared -e \\
PLATFORM=\$(PLATFORM) \\
- PERL=\$(PERL) SRCDIR="\$(SRCDIR)" DSTDIR="$libd" \\
- INSTALLTOP="\$(INSTALLTOP)" LIBDIR="\$(LIBDIR)" \\
- LIBDEPS="\$(PLIB_LDFLAGS) $linklibs \$(EX_LIBS)" \\
+ PERL="\$(PERL)" SRCDIR='\$(SRCDIR)' DSTDIR="$libd" \\
+ INSTALLTOP='\$(INSTALLTOP)' LIBDIR='\$(LIBDIR)' \\
+ LIBDEPS='\$(PLIB_LDFLAGS) '"$linklibs"' \$(EX_LIBS)' \\
LIBNAME=$libname LIBVERSION=\$(SHLIB_MAJOR).\$(SHLIB_MINOR) \\
- LIBCOMPATVERSIONS=";\$(SHLIB_VERSION_HISTORY)" \\
- CC="\$(CC)" CFLAGS="\$(CFLAGS) \$(LIB_CFLAGS)" \\
- CROSS_COMPILE="\$(CROSS_COMPILE)" LDFLAGS="\$(LDFLAGS)" \\
- SHARED_LDFLAGS="\$(LIB_LDFLAGS)" SHLIB_EXT=$shlibext \\
- SHARED_RCFLAGS="\$(RCFLAGS)" \\
+ LIBCOMPATVERSIONS=';\$(SHLIB_VERSION_HISTORY)' \\
+ CC='\$(CC)' CFLAGS='\$(CFLAGS) \$(LIB_CFLAGS)' \\
+ LDFLAGS='\$(LDFLAGS)' \\
+ SHARED_LDFLAGS='\$(LIB_LDFLAGS)' SHLIB_EXT=$shlibext \\
+ RC='\$(RC)' SHARED_RCFLAGS='\$(RCFLAGS)' \\
link_shlib.$shlib_target
EOF
. (windowsdll() ? <<"EOF" : "");
$target: $objs $deps
\$(MAKE) -f \$(SRCDIR)/Makefile.shared -e \\
PLATFORM=\$(PLATFORM) \\
- PERL=\$(PERL) SRCDIR="\$(SRCDIR)" DSTDIR="$libd" \\
- LIBDEPS="\$(PLIB_LDFLAGS) $shlibdeps \$(EX_LIBS)" \\
- LIBNAME=$libname LDFLAGS="\$(LDFLAGS)" \\
- CC="\$(CC)" CFLAGS="\$(CFLAGS) \$(DSO_CFLAGS)" \\
- SHARED_LDFLAGS="\$(DSO_LDFLAGS)" \\
+ PERL="\$(PERL)" SRCDIR='\$(SRCDIR)' DSTDIR="$libd" \\
+ LIBDEPS='\$(PLIB_LDFLAGS) '"$shlibdeps"' \$(EX_LIBS)' \\
+ LIBNAME=$libname LDFLAGS='\$(LDFLAGS)' \\
+ CC='\$(CC)' CFLAGS='\$(CFLAGS) \$(DSO_CFLAGS)' \\
+ SHARED_LDFLAGS='\$(DSO_LDFLAGS)' \\
SHLIB_EXT=$dsoext \\
LIBEXTRAS="$objs" \\
link_dso.$shlib_target
my $objs = join(" ", map { $_.$objext } @{$args{objs}});
return <<"EOF";
$lib$libext: $objs
- \$(AR) \$\@ $objs
+ \$(AR) \$\@ \$\?
\$(RANLIB) \$\@ || echo Never mind.
EOF
}
$bin$exeext: $objs $deps
\$(RM) $bin$exeext
\$(MAKE) -f \$(SRCDIR)/Makefile.shared -e \\
- PERL=\$(PERL) SRCDIR=\$(SRCDIR) \\
+ PERL="\$(PERL)" SRCDIR=\$(SRCDIR) \\
APPNAME=$bin$exeext OBJECTS="$objs" \\
- LIBDEPS="\$(PLIB_LDFLAGS) $linklibs \$(EX_LIBS)" \\
- CC="\$(CC)" CFLAGS="\$(CFLAGS) \$(BIN_CFLAGS)" \\
- LDFLAGS="\$(LDFLAGS)" LIBRPATH="\$(INSTALLTOP)/\$(LIBDIR)" \\
+ LIBDEPS='\$(PLIB_LDFLAGS) '"$linklibs"' \$(EX_LIBS)' \\
+ CC='\$(CC)' CFLAGS='\$(CFLAGS) \$(BIN_CFLAGS)' \\
+ LDFLAGS='\$(LDFLAGS)' LIBRPATH='\$(INSTALLTOP)/\$(LIBDIR)' \\
link_app.$shlib_target
EOF
}