Richard Levitte | 567a9e6 | 2016-01-30 03:25:40 +0100 | [diff] [blame] | 1 | ## |
| 2 | ## Makefile for OpenSSL |
| 3 | ## |
| 4 | ## {- join("\n## ", @autowarntext) -} |
| 5 | {- |
Ben Laurie | 834aae2 | 2016-02-20 15:27:27 +0000 | [diff] [blame] | 6 | our $objext = $target{obj_extension} || ".o"; |
| 7 | our $depext = $target{dep_extension} || ".d"; |
| 8 | our $exeext = $target{exe_extension} || ""; |
| 9 | our $libext = $target{lib_extension} || ".a"; |
| 10 | our $shlibext = $target{shared_extension} || ".so"; |
| 11 | our $shlibextsimple = $target{shared_extension_simple} || ".so"; |
| 12 | our $shlibextimport = $target{shared_import_extension} || ""; |
| 13 | our $dsoext = $target{dso_extension} || ".so"; |
| 14 | |
Richard Levitte | 567a9e6 | 2016-01-30 03:25:40 +0100 | [diff] [blame] | 15 | sub windowsdll { $config{target} =~ /^(?:Cygwin|mingw)/ } |
Richard Levitte | f5c174f | 2016-02-15 17:42:14 +0100 | [diff] [blame] | 16 | |
Richard Levitte | d445302 | 2017-07-19 10:13:41 +0200 | [diff] [blame] | 17 | our $sover_dirname = $config{shlib_version_number}; |
| 18 | $sover_dirname =~ s|\.|_|g |
| 19 | if $config{target} =~ /^mingw/; |
Richard Levitte | b2de11c | 2016-07-06 18:50:47 +0200 | [diff] [blame] | 20 | |
Richard Levitte | f5c174f | 2016-02-15 17:42:14 +0100 | [diff] [blame] | 21 | # shlib and shlib_simple both take a static library name and figure |
| 22 | # out what the shlib name should be. |
| 23 | # |
| 24 | # When OpenSSL is configured "no-shared", these functions will just |
| 25 | # return empty lists, making them suitable to join(). |
| 26 | # |
| 27 | # With Windows DLL producers, shlib($libname) will return the shared |
| 28 | # library name (which usually is different from the static library |
| 29 | # name) with the default shared extension appended to it, while |
| 30 | # shlib_simple($libname) will return the static library name with |
| 31 | # the shared extension followed by ".a" appended to it. The former |
| 32 | # result is used as the runtime shared library while the latter is |
| 33 | # used as the DLL import library. |
| 34 | # |
| 35 | # On all Unix systems, shlib($libname) will return the library name |
| 36 | # with the default shared extension, while shlib_simple($libname) |
| 37 | # will return the name from shlib($libname) with any SO version number |
| 38 | # removed. On some systems, they may therefore return the exact same |
| 39 | # string. |
| 40 | sub shlib { |
Richard Levitte | f5c174f | 2016-02-15 17:42:14 +0100 | [diff] [blame] | 41 | my $lib = shift; |
Richard Levitte | 3310581 | 2017-04-18 16:24:23 +0200 | [diff] [blame] | 42 | return () if $disabled{shared} || $lib =~ /\.a$/; |
Richard Levitte | d445302 | 2017-07-19 10:13:41 +0200 | [diff] [blame] | 43 | return $unified_info{sharednames}->{$lib} . '$(SHLIB_EXT)'; |
Richard Levitte | f5c174f | 2016-02-15 17:42:14 +0100 | [diff] [blame] | 44 | } |
| 45 | sub shlib_simple { |
Richard Levitte | f5c174f | 2016-02-15 17:42:14 +0100 | [diff] [blame] | 46 | my $lib = shift; |
Richard Levitte | 3310581 | 2017-04-18 16:24:23 +0200 | [diff] [blame] | 47 | return () if $disabled{shared} || $lib =~ /\.a$/; |
| 48 | |
Richard Levitte | f5c174f | 2016-02-15 17:42:14 +0100 | [diff] [blame] | 49 | if (windowsdll()) { |
Richard Levitte | d445302 | 2017-07-19 10:13:41 +0200 | [diff] [blame] | 50 | return $lib . '$(SHLIB_EXT_IMPORT)'; |
Richard Levitte | f5c174f | 2016-02-15 17:42:14 +0100 | [diff] [blame] | 51 | } |
Richard Levitte | d445302 | 2017-07-19 10:13:41 +0200 | [diff] [blame] | 52 | return $lib . '$(SHLIB_EXT_SIMPLE)'; |
Richard Levitte | f5c174f | 2016-02-15 17:42:14 +0100 | [diff] [blame] | 53 | } |
| 54 | |
Richard Levitte | 3310581 | 2017-04-18 16:24:23 +0200 | [diff] [blame] | 55 | # Easy fixing of static library names |
| 56 | sub lib { |
| 57 | (my $lib = shift) =~ s/\.a$//; |
| 58 | return $lib . $libext; |
| 59 | } |
| 60 | |
Richard Levitte | f5c174f | 2016-02-15 17:42:14 +0100 | [diff] [blame] | 61 | # dso is a complement to shlib / shlib_simple that returns the |
| 62 | # given libname with the simple shared extension (possible SO version |
| 63 | # removed). This differs from shlib_simple() by being unconditional. |
| 64 | sub dso { |
Richard Levitte | f5c174f | 2016-02-15 17:42:14 +0100 | [diff] [blame] | 65 | my $engine = shift; |
| 66 | |
Ben Laurie | 834aae2 | 2016-02-20 15:27:27 +0000 | [diff] [blame] | 67 | return $engine . $dsoext; |
Richard Levitte | f5c174f | 2016-02-15 17:42:14 +0100 | [diff] [blame] | 68 | } |
Ben Laurie | 27c40a9 | 2016-06-26 13:09:23 +0100 | [diff] [blame] | 69 | # This makes sure things get built in the order they need |
| 70 | # to. You're welcome. |
| 71 | sub dependmagic { |
| 72 | my $target = shift; |
| 73 | |
| 74 | return "$target: build_generated\n\t\$(MAKE) depend && \$(MAKE) _$target\n_$target"; |
| 75 | } |
Ben Laurie | 834aae2 | 2016-02-20 15:27:27 +0000 | [diff] [blame] | 76 | ''; |
Richard Levitte | 567a9e6 | 2016-01-30 03:25:40 +0100 | [diff] [blame] | 77 | -} |
| 78 | PLATFORM={- $config{target} -} |
| 79 | OPTIONS={- $config{options} -} |
| 80 | CONFIGURE_ARGS=({- join(", ",quotify_l(@{$config{perlargv}})) -}) |
| 81 | SRCDIR={- $config{sourcedir} -} |
| 82 | BLDDIR={- $config{builddir} -} |
| 83 | |
| 84 | VERSION={- $config{version} -} |
| 85 | MAJOR={- $config{major} -} |
| 86 | MINOR={- $config{minor} -} |
| 87 | SHLIB_VERSION_NUMBER={- $config{shlib_version_number} -} |
| 88 | SHLIB_VERSION_HISTORY={- $config{shlib_version_history} -} |
| 89 | SHLIB_MAJOR={- $config{shlib_major} -} |
| 90 | SHLIB_MINOR={- $config{shlib_minor} -} |
| 91 | SHLIB_TARGET={- $target{shared_target} -} |
Richard Levitte | d445302 | 2017-07-19 10:13:41 +0200 | [diff] [blame] | 92 | SHLIB_EXT={- $shlibext -} |
| 93 | SHLIB_EXT_SIMPLE={- $shlibextsimple -} |
| 94 | SHLIB_EXT_IMPORT={- $shlibextimport -} |
Richard Levitte | 567a9e6 | 2016-01-30 03:25:40 +0100 | [diff] [blame] | 95 | |
Richard Levitte | 3310581 | 2017-04-18 16:24:23 +0200 | [diff] [blame] | 96 | LIBS={- join(" ", map { lib($_) } @{$unified_info{libraries}}) -} |
Richard Levitte | f5c174f | 2016-02-15 17:42:14 +0100 | [diff] [blame] | 97 | SHLIBS={- join(" ", map { shlib($_) } @{$unified_info{libraries}}) -} |
Richard Levitte | 0f01b7b | 2016-07-08 14:52:09 +0200 | [diff] [blame] | 98 | SHLIB_INFO={- join(" ", map { "\"".shlib($_).";".shlib_simple($_)."\"" } @{$unified_info{libraries}}) -} |
Richard Levitte | f5c174f | 2016-02-15 17:42:14 +0100 | [diff] [blame] | 99 | ENGINES={- join(" ", map { dso($_) } @{$unified_info{engines}}) -} |
Richard Levitte | 1e3d16b | 2016-07-08 17:58:36 +0200 | [diff] [blame] | 100 | PROGRAMS={- join(" ", map { $_.$exeext } @{$unified_info{programs}}) -} |
Richard Levitte | 567a9e6 | 2016-01-30 03:25:40 +0100 | [diff] [blame] | 101 | SCRIPTS={- join(" ", @{$unified_info{scripts}}) -} |
Richard Levitte | 29eed3d | 2016-03-09 01:17:27 +0100 | [diff] [blame] | 102 | {- output_off() if $disabled{makedepend}; "" -} |
Ben Laurie | 834aae2 | 2016-02-20 15:27:27 +0000 | [diff] [blame] | 103 | DEPS={- join(" ", map { (my $x = $_) =~ s|\.o$|$depext|; $x; } |
Richard Levitte | c058fcd | 2016-02-18 19:41:57 +0100 | [diff] [blame] | 104 | grep { $unified_info{sources}->{$_}->[0] =~ /\.c$/ } |
| 105 | keys %{$unified_info{sources}}); -} |
Richard Levitte | 29eed3d | 2016-03-09 01:17:27 +0100 | [diff] [blame] | 106 | {- output_on() if $disabled{makedepend}; "" -} |
Richard Levitte | 7cae386 | 2016-06-13 22:02:11 +0200 | [diff] [blame] | 107 | GENERATED_MANDATORY={- join(" ", @{$unified_info{depends}->{""}} ) -} |
Richard Levitte | 05a7aee | 2016-05-16 14:54:39 +0200 | [diff] [blame] | 108 | GENERATED={- join(" ", |
| 109 | ( map { (my $x = $_) =~ s|\.S$|\.s|; $x } |
| 110 | grep { defined $unified_info{generate}->{$_} } |
| 111 | map { @{$unified_info{sources}->{$_}} } |
| 112 | grep { /\.o$/ } keys %{$unified_info{sources}} ), |
| 113 | ( grep { /\.h$/ } keys %{$unified_info{generate}} )) -} |
Richard Levitte | c058fcd | 2016-02-18 19:41:57 +0100 | [diff] [blame] | 114 | |
Richard Levitte | 3310581 | 2017-04-18 16:24:23 +0200 | [diff] [blame] | 115 | INSTALL_LIBS={- join(" ", map { lib($_) } @{$unified_info{install}->{libraries}}) -} |
Richard Levitte | 0f01b7b | 2016-07-08 14:52:09 +0200 | [diff] [blame] | 116 | INSTALL_SHLIBS={- join(" ", map { shlib($_) } @{$unified_info{install}->{libraries}}) -} |
| 117 | INSTALL_SHLIB_INFO={- join(" ", map { "\"".shlib($_).";".shlib_simple($_)."\"" } @{$unified_info{install}->{libraries}}) -} |
| 118 | INSTALL_ENGINES={- join(" ", map { dso($_) } @{$unified_info{install}->{engines}}) -} |
| 119 | INSTALL_PROGRAMS={- join(" ", map { $_.$exeext } @{$unified_info{install}->{programs}}) -} |
Richard Levitte | df65337 | 2016-04-14 16:04:56 +0100 | [diff] [blame] | 120 | {- output_off() if $disabled{apps}; "" -} |
Richard Levitte | 567a9e6 | 2016-01-30 03:25:40 +0100 | [diff] [blame] | 121 | BIN_SCRIPTS=$(BLDDIR)/tools/c_rehash |
Rich Salz | b8a9af6 | 2016-05-20 16:16:07 -0400 | [diff] [blame] | 122 | MISC_SCRIPTS=$(BLDDIR)/apps/CA.pl $(BLDDIR)/apps/tsget |
Richard Levitte | df65337 | 2016-04-14 16:04:56 +0100 | [diff] [blame] | 123 | {- output_on() if $disabled{apps}; "" -} |
Richard Levitte | 567a9e6 | 2016-01-30 03:25:40 +0100 | [diff] [blame] | 124 | |
Richard Levitte | 6a74806 | 2017-06-15 19:31:01 +0200 | [diff] [blame] | 125 | APPS_OPENSSL={- use File::Spec::Functions; |
| 126 | catfile("apps","openssl") -} |
| 127 | |
Richard Levitte | 3c65577 | 2016-02-12 21:14:03 +0100 | [diff] [blame] | 128 | # DESTDIR is for package builders so that they can configure for, say, |
| 129 | # /usr/ and yet have everything installed to /tmp/somedir/usr/. |
Richard Levitte | 567a9e6 | 2016-01-30 03:25:40 +0100 | [diff] [blame] | 130 | # Normally it is left empty. |
Richard Levitte | 3c65577 | 2016-02-12 21:14:03 +0100 | [diff] [blame] | 131 | DESTDIR= |
Richard Levitte | 567a9e6 | 2016-01-30 03:25:40 +0100 | [diff] [blame] | 132 | |
| 133 | # Do not edit these manually. Use Configure with --prefix or --openssldir |
| 134 | # to change this! Short explanation in the top comment in Configure |
| 135 | INSTALLTOP={- # $prefix is used in the OPENSSLDIR perl snippet |
| 136 | # |
| 137 | our $prefix = $config{prefix} || "/usr/local"; |
| 138 | $prefix -} |
| 139 | OPENSSLDIR={- # |
| 140 | # The logic here is that if no --openssldir was given, |
| 141 | # OPENSSLDIR will get the value from $prefix plus "/ssl". |
| 142 | # If --openssldir was given and the value is an absolute |
| 143 | # path, OPENSSLDIR will get its value without change. |
| 144 | # If the value from --openssldir is a relative path, |
| 145 | # OPENSSLDIR will get $prefix with the --openssldir |
| 146 | # value appended as a subdirectory. |
| 147 | # |
| 148 | use File::Spec::Functions; |
| 149 | our $openssldir = |
| 150 | $config{openssldir} ? |
| 151 | (file_name_is_absolute($config{openssldir}) ? |
| 152 | $config{openssldir} |
| 153 | : catdir($prefix, $config{openssldir})) |
| 154 | : catdir($prefix, "ssl"); |
| 155 | $openssldir -} |
| 156 | LIBDIR={- # |
| 157 | # if $prefix/lib$target{multilib} is not an existing |
| 158 | # directory, then assume that it's not searched by linker |
| 159 | # automatically, in which case adding $target{multilib} suffix |
| 160 | # causes more grief than we're ready to tolerate, so don't... |
| 161 | our $multilib = |
| 162 | -d "$prefix/lib$target{multilib}" ? $target{multilib} : ""; |
| 163 | our $libdir = $config{libdir} || "lib$multilib"; |
| 164 | $libdir -} |
| 165 | ENGINESDIR={- use File::Spec::Functions; |
Richard Levitte | d445302 | 2017-07-19 10:13:41 +0200 | [diff] [blame] | 166 | catdir($prefix,$libdir,"engines-$sover_dirname") -} |
Richard Levitte | 567a9e6 | 2016-01-30 03:25:40 +0100 | [diff] [blame] | 167 | |
Richard Levitte | fad599f | 2016-10-12 17:05:35 +0200 | [diff] [blame] | 168 | # Convenience variable for those who want to set the rpath in shared |
| 169 | # libraries and applications |
| 170 | LIBRPATH=$(INSTALLTOP)/$(LIBDIR) |
| 171 | |
Richard Levitte | dde10ab | 2016-02-13 17:55:48 +0100 | [diff] [blame] | 172 | MANDIR=$(INSTALLTOP)/share/man |
Richard Levitte | 8be7bdb | 2016-02-19 10:38:15 +0100 | [diff] [blame] | 173 | DOCDIR=$(INSTALLTOP)/share/doc/$(BASENAME) |
| 174 | HTMLDIR=$(DOCDIR)/html |
Richard Levitte | 567a9e6 | 2016-01-30 03:25:40 +0100 | [diff] [blame] | 175 | |
Richard Levitte | 3544091 | 2016-02-15 13:37:17 +0100 | [diff] [blame] | 176 | # MANSUFFIX is for the benefit of anyone who may want to have a suffix |
| 177 | # appended after the manpage file section number. "ssl" is popular, |
| 178 | # resulting in files such as config.5ssl rather than config.5. |
| 179 | MANSUFFIX= |
Richard Levitte | 567a9e6 | 2016-01-30 03:25:40 +0100 | [diff] [blame] | 180 | HTMLSUFFIX=html |
| 181 | |
Rich Salz | 5407338 | 2017-06-29 11:40:19 -0400 | [diff] [blame] | 182 | # For "optional" echo messages, to get "real" silence |
| 183 | ECHO = echo |
Richard Levitte | 567a9e6 | 2016-01-30 03:25:40 +0100 | [diff] [blame] | 184 | |
| 185 | CROSS_COMPILE= {- $config{cross_compile_prefix} -} |
| 186 | CC= $(CROSS_COMPILE){- $target{cc} -} |
Richard Levitte | 2952b9b | 2016-03-02 10:57:05 +0100 | [diff] [blame] | 187 | CFLAGS={- our $cflags2 = join(" ",(map { "-D".$_} @{$target{defines}}, @{$config{defines}}),"-DOPENSSLDIR=\"\\\"\$(OPENSSLDIR)\\\"\"","-DENGINESDIR=\"\\\"\$(ENGINESDIR)\\\"\"") -} {- $target{cflags} -} {- $config{cflags} -} |
Richard Levitte | 076e596 | 2016-02-10 19:09:05 +0100 | [diff] [blame] | 188 | CFLAGS_Q={- $cflags2 =~ s|([\\"])|\\$1|g; $cflags2 -} {- $config{cflags} -} |
Richard Levitte | 7763472 | 2016-10-12 15:30:43 +0200 | [diff] [blame] | 189 | CXX= $(CROSS_COMPILE){- $target{cxx} -} |
Matt Caswell | a60150e | 2016-10-14 20:32:18 +0100 | [diff] [blame] | 190 | CXXFLAGS={- our $cxxflags2 = join(" ",(map { "-D".$_} @{$target{defines}}, @{$config{defines}}),"-DOPENSSLDIR=\"\\\"\$(OPENSSLDIR)\\\"\"","-DENGINESDIR=\"\\\"\$(ENGINESDIR)\\\"\"") -} {- $target{cxxflags} -} {- $config{cxxflags} -} -std=c++11 |
Richard Levitte | 940a09b | 2016-02-27 11:42:13 +0100 | [diff] [blame] | 191 | LDFLAGS= {- $target{lflags} -} |
| 192 | PLIB_LDFLAGS= {- $target{plib_lflags} -} |
Richard Levitte | 2952b9b | 2016-03-02 10:57:05 +0100 | [diff] [blame] | 193 | EX_LIBS= {- $target{ex_libs} -} {- $config{ex_libs} -} |
Richard Levitte | bbd9a50 | 2016-03-12 09:38:20 +0100 | [diff] [blame] | 194 | LIB_CFLAGS={- $target{shared_cflag} || "" -} |
Richard Levitte | 7763472 | 2016-10-12 15:30:43 +0200 | [diff] [blame] | 195 | LIB_CXXFLAGS={- $target{shared_cxxflag} || "" -} |
Richard Levitte | 075f7e2 | 2016-10-12 17:18:11 +0200 | [diff] [blame] | 196 | LIB_LDFLAGS={- $target{shared_ldflag}." ".$config{shared_ldflag} -} |
Richard Levitte | 45502bf | 2016-02-19 22:02:41 +0100 | [diff] [blame] | 197 | DSO_CFLAGS={- $target{shared_cflag} || "" -} |
Richard Levitte | 7763472 | 2016-10-12 15:30:43 +0200 | [diff] [blame] | 198 | DSO_CXXFLAGS={- $target{shared_cxxflag} || "" -} |
Richard Levitte | bbd9a50 | 2016-03-12 09:38:20 +0100 | [diff] [blame] | 199 | DSO_LDFLAGS=$(LIB_LDFLAGS) |
Andy Polyakov | cba792a | 2016-05-01 13:35:31 +0200 | [diff] [blame] | 200 | BIN_CFLAGS={- $target{bin_cflags} -} |
Richard Levitte | 7763472 | 2016-10-12 15:30:43 +0200 | [diff] [blame] | 201 | BIN_CXXFLAGS={- $target{bin_cxxflag} || "" -} |
Richard Levitte | 567a9e6 | 2016-01-30 03:25:40 +0100 | [diff] [blame] | 202 | |
| 203 | PERL={- $config{perl} -} |
| 204 | |
| 205 | ARFLAGS= {- $target{arflags} -} |
| 206 | AR=$(CROSS_COMPILE){- $target{ar} || "ar" -} $(ARFLAGS) r |
| 207 | RANLIB= {- $target{ranlib} -} |
| 208 | NM= $(CROSS_COMPILE){- $target{nm} || "nm" -} |
Richard Levitte | 8f41ff2 | 2016-05-16 17:08:13 +0200 | [diff] [blame] | 209 | RCFLAGS={- $target{shared_rcflag} -} |
| 210 | RC= $(CROSS_COMPILE){- $target{rc} || "windres" -} |
Richard Levitte | 567a9e6 | 2016-01-30 03:25:40 +0100 | [diff] [blame] | 211 | RM= rm -f |
Richard Levitte | 98e5534 | 2016-02-15 22:12:24 +0100 | [diff] [blame] | 212 | RMDIR= rmdir |
Richard Levitte | 567a9e6 | 2016-01-30 03:25:40 +0100 | [diff] [blame] | 213 | TAR= {- $target{tar} || "tar" -} |
| 214 | TARFLAGS= {- $target{tarflags} -} |
Richard Levitte | 29eed3d | 2016-03-09 01:17:27 +0100 | [diff] [blame] | 215 | MAKEDEPEND={- $config{makedepprog} -} |
Richard Levitte | 567a9e6 | 2016-01-30 03:25:40 +0100 | [diff] [blame] | 216 | |
| 217 | BASENAME= openssl |
| 218 | NAME= $(BASENAME)-$(VERSION) |
| 219 | TARFILE= ../$(NAME).tar |
| 220 | |
| 221 | # We let the C compiler driver to take care of .s files. This is done in |
| 222 | # order to be excused from maintaining a separate set of architecture |
| 223 | # dependent assembler flags. E.g. if you throw -mcpu=ultrasparc at SPARC |
| 224 | # gcc, then the driver will automatically translate it to -xarch=v8plus |
| 225 | # and pass it down to assembler. |
| 226 | AS=$(CC) -c |
| 227 | ASFLAG=$(CFLAGS) |
| 228 | PERLASM_SCHEME= {- $target{perlasm_scheme} -} |
| 229 | |
| 230 | # For x86 assembler: Set PROCESSOR to 386 if you want to support |
| 231 | # the 80386. |
| 232 | PROCESSOR= {- $config{processor} -} |
| 233 | |
Andy Polyakov | 9c7ce40 | 2016-07-28 23:05:32 +0200 | [diff] [blame] | 234 | # We want error [and other] messages in English. Trouble is that make(1) |
| 235 | # doesn't pass macros down as environment variables unless there already |
| 236 | # was corresponding variable originally set. In other words we can only |
| 237 | # reassign environment variables, but not set new ones, not in portable |
| 238 | # manner that is. That's why we reassign several, just to be sure... |
| 239 | LC_ALL=C |
| 240 | LC_MESSAGES=C |
| 241 | LANG=C |
| 242 | |
Richard Levitte | 567a9e6 | 2016-01-30 03:25:40 +0100 | [diff] [blame] | 243 | # The main targets ################################################### |
| 244 | |
Richard Levitte | 1e3d16b | 2016-07-08 17:58:36 +0200 | [diff] [blame] | 245 | {- dependmagic('all'); -}: build_libs_nodep build_engines_nodep build_programs_nodep link-utils |
Ben Laurie | 27c40a9 | 2016-06-26 13:09:23 +0100 | [diff] [blame] | 246 | {- dependmagic('build_libs'); -}: build_libs_nodep |
| 247 | {- dependmagic('build_engines'); -}: build_engines_nodep |
Richard Levitte | 1e3d16b | 2016-07-08 17:58:36 +0200 | [diff] [blame] | 248 | {- dependmagic('build_programs'); -}: build_programs_nodep |
Richard Levitte | 68a5f1a | 2016-02-13 18:15:51 +0100 | [diff] [blame] | 249 | |
Richard Levitte | 932eaf0 | 2016-06-14 21:39:13 +0200 | [diff] [blame] | 250 | build_generated: $(GENERATED_MANDATORY) |
Ben Laurie | 27c40a9 | 2016-06-26 13:09:23 +0100 | [diff] [blame] | 251 | build_libs_nodep: libcrypto.pc libssl.pc openssl.pc |
| 252 | build_engines_nodep: $(ENGINES) |
Richard Levitte | 1e3d16b | 2016-07-08 17:58:36 +0200 | [diff] [blame] | 253 | build_programs_nodep: $(PROGRAMS) $(SCRIPTS) |
| 254 | |
| 255 | # Kept around for backward compatibility |
| 256 | build_apps build_tests: build_programs |
Richard Levitte | 932eaf0 | 2016-06-14 21:39:13 +0200 | [diff] [blame] | 257 | |
Richard Levitte | 9b03b91 | 2017-06-16 03:46:41 +0200 | [diff] [blame] | 258 | # Convenience target to prebuild all generated files, not just the mandatory |
| 259 | # ones |
| 260 | build_all_generated: $(GENERATED_MANDATORY) $(GENERATED) |
| 261 | |
Richard Levitte | 1b74165 | 2016-04-18 14:09:36 +0200 | [diff] [blame] | 262 | test: tests |
Richard Levitte | 1e3d16b | 2016-07-08 17:58:36 +0200 | [diff] [blame] | 263 | {- dependmagic('tests'); -}: build_programs_nodep build_engines_nodep link-utils |
Matt Caswell | d90a6be | 2016-04-14 13:44:15 +0100 | [diff] [blame] | 264 | @ : {- output_off() if $disabled{tests}; "" -} |
Richard Levitte | 567a9e6 | 2016-01-30 03:25:40 +0100 | [diff] [blame] | 265 | ( cd test; \ |
| 266 | SRCTOP=../$(SRCDIR) \ |
| 267 | BLDTOP=../$(BLDDIR) \ |
Richard Levitte | cbece22 | 2016-05-27 17:18:57 +0200 | [diff] [blame] | 268 | PERL="$(PERL)" \ |
Ben Laurie | 834aae2 | 2016-02-20 15:27:27 +0000 | [diff] [blame] | 269 | EXE_EXT={- $exeext -} \ |
Richard Levitte | a717738 | 2016-03-05 13:11:37 +0100 | [diff] [blame] | 270 | OPENSSL_ENGINES=../$(BLDDIR)/engines \ |
Richard Levitte | 6d4bc8a | 2016-11-03 17:08:10 +0100 | [diff] [blame] | 271 | OPENSSL_DEBUG_MEMORY=on \ |
Richard Levitte | 567a9e6 | 2016-01-30 03:25:40 +0100 | [diff] [blame] | 272 | $(PERL) ../$(SRCDIR)/test/run_tests.pl $(TESTS) ) |
Matt Caswell | d90a6be | 2016-04-14 13:44:15 +0100 | [diff] [blame] | 273 | @ : {- if ($disabled{tests}) { output_on(); } else { output_off(); } "" -} |
| 274 | @echo "Tests are not supported with your chosen Configure options" |
| 275 | @ : {- output_on() if !$disabled{tests}; "" -} |
Richard Levitte | 567a9e6 | 2016-01-30 03:25:40 +0100 | [diff] [blame] | 276 | |
| 277 | list-tests: |
Richard Levitte | 4813ad2 | 2016-06-17 00:23:43 +0200 | [diff] [blame] | 278 | @ : {- output_off() if $disabled{tests}; "" -} |
| 279 | @SRCTOP="$(SRCDIR)" \ |
| 280 | $(PERL) $(SRCDIR)/test/run_tests.pl list |
| 281 | @ : {- if ($disabled{tests}) { output_on(); } else { output_off(); } "" -} |
| 282 | @echo "Tests are not supported with your chosen Configure options" |
| 283 | @ : {- output_on() if !$disabled{tests}; "" -} |
| 284 | |
| 285 | install: install_sw install_ssldirs install_docs |
| 286 | |
| 287 | uninstall: uninstall_docs uninstall_sw |
Richard Levitte | 567a9e6 | 2016-01-30 03:25:40 +0100 | [diff] [blame] | 288 | |
| 289 | libclean: |
Richard Levitte | f99f91f | 2016-02-15 22:13:41 +0100 | [diff] [blame] | 290 | @set -e; for s in $(SHLIB_INFO); do \ |
| 291 | s1=`echo "$$s" | cut -f1 -d";"`; \ |
| 292 | s2=`echo "$$s" | cut -f2 -d";"`; \ |
Rich Salz | 5407338 | 2017-06-29 11:40:19 -0400 | [diff] [blame] | 293 | $(ECHO) $(RM) $$s1; \ |
Richard Levitte | f99f91f | 2016-02-15 22:13:41 +0100 | [diff] [blame] | 294 | $(RM) $$s1; \ |
| 295 | if [ "$$s1" != "$$s2" ]; then \ |
Rich Salz | 5407338 | 2017-06-29 11:40:19 -0400 | [diff] [blame] | 296 | $(ECHO) $(RM) $$s2; \ |
Richard Levitte | f99f91f | 2016-02-15 22:13:41 +0100 | [diff] [blame] | 297 | $(RM) $$s2; \ |
| 298 | fi; \ |
| 299 | done |
| 300 | $(RM) $(LIBS) |
Richard Levitte | 4813ad2 | 2016-06-17 00:23:43 +0200 | [diff] [blame] | 301 | $(RM) *.map |
Richard Levitte | 567a9e6 | 2016-01-30 03:25:40 +0100 | [diff] [blame] | 302 | |
| 303 | clean: libclean |
Richard Levitte | 4813ad2 | 2016-06-17 00:23:43 +0200 | [diff] [blame] | 304 | $(RM) $(PROGRAMS) $(TESTPROGS) $(ENGINES) $(SCRIPTS) |
| 305 | $(RM) $(GENERATED) |
| 306 | -$(RM) `find . -name '*{- $depext -}' -a \! -path "./.git/*"` |
| 307 | -$(RM) `find . -name '*{- $objext -}' -a \! -path "./.git/*"` |
| 308 | $(RM) core |
Rich Salz | 9e183d2 | 2017-03-11 08:56:44 -0500 | [diff] [blame] | 309 | $(RM) tags TAGS doc-nits |
Bernd Edlinger | 122fa08 | 2017-02-01 19:10:03 +0100 | [diff] [blame] | 310 | $(RM) test/.rnd |
Richard Levitte | 4813ad2 | 2016-06-17 00:23:43 +0200 | [diff] [blame] | 311 | $(RM) openssl.pc libcrypto.pc libssl.pc |
| 312 | -$(RM) `find . -type l -a \! -path "./.git/*"` |
| 313 | $(RM) $(TARFILE) |
Richard Levitte | 567a9e6 | 2016-01-30 03:25:40 +0100 | [diff] [blame] | 314 | |
Richard Levitte | 7cae386 | 2016-06-13 22:02:11 +0200 | [diff] [blame] | 315 | distclean: clean |
Richard Levitte | 4813ad2 | 2016-06-17 00:23:43 +0200 | [diff] [blame] | 316 | $(RM) configdata.pm |
| 317 | $(RM) Makefile |
Richard Levitte | 7cae386 | 2016-06-13 22:02:11 +0200 | [diff] [blame] | 318 | |
Richard Levitte | f8d9d6e | 2016-02-21 16:09:36 +0100 | [diff] [blame] | 319 | # We check if any depfile is newer than Makefile and decide to |
Richard Levitte | a6adf09 | 2016-03-18 20:52:29 +0100 | [diff] [blame] | 320 | # concatenate only if that is true. |
Richard Levitte | ea80a25 | 2016-02-20 17:29:23 +0100 | [diff] [blame] | 321 | depend: |
Richard Levitte | 29eed3d | 2016-03-09 01:17:27 +0100 | [diff] [blame] | 322 | @: {- output_off() if $disabled{makedepend}; "" -} |
Ben Laurie | d423c5a | 2016-10-01 12:40:58 +0100 | [diff] [blame] | 323 | @if egrep "^# DO NOT DELETE THIS LINE" Makefile >/dev/null && [ -z "`find $(DEPS) -newer Makefile 2>/dev/null; exit 0`" ]; then :; else \ |
Richard Levitte | ebca796 | 2016-10-31 17:38:36 +0100 | [diff] [blame] | 324 | ( $(PERL) -pe 'exit 0 if /^# DO NOT DELETE THIS LINE.*/' < Makefile; \ |
Richard Levitte | f8d9d6e | 2016-02-21 16:09:36 +0100 | [diff] [blame] | 325 | echo '# DO NOT DELETE THIS LINE -- make depend depends on it.'; \ |
| 326 | echo; \ |
Richard Levitte | a6adf09 | 2016-03-18 20:52:29 +0100 | [diff] [blame] | 327 | for f in $(DEPS); do \ |
| 328 | if [ -f $$f ]; then cat $$f; fi; \ |
Richard Levitte | f8d9d6e | 2016-02-21 16:09:36 +0100 | [diff] [blame] | 329 | done ) > Makefile.new; \ |
Richard Levitte | 29b28ee | 2016-03-15 09:05:20 +0100 | [diff] [blame] | 330 | if cmp Makefile.new Makefile >/dev/null 2>&1; then \ |
Richard Levitte | f8d9d6e | 2016-02-21 16:09:36 +0100 | [diff] [blame] | 331 | rm -f Makefile.new; \ |
Richard Levitte | 29b28ee | 2016-03-15 09:05:20 +0100 | [diff] [blame] | 332 | else \ |
| 333 | mv -f Makefile.new Makefile; \ |
Richard Levitte | f8d9d6e | 2016-02-21 16:09:36 +0100 | [diff] [blame] | 334 | fi; \ |
Richard Levitte | c058fcd | 2016-02-18 19:41:57 +0100 | [diff] [blame] | 335 | fi |
Richard Levitte | 29eed3d | 2016-03-09 01:17:27 +0100 | [diff] [blame] | 336 | @: {- output_on() if $disabled{makedepend}; "" -} |
Richard Levitte | 567a9e6 | 2016-01-30 03:25:40 +0100 | [diff] [blame] | 337 | |
| 338 | # Install helper targets ############################################# |
| 339 | |
| 340 | install_sw: all install_dev install_engines install_runtime |
| 341 | |
Richard Levitte | f99f91f | 2016-02-15 22:13:41 +0100 | [diff] [blame] | 342 | uninstall_sw: uninstall_runtime uninstall_engines uninstall_dev |
Richard Levitte | 567a9e6 | 2016-01-30 03:25:40 +0100 | [diff] [blame] | 343 | |
| 344 | install_docs: install_man_docs install_html_docs |
| 345 | |
| 346 | uninstall_docs: uninstall_man_docs uninstall_html_docs |
Richard Levitte | 8be7bdb | 2016-02-19 10:38:15 +0100 | [diff] [blame] | 347 | $(RM) -r -v $(DESTDIR)$(DOCDIR) |
Richard Levitte | 567a9e6 | 2016-01-30 03:25:40 +0100 | [diff] [blame] | 348 | |
Richard Levitte | dde10ab | 2016-02-13 17:55:48 +0100 | [diff] [blame] | 349 | install_ssldirs: |
| 350 | @$(PERL) $(SRCDIR)/util/mkdir-p.pl $(DESTDIR)$(OPENSSLDIR)/certs |
| 351 | @$(PERL) $(SRCDIR)/util/mkdir-p.pl $(DESTDIR)$(OPENSSLDIR)/private |
Richard Levitte | 66c2eb8 | 2016-08-01 23:15:50 +0200 | [diff] [blame] | 352 | @$(PERL) $(SRCDIR)/util/mkdir-p.pl $(DESTDIR)$(OPENSSLDIR)/misc |
Richard Levitte | 4813ad2 | 2016-06-17 00:23:43 +0200 | [diff] [blame] | 353 | @set -e; for x in dummy $(MISC_SCRIPTS); do \ |
| 354 | if [ "$$x" = "dummy" ]; then continue; fi; \ |
| 355 | fn=`basename $$x`; \ |
Rich Salz | 5407338 | 2017-06-29 11:40:19 -0400 | [diff] [blame] | 356 | $(ECHO) "install $$x -> $(DESTDIR)$(OPENSSLDIR)/misc/$$fn"; \ |
Richard Levitte | 4813ad2 | 2016-06-17 00:23:43 +0200 | [diff] [blame] | 357 | cp $$x $(DESTDIR)$(OPENSSLDIR)/misc/$$fn.new; \ |
| 358 | chmod 755 $(DESTDIR)$(OPENSSLDIR)/misc/$$fn.new; \ |
| 359 | mv -f $(DESTDIR)$(OPENSSLDIR)/misc/$$fn.new \ |
| 360 | $(DESTDIR)$(OPENSSLDIR)/misc/$$fn; \ |
| 361 | done |
Rich Salz | 5407338 | 2017-06-29 11:40:19 -0400 | [diff] [blame] | 362 | @$(ECHO) "install $(SRCDIR)/apps/openssl.cnf -> $(DESTDIR)$(OPENSSLDIR)/openssl.cnf.dist" |
Richard Levitte | 4813ad2 | 2016-06-17 00:23:43 +0200 | [diff] [blame] | 363 | @cp $(SRCDIR)/apps/openssl.cnf $(DESTDIR)$(OPENSSLDIR)/openssl.cnf.new |
| 364 | @chmod 644 $(DESTDIR)$(OPENSSLDIR)/openssl.cnf.new |
Richard Levitte | cb926df | 2016-08-01 23:18:25 +0200 | [diff] [blame] | 365 | @mv -f $(DESTDIR)$(OPENSSLDIR)/openssl.cnf.new $(DESTDIR)$(OPENSSLDIR)/openssl.cnf.dist |
Rich Salz | c7af65c | 2016-09-09 18:05:41 -0400 | [diff] [blame] | 366 | @if [ ! -f "$(DESTDIR)$(OPENSSLDIR)/openssl.cnf" ]; then \ |
Rich Salz | 5407338 | 2017-06-29 11:40:19 -0400 | [diff] [blame] | 367 | $(ECHO) "install $(SRCDIR)/apps/openssl.cnf -> $(DESTDIR)$(OPENSSLDIR)/openssl.cnf"; \ |
Richard Levitte | cb926df | 2016-08-01 23:18:25 +0200 | [diff] [blame] | 368 | cp $(SRCDIR)/apps/openssl.cnf $(DESTDIR)$(OPENSSLDIR)/openssl.cnf; \ |
| 369 | chmod 644 $(DESTDIR)$(OPENSSLDIR)/openssl.cnf; \ |
| 370 | fi |
Rich Salz | 5407338 | 2017-06-29 11:40:19 -0400 | [diff] [blame] | 371 | @$(ECHO) "install $(SRCDIR)/apps/ct_log_list.cnf -> $(DESTDIR)$(OPENSSLDIR)/ct_log_list.cnf.dist" |
Rich Salz | c7af65c | 2016-09-09 18:05:41 -0400 | [diff] [blame] | 372 | @cp $(SRCDIR)/apps/ct_log_list.cnf $(DESTDIR)$(OPENSSLDIR)/ct_log_list.cnf.new |
| 373 | @chmod 644 $(DESTDIR)$(OPENSSLDIR)/ct_log_list.cnf.new |
| 374 | @mv -f $(DESTDIR)$(OPENSSLDIR)/ct_log_list.cnf.new $(DESTDIR)$(OPENSSLDIR)/ct_log_list.cnf.dist |
| 375 | @if [ ! -f "$(DESTDIR)$(OPENSSLDIR)/ct_log_list.cnf" ]; then \ |
Rich Salz | 5407338 | 2017-06-29 11:40:19 -0400 | [diff] [blame] | 376 | $(ECHO) "install $(SRCDIR)/apps/ct_log_list.cnf -> $(DESTDIR)$(OPENSSLDIR)/ct_log_list.cnf"; \ |
Rich Salz | c7af65c | 2016-09-09 18:05:41 -0400 | [diff] [blame] | 377 | cp $(SRCDIR)/apps/ct_log_list.cnf $(DESTDIR)$(OPENSSLDIR)/ct_log_list.cnf; \ |
| 378 | chmod 644 $(DESTDIR)$(OPENSSLDIR)/ct_log_list.cnf; \ |
| 379 | fi |
Richard Levitte | dde10ab | 2016-02-13 17:55:48 +0100 | [diff] [blame] | 380 | |
Richard Levitte | 567a9e6 | 2016-01-30 03:25:40 +0100 | [diff] [blame] | 381 | install_dev: |
| 382 | @[ -n "$(INSTALLTOP)" ] || (echo INSTALLTOP should not be empty; exit 1) |
Rich Salz | 5407338 | 2017-06-29 11:40:19 -0400 | [diff] [blame] | 383 | @$(ECHO) "*** Installing development files" |
Richard Levitte | 3c65577 | 2016-02-12 21:14:03 +0100 | [diff] [blame] | 384 | @$(PERL) $(SRCDIR)/util/mkdir-p.pl $(DESTDIR)$(INSTALLTOP)/include/openssl |
Richard Levitte | 24c4f73 | 2016-07-14 21:11:46 +0200 | [diff] [blame] | 385 | @ : {- output_off() unless grep { $_ eq "OPENSSL_USE_APPLINK" } @{$target{defines}}; "" -} |
Rich Salz | 5407338 | 2017-06-29 11:40:19 -0400 | [diff] [blame] | 386 | @$(ECHO) "install $(SRCDIR)/ms/applink.c -> $(DESTDIR)$(INSTALLTOP)/include/openssl/applink.c" |
Richard Levitte | 24c4f73 | 2016-07-14 21:11:46 +0200 | [diff] [blame] | 387 | @cp $(SRCDIR)/ms/applink.c $(DESTDIR)$(INSTALLTOP)/include/openssl/applink.c |
| 388 | @chmod 644 $(DESTDIR)$(INSTALLTOP)/include/openssl/applink.c |
| 389 | @ : {- output_on() unless grep { $_ eq "OPENSSL_USE_APPLINK" } @{$target{defines}}; "" -} |
Richard Levitte | 567a9e6 | 2016-01-30 03:25:40 +0100 | [diff] [blame] | 390 | @set -e; for i in $(SRCDIR)/include/openssl/*.h \ |
| 391 | $(BLDDIR)/include/openssl/*.h; do \ |
| 392 | fn=`basename $$i`; \ |
Rich Salz | 5407338 | 2017-06-29 11:40:19 -0400 | [diff] [blame] | 393 | $(ECHO) "install $$i -> $(DESTDIR)$(INSTALLTOP)/include/openssl/$$fn"; \ |
Richard Levitte | 3c65577 | 2016-02-12 21:14:03 +0100 | [diff] [blame] | 394 | cp $$i $(DESTDIR)$(INSTALLTOP)/include/openssl/$$fn; \ |
| 395 | chmod 644 $(DESTDIR)$(INSTALLTOP)/include/openssl/$$fn; \ |
Richard Levitte | 567a9e6 | 2016-01-30 03:25:40 +0100 | [diff] [blame] | 396 | done |
Richard Levitte | 3c65577 | 2016-02-12 21:14:03 +0100 | [diff] [blame] | 397 | @$(PERL) $(SRCDIR)/util/mkdir-p.pl $(DESTDIR)$(INSTALLTOP)/$(LIBDIR) |
Richard Levitte | 0f01b7b | 2016-07-08 14:52:09 +0200 | [diff] [blame] | 398 | @set -e; for l in $(INSTALL_LIBS); do \ |
Richard Levitte | 567a9e6 | 2016-01-30 03:25:40 +0100 | [diff] [blame] | 399 | fn=`basename $$l`; \ |
Rich Salz | 5407338 | 2017-06-29 11:40:19 -0400 | [diff] [blame] | 400 | $(ECHO) "install $$l -> $(DESTDIR)$(INSTALLTOP)/$(LIBDIR)/$$fn"; \ |
Richard Levitte | 3c65577 | 2016-02-12 21:14:03 +0100 | [diff] [blame] | 401 | cp $$l $(DESTDIR)$(INSTALLTOP)/$(LIBDIR)/$$fn.new; \ |
| 402 | $(RANLIB) $(DESTDIR)$(INSTALLTOP)/$(LIBDIR)/$$fn.new; \ |
| 403 | chmod 644 $(DESTDIR)$(INSTALLTOP)/$(LIBDIR)/$$fn.new; \ |
| 404 | mv -f $(DESTDIR)$(INSTALLTOP)/$(LIBDIR)/$$fn.new \ |
| 405 | $(DESTDIR)$(INSTALLTOP)/$(LIBDIR)/$$fn; \ |
Richard Levitte | 567a9e6 | 2016-01-30 03:25:40 +0100 | [diff] [blame] | 406 | done |
Richard Levitte | 84af1ba | 2016-02-22 13:52:46 +0100 | [diff] [blame] | 407 | @ : {- output_off() if $disabled{shared}; "" -} |
Richard Levitte | 0f01b7b | 2016-07-08 14:52:09 +0200 | [diff] [blame] | 408 | @set -e; for s in $(INSTALL_SHLIB_INFO); do \ |
Richard Levitte | c8c2b77 | 2016-02-15 18:39:49 +0100 | [diff] [blame] | 409 | s1=`echo "$$s" | cut -f1 -d";"`; \ |
| 410 | s2=`echo "$$s" | cut -f2 -d";"`; \ |
| 411 | fn1=`basename $$s1`; \ |
| 412 | fn2=`basename $$s2`; \ |
| 413 | : {- output_off() if windowsdll(); "" -}; \ |
Rich Salz | 5407338 | 2017-06-29 11:40:19 -0400 | [diff] [blame] | 414 | $(ECHO) "install $$s1 -> $(DESTDIR)$(INSTALLTOP)/$(LIBDIR)/$$fn1"; \ |
Richard Levitte | c8c2b77 | 2016-02-15 18:39:49 +0100 | [diff] [blame] | 415 | cp $$s1 $(DESTDIR)$(INSTALLTOP)/$(LIBDIR)/$$fn1.new; \ |
Richard Levitte | 3503549 | 2016-07-08 13:33:27 +0200 | [diff] [blame] | 416 | chmod 755 $(DESTDIR)$(INSTALLTOP)/$(LIBDIR)/$$fn1.new; \ |
Richard Levitte | c8c2b77 | 2016-02-15 18:39:49 +0100 | [diff] [blame] | 417 | mv -f $(DESTDIR)$(INSTALLTOP)/$(LIBDIR)/$$fn1.new \ |
| 418 | $(DESTDIR)$(INSTALLTOP)/$(LIBDIR)/$$fn1; \ |
| 419 | if [ "$$fn1" != "$$fn2" ]; then \ |
Rich Salz | 5407338 | 2017-06-29 11:40:19 -0400 | [diff] [blame] | 420 | $(ECHO) "link $(DESTDIR)$(INSTALLTOP)/$(LIBDIR)/$$fn2 -> $(DESTDIR)$(INSTALLTOP)/$(LIBDIR)/$$fn1"; \ |
Richard Levitte | c8c2b77 | 2016-02-15 18:39:49 +0100 | [diff] [blame] | 421 | ln -sf $$fn1 $(DESTDIR)$(INSTALLTOP)/$(LIBDIR)/$$fn2; \ |
Richard Levitte | 567a9e6 | 2016-01-30 03:25:40 +0100 | [diff] [blame] | 422 | fi; \ |
Richard Levitte | c8c2b77 | 2016-02-15 18:39:49 +0100 | [diff] [blame] | 423 | : {- output_on() if windowsdll(); "" -}{- output_off() unless windowsdll(); "" -}; \ |
Rich Salz | 5407338 | 2017-06-29 11:40:19 -0400 | [diff] [blame] | 424 | $(ECHO) "install $$s2 -> $(DESTDIR)$(INSTALLTOP)/$(LIBDIR)/$$fn2"; \ |
Richard Levitte | c8c2b77 | 2016-02-15 18:39:49 +0100 | [diff] [blame] | 425 | cp $$s2 $(DESTDIR)$(INSTALLTOP)/$(LIBDIR)/$$fn2.new; \ |
Richard Levitte | 3503549 | 2016-07-08 13:33:27 +0200 | [diff] [blame] | 426 | chmod 755 $(DESTDIR)$(INSTALLTOP)/$(LIBDIR)/$$fn2.new; \ |
Richard Levitte | c8c2b77 | 2016-02-15 18:39:49 +0100 | [diff] [blame] | 427 | mv -f $(DESTDIR)$(INSTALLTOP)/$(LIBDIR)/$$fn2.new \ |
| 428 | $(DESTDIR)$(INSTALLTOP)/$(LIBDIR)/$$fn2; \ |
Richard Levitte | ce5ed82 | 2016-02-19 22:23:28 +0100 | [diff] [blame] | 429 | : {- output_on() unless windowsdll(); "" -}; \ |
Richard Levitte | 567a9e6 | 2016-01-30 03:25:40 +0100 | [diff] [blame] | 430 | done |
Richard Levitte | 84af1ba | 2016-02-22 13:52:46 +0100 | [diff] [blame] | 431 | @ : {- output_on() if $disabled{shared}; "" -} |
Richard Levitte | 3c65577 | 2016-02-12 21:14:03 +0100 | [diff] [blame] | 432 | @$(PERL) $(SRCDIR)/util/mkdir-p.pl $(DESTDIR)$(INSTALLTOP)/$(LIBDIR)/pkgconfig |
Rich Salz | 5407338 | 2017-06-29 11:40:19 -0400 | [diff] [blame] | 433 | @$(ECHO) "install libcrypto.pc -> $(DESTDIR)$(INSTALLTOP)/$(LIBDIR)/pkgconfig/libcrypto.pc" |
Richard Levitte | 3c65577 | 2016-02-12 21:14:03 +0100 | [diff] [blame] | 434 | @cp libcrypto.pc $(DESTDIR)$(INSTALLTOP)/$(LIBDIR)/pkgconfig |
| 435 | @chmod 644 $(DESTDIR)$(INSTALLTOP)/$(LIBDIR)/pkgconfig/libcrypto.pc |
Rich Salz | 5407338 | 2017-06-29 11:40:19 -0400 | [diff] [blame] | 436 | @$(ECHO) "install libssl.pc -> $(DESTDIR)$(INSTALLTOP)/$(LIBDIR)/pkgconfig/libssl.pc" |
Richard Levitte | 3c65577 | 2016-02-12 21:14:03 +0100 | [diff] [blame] | 437 | @cp libssl.pc $(DESTDIR)$(INSTALLTOP)/$(LIBDIR)/pkgconfig |
| 438 | @chmod 644 $(DESTDIR)$(INSTALLTOP)/$(LIBDIR)/pkgconfig/libssl.pc |
Rich Salz | 5407338 | 2017-06-29 11:40:19 -0400 | [diff] [blame] | 439 | @$(ECHO) "install openssl.pc -> $(DESTDIR)$(INSTALLTOP)/$(LIBDIR)/pkgconfig/openssl.pc" |
Richard Levitte | 3c65577 | 2016-02-12 21:14:03 +0100 | [diff] [blame] | 440 | @cp openssl.pc $(DESTDIR)$(INSTALLTOP)/$(LIBDIR)/pkgconfig |
| 441 | @chmod 644 $(DESTDIR)$(INSTALLTOP)/$(LIBDIR)/pkgconfig/openssl.pc |
Richard Levitte | 567a9e6 | 2016-01-30 03:25:40 +0100 | [diff] [blame] | 442 | |
| 443 | uninstall_dev: |
Rich Salz | 5407338 | 2017-06-29 11:40:19 -0400 | [diff] [blame] | 444 | @$(ECHO) "*** Uninstalling development files" |
Richard Levitte | 24c4f73 | 2016-07-14 21:11:46 +0200 | [diff] [blame] | 445 | @ : {- output_off() unless grep { $_ eq "OPENSSL_USE_APPLINK" } @{$target{defines}}; "" -} |
Rich Salz | 5407338 | 2017-06-29 11:40:19 -0400 | [diff] [blame] | 446 | @$(ECHO) "$(RM) $(DESTDIR)$(INSTALLTOP)/include/openssl/applink.c" |
Richard Levitte | 24c4f73 | 2016-07-14 21:11:46 +0200 | [diff] [blame] | 447 | @$(RM) $(DESTDIR)$(INSTALLTOP)/include/openssl/applink.c |
| 448 | @ : {- output_on() unless grep { $_ eq "OPENSSL_USE_APPLINK" } @{$target{defines}}; "" -} |
Richard Levitte | 567a9e6 | 2016-01-30 03:25:40 +0100 | [diff] [blame] | 449 | @set -e; for i in $(SRCDIR)/include/openssl/*.h \ |
| 450 | $(BLDDIR)/include/openssl/*.h; do \ |
| 451 | fn=`basename $$i`; \ |
Rich Salz | 5407338 | 2017-06-29 11:40:19 -0400 | [diff] [blame] | 452 | $(ECHO) "$(RM) $(DESTDIR)$(INSTALLTOP)/include/openssl/$$fn"; \ |
Richard Levitte | 3c65577 | 2016-02-12 21:14:03 +0100 | [diff] [blame] | 453 | $(RM) $(DESTDIR)$(INSTALLTOP)/include/openssl/$$fn; \ |
Richard Levitte | 567a9e6 | 2016-01-30 03:25:40 +0100 | [diff] [blame] | 454 | done |
Richard Levitte | 98e5534 | 2016-02-15 22:12:24 +0100 | [diff] [blame] | 455 | -$(RMDIR) $(DESTDIR)$(INSTALLTOP)/include/openssl |
| 456 | -$(RMDIR) $(DESTDIR)$(INSTALLTOP)/include |
Richard Levitte | 0f01b7b | 2016-07-08 14:52:09 +0200 | [diff] [blame] | 457 | @set -e; for l in $(INSTALL_LIBS); do \ |
Richard Levitte | 567a9e6 | 2016-01-30 03:25:40 +0100 | [diff] [blame] | 458 | fn=`basename $$l`; \ |
Rich Salz | 5407338 | 2017-06-29 11:40:19 -0400 | [diff] [blame] | 459 | $(ECHO) "$(RM) $(DESTDIR)$(INSTALLTOP)/$(LIBDIR)/$$fn"; \ |
Richard Levitte | 3c65577 | 2016-02-12 21:14:03 +0100 | [diff] [blame] | 460 | $(RM) $(DESTDIR)$(INSTALLTOP)/$(LIBDIR)/$$fn; \ |
Richard Levitte | 567a9e6 | 2016-01-30 03:25:40 +0100 | [diff] [blame] | 461 | done |
Richard Levitte | 84af1ba | 2016-02-22 13:52:46 +0100 | [diff] [blame] | 462 | @ : {- output_off() if $disabled{shared}; "" -} |
Richard Levitte | 0f01b7b | 2016-07-08 14:52:09 +0200 | [diff] [blame] | 463 | @set -e; for s in $(INSTALL_SHLIB_INFO); do \ |
Richard Levitte | c8c2b77 | 2016-02-15 18:39:49 +0100 | [diff] [blame] | 464 | s1=`echo "$$s" | cut -f1 -d";"`; \ |
| 465 | s2=`echo "$$s" | cut -f2 -d";"`; \ |
| 466 | fn1=`basename $$s1`; \ |
| 467 | fn2=`basename $$s2`; \ |
| 468 | : {- output_off() if windowsdll(); "" -}; \ |
Rich Salz | 5407338 | 2017-06-29 11:40:19 -0400 | [diff] [blame] | 469 | $(ECHO) "$(RM) $(DESTDIR)$(INSTALLTOP)/$(LIBDIR)/$$fn1"; \ |
Richard Levitte | c8c2b77 | 2016-02-15 18:39:49 +0100 | [diff] [blame] | 470 | $(RM) $(DESTDIR)$(INSTALLTOP)/$(LIBDIR)/$$fn1; \ |
| 471 | if [ "$$fn1" != "$$fn2" ]; then \ |
Rich Salz | 5407338 | 2017-06-29 11:40:19 -0400 | [diff] [blame] | 472 | $(ECHO) "$(RM) $(DESTDIR)$(INSTALLTOP)/$(LIBDIR)/$$fn2"; \ |
Richard Levitte | 3c65577 | 2016-02-12 21:14:03 +0100 | [diff] [blame] | 473 | $(RM) $(DESTDIR)$(INSTALLTOP)/$(LIBDIR)/$$fn2; \ |
Richard Levitte | 567a9e6 | 2016-01-30 03:25:40 +0100 | [diff] [blame] | 474 | fi; \ |
Richard Levitte | c8c2b77 | 2016-02-15 18:39:49 +0100 | [diff] [blame] | 475 | : {- output_on() if windowsdll(); "" -}{- output_off() unless windowsdll(); "" -}; \ |
Rich Salz | 5407338 | 2017-06-29 11:40:19 -0400 | [diff] [blame] | 476 | $(ECHO) "$(RM) $(DESTDIR)$(INSTALLTOP)/$(LIBDIR)/$$fn2"; \ |
Richard Levitte | c8c2b77 | 2016-02-15 18:39:49 +0100 | [diff] [blame] | 477 | $(RM) $(DESTDIR)$(INSTALLTOP)/$(LIBDIR)/$$fn2; \ |
Richard Levitte | ce5ed82 | 2016-02-19 22:23:28 +0100 | [diff] [blame] | 478 | : {- output_on() unless windowsdll(); "" -}; \ |
Richard Levitte | 567a9e6 | 2016-01-30 03:25:40 +0100 | [diff] [blame] | 479 | done |
Richard Levitte | c8cca98 | 2016-03-04 05:43:15 +0100 | [diff] [blame] | 480 | @ : {- output_on() if $disabled{shared}; "" -} |
Richard Levitte | b894054 | 2016-03-03 17:45:14 +0100 | [diff] [blame] | 481 | $(RM) $(DESTDIR)$(INSTALLTOP)/$(LIBDIR)/pkgconfig/libcrypto.pc |
| 482 | $(RM) $(DESTDIR)$(INSTALLTOP)/$(LIBDIR)/pkgconfig/libssl.pc |
| 483 | $(RM) $(DESTDIR)$(INSTALLTOP)/$(LIBDIR)/pkgconfig/openssl.pc |
| 484 | -$(RMDIR) $(DESTDIR)$(INSTALLTOP)/$(LIBDIR)/pkgconfig |
| 485 | -$(RMDIR) $(DESTDIR)$(INSTALLTOP)/$(LIBDIR) |
Richard Levitte | 567a9e6 | 2016-01-30 03:25:40 +0100 | [diff] [blame] | 486 | |
| 487 | install_engines: |
| 488 | @[ -n "$(INSTALLTOP)" ] || (echo INSTALLTOP should not be empty; exit 1) |
Richard Levitte | b2de11c | 2016-07-06 18:50:47 +0200 | [diff] [blame] | 489 | @$(PERL) $(SRCDIR)/util/mkdir-p.pl $(DESTDIR)$(ENGINESDIR)/ |
Rich Salz | 5407338 | 2017-06-29 11:40:19 -0400 | [diff] [blame] | 490 | @$(ECHO) "*** Installing engines" |
Richard Levitte | 0f01b7b | 2016-07-08 14:52:09 +0200 | [diff] [blame] | 491 | @set -e; for e in dummy $(INSTALL_ENGINES); do \ |
Richard Levitte | 2b364f6 | 2016-03-21 08:11:14 +0100 | [diff] [blame] | 492 | if [ "$$e" = "dummy" ]; then continue; fi; \ |
Richard Levitte | 567a9e6 | 2016-01-30 03:25:40 +0100 | [diff] [blame] | 493 | fn=`basename $$e`; \ |
Rich Salz | 5407338 | 2017-06-29 11:40:19 -0400 | [diff] [blame] | 494 | $(ECHO) "install $$e -> $(DESTDIR)$(ENGINESDIR)/$$fn"; \ |
Richard Levitte | b2de11c | 2016-07-06 18:50:47 +0200 | [diff] [blame] | 495 | cp $$e $(DESTDIR)$(ENGINESDIR)/$$fn.new; \ |
| 496 | chmod 755 $(DESTDIR)$(ENGINESDIR)/$$fn.new; \ |
| 497 | mv -f $(DESTDIR)$(ENGINESDIR)/$$fn.new \ |
| 498 | $(DESTDIR)$(ENGINESDIR)/$$fn; \ |
Richard Levitte | 567a9e6 | 2016-01-30 03:25:40 +0100 | [diff] [blame] | 499 | done |
| 500 | |
| 501 | uninstall_engines: |
Rich Salz | 5407338 | 2017-06-29 11:40:19 -0400 | [diff] [blame] | 502 | @$(ECHO) "*** Uninstalling engines" |
Richard Levitte | 0f01b7b | 2016-07-08 14:52:09 +0200 | [diff] [blame] | 503 | @set -e; for e in dummy $(INSTALL_ENGINES); do \ |
Richard Levitte | 2b364f6 | 2016-03-21 08:11:14 +0100 | [diff] [blame] | 504 | if [ "$$e" = "dummy" ]; then continue; fi; \ |
Richard Levitte | 567a9e6 | 2016-01-30 03:25:40 +0100 | [diff] [blame] | 505 | fn=`basename $$e`; \ |
Richard Levitte | f0c93a8 | 2016-02-19 10:39:12 +0100 | [diff] [blame] | 506 | if [ "$$fn" = '{- dso("ossltest") -}' ]; then \ |
| 507 | continue; \ |
| 508 | fi; \ |
Rich Salz | 5407338 | 2017-06-29 11:40:19 -0400 | [diff] [blame] | 509 | $(ECHO) "$(RM) $(DESTDIR)$(ENGINESDIR)/$$fn"; \ |
Richard Levitte | b2de11c | 2016-07-06 18:50:47 +0200 | [diff] [blame] | 510 | $(RM) $(DESTDIR)$(ENGINESDIR)/$$fn; \ |
Richard Levitte | 567a9e6 | 2016-01-30 03:25:40 +0100 | [diff] [blame] | 511 | done |
Richard Levitte | b2de11c | 2016-07-06 18:50:47 +0200 | [diff] [blame] | 512 | -$(RMDIR) $(DESTDIR)$(ENGINESDIR) |
Richard Levitte | 567a9e6 | 2016-01-30 03:25:40 +0100 | [diff] [blame] | 513 | |
| 514 | install_runtime: |
| 515 | @[ -n "$(INSTALLTOP)" ] || (echo INSTALLTOP should not be empty; exit 1) |
Richard Levitte | 3c65577 | 2016-02-12 21:14:03 +0100 | [diff] [blame] | 516 | @$(PERL) $(SRCDIR)/util/mkdir-p.pl $(DESTDIR)$(INSTALLTOP)/bin |
Richard Levitte | 36b5372 | 2016-07-19 13:24:57 +0200 | [diff] [blame] | 517 | @ : {- output_off() if windowsdll(); "" -} |
| 518 | @$(PERL) $(SRCDIR)/util/mkdir-p.pl $(DESTDIR)$(INSTALLTOP)/$(LIBDIR) |
| 519 | @ : {- output_on() if windowsdll(); "" -} |
Rich Salz | 5407338 | 2017-06-29 11:40:19 -0400 | [diff] [blame] | 520 | @$(ECHO) "*** Installing runtime files" |
Richard Levitte | 0f01b7b | 2016-07-08 14:52:09 +0200 | [diff] [blame] | 521 | @set -e; for s in dummy $(INSTALL_SHLIBS); do \ |
Richard Levitte | 2b364f6 | 2016-03-21 08:11:14 +0100 | [diff] [blame] | 522 | if [ "$$s" = "dummy" ]; then continue; fi; \ |
Richard Levitte | f99f91f | 2016-02-15 22:13:41 +0100 | [diff] [blame] | 523 | fn=`basename $$s`; \ |
Richard Levitte | 36b5372 | 2016-07-19 13:24:57 +0200 | [diff] [blame] | 524 | : {- output_off() unless windowsdll(); "" -}; \ |
Rich Salz | 5407338 | 2017-06-29 11:40:19 -0400 | [diff] [blame] | 525 | $(ECHO) "install $$s -> $(DESTDIR)$(INSTALLTOP)/bin/$$fn"; \ |
Richard Levitte | 3c65577 | 2016-02-12 21:14:03 +0100 | [diff] [blame] | 526 | cp $$s $(DESTDIR)$(INSTALLTOP)/bin/$$fn.new; \ |
| 527 | chmod 644 $(DESTDIR)$(INSTALLTOP)/bin/$$fn.new; \ |
| 528 | mv -f $(DESTDIR)$(INSTALLTOP)/bin/$$fn.new \ |
| 529 | $(DESTDIR)$(INSTALLTOP)/bin/$$fn; \ |
Richard Levitte | 36b5372 | 2016-07-19 13:24:57 +0200 | [diff] [blame] | 530 | : {- output_on() unless windowsdll(); "" -}{- output_off() if windowsdll(); "" -}; \ |
Rich Salz | 5407338 | 2017-06-29 11:40:19 -0400 | [diff] [blame] | 531 | $(ECHO) "install $$s -> $(DESTDIR)$(INSTALLTOP)/$(LIBDIR)/$$fn"; \ |
Richard Levitte | 36b5372 | 2016-07-19 13:24:57 +0200 | [diff] [blame] | 532 | cp $$s $(DESTDIR)$(INSTALLTOP)/$(LIBDIR)/$$fn.new; \ |
| 533 | chmod 755 $(DESTDIR)$(INSTALLTOP)/$(LIBDIR)/$$fn.new; \ |
| 534 | mv -f $(DESTDIR)$(INSTALLTOP)/$(LIBDIR)/$$fn.new \ |
| 535 | $(DESTDIR)$(INSTALLTOP)/$(LIBDIR)/$$fn; \ |
| 536 | : {- output_on() if windowsdll(); "" -}; \ |
Richard Levitte | fcf80c4 | 2016-01-30 05:45:29 +0100 | [diff] [blame] | 537 | done |
Richard Levitte | 0f01b7b | 2016-07-08 14:52:09 +0200 | [diff] [blame] | 538 | @set -e; for x in dummy $(INSTALL_PROGRAMS); do \ |
Richard Levitte | 2b364f6 | 2016-03-21 08:11:14 +0100 | [diff] [blame] | 539 | if [ "$$x" = "dummy" ]; then continue; fi; \ |
Richard Levitte | 567a9e6 | 2016-01-30 03:25:40 +0100 | [diff] [blame] | 540 | fn=`basename $$x`; \ |
Rich Salz | 5407338 | 2017-06-29 11:40:19 -0400 | [diff] [blame] | 541 | $(ECHO) "install $$x -> $(DESTDIR)$(INSTALLTOP)/bin/$$fn"; \ |
Richard Levitte | 3c65577 | 2016-02-12 21:14:03 +0100 | [diff] [blame] | 542 | cp $$x $(DESTDIR)$(INSTALLTOP)/bin/$$fn.new; \ |
| 543 | chmod 755 $(DESTDIR)$(INSTALLTOP)/bin/$$fn.new; \ |
| 544 | mv -f $(DESTDIR)$(INSTALLTOP)/bin/$$fn.new \ |
| 545 | $(DESTDIR)$(INSTALLTOP)/bin/$$fn; \ |
Richard Levitte | 567a9e6 | 2016-01-30 03:25:40 +0100 | [diff] [blame] | 546 | done |
Richard Levitte | 2b364f6 | 2016-03-21 08:11:14 +0100 | [diff] [blame] | 547 | @set -e; for x in dummy $(BIN_SCRIPTS); do \ |
| 548 | if [ "$$x" = "dummy" ]; then continue; fi; \ |
Richard Levitte | 567a9e6 | 2016-01-30 03:25:40 +0100 | [diff] [blame] | 549 | fn=`basename $$x`; \ |
Rich Salz | 5407338 | 2017-06-29 11:40:19 -0400 | [diff] [blame] | 550 | $(ECHO) "install $$x -> $(DESTDIR)$(INSTALLTOP)/bin/$$fn"; \ |
Richard Levitte | 3c65577 | 2016-02-12 21:14:03 +0100 | [diff] [blame] | 551 | cp $$x $(DESTDIR)$(INSTALLTOP)/bin/$$fn.new; \ |
| 552 | chmod 755 $(DESTDIR)$(INSTALLTOP)/bin/$$fn.new; \ |
| 553 | mv -f $(DESTDIR)$(INSTALLTOP)/bin/$$fn.new \ |
| 554 | $(DESTDIR)$(INSTALLTOP)/bin/$$fn; \ |
Richard Levitte | 567a9e6 | 2016-01-30 03:25:40 +0100 | [diff] [blame] | 555 | done |
Richard Levitte | 567a9e6 | 2016-01-30 03:25:40 +0100 | [diff] [blame] | 556 | |
| 557 | uninstall_runtime: |
Rich Salz | 5407338 | 2017-06-29 11:40:19 -0400 | [diff] [blame] | 558 | @$(ECHO) "*** Uninstalling runtime files" |
Richard Levitte | 0f01b7b | 2016-07-08 14:52:09 +0200 | [diff] [blame] | 559 | @set -e; for x in dummy $(INSTALL_PROGRAMS); \ |
Richard Levitte | 567a9e6 | 2016-01-30 03:25:40 +0100 | [diff] [blame] | 560 | do \ |
Richard Levitte | 2b364f6 | 2016-03-21 08:11:14 +0100 | [diff] [blame] | 561 | if [ "$$x" = "dummy" ]; then continue; fi; \ |
Richard Levitte | 567a9e6 | 2016-01-30 03:25:40 +0100 | [diff] [blame] | 562 | fn=`basename $$x`; \ |
Rich Salz | 5407338 | 2017-06-29 11:40:19 -0400 | [diff] [blame] | 563 | $(ECHO) "$(RM) $(DESTDIR)$(INSTALLTOP)/bin/$$fn"; \ |
Richard Levitte | 3c65577 | 2016-02-12 21:14:03 +0100 | [diff] [blame] | 564 | $(RM) $(DESTDIR)$(INSTALLTOP)/bin/$$fn; \ |
Richard Levitte | 567a9e6 | 2016-01-30 03:25:40 +0100 | [diff] [blame] | 565 | done; |
Richard Levitte | 2b364f6 | 2016-03-21 08:11:14 +0100 | [diff] [blame] | 566 | @set -e; for x in dummy $(BIN_SCRIPTS); \ |
Richard Levitte | 567a9e6 | 2016-01-30 03:25:40 +0100 | [diff] [blame] | 567 | do \ |
Richard Levitte | 2b364f6 | 2016-03-21 08:11:14 +0100 | [diff] [blame] | 568 | if [ "$$x" = "dummy" ]; then continue; fi; \ |
Richard Levitte | 567a9e6 | 2016-01-30 03:25:40 +0100 | [diff] [blame] | 569 | fn=`basename $$x`; \ |
Rich Salz | 5407338 | 2017-06-29 11:40:19 -0400 | [diff] [blame] | 570 | $(ECHO) "$(RM) $(DESTDIR)$(INSTALLTOP)/bin/$$fn"; \ |
Richard Levitte | 3c65577 | 2016-02-12 21:14:03 +0100 | [diff] [blame] | 571 | $(RM) $(DESTDIR)$(INSTALLTOP)/bin/$$fn; \ |
Richard Levitte | 567a9e6 | 2016-01-30 03:25:40 +0100 | [diff] [blame] | 572 | done |
Richard Levitte | b1837ab | 2016-07-14 21:13:24 +0200 | [diff] [blame] | 573 | @ : {- output_off() unless windowsdll(); "" -} |
Richard Levitte | 0f01b7b | 2016-07-08 14:52:09 +0200 | [diff] [blame] | 574 | @set -e; for s in dummy $(INSTALL_SHLIBS); do \ |
Richard Levitte | 2b364f6 | 2016-03-21 08:11:14 +0100 | [diff] [blame] | 575 | if [ "$$s" = "dummy" ]; then continue; fi; \ |
Richard Levitte | f99f91f | 2016-02-15 22:13:41 +0100 | [diff] [blame] | 576 | fn=`basename $$s`; \ |
Rich Salz | 5407338 | 2017-06-29 11:40:19 -0400 | [diff] [blame] | 577 | $(ECHO) "$(RM) $(DESTDIR)$(INSTALLTOP)/bin/$$fn"; \ |
Richard Levitte | 3c65577 | 2016-02-12 21:14:03 +0100 | [diff] [blame] | 578 | $(RM) $(DESTDIR)$(INSTALLTOP)/bin/$$fn; \ |
Richard Levitte | fcf80c4 | 2016-01-30 05:45:29 +0100 | [diff] [blame] | 579 | done |
Richard Levitte | b1837ab | 2016-07-14 21:13:24 +0200 | [diff] [blame] | 580 | @ : {- output_on() unless windowsdll(); "" -} |
Richard Levitte | b894054 | 2016-03-03 17:45:14 +0100 | [diff] [blame] | 581 | -$(RMDIR) $(DESTDIR)$(INSTALLTOP)/bin |
Richard Levitte | 567a9e6 | 2016-01-30 03:25:40 +0100 | [diff] [blame] | 582 | |
Richard Levitte | 567a9e6 | 2016-01-30 03:25:40 +0100 | [diff] [blame] | 583 | |
| 584 | install_man_docs: |
| 585 | @[ -n "$(INSTALLTOP)" ] || (echo INSTALLTOP should not be empty; exit 1) |
Rich Salz | 5407338 | 2017-06-29 11:40:19 -0400 | [diff] [blame] | 586 | @$(ECHO) "*** Installing manpages" |
Richard Levitte | cadb015 | 2017-03-06 21:17:32 +0100 | [diff] [blame] | 587 | $(PERL) $(SRCDIR)/util/process_docs.pl \ |
| 588 | --destdir=$(DESTDIR)$(MANDIR) --type=man --suffix=$(MANSUFFIX) |
Richard Levitte | 567a9e6 | 2016-01-30 03:25:40 +0100 | [diff] [blame] | 589 | |
| 590 | uninstall_man_docs: |
Rich Salz | 5407338 | 2017-06-29 11:40:19 -0400 | [diff] [blame] | 591 | @$(ECHO) "*** Uninstalling manpages" |
Richard Levitte | cadb015 | 2017-03-06 21:17:32 +0100 | [diff] [blame] | 592 | $(PERL) $(SRCDIR)/util/process_docs.pl \ |
| 593 | --destdir=$(DESTDIR)$(MANDIR) --type=man --suffix=$(MANSUFFIX) \ |
| 594 | --remove |
Richard Levitte | 567a9e6 | 2016-01-30 03:25:40 +0100 | [diff] [blame] | 595 | |
| 596 | install_html_docs: |
| 597 | @[ -n "$(INSTALLTOP)" ] || (echo INSTALLTOP should not be empty; exit 1) |
Rich Salz | 5407338 | 2017-06-29 11:40:19 -0400 | [diff] [blame] | 598 | @$(ECHO) "*** Installing HTML manpages" |
Richard Levitte | cadb015 | 2017-03-06 21:17:32 +0100 | [diff] [blame] | 599 | $(PERL) $(SRCDIR)/util/process_docs.pl \ |
| 600 | --destdir=$(DESTDIR)$(HTMLDIR) --type=html |
Richard Levitte | 567a9e6 | 2016-01-30 03:25:40 +0100 | [diff] [blame] | 601 | |
| 602 | uninstall_html_docs: |
Rich Salz | 5407338 | 2017-06-29 11:40:19 -0400 | [diff] [blame] | 603 | @$(ECHO) "*** Uninstalling manpages" |
Richard Levitte | cadb015 | 2017-03-06 21:17:32 +0100 | [diff] [blame] | 604 | $(PERL) $(SRCDIR)/util/process_docs.pl \ |
| 605 | --destdir=$(DESTDIR)$(HTMLDIR) --type=html --remove |
Richard Levitte | 567a9e6 | 2016-01-30 03:25:40 +0100 | [diff] [blame] | 606 | |
| 607 | |
| 608 | # Developer targets (note: these are only available on Unix) ######### |
| 609 | |
Richard Levitte | 6bb2106 | 2016-02-11 20:00:57 +0100 | [diff] [blame] | 610 | update: generate errors ordinals |
| 611 | |
Richard Levitte | b7650c6 | 2016-05-01 15:09:20 +0200 | [diff] [blame] | 612 | generate: generate_apps generate_crypto_bn generate_crypto_objects \ |
| 613 | generate_crypto_conf generate_crypto_asn1 |
Richard Levitte | 567a9e6 | 2016-01-30 03:25:40 +0100 | [diff] [blame] | 614 | |
Rich Salz | 65c1f97 | 2017-01-12 08:20:54 -0500 | [diff] [blame] | 615 | doc-nits: |
Rich Salz | 1722496 | 2017-06-08 15:18:38 -0400 | [diff] [blame] | 616 | (cd $(SRCDIR); $(PERL) util/find-doc-nits -n -p ) >doc-nits |
Rich Salz | 9e183d2 | 2017-03-11 08:56:44 -0500 | [diff] [blame] | 617 | if [ -s doc-nits ] ; then cat doc-nits; rm doc-nits ; exit 1; fi |
Rich Salz | 65c1f97 | 2017-01-12 08:20:54 -0500 | [diff] [blame] | 618 | |
Richard Levitte | 567a9e6 | 2016-01-30 03:25:40 +0100 | [diff] [blame] | 619 | # Test coverage is a good idea for the future |
| 620 | #coverage: $(PROGRAMS) $(TESTPROGRAMS) |
| 621 | # ... |
| 622 | |
Richard Levitte | 567a9e6 | 2016-01-30 03:25:40 +0100 | [diff] [blame] | 623 | lint: |
| 624 | lint -DLINT $(INCLUDES) $(SRCS) |
| 625 | |
Richard Levitte | 9a9f8ee | 2016-03-19 20:04:51 +0100 | [diff] [blame] | 626 | generate_apps: |
| 627 | ( cd $(SRCDIR); $(PERL) VMS/VMSify-conf.pl \ |
| 628 | < apps/openssl.cnf > apps/openssl-vms.cnf ) |
Richard Levitte | 6bb2106 | 2016-02-11 20:00:57 +0100 | [diff] [blame] | 629 | |
Richard Levitte | 9a9f8ee | 2016-03-19 20:04:51 +0100 | [diff] [blame] | 630 | generate_crypto_bn: |
| 631 | ( cd $(SRCDIR); $(PERL) crypto/bn/bn_prime.pl > crypto/bn/bn_prime.h ) |
Richard Levitte | 6bb2106 | 2016-02-11 20:00:57 +0100 | [diff] [blame] | 632 | |
Richard Levitte | 9a9f8ee | 2016-03-19 20:04:51 +0100 | [diff] [blame] | 633 | generate_crypto_objects: |
Richard Levitte | 9a9f8ee | 2016-03-19 20:04:51 +0100 | [diff] [blame] | 634 | ( cd $(SRCDIR); $(PERL) crypto/objects/objects.pl \ |
| 635 | crypto/objects/objects.txt \ |
| 636 | crypto/objects/obj_mac.num \ |
| 637 | include/openssl/obj_mac.h ) |
Kirill Marinushkin | e6f2bb6 | 2016-04-24 02:01:25 +0200 | [diff] [blame] | 638 | ( cd $(SRCDIR); $(PERL) crypto/objects/obj_dat.pl \ |
| 639 | include/openssl/obj_mac.h \ |
| 640 | crypto/objects/obj_dat.h ) |
Richard Levitte | 9a9f8ee | 2016-03-19 20:04:51 +0100 | [diff] [blame] | 641 | ( cd $(SRCDIR); $(PERL) crypto/objects/objxref.pl \ |
| 642 | crypto/objects/obj_mac.num \ |
| 643 | crypto/objects/obj_xref.txt \ |
| 644 | > crypto/objects/obj_xref.h ) |
Richard Levitte | 6bb2106 | 2016-02-11 20:00:57 +0100 | [diff] [blame] | 645 | |
Richard Levitte | b7650c6 | 2016-05-01 15:09:20 +0200 | [diff] [blame] | 646 | generate_crypto_conf: |
| 647 | ( cd $(SRCDIR); $(PERL) crypto/conf/keysets.pl \ |
| 648 | > crypto/conf/conf_def.h ) |
| 649 | |
| 650 | generate_crypto_asn1: |
| 651 | ( cd $(SRCDIR); $(PERL) crypto/asn1/charmap.pl \ |
| 652 | > crypto/asn1/charmap.h ) |
| 653 | |
Rich Salz | 52df25c | 2017-06-07 15:12:03 -0400 | [diff] [blame] | 654 | # Set to -force to force a rebuild |
| 655 | ERROR_REBUILD= |
Richard Levitte | 567a9e6 | 2016-01-30 03:25:40 +0100 | [diff] [blame] | 656 | errors: |
| 657 | ( cd $(SRCDIR); $(PERL) util/ck_errf.pl -strict */*.c */*/*.c ) |
Rich Salz | 52df25c | 2017-06-07 15:12:03 -0400 | [diff] [blame] | 658 | ( cd $(SRCDIR); $(PERL) util/mkerr.pl $(ERROR_REBUILD) -internal ) |
Richard Levitte | 567a9e6 | 2016-01-30 03:25:40 +0100 | [diff] [blame] | 659 | ( cd $(SRCDIR)/engines; \ |
Rich Salz | 52df25c | 2017-06-07 15:12:03 -0400 | [diff] [blame] | 660 | for E in *.ec ; do \ |
| 661 | $(PERL) ../util/mkerr.pl $(ERROR_REBUILD) -static \ |
| 662 | -conf $$E `basename $$E .ec`.c ; \ |
| 663 | done ) |
Richard Levitte | 567a9e6 | 2016-01-30 03:25:40 +0100 | [diff] [blame] | 664 | |
| 665 | ordinals: |
| 666 | ( b=`pwd`; cd $(SRCDIR); $(PERL) -I$$b util/mkdef.pl crypto update ) |
| 667 | ( b=`pwd`; cd $(SRCDIR); $(PERL) -I$$b util/mkdef.pl ssl update ) |
| 668 | |
| 669 | test_ordinals: |
| 670 | ( cd test; \ |
| 671 | SRCTOP=../$(SRCDIR) \ |
| 672 | BLDTOP=../$(BLDDIR) \ |
| 673 | $(PERL) ../$(SRCDIR)/test/run_tests.pl test_ordinals ) |
| 674 | |
| 675 | tags TAGS: FORCE |
| 676 | rm -f TAGS tags |
| 677 | -ctags -R . |
| 678 | -etags `find . -name '*.[ch]' -o -name '*.pm'` |
| 679 | |
| 680 | # Release targets (note: only available on Unix) ##################### |
| 681 | |
Richard Levitte | 77a9c26 | 2017-08-17 14:08:43 +0200 | [diff] [blame^] | 682 | # If your tar command doesn't support --owner and --group, make sure to |
| 683 | # use one that does, for example GNU tar |
Ben Laurie | a1bce64 | 2016-06-10 12:07:32 +0100 | [diff] [blame] | 684 | TAR_COMMAND=$(TAR) $(TARFLAGS) --owner 0 --group 0 -cvf - |
Richard Levitte | 54bb8f7 | 2016-03-08 11:49:26 +0100 | [diff] [blame] | 685 | PREPARE_CMD=: |
Richard Levitte | 567a9e6 | 2016-01-30 03:25:40 +0100 | [diff] [blame] | 686 | tar: |
Richard Levitte | 34a5b7d | 2017-08-17 14:04:18 +0200 | [diff] [blame] | 687 | set -e; \ |
Richard Levitte | 567a9e6 | 2016-01-30 03:25:40 +0100 | [diff] [blame] | 688 | TMPDIR=/var/tmp/openssl-copy.$$$$; \ |
Richard Levitte | 54bb8f7 | 2016-03-08 11:49:26 +0100 | [diff] [blame] | 689 | DISTDIR=$(NAME); \ |
Richard Levitte | 567a9e6 | 2016-01-30 03:25:40 +0100 | [diff] [blame] | 690 | mkdir -p $$TMPDIR/$$DISTDIR; \ |
| 691 | (cd $(SRCDIR); \ |
Richard Levitte | 5b7b011 | 2017-08-17 09:38:02 +0200 | [diff] [blame] | 692 | excl_re=`git submodule status | sed -e 's/^.//' | cut -d' ' -f2`; \ |
| 693 | excl_re="^(fuzz/corpora|`echo $$excl_re | sed -e 's/ /$$|/g'`\$$)"; \ |
| 694 | echo "$$excl_re"; \ |
Richard Levitte | 567a9e6 | 2016-01-30 03:25:40 +0100 | [diff] [blame] | 695 | git ls-tree -r --name-only --full-tree HEAD \ |
Richard Levitte | 17c84aa | 2017-08-17 14:04:36 +0200 | [diff] [blame] | 696 | | egrep -v "$$excl_re" \ |
Richard Levitte | 567a9e6 | 2016-01-30 03:25:40 +0100 | [diff] [blame] | 697 | | while read F; do \ |
| 698 | mkdir -p $$TMPDIR/$$DISTDIR/`dirname $$F`; \ |
| 699 | cp $$F $$TMPDIR/$$DISTDIR/$$F; \ |
| 700 | done); \ |
Richard Levitte | 17c84aa | 2017-08-17 14:04:36 +0200 | [diff] [blame] | 701 | (cd $$TMPDIR/$$DISTDIR; \ |
Richard Levitte | 54bb8f7 | 2016-03-08 11:49:26 +0100 | [diff] [blame] | 702 | $(PREPARE_CMD); \ |
Richard Levitte | 17c84aa | 2017-08-17 14:04:36 +0200 | [diff] [blame] | 703 | find . -type d -print | xargs chmod 755; \ |
| 704 | find . -type f -print | xargs chmod a+r; \ |
| 705 | find . -type f -perm -0100 -print | xargs chmod a+x); \ |
| 706 | (cd $$TMPDIR; $(TAR_COMMAND) $$DISTDIR) \ |
Richard Levitte | 567a9e6 | 2016-01-30 03:25:40 +0100 | [diff] [blame] | 707 | | (cd $(SRCDIR); gzip --best > $(TARFILE).gz); \ |
| 708 | rm -rf $$TMPDIR |
| 709 | cd $(SRCDIR); ls -l $(TARFILE).gz |
| 710 | |
| 711 | dist: |
Richard Levitte | 12ccb02 | 2016-11-09 00:14:56 +0100 | [diff] [blame] | 712 | @$(MAKE) PREPARE_CMD='$(PERL) ./Configure dist' tar |
Richard Levitte | 567a9e6 | 2016-01-30 03:25:40 +0100 | [diff] [blame] | 713 | |
| 714 | # Helper targets ##################################################### |
| 715 | |
Richard Levitte | 342a1a2 | 2016-09-07 20:56:20 +0200 | [diff] [blame] | 716 | link-utils: $(BLDDIR)/util/opensslwrap.sh |
Richard Levitte | 567a9e6 | 2016-01-30 03:25:40 +0100 | [diff] [blame] | 717 | |
Richard Levitte | 27f42b4 | 2016-02-19 02:30:51 +0100 | [diff] [blame] | 718 | $(BLDDIR)/util/opensslwrap.sh: configdata.pm |
Richard Levitte | 567a9e6 | 2016-01-30 03:25:40 +0100 | [diff] [blame] | 719 | @if [ "$(SRCDIR)" != "$(BLDDIR)" ]; then \ |
| 720 | mkdir -p "$(BLDDIR)/util"; \ |
| 721 | ln -sf "../$(SRCDIR)/util/opensslwrap.sh" "$(BLDDIR)/util"; \ |
| 722 | fi |
Richard Levitte | 342a1a2 | 2016-09-07 20:56:20 +0200 | [diff] [blame] | 723 | |
Richard Levitte | c058fcd | 2016-02-18 19:41:57 +0100 | [diff] [blame] | 724 | FORCE: |
Richard Levitte | 567a9e6 | 2016-01-30 03:25:40 +0100 | [diff] [blame] | 725 | |
| 726 | # Building targets ################################################### |
| 727 | |
Richard Levitte | 8478a70 | 2016-07-06 03:07:16 +0200 | [diff] [blame] | 728 | libcrypto.pc libssl.pc openssl.pc: configdata.pm $(LIBS) {- join(" ",map { shlib_simple($_) } @{$unified_info{libraries}}) -} |
Richard Levitte | 567a9e6 | 2016-01-30 03:25:40 +0100 | [diff] [blame] | 729 | libcrypto.pc: |
| 730 | @ ( echo 'prefix=$(INSTALLTOP)'; \ |
| 731 | echo 'exec_prefix=$${prefix}'; \ |
| 732 | echo 'libdir=$${exec_prefix}/$(LIBDIR)'; \ |
| 733 | echo 'includedir=$${prefix}/include'; \ |
Richard Levitte | d445302 | 2017-07-19 10:13:41 +0200 | [diff] [blame] | 734 | echo 'enginesdir=$${libdir}/engines-{- $sover_dirname -}'; \ |
Richard Levitte | 567a9e6 | 2016-01-30 03:25:40 +0100 | [diff] [blame] | 735 | echo ''; \ |
| 736 | echo 'Name: OpenSSL-libcrypto'; \ |
| 737 | echo 'Description: OpenSSL cryptography library'; \ |
| 738 | echo 'Version: '$(VERSION); \ |
| 739 | echo 'Libs: -L$${libdir} -lcrypto'; \ |
| 740 | echo 'Libs.private: $(EX_LIBS)'; \ |
| 741 | echo 'Cflags: -I$${includedir}' ) > libcrypto.pc |
| 742 | |
| 743 | libssl.pc: |
| 744 | @ ( echo 'prefix=$(INSTALLTOP)'; \ |
| 745 | echo 'exec_prefix=$${prefix}'; \ |
| 746 | echo 'libdir=$${exec_prefix}/$(LIBDIR)'; \ |
| 747 | echo 'includedir=$${prefix}/include'; \ |
| 748 | echo ''; \ |
| 749 | echo 'Name: OpenSSL-libssl'; \ |
| 750 | echo 'Description: Secure Sockets Layer and cryptography libraries'; \ |
| 751 | echo 'Version: '$(VERSION); \ |
| 752 | echo 'Requires.private: libcrypto'; \ |
| 753 | echo 'Libs: -L$${libdir} -lssl'; \ |
| 754 | echo 'Libs.private: $(EX_LIBS)'; \ |
| 755 | echo 'Cflags: -I$${includedir}' ) > libssl.pc |
| 756 | |
| 757 | openssl.pc: |
| 758 | @ ( echo 'prefix=$(INSTALLTOP)'; \ |
| 759 | echo 'exec_prefix=$${prefix}'; \ |
| 760 | echo 'libdir=$${exec_prefix}/$(LIBDIR)'; \ |
| 761 | echo 'includedir=$${prefix}/include'; \ |
| 762 | echo ''; \ |
| 763 | echo 'Name: OpenSSL'; \ |
| 764 | echo 'Description: Secure Sockets Layer and cryptography libraries and tools'; \ |
| 765 | echo 'Version: '$(VERSION); \ |
| 766 | echo 'Requires: libssl libcrypto' ) > openssl.pc |
| 767 | |
Richard Levitte | 41240e6 | 2016-09-17 20:50:56 +0200 | [diff] [blame] | 768 | configdata.pm: $(SRCDIR)/Configure $(SRCDIR)/config {- join(" ", @{$config{build_file_templates}}, @{$config{build_infos}}, @{$config{conf_files}}) -} |
Richard Levitte | 27f42b4 | 2016-02-19 02:30:51 +0100 | [diff] [blame] | 769 | @echo "Detected changed: $?" |
Richard Levitte | 567a9e6 | 2016-01-30 03:25:40 +0100 | [diff] [blame] | 770 | @echo "Reconfiguring..." |
Richard Levitte | 12ccb02 | 2016-11-09 00:14:56 +0100 | [diff] [blame] | 771 | $(PERL) $(SRCDIR)/Configure reconf |
Richard Levitte | 567a9e6 | 2016-01-30 03:25:40 +0100 | [diff] [blame] | 772 | @echo "**************************************************" |
| 773 | @echo "*** ***" |
| 774 | @echo "*** Please run the same make command again ***" |
| 775 | @echo "*** ***" |
| 776 | @echo "**************************************************" |
| 777 | @false |
| 778 | |
| 779 | {- |
| 780 | use File::Basename; |
| 781 | use File::Spec::Functions qw/:DEFAULT abs2rel rel2abs/; |
Richard Levitte | cedbb14 | 2016-02-11 13:10:11 +0100 | [diff] [blame] | 782 | |
| 783 | # Helper function to figure out dependencies on libraries |
| 784 | # It takes a list of library names and outputs a list of dependencies |
| 785 | sub compute_lib_depends { |
Richard Levitte | 84af1ba | 2016-02-22 13:52:46 +0100 | [diff] [blame] | 786 | if ($disabled{shared}) { |
Richard Levitte | 3310581 | 2017-04-18 16:24:23 +0200 | [diff] [blame] | 787 | return map { lib($_) } @_; |
Richard Levitte | cedbb14 | 2016-02-11 13:10:11 +0100 | [diff] [blame] | 788 | } |
| 789 | |
| 790 | # Depending on shared libraries: |
| 791 | # On Windows POSIX layers, we depend on {libname}.dll.a |
| 792 | # On Unix platforms, we depend on {shlibname}.so |
Richard Levitte | 186a31e | 2016-11-09 20:01:51 +0100 | [diff] [blame] | 793 | return map { $_ =~ /\.a$/ ? $`.$libext : shlib_simple($_) } @_; |
Richard Levitte | cedbb14 | 2016-02-11 13:10:11 +0100 | [diff] [blame] | 794 | } |
| 795 | |
Richard Levitte | 66ddf17 | 2016-03-07 14:38:54 +0100 | [diff] [blame] | 796 | sub generatesrc { |
| 797 | my %args = @_; |
| 798 | my $generator = join(" ", @{$args{generator}}); |
Richard Levitte | 8d34daf | 2016-04-21 14:30:08 +0200 | [diff] [blame] | 799 | my $generator_incs = join("", map { " -I".$_ } @{$args{generator_incs}}); |
Richard Levitte | d460572 | 2016-03-10 09:04:09 +0100 | [diff] [blame] | 800 | my $incs = join("", map { " -I".$_ } @{$args{incs}}); |
Richard Levitte | 8d34daf | 2016-04-21 14:30:08 +0200 | [diff] [blame] | 801 | my $deps = join(" ", @{$args{generator_deps}}, @{$args{deps}}); |
Richard Levitte | 66ddf17 | 2016-03-07 14:38:54 +0100 | [diff] [blame] | 802 | |
| 803 | if ($args{src} !~ /\.[sS]$/) { |
Richard Levitte | 7cae386 | 2016-06-13 22:02:11 +0200 | [diff] [blame] | 804 | if ($args{generator}->[0] =~ m|^.*\.in$|) { |
| 805 | my $dofile = abs2rel(rel2abs(catfile($config{sourcedir}, |
| 806 | "util", "dofile.pl")), |
| 807 | rel2abs($config{builddir})); |
| 808 | return <<"EOF"; |
| 809 | $args{src}: $args{generator}->[0] $deps |
| 810 | \$(PERL) "-I\$(BLDDIR)" -Mconfigdata "$dofile" \\ |
| 811 | "-o$target{build_file}" $generator > \$@ |
| 812 | EOF |
| 813 | } else { |
| 814 | return <<"EOF"; |
Richard Levitte | 769777b | 2016-03-19 00:57:35 +0100 | [diff] [blame] | 815 | $args{src}: $args{generator}->[0] $deps |
Richard Levitte | 8d34daf | 2016-04-21 14:30:08 +0200 | [diff] [blame] | 816 | \$(PERL)$generator_incs $generator > \$@ |
Richard Levitte | 66ddf17 | 2016-03-07 14:38:54 +0100 | [diff] [blame] | 817 | EOF |
Richard Levitte | 7cae386 | 2016-06-13 22:02:11 +0200 | [diff] [blame] | 818 | } |
Richard Levitte | 66ddf17 | 2016-03-07 14:38:54 +0100 | [diff] [blame] | 819 | } else { |
Richard Levitte | 8458f1b | 2016-03-08 19:19:53 +0100 | [diff] [blame] | 820 | if ($args{generator}->[0] =~ /\.pl$/) { |
Richard Levitte | 8d34daf | 2016-04-21 14:30:08 +0200 | [diff] [blame] | 821 | $generator = 'CC="$(CC)" $(PERL)'.$generator_incs.' '.$generator; |
Richard Levitte | 66ddf17 | 2016-03-07 14:38:54 +0100 | [diff] [blame] | 822 | } elsif ($args{generator}->[0] =~ /\.m4$/) { |
Richard Levitte | 8d34daf | 2016-04-21 14:30:08 +0200 | [diff] [blame] | 823 | $generator = 'm4 -B 8192'.$generator_incs.' '.$generator.' >' |
Richard Levitte | 8458f1b | 2016-03-08 19:19:53 +0100 | [diff] [blame] | 824 | } elsif ($args{generator}->[0] =~ /\.S$/) { |
| 825 | $generator = undef; |
| 826 | } else { |
| 827 | die "Generator type for $args{src} unknown: $generator\n"; |
| 828 | } |
| 829 | |
| 830 | if (defined($generator)) { |
| 831 | # If the target is named foo.S in build.info, we want to |
| 832 | # end up generating foo.s in two steps. |
| 833 | if ($args{src} =~ /\.S$/) { |
| 834 | (my $target = $args{src}) =~ s|\.S$|.s|; |
| 835 | return <<"EOF"; |
Richard Levitte | 769777b | 2016-03-19 00:57:35 +0100 | [diff] [blame] | 836 | $target: $args{generator}->[0] $deps |
Andy Polyakov | 0218fc3 | 2016-03-11 11:55:44 +0100 | [diff] [blame] | 837 | ( trap "rm -f \$@.*" INT 0; \\ |
Richard Levitte | 8458f1b | 2016-03-08 19:19:53 +0100 | [diff] [blame] | 838 | $generator \$@.S; \\ |
Roumen Petrov | 57ade57 | 2016-06-27 21:24:07 +0200 | [diff] [blame] | 839 | \$(CC) $incs \$(CFLAGS) -E \$@.S | \\ |
Andy Polyakov | 39199fb | 2016-05-02 23:38:11 +0200 | [diff] [blame] | 840 | \$(PERL) -ne '/^#(line)?\\s*[0-9]+/ or print' > \$@.i && \\ |
| 841 | mv -f \$@.i \$@ ) |
Richard Levitte | 8458f1b | 2016-03-08 19:19:53 +0100 | [diff] [blame] | 842 | EOF |
| 843 | } |
| 844 | # Otherwise.... |
Richard Levitte | 66ddf17 | 2016-03-07 14:38:54 +0100 | [diff] [blame] | 845 | return <<"EOF"; |
Richard Levitte | 769777b | 2016-03-19 00:57:35 +0100 | [diff] [blame] | 846 | $args{src}: $args{generator}->[0] $deps |
Richard Levitte | 8458f1b | 2016-03-08 19:19:53 +0100 | [diff] [blame] | 847 | $generator \$@ |
Richard Levitte | 66ddf17 | 2016-03-07 14:38:54 +0100 | [diff] [blame] | 848 | EOF |
Richard Levitte | 66ddf17 | 2016-03-07 14:38:54 +0100 | [diff] [blame] | 849 | } |
Richard Levitte | 8458f1b | 2016-03-08 19:19:53 +0100 | [diff] [blame] | 850 | return <<"EOF"; |
Richard Levitte | 769777b | 2016-03-19 00:57:35 +0100 | [diff] [blame] | 851 | $args{src}: $args{generator}->[0] $deps |
Roumen Petrov | 57ade57 | 2016-06-27 21:24:07 +0200 | [diff] [blame] | 852 | \$(CC) $incs \$(CFLAGS) -E \$< | \\ |
Andy Polyakov | 39199fb | 2016-05-02 23:38:11 +0200 | [diff] [blame] | 853 | \$(PERL) -ne '/^#(line)?\\s*[0-9]+/ or print' > \$@ |
Richard Levitte | 8458f1b | 2016-03-08 19:19:53 +0100 | [diff] [blame] | 854 | EOF |
Richard Levitte | 66ddf17 | 2016-03-07 14:38:54 +0100 | [diff] [blame] | 855 | } |
| 856 | } |
| 857 | |
Richard Levitte | bb26842 | 2016-03-11 13:25:48 +0100 | [diff] [blame] | 858 | # Should one wonder about the end of the Perl snippet, it's because this |
| 859 | # second regexp eats up line endings as well, if the removed path is the |
| 860 | # last in the line. We may therefore need to put back a line ending. |
Richard Levitte | 8829728 | 2016-02-18 13:04:05 +0100 | [diff] [blame] | 861 | sub src2obj { |
Richard Levitte | 567a9e6 | 2016-01-30 03:25:40 +0100 | [diff] [blame] | 862 | my %args = @_; |
Richard Levitte | 8829728 | 2016-02-18 13:04:05 +0100 | [diff] [blame] | 863 | my $obj = $args{obj}; |
Richard Levitte | 674d585 | 2016-03-19 18:59:48 +0100 | [diff] [blame] | 864 | my @srcs = map { if ($unified_info{generate}->{$_}) { |
| 865 | (my $x = $_) =~ s/\.S$/.s/; $x |
| 866 | } else { |
| 867 | $_ |
| 868 | } |
| 869 | } ( @{$args{srcs}} ); |
Richard Levitte | 8458f1b | 2016-03-08 19:19:53 +0100 | [diff] [blame] | 870 | my $srcs = join(" ", @srcs); |
| 871 | my $deps = join(" ", @srcs, @{$args{deps}}); |
Richard Levitte | 45502bf | 2016-02-19 22:02:41 +0100 | [diff] [blame] | 872 | my $incs = join("", map { " -I".$_ } @{$args{incs}}); |
Richard Levitte | da430a5 | 2016-04-12 16:35:32 +0200 | [diff] [blame] | 873 | unless ($disabled{zlib}) { |
| 874 | if ($withargs{zlib_include}) { |
| 875 | $incs .= " -I".$withargs{zlib_include}; |
| 876 | } |
| 877 | } |
Richard Levitte | 7763472 | 2016-10-12 15:30:43 +0200 | [diff] [blame] | 878 | my $cc = '$(CC)'; |
| 879 | my $cflags = '$(CFLAGS)'; |
| 880 | if (grep /\.(cc|cpp)$/, @srcs) { |
| 881 | $cc = '$(CXX)'; |
| 882 | $cflags = '$(CXXFLAGS)'; |
| 883 | $cflags .= ' ' . { lib => '$(LIB_CXXFLAGS)', |
| 884 | dso => '$(DSO_CXXFLAGS)', |
| 885 | bin => '$(BIN_CXXFLAGS)' } -> {$args{intent}}; |
| 886 | } else { |
| 887 | $cflags .= ' ' . { lib => '$(LIB_CFLAGS)', |
| 888 | dso => '$(DSO_CFLAGS)', |
| 889 | bin => '$(BIN_CFLAGS)' } -> {$args{intent}}; |
| 890 | } |
Richard Levitte | 567a9e6 | 2016-01-30 03:25:40 +0100 | [diff] [blame] | 891 | my $makedepprog = $config{makedepprog}; |
Richard Levitte | 7e5b8b9 | 2016-09-04 08:10:22 +0200 | [diff] [blame] | 892 | my $recipe = <<"EOF"; |
Richard Levitte | 29eed3d | 2016-03-09 01:17:27 +0100 | [diff] [blame] | 893 | $obj$objext: $deps |
Richard Levitte | 567a9e6 | 2016-01-30 03:25:40 +0100 | [diff] [blame] | 894 | EOF |
Richard Levitte | 29eed3d | 2016-03-09 01:17:27 +0100 | [diff] [blame] | 895 | if (!$disabled{makedepend} && $makedepprog !~ /\/makedepend/) { |
| 896 | $recipe .= <<"EOF"; |
Richard Levitte | 7763472 | 2016-10-12 15:30:43 +0200 | [diff] [blame] | 897 | $cc $incs $cflags -MMD -MF $obj$depext.tmp -MT \$\@ -c -o \$\@ $srcs |
Richard Levitte | 340da94 | 2016-02-28 00:20:50 +0100 | [diff] [blame] | 898 | \@touch $obj$depext.tmp |
Richard Levitte | 29b28ee | 2016-03-15 09:05:20 +0100 | [diff] [blame] | 899 | \@if cmp $obj$depext.tmp $obj$depext > /dev/null 2> /dev/null; then \\ |
Richard Levitte | 987dbc7 | 2016-03-11 09:26:49 +0100 | [diff] [blame] | 900 | rm -f $obj$depext.tmp; \\ |
Richard Levitte | 29b28ee | 2016-03-15 09:05:20 +0100 | [diff] [blame] | 901 | else \\ |
| 902 | mv $obj$depext.tmp $obj$depext; \\ |
Richard Levitte | 340da94 | 2016-02-28 00:20:50 +0100 | [diff] [blame] | 903 | fi |
Richard Levitte | 567a9e6 | 2016-01-30 03:25:40 +0100 | [diff] [blame] | 904 | EOF |
Richard Levitte | 7e5b8b9 | 2016-09-04 08:10:22 +0200 | [diff] [blame] | 905 | } else { |
| 906 | $recipe .= <<"EOF"; |
Richard Levitte | 7763472 | 2016-10-12 15:30:43 +0200 | [diff] [blame] | 907 | $cc $incs $cflags -c -o \$\@ $srcs |
Richard Levitte | 7e5b8b9 | 2016-09-04 08:10:22 +0200 | [diff] [blame] | 908 | EOF |
| 909 | if (!$disabled{makedepend} && $makedepprog =~ /\/makedepend/) { |
| 910 | $recipe .= <<"EOF"; |
Richard Levitte | 7763472 | 2016-10-12 15:30:43 +0200 | [diff] [blame] | 911 | -\$(MAKEDEPEND) -f- -o"|\$\@" -- $incs $cflags -- $srcs \\ |
Richard Levitte | 7e5b8b9 | 2016-09-04 08:10:22 +0200 | [diff] [blame] | 912 | >$obj$depext.tmp 2>/dev/null |
| 913 | -\$(PERL) -i -pe 's/^.*\\|//; s/ \\/(\\\\.|[^ ])*//; \$\$_ = undef if (/: *\$\$/ || /^(#.*| *)\$\$/); \$\$_.="\\n" unless !defined(\$\$_) or /\\R\$\$/g;' $obj$depext.tmp |
| 914 | \@if cmp $obj$depext.tmp $obj$depext > /dev/null 2> /dev/null; then \\ |
| 915 | rm -f $obj$depext.tmp; \\ |
| 916 | else \\ |
| 917 | mv $obj$depext.tmp $obj$depext; \\ |
| 918 | fi |
| 919 | EOF |
| 920 | } |
Richard Levitte | 29eed3d | 2016-03-09 01:17:27 +0100 | [diff] [blame] | 921 | } |
| 922 | return $recipe; |
Richard Levitte | 567a9e6 | 2016-01-30 03:25:40 +0100 | [diff] [blame] | 923 | } |
| 924 | # On Unix, we build shlibs from static libs, so we're ignoring the |
| 925 | # object file array. We *know* this routine is only called when we've |
| 926 | # configure 'shared'. |
| 927 | sub libobj2shlib { |
| 928 | my %args = @_; |
| 929 | my $lib = $args{lib}; |
| 930 | my $shlib = $args{shlib}; |
| 931 | my $libd = dirname($lib); |
| 932 | my $libn = basename($lib); |
| 933 | (my $libname = $libn) =~ s/^lib//; |
Richard Levitte | cedbb14 | 2016-02-11 13:10:11 +0100 | [diff] [blame] | 934 | my $linklibs = join("", map { my $d = dirname($_); |
| 935 | my $f = basename($_); |
| 936 | (my $l = $f) =~ s/^lib//; |
| 937 | " -L$d -l$l" } @{$args{deps}}); |
| 938 | my $deps = join(" ",compute_lib_depends(@{$args{deps}})); |
Richard Levitte | 567a9e6 | 2016-01-30 03:25:40 +0100 | [diff] [blame] | 939 | my $shlib_target = $target{shared_target}; |
| 940 | my $ordinalsfile = defined($args{ordinals}) ? $args{ordinals}->[1] : ""; |
Richard Levitte | f5c174f | 2016-02-15 17:42:14 +0100 | [diff] [blame] | 941 | my $target = shlib_simple($lib); |
Richard Levitte | d07abe1 | 2017-07-21 18:04:51 +0200 | [diff] [blame] | 942 | my $target_full = shlib($lib); |
Richard Levitte | 567a9e6 | 2016-01-30 03:25:40 +0100 | [diff] [blame] | 943 | return <<"EOF" |
Richard Levitte | cedbb14 | 2016-02-11 13:10:11 +0100 | [diff] [blame] | 944 | # With a build on a Windows POSIX layer (Cygwin or Mingw), we know for a fact |
| 945 | # that two files get produced, {shlibname}.dll and {libname}.dll.a. |
| 946 | # With all other Unix platforms, we often build a shared library with the |
| 947 | # SO version built into the file name and a symlink without the SO version |
| 948 | # It's not necessary to have both as targets. The choice falls on the |
Richard Levitte | d445302 | 2017-07-19 10:13:41 +0200 | [diff] [blame] | 949 | # simplest, {libname}\$(SHLIB_EXT_IMPORT) for Windows POSIX layers and |
| 950 | # {libname}\$(SHLIB_EXT_SIMPLE) for the Unix platforms. |
Ben Laurie | 834aae2 | 2016-02-20 15:27:27 +0000 | [diff] [blame] | 951 | $target: $lib$libext $deps $ordinalsfile |
Richard Levitte | 567a9e6 | 2016-01-30 03:25:40 +0100 | [diff] [blame] | 952 | \$(MAKE) -f \$(SRCDIR)/Makefile.shared -e \\ |
Rich Salz | 5407338 | 2017-06-29 11:40:19 -0400 | [diff] [blame] | 953 | ECHO=\$(ECHO) \\ |
Richard Levitte | cedbb14 | 2016-02-11 13:10:11 +0100 | [diff] [blame] | 954 | PLATFORM=\$(PLATFORM) \\ |
Richard Levitte | cbece22 | 2016-05-27 17:18:57 +0200 | [diff] [blame] | 955 | PERL="\$(PERL)" SRCDIR='\$(SRCDIR)' DSTDIR="$libd" \\ |
Richard Levitte | 8a0a3d2 | 2016-03-12 10:46:14 +0100 | [diff] [blame] | 956 | INSTALLTOP='\$(INSTALLTOP)' LIBDIR='\$(LIBDIR)' \\ |
| 957 | LIBDEPS='\$(PLIB_LDFLAGS) '"$linklibs"' \$(EX_LIBS)' \\ |
Richard Levitte | d445302 | 2017-07-19 10:13:41 +0200 | [diff] [blame] | 958 | LIBNAME=$libname SHLIBVERSION=\$(SHLIB_VERSION_NUMBER) \\ |
Richard Levitte | d07abe1 | 2017-07-21 18:04:51 +0200 | [diff] [blame] | 959 | STLIBNAME=$lib$libext \\ |
| 960 | SHLIBNAME=$target SHLIBNAME_FULL=$target_full \\ |
Richard Levitte | 8a0a3d2 | 2016-03-12 10:46:14 +0100 | [diff] [blame] | 961 | CC='\$(CC)' CFLAGS='\$(CFLAGS) \$(LIB_CFLAGS)' \\ |
Richard Levitte | d07abe1 | 2017-07-21 18:04:51 +0200 | [diff] [blame] | 962 | LDFLAGS='\$(LDFLAGS)' SHARED_LDFLAGS='\$(LIB_LDFLAGS)' \\ |
Richard Levitte | 8f41ff2 | 2016-05-16 17:08:13 +0200 | [diff] [blame] | 963 | RC='\$(RC)' SHARED_RCFLAGS='\$(RCFLAGS)' \\ |
Richard Levitte | e048fd5 | 2016-02-15 18:02:52 +0100 | [diff] [blame] | 964 | link_shlib.$shlib_target |
Richard Levitte | 567a9e6 | 2016-01-30 03:25:40 +0100 | [diff] [blame] | 965 | EOF |
Richard Levitte | fcf80c4 | 2016-01-30 05:45:29 +0100 | [diff] [blame] | 966 | . (windowsdll() ? <<"EOF" : ""); |
Richard Levitte | d445302 | 2017-07-19 10:13:41 +0200 | [diff] [blame] | 967 | rm -f apps/$shlib'\$(SHLIB_EXT)' |
| 968 | rm -f test/$shlib'\$(SHLIB_EXT)' |
| 969 | cp -p $shlib'\$(SHLIB_EXT)' apps/ |
| 970 | cp -p $shlib'\$(SHLIB_EXT)' test/ |
Richard Levitte | fcf80c4 | 2016-01-30 05:45:29 +0100 | [diff] [blame] | 971 | EOF |
Richard Levitte | 567a9e6 | 2016-01-30 03:25:40 +0100 | [diff] [blame] | 972 | } |
Richard Levitte | 5386287 | 2016-02-15 18:45:54 +0100 | [diff] [blame] | 973 | sub obj2dso { |
Richard Levitte | 567a9e6 | 2016-01-30 03:25:40 +0100 | [diff] [blame] | 974 | my %args = @_; |
Richard Levitte | d07abe1 | 2017-07-21 18:04:51 +0200 | [diff] [blame] | 975 | my $dso = $args{lib}; |
| 976 | my $dsod = dirname($dso); |
| 977 | my $dson = basename($dso); |
Richard Levitte | 567a9e6 | 2016-01-30 03:25:40 +0100 | [diff] [blame] | 978 | my $shlibdeps = join("", map { my $d = dirname($_); |
| 979 | my $f = basename($_); |
| 980 | (my $l = $f) =~ s/^lib//; |
| 981 | " -L$d -l$l" } @{$args{deps}}); |
Richard Levitte | cedbb14 | 2016-02-11 13:10:11 +0100 | [diff] [blame] | 982 | my $deps = join(" ",compute_lib_depends(@{$args{deps}})); |
Richard Levitte | 567a9e6 | 2016-01-30 03:25:40 +0100 | [diff] [blame] | 983 | my $shlib_target = $target{shared_target}; |
Ben Laurie | 834aae2 | 2016-02-20 15:27:27 +0000 | [diff] [blame] | 984 | my $objs = join(" ", map { $_.$objext } @{$args{objs}}); |
Richard Levitte | d07abe1 | 2017-07-21 18:04:51 +0200 | [diff] [blame] | 985 | my $target = dso($dso); |
Richard Levitte | 567a9e6 | 2016-01-30 03:25:40 +0100 | [diff] [blame] | 986 | return <<"EOF"; |
Richard Levitte | f5c174f | 2016-02-15 17:42:14 +0100 | [diff] [blame] | 987 | $target: $objs $deps |
Richard Levitte | 567a9e6 | 2016-01-30 03:25:40 +0100 | [diff] [blame] | 988 | \$(MAKE) -f \$(SRCDIR)/Makefile.shared -e \\ |
Richard Levitte | cedbb14 | 2016-02-11 13:10:11 +0100 | [diff] [blame] | 989 | PLATFORM=\$(PLATFORM) \\ |
Richard Levitte | d07abe1 | 2017-07-21 18:04:51 +0200 | [diff] [blame] | 990 | PERL="\$(PERL)" SRCDIR='\$(SRCDIR)' DSTDIR="$dsod" \\ |
Richard Levitte | 8a0a3d2 | 2016-03-12 10:46:14 +0100 | [diff] [blame] | 991 | LIBDEPS='\$(PLIB_LDFLAGS) '"$shlibdeps"' \$(EX_LIBS)' \\ |
Richard Levitte | d07abe1 | 2017-07-21 18:04:51 +0200 | [diff] [blame] | 992 | SHLIBNAME_FULL=$target LDFLAGS='\$(LDFLAGS)' \\ |
Richard Levitte | 8a0a3d2 | 2016-03-12 10:46:14 +0100 | [diff] [blame] | 993 | CC='\$(CC)' CFLAGS='\$(CFLAGS) \$(DSO_CFLAGS)' \\ |
| 994 | SHARED_LDFLAGS='\$(DSO_LDFLAGS)' \\ |
Richard Levitte | 567a9e6 | 2016-01-30 03:25:40 +0100 | [diff] [blame] | 995 | LIBEXTRAS="$objs" \\ |
Richard Levitte | e048fd5 | 2016-02-15 18:02:52 +0100 | [diff] [blame] | 996 | link_dso.$shlib_target |
Richard Levitte | 567a9e6 | 2016-01-30 03:25:40 +0100 | [diff] [blame] | 997 | EOF |
| 998 | } |
| 999 | sub obj2lib { |
| 1000 | my %args = @_; |
Richard Levitte | 3310581 | 2017-04-18 16:24:23 +0200 | [diff] [blame] | 1001 | (my $lib = $args{lib}) =~ s/\.a$//; |
Ben Laurie | 834aae2 | 2016-02-20 15:27:27 +0000 | [diff] [blame] | 1002 | my $objs = join(" ", map { $_.$objext } @{$args{objs}}); |
Richard Levitte | 567a9e6 | 2016-01-30 03:25:40 +0100 | [diff] [blame] | 1003 | return <<"EOF"; |
Ben Laurie | 834aae2 | 2016-02-20 15:27:27 +0000 | [diff] [blame] | 1004 | $lib$libext: $objs |
Richard Levitte | 68cd4e3 | 2016-04-03 14:11:12 +0200 | [diff] [blame] | 1005 | \$(AR) \$\@ \$\? |
Richard Levitte | 567a9e6 | 2016-01-30 03:25:40 +0100 | [diff] [blame] | 1006 | \$(RANLIB) \$\@ || echo Never mind. |
| 1007 | EOF |
| 1008 | } |
| 1009 | sub obj2bin { |
| 1010 | my %args = @_; |
| 1011 | my $bin = $args{bin}; |
| 1012 | my $bind = dirname($bin); |
| 1013 | my $binn = basename($bin); |
Ben Laurie | 834aae2 | 2016-02-20 15:27:27 +0000 | [diff] [blame] | 1014 | my $objs = join(" ", map { $_.$objext } @{$args{objs}}); |
Richard Levitte | cedbb14 | 2016-02-11 13:10:11 +0100 | [diff] [blame] | 1015 | my $deps = join(" ",compute_lib_depends(@{$args{deps}})); |
Richard Levitte | 186a31e | 2016-11-09 20:01:51 +0100 | [diff] [blame] | 1016 | my $linklibs = join("", map { if ($_ =~ /\.a$/) { |
| 1017 | " $_"; |
| 1018 | } else { |
| 1019 | my $d = dirname($_); |
| 1020 | my $f = basename($_); |
| 1021 | $d = "." if $d eq $f; |
| 1022 | (my $l = $f) =~ s/^lib//; |
| 1023 | " -L$d -l$l" |
| 1024 | } |
| 1025 | } @{$args{deps}}); |
Richard Levitte | 84af1ba | 2016-02-22 13:52:46 +0100 | [diff] [blame] | 1026 | my $shlib_target = $disabled{shared} ? "" : $target{shared_target}; |
Richard Levitte | 7763472 | 2016-10-12 15:30:43 +0200 | [diff] [blame] | 1027 | my $cc = '$(CC)'; |
| 1028 | my $cflags = '$(CFLAGS) $(BIN_CFLAGS)'; |
| 1029 | if (grep /_cc$/, @{$args{objs}}) { |
| 1030 | $cc = '$(CXX)'; |
| 1031 | $cflags = '$(CXXFLAGS) $(BIN_CXXFLAGS)'; |
| 1032 | } |
Richard Levitte | 567a9e6 | 2016-01-30 03:25:40 +0100 | [diff] [blame] | 1033 | return <<"EOF"; |
Ben Laurie | 834aae2 | 2016-02-20 15:27:27 +0000 | [diff] [blame] | 1034 | $bin$exeext: $objs $deps |
| 1035 | \$(RM) $bin$exeext |
Richard Levitte | 567a9e6 | 2016-01-30 03:25:40 +0100 | [diff] [blame] | 1036 | \$(MAKE) -f \$(SRCDIR)/Makefile.shared -e \\ |
Richard Levitte | cbece22 | 2016-05-27 17:18:57 +0200 | [diff] [blame] | 1037 | PERL="\$(PERL)" SRCDIR=\$(SRCDIR) \\ |
Ben Laurie | 834aae2 | 2016-02-20 15:27:27 +0000 | [diff] [blame] | 1038 | APPNAME=$bin$exeext OBJECTS="$objs" \\ |
Richard Levitte | 8a0a3d2 | 2016-03-12 10:46:14 +0100 | [diff] [blame] | 1039 | LIBDEPS='\$(PLIB_LDFLAGS) '"$linklibs"' \$(EX_LIBS)' \\ |
Richard Levitte | 7763472 | 2016-10-12 15:30:43 +0200 | [diff] [blame] | 1040 | CC='$cc' CFLAGS='$cflags' \\ |
Richard Levitte | fad599f | 2016-10-12 17:05:35 +0200 | [diff] [blame] | 1041 | LDFLAGS='\$(LDFLAGS)' \\ |
Richard Levitte | 567a9e6 | 2016-01-30 03:25:40 +0100 | [diff] [blame] | 1042 | link_app.$shlib_target |
| 1043 | EOF |
| 1044 | } |
| 1045 | sub in2script { |
| 1046 | my %args = @_; |
| 1047 | my $script = $args{script}; |
| 1048 | my $sources = join(" ", @{$args{sources}}); |
| 1049 | my $dofile = abs2rel(rel2abs(catfile($config{sourcedir}, |
| 1050 | "util", "dofile.pl")), |
| 1051 | rel2abs($config{builddir})); |
| 1052 | return <<"EOF"; |
Richard Levitte | 8829728 | 2016-02-18 13:04:05 +0100 | [diff] [blame] | 1053 | $script: $sources |
Richard Levitte | 4b799ce | 2016-02-14 06:55:45 +0100 | [diff] [blame] | 1054 | \$(PERL) "-I\$(BLDDIR)" -Mconfigdata "$dofile" \\ |
Richard Levitte | ba327ad | 2016-02-14 08:47:47 +0100 | [diff] [blame] | 1055 | "-o$target{build_file}" $sources > "$script" |
Richard Levitte | 567a9e6 | 2016-01-30 03:25:40 +0100 | [diff] [blame] | 1056 | chmod a+x $script |
| 1057 | EOF |
| 1058 | } |
Richard Levitte | 0ad1d94 | 2016-04-02 22:26:38 +0200 | [diff] [blame] | 1059 | sub generatedir { |
| 1060 | my %args = @_; |
| 1061 | my $dir = $args{dir}; |
| 1062 | my @deps = map { s|\.o$|$objext|; $_ } @{$args{deps}}; |
| 1063 | my @actions = (); |
| 1064 | my %extinfo = ( dso => $dsoext, |
| 1065 | lib => $libext, |
| 1066 | bin => $exeext ); |
| 1067 | |
| 1068 | foreach my $type (("dso", "lib", "bin", "script")) { |
| 1069 | next unless defined($unified_info{dirinfo}->{$dir}->{products}->{$type}); |
Richard Levitte | 850000a | 2016-06-28 14:02:44 +0200 | [diff] [blame] | 1070 | # For lib object files, we could update the library. However, it |
| 1071 | # was decided that it's enough to build the directory local object |
| 1072 | # files, so we don't need to add any actions, and the dependencies |
| 1073 | # are already taken care of. |
| 1074 | if ($type ne "lib") { |
Richard Levitte | 0ad1d94 | 2016-04-02 22:26:38 +0200 | [diff] [blame] | 1075 | foreach my $prod (@{$unified_info{dirinfo}->{$dir}->{products}->{$type}}) { |
| 1076 | if (dirname($prod) eq $dir) { |
| 1077 | push @deps, $prod.$extinfo{$type}; |
| 1078 | } else { |
| 1079 | push @actions, "\t@ : No support to produce $type ".join(", ", @{$unified_info{dirinfo}->{$dir}->{products}->{$type}}); |
| 1080 | } |
| 1081 | } |
| 1082 | } |
| 1083 | } |
| 1084 | |
| 1085 | my $deps = join(" ", @deps); |
| 1086 | my $actions = join("\n", "", @actions); |
| 1087 | return <<"EOF"; |
| 1088 | $args{dir} $args{dir}/: $deps$actions |
| 1089 | EOF |
| 1090 | } |
Richard Levitte | 567a9e6 | 2016-01-30 03:25:40 +0100 | [diff] [blame] | 1091 | "" # Important! This becomes part of the template result. |
| 1092 | -} |