PROGRAMS={- join(" ", map { $_.$exeext } grep { !m|^test/| } @{$unified_info{programs}}) -}
TESTPROGS={- join(" ", map { $_.$exeext } grep { m|^test/| } @{$unified_info{programs}}) -}
SCRIPTS={- join(" ", @{$unified_info{scripts}}) -}
+{- output_off() if $disabled{makedepend}; "" -}
DEPS={- join(" ", map { (my $x = $_) =~ s|\.o$|$depext|; $x; }
grep { $unified_info{sources}->{$_}->[0] =~ /\.c$/ }
keys %{$unified_info{sources}}); -}
+{- output_on() if $disabled{makedepend}; "" -}
BIN_SCRIPTS=$(BLDDIR)/tools/c_rehash
MISC_SCRIPTS=$(SRCDIR)/tools/c_hash $(SRCDIR)/tools/c_info \
CROSS_COMPILE= {- $config{cross_compile_prefix} -}
CC= $(CROSS_COMPILE){- $target{cc} -}
-CFLAGS={- our $cflags2 = join(" ",(map { "-D".$_} @{$config{defines}}),"-DOPENSSLDIR=\"\\\"\$(OPENSSLDIR)\\\"\"","-DENGINESDIR=\"\\\"\$(ENGINESDIR)\\\"\"") -} {- $config{cflags} -}
+CFLAGS={- our $cflags2 = join(" ",(map { "-D".$_} @{$target{defines}}, @{$config{defines}}),"-DOPENSSLDIR=\"\\\"\$(OPENSSLDIR)\\\"\"","-DENGINESDIR=\"\\\"\$(ENGINESDIR)\\\"\"") -} {- $target{cflags} -} {- $config{cflags} -}
CFLAGS_Q={- $cflags2 =~ s|([\\"])|\\$1|g; $cflags2 -} {- $config{cflags} -}
-LDFLAGS= {- $config{lflags} -}
-PLIB_LDFLAGS= {- $config{plib_lflags} -}
-EX_LIBS= {- $config{ex_libs} -}
+LDFLAGS= {- $target{lflags} -}
+PLIB_LDFLAGS= {- $target{plib_lflags} -}
+EX_LIBS= {- $target{ex_libs} -} {- $config{ex_libs} -}
SHARED_CFLAGS={- $target{shared_cflag} || "" -}
-SHARED_LDFLAGS={- $target{shared_ldflag}
+SHARED_LDFLAGS={- $target{shared_ldflag}." ".$config{shared_ldflag}
# Unlike other OSes (like Solaris, Linux, Tru64,
# IRIX) BSD run-time linkers (tested OpenBSD, NetBSD
# and FreeBSD) "demand" RPATH set on .so objects.
RMDIR= rmdir
TAR= {- $target{tar} || "tar" -}
TARFLAGS= {- $target{tarflags} -}
-MAKEDEPEND=$(CROSS_COMPILE){- $config{makedepprog} -}
+MAKEDEPEND={- $config{makedepprog} -}
BASENAME= openssl
NAME= $(BASENAME)-$(VERSION)
build_tests: configdata.pm build_tests_nodep depend
build_tests_nodep: $(TESTPROGS)
-test tests: build_tests_nodep build_apps_nodep build_engines_nodep depend rehash
+test tests: build_tests_nodep build_apps_nodep build_engines_nodep depend
( cd test; \
SRCTOP=../$(SRCDIR) \
BLDTOP=../$(BLDDIR) \
rm -f $(PROGRAMS) $(TESTPROGS)
rm -f `find $(BLDDIR) -name '*{- $depext -}'`
rm -f `find $(BLDDIR) -name '*{- $objext -}'`
- rm -f $(BLDDIR)/core $(BLDDIR)/rehash.time
+ 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`
# was true, 1 if false, and most importantly, 2 if it doesn't
# recognise the operator.
depend:
+ @: {- output_off() if $disabled{makedepend}; "" -}
@catdepends=false; \
if [ Makefile -nt Makefile ] 2>/dev/null || [ $$? = 1 ]; then \
for d in $(DEPS); do \
rm -f Makefile.new; \
fi; \
fi
+ @: {- output_on() if $disabled{makedepend}; "" -}
# Install helper targets #############################################
: {- output_on() unless windowsdll(); "" -}; \
done
@ : {- output_on() if $disabled{shared}; "" -}
- @echo "$(RM) $(DESTDIR)$(INSTALLTOP)/$(LIBDIR)/pkgconfig/libcrypto.pc"
- @$(RM) $(DESTDIR)$(INSTALLTOP)/$(LIBDIR)/pkgconfig/libcrypto.pc
- @echo "$(RM) $(DESTDIR)$(INSTALLTOP)/$(LIBDIR)/pkgconfig/libssl.pc"
- @$(RM) $(DESTDIR)$(INSTALLTOP)/$(LIBDIR)/pkgconfig/libssl.pc
- @echo "$(RM) $(DESTDIR)$(INSTALLTOP)/$(LIBDIR)/pkgconfig/openssl.pc"
- @$(RM) $(DESTDIR)$(INSTALLTOP)/$(LIBDIR)/pkgconfig/openssl.pc
- @echo $(RMDIR) $(DESTDIR)$(INSTALLTOP)/$(LIBDIR)/pkgconfig
- -@$(RMDIR) $(DESTDIR)$(INSTALLTOP)/$(LIBDIR)/pkgconfig
- @echo $(RMDIR) $(DESTDIR)$(INSTALLTOP)/$(LIBDIR)
- -@$(RMDIR) $(DESTDIR)$(INSTALLTOP)/$(LIBDIR)
+ $(RM) $(DESTDIR)$(INSTALLTOP)/$(LIBDIR)/pkgconfig/libcrypto.pc
+ $(RM) $(DESTDIR)$(INSTALLTOP)/$(LIBDIR)/pkgconfig/libssl.pc
+ $(RM) $(DESTDIR)$(INSTALLTOP)/$(LIBDIR)/pkgconfig/openssl.pc
+ -$(RMDIR) $(DESTDIR)$(INSTALLTOP)/$(LIBDIR)/pkgconfig
+ -$(RMDIR) $(DESTDIR)$(INSTALLTOP)/$(LIBDIR)
install_engines:
@[ -n "$(INSTALLTOP)" ] || (echo INSTALLTOP should not be empty; exit 1)
echo "$(RM) $(DESTDIR)$(INSTALLTOP)/$(LIBDIR)/engines/$$fn"; \
$(RM) $(DESTDIR)$(INSTALLTOP)/$(LIBDIR)/engines/$$fn; \
done
- @echo "$(RMDIR) $(DESTDIR)$(INSTALLTOP)/$(LIBDIR)/engines"
- -@$(RMDIR) $(DESTDIR)$(INSTALLTOP)/$(LIBDIR)/engines
+ -$(RMDIR) $(DESTDIR)$(INSTALLTOP)/$(LIBDIR)/engines
install_runtime:
@[ -n "$(INSTALLTOP)" ] || (echo INSTALLTOP should not be empty; exit 1)
done
: {- output_on() unless windowsdll(); "" -};
$(RM) $(DESTDIR)$(OPENSSLDIR)/openssl.cnf
- @echo "$(RMDIR) $(DESTDIR)$(INSTALLTOP)/bin"
- -@$(RMDIR) $(DESTDIR)$(INSTALLTOP)/bin
- @echo "$(RMDIR) $(DESTDIR)$(OPENSSLDIR)/misc"
- -@$(RMDIR) $(DESTDIR)$(OPENSSLDIR)/misc
+ -$(RMDIR) $(DESTDIR)$(INSTALLTOP)/bin
+ -$(RMDIR) $(DESTDIR)$(OPENSSLDIR)/misc
# A method to extract all names from a .pod file
# The first sed extracts everything between "=head1 NAME" and the next =head1
$(PERL) ../util/mkerr.pl -conf $$e \
-nostatic -staticloader -write *.c; \
done )
- ( cd $(SRCDIR)/crypto/ct; \
- $(PERL) ../../util/mkerr.pl -conf ct.ec -hprefix internal/ -write *.c )
ordinals:
( b=`pwd`; cd $(SRCDIR); $(PERL) -I$$b util/mkdef.pl crypto update )
# Release targets (note: only available on Unix) #####################
+TAR_COMMAND=$(TAR) $(TARFLAGS) --owner 0 --group 0 -cvf -
+PREPARE_CMD=:
tar:
TMPDIR=/var/tmp/openssl-copy.$$$$; \
- DISTDIR=openssl-$(VERSION); \
+ DISTDIR=$(NAME); \
mkdir -p $$TMPDIR/$$DISTDIR; \
(cd $(SRCDIR); \
git ls-tree -r --name-only --full-tree HEAD \
cp $$F $$TMPDIR/$$DISTDIR/$$F; \
done); \
(cd $$TMPDIR; \
- [ -n "$(PREPARE_CMD)" ] && $(PREPARE_CMD); \
+ $(PREPARE_CMD); \
find $$TMPDIR/$$DISTDIR -type d -print | xargs chmod 755; \
find $$TMPDIR/$$DISTDIR -type f -print | xargs chmod a+r; \
find $$TMPDIR/$$DISTDIR -type f -perm -0100 -print | xargs chmod a+x; \
- $(TAR) $(TARFLAGS) --owner 0 --group 0 -cvf - $$DISTDIR) \
+ $(TAR_COMMAND) $$DISTDIR) \
| (cd $(SRCDIR); gzip --best > $(TARFILE).gz); \
rm -rf $$TMPDIR
cd $(SRCDIR); ls -l $(TARFILE).gz
# Helper targets #####################################################
-rehash: link-utils copy-certs build_apps_nodep
- @if [ -z "$(CROSS_COMPILE)" ]; then \
- (OPENSSL="$(BLDDIR)/util/shlib_wrap.sh apps/openssl"; \
- [ -x "$(BLDDIR)/openssl.exe" ] && OPENSSL="$(BLDDIR)/openssl.exe" || :; \
- OPENSSL_DEBUG_MEMORY=on; OPENSSL_CONF=/dev/null ; \
- export OPENSSL OPENSSL_DEBUG_MEMORY OPENSSL_CONF; \
- $$OPENSSL rehash certs/demo \
- || $(PERL) tools/c_rehash certs/demo) && \
- touch rehash.time; \
- else :; fi
-
link-utils: $(BLDDIR)/util/opensslwrap.sh $(BLDDIR)/util/shlib_wrap.sh
$(BLDDIR)/util/opensslwrap.sh: configdata.pm
ln -sf "../$(SRCDIR)/util/shlib_wrap.sh" "$(BLDDIR)/util"; \
fi
-copy-certs: FORCE
- @if [ "$(SRCDIR)" != "$(BLDDIR)" ]; then \
- cp -R "$(SRCDIR)/certs" "$(BLDDIR)/"; \
- 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
# 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)/Configure $(SRCDIR)/config
+configdata.pm: {- $config{build_file_template} -} $(SRCDIR)/Configurations/common.tmpl $(SRCDIR)/Configure $(SRCDIR)/config {- join(" ", @{$config{build_infos}}) -}
@echo "Detected changed: $?"
@echo "Reconfiguring..."
$(SRCDIR)/Configure reconf
return map { shlib_simple($_) } @_;
}
+ sub generatesrc {
+ my %args = @_;
+ my $generator = join(" ", @{$args{generator}});
+ my $incs = join("", map { " -I".$_ } @{$args{incs}});
+
+ if ($args{src} !~ /\.[sS]$/) {
+ return <<"EOF";
+$args{src}: $args{generator}->[0]
+ \$(PERL) $generator > \$@
+EOF
+ } else {
+ if ($args{generator}->[0] =~ /\.pl$/) {
+ $generator = 'CC="$(CC)" $(PERL) '.$generator;
+ } elsif ($args{generator}->[0] =~ /\.m4$/) {
+ $generator = 'm4 -B 8192 '.$generator.' >'
+ } elsif ($args{generator}->[0] =~ /\.S$/) {
+ $generator = undef;
+ } else {
+ die "Generator type for $args{src} unknown: $generator\n";
+ }
+
+ if (defined($generator)) {
+ # If the target is named foo.S in build.info, we want to
+ # end up generating foo.s in two steps.
+ if ($args{src} =~ /\.S$/) {
+ (my $target = $args{src}) =~ s|\.S$|.s|;
+ return <<"EOF";
+$target: $args{generator}->[0]
+ ( trap "rm -f \$@.S" INT; \\
+ $generator \$@.S; \\
+ \$(CC) \$(CFLAGS) $incs -E -P \$@.S > \$@ && rm -f \$@.S )
+EOF
+ }
+ # Otherwise....
+ return <<"EOF";
+$args{src}: $args{generator}->[0]
+ $generator \$@
+EOF
+ }
+ return <<"EOF";
+$args{src}: $args{generator}->[0]
+ \$(CC) \$(CFLAGS) $incs -E -P \$< > \$@
+EOF
+ }
+ }
+
sub src2obj {
my %args = @_;
my $obj = $args{obj};
- my $srcs = join(" ", @{$args{srcs}});
- my $deps = join(" ", @{$args{srcs}}, @{$args{deps}});
+ my @srcs = map { (my $x = $_) =~ s/\.S$/.s/; $x } ( @{$args{srcs}} );
+ my $srcs = join(" ", @srcs);
+ my $deps = join(" ", @srcs, @{$args{deps}});
my $incs = join("", map { " -I".$_ } @{$args{incs}});
my $ecflags = { lib => '$(SHARED_CFLAGS)',
dso => '$(DSO_CFLAGS)',
bin => '$(BIN_CFLAGS)' } -> {$args{intent}};
my $makedepprog = $config{makedepprog};
- if ($makedepprog eq "makedepend") {
- return <<"EOF";
+ my $recipe = "";
+ if (!$disabled{makedepend} && $makedepprog =~ /\/makedepend/) {
+ $recipe .= <<"EOF";
$obj$depext: $deps
rm -f \$\@.tmp; touch \$\@.tmp
- \$(MAKEDEPEND) -f\$\@.tmp -o"|$obj" -- \$(CFLAGS) $ecflags$incs -- $srcs \\
+ -\$(MAKEDEPEND) -f\$\@.tmp -o"|$obj$objext" -- \$(CFLAGS) $ecflags$incs -- $srcs \\
2>/dev/null
sed -e 's/^.*|//' -e 's/ \\/\\(\\\\.\\|[^ ]\\)*//g' -e '/: *\$\$/d' -e '/^\\(#.*\\| *\\)\$\$/d' \$\@.tmp > \$\@
rm \$\@.tmp
-$obj$objext: $obj$depext
- \$(CC) \$(CFLAGS) $ecflags$incs -c -o \$\@ $srcs
EOF
+ $deps = $obj.$depext;
}
- return <<"EOF";
-$obj$depext: $deps
- \$(CC) \$(CFLAGS) $ecflags$incs -MM -MF \$\@ -MQ $obj$objext $srcs
- touch \$\@
-$obj$objext: $obj$depext
+ if ($disabled{makedepend} || $makedepprog =~ /\/makedepend/) {
+ $recipe .= <<"EOF";
+$obj$objext: $deps
\$(CC) \$(CFLAGS) $ecflags$incs -c -o \$\@ $srcs
EOF
+ }
+ if (!$disabled{makedepend} && $makedepprog !~ /\/makedepend/) {
+ $recipe .= <<"EOF";
+$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; \\
+ fi
+EOF
+ }
+ return $recipe;
}
# On Unix, we build shlibs from static libs, so we're ignoring the
# object file array. We *know* this routine is only called when we've