Add the 'run_tests' target to the Windows build file template as well For some reason, it was added to the Unix and VMS build templates, but Windows was forgotten. Reviewed-by: Tomas Mraz <tomas@openssl.org> Reviewed-by: Todd Short <todd.short@me.com> (Merged from https://github.com/openssl/openssl/pull/22947)
Fix typo in variable name Fix spelling $cppfags2 => $cppflags2 in file Configurations/windows-makefile.tmpl CLA: trivial Reviewed-by: Matt Caswell <matt@openssl.org> Reviewed-by: Matthias St. Pierre <Matthias.St.Pierre@ncp-e.com> Reviewed-by: Richard Levitte <levitte@openssl.org> (Merged from https://github.com/openssl/openssl/pull/22771)
Add exporters for CMake CMake's older package finder, FindOpenSSL.cmake, does a best guess effort and doesn't always get it right. By CMake's own documentation, that's what such modules are (best effort attempts), and package producers are (strongly) encouraged to help out by producing and installing <PackageName>Config.cmake files to get a more deterministic configuration. The resulting OpenSSLConfig.cmake tries to mimic the result from CMake's FindOpenSSL.cmake, by using the same variable and imported target names. It also adds a few extra variables of its own, such as: OPENSSL_MODULES_DIR Indicates the default installation directory for OpenSSL loadable modules, such as providers. OPENSSL_RUNTIME_DIR Indicates the default runtime directory, where for example the openssl program is located. OPENSSL_PROGRAM Is the full directory-and-filename of the openssl program. The imported targets OpenSSL::Crypto and OpenSSL::SSL are as precisely specified as possible, so for example, they are specified with the both the import library and the DLL on Windows, which should make life easier on that platform. For the moment, one of the following must be done in your CMake project for this CMake configuration to take priority over CMake's FindOpenSSL.cmake: - The variable CMAKE_FIND_PACKAGE_PREFER_CONFIG must be set to true prior to the 'find_package(OpenSSL)' call. - The 'find_package' call itself must use the "Full Signature". If you don't know any better, simply add the 'CONFIG' option, i.e. from this example: find_package(OpenSSL 3.0 REQUIRED) to this: find_package(OpenSSL 3.0 REQUIRED CONFIG) Just as with the 'pkg-config' exporters, two variants of the .cmake files are produced: - Those in 'exporters/' are installed in the location that 'pkg-config' itself prefers for installed packages. - Those in the top directory are to be used when it's desirable to build directly against an OpenSSL build tree. Reviewed-by: Paul Dale <pauli@openssl.org> Reviewed-by: Tomas Mraz <tomas@openssl.org> (Merged from https://github.com/openssl/openssl/pull/20878)
add no-docs option Reviewed-by: Tomas Mraz <tomas@openssl.org> Reviewed-by: Paul Dale <pauli@openssl.org> (Merged from https://github.com/openssl/openssl/pull/21240)
build.info: Introduce special syntax for dependencies on script modules The DEPEND statement, when applied on files generated with GENERATE, may be used to specify script modules that the template to be generated from depends on. In short, this sort of depend: DEPEND[generated]=util/perl/OpenSSL/something.pm ... would generate a perl run that has the inclusion directory 'util/perl/OpenSSL' and 'something' as the module to be loaded. However, the package name for this module is 'OpenSSL::something', so to load it the way it's expected, the inclusion directory should be 'util/perl', and the module to be loaded should be specified as 'OpenSSL/something' (to be massaged into a proper module name by the build file template). To allow this, we introduce a file syntax, where a single '|' is used as a directory separator, to delineate what part should be used as the inclustion directory, and which part the module name to be loaded should be derived from: DEPEND[generated]=util/perl|OpenSSL/something.pm Fixes #21112 Reviewed-by: Matt Caswell <matt@openssl.org> Reviewed-by: Paul Dale <pauli@openssl.org> (Merged from https://github.com/openssl/openssl/pull/21117)
Fix a typo found by codespell in a Makefile variable I have no experience with building on Windows, so I don't know the effect of fixing this typo. I guess that this will fix a bug at worst. CLA: trivial Reviewed-by: Hugo Landau <hlandau@openssl.org> Reviewed-by: Paul Dale <pauli@openssl.org> Reviewed-by: Richard Levitte <levitte@openssl.org> (Merged from https://github.com/openssl/openssl/pull/20911)
Add two new build targets to enable the possibility of using clang-cl as an assembler for Windows on Arm builds and also clang-cl as the compiler as well. Make appropriate changes to armcap source and peralsm scripts. Reviewed-by: Paul Dale <pauli@openssl.org> Reviewed-by: Tomas Mraz <tomas@openssl.org> Reviewed-by: Hugo Landau <hlandau@openssl.org> (Merged from https://github.com/openssl/openssl/pull/19523)
Configurations/*.tmpl: overhaul assembler make rules. NOTE: Not Configurations/unix-Makefile.tmpl, as that was done 4 years ago, in commit a23f03166e0ec49ac09b3671e7ab4ba4fa57d42a. So far assembly modules were intended to be built as .pl->.S->.{asmext} followed by .{asmext}->.o. This posed a problem in build_all_generated rule if it was executed on another computer, and also turned out to be buggy, as .S was also translated to .{asmext} on Windows and VMS. Both issues are fixed by changing the rule sequence to .pl->.S and then .S->.s->.o, with the added benefit that the Windows and VMS build file templates are more in sync with unix-Makefile.tmpl and slightly simpler. Fixes #19594 Reviewed-by: Matt Caswell <matt@openssl.org> Reviewed-by: Tomas Mraz <tomas@openssl.org> (Merged from https://github.com/openssl/openssl/pull/19598)
Fix quotes install_fips in Configurations/windows-makefile.tmpl Directories and file names with spaces require quoting... again Fixes #18880 Reviewed-by: Tomas Mraz <tomas@openssl.org> Reviewed-by: Matt Caswell <matt@openssl.org> Reviewed-by: Paul Dale <pauli@openssl.org> Reviewed-by: Hugo Landau <hlandau@openssl.org> (Merged from https://github.com/openssl/openssl/pull/18881)
Windows: use the basename of the product (.dll) for definition files This resolves the faulty LIBRARY value that contained the directory of the product (.dll) in the build tree. This applies to engines and other modules alike. Fixes #18726 Reviewed-by: Hugo Landau <hlandau@openssl.org> Reviewed-by: Shane Lontis <shane.lontis@oracle.com> (Merged from https://github.com/openssl/openssl/pull/18732)
Remove include/openssl/configuration.h from mandatory dependencies Since this file is generated by configdata.pm, there's no need to include it among the mandatory dependencies (which end up in the `GENERATE_MANDATORY` Makefile variable). In fact, it shouldn't be there any more, as that would also cause it to be removed by `make clean`. To compensate, we add an explicit removal of that file in the `distclean` target on all platform families. Fixes #18396 Reviewed-by: Dmitry Belyavskiy <beldmit@gmail.com> Reviewed-by: Paul Dale <pauli@openssl.org> Reviewed-by: Tomas Mraz <tomas@openssl.org> (Merged from https://github.com/openssl/openssl/pull/18398)
mkdef.pl: Add cmd-line flag to differentiate shared libs and DSO. Fixes openssl#16984. Reviewed-by: Richard Levitte <levitte@openssl.org> Reviewed-by: Tomas Mraz <tomas@openssl.org> (Merged from https://github.com/openssl/openssl/pull/18284)
Add quotes around perl scripts Otherwise, it seems nmake doesn't invoke perl properly. Signed-off-by: Keith W. Campbell <keithc@ca.ibm.com> Reviewed-by: Matt Caswell <matt@openssl.org> Reviewed-by: Richard Levitte <levitte@openssl.org> Reviewed-by: Tomas Mraz <tomas@openssl.org> (Merged from https://github.com/openssl/openssl/pull/18215)
Rework dependencies between config files and build files Before PR #15310, which reworked how build files (Makefile, ...) were generated, everything was done when configuring, so configdata.pm could depend on build file templates and we'd get away with it. However, since building configdata.pm is now independent of the build file templates, that dependency is unnecessary, and would lead to surprises of the build file template is updated, with an unexpected full reconfiguration as a result, when all that's needed is to run configdata.pm with no flags to get the build file re-generated. This change is therefore a completion of what was forgotten in #15310. Reviewed-by: Matthias St. Pierre <Matthias.St.Pierre@ncp-e.com> Reviewed-by: Tomas Mraz <tomas@openssl.org> Reviewed-by: Paul Dale <pauli@openssl.org> (Merged from https://github.com/openssl/openssl/pull/17756)
Don't delete the doc/html directories when cleaning The doc/html sub-dirs get created by Configure. Therefore they should not be cleaned away by "nmake clean". Otherwise the following sequence fails: perl Configure VC-WIN64A nmake clean nmake nmake install Fixes #17114 Reviewed-by: Tomas Mraz <tomas@openssl.org> Reviewed-by: Paul Dale <pauli@openssl.org> (Merged from https://github.com/openssl/openssl/pull/17128)
Configurations/windows-makefile.tmpl: obj2bin(): use the resource file too When remaking how programs were linked, the variable `$ress` was forgotten. Unfortunately, perl treats this with silence. Fixes #16870 Fixes #16667 Reviewed-by: Tomas Mraz <tomas@openssl.org> Reviewed-by: Tim Hudson <tjh@openssl.org> (Merged from https://github.com/openssl/openssl/pull/16875)
Fix the build file templates where uplink matters We changed the manner in which a build needing applink is detected, but forgot to change the installation targets accordingly. Fixes #16570 Reviewed-by: Paul Dale <pauli@openssl.org> (Merged from https://github.com/openssl/openssl/pull/16577) (cherry picked from commit de36ce47bf9858f3c517345f46e52d5a6fc506de)
install_fips: Create the OPENSSLDIR as it might not exist Fixes #16564 Reviewed-by: Paul Dale <pauli@openssl.org> Reviewed-by: Richard Levitte <levitte@openssl.org> (Merged from https://github.com/openssl/openssl/pull/16569)
OpenSSL::Ordinals::set_version() should only be given the short version This function tried to shave off the pre-release and build metadata text from the the version number it gets, but didn't do that quite right. Since this isn't even a documented behaviour, the easier, and arguably more correct path is for that function not to try to shave off anything, and for the callers to feed it the short version number, "{MAJOR}.{MINOR}.{PATCH}", nothing more. The build file templates are adjusted accordingly. Reviewed-by: Tomas Mraz <tomas@openssl.org> Reviewed-by: Paul Dale <pauli@openssl.org> (Merged from https://github.com/openssl/openssl/pull/16556)
Use copy.pl to install the fips module on Windows Reviewed-by: Richard Levitte <levitte@openssl.org> Reviewed-by: Paul Dale <pauli@openssl.org> (Merged from https://github.com/openssl/openssl/pull/16208)