##
## {- join("\n## ", @autowarntext) -}
{-
- our $makedepprog = platform->makedepprog();
+ use OpenSSL::Util;
+
+ our $makedep_scheme = $config{makedep_scheme};
+ our $makedepcmd = platform->makedepcmd();
sub windowsdll { $config{target} =~ /^(?:Cygwin|mingw)/ }
# to. You're welcome.
sub dependmagic {
my $target = shift;
+ my $help = shift;
- return "$target: build_generated\n\t\$(MAKE) depend && \$(MAKE) _$target\n_$target";
+ return "$target: build_generated ## $help\n\t\$(MAKE) depend && \$(MAKE) _$target\n_$target";
}
our $COLUMNS = $ENV{COLUMNS};
FIPSKEY={- $config{FIPSKEY} -}
VERSION={- "$config{full_version}" -}
+VERSION_NUMBER={- "$config{version}" -}
MAJOR={- $config{major} -}
MINOR={- $config{minor} -}
SHLIB_VERSION_NUMBER={- $config{shlib_version} -}
SHLIB_INFO={- join(" \\\n" . ' ' x 11,
fill_lines(" ", $COLUMNS - 11,
map { my $x = platform->sharedlib($_);
- my $y = platform->sharedlib_simple($_);
- $x ? "\"$x;$y\"" : () }
+ my $y = platform->sharedlib_simple($_) // '';
+ my $z = platform->sharedlib_import($_) // '';
+ $x ? "\"$x;$y;$z\"" : () }
@{$unified_info{libraries}})) -}
MODULES={- join(" \\\n" . ' ' x 8,
fill_lines(" ", $COLUMNS - 8,
map { platform->dso($_) }
+ # Drop all modules that are dependencies, they will
+ # be processed through their dependents
+ grep { my $x = $_;
+ !grep { grep { $_ eq $x } @$_ }
+ values %{$unified_info{depends}} }
@{$unified_info{modules}})) -}
+FIPSMODULE={- # We do some extra checking here, as there should be only one
+ use File::Basename;
+ our @fipsmodules =
+ grep { !$unified_info{attributes}->{modules}->{$_}->{noinst}
+ && $unified_info{attributes}->{modules}->{$_}->{fips} }
+ @{$unified_info{modules}};
+ die "More that one FIPS module" if scalar @fipsmodules > 1;
+ join(" ", map { platform->dso($_) } @fipsmodules) -}
+FIPSMODULENAME={- die "More that one FIPS module" if scalar @fipsmodules > 1;
+ join(" ", map { basename(platform->dso($_)) } @fipsmodules) -}
+
PROGRAMS={- join(" \\\n" . ' ' x 9,
fill_lines(" ", $COLUMNS - 9,
map { platform->bin($_) }
GENERATED_MANDATORY={- join(" \\\n" . ' ' x 20,
fill_lines(" ", $COLUMNS - 20,
@{$unified_info{depends}->{""}})) -}
+GENERATED_PODS={- # common0.tmpl provides @generated
+ join(" \\\n" . ' ' x 15,
+ fill_lines(" ", $COLUMNS - 15,
+ map { my $x = $_;
+ (
+ grep {
+ $unified_info{attributes}->{depends}
+ ->{$x}->{$_}->{pod} // 0
+ }
+ keys %{$unified_info{attributes}->{depends}->{$x}}
+ ) ? $x : ();
+ }
+ @generated)) -}
GENERATED={- # common0.tmpl provides @generated
join(" \\\n" . ' ' x 5,
fill_lines(" ", $COLUMNS - 5,
join(" \\\n" . ' ' x 19,
fill_lines(" ", $COLUMNS - 19,
map { my $x = platform->sharedlib($_);
- my $y = platform->sharedlib_simple($_);
- $x ? "\"$x;$y\"" : () }
+ my $y = platform->sharedlib_simple($_) // '';
+ my $z = platform->sharedlib_import($_) // '';
+ $x ? "\"$x;$y;$z\"" : () }
grep { !$unified_info{attributes}->{libraries}->{$_}->{noinst} }
@{$unified_info{libraries}}))
-}
fill_lines(" ", $COLUMNS - 16,
map { platform->dso($_) }
grep { !$unified_info{attributes}->{modules}->{$_}->{noinst}
- && !$unified_info{attributes}->{modules}->{$_}->{engine} }
+ && !$unified_info{attributes}->{modules}->{$_}->{engine}
+ && !$unified_info{attributes}->{modules}->{$_}->{fips} }
@{$unified_info{modules}}))
-}
+INSTALL_FIPSMODULE={-
+ join(" \\\n" . ' ' x 16,
+ fill_lines(" ", $COLUMNS - 16,
+ map { platform->dso($_) }
+ grep { !$unified_info{attributes}->{modules}->{$_}->{noinst}
+ && $unified_info{attributes}->{modules}->{$_}->{fips} }
+ @{$unified_info{modules}}))
+-}
+INSTALL_FIPSMODULECONF=providers/fipsmodule.cnf
INSTALL_PROGRAMS={-
join(" \\\n" . ' ' x 16,
fill_lines(" ", $COLUMNS - 16, map { platform->bin($_) }
grep { !$unified_info{attributes}->{programs}->{$_}->{noinst} }
@{$unified_info{programs}}))
-}
+INSTALL_EXPORTERS_PKGCONFIG={-
+ join(" \\\n" . ' ' x 28,
+ fill_lines(" ", $COLUMNS - 28,
+ grep { $unified_info{attributes}->{generate}->{$_}->{exporter} eq 'pkg-config'}
+ sort keys %{$unified_info{generate}}))
+-}
BIN_SCRIPTS={-
join(" \\\n" . ' ' x 12,
fill_lines(" ", $COLUMNS - 12,
&& $unified_info{attributes}->{scripts}->{$_}->{misc} }
@{$unified_info{scripts}}))
-}
+IMAGEDOCS1={-
+ join(" \\\n" . ' ' x 10,
+ fill_lines(" ", $COLUMNS - 10,
+ @{$unified_info{imagedocs}->{man1}})) -}
+IMAGEDOCS3={-
+ join(" \\\n" . ' ' x 10,
+ fill_lines(" ", $COLUMNS - 10,
+ @{$unified_info{imagedocs}->{man3}})) -}
+IMAGEDOCS5={-
+ join(" \\\n" . ' ' x 10,
+ fill_lines(" ", $COLUMNS - 10,
+ @{$unified_info{imagedocs}->{man5}})) -}
+IMAGEDOCS7={-
+ join(" \\\n" . ' ' x 10,
+ fill_lines(" ", $COLUMNS - 10,
+ @{$unified_info{imagedocs}->{man7}})) -}
HTMLDOCS1={-
join(" \\\n" . ' ' x 10,
fill_lines(" ", $COLUMNS - 10,
$openssldir -}
LIBDIR={- our $libdir = $config{libdir};
unless ($libdir) {
- #
- # if $prefix/lib$target{multilib} is not an existing
- # directory, then assume that it's not searched by linker
- # automatically, in which case adding $target{multilib} suffix
- # causes more grief than we're ready to tolerate, so don't...
- our $multilib =
- -d "$prefix/lib$target{multilib}" ? $target{multilib} : "";
- $libdir = "lib$multilib";
+ $libdir = "lib$target{multilib}";
}
file_name_is_absolute($libdir) ? "" : $libdir -}
# $(libdir) is chosen to be compatible with the GNU coding standards
# libraries and applications
LIBRPATH=$(libdir)
+BINDIR={- our $bindir = $config{bindir};
+ unless ($bindir) {
+ $bindir = "bin$target{multibin}";
+ }
+ file_name_is_absolute($bindir) ? "" : $bindir -}
+bindir={- file_name_is_absolute($bindir)
+ ? $bindir : '$(INSTALLTOP)/$(BINDIR)' -}
+
+PKGCONFIGDIR=$(libdir)/pkgconfig
+
MANDIR=$(INSTALLTOP)/share/man
DOCDIR=$(INSTALLTOP)/share/doc/$(BASENAME)
HTMLDIR=$(DOCDIR)/html
# MANSUFFIX is for the benefit of anyone who may want to have a suffix
# appended after the manpage file section number. "ssl" is popular,
# resulting in files such as config.5ssl rather than config.5.
-MANSUFFIX=
+MANSUFFIX=ossl
HTMLSUFFIX=html
# For "optional" echo messages, to get "real" silence
LDFLAGS= {- join(' ', @{$config{LDFLAGS}}) -}
EX_LIBS= {- join(' ', @{$config{LDLIBS}}) -}
-MAKEDEPEND={- $config{makedepprog} -}
+MAKEDEPEND={- $config{makedepcmd} -}
PERL={- $config{PERL} -}
# The main targets ###################################################
-{- dependmagic('build_sw'); -}: build_libs_nodep build_modules_nodep build_programs_nodep link-utils
-{- dependmagic('build_libs'); -}: build_libs_nodep
-{- dependmagic('build_modules'); -}: build_modules_nodep
-{- dependmagic('build_programs'); -}: build_programs_nodep
+##@ Software
+
+{- dependmagic('build_sw', 'Build all the software (default target)'); -}: build_libs_nodep build_modules_nodep build_programs_nodep link-utils
+{- dependmagic('build_libs', 'Build the libraries libssl and libcrypto'); -}: build_libs_nodep
+{- dependmagic('build_modules', 'Build the modules (i.e. providers and engines)'); -}: build_modules_nodep
+{- dependmagic('build_programs', 'Build the openssl executables and scripts'); -}: build_programs_nodep
+
+all: build_sw {- "build_docs" if !$disabled{docs}; -} ## Build software and documentation
-build_docs: build_man_docs build_html_docs
-build_man_docs: $(MANDOCS1) $(MANDOCS3) $(MANDOCS5) $(MANDOCS7)
-build_html_docs: $(HTMLDOCS1) $(HTMLDOCS3) $(HTMLDOCS5) $(HTMLDOCS7)
+##@ Documentation
+build_generated_pods: $(GENERATED_PODS)
+build_docs: build_man_docs build_html_docs ## Create documentation
+build_man_docs: $(MANDOCS1) $(MANDOCS3) $(MANDOCS5) $(MANDOCS7) ## Create manpages
+build_html_docs: $(HTMLDOCS1) $(HTMLDOCS3) $(HTMLDOCS5) $(HTMLDOCS7) ## Create HTML documentation
build_generated: $(GENERATED_MANDATORY)
-build_libs_nodep: libcrypto.pc libssl.pc openssl.pc
+build_libs_nodep: $(LIBS) {- join(" ",map { platform->sharedlib_simple($_) // platform->sharedlib_import($_) // platform->sharedlib($_) // () } @{$unified_info{libraries}}) -}
build_modules_nodep: $(MODULES)
build_programs_nodep: $(PROGRAMS) $(SCRIPTS)
@echo " then make will fail..."
@ : {- output_on() if $disabled{makedepend}; "" -}
-all: build_sw build_docs
+##@ Help
+.PHONY: help
+help: ## Show this help screen
+ @$(PERL) $(SRCDIR)/util/help.pl $(BLDDIR)/Makefile
-test: tests
-{- dependmagic('tests'); -}: build_programs_nodep build_modules_nodep link-utils
+##@ Testing
+test: tests ## Run tests (alias of "tests")
+{- dependmagic('tests', 'Run tests'); -}: build_programs_nodep build_modules_nodep link-utils run_tests
+run_tests:
@ : {- output_off() if $disabled{tests}; "" -}
( SRCTOP=$(SRCDIR) \
BLDTOP=$(BLDDIR) \
@echo "Tests are not supported with your chosen Configure options"
@ : {- output_on() if !$disabled{tests}; "" -}
-list-tests:
+list-tests: ## List available tests that can be invoked via "make test TESTS=<name>"
@ : {- output_off() if $disabled{tests}; "" -}
- @SRCTOP="$(SRCDIR)" \
- $(PERL) $(SRCDIR)/test/run_tests.pl list
+ $(MAKE) run_tests TESTS=list
@ : {- if ($disabled{tests}) { output_on(); } else { output_off(); } "" -}
@echo "Tests are not supported with your chosen Configure options"
@ : {- output_on() if !$disabled{tests}; "" -}
-install: install_sw install_ssldirs install_docs
-
-uninstall: uninstall_docs uninstall_sw
+##@ Workspace cleaning
libclean:
@set -e; for s in $(SHLIB_INFO); do \
if [ "$$s" = ";" ]; then continue; fi; \
s1=`echo "$$s" | cut -f1 -d";"`; \
s2=`echo "$$s" | cut -f2 -d";"`; \
+ s3=`echo "$$s" | cut -f3 -d";"`; \
$(ECHO) $(RM) $$s1; {- output_off() unless windowsdll(); "" -}\
$(RM) apps/$$s1; \
$(RM) test/$$s1; \
$(RM) fuzz/$$s1; {- output_on() unless windowsdll(); "" -}\
$(RM) $$s1; \
- if [ "$$s1" != "$$s2" ]; then \
+ if [ "$$s2" != "" ]; then \
$(ECHO) $(RM) $$s2; \
$(RM) $$s2; \
fi; \
+ if [ "$$s3" != "" ]; then \
+ $(ECHO) $(RM) $$s3; \
+ $(RM) $$s3; \
+ fi; \
done
$(RM) $(LIBS)
$(RM) *{- platform->defext() -}
-clean: libclean
- $(RM) $(HTMLDOCS1) $(HTMLDOCS3) $(HTMLDOCS5) $(HTMLDOCS7)
- $(RM) $(MANDOCS1) $(MANDOCS3) $(MANDOCS5) $(MANDOCS7)
- $(RM) $(PROGRAMS) $(TESTPROGS) $(MODULES) $(SCRIPTS)
+clean: libclean ## Clean the workspace, keep the configuration
+ $(RM) $(HTMLDOCS1)
+ $(RM) $(HTMLDOCS3)
+ $(RM) $(HTMLDOCS5)
+ $(RM) $(HTMLDOCS7)
+ $(RM) $(MANDOCS1)
+ $(RM) $(MANDOCS3)
+ $(RM) $(MANDOCS5)
+ $(RM) $(MANDOCS7)
+ $(RM) $(PROGRAMS) $(TESTPROGS) $(MODULES) $(FIPSMODULE) $(SCRIPTS)
$(RM) $(GENERATED_MANDATORY) $(GENERATED)
-find . -name '*{- platform->depext() -}' \! -name '.*' \! -type d -exec $(RM) {} \;
-find . -name '*{- platform->objext() -}' \! -name '.*' \! -type d -exec $(RM) {} \;
$(RM) core
- $(RM) tags TAGS doc-nits cmd-nits md-nits
+ $(RM) tags TAGS doc-nits md-nits
$(RM) -r test/test-runs
- $(RM) openssl.pc libcrypto.pc libssl.pc
+ $(RM) providers/fips*.new
-find . -type l \! -name '.*' -exec $(RM) {} \;
- $(RM) $(TARFILE)
-distclean: clean
+distclean: clean ## Clean and remove the configuration
+ $(RM) include/openssl/configuration.h
$(RM) configdata.pm
$(RM) Makefile
# We check if any depfile is newer than Makefile and decide to
# concatenate only if that is true.
-depend:
+depend: Makefile
@: {- output_off() if $disabled{makedepend}; "" -}
- @$(PERL) $(SRCDIR)/util/add-depends.pl {-
- defined $makedepprog && $makedepprog =~ /\/makedepend/
- ? 'makedepend' : 'gcc' -}
+ @$(PERL) $(SRCDIR)/util/add-depends.pl "{- $makedep_scheme -}"
@: {- output_on() if $disabled{makedepend}; "" -}
# Install helper targets #############################################
+##@ Installation
+
+install: install_sw install_ssldirs {- "install_docs" if !$disabled{docs}; -} {- $disabled{fips} ? "" : "install_fips" -} ## Install software and documentation, create OpenSSL directories
+
+uninstall: {- "uninstall_docs" if !$disabled{docs}; -} uninstall_sw {- $disabled{fips} ? "" : "uninstall_fips" -} ## Uninstall software and documentation
-install_sw: install_dev install_engines install_modules install_runtime
+install_sw: install_dev install_engines install_modules install_runtime ## Install just the software and libraries
-uninstall_sw: uninstall_runtime uninstall_modules uninstall_engines uninstall_dev
+uninstall_sw: uninstall_runtime uninstall_modules uninstall_engines uninstall_dev ## Uninstall the software and libraries
-install_docs: install_man_docs install_html_docs
+install_docs: install_man_docs install_html_docs ## Install manpages and HTML documentation
+
+uninstall_docs: uninstall_man_docs uninstall_html_docs ## Uninstall manpages and HTML documentation
+ $(RM) -r "$(DESTDIR)$(DOCDIR)"
+
+{- output_off() if $disabled{fips}; "" -}
+install_fips: build_sw $(INSTALL_FIPSMODULECONF)
+ @[ -n "$(INSTALLTOP)" ] || (echo INSTALLTOP should not be empty; exit 1)
+ @$(PERL) $(SRCDIR)/util/mkdir-p.pl "$(DESTDIR)$(MODULESDIR)"
+ @$(PERL) $(SRCDIR)/util/mkdir-p.pl "$(DESTDIR)$(OPENSSLDIR)"
+ @$(ECHO) "*** Installing FIPS module"
+ @$(ECHO) "install $(INSTALL_FIPSMODULE) -> $(DESTDIR)$(MODULESDIR)/$(FIPSMODULENAME)"
+ @cp "$(INSTALL_FIPSMODULE)" "$(DESTDIR)$(MODULESDIR)/$(FIPSMODULENAME).new"
+ @chmod 755 "$(DESTDIR)$(MODULESDIR)/$(FIPSMODULENAME).new"
+ @mv -f "$(DESTDIR)$(MODULESDIR)/$(FIPSMODULENAME).new" \
+ "$(DESTDIR)$(MODULESDIR)/$(FIPSMODULENAME)"
+ @$(ECHO) "*** Installing FIPS module configuration"
+ @$(ECHO) "install $(INSTALL_FIPSMODULECONF) -> $(DESTDIR)$(OPENSSLDIR)/fipsmodule.cnf"
+ @cp $(INSTALL_FIPSMODULECONF) "$(DESTDIR)$(OPENSSLDIR)/fipsmodule.cnf"
+
+uninstall_fips:
+ @$(ECHO) "*** Uninstalling FIPS module configuration"
+ $(RM) "$(DESTDIR)$(OPENSSLDIR)/fipsmodule.cnf"
+ @$(ECHO) "*** Uninstalling FIPS module"
+ $(RM) "$(DESTDIR)$(MODULESDIR)/$(FIPSMODULENAME)"
+{- if ($disabled{fips}) { output_on(); } else { output_off(); } "" -}
+install_fips:
+ @$(ECHO) "The 'install_fips' target requires the 'enable-fips' option"
+
+uninstall_fips:
+ @$(ECHO) "The 'uninstall_fips' target requires the 'enable-fips' option"
+{- output_on() if !$disabled{fips}; "" -}
-uninstall_docs: uninstall_man_docs uninstall_html_docs
- $(RM) -r $(DESTDIR)$(DOCDIR)
install_ssldirs:
- @$(PERL) $(SRCDIR)/util/mkdir-p.pl $(DESTDIR)$(OPENSSLDIR)/certs
- @$(PERL) $(SRCDIR)/util/mkdir-p.pl $(DESTDIR)$(OPENSSLDIR)/private
- @$(PERL) $(SRCDIR)/util/mkdir-p.pl $(DESTDIR)$(OPENSSLDIR)/misc
+ @$(PERL) $(SRCDIR)/util/mkdir-p.pl "$(DESTDIR)$(OPENSSLDIR)/certs"
+ @$(PERL) $(SRCDIR)/util/mkdir-p.pl "$(DESTDIR)$(OPENSSLDIR)/private"
+ @$(PERL) $(SRCDIR)/util/mkdir-p.pl "$(DESTDIR)$(OPENSSLDIR)/misc"
@set -e; for x in dummy $(MISC_SCRIPTS); do \
if [ "$$x" = "dummy" ]; then continue; fi; \
x1=`echo "$$x" | cut -f1 -d:`; \
x2=`echo "$$x" | cut -f2 -d:`; \
fn=`basename $$x1`; \
$(ECHO) "install $$x1 -> $(DESTDIR)$(OPENSSLDIR)/misc/$$fn"; \
- cp $$x1 $(DESTDIR)$(OPENSSLDIR)/misc/$$fn.new; \
- chmod 755 $(DESTDIR)$(OPENSSLDIR)/misc/$$fn.new; \
- mv -f $(DESTDIR)$(OPENSSLDIR)/misc/$$fn.new \
- $(DESTDIR)$(OPENSSLDIR)/misc/$$fn; \
+ cp $$x1 "$(DESTDIR)$(OPENSSLDIR)/misc/$$fn.new"; \
+ chmod 755 "$(DESTDIR)$(OPENSSLDIR)/misc/$$fn.new"; \
+ mv -f "$(DESTDIR)$(OPENSSLDIR)/misc/$$fn.new" \
+ "$(DESTDIR)$(OPENSSLDIR)/misc/$$fn"; \
if [ "$$x1" != "$$x2" ]; then \
ln=`basename "$$x2"`; \
: {- output_off() unless windowsdll(); "" -}; \
$(ECHO) "copy $(DESTDIR)$(OPENSSLDIR)/misc/$$ln -> $(DESTDIR)$(OPENSSLDIR)/misc/$$fn"; \
- cp $(DESTDIR)$(OPENSSLDIR)/misc/$$fn $(DESTDIR)$(OPENSSLDIR)/misc/$$ln; \
+ cp "$(DESTDIR)$(OPENSSLDIR)/misc/$$fn" "$(DESTDIR)$(OPENSSLDIR)/misc/$$ln"; \
: {- output_on() unless windowsdll();
output_off() if windowsdll(); "" -}; \
$(ECHO) "link $(DESTDIR)$(OPENSSLDIR)/misc/$$ln -> $(DESTDIR)$(OPENSSLDIR)/misc/$$fn"; \
- ln -sf $$fn $(DESTDIR)$(OPENSSLDIR)/misc/$$ln; \
+ ln -sf $$fn "$(DESTDIR)$(OPENSSLDIR)/misc/$$ln"; \
: {- output_on() if windowsdll(); "" -}; \
fi; \
done
@$(ECHO) "install $(SRCDIR)/apps/openssl.cnf -> $(DESTDIR)$(OPENSSLDIR)/openssl.cnf.dist"
- @cp $(SRCDIR)/apps/openssl.cnf $(DESTDIR)$(OPENSSLDIR)/openssl.cnf.new
- @chmod 644 $(DESTDIR)$(OPENSSLDIR)/openssl.cnf.new
- @mv -f $(DESTDIR)$(OPENSSLDIR)/openssl.cnf.new $(DESTDIR)$(OPENSSLDIR)/openssl.cnf.dist
+ @cp $(SRCDIR)/apps/openssl.cnf "$(DESTDIR)$(OPENSSLDIR)/openssl.cnf.new"
+ @chmod 644 "$(DESTDIR)$(OPENSSLDIR)/openssl.cnf.new"
+ @mv -f "$(DESTDIR)$(OPENSSLDIR)/openssl.cnf.new" "$(DESTDIR)$(OPENSSLDIR)/openssl.cnf.dist"
@if [ ! -f "$(DESTDIR)$(OPENSSLDIR)/openssl.cnf" ]; then \
$(ECHO) "install $(SRCDIR)/apps/openssl.cnf -> $(DESTDIR)$(OPENSSLDIR)/openssl.cnf"; \
- cp $(SRCDIR)/apps/openssl.cnf $(DESTDIR)$(OPENSSLDIR)/openssl.cnf; \
- chmod 644 $(DESTDIR)$(OPENSSLDIR)/openssl.cnf; \
+ cp $(SRCDIR)/apps/openssl.cnf "$(DESTDIR)$(OPENSSLDIR)/openssl.cnf"; \
+ chmod 644 "$(DESTDIR)$(OPENSSLDIR)/openssl.cnf"; \
fi
@$(ECHO) "install $(SRCDIR)/apps/ct_log_list.cnf -> $(DESTDIR)$(OPENSSLDIR)/ct_log_list.cnf.dist"
- @cp $(SRCDIR)/apps/ct_log_list.cnf $(DESTDIR)$(OPENSSLDIR)/ct_log_list.cnf.new
- @chmod 644 $(DESTDIR)$(OPENSSLDIR)/ct_log_list.cnf.new
- @mv -f $(DESTDIR)$(OPENSSLDIR)/ct_log_list.cnf.new $(DESTDIR)$(OPENSSLDIR)/ct_log_list.cnf.dist
+ @cp $(SRCDIR)/apps/ct_log_list.cnf "$(DESTDIR)$(OPENSSLDIR)/ct_log_list.cnf.new"
+ @chmod 644 "$(DESTDIR)$(OPENSSLDIR)/ct_log_list.cnf.new"
+ @mv -f "$(DESTDIR)$(OPENSSLDIR)/ct_log_list.cnf.new" "$(DESTDIR)$(OPENSSLDIR)/ct_log_list.cnf.dist"
@if [ ! -f "$(DESTDIR)$(OPENSSLDIR)/ct_log_list.cnf" ]; then \
$(ECHO) "install $(SRCDIR)/apps/ct_log_list.cnf -> $(DESTDIR)$(OPENSSLDIR)/ct_log_list.cnf"; \
- cp $(SRCDIR)/apps/ct_log_list.cnf $(DESTDIR)$(OPENSSLDIR)/ct_log_list.cnf; \
- chmod 644 $(DESTDIR)$(OPENSSLDIR)/ct_log_list.cnf; \
+ cp $(SRCDIR)/apps/ct_log_list.cnf "$(DESTDIR)$(OPENSSLDIR)/ct_log_list.cnf"; \
+ chmod 644 "$(DESTDIR)$(OPENSSLDIR)/ct_log_list.cnf"; \
fi
install_dev: install_runtime_libs
@[ -n "$(INSTALLTOP)" ] || (echo INSTALLTOP should not be empty; exit 1)
@$(ECHO) "*** Installing development files"
- @$(PERL) $(SRCDIR)/util/mkdir-p.pl $(DESTDIR)$(INSTALLTOP)/include/openssl
- @ : {- output_off() unless grep { $_ eq "OPENSSL_USE_APPLINK" } (@{$target{defines}}, @{$config{defines}}); "" -}
+ @$(PERL) $(SRCDIR)/util/mkdir-p.pl "$(DESTDIR)$(INSTALLTOP)/include/openssl"
+ @ : {- output_off() if $disabled{uplink}; "" -}
@$(ECHO) "install $(SRCDIR)/ms/applink.c -> $(DESTDIR)$(INSTALLTOP)/include/openssl/applink.c"
- @cp $(SRCDIR)/ms/applink.c $(DESTDIR)$(INSTALLTOP)/include/openssl/applink.c
- @chmod 644 $(DESTDIR)$(INSTALLTOP)/include/openssl/applink.c
- @ : {- output_on() unless grep { $_ eq "OPENSSL_USE_APPLINK" } (@{$target{defines}}, @{$config{defines}}); "" -}
+ @cp $(SRCDIR)/ms/applink.c "$(DESTDIR)$(INSTALLTOP)/include/openssl/applink.c"
+ @chmod 644 "$(DESTDIR)$(INSTALLTOP)/include/openssl/applink.c"
+ @ : {- output_on() if $disabled{uplink}; "" -}
@set -e; for i in $(SRCDIR)/include/openssl/*.h \
$(BLDDIR)/include/openssl/*.h; do \
fn=`basename $$i`; \
$(ECHO) "install $$i -> $(DESTDIR)$(INSTALLTOP)/include/openssl/$$fn"; \
- cp $$i $(DESTDIR)$(INSTALLTOP)/include/openssl/$$fn; \
- chmod 644 $(DESTDIR)$(INSTALLTOP)/include/openssl/$$fn; \
+ cp $$i "$(DESTDIR)$(INSTALLTOP)/include/openssl/$$fn"; \
+ chmod 644 "$(DESTDIR)$(INSTALLTOP)/include/openssl/$$fn"; \
done
- @$(PERL) $(SRCDIR)/util/mkdir-p.pl $(DESTDIR)$(libdir)
+ @$(PERL) $(SRCDIR)/util/mkdir-p.pl "$(DESTDIR)$(libdir)"
@set -e; for l in $(INSTALL_LIBS); do \
fn=`basename $$l`; \
$(ECHO) "install $$l -> $(DESTDIR)$(libdir)/$$fn"; \
- cp $$l $(DESTDIR)$(libdir)/$$fn.new; \
- $(RANLIB) $(DESTDIR)$(libdir)/$$fn.new; \
- chmod 644 $(DESTDIR)$(libdir)/$$fn.new; \
- mv -f $(DESTDIR)$(libdir)/$$fn.new \
- $(DESTDIR)$(libdir)/$$fn; \
+ cp $$l "$(DESTDIR)$(libdir)/$$fn.new"; \
+ $(RANLIB) "$(DESTDIR)$(libdir)/$$fn.new"; \
+ chmod 644 "$(DESTDIR)$(libdir)/$$fn.new"; \
+ mv -f "$(DESTDIR)$(libdir)/$$fn.new" \
+ "$(DESTDIR)$(libdir)/$$fn"; \
done
@ : {- output_off() if $disabled{shared}; "" -}
@set -e; for s in $(INSTALL_SHLIB_INFO); do \
s1=`echo "$$s" | cut -f1 -d";"`; \
s2=`echo "$$s" | cut -f2 -d";"`; \
- fn1=`basename $$s1`; \
- fn2=`basename $$s2`; \
+ s3=`echo "$$s" | cut -f3 -d";"`; \
+ fn1=`basename "$$s1"`; \
+ fn2=`basename "$$s2"`; \
+ fn3=`basename "$$s3"`; \
: {- output_off(); output_on() unless windowsdll() or sharedaix(); "" -}; \
- if [ "$$fn1" != "$$fn2" ]; then \
+ if [ "$$fn2" != "" ]; then \
$(ECHO) "link $(DESTDIR)$(libdir)/$$fn2 -> $(DESTDIR)$(libdir)/$$fn1"; \
- ln -sf $$fn1 $(DESTDIR)$(libdir)/$$fn2; \
+ ln -sf $$fn1 "$(DESTDIR)$(libdir)/$$fn2"; \
fi; \
: {- output_off() unless windowsdll() or sharedaix(); output_on() if windowsdll(); "" -}; \
- $(ECHO) "install $$s2 -> $(DESTDIR)$(libdir)/$$fn2"; \
- cp $$s2 $(DESTDIR)$(libdir)/$$fn2.new; \
- chmod 755 $(DESTDIR)$(libdir)/$$fn2.new; \
- mv -f $(DESTDIR)$(libdir)/$$fn2.new \
- $(DESTDIR)$(libdir)/$$fn2; \
+ if [ "$$fn3" != "" ]; then \
+ $(ECHO) "install $$s3 -> $(DESTDIR)$(libdir)/$$fn3"; \
+ cp $$s3 "$(DESTDIR)$(libdir)/$$fn3.new"; \
+ chmod 755 "$(DESTDIR)$(libdir)/$$fn3.new"; \
+ mv -f "$(DESTDIR)$(libdir)/$$fn3.new" \
+ "$(DESTDIR)$(libdir)/$$fn3"; \
+ fi; \
: {- output_off() if windowsdll(); output_on() if sharedaix(); "" -}; \
- a=$(DESTDIR)$(libdir)/$$fn2; \
+ a="$(DESTDIR)$(libdir)/$$fn2"; \
$(ECHO) "install $$s1 -> $$a"; \
if [ -f $$a ]; then ( trap "rm -rf /tmp/ar.$$$$" INT 0; \
mkdir /tmp/ar.$$$$; ( cd /tmp/ar.$$$$; \
: {- output_off() if sharedaix(); output_on(); "" -}; \
done
@ : {- output_on() if $disabled{shared}; "" -}
- @$(PERL) $(SRCDIR)/util/mkdir-p.pl $(DESTDIR)$(libdir)/pkgconfig
- @$(ECHO) "install libcrypto.pc -> $(DESTDIR)$(libdir)/pkgconfig/libcrypto.pc"
- @cp libcrypto.pc $(DESTDIR)$(libdir)/pkgconfig
- @chmod 644 $(DESTDIR)$(libdir)/pkgconfig/libcrypto.pc
- @$(ECHO) "install libssl.pc -> $(DESTDIR)$(libdir)/pkgconfig/libssl.pc"
- @cp libssl.pc $(DESTDIR)$(libdir)/pkgconfig
- @chmod 644 $(DESTDIR)$(libdir)/pkgconfig/libssl.pc
- @$(ECHO) "install openssl.pc -> $(DESTDIR)$(libdir)/pkgconfig/openssl.pc"
- @cp openssl.pc $(DESTDIR)$(libdir)/pkgconfig
- @chmod 644 $(DESTDIR)$(libdir)/pkgconfig/openssl.pc
+ @$(PERL) $(SRCDIR)/util/mkdir-p.pl "$(DESTDIR)$(PKGCONFIGDIR)"
+ @for e in $(INSTALL_EXPORTERS_PKGCONFIG); do \
+ fn=`basename $$e`; \
+ $(ECHO) "install $$e -> $(DESTDIR)$(PKGCONFIGDIR)/$$fn"; \
+ cp $$e "$(DESTDIR)$(PKGCONFIGDIR)/$$fn"; \
+ chmod 644 "$(DESTDIR)$(PKGCONFIGDIR)/$$fn"; \
+ done
uninstall_dev: uninstall_runtime_libs
@$(ECHO) "*** Uninstalling development files"
- @ : {- output_off() unless grep { $_ eq "OPENSSL_USE_APPLINK" } (@{$target{defines}}, @{$config{defines}}); "" -}
+ @ : {- output_off() if $disabled{uplink}; "" -}
@$(ECHO) "$(RM) $(DESTDIR)$(INSTALLTOP)/include/openssl/applink.c"
- @$(RM) $(DESTDIR)$(INSTALLTOP)/include/openssl/applink.c
- @ : {- output_on() unless grep { $_ eq "OPENSSL_USE_APPLINK" } (@{$target{defines}}, @{$config{defines}}); "" -}
+ @$(RM) "$(DESTDIR)$(INSTALLTOP)/include/openssl/applink.c"
+ @ : {- output_on() if $disabled{uplink}; "" -}
@set -e; for i in $(SRCDIR)/include/openssl/*.h \
$(BLDDIR)/include/openssl/*.h; do \
fn=`basename $$i`; \
$(ECHO) "$(RM) $(DESTDIR)$(INSTALLTOP)/include/openssl/$$fn"; \
- $(RM) $(DESTDIR)$(INSTALLTOP)/include/openssl/$$fn; \
+ $(RM) "$(DESTDIR)$(INSTALLTOP)/include/openssl/$$fn"; \
done
- -$(RMDIR) $(DESTDIR)$(INSTALLTOP)/include/openssl
- -$(RMDIR) $(DESTDIR)$(INSTALLTOP)/include
+ -$(RMDIR) "$(DESTDIR)$(INSTALLTOP)/include/openssl"
+ -$(RMDIR) "$(DESTDIR)$(INSTALLTOP)/include"
@set -e; for l in $(INSTALL_LIBS); do \
fn=`basename $$l`; \
$(ECHO) "$(RM) $(DESTDIR)$(libdir)/$$fn"; \
- $(RM) $(DESTDIR)$(libdir)/$$fn; \
+ $(RM) "$(DESTDIR)$(libdir)/$$fn"; \
done
@ : {- output_off() if $disabled{shared}; "" -}
@set -e; for s in $(INSTALL_SHLIB_INFO); do \
s1=`echo "$$s" | cut -f1 -d";"`; \
s2=`echo "$$s" | cut -f2 -d";"`; \
- fn1=`basename $$s1`; \
- fn2=`basename $$s2`; \
+ s3=`echo "$$s" | cut -f3 -d";"`; \
+ fn1=`basename "$$s1"`; \
+ fn2=`basename "$$s2"`; \
+ fn3=`basename "$$s3"`; \
: {- output_off() if windowsdll(); "" -}; \
- $(ECHO) "$(RM) $(DESTDIR)$(libdir)/$$fn2"; \
- $(RM) $(DESTDIR)$(libdir)/$$fn2; \
- if [ "$$fn1" != "$$fn2" -a -f "$(DESTDIR)$(libdir)/$$fn1" ]; then \
- $(ECHO) "$(RM) $(DESTDIR)$(libdir)/$$fn1"; \
- $(RM) $(DESTDIR)$(libdir)/$$fn1; \
+ $(ECHO) "$(RM) $(DESTDIR)$(libdir)/$$fn1"; \
+ $(RM) "$(DESTDIR)$(libdir)/$$fn1"; \
+ if [ -n "$$fn2" ]; then \
+ $(ECHO) "$(RM) $(DESTDIR)$(libdir)/$$fn2"; \
+ $(RM) "$(DESTDIR)$(libdir)/$$fn2"; \
fi; \
: {- output_on() if windowsdll(); "" -}{- output_off() unless windowsdll(); "" -}; \
- $(ECHO) "$(RM) $(DESTDIR)$(libdir)/$$fn2"; \
- $(RM) $(DESTDIR)$(libdir)/$$fn2; \
+ if [ -n "$$fn3" ]; then \
+ $(ECHO) "$(RM) $(DESTDIR)$(libdir)/$$fn3"; \
+ $(RM) "$(DESTDIR)$(libdir)/$$fn3"; \
+ fi; \
: {- output_on() unless windowsdll(); "" -}; \
done
@ : {- output_on() if $disabled{shared}; "" -}
- $(RM) $(DESTDIR)$(libdir)/pkgconfig/libcrypto.pc
- $(RM) $(DESTDIR)$(libdir)/pkgconfig/libssl.pc
- $(RM) $(DESTDIR)$(libdir)/pkgconfig/openssl.pc
- -$(RMDIR) $(DESTDIR)$(libdir)/pkgconfig
- -$(RMDIR) $(DESTDIR)$(libdir)
+ @for e in $(INSTALL_EXPORTERS_PKGCONFIG); do \
+ fn=`basename "$$e"`; \
+ $(RM) "$(DESTDIR)$(PKGCONFIGDIR)/$$fn"; \
+ done
+ -$(RMDIR) "$(DESTDIR)$(PKGCONFIGDIR)"
+ -$(RMDIR) "$(DESTDIR)$(libdir)"
_install_modules_deps: install_runtime_libs build_modules
install_engines: _install_modules_deps
@[ -n "$(INSTALLTOP)" ] || (echo INSTALLTOP should not be empty; exit 1)
- @$(PERL) $(SRCDIR)/util/mkdir-p.pl $(DESTDIR)$(ENGINESDIR)/
+ @$(PERL) $(SRCDIR)/util/mkdir-p.pl "$(DESTDIR)$(ENGINESDIR)/"
@$(ECHO) "*** Installing engines"
@set -e; for e in dummy $(INSTALL_ENGINES); do \
if [ "$$e" = "dummy" ]; then continue; fi; \
fn=`basename $$e`; \
$(ECHO) "install $$e -> $(DESTDIR)$(ENGINESDIR)/$$fn"; \
- cp $$e $(DESTDIR)$(ENGINESDIR)/$$fn.new; \
- chmod 755 $(DESTDIR)$(ENGINESDIR)/$$fn.new; \
- mv -f $(DESTDIR)$(ENGINESDIR)/$$fn.new \
- $(DESTDIR)$(ENGINESDIR)/$$fn; \
+ cp $$e "$(DESTDIR)$(ENGINESDIR)/$$fn.new"; \
+ chmod 755 "$(DESTDIR)$(ENGINESDIR)/$$fn.new"; \
+ mv -f "$(DESTDIR)$(ENGINESDIR)/$$fn.new" \
+ "$(DESTDIR)$(ENGINESDIR)/$$fn"; \
done
uninstall_engines:
@set -e; for e in dummy $(INSTALL_ENGINES); do \
if [ "$$e" = "dummy" ]; then continue; fi; \
fn=`basename $$e`; \
- if [ "$$fn" = '{- platform->dso("ossltest") -}' ]; then \
- continue; \
- fi; \
$(ECHO) "$(RM) $(DESTDIR)$(ENGINESDIR)/$$fn"; \
- $(RM) $(DESTDIR)$(ENGINESDIR)/$$fn; \
+ $(RM) "$(DESTDIR)$(ENGINESDIR)/$$fn"; \
done
- -$(RMDIR) $(DESTDIR)$(ENGINESDIR)
+ -$(RMDIR) "$(DESTDIR)$(ENGINESDIR)"
install_modules: _install_modules_deps
@[ -n "$(INSTALLTOP)" ] || (echo INSTALLTOP should not be empty; exit 1)
- @$(PERL) $(SRCDIR)/util/mkdir-p.pl $(DESTDIR)$(MODULESDIR)/
+ @$(PERL) $(SRCDIR)/util/mkdir-p.pl "$(DESTDIR)$(MODULESDIR)/"
@$(ECHO) "*** Installing modules"
@set -e; for e in dummy $(INSTALL_MODULES); do \
if [ "$$e" = "dummy" ]; then continue; fi; \
fn=`basename $$e`; \
$(ECHO) "install $$e -> $(DESTDIR)$(MODULESDIR)/$$fn"; \
- cp $$e $(DESTDIR)$(MODULESDIR)/$$fn.new; \
- chmod 755 $(DESTDIR)$(MODULESDIR)/$$fn.new; \
- mv -f $(DESTDIR)$(MODULESDIR)/$$fn.new \
- $(DESTDIR)$(MODULESDIR)/$$fn; \
+ cp $$e "$(DESTDIR)$(MODULESDIR)/$$fn.new"; \
+ chmod 755 "$(DESTDIR)$(MODULESDIR)/$$fn.new"; \
+ mv -f "$(DESTDIR)$(MODULESDIR)/$$fn.new" \
+ "$(DESTDIR)$(MODULESDIR)/$$fn"; \
done
uninstall_modules:
@set -e; for e in dummy $(INSTALL_MODULES); do \
if [ "$$e" = "dummy" ]; then continue; fi; \
fn=`basename $$e`; \
- if [ "$$fn" = '{- platform->dso("ossltest") -}' ]; then \
- continue; \
- fi; \
$(ECHO) "$(RM) $(DESTDIR)$(MODULESDIR)/$$fn"; \
- $(RM) $(DESTDIR)$(MODULESDIR)/$$fn; \
+ $(RM) "$(DESTDIR)$(MODULESDIR)/$$fn"; \
done
- -$(RMDIR) $(DESTDIR)$(MODULESDIR)
+ -$(RMDIR) "$(DESTDIR)$(MODULESDIR)"
install_runtime: install_programs
install_runtime_libs: build_libs
@[ -n "$(INSTALLTOP)" ] || (echo INSTALLTOP should not be empty; exit 1)
@ : {- output_off() if windowsdll(); "" -}
- @$(PERL) $(SRCDIR)/util/mkdir-p.pl $(DESTDIR)$(libdir)
+ @$(PERL) $(SRCDIR)/util/mkdir-p.pl "$(DESTDIR)$(libdir)"
@ : {- output_on() if windowsdll(); output_off() unless windowsdll(); "" -}
- @$(PERL) $(SRCDIR)/util/mkdir-p.pl $(DESTDIR)$(INSTALLTOP)/bin
+ @$(PERL) $(SRCDIR)/util/mkdir-p.pl "$(DESTDIR)$(bindir)/"
@ : {- output_on() unless windowsdll(); "" -}
@$(ECHO) "*** Installing runtime libraries"
@set -e; for s in dummy $(INSTALL_SHLIBS); do \
if [ "$$s" = "dummy" ]; then continue; fi; \
fn=`basename $$s`; \
: {- output_off() unless windowsdll(); "" -}; \
- $(ECHO) "install $$s -> $(DESTDIR)$(INSTALLTOP)/bin/$$fn"; \
- cp $$s $(DESTDIR)$(INSTALLTOP)/bin/$$fn.new; \
- chmod 755 $(DESTDIR)$(INSTALLTOP)/bin/$$fn.new; \
- mv -f $(DESTDIR)$(INSTALLTOP)/bin/$$fn.new \
- $(DESTDIR)$(INSTALLTOP)/bin/$$fn; \
+ $(ECHO) "install $$s -> $(DESTDIR)$(bindir)/$$fn"; \
+ cp $$s "$(DESTDIR)$(bindir)/$$fn.new"; \
+ chmod 755 "$(DESTDIR)$(bindir)/$$fn.new"; \
+ mv -f "$(DESTDIR)$(bindir)/$$fn.new" \
+ "$(DESTDIR)$(bindir)/$$fn"; \
: {- output_on() unless windowsdll(); "" -}{- output_off() if windowsdll(); "" -}; \
$(ECHO) "install $$s -> $(DESTDIR)$(libdir)/$$fn"; \
- cp $$s $(DESTDIR)$(libdir)/$$fn.new; \
- chmod 755 $(DESTDIR)$(libdir)/$$fn.new; \
- mv -f $(DESTDIR)$(libdir)/$$fn.new \
- $(DESTDIR)$(libdir)/$$fn; \
+ cp $$s "$(DESTDIR)$(libdir)/$$fn.new"; \
+ chmod 755 "$(DESTDIR)$(libdir)/$$fn.new"; \
+ mv -f "$(DESTDIR)$(libdir)/$$fn.new" \
+ "$(DESTDIR)$(libdir)/$$fn"; \
: {- output_on() if windowsdll(); "" -}; \
done
install_programs: install_runtime_libs build_programs
@[ -n "$(INSTALLTOP)" ] || (echo INSTALLTOP should not be empty; exit 1)
- @$(PERL) $(SRCDIR)/util/mkdir-p.pl $(DESTDIR)$(INSTALLTOP)/bin
+ @$(PERL) $(SRCDIR)/util/mkdir-p.pl "$(DESTDIR)$(bindir)"
@$(ECHO) "*** Installing runtime programs"
@set -e; for x in dummy $(INSTALL_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; \
- chmod 755 $(DESTDIR)$(INSTALLTOP)/bin/$$fn.new; \
- mv -f $(DESTDIR)$(INSTALLTOP)/bin/$$fn.new \
- $(DESTDIR)$(INSTALLTOP)/bin/$$fn; \
+ $(ECHO) "install $$x -> $(DESTDIR)$(bindir)/$$fn"; \
+ cp $$x "$(DESTDIR)$(bindir)/$$fn.new"; \
+ chmod 755 "$(DESTDIR)$(bindir)/$$fn.new"; \
+ mv -f "$(DESTDIR)$(bindir)/$$fn.new" \
+ "$(DESTDIR)$(bindir)/$$fn"; \
done
@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; \
- chmod 755 $(DESTDIR)$(INSTALLTOP)/bin/$$fn.new; \
- mv -f $(DESTDIR)$(INSTALLTOP)/bin/$$fn.new \
- $(DESTDIR)$(INSTALLTOP)/bin/$$fn; \
+ $(ECHO) "install $$x -> $(DESTDIR)$(bindir)/$$fn"; \
+ cp $$x "$(DESTDIR)$(bindir)/$$fn.new"; \
+ chmod 755 "$(DESTDIR)$(bindir)/$$fn.new"; \
+ mv -f "$(DESTDIR)$(bindir)/$$fn.new" \
+ "$(DESTDIR)$(bindir)/$$fn"; \
done
uninstall_runtime: uninstall_programs uninstall_runtime_libs
do \
if [ "$$x" = "dummy" ]; then continue; fi; \
fn=`basename $$x`; \
- $(ECHO) "$(RM) $(DESTDIR)$(INSTALLTOP)/bin/$$fn"; \
- $(RM) $(DESTDIR)$(INSTALLTOP)/bin/$$fn; \
+ $(ECHO) "$(RM) $(DESTDIR)$(bindir)/$$fn"; \
+ $(RM) "$(DESTDIR)$(bindir)/$$fn"; \
done;
@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; \
+ $(ECHO) "$(RM) $(DESTDIR)$(bindir)/$$fn"; \
+ $(RM) "$(DESTDIR)$(bindir)/$$fn"; \
done
- -$(RMDIR) $(DESTDIR)$(INSTALLTOP)/bin
+ -$(RMDIR) "$(DESTDIR)$(bindir)"
uninstall_runtime_libs:
@$(ECHO) "*** Uninstalling runtime libraries"
@set -e; for s in dummy $(INSTALL_SHLIBS); do \
if [ "$$s" = "dummy" ]; then continue; fi; \
fn=`basename $$s`; \
- $(ECHO) "$(RM) $(DESTDIR)$(INSTALLTOP)/bin/$$fn"; \
- $(RM) $(DESTDIR)$(INSTALLTOP)/bin/$$fn; \
+ $(ECHO) "$(RM) $(DESTDIR)$(bindir)/$$fn"; \
+ $(RM) "$(DESTDIR)$(bindir)/$$fn"; \
done
@ : {- output_on() unless windowsdll(); "" -}
install_man_docs: build_man_docs
@[ -n "$(INSTALLTOP)" ] || (echo INSTALLTOP should not be empty; exit 1)
- @$(PERL) $(SRCDIR)/util/mkdir-p.pl $(DESTDIR)$(MANDIR)/man1
- @$(PERL) $(SRCDIR)/util/mkdir-p.pl $(DESTDIR)$(MANDIR)/man3
- @$(PERL) $(SRCDIR)/util/mkdir-p.pl $(DESTDIR)$(MANDIR)/man5
- @$(PERL) $(SRCDIR)/util/mkdir-p.pl $(DESTDIR)$(MANDIR)/man7
+ @$(PERL) $(SRCDIR)/util/mkdir-p.pl "$(DESTDIR)$(MANDIR)/man1"
+ @$(PERL) $(SRCDIR)/util/mkdir-p.pl "$(DESTDIR)$(MANDIR)/man3"
+ @$(PERL) $(SRCDIR)/util/mkdir-p.pl "$(DESTDIR)$(MANDIR)/man5"
+ @$(PERL) $(SRCDIR)/util/mkdir-p.pl "$(DESTDIR)$(MANDIR)/man7"
@$(ECHO) "*** Installing manpages"
@set -e; for x in dummy $(MANDOCS1); do \
if [ "$$x" = "dummy" ]; then continue; fi; \
fn=`basename $$x`; \
$(ECHO) "install $$x -> $(DESTDIR)$(MANDIR)/man1/$${fn}$(MANSUFFIX)"; \
- cp $$x $(DESTDIR)$(MANDIR)/man1/$${fn}$(MANSUFFIX); \
- chmod 644 $(DESTDIR)$(MANDIR)/man1/$${fn}$(MANSUFFIX); \
+ cp $$x "$(DESTDIR)$(MANDIR)/man1/$${fn}$(MANSUFFIX)"; \
+ chmod 644 "$(DESTDIR)$(MANDIR)/man1/$${fn}$(MANSUFFIX)"; \
+ $(PERL) $(SRCDIR)/util/write-man-symlinks install $(SRCDIR)/doc/man1 $(BLDDIR)/doc/man1 $${fn}$(MANSUFFIX) "$(DESTDIR)$(MANDIR)/man1"; \
done
@set -e; for x in dummy $(MANDOCS3); do \
if [ "$$x" = "dummy" ]; then continue; fi; \
fn=`basename $$x`; \
$(ECHO) "install $$x -> $(DESTDIR)$(MANDIR)/man3/$${fn}$(MANSUFFIX)"; \
- cp $$x $(DESTDIR)$(MANDIR)/man3/$${fn}$(MANSUFFIX); \
- chmod 644 $(DESTDIR)$(MANDIR)/man3/$${fn}$(MANSUFFIX); \
+ cp $$x "$(DESTDIR)$(MANDIR)/man3/$${fn}$(MANSUFFIX)"; \
+ chmod 644 "$(DESTDIR)$(MANDIR)/man3/$${fn}$(MANSUFFIX)"; \
+ $(PERL) $(SRCDIR)/util/write-man-symlinks install $(SRCDIR)/doc/man3 $(BLDDIR)/doc/man3 $${fn}$(MANSUFFIX) "$(DESTDIR)$(MANDIR)/man3"; \
done
@set -e; for x in dummy $(MANDOCS5); do \
if [ "$$x" = "dummy" ]; then continue; fi; \
fn=`basename $$x`; \
$(ECHO) "install $$x -> $(DESTDIR)$(MANDIR)/man5/$${fn}$(MANSUFFIX)"; \
- cp $$x $(DESTDIR)$(MANDIR)/man5/$${fn}$(MANSUFFIX); \
- chmod 644 $(DESTDIR)$(MANDIR)/man5/$${fn}$(MANSUFFIX); \
+ cp $$x "$(DESTDIR)$(MANDIR)/man5/$${fn}$(MANSUFFIX)"; \
+ chmod 644 "$(DESTDIR)$(MANDIR)/man5/$${fn}$(MANSUFFIX)"; \
+ $(PERL) $(SRCDIR)/util/write-man-symlinks install $(SRCDIR)/doc/man5 $(BLDDIR)/doc/man5 $${fn}$(MANSUFFIX) "$(DESTDIR)$(MANDIR)/man5"; \
done
@set -e; for x in dummy $(MANDOCS7); do \
if [ "$$x" = "dummy" ]; then continue; fi; \
fn=`basename $$x`; \
$(ECHO) "install $$x -> $(DESTDIR)$(MANDIR)/man7/$${fn}$(MANSUFFIX)"; \
- cp $$x $(DESTDIR)$(MANDIR)/man7/$${fn}$(MANSUFFIX); \
- chmod 644 $(DESTDIR)$(MANDIR)/man7/$${fn}$(MANSUFFIX); \
+ cp $$x "$(DESTDIR)$(MANDIR)/man7/$${fn}$(MANSUFFIX)"; \
+ chmod 644 "$(DESTDIR)$(MANDIR)/man7/$${fn}$(MANSUFFIX)"; \
+ $(PERL) $(SRCDIR)/util/write-man-symlinks install $(SRCDIR)/doc/man7 $(BLDDIR)/doc/man7 $${fn}$(MANSUFFIX) "$(DESTDIR)$(MANDIR)/man7"; \
done
-uninstall_man_docs:
+uninstall_man_docs: build_man_docs
@$(ECHO) "*** Uninstalling manpages"
@set -e; for x in dummy $(MANDOCS1); do \
if [ "$$x" = "dummy" ]; then continue; fi; \
fn=`basename $$x`; \
$(ECHO) "$(RM) $(DESTDIR)$(MANDIR)/man1/$${fn}$(MANSUFFIX)"; \
- $(RM) $(DESTDIR)$(MANDIR)/man1/$${fn}$(MANSUFFIX); \
+ $(RM) "$(DESTDIR)$(MANDIR)/man1/$${fn}$(MANSUFFIX)"; \
+ $(PERL) $(SRCDIR)/util/write-man-symlinks uninstall $(SRCDIR)/doc/man1 $(BLDDIR)/doc/man1 $${fn}$(MANSUFFIX) "$(DESTDIR)$(MANDIR)/man1"; \
done
@set -e; for x in dummy $(MANDOCS3); do \
if [ "$$x" = "dummy" ]; then continue; fi; \
fn=`basename $$x`; \
$(ECHO) "$(RM) $(DESTDIR)$(MANDIR)/man3/$${fn}$(MANSUFFIX)"; \
- $(RM) $(DESTDIR)$(MANDIR)/man3/$${fn}$(MANSUFFIX); \
+ $(RM) "$(DESTDIR)$(MANDIR)/man3/$${fn}$(MANSUFFIX)"; \
+ $(PERL) $(SRCDIR)/util/write-man-symlinks uninstall $(SRCDIR)/doc/man3 $(BLDDIR)/doc/man3 $${fn}$(MANSUFFIX) "$(DESTDIR)$(MANDIR)/man3"; \
done
@set -e; for x in dummy $(MANDOCS5); do \
if [ "$$x" = "dummy" ]; then continue; fi; \
fn=`basename $$x`; \
$(ECHO) "$(RM) $(DESTDIR)$(MANDIR)/man5/$${fn}$(MANSUFFIX)"; \
- $(RM) $(DESTDIR)$(MANDIR)/man5/$${fn}$(MANSUFFIX); \
+ $(RM) "$(DESTDIR)$(MANDIR)/man5/$${fn}$(MANSUFFIX)"; \
+ $(PERL) $(SRCDIR)/util/write-man-symlinks uninstall $(SRCDIR)/doc/man5 $(BLDDIR)/doc/man5 $${fn}$(MANSUFFIX) "$(DESTDIR)$(MANDIR)/man5"; \
done
@set -e; for x in dummy $(MANDOCS7); do \
if [ "$$x" = "dummy" ]; then continue; fi; \
fn=`basename $$x`; \
$(ECHO) "$(RM) $(DESTDIR)$(MANDIR)/man7/$${fn}$(MANSUFFIX)"; \
- $(RM) $(DESTDIR)$(MANDIR)/man7/$${fn}$(MANSUFFIX); \
+ $(RM) "$(DESTDIR)$(MANDIR)/man7/$${fn}$(MANSUFFIX)"; \
+ $(PERL) $(SRCDIR)/util/write-man-symlinks uninstall $(SRCDIR)/doc/man7 $(BLDDIR)/doc/man7 $${fn}$(MANSUFFIX) "$(DESTDIR)$(MANDIR)/man7"; \
done
-install_html_docs: build_html_docs
+install_html_docs: install_image_docs build_html_docs
@[ -n "$(INSTALLTOP)" ] || (echo INSTALLTOP should not be empty; exit 1)
- @$(PERL) $(SRCDIR)/util/mkdir-p.pl $(DESTDIR)$(HTMLDIR)/man1
- @$(PERL) $(SRCDIR)/util/mkdir-p.pl $(DESTDIR)$(HTMLDIR)/man3
- @$(PERL) $(SRCDIR)/util/mkdir-p.pl $(DESTDIR)$(HTMLDIR)/man5
- @$(PERL) $(SRCDIR)/util/mkdir-p.pl $(DESTDIR)$(HTMLDIR)/man7
+ @$(PERL) $(SRCDIR)/util/mkdir-p.pl "$(DESTDIR)$(HTMLDIR)/man1"
+ @$(PERL) $(SRCDIR)/util/mkdir-p.pl "$(DESTDIR)$(HTMLDIR)/man3"
+ @$(PERL) $(SRCDIR)/util/mkdir-p.pl "$(DESTDIR)$(HTMLDIR)/man5"
+ @$(PERL) $(SRCDIR)/util/mkdir-p.pl "$(DESTDIR)$(HTMLDIR)/man7"
@$(ECHO) "*** Installing HTML manpages"
@set -e; for x in dummy $(HTMLDOCS1); do \
if [ "$$x" = "dummy" ]; then continue; fi; \
fn=`basename $$x`; \
$(ECHO) "install $$x -> $(DESTDIR)$(HTMLDIR)/man1/$$fn"; \
- cp $$x $(DESTDIR)$(HTMLDIR)/man1/$$fn; \
- chmod 644 $(DESTDIR)$(HTMLDIR)/man1/$$fn; \
+ cp $$x "$(DESTDIR)$(HTMLDIR)/man1/$$fn"; \
+ chmod 644 "$(DESTDIR)$(HTMLDIR)/man1/$$fn"; \
done
@set -e; for x in dummy $(HTMLDOCS3); do \
if [ "$$x" = "dummy" ]; then continue; fi; \
fn=`basename $$x`; \
$(ECHO) "install $$x -> $(DESTDIR)$(HTMLDIR)/man3/$$fn"; \
- cp $$x $(DESTDIR)$(HTMLDIR)/man3/$$fn; \
- chmod 644 $(DESTDIR)$(HTMLDIR)/man3/$$fn; \
+ cp $$x "$(DESTDIR)$(HTMLDIR)/man3/$$fn"; \
+ chmod 644 "$(DESTDIR)$(HTMLDIR)/man3/$$fn"; \
done
@set -e; for x in dummy $(HTMLDOCS5); do \
if [ "$$x" = "dummy" ]; then continue; fi; \
fn=`basename $$x`; \
$(ECHO) "install $$x -> $(DESTDIR)$(HTMLDIR)/man5/$$fn"; \
- cp $$x $(DESTDIR)$(HTMLDIR)/man5/$$fn; \
- chmod 644 $(DESTDIR)$(HTMLDIR)/man5/$$fn; \
+ cp $$x "$(DESTDIR)$(HTMLDIR)/man5/$$fn"; \
+ chmod 644 "$(DESTDIR)$(HTMLDIR)/man5/$$fn"; \
done
@set -e; for x in dummy $(HTMLDOCS7); do \
if [ "$$x" = "dummy" ]; then continue; fi; \
fn=`basename $$x`; \
$(ECHO) "install $$x -> $(DESTDIR)$(HTMLDIR)/man7/$$fn"; \
- cp $$x $(DESTDIR)$(HTMLDIR)/man7/$$fn; \
- chmod 644 $(DESTDIR)$(HTMLDIR)/man7/$$fn; \
+ cp $$x "$(DESTDIR)$(HTMLDIR)/man7/$$fn"; \
+ chmod 644 "$(DESTDIR)$(HTMLDIR)/man7/$$fn"; \
done
-uninstall_html_docs:
+uninstall_html_docs: uninstall_image_docs
@$(ECHO) "*** Uninstalling HTML manpages"
@set -e; for x in dummy $(HTMLDOCS1); do \
if [ "$$x" = "dummy" ]; then continue; fi; \
fn=`basename $$x`; \
$(ECHO) "$(RM) $(DESTDIR)$(HTMLDIR)/man1/$$fn"; \
- $(RM) $(DESTDIR)$(HTMLDIR)/man1/$$fn; \
+ $(RM) "$(DESTDIR)$(HTMLDIR)/man1/$$fn"; \
done
@set -e; for x in dummy $(HTMLDOCS3); do \
if [ "$$x" = "dummy" ]; then continue; fi; \
fn=`basename $$x`; \
$(ECHO) "$(RM) $(DESTDIR)$(HTMLDIR)/man3/$$fn"; \
- $(RM) $(DESTDIR)$(HTMLDIR)/man3/$$fn; \
+ $(RM) "$(DESTDIR)$(HTMLDIR)/man3/$$fn"; \
done
@set -e; for x in dummy $(HTMLDOCS5); do \
if [ "$$x" = "dummy" ]; then continue; fi; \
fn=`basename $$x`; \
$(ECHO) "$(RM) $(DESTDIR)$(HTMLDIR)/man5/$$fn"; \
- $(RM) $(DESTDIR)$(HTMLDIR)/man5/$$fn; \
+ $(RM) "$(DESTDIR)$(HTMLDIR)/man5/$$fn"; \
done
@set -e; for x in dummy $(HTMLDOCS7); do \
if [ "$$x" = "dummy" ]; then continue; fi; \
fn=`basename $$x`; \
$(ECHO) "$(RM) $(DESTDIR)$(HTMLDIR)/man7/$$fn"; \
- $(RM) $(DESTDIR)$(HTMLDIR)/man7/$$fn; \
+ $(RM) "$(DESTDIR)$(HTMLDIR)/man7/$$fn"; \
+ done
+
+install_image_docs:
+ @$(PERL) $(SRCDIR)/util/mkdir-p.pl "$(DESTDIR)$(HTMLDIR)/man7/img"
+ @set -e; for x in dummy $(IMAGEDOCS7); do \
+ if [ "$$x" = "dummy" ]; then continue; fi; \
+ fn=`basename $$x`; \
+ $(ECHO) "install $$x -> $(DESTDIR)$(HTMLDIR)/man7/img/$$fn"; \
+ cp $(SRCDIR)/$$x "$(DESTDIR)$(HTMLDIR)/man7/img/$$fn"; \
+ chmod 644 "$(DESTDIR)$(HTMLDIR)/man7/img/$$fn"; \
+ done
+
+uninstall_image_docs:
+ @set -e; for x in dummy $(IMAGEDOCS7); do \
+ if [ "$$x" = "dummy" ]; then continue; fi; \
+ fn=`basename $$x`; \
+ $(ECHO) "$(RM) $(DESTDIR)$(HTMLDIR)/man7/img/$$fn"; \
+ $(RM) "$(DESTDIR)$(HTMLDIR)/man7/img/$$fn"; \
done
# Developer targets (note: these are only available on Unix) #########
+##@ Code maintenance
-update: generate errors ordinals
+# It's important that generate_buildinfo comes after ordinals, as ordinals
+# is sensitive to build.info changes.
+update: generate errors ordinals generate_buildinfo ## Update errors, ordinals and build info
+.PHONY: generate generate_apps generate_crypto_bn generate_crypto_objects \
+ generate_crypto_conf generate_crypto_asn1 generate_fuzz_oids
generate: generate_apps generate_crypto_bn generate_crypto_objects \
generate_crypto_conf generate_crypto_asn1 generate_fuzz_oids
-.PHONY: doc-nits cmd-nits md-nits
-doc-nits: build_generated
- $(PERL) $(SRCDIR)/util/find-doc-nits -n -l -e
+.PHONY: generate_buildinfo generate_doc_buildinfo
+generate_buildinfo: generate_doc_buildinfo
-cmd-nits: build_generated apps/openssl
- $(PERL) $(SRCDIR)/util/find-doc-nits -c
+.PHONY: doc-nits md-nits
+doc-nits: build_generated_pods ## Evaluate OpenSSL documentation
+ $(PERL) $(SRCDIR)/util/find-doc-nits -c -n -l -e
# This uses "mdl", the markdownlint application, which is written in ruby.
# The source is at https://github.com/markdownlint/markdownlint
# Another option is at https://snapcraft.io/install/mdl/debian
# Finally, there's a Node.js version, which we haven't tried, that
# can be found at https://github.com/DavidAnson/markdownlint
-md-nits:
- mdl -s util/markdownlint.rb . NOTES-Windows.txt
+md-nits: ## Evaluate markdown files via "mdl"
+ mdl -s $(SRCDIR)/util/markdownlint.rb .
# Test coverage is a good idea for the future
#coverage: $(PROGRAMS) $(TESTPROGRAMS)
# ...
-lint:
- lint -DLINT $(INCLUDES) $(SRCS)
+.PHONY: lint
+lint: ## Evaluate C code via "splint"
+ @( cd $(SRCDIR); \
+ echo splint -DLINT -posixlib -preproc -D__gnuc_va_list=void \
+ -I. -Iinclude -Iapps/include $(CRYPTOHEADERS) $(SSLHEADERS) $(SRCS) )
+
+.PHONY: check-format
+check-format: ## Evaluate C code according to OpenSSL coding standards
+ ( cd $(SRCDIR); $(PERL) util/check-format.pl \
+ $(SRCS) \$(CRYPTOHEADERS) $(SSLHEADERS) )
generate_apps:
( cd $(SRCDIR); $(PERL) VMS/VMSify-conf.pl \
crypto/objects/obj_mac.num \
crypto/objects/obj_xref.txt \
> crypto/objects/obj_xref.h )
- ( cd $(SRCDIR); cat crypto/objects/obj_compat.h >> include/openssl/obj_mac.h )
+ ( cd $(SRCDIR); sed -e '1,8d' crypto/objects/obj_compat.h >> include/openssl/obj_mac.h )
generate_crypto_conf:
( cd $(SRCDIR); $(PERL) crypto/conf/keysets.pl \
crypto/objects/obj_dat.h \
> fuzz/oids.txt )
+generate_doc_buildinfo:
+ ( $(PERL) -I$(BLDDIR) -Mconfigdata \
+ $(SRCDIR)/util/dofile.pl -o Makefile \
+ $(SRCDIR)/doc/build.info.in \
+ > $(SRCDIR)/doc/build.info.new; \
+ if ( test -e $(SRCDIR)/doc/build.info \
+ && cmp $(SRCDIR)/doc/build.info.new $(SRCDIR)/doc/build.info \
+ > /dev/null ); \
+ then \
+ rm $(SRCDIR)/doc/build.info.new; \
+ else \
+ mv $(SRCDIR)/doc/build.info.new $(SRCDIR)/doc/build.info; \
+ fi )
+
+generate_fips_sources: providers/fips.module.sources.new
+providers/fips.module.sources.new: configdata.pm
+ rm -rf sources-tmp
+ mkdir sources-tmp
+ ( \
+ srcdir=`cd $(SRCDIR); pwd`; \
+ cd sources-tmp \
+ && $$srcdir/Configure --banner=Configured enable-fips -O0 \
+ && ./configdata.pm --query 'get_sources("providers/fips")' > sources1 \
+ && $(MAKE) -sj 4 build_generated providers/fips.so \
+ && find . -name '*.d' | xargs cat > dep1 \
+ && $(MAKE) distclean \
+ && $$srcdir/Configure --banner=Configured enable-fips no-asm -O0 \
+ && ./configdata.pm --query 'get_sources("providers/fips")' > sources2 \
+ && $(MAKE) -sj 4 build_generated providers/fips.so \
+ && find . -name '*.d' | xargs cat > dep2 \
+ && cat sources1 sources2 \
+ | grep -v ' : \\$$' | grep -v util/providers.num \
+ | sed -e 's/^ *//' -e 's/ *\\$$//' \
+ | sort | uniq > sources \
+ && cat dep1 dep2 \
+ | $(PERL) -p -e 's/\\\n//' \
+ | sed -e 's/^.*: *//' -e 's/ */ /g' \
+ | fgrep -f sources \
+ | tr ' ' '\n' \
+ | sort | uniq > deps.raw \
+ && cat deps.raw \
+ | xargs ./configdata.pm --query 'get_sources(@ARGV)' \
+ | $(PERL) -p -e 's/\\\n//' \
+ | sed -e 's/\./\\\./g' -e 's/ : */:/' -e 's/^/s:/' -e 's/$$/:/' \
+ > deps.sed \
+ && cat deps.raw | sed -f deps.sed > deps \
+ )
+ ( \
+ cat sources-tmp/sources sources-tmp/deps \
+ | $(PERL) -p -e 's:^ *\Q../\E:: ;' \
+ -e 's:^\Q$(SRCDIR)/\E:: if "$(SRCDIR)" ne "." ;' \
+ -e 'my $$x; do { $$x = $$_; s:(^|/)((?!\Q../\E)[^/]*/)\Q..\E($$|/):$$1: } while ($$x ne $$_) ;' ; \
+ cd $(SRCDIR); \
+ for x in crypto/bn/asm/*.pl crypto/bn/asm/*.S \
+ crypto/aes/asm/*.pl crypto/aes/asm/*.S \
+ crypto/ec/asm/*.pl \
+ crypto/modes/asm/*.pl \
+ crypto/sha/asm/*.pl \
+ crypto/*cpuid.pl crypto/*cpuid.S \
+ crypto/*cap.c; do \
+ echo "$$x"; \
+ done \
+ ) | grep -v sm2p256 | sort | uniq > providers/fips.module.sources.new
+ rm -rf sources-tmp
+
# Set to -force to force a rebuild
ERROR_REBUILD=
errors:
include/openssl/sslerr.h
include/openssl/tls1.h
include/openssl/dtls1.h
- include/openssl/srtp.h );
+ include/openssl/srtp.h
+ include/openssl/quic.h
+ include/openssl/sslerr_legacy.h );
my @cryptoheaders_tmpl =
qw( include/internal/dso.h
include/internal/o_dir.h
include/internal/asn1.h
include/internal/sslconf.h );
my @cryptoskipheaders = ( @sslheaders_tmpl,
- qw( include/openssl/conf_api.h
+ qw( include/openssl/asn1_mac.h
+ include/openssl/conf_api.h
include/openssl/ebcdic.h
include/openssl/opensslconf.h
include/openssl/symhacks.h ) );
}
"";
-}
+SRCS={-
+sub uniq { my %seen; grep !$seen{$_}++, @_; }
+sub flat(@) { return map { ref eq 'ARRAY' ? @$_ : $_ } @_; }
+join(" \\\n" . ' ' x 5, fill_lines(" ", $COLUMNS - 5,
+ uniq(grep /\.(c|cc|cpp)$/,
+ flat (map { $unified_info{sources}->{$_} }
+ (sort keys %{$unified_info{sources}})))))
+-}
CRYPTOHEADERS={- join(" \\\n" . ' ' x 14,
fill_lines(" ", $COLUMNS - 14, sort keys %cryptoheaders)) -}
SSLHEADERS={- join(" \\\n" . ' ' x 11,
fill_lines(" ", $COLUMNS - 11, sort keys %sslheaders)) -}
-ordinals: build_generated
- $(PERL) $(SRCDIR)/util/mknum.pl --version $(VERSION) --no-warnings \
+
+renumber: build_generated
+ $(PERL) $(SRCDIR)/util/mknum.pl --version $(VERSION_NUMBER) --no-warnings \
--ordinals $(SRCDIR)/util/libcrypto.num \
--symhacks $(SRCDIR)/include/openssl/symhacks.h \
+ --renumber \
$(CRYPTOHEADERS)
- $(PERL) $(SRCDIR)/util/mknum.pl --version $(VERSION) --no-warnings \
+ $(PERL) $(SRCDIR)/util/mknum.pl --version $(VERSION_NUMBER) --no-warnings \
--ordinals $(SRCDIR)/util/libssl.num \
--symhacks $(SRCDIR)/include/openssl/symhacks.h \
+ --renumber \
$(SSLHEADERS)
+$(SRCDIR)/util/libcrypto.num: $(CRYPTOHEADERS) $(SRCDIR)/include/openssl/symhacks.h
+ $(PERL) $(SRCDIR)/util/mknum.pl --version $(VERSION_NUMBER) --no-warnings \
+ --ordinals $(SRCDIR)/util/libcrypto.num \
+ --symhacks $(SRCDIR)/include/openssl/symhacks.h \
+ $(CRYPTOHEADERS)
+$(SRCDIR)/util/libssl.num: $(SSLHEADERS) $(SRCDIR)/include/openssl/symhacks.h
+ $(PERL) $(SRCDIR)/util/mknum.pl --version $(VERSION_NUMBER) --no-warnings \
+ --ordinals $(SRCDIR)/util/libssl.num \
+ --symhacks $(SRCDIR)/include/openssl/symhacks.h \
+ $(SSLHEADERS)
+.PHONY: ordinals
+ordinals: build_generated $(SRCDIR)/util/libcrypto.num $(SRCDIR)/util/libssl.num
+
test_ordinals:
- ( cd test; \
- SRCTOP=../$(SRCDIR) \
- BLDTOP=../$(BLDDIR) \
- $(PERL) ../$(SRCDIR)/test/run_tests.pl test_ordinals )
+ $(MAKE) run_tests TESTS=test_ordinals
tags TAGS: FORCE
rm -f TAGS tags
- -ctags -R .
+ -( cd $(SRCDIR); util/ctags.sh )
-etags `find . -name '*.[ch]' -o -name '*.pm'`
+providers/fips.checksum.new: providers/fips.module.sources.new
+ @which unifdef > /dev/null || \
+ ( echo >&2 "ERROR: unifdef not in your \$$PATH, FIPS checksums not calculated"; \
+ false )
+ ( sources=`pwd`/providers/fips.module.sources.new; \
+ cd $(SRCDIR) \
+ && cat $$sources \
+ | xargs ./util/fips-checksums.sh ) \
+ > providers/fips-sources.checksums.new \
+ && sha256sum providers/fips-sources.checksums.new \
+ | sed -e 's|\.new||' > providers/fips.checksum.new
+
+fips-checksums: providers/fips.checksum.new
+
+$(SRCDIR)/providers/fips.checksum: providers/fips.checksum.new
+ cp -p providers/fips.module.sources.new $(SRCDIR)/providers/fips.module.sources
+ cp -p providers/fips-sources.checksums.new $(SRCDIR)/providers/fips-sources.checksums
+ cp -p providers/fips.checksum.new $(SRCDIR)/providers/fips.checksum
+
+update-fips-checksums: $(SRCDIR)/providers/fips.checksum
+
+diff-fips-checksums: fips-checksums
+ diff -u $(SRCDIR)/providers/fips.module.sources providers/fips.module.sources.new
+ diff -u $(SRCDIR)/providers/fips-sources.checksums providers/fips-sources.checksums.new
+ diff -u $(SRCDIR)/providers/fips.checksum providers/fips.checksum.new
+
# Release targets (note: only available on Unix) #####################
tar:
# Helper targets #####################################################
-link-utils: $(BLDDIR)/util/opensslwrap.sh $(BLDDIR)/util/wrap.pl
+link-utils: $(BLDDIR)/util/opensslwrap.sh $(BLDDIR)/apps/openssl.cnf
-$(BLDDIR)/util/opensslwrap.sh $(BLDDIR)/util/wrap.pl: configdata.pm
+$(BLDDIR)/util/opensslwrap.sh: Makefile
@if [ "$(SRCDIR)" != "$(BLDDIR)" ]; then \
mkdir -p "$(BLDDIR)/util"; \
ln -sf "../$(SRCDIR)/util/`basename "$@"`" "$(BLDDIR)/util"; \
fi
+$(BLDDIR)/apps/openssl.cnf: Makefile
+ @if [ "$(SRCDIR)" != "$(BLDDIR)" ]; then \
+ mkdir -p "$(BLDDIR)/apps"; \
+ ln -sf "../$(SRCDIR)/apps/`basename "$@"`" "$(BLDDIR)/apps"; \
+ fi
+
FORCE:
# Building targets ###################################################
-libcrypto.pc libssl.pc openssl.pc: configdata.pm $(LIBS) {- join(" ",map { platform->sharedlib_simple($_) // () } @{$unified_info{libraries}}) -}
-libcrypto.pc:
- @ ( echo 'prefix=$(INSTALLTOP)'; \
- echo 'exec_prefix=$${prefix}'; \
- if [ -n "$(LIBDIR)" ]; then \
- echo 'libdir=$${exec_prefix}/$(LIBDIR)'; \
- else \
- echo 'libdir=$(libdir)'; \
- fi; \
- echo 'includedir=$${prefix}/include'; \
- echo 'enginesdir=$${libdir}/engines-{- $sover_dirname -}'; \
- echo ''; \
- echo 'Name: OpenSSL-libcrypto'; \
- echo 'Description: OpenSSL cryptography library'; \
- echo 'Version: '$(VERSION); \
- echo 'Libs: -L$${libdir} -lcrypto'; \
- echo 'Libs.private: $(LIB_EX_LIBS)'; \
- echo 'Cflags: -I$${includedir}' ) > libcrypto.pc
-
-libssl.pc:
- @ ( echo 'prefix=$(INSTALLTOP)'; \
- echo 'exec_prefix=$${prefix}'; \
- if [ -n "$(LIBDIR)" ]; then \
- echo 'libdir=$${exec_prefix}/$(LIBDIR)'; \
- else \
- echo 'libdir=$(libdir)'; \
- fi; \
- echo 'includedir=$${prefix}/include'; \
- echo ''; \
- echo 'Name: OpenSSL-libssl'; \
- echo 'Description: Secure Sockets Layer and cryptography libraries'; \
- echo 'Version: '$(VERSION); \
- echo 'Requires.private: libcrypto'; \
- echo 'Libs: -L$${libdir} -lssl'; \
- echo 'Cflags: -I$${includedir}' ) > libssl.pc
-
-openssl.pc:
- @ ( echo 'prefix=$(INSTALLTOP)'; \
- echo 'exec_prefix=$${prefix}'; \
- if [ -n "$(LIBDIR)" ]; then \
- echo 'libdir=$${exec_prefix}/$(LIBDIR)'; \
- else \
- echo 'libdir=$(libdir)'; \
- fi; \
- echo 'includedir=$${prefix}/include'; \
- echo ''; \
- echo 'Name: OpenSSL'; \
- echo 'Description: Secure Sockets Layer and cryptography libraries and tools'; \
- echo 'Version: '$(VERSION); \
- echo 'Requires: libssl libcrypto' ) > openssl.pc
+Makefile: configdata.pm \
+ {- join(" \\\n" . ' ' x 10,
+ fill_lines(" ", $COLUMNS - 10,
+ @{$config{build_file_templates}})) -}
+ @echo "Detected changed: $?"
+ $(PERL) configdata.pm
+ @echo "**************************************************"
+ @echo "*** ***"
+ @echo "*** Please run the same make command again ***"
+ @echo "*** ***"
+ @echo "**************************************************"
+ @false
configdata.pm: $(SRCDIR)/Configure $(SRCDIR)/config \
{- join(" \\\n" . ' ' x 15,
fill_lines(" ", $COLUMNS - 15,
- @{$config{build_file_templates}},
@{$config{build_infos}},
@{$config{conf_files}})) -}
@echo "Detected changed: $?"
use File::Basename;
use File::Spec::Functions qw/:DEFAULT abs2rel rel2abs/;
+ # Helper function to convert dependencies in platform agnostic form to
+ # dependencies in platform form.
+ sub compute_platform_depends {
+ map { my $x = $_;
+
+ grep { $x eq $_ } @{$unified_info{programs}} and platform->bin($x)
+ or grep { $x eq $_ } @{$unified_info{modules}} and platform->dso($x)
+ or grep { $x eq $_ } @{$unified_info{libraries}} and platform->lib($x)
+ or platform->convertext($x); } @_;
+ }
+
# Helper function to figure out dependencies on libraries
# It takes a list of library names and outputs a list of dependencies
sub compute_lib_depends {
# Depending on shared libraries:
# On Windows POSIX layers, we depend on {libname}.dll.a
# On Unix platforms, we depend on {shlibname}.so
- return map { platform->sharedlib_simple($_) // platform->staticlib($_) } @_;
+ return map { platform->sharedlib_simple($_)
+ // platform->sharedlib_import($_)
+ // platform->sharedlib($_)
+ // platform->staticlib($_)
+ } @_;
+ }
+
+ sub generatetarget {
+ my %args = @_;
+ my $deps = join(" ", compute_platform_depends(@{$args{deps}}));
+ return <<"EOF";
+$args{target}: $deps
+EOF
}
sub generatesrc {
my %args = @_;
- my $generator = join(" ", @{$args{generator}});
- my $generator_incs = join("", map { " -I".$_ } @{$args{generator_incs}});
+ my $gen0 = $args{generator}->[0];
+ my $gen_args = join('', map { " $_" }
+ @{$args{generator}}[1..$#{$args{generator}}]);
+ my $gen_incs = join("", map { " -I".$_ } @{$args{generator_incs}});
my $incs = join("", map { " -I".$_ } @{$args{incs}});
my $defs = join("", map { " -D".$_ } @{$args{defs}});
- my $deps = join(" ", @{$args{generator_deps}}, @{$args{deps}});
+ my $deps = join(" ", compute_platform_depends(@{$args{generator_deps}},
+ @{$args{deps}}));
if ($args{src} =~ /\.html$/) {
- my $title = basename($args{src}, ".html");
- my $pod = $args{generator}->[0];
- return <<"EOF";
+ #
+ # HTML generator
+ #
+ my $title = basename($args{src}, ".html");
+ my $pod = $gen0;
+ return <<"EOF";
$args{src}: $pod
\$(PERL) \$(SRCDIR)/util/mkpod2html.pl -i "$pod" -o \$\@ -t "$title" -r "\$(SRCDIR)/doc"
EOF
} elsif ($args{src} =~ /\.(\d)$/) {
- my $section = $1;
- my $name = uc basename($args{src}, ".$section");
- my $pod = $args{generator}->[0];
- return <<"EOF";
+ #
+ # Man-page generator
+ #
+ my $section = $1;
+ my $name = uc basename($args{src}, ".$section");
+ my $pod = $gen0;
+ return <<"EOF";
$args{src}: $pod
- pod2man --name=$name --section=$section --center=OpenSSL \\
+ pod2man --name=$name --section=$section\$(MANSUFFIX) --center=OpenSSL \\
--release=\$(VERSION) $pod >\$\@
EOF
} elsif (platform->isdef($args{src})) {
+ #
+ # Linker script-ish generator
+ #
my $target = platform->def($args{src});
(my $mkdef_os = $target{shared_target}) =~ s|-shared$||;
- my $ord_ver = $args{intent} eq 'lib' ? ' --version $(VERSION)' : '';
+ my $ord_ver = $args{intent} eq 'lib' ? ' --version $(VERSION_NUMBER)' : '';
my $ord_name = $args{generator}->[1] || $args{product};
return <<"EOF";
-$target: $args{generator}->[0] $deps \$(SRCDIR)/util/mkdef.pl
- \$(PERL) \$(SRCDIR)/util/mkdef.pl$ord_ver --ordinals $args{generator}->[0] --name $ord_name --OS $mkdef_os > $target
+$target: $gen0 $deps \$(SRCDIR)/util/mkdef.pl
+ \$(PERL) \$(SRCDIR)/util/mkdef.pl$ord_ver --type $args{intent} --ordinals $gen0 --name $ord_name --OS $mkdef_os > $target
EOF
- } elsif (!platform->isasm($args{src})) {
- if ($args{generator}->[0] =~ m|^.*\.in$|) {
- my $dofile = abs2rel(rel2abs(catfile($config{sourcedir},
- "util", "dofile.pl")),
- rel2abs($config{builddir}));
- my @modules = ( 'configdata.pm',
- grep { $_ =~ m|\.pm$| } @{$args{deps}} );
- my %moduleincs = map { '"-I'.dirname($_).'"' => 1 } @modules;
- @modules = map { "-M".basename($_, '.pm') } @modules;
- my $modules = join(' ', '', sort keys %moduleincs, @modules);
- return <<"EOF";
-$args{src}: $args{generator}->[0] $deps \$(BLDDIR)/configdata.pm
- \$(PERL)$modules "$dofile" "-o$target{build_file}" $generator > \$@
-EOF
- } else {
- return <<"EOF";
-$args{src}: $args{generator}->[0] $deps
- \$(PERL)$generator_incs $generator > \$@
-EOF
- }
- } else {
+ } elsif (platform->isasm($args{src})
+ || platform->iscppasm($args{src})) {
+ #
+ # Assembler generator
+ #
my $cppflags = {
shlib => '$(LIB_CFLAGS) $(LIB_CPPFLAGS)',
lib => '$(LIB_CFLAGS) $(LIB_CPPFLAGS)',
bin => '$(BIN_CFLAGS) $(BIN_CPPFLAGS)'
} -> {$args{intent}};
- if ($args{generator}->[0] =~ /\.pl$/) {
- $generator = 'CC="$(CC)" $(PERL)'.$generator_incs.' '.$generator
+ my $generator;
+ if ($gen0 =~ /\.pl$/) {
+ $generator = 'CC="$(CC)" $(PERL)'.$gen_incs.' '.$gen0.$gen_args
.' "$(PERLASM_SCHEME)"'.$incs.' '.$cppflags.$defs.' $(PROCESSOR)';
- } elsif ($args{generator}->[0] =~ /\.m4$/) {
- $generator = 'm4 -B 8192'.$generator_incs.' '.$generator.' >'
- } elsif ($args{generator}->[0] =~ /\.S$/) {
+ } elsif ($gen0 =~ /\.m4$/) {
+ $generator = 'm4 -B 8192'.$gen_incs.' '.$gen0.$gen_args.' >'
+ } elsif ($gen0 =~ /\.S$/) {
$generator = undef;
} else {
- die "Generator type for $args{src} unknown: $generator\n";
+ die "Generator type for $args{src} unknown: $gen0\n";
}
if (defined($generator)) {
return <<"EOF";
-$args{src}: $args{generator}->[0] $deps
+$args{src}: $gen0 $deps
$generator \$@
EOF
}
return <<"EOF";
-$args{src}: $args{generator}->[0] $deps
- \$(CC) $incs $cppflags $defs -E $args{generator}->[0] | \\
+$args{src}: $gen0 $deps
+ \$(CC) $incs $cppflags $defs -E $gen0 | \\
\$(PERL) -ne '/^#(line)?\\s*[0-9]+/ or print' > \$@
+EOF
+ } elsif ($gen0 =~ m|^.*\.in$|) {
+ #
+ # "dofile" generator (file.in -> file)
+ #
+ my $dofile = abs2rel(rel2abs(catfile($config{sourcedir},
+ "util", "dofile.pl")),
+ rel2abs($config{builddir}));
+ my @perlmodules = ();
+ my %perlmoduleincs = ();
+ my %perlmoduledeps = ();
+ foreach my $x (('configdata.pm', @{$args{deps}})) {
+ # Compute (i)nclusion directory, (m)odule name and (d)ependency
+ my $i, $m, $d;
+ if ($x =~ /\|/) {
+ $i = $`;
+ $d = $';
+
+ # Massage the module part to become a real perl module spec
+ $m = $d;
+ $m =~ s|\.pm$||;
+ # Directory specs are :: in perl package names
+ $m =~ s|/|::|g;
+
+ # Full file name of the dependency
+ $d = catfile($i, $d) if $i;
+ } elsif ($x =~ /\.pm$/) {
+ $i = dirname($x);
+ $m = basename($x, '.pm');
+ $d = $x;
+ } else {
+ # All other dependencies are simply collected
+ $d = $x;
+ }
+ push @perlmodules, '"-M'.$m.'"' if $m;
+ $perlmoduledeps{$d} = 1;
+ $perlmoduleincs{'"-I'.$i.'"'} = 1 if $i;
+ }
+
+ # Because of the special treatment of dependencies, we need to
+ # recompute $deps completely
+ my $deps
+ = join(" ", compute_platform_depends(@{$args{generator_deps}},
+ sort keys %perlmoduledeps));
+ my $perlmodules = join(' ', '', ( sort keys %perlmoduleincs ), @perlmodules);
+
+ return <<"EOF";
+$args{src}: $gen0 $deps
+ \$(PERL)$perlmodules "$dofile" "-o$target{build_file}" $gen0$gen_args > \$@
+EOF
+ } elsif (grep { $_ eq $gen0 } @{$unified_info{programs}}) {
+ #
+ # Generic generator using OpenSSL programs
+ #
+
+ # Redo $gen0, to ensure that we have the proper extension where
+ # necessary.
+ $gen0 = platform->bin($gen0);
+ # Use $(PERL) to execute wrap.pl directly to avoid calling env
+ return <<"EOF";
+$args{src}: $gen0 $deps \$(BLDDIR)/util/wrap.pl
+ \$(PERL) \$(BLDDIR)/util/wrap.pl $gen0$gen_args > \$@
+EOF
+ } else {
+ #
+ # Generic generator using Perl
+ #
+ return <<"EOF";
+$args{src}: $gen0 $deps
+ \$(PERL)$gen_incs $gen0$gen_args > \$@
EOF
}
}
$cmd $cmdflags -c -o \$\@ $srcs
EOF
} elsif (grep /\.S$/, @srcs) {
- # Originally there was mutli-step rule with $(CC) -E file.S
+ # Originally there was multi-step rule with $(CC) -E file.S
# followed by $(CC) -c file.s. It compensated for one of
# legacy platform compiler's inability to handle .S files.
# The platform is long discontinued by vendor so there is
$obj: $deps
$cmd $incs $defs $cmdflags -c -o \$\@ $srcs
EOF
- } elsif (defined $makedepprog && $makedepprog !~ /\/makedepend/
- && !grep /\.rc$/, @srcs) {
+ } elsif ($makedep_scheme eq 'gcc' && !grep /\.rc$/, @srcs) {
$recipe .= <<"EOF";
$obj: $deps
$cmd $incs $defs $cmdflags -MMD -MF $dep.tmp -MT \$\@ -c -o \$\@ $srcs
$obj: $deps
$cmd $incs $defs $cmdflags $cmdcompile -o \$\@ $srcs
EOF
- if (defined $makedepprog && $makedepprog =~ /\/makedepend/) {
+ if ($makedep_scheme eq 'makedepend') {
$recipe .= <<"EOF";
\$(MAKEDEPEND) -f- -Y -- $incs $cmdflags -- $srcs 2>/dev/null \\
> $dep
my @deps = compute_lib_depends(@{$args{deps}});
die "More than one exported symbol map" if scalar @defs > 1;
- my $simple = platform->sharedlib_simple($args{lib});
my $full = platform->sharedlib($args{lib});
+ # $import is for Windows and subsystems thereof, where static import
+ # libraries for DLLs are a thing. On platforms that have this mechanism,
+ # $import has the name of this import library. On platforms that don't
+ # have this mechanism, $import will be |undef|.
+ my $import = platform->sharedlib_import($args{lib});
+ # $simple is for platforms where full shared library names include the
+ # shared library version, and there's a simpler name that doesn't include
+ # that version. On such platforms, $simple has the simpler name. On
+ # other platforms, it will be |undef|.
+ my $simple = platform->sharedlib_simple($args{lib});
+
my $argfile = defined $target{shared_argfileflag} ? $full.".args" : undef;
my $shared_soname = "";
$shared_soname .= ' '.$target{shared_sonameflag}.basename($full)
if defined $target{shared_sonameflag};
my $shared_imp = "";
- $shared_imp .= ' '.$target{shared_impflag}.basename($simple)
- if defined $target{shared_impflag};
+ $shared_imp .= ' '.$target{shared_impflag}.basename($import)
+ if defined $target{shared_impflag} && defined $import;
my $shared_def = join("", map { ' '.$target{shared_defflag}.$_ } @defs);
# There is at least one platform where the compiler-as-linker needs to
my $fullobjs =
join(" \\\n\t\t", fill_lines(' ', $COLUMNS - 16, @fullobjs));
- my $recipe = <<"EOF";
+ my $recipe = '';
+
+ if (defined $simple && $simple ne $full) {
+ if (sharedaix()) {
+ $recipe .= <<"EOF";
$simple: $full
-EOF
- if (sharedaix()) {
- $recipe .= <<"EOF";
rm -f $simple && \\
\$(AR) r $simple $full
EOF
- } elsif ($simple ne $full) {
- $recipe .= <<"EOF";
+ } else {
+ $recipe .= <<"EOF";
+$simple: $full
rm -f $simple && \\
ln -s $full $simple
+EOF
+ }
+ }
+ if (defined $import) {
+ $recipe .= <<"EOF";
+$import: $full
EOF
}
$recipe .= <<"EOF";
if (windowsdll()) {
$recipe .= <<"EOF";
rm -f apps/$full
- rm -f test/$full
rm -f fuzz/$full
cp -p $full apps/
- cp -p $full test/
cp -p $full fuzz/
EOF
+ if (!$disabled{tests}) {
+ $recipe .= <<"EOF";
+ rm -f test/$full
+ cp -p $full test/
+EOF
+ }
}
$recipe .= <<"EOF" if defined $argfile;
$argfile: $argfiledeps
@{$args{objs}};
my @deps = compute_lib_depends(@{$args{deps}});
my $shared_def = join("", map { ' '.$target{shared_defflag}.$_ } @defs);
- # TODO(3.0): next line needs to become "less magic" (see PR #11950)
- $shared_def .= ' '.$target{shared_fipsflag} if (m/providers\/fips/ && defined $target{shared_fipsflag});
+ # Next line needs to become "less magic" (see PR #11950)
+ $shared_def .= ' '.$target{shared_fipsflag} if (defined $target{shared_fipsflag} && $shared_def =~ m/providers\/fips/);
my $objs = join(" \\\n\t\t", fill_lines(' ', $COLUMNS - 16, @objs));
my $deps = join(" \\\n" . ' ' x (length($dso) + 2),
fill_lines(' ', $COLUMNS - length($dso) - 2,
"util", "dofile.pl")),
rel2abs($config{builddir}));
return <<"EOF";
-$script: $sources
+$script: $sources configdata.pm
+ \$(RM) "$script"
\$(PERL) "-I\$(BLDDIR)" -Mconfigdata "$dofile" \\
"-o$target{build_file}" $sources > "$script"
chmod a+x $script
sub generatedir {
my %args = @_;
my $dir = $args{dir};
- my @deps = map { platform->convertext($_) } @{$args{deps}};
+ my @deps = compute_platform_depends(@{$args{deps}});
my @comments = ();
- my %extinfo = ( dso => platform->dsoext(),
- lib => platform->libext(),
- bin => platform->binext() );
# We already have a 'test' target, and the top directory is just plain
# silly
if ($type ne "lib") {
foreach my $prod (@{$unified_info{dirinfo}->{$dir}->{products}->{$type}}) {
if (dirname($prod) eq $dir) {
- push @deps, $prod.$extinfo{$type};
+ push @deps, compute_platform_depends($prod);
} else {
push @comments, "# No support to produce $type ".join(", ", @{$unified_info{dirinfo}->{$dir}->{products}->{$type}});
}